xmorph-20140707+nmu2/0000775000000000000000000000000012547266506011057 5ustar xmorph-20140707+nmu2/README0000777000000000000000000000000012356304633013545 2README.htmlustar xmorph-20140707+nmu2/doc/0000775000000000000000000000000012356343462011617 5ustar xmorph-20140707+nmu2/doc/xmorph.info0000664000000000000000000001342112356304632014006 0ustar This is xmorph.info, produced by makeinfo version 4.13 from xmorph.texinfo. INFO-DIR-SECTION Graphics START-INFO-DIR-ENTRY * Xmorph: (xmorph). a digital image morphing suite. END-INFO-DIR-ENTRY Xmorph: a digital image warping and dissolving, or morphing, program. Copyright (C) 1994-1999 Michael J. Gourlay Copyright (C) 2000-2009 by A C G Mennucci  File: xmorph.info, Node: Top, Next: Synopsis, Up: (dir) * Menu: * Synopsis:: Synopsis of command line usage * Description:: Description of how to use the program * Options:: Command line options * Making movies:: How to use other programs with xmorph to make movies * See also:: Other sources of information related to morphing * Notes:: Miscellanous information * Index:: Index  File: xmorph.info, Node: Synopsis, Next: Description, Prev: Top, Up: Top 1 Synopsis ********** gtkmorph xmorph [-start srcimgfile [-finish destimgfile]] [-src srcmeshfile [-dst dstmeshfile ]] [-help] morph [-start srcimgfile [-finish destimgfile]] [-src srcmeshfile [-dst dstmeshfile ]] [-out outimgfile ] [-mt morphtween ] [-dt dissolvetween ] [-help]  File: xmorph.info, Node: Description, Next: Options, Prev: Synopsis, Up: Top 2 Description ************* GTKMorph is a digital image warping and dissolving program, also known as a "morphing" program. It is a graphical user interface that uses the GTK toolkit. The primary use of gtkmorph is to generate and modify meshes which control the shape of an image. GTKMorph also has the capacity to dissolve multiple images together, and to generate a sequence of warped and dissolved images, and movies (using the external program mencoder). When this sequence is made into a movie, it is called a "morph". xmorph is an older graphical user interface that uses the X Window System base libraries. morph is a morphing program with no graphical user interface. morph performs image warping and dissolving but provides no means to create or modify meshes. The intent is to use morph after meshes have already been generated with xmorph. Since morph has no GUI, it can be run as a background job and can be distributed over many machines or processes. This parallelization of the task can significanly speed up the image processing. morph can run on machines which have no display whatsoever, and is therefore very portable. Both xmorph and morph are unfortunately a bit outdated and buggy. xmorph, gtkmorph and morph use a library called libmorph which can be used separately in the creation of other morphing programs. If imgfile names are provided on the command line, then those images are loaded in. Otherwise, xmorph generates images to be used in lieu of images provided by the user. Images may be loaded from menus within xmorph. xmorph and gtkmorph have built-in help pages that answer questions about the details of its use. Look at the online help menus for more information.  File: xmorph.info, Node: Options, Next: Making movies, Prev: Description, Up: Top 3 Options ********* 1. This is the first item. 2. This is the second item.  File: xmorph.info, Node: Making movies, Next: See also, Prev: Options, Up: Top 4 Making movies *************** xmorph is NOT a tool for making movies. xmorph is intended to be used with OTHER tools for editting movies in the digital domain. I do not intend to add movie making abilities to xmorph. GTKMorph instead has the ability of making movies. See inline help. Here is a brief explanation of how to make a movie from the images generated by xmorph: xmorph uses the TrueVision Targa (TGA) image file format. You can use PBMplus, netpbm, ImageMagick or some other program to convert Targa to other still image formats. (This will be necessary if, for example, you use the Berkeley MPEG encoder or want to make an animated GIF.) See, e.g., ftp://ikaros.fysik4.kth.se/pub/netpbm/. Use another program, such as Berkeley's mpeg_encode, or SGI's dmconvert, or whirlgif to turn the sequence of images that xmorph created into a single animation. See, e.g., ftp://mm-ftp.cs.berkeley.edu/pub/multimedia/mpeg/encode/. Use another program, such as mpeg_play, xanim or movieplayer, to view the animation. See, e.g., ftp://mm-ftp.cs.berkeley.edu/pub/multimedia/mpeg/play/. There are plenty of other programs available for viewing movies.  File: xmorph.info, Node: See also, Next: Notes, Prev: Making movies, Up: Top 5 See also ********** X(1), ppmtotga(1) (part of netpbm or PBMplus), tgatoppm(1) (part of netpbm or PBMplus), whirlgif(1), mpeg_encode(1) from U.C. Berkeley, mpeg_play(1) from U.C. Berkeley, ImageMagick, dmconvert(1), (under Silicon Graphics IRIX). movieplayer(1) (under Silicon Graphics IRIX), xanim(1), mencoder.  File: xmorph.info, Node: Notes, Next: Index, Prev: See also, Up: Top 6 See also ********** The only image file type currently supported by xmorph is Truevision Targa (TGA) but xmorph will load any type of Targa, such as 8-bit, 15-bit, or 16-bit colormapped or grayscale; 24-bit or 32-bit true color (with or without alpha channel); run- length encoded or uncompressed. Some versions of the program "xv" can not read xmorph's TGA image files. This is a bug in "xv", not in xmorph. Use image conversion programs (such as those listed in the SEE ALSO section) to convert to and from TGA image files for use with xmorph and morph . GTKmorph can instead read and write images in many different formats.  File: xmorph.info, Node: Index, Prev: Notes, Up: Top Index ***** [index] * Menu: * usage: Synopsis. (line 6)  Tag Table: Node: Top359 Node: Synopsis801 Node: Description1171 Node: Options2992 Node: Making movies3163 Node: See also4431 Node: Notes4833 Node: Index5554  End Tag Table xmorph-20140707+nmu2/doc/xmorph.texinfo0000664000000000000000000001417212356304632014533 0ustar \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename xmorph.info @settitle Xmorph, a digital image morphing suite. @setchapternewpage odd @dircategory Graphics @direntry * Xmorph: (xmorph). a digital image morphing suite. @end direntry @c %**end of header @ifinfo Xmorph: a digital image warping and dissolving, or morphing, program. Copyright @copyright{} 1994-1999 Michael J. Gourlay Copyright @copyright{} 2000-2009 by A C G Mennucci @end ifinfo @titlepage @sp 10 @comment The title is printed in a large font. @center @titlefont{Xmorph documentation} @c The following two commands start the copyright page. @page @vskip 0pt plus 1filll Copyright @copyright{} 1994-1999 Michael J. Gourlay @end titlepage @node Top, Synopsis, , (dir) @comment node-name, next, previous, up @menu * Synopsis:: Synopsis of command line usage * Description:: Description of how to use the program * Options:: Command line options * Making movies:: How to use other programs with xmorph to make movies * See also:: Other sources of information related to morphing * Notes:: Miscellanous information * Index:: Index @end menu @node Synopsis, Description, Top, Top @comment node-name, next, previous, up @chapter Synopsis @cindex usage gtkmorph xmorph [-start srcimgfile [-finish destimgfile]] [-src srcmeshfile [-dst dstmeshfile ]] [-help] morph [-start srcimgfile [-finish destimgfile]] [-src srcmeshfile [-dst dstmeshfile ]] [-out outimgfile ] [-mt morphtween ] [-dt dissolvetween ] [-help] @node Description, Options, Synopsis, Top @comment node-name, next, previous, up @chapter Description GTKMorph is a digital image warping and dissolving program, also known as a "morphing" program. It is a graphical user interface that uses the GTK toolkit. The primary use of gtkmorph is to generate and modify meshes which control the shape of an image. GTKMorph also has the capacity to dissolve multiple images together, and to generate a sequence of warped and dissolved images, and movies (using the external program mencoder). When this sequence is made into a movie, it is called a "morph". xmorph is an older graphical user interface that uses the X Window System base libraries. morph is a morphing program with no graphical user interface. morph performs image warping and dissolving but provides no means to create or modify meshes. The intent is to use morph after meshes have already been generated with xmorph. Since morph has no GUI, it can be run as a background job and can be distributed over many machines or processes. This parallelization of the task can significanly speed up the image processing. morph can run on machines which have no display whatsoever, and is therefore very portable. Both xmorph and morph are unfortunately a bit outdated and buggy. xmorph, gtkmorph and morph use a library called libmorph which can be used separately in the creation of other morphing programs. If imgfile names are provided on the command line, then those images are loaded in. Otherwise, xmorph generates images to be used in lieu of images provided by the user. Images may be loaded from menus within xmorph. xmorph and gtkmorph have built-in help pages that answer questions about the details of its use. Look at the online help menus for more information. @node Options, Making movies, Description, Top @comment node-name, next, previous, up @chapter Options @enumerate @item This is the first item. @item This is the second item. @end enumerate @node Making movies, See also, Options, Top @comment node-name, next, previous, up @chapter Making movies xmorph is NOT a tool for making movies. xmorph is intended to be used with OTHER tools for editting movies in the digital domain. I do not intend to add movie making abilities to xmorph. GTKMorph instead has the ability of making movies. See inline help. Here is a brief explanation of how to make a movie from the images generated by xmorph: xmorph uses the TrueVision Targa (TGA) image file format. You can use PBMplus, netpbm, ImageMagick or some other program to convert Targa to other still image formats. (This will be necessary if, for example, you use the Berkeley MPEG encoder or want to make an animated GIF.) See, e.g., ftp://ikaros.fysik4.kth.se/pub/netpbm/. Use another program, such as Berkeley's mpeg_encode, or SGI's dmconvert, or whirlgif to turn the sequence of images that xmorph created into a single animation. See, e.g., ftp://mm-ftp.cs.berkeley.edu/pub/multimedia/mpeg/encode/. Use another program, such as mpeg_play, xanim or movieplayer, to view the animation. See, e.g., ftp://mm-ftp.cs.berkeley.edu/pub/multimedia/mpeg/play/. There are plenty of other programs available for viewing movies. @node See also, Notes, Making movies, Top @comment node-name, next, previous, up @chapter See also X(1), ppmtotga(1) (part of netpbm or PBMplus), tgatoppm(1) (part of netpbm or PBMplus), whirlgif(1), mpeg_encode(1) from U.C. Berkeley, mpeg_play(1) from U.C. Berkeley, ImageMagick, dmconvert(1), (under Silicon Graphics IRIX). movieplayer(1) (under Silicon Graphics IRIX), xanim(1), mencoder. @node Notes, Index, See also, Top @comment node-name, next, previous, up @chapter See also The only image file type currently supported by xmorph is Truevision Targa (TGA) but xmorph will load any type of Targa, such as 8-bit, 15-bit, or 16-bit colormapped or grayscale; 24-bit or 32-bit true color (with or without alpha channel); run- length encoded or uncompressed. Some versions of the program ``xv'' can not read xmorph's TGA image files. This is a bug in ``xv'', not in xmorph. Use image conversion programs (such as those listed in the SEE ALSO section) to convert to and from TGA image files for use with xmorph and morph . GTKmorph can instead read and write images in many different formats. @node Index, , Notes, Top @comment node-name, next, previous, up @unnumbered Index @printindex cp @contents @bye xmorph-20140707+nmu2/doc/xmorph.10000664000000000000000000001453312356304632013220 0ustar .\" Copyright (c) 1994-1997 Michael J. Gourlay .TH XMORPH 1 .SH NAME xmorph \- image warping and dissolving (morphing) for X window system morph \- command line interface image morphing program .SH SYNOPSIS .B xmorph .RB "[\|" \-start .I srcimgfile .RB "[\|" \-finish .IR destimgfile "\|]\|]" .RB "[\|" \-src .I srcmeshfile .RB "[\|" \-dst .I dstmeshfile "\|]\|]" .RB "[\|" \-help "\|]" .B morph .RB "[\|" \-start .I srcimgfile .RB "[\|" \-finish .IR destimgfile "\|]\|]" .RB "[\|" \-src .I srcmeshfile .RB "[\|" \-dst .I dstmeshfile "\|]\|]" .RB "[\|" \-out .I outimgfile "\|]" .RB "[\|" \-mt .I morphtween "\|]" .RB "[\|" \-dt .I dissolvetween "\|]" .RB "[\|" \-help "\|]" .SH DESCRIPTION .B xmorph is a digital image warping and dissolving program, also known as a "morphing" program. It runs under the X Window System. The primary use of .B xmorph is to generate and modify meshes which control the shape of an image. .B xmorph also has the capacity to dissolve images together, and to generate a sequence of warped and dissolved images. When this sequence is made into a movie, it is called a "morph". .LP .B morph is a morphing program with no graphical user interface. .B morph performs image warping and dissolving but provides no means to create or modify meshes. The intent is to use .B morph after meshes have already been generated with .B xmorph. Since .B morph has no GUI, it can be run as a background job and can be distributed over many machines or processes. This parallelization of the task can significanly speed up the image processing. .B morph can run on machines which have no display whatsoever, and is therefore very portable. .LP Both .B xmorph and .B morph use a library called .B libmorph which can be used separately in the creation of other morphing programs. .LP If .I imgfile names are provided on the command line, then those images are loaded in. Otherwise, .B xmorph generates images to be used in lieu of images provided by the user. Images may be loaded from menus within .BR xmorph . .LP .B xmorph has built-in help pages that answer questions about the details of its use. Run .B xmorph and look at the online help for more information. .SH OPTIONS .TP .B \-start \fIsrcimgfile\fP Read the .I srcimgfile as the "source" image. .TP .B \-finish \fIdestimgfile\fP Read the .I destimgfile as the "destination" image. .TP .B \-src \fIsrcmeshfile\fP Read the .I srcmeshfile as the "source" mesh. .TP .B \-dst \fIdestmeshfile\fP Read the .I destimgfile as the "destination" mesh. .TP .B \-help Display command line options. .SH MORPH OPTIONS .TP .B \-out \fIoutimgfile\fP Write the the output image to .I outimgfile . .TP .B \-mt \fImorphtween\fP Use .I morphtween as the warping tween parameter. Values are from 0 to 1. 0 means that the shape of the output is according to the source mesh. 1 means that the shape is according to the destination mesh. Default value is 0. .TP .B \-dt \fIdissolvetween\fP Use .I dissolvetween as the dissolve tween parameter. Values are from 0 to 1. 0 means that the image of the output is according to the source image. 1 means that the image is according to the destination image. Negative values indicate that a sigmoid sharpening function is to be applied to make the dissolving more concentrated to values near 0.5. The idea is that the .I dissolvetween value should be the negative of the .I morphtween value in order to have the dissolve be more rapid during middle values of the warp tween parameter, and less rapid otherwise. This makes the morph more visually acceptable. Default value is 0. .SH "MAKING MOVIES" .B xmorph is NOT a tool for making movies. .B xmorph is intended to be used with OTHER tools for editting movies in the digital domain. I do not intend to add movie making abilities to .BR xmorph . .LP Here is a brief explanation of how to make a movie from the images generated by .BR xmorph : .LP .B xmorph uses the TrueVision Targa (TGA) image file format. You can use PBMplus, netpbm, ImageMagick or some other program to convert Targa to other still image formats. (This will be necessary if, for example, you use the Berkeley MPEG encoder or want to make an animated GIF.) See, e.g., ftp://ikaros.fysik4.kth.se/pub/netpbm/. .LP Use another program, such as Berkeley's mpeg_encode, or SGI's dmconvert, or whirlgif to turn the sequence of images that .B xmorph created into a single animation. See, e.g., ftp://mm-ftp.cs.berkeley.edu/pub/multimedia/mpeg/encode/. .LP Use another program, such as mpeg_play, xanim or movieplayer, to view the animation. See, e.g., ftp://mm-ftp.cs.berkeley.edu/pub/multimedia/mpeg/play/. .LP There are plenty of other programs available for viewing movies. .SH AUTHOR Written and Copyright (C) 1994-2000 by Michael J. Gourlay. .LP Help came from many places, including Andy Thaller, Warwick Allison, and Mike Hoefelein. .LP The original morphing algorithm is presented in ``A Two-Pass Mesh Warping Algorithm for Object Transformation and Image Interpolation'', ILM Technical Memo #1030, Computer Graphics Department, Lucasfilm Ltd., 1990. .LP Mesh-based digital image warping is discussed in detail in .I Digital Image Warping by George Wolberg. .LP Xmorph is a GNU program. .SH "SEE ALSO" .BR X (1), .BR ppmtotga (1) (part of netpbm or PBMplus), .BR tgatoppm (1) (part of netpbm or PBMplus), .BR whirlgif (1), .BR mpeg_encode (1) from U.C. Berkeley, .BR mpeg_play (1) from U.C. Berkeley, ImageMagick, .BR dmconvert (1), (under Silicon Graphics IRIX). .BR movieplayer (1) (under Silicon Graphics IRIX), .BR xanim (1), .BR GIMP (1). .SH NOTES The only image file type currently supported is Truevision Targa (TGA) but .B xmorph will load any type of Targa, such as 8-bit, 15-bit, or 16-bit colormapped or grayscale; 24-bit or 32-bit true color (with or without alpha channel); run-length encoded or uncompressed. .LP Some versions of the program "xv" can not read xmorph's TGA image files. This is a bug in "xv", not in xmorph. .LP Use image conversion programs (such as those listed in the SEE ALSO section) to convert to and from TGA image files for use with .B xmorph and .B morph . .LP Report bugs to gourlay@colorado-research.com or mennucc1@debian.org .SH "WEB SITE" http://sourceforge.net/projects/xmorph .LP http://colorado-research.com/~gourlay/ .LP http://colorado-research.com/~gourlay/software/ .LP http://colorado-research.com/~gourlay/software/Graphics/ .LP http://colorado-research.com/~gourlay/software/Graphics/Xmorph/ xmorph-20140707+nmu2/doc/gtkmorph.10000664000000000000000000000201112356304632013522 0ustar .\" Copyright (c) 2000 A Mennucci ; stolen from the xmorph.1 page .TH GTKMORPH 1 .SH NAME gtkmorph \- image warping and dissolving (morphing) for GTK toolkit .SH SYNOPSIS .B gtkmorph .SH DESCRIPTION .B gtkmorph is a digital image warping and dissolving program, also known as a "morphing" program. The primary use of .B gtkmorph is to generate and modify meshes which control the shape of an image. .B gtkmorph also has the capacity to dissolve images together, and to generate a sequence of warped and dissolved images. When this sequence is made into a movie, it is called a "morph". .B gtkmorph will write images in .ppm format and load them in any format supported by the .B gdk-pixbuf library; this includes JPEG, PNG, and TIFF. .LP .B gtkmorph uses a library called .B libmorph which can be used separately in the creation of other morphing programs. .SH BUGS Report bugs to gourlay@colorado-research.com or mennucc1@debian.org .SH "SEE ALSO" .BR xmorph (1), .SH "WEB SITE" http://sourceforge.net/projects/xmorph xmorph-20140707+nmu2/doc/Makefile.in0000664000000000000000000006037312356342010013661 0ustar # Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in texinfo.tex ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = INFO_DEPS = $(srcdir)/xmorph.info am__TEXINFO_TEX_DIR = $(srcdir) DVIS = xmorph.dvi PDFS = xmorph.pdf PSS = xmorph.ps HTMLS = xmorph.html TEXINFOS = xmorph.texinfo TEXI2DVI = texi2dvi TEXI2PDF = $(TEXI2DVI) --pdf --batch MAKEINFOHTML = $(MAKEINFO) --html AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) DVIPS = dvips am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) 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@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ 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@ 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@ info_TEXINFOS = xmorph.texinfo man_MANS = xmorph.1 gtkmorph.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: .SUFFIXES: .dvi .html .info .pdf .ps .texinfo $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile .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 $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs .texinfo.info: restore=: && backupdir="$(am__leading_dot)am$$$$" && \ am__cwd=`pwd` && $(am__cd) $(srcdir) && \ rm -rf $$backupdir && mkdir $$backupdir && \ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ done; \ else :; fi && \ cd "$$am__cwd"; \ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $@ $<; \ then \ rc=0; \ $(am__cd) $(srcdir); \ else \ rc=$$?; \ $(am__cd) $(srcdir) && \ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ fi; \ rm -rf $$backupdir; exit $$rc .texinfo.dvi: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2DVI) $< .texinfo.pdf: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2PDF) $< .texinfo.html: rm -rf $(@:.html=.htp) if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $(@:.html=.htp) $<; \ then \ rm -rf $@; \ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ else \ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ exit 1; \ fi $(srcdir)/xmorph.info: xmorph.texinfo xmorph.dvi: xmorph.texinfo xmorph.pdf: xmorph.texinfo xmorph.html: xmorph.texinfo .dvi.ps: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ $(DVIPS) -o $@ $< uninstall-dvi-am: @$(NORMAL_UNINSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ rm -f "$(DESTDIR)$(dvidir)/$$f"; \ done uninstall-html-am: @$(NORMAL_UNINSTALL) @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ done uninstall-info-am: @$(PRE_UNINSTALL) @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ done; \ else :; fi @$(NORMAL_UNINSTALL) @list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ else :; fi); \ done uninstall-pdf-am: @$(NORMAL_UNINSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ done uninstall-ps-am: @$(NORMAL_UNINSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ rm -f "$(DESTDIR)$(psdir)/$$f"; \ done dist-info: $(INFO_DEPS) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; \ for base in $$list; do \ case $$base in \ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$base; then d=.; else d=$(srcdir); fi; \ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ if test -f $$file; then \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ test -f "$(distdir)/$$relfile" || \ cp -p $$file "$(distdir)/$$relfile"; \ else :; fi; \ done; \ done mostlyclean-aminfo: -rm -rf xmorph.aux xmorph.cp xmorph.cps xmorph.fn xmorph.fns xmorph.ky \ xmorph.kys xmorph.log xmorph.pg xmorph.pgs xmorph.tmp \ xmorph.toc xmorph.tp xmorph.tps xmorph.vr xmorph.vrs clean-aminfo: -test -z "xmorph.dvi xmorph.pdf xmorph.ps xmorph.html" \ || rm -rf xmorph.dvi xmorph.pdf xmorph.ps xmorph.html maintainer-clean-aminfo: @list='$(INFO_DEPS)'; for i in $$list; do \ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-info check-am: all-am check: check-am all-am: Makefile $(INFO_DEPS) $(MANS) installdirs: for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: $(DVIS) html: html-am html-am: $(HTMLS) info: info-am info-am: $(INFO_DEPS) install-data-am: install-info-am install-man install-dvi: install-dvi-am install-dvi-am: $(DVIS) @$(NORMAL_INSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ done install-exec-am: install-html: install-html-am install-html-am: $(HTMLS) @$(NORMAL_INSTALL) @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ $(am__strip_dir) \ d2=$$d$$p; \ if test -d "$$d2"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ else \ list2="$$list2 $$d2"; \ fi; \ done; \ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ done; } install-info: install-info-am install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ fi; \ for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ if test -f $$ifile; then \ echo "$$ifile"; \ else : ; fi; \ done; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done @$(POST_INSTALL) @if $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ done; \ else : ; fi install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: $(PDFS) @$(NORMAL_INSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done install-ps: install-ps-am install-ps-am: $(PSS) @$(NORMAL_INSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: $(PDFS) ps: ps-am ps-am: $(PSS) uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ uninstall-man uninstall-pdf-am uninstall-ps-am uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-aminfo clean-generic \ clean-libtool dist-info distclean distclean-generic \ distclean-libtool 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-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-aminfo \ maintainer-clean-generic mostlyclean mostlyclean-aminfo \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-dvi-am uninstall-html-am \ uninstall-info-am uninstall-man uninstall-man1 \ uninstall-pdf-am uninstall-ps-am # 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: xmorph-20140707+nmu2/doc/Makefile.am0000664000000000000000000000013412356304632013645 0ustar info_TEXINFOS = xmorph.texinfo man_MANS = xmorph.1 gtkmorph.1 EXTRA_DIST = $(man_MANS) xmorph-20140707+nmu2/COPYING0000664000000000000000000004311012356304633012101 0ustar GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 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) 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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) year 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. xmorph-20140707+nmu2/glade2/0000775000000000000000000000000012356343462012210 5ustar xmorph-20140707+nmu2/glade2/callbacks.h0000664000000000000000000005265012356304632014304 0ustar #include gboolean on_window_main_delete (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_load_session_activate (GtkMenuItem *menuitem, gpointer user_data); void on_save_session_activate (GtkMenuItem *menuitem, gpointer user_data); void on_add_an_image_activate (GtkMenuItem *menuitem, gpointer user_data); void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_view_images1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_resulting_image_size_activate (GtkMenuItem *menuitem, gpointer user_data); void on_show_morph_factors_activate (GtkMenuItem *menuitem, gpointer user_data); void on_interpolate_meshes1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_morph_images1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_restore_morph_factors1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_restore_start_activate (GtkMenuItem *menuitem, gpointer user_data); void on_restore_end_activate (GtkMenuItem *menuitem, gpointer user_data); void on_store_morph_factors_activate (GtkMenuItem *menuitem, gpointer user_data); void on_store_start_activate (GtkMenuItem *menuitem, gpointer user_data); void on_store_end_activate (GtkMenuItem *menuitem, gpointer user_data); void on_morph_sequence1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_guide_activate (GtkMenuItem *menuitem, gpointer user_data); void on_generic_help_activate (GtkMenuItem *menuitem, gpointer user_data); void on_warp_help_activate (GtkMenuItem *menuitem, gpointer user_data); void on_morph_help_activate (GtkMenuItem *menuitem, gpointer user_data); void on_why_the_beep_1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_loadimage_clicked (GtkButton *button, gpointer user_data); void on_loadmesh_clicked (GtkButton *button, gpointer user_data); void on_savemesh_clicked (GtkButton *button, gpointer user_data); void on_optionmenu_editview_released (GtkButton *button, gpointer user_data); void on_optionmenu_editview_clicked (GtkButton *button, gpointer user_data); void on_settings_clicked (GtkButton *button, gpointer user_data); void on_do_mixing_clicked (GtkButton *button, gpointer user_data); void on_save_image_clicked (GtkButton *button, gpointer user_data); void on_back_to_guide_activate (GtkButton *button, gpointer user_data); void on_color_feature_clicked (GtkButton *button, gpointer user_data); gboolean on_drawingarea_color_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); void on_combo_entry_feature_activate (GtkEntry *entry, gpointer user_data); void on_combo_entry_feature_changed (GtkEditable *editable, gpointer user_data); void on_new_feature_clicked (GtkButton *button, gpointer user_data); void on_rename_feature_clicked (GtkButton *button, gpointer user_data); void on_pack_feature_clicked (GtkButton *button, gpointer user_data); void on_unpack_feature_clicked (GtkButton *button, gpointer user_data); void on_delete_feature_clicked (GtkButton *button, gpointer user_data); void on_tool_edit_clicked (GtkButton *button, gpointer user_data); void on_tool_move_clicked (GtkButton *button, gpointer user_data); void on_tool_stretch_clicked (GtkButton *button, gpointer user_data); void on_tool_select_clicked (GtkButton *button, gpointer user_data); void on_tool_unselect_clicked (GtkButton *button, gpointer user_data); void on_tool_assign_clicked (GtkButton *button, gpointer user_data); void on_viewport3_realize (GtkWidget *widget, gpointer user_data); gboolean on_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data); gboolean on_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); gboolean on_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); void on_drawingarea_realize (GtkWidget *widget, gpointer user_data); gboolean on_drawingarea_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); gboolean on_drawingarea_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data); gboolean on_spinbutton_reswidth_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); gboolean on_spinbutton_resheight_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); void on_double_size_clicked (GtkButton *button, gpointer user_data); void on_halve_size_clicked (GtkButton *button, gpointer user_data); void on_resulting_apply_clicked (GtkButton *button, gpointer user_data); void on_ok_button1_realize (GtkWidget *widget, gpointer user_data); void on_ok_button1_clicked (GtkButton *button, gpointer user_data); gboolean on_image_win_1_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_optionmenu_editview_pressed (GtkButton *button, gpointer user_data); void on_do_warp_clicked (GtkButton *button, gpointer user_data); void on_handlebox_factors_show (GtkWidget *widget, gpointer user_data); gboolean on_hscale_mesh_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); gboolean on_hscale_image_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); void on_handleboxsubimage_show (GtkWidget *widget, gpointer user_data); void on_reset_subimage_clicked (GtkButton *button, gpointer user_data); /* void */ /* on_spinbuttonx_changed (GtkEditable *editable, */ /* gpointer user_data); */ gboolean on_spinbuttonx_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); /* void */ /* on_spinbuttony_changed (GtkEditable *editable, */ /* gpointer user_data); */ gboolean on_spinbuttony_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); /* void */ /* on_spinbuttonw_changed (GtkEditable *editable, */ /* gpointer user_data); */ gboolean on_spinbuttonw_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); /* void */ /* on_spinbuttonh_changed (GtkEditable *editable, */ /* gpointer user_data); */ gboolean on_spinbuttonh_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); void on_subimage_apply_clicked (GtkButton *button, gpointer user_data); gboolean on_dialogwarning_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_labelwarning_show (GtkWidget *widget, gpointer user_data); void on_labelwarning_realize (GtkWidget *widget, gpointer user_data); gboolean on_window_warped_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); gboolean on_drawingarea_warped_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); gboolean on_drawingarea_warped_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data); void on_unselect_point_activate (GtkMenuItem *menuitem, gpointer user_data); void on_select_point_activate (GtkMenuItem *menuitem, gpointer user_data); void on_assign_point_activate (GtkMenuItem *menuitem, gpointer user_data); void on_add_horizontal_line_activate (GtkMenuItem *menuitem, gpointer user_data); void on_add_vertical_line_activate (GtkMenuItem *menuitem, gpointer user_data); void on_del_horizontal_line_activate (GtkMenuItem *menuitem, gpointer user_data); void on_del_vertical_line_activate (GtkMenuItem *menuitem, gpointer user_data); void on_movie_replay_clicked (GtkButton *button, gpointer user_data); void on_movie_ok_clicked (GtkButton *button, gpointer user_data); void on_movie_help_clicked (GtkButton *button, gpointer user_data); gboolean on_guide_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_guide_destroy (GtkObject *object, gpointer user_data); gboolean on_guide_text_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); void on_guide_prev_clicked (GtkButton *button, gpointer user_data); void on_guide_do_it_clicked (GtkButton *button, gpointer user_data); void on_guide_next_clicked (GtkButton *button, gpointer user_data); gboolean on_question_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_yes_clicked (GtkButton *button, gpointer user_data); void on_no_clicked (GtkButton *button, gpointer user_data); void on_ok_button_color_clicked (GtkButton *button, gpointer user_data); gboolean on_spinbuttonx_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); gboolean on_spinbuttony_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); gboolean on_spinbuttonw_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); gboolean on_spinbuttonh_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); void on_spinbutton_reswidth_changed (GtkSpinButton *spinbutton, gpointer user_data); void on_spinbutton_resheight_changed (GtkSpinButton *spinbutton, gpointer user_data); void on_mag_spinbutton_activate (GtkEntry *entry, gpointer user_data); void on_mag_track_toggled (GtkToggleButton *togglebutton, gpointer user_data); gboolean on_mag_drawingarea_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data); gboolean on_mag_drawingarea_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); void on_show_mag_activate (GtkMenuItem *menuitem, gpointer user_data); void on_mag_unrealize (GtkWidget *widget, gpointer user_data); void on_mag_spinbutton_changed (GtkEditable *editable, gpointer user_data); void on_restore_equal_activate (GtkMenuItem *menuitem, gpointer user_data); void on_spinbuttonx_changed (GtkSpinButton *spinbutton, gpointer user_data); void on_spinbuttony_changed (GtkSpinButton *spinbutton, gpointer user_data); void on_spinbuttonw_changed (GtkSpinButton *spinbutton, gpointer user_data); void on_spinbuttonh_changed (GtkSpinButton *spinbutton, gpointer user_data); void on_adjust_all_meshes_activate (GtkMenuItem *menuitem, gpointer user_data); void on_adjust_activate (GtkMenuItem *menuitem, gpointer user_data); gboolean on_imageselection1_destroy_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); gboolean on_imageselection1_destroy_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_wavelet_equalize_activate (GtkMenuItem *menuitem, gpointer user_data); void on_menu_smooth_activate (GtkMenuItem *menuitem, gpointer user_data); void on_spinbutton_image_changed (GtkSpinButton *spinbutton, gpointer user_data); void on_spinbutton_mesh_changed (GtkSpinButton *spinbutton, gpointer user_data); void on_hscale_mesh_changed (GtkRange *range, gpointer user_data); void on_hscale_image_changed (GtkRange *range, gpointer user_data); gboolean on_drawingarea_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data); void on_feature_help_activate (GtkMenuItem *menuitem, gpointer user_data); void on_mesh_tips_activate (GtkMenuItem *menuitem, gpointer user_data); void on_stop_clicked (GtkButton *button, gpointer user_data); void on_add_a_difference_activate (GtkMenuItem *menuitem, gpointer user_data); void on_save_diff_clicked (GtkButton *button, gpointer user_data); gboolean on_diff_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_load_example_session_activate (GtkMenuItem *menuitem, gpointer user_data); xmorph-20140707+nmu2/glade2/support.c0000664000000000000000000000712712356304632014073 0ustar /* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include "support.h" GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name) { GtkWidget *parent, *found_widget; for (;;) { if (GTK_IS_MENU (widget)) parent = gtk_menu_get_attach_widget (GTK_MENU (widget)); else parent = widget->parent; if (!parent) parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey"); if (parent == NULL) break; widget = parent; } found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget), widget_name); if (!found_widget) g_warning ("Widget not found: %s", widget_name); return found_widget; } static GList *pixmaps_directories = NULL; /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory (const gchar *directory) { pixmaps_directories = g_list_prepend (pixmaps_directories, g_strdup (directory)); } /* This is an internally used function to find pixmap files. */ static gchar* find_pixmap_file (const gchar *filename) { GList *elem; /* We step through each of the pixmaps directory to find it. */ elem = pixmaps_directories; while (elem) { gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data, G_DIR_SEPARATOR_S, filename); if (g_file_test (pathname, G_FILE_TEST_EXISTS)) return pathname; g_free (pathname); elem = elem->next; } return NULL; } /* This is an internally used function to create pixmaps. */ GtkWidget* create_pixmap (GtkWidget *widget, const gchar *filename) { gchar *pathname = NULL; GtkWidget *pixmap; if (!filename || !filename[0]) return gtk_image_new (); pathname = find_pixmap_file (filename); if (!pathname) { g_warning (_("Couldn't find pixmap file: %s"), filename); return gtk_image_new (); } pixmap = gtk_image_new_from_file (pathname); g_free (pathname); return pixmap; } /* This is an internally used function to create pixmaps. */ GdkPixbuf* create_pixbuf (const gchar *filename) { gchar *pathname = NULL; GdkPixbuf *pixbuf; GError *error = NULL; if (!filename || !filename[0]) return NULL; pathname = find_pixmap_file (filename); if (!pathname) { g_warning (_("Couldn't find pixmap file: %s"), filename); return NULL; } pixbuf = gdk_pixbuf_new_from_file (pathname, &error); if (!pixbuf) { fprintf (stderr, "Failed to load pixbuf file: %s: %s\n", pathname, error->message); g_error_free (error); } g_free (pathname); return pixbuf; } /* This is used to set ATK action descriptions. */ void glade_set_atk_action_description (AtkAction *action, const gchar *action_name, const gchar *description) { gint n_actions, i; n_actions = atk_action_get_n_actions (action); for (i = 0; i < n_actions; i++) { if (!strcmp (atk_action_get_name (action, i), action_name)) atk_action_set_description (action, i, description); } } xmorph-20140707+nmu2/glade2/interface.h0000664000000000000000000000105012356304632014311 0ustar /* * DO NOT EDIT THIS FILE - it is generated by Glade. */ GtkWidget* create_window_main (void); GtkWidget* create_imageselection1 (void); GtkWidget* create_image_win_1 (void); GtkWidget* create_dialogwarning (void); GtkWidget* create_window_warped (void); GtkWidget* create_menuEditMesh (void); GtkWidget* create_window_movie (void); GtkWidget* create_guide (void); GtkWidget* create_question (void); GtkWidget* create_colorselectiondialog (void); GtkWidget* create_unused (void); GtkWidget* create_mag (void); GtkWidget* create_diff_window (void); xmorph-20140707+nmu2/glade2/main.c0000664000000000000000000000340012356304632013271 0ustar /* * Initial main.c file generated by Glade. Edit as required. * Glade will not overwrite this file. */ #ifdef HAVE_CONFIG_H # include #endif #include #include "interface.h" #include "support.h" int main (int argc, char *argv[]) { GtkWidget *window_main; GtkWidget *imageselection1; GtkWidget *image_win_1; GtkWidget *dialogwarning; GtkWidget *window_warped; GtkWidget *window_movie; GtkWidget *guide; GtkWidget *question; GtkWidget *colorselectiondialog; GtkWidget *unused; #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif gtk_set_locale (); gtk_init (&argc, &argv); add_pixmap_directory (DATADIR "/" PACKAGE "/pixmaps"); /* * The following code was added by Glade to create one of each component * (except popup menus), just so that you see something after building * the project. Delete any components that you don't want shown initially. */ window_main = create_window_main (); gtk_widget_show (window_main); imageselection1 = create_imageselection1 (); gtk_widget_show (imageselection1); image_win_1 = create_image_win_1 (); gtk_widget_show (image_win_1); dialogwarning = create_dialogwarning (); gtk_widget_show (dialogwarning); window_warped = create_window_warped (); gtk_widget_show (window_warped); window_movie = create_window_movie (); gtk_widget_show (window_movie); guide = create_guide (); gtk_widget_show (guide); question = create_question (); gtk_widget_show (question); colorselectiondialog = create_colorselectiondialog (); gtk_widget_show (colorselectiondialog); unused = create_unused (); gtk_widget_show (unused); gtk_main (); return 0; } xmorph-20140707+nmu2/glade2/support.h0000664000000000000000000000372212356304632014075 0ustar /* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include /* * Standard gettext macros. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # define Q_(String) g_strip_context ((String), gettext (String)) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define Q_(String) g_strip_context ((String), (String)) # define N_(String) (String) #endif /* * Public Functions. */ /* * This function returns a widget in a component created by Glade. * Call it with the toplevel widget in the component (i.e. a window/dialog), * or alternatively any widget in the component, and the name of the widget * you want returned. */ GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name); /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory (const gchar *directory); /* * Private Functions. */ /* This is used to create the pixmaps used in the interface. */ GtkWidget* create_pixmap (GtkWidget *widget, const gchar *filename); /* This is used to create the pixbufs used in the interface. */ GdkPixbuf* create_pixbuf (const gchar *filename); /* This is used to set ATK action descriptions. */ void glade_set_atk_action_description (AtkAction *action, const gchar *action_name, const gchar *description); xmorph-20140707+nmu2/glade2/Makefile.in0000664000000000000000000004024512356342010014246 0ustar # Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @COND_GTKMORPH_TRUE@noinst_PROGRAMS = gtkmorph$(EXEEXT) subdir = glade2 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_gtkmorph_OBJECTS = main.$(OBJEXT) support.$(OBJEXT) \ interface.$(OBJEXT) callbacks.$(OBJEXT) gtkmorph_OBJECTS = $(am_gtkmorph_OBJECTS) am__DEPENDENCIES_1 = gtkmorph_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --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 = $(gtkmorph_SOURCES) DIST_SOURCES = $(gtkmorph_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac 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@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ 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@ 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@ AM_CPPFLAGS = $(GTK_CFLAGS) -I../intl -DLOCALEDIR=\"$(localedir)\" -DDATADIR=\"$(datadir)\" gtkmorph_SOURCES = \ main.c \ support.c support.h \ interface.c interface.h \ callbacks.c callbacks.h gtkmorph_LDADD = $(GTK_LIBS) $(INTLLIBS) 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 glade2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu glade2/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 $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list gtkmorph$(EXEEXT): $(gtkmorph_OBJECTS) $(gtkmorph_DEPENDENCIES) $(EXTRA_gtkmorph_DEPENDENCIES) @rm -f gtkmorph$(EXEEXT) $(LINK) $(gtkmorph_OBJECTS) $(gtkmorph_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/support.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(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@ $(am__mv) $(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@ $(am__mv) $(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) set x; \ 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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS 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-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 # 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: xmorph-20140707+nmu2/glade2/interface.c0000664000000000000000000036426612356324215014330 0ustar /* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include "callbacks.h" #include "interface.h" #include "support.h" #define GLADE_HOOKUP_OBJECT(component,widget,name) \ g_object_set_data_full (G_OBJECT (component), name, \ gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref) #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \ g_object_set_data (G_OBJECT (component), name, widget) GtkWidget* create_window_main (void) { GtkWidget *window_main; GtkWidget *vbox1; GtkWidget *menubar1; GtkWidget *file; GtkWidget *file_menu; GtkWidget *load_session; GtkWidget *save_session; GtkWidget *separatore4; GtkWidget *add_an_image; GtkWidget *add_a_difference; GtkWidget *separatore9; GtkWidget *quit1; GtkWidget *edit; GtkWidget *edit_menu; GtkWidget *view_images1; GtkWidget *show_mag; GtkWidget *separator4; GtkWidget *resulting_image_size; GtkWidget *show_morph_factors; GtkWidget *settings_menu; GtkWidget *morph; GtkWidget *morph_menu; GtkWidget *interpolate_meshes1; GtkWidget *morph_images1; GtkWidget *separatore1; GtkWidget *adjust_all_meshes; GtkWidget *wavelet_equalize; GtkWidget *separator13; GtkWidget *restore_morph_factors1; GtkWidget *restore_morph_factors1_menu; GtkWidget *startr; GtkWidget *endr; GtkWidget *equal; GtkWidget *store_morph_factors; GtkWidget *store_morph_factors_menu; GtkWidget *starts; GtkWidget *ende; GtkWidget *morph_sequence1; GtkWidget *separator3; GtkWidget *help; GtkWidget *help_menu; GtkWidget *guide; GtkWidget *load_example_session; GtkWidget *separator2; GtkWidget *help_sub; GtkWidget *help_sub_menu; GtkWidget *generic_help; GtkWidget *warp_help; GtkWidget *mesh_tips; GtkWidget *morph_help1; GtkWidget *feature_help; GtkWidget *separator11; GtkWidget *why_the_beep_1; GtkWidget *vbox3; GtkWidget *hbox3; GtkWidget *load_image; GtkWidget *load_mesh; GtkWidget *save_mesh; GtkWidget *optionmenu_editview; GtkWidget *convertwidget1; GtkWidget *convertwidget2; GtkWidget *convertwidget3; GtkWidget *convertwidget4; GtkWidget *convertwidget5; GtkWidget *settings_button; GtkWidget *button_interp_meshes; GtkWidget *do_mixing; GtkWidget *button_do_morph; GtkWidget *save_image; GtkWidget *back_to_guide; GtkWidget *handlebox_tools; GtkWidget *vbox7; GtkWidget *hbox_feature; GtkWidget *color_feature; GtkWidget *drawingarea_color; GtkWidget *combo_feature; GtkWidget *combo_entry_feature; GtkWidget *new_feature; GtkWidget *rename_feature; GtkWidget *pack_feature; GtkWidget *unpack_feature; GtkWidget *delete_feature; GtkWidget *toolbar; GtkIconSize tmp_toolbar_icon_size; GSList *tool_edit_group = NULL; GtkWidget *tmp_image; GtkWidget *tool_edit; GtkWidget *tool_move; GtkWidget *tool_stretch; GtkWidget *toolitem1; GtkWidget *label20; GtkWidget *tool_select; GtkWidget *tool_unselect; GtkWidget *tool_assign; GtkWidget *scrolledwindow_image; GtkWidget *viewport4; GtkWidget *image_frame; GtkWidget *drawingarea; GtkWidget *label21; GtkWidget *handlebox_res_size; GtkWidget *frame3; GtkWidget *hbox4; GtkWidget *label16; GtkObject *spinbutton_reswidth_adj; GtkWidget *spinbutton_reswidth; GtkWidget *label17; GtkObject *spinbutton_resheight_adj; GtkWidget *spinbutton_resheight; GtkWidget *double_size; GtkWidget *halve_size; GtkWidget *resulting_apply; GtkWidget *label22; GtkWidget *main_info_label; GtkAccelGroup *accel_group; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); accel_group = gtk_accel_group_new (); window_main = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (window_main, "window_main"); gtk_window_set_title (GTK_WINDOW (window_main), _("gtkmorph")); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox1, "vbox1"); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (window_main), vbox1); menubar1 = gtk_menu_bar_new (); gtk_widget_set_name (menubar1, "menubar1"); gtk_widget_show (menubar1); gtk_box_pack_start (GTK_BOX (vbox1), menubar1, FALSE, FALSE, 0); file = gtk_menu_item_new_with_mnemonic (_("File")); gtk_widget_set_name (file, "file"); gtk_widget_show (file); gtk_container_add (GTK_CONTAINER (menubar1), file); file_menu = gtk_menu_new (); gtk_widget_set_name (file_menu, "file_menu"); gtk_menu_item_set_submenu (GTK_MENU_ITEM (file), file_menu); load_session = gtk_menu_item_new_with_mnemonic (_("load session")); gtk_widget_set_name (load_session, "load_session"); gtk_widget_show (load_session); gtk_container_add (GTK_CONTAINER (file_menu), load_session); save_session = gtk_menu_item_new_with_mnemonic (_("save session")); gtk_widget_set_name (save_session, "save_session"); gtk_widget_show (save_session); gtk_container_add (GTK_CONTAINER (file_menu), save_session); separatore4 = gtk_separator_menu_item_new (); gtk_widget_set_name (separatore4, "separatore4"); gtk_widget_show (separatore4); gtk_container_add (GTK_CONTAINER (file_menu), separatore4); gtk_widget_set_sensitive (separatore4, FALSE); add_an_image = gtk_menu_item_new_with_mnemonic (_("add an image")); gtk_widget_set_name (add_an_image, "add_an_image"); gtk_widget_show (add_an_image); gtk_container_add (GTK_CONTAINER (file_menu), add_an_image); add_a_difference = gtk_menu_item_new_with_mnemonic (_("load a difference")); gtk_widget_set_name (add_a_difference, "add_a_difference"); gtk_widget_show (add_a_difference); gtk_container_add (GTK_CONTAINER (file_menu), add_a_difference); gtk_tooltips_set_tip (tooltips, add_a_difference, _("load a \"differential mesh\", that is a mesh representing the difference of two meshes"), NULL); separatore9 = gtk_separator_menu_item_new (); gtk_widget_set_name (separatore9, "separatore9"); gtk_widget_show (separatore9); gtk_container_add (GTK_CONTAINER (file_menu), separatore9); gtk_widget_set_sensitive (separatore9, FALSE); quit1 = gtk_menu_item_new_with_mnemonic (_("Quit")); gtk_widget_set_name (quit1, "quit1"); gtk_widget_show (quit1); gtk_container_add (GTK_CONTAINER (file_menu), quit1); gtk_widget_add_accelerator (quit1, "activate", accel_group, GDK_q, (GdkModifierType) GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); edit = gtk_menu_item_new_with_mnemonic (_("Edit")); gtk_widget_set_name (edit, "edit"); gtk_widget_show (edit); gtk_container_add (GTK_CONTAINER (menubar1), edit); edit_menu = gtk_menu_new (); gtk_widget_set_name (edit_menu, "edit_menu"); gtk_menu_item_set_submenu (GTK_MENU_ITEM (edit), edit_menu); view_images1 = gtk_menu_item_new_with_mnemonic (_("show all images")); gtk_widget_set_name (view_images1, "view_images1"); gtk_widget_show (view_images1); gtk_container_add (GTK_CONTAINER (edit_menu), view_images1); show_mag = gtk_menu_item_new_with_mnemonic (_("show mag")); gtk_widget_set_name (show_mag, "show_mag"); gtk_widget_show (show_mag); gtk_container_add (GTK_CONTAINER (edit_menu), show_mag); separator4 = gtk_separator_menu_item_new (); gtk_widget_set_name (separator4, "separator4"); gtk_widget_show (separator4); gtk_container_add (GTK_CONTAINER (edit_menu), separator4); gtk_widget_set_sensitive (separator4, FALSE); resulting_image_size = gtk_menu_item_new_with_mnemonic (_("resulting image size...")); gtk_widget_set_name (resulting_image_size, "resulting_image_size"); gtk_widget_show (resulting_image_size); gtk_container_add (GTK_CONTAINER (edit_menu), resulting_image_size); show_morph_factors = gtk_menu_item_new_with_mnemonic (_("show morph factors")); gtk_widget_set_name (show_morph_factors, "show_morph_factors"); gtk_widget_show (show_morph_factors); gtk_container_add (GTK_CONTAINER (edit_menu), show_morph_factors); settings_menu = gtk_menu_item_new_with_mnemonic (_("Settings")); gtk_widget_set_name (settings_menu, "settings_menu"); gtk_widget_show (settings_menu); gtk_container_add (GTK_CONTAINER (menubar1), settings_menu); morph = gtk_menu_item_new_with_mnemonic (_("Morph")); gtk_widget_set_name (morph, "morph"); gtk_widget_show (morph); gtk_container_add (GTK_CONTAINER (menubar1), morph); morph_menu = gtk_menu_new (); gtk_widget_set_name (morph_menu, "morph_menu"); gtk_menu_item_set_submenu (GTK_MENU_ITEM (morph), morph_menu); interpolate_meshes1 = gtk_menu_item_new_with_mnemonic (_("interpolate meshes")); gtk_widget_set_name (interpolate_meshes1, "interpolate_meshes1"); gtk_widget_show (interpolate_meshes1); gtk_container_add (GTK_CONTAINER (morph_menu), interpolate_meshes1); gtk_tooltips_set_tip (tooltips, interpolate_meshes1, _("the mesh of the resulting image is set to an interpolation of the input images' meshes, weighted by the ``mesh factors''"), NULL); morph_images1 = gtk_menu_item_new_with_mnemonic (_("morph images")); gtk_widget_set_name (morph_images1, "morph_images1"); gtk_widget_show (morph_images1); gtk_container_add (GTK_CONTAINER (morph_menu), morph_images1); gtk_tooltips_set_tip (tooltips, morph_images1, _("the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button"), NULL); gtk_widget_add_accelerator (morph_images1, "activate", accel_group, GDK_j, (GdkModifierType) GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); separatore1 = gtk_separator_menu_item_new (); gtk_widget_set_name (separatore1, "separatore1"); gtk_widget_show (separatore1); gtk_container_add (GTK_CONTAINER (morph_menu), separatore1); gtk_widget_set_sensitive (separatore1, FALSE); adjust_all_meshes = gtk_menu_item_new_with_mnemonic (_("adjust all meshes")); gtk_widget_set_name (adjust_all_meshes, "adjust_all_meshes"); gtk_widget_show (adjust_all_meshes); gtk_container_add (GTK_CONTAINER (morph_menu), adjust_all_meshes); gtk_tooltips_set_tip (tooltips, adjust_all_meshes, _("adjust points of meshes confronting original images and the morph"), NULL); wavelet_equalize = gtk_menu_item_new_with_mnemonic (_("wavelet equalize")); gtk_widget_set_name (wavelet_equalize, "wavelet_equalize"); gtk_widget_show (wavelet_equalize); gtk_container_add (GTK_CONTAINER (morph_menu), wavelet_equalize); gtk_tooltips_set_tip (tooltips, wavelet_equalize, _("equalize input images so that the subband of wavelet transform have the same energies"), NULL); separator13 = gtk_separator_menu_item_new (); gtk_widget_set_name (separator13, "separator13"); gtk_widget_show (separator13); gtk_container_add (GTK_CONTAINER (morph_menu), separator13); gtk_widget_set_sensitive (separator13, FALSE); restore_morph_factors1 = gtk_menu_item_new_with_mnemonic (_("restore morph coefficients...")); gtk_widget_set_name (restore_morph_factors1, "restore_morph_factors1"); gtk_widget_show (restore_morph_factors1); gtk_container_add (GTK_CONTAINER (morph_menu), restore_morph_factors1); restore_morph_factors1_menu = gtk_menu_new (); gtk_widget_set_name (restore_morph_factors1_menu, "restore_morph_factors1_menu"); gtk_menu_item_set_submenu (GTK_MENU_ITEM (restore_morph_factors1), restore_morph_factors1_menu); startr = gtk_menu_item_new_with_mnemonic (_("start")); gtk_widget_set_name (startr, "startr"); gtk_widget_show (startr); gtk_container_add (GTK_CONTAINER (restore_morph_factors1_menu), startr); endr = gtk_menu_item_new_with_mnemonic (_("end")); gtk_widget_set_name (endr, "endr"); gtk_widget_show (endr); gtk_container_add (GTK_CONTAINER (restore_morph_factors1_menu), endr); equal = gtk_menu_item_new_with_mnemonic (_("equal")); gtk_widget_set_name (equal, "equal"); gtk_widget_show (equal); gtk_container_add (GTK_CONTAINER (restore_morph_factors1_menu), equal); store_morph_factors = gtk_menu_item_new_with_mnemonic (_("store morph coefficients...")); gtk_widget_set_name (store_morph_factors, "store_morph_factors"); gtk_widget_show (store_morph_factors); gtk_container_add (GTK_CONTAINER (morph_menu), store_morph_factors); gtk_tooltips_set_tip (tooltips, store_morph_factors, _("stores internally the state of all mesh and image-blending factors (to make morph sequences)"), NULL); store_morph_factors_menu = gtk_menu_new (); gtk_widget_set_name (store_morph_factors_menu, "store_morph_factors_menu"); gtk_menu_item_set_submenu (GTK_MENU_ITEM (store_morph_factors), store_morph_factors_menu); starts = gtk_menu_item_new_with_mnemonic (_("start")); gtk_widget_set_name (starts, "starts"); gtk_widget_show (starts); gtk_container_add (GTK_CONTAINER (store_morph_factors_menu), starts); ende = gtk_menu_item_new_with_mnemonic (_("end")); gtk_widget_set_name (ende, "ende"); gtk_widget_show (ende); gtk_container_add (GTK_CONTAINER (store_morph_factors_menu), ende); morph_sequence1 = gtk_menu_item_new_with_mnemonic (_("morph sequence")); gtk_widget_set_name (morph_sequence1, "morph_sequence1"); gtk_widget_show (morph_sequence1); gtk_container_add (GTK_CONTAINER (morph_menu), morph_sequence1); gtk_tooltips_set_tip (tooltips, morph_sequence1, _("create and save many morphs, equally spaced between the morph start and the morph end (that you have already stored with the above menu)"), NULL); separator3 = gtk_separator_menu_item_new (); gtk_widget_set_name (separator3, "separator3"); gtk_widget_show (separator3); gtk_container_add (GTK_CONTAINER (menubar1), separator3); gtk_widget_set_sensitive (separator3, FALSE); help = gtk_menu_item_new_with_mnemonic (_("Help")); gtk_widget_set_name (help, "help"); gtk_widget_show (help); gtk_container_add (GTK_CONTAINER (menubar1), help); help_menu = gtk_menu_new (); gtk_widget_set_name (help_menu, "help_menu"); gtk_menu_item_set_submenu (GTK_MENU_ITEM (help), help_menu); guide = gtk_menu_item_new_with_mnemonic (_("guide...")); gtk_widget_set_name (guide, "guide"); gtk_widget_show (guide); gtk_container_add (GTK_CONTAINER (help_menu), guide); load_example_session = gtk_menu_item_new_with_mnemonic (_("load example session")); gtk_widget_set_name (load_example_session, "load_example_session"); gtk_widget_show (load_example_session); gtk_container_add (GTK_CONTAINER (help_menu), load_example_session); separator2 = gtk_separator_menu_item_new (); gtk_widget_set_name (separator2, "separator2"); gtk_widget_show (separator2); gtk_container_add (GTK_CONTAINER (help_menu), separator2); gtk_widget_set_sensitive (separator2, FALSE); help_sub = gtk_menu_item_new_with_mnemonic (_("help...")); gtk_widget_set_name (help_sub, "help_sub"); gtk_widget_show (help_sub); gtk_container_add (GTK_CONTAINER (help_menu), help_sub); help_sub_menu = gtk_menu_new (); gtk_widget_set_name (help_sub_menu, "help_sub_menu"); gtk_menu_item_set_submenu (GTK_MENU_ITEM (help_sub), help_sub_menu); generic_help = gtk_menu_item_new_with_mnemonic (_("generic help")); gtk_widget_set_name (generic_help, "generic_help"); gtk_widget_show (generic_help); gtk_container_add (GTK_CONTAINER (help_sub_menu), generic_help); warp_help = gtk_menu_item_new_with_mnemonic (_("warp help")); gtk_widget_set_name (warp_help, "warp_help"); gtk_widget_show (warp_help); gtk_container_add (GTK_CONTAINER (help_sub_menu), warp_help); mesh_tips = gtk_menu_item_new_with_mnemonic (_("mesh tips")); gtk_widget_set_name (mesh_tips, "mesh_tips"); gtk_widget_show (mesh_tips); gtk_container_add (GTK_CONTAINER (help_sub_menu), mesh_tips); morph_help1 = gtk_menu_item_new_with_mnemonic (_("morph help")); gtk_widget_set_name (morph_help1, "morph_help1"); gtk_widget_show (morph_help1); gtk_container_add (GTK_CONTAINER (help_sub_menu), morph_help1); feature_help = gtk_menu_item_new_with_mnemonic (_("feature help")); gtk_widget_set_name (feature_help, "feature_help"); gtk_widget_show (feature_help); gtk_container_add (GTK_CONTAINER (help_sub_menu), feature_help); separator11 = gtk_separator_menu_item_new (); gtk_widget_set_name (separator11, "separator11"); gtk_widget_show (separator11); gtk_container_add (GTK_CONTAINER (help_menu), separator11); gtk_widget_set_sensitive (separator11, FALSE); why_the_beep_1 = gtk_menu_item_new_with_mnemonic (_("why the beep?")); gtk_widget_set_name (why_the_beep_1, "why_the_beep_1"); gtk_widget_show (why_the_beep_1); gtk_container_add (GTK_CONTAINER (help_menu), why_the_beep_1); vbox3 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox3, "vbox3"); gtk_widget_show (vbox3); gtk_box_pack_start (GTK_BOX (vbox1), vbox3, TRUE, TRUE, 0); hbox3 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox3, "hbox3"); gtk_widget_show (hbox3); gtk_box_pack_start (GTK_BOX (vbox3), hbox3, FALSE, FALSE, 0); load_image = gtk_button_new_with_mnemonic (_("load\nimage")); gtk_widget_set_name (load_image, "load_image"); gtk_widget_show (load_image); gtk_box_pack_start (GTK_BOX (hbox3), load_image, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (load_image), 3); gtk_tooltips_set_tip (tooltips, load_image, _("load the image. This image may not be warped or morphed, but it may help in setting the resulting mesh"), NULL); load_mesh = gtk_button_new_with_mnemonic (_("load\nmesh")); gtk_widget_set_name (load_mesh, "load_mesh"); gtk_widget_show (load_mesh); gtk_box_pack_start (GTK_BOX (hbox3), load_mesh, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (load_mesh), 3); save_mesh = gtk_button_new_with_mnemonic (_("save\nmesh")); gtk_widget_set_name (save_mesh, "save_mesh"); gtk_widget_show (save_mesh); gtk_box_pack_start (GTK_BOX (hbox3), save_mesh, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (save_mesh), 3); optionmenu_editview = gtk_option_menu_new (); gtk_widget_set_name (optionmenu_editview, "optionmenu_editview"); gtk_widget_show (optionmenu_editview); gtk_box_pack_start (GTK_BOX (hbox3), optionmenu_editview, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (optionmenu_editview), 3); gtk_tooltips_set_tip (tooltips, optionmenu_editview, _("``edit template'': view the loaded image and edit the mesh on it. \\n ``view morphed'': view the result of morphing. ``v.morph&mesh'' as above but with the mesh. ``edit eyes points'' sets the reference position of the eyes"), NULL); convertwidget1 = gtk_menu_new (); gtk_widget_set_name (convertwidget1, "convertwidget1"); convertwidget2 = gtk_menu_item_new_with_mnemonic (_("edit template")); gtk_widget_set_name (convertwidget2, "convertwidget2"); gtk_widget_show (convertwidget2); gtk_container_add (GTK_CONTAINER (convertwidget1), convertwidget2); convertwidget3 = gtk_menu_item_new_with_mnemonic (_("view morph")); gtk_widget_set_name (convertwidget3, "convertwidget3"); gtk_widget_show (convertwidget3); gtk_container_add (GTK_CONTAINER (convertwidget1), convertwidget3); convertwidget4 = gtk_menu_item_new_with_mnemonic (_("v morph&meshes")); gtk_widget_set_name (convertwidget4, "convertwidget4"); gtk_widget_show (convertwidget4); gtk_container_add (GTK_CONTAINER (convertwidget1), convertwidget4); convertwidget5 = gtk_menu_item_new_with_mnemonic (_("edit eyes points")); gtk_widget_set_name (convertwidget5, "convertwidget5"); gtk_widget_show (convertwidget5); gtk_container_add (GTK_CONTAINER (convertwidget1), convertwidget5); gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu_editview), convertwidget1); settings_button = gtk_button_new_with_mnemonic (_("settings")); gtk_widget_set_name (settings_button, "settings_button"); gtk_widget_show (settings_button); gtk_box_pack_start (GTK_BOX (hbox3), settings_button, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (settings_button), 3); button_interp_meshes = gtk_button_new_with_mnemonic (_("interpol.\nmeshes")); gtk_widget_set_name (button_interp_meshes, "button_interp_meshes"); gtk_widget_show (button_interp_meshes); gtk_box_pack_start (GTK_BOX (hbox3), button_interp_meshes, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (button_interp_meshes), 3); gtk_tooltips_set_tip (tooltips, button_interp_meshes, _("set this mesh to be an interpolation of all other meshes, using ``mesh factors'' as weights"), NULL); do_mixing = gtk_button_new_with_mnemonic (_("do\nblending")); gtk_widget_set_name (do_mixing, "do_mixing"); gtk_widget_show (do_mixing); gtk_box_pack_start (GTK_BOX (hbox3), do_mixing, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (do_mixing), 3); gtk_tooltips_set_tip (tooltips, do_mixing, _("mix all the warped images in the ``resulting image'' using ``image blending factors'' as weights"), NULL); button_do_morph = gtk_button_new_with_mnemonic (_("do\nmorph")); gtk_widget_set_name (button_do_morph, "button_do_morph"); gtk_widget_show (button_do_morph); gtk_box_pack_start (GTK_BOX (hbox3), button_do_morph, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (button_do_morph), 3); gtk_tooltips_set_tip (tooltips, button_do_morph, _("the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button."), NULL); save_image = gtk_button_new_with_mnemonic (_("save\nimage")); gtk_widget_set_name (save_image, "save_image"); gtk_widget_show (save_image); gtk_box_pack_start (GTK_BOX (hbox3), save_image, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (save_image), 3); gtk_tooltips_set_tip (tooltips, save_image, _("it saves whatever image is currently shown in the window"), NULL); back_to_guide = gtk_button_new_with_mnemonic (_("guide")); gtk_widget_set_name (back_to_guide, "back_to_guide"); gtk_widget_show (back_to_guide); gtk_box_pack_start (GTK_BOX (hbox3), back_to_guide, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (back_to_guide), 3); gtk_tooltips_set_tip (tooltips, back_to_guide, _("back to guide"), NULL); handlebox_tools = gtk_handle_box_new (); gtk_widget_set_name (handlebox_tools, "handlebox_tools"); gtk_widget_show (handlebox_tools); gtk_box_pack_start (GTK_BOX (vbox3), handlebox_tools, FALSE, TRUE, 0); vbox7 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox7, "vbox7"); gtk_widget_show (vbox7); gtk_container_add (GTK_CONTAINER (handlebox_tools), vbox7); hbox_feature = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox_feature, "hbox_feature"); gtk_widget_show (hbox_feature); gtk_box_pack_start (GTK_BOX (vbox7), hbox_feature, FALSE, FALSE, 0); color_feature = gtk_button_new (); gtk_widget_set_name (color_feature, "color_feature"); gtk_widget_show (color_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), color_feature, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (color_feature), 2); drawingarea_color = gtk_drawing_area_new (); gtk_widget_set_name (drawingarea_color, "drawingarea_color"); gtk_widget_show (drawingarea_color); gtk_container_add (GTK_CONTAINER (color_feature), drawingarea_color); gtk_widget_set_size_request (drawingarea_color, 15, 10); combo_feature = gtk_combo_new (); g_object_set_data (G_OBJECT (GTK_COMBO (combo_feature)->popwin), "GladeParentKey", combo_feature); gtk_widget_set_name (combo_feature, "combo_feature"); gtk_widget_show (combo_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), combo_feature, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (combo_feature), 2); gtk_combo_set_case_sensitive (GTK_COMBO (combo_feature), TRUE); combo_entry_feature = GTK_COMBO (combo_feature)->entry; gtk_widget_set_name (combo_entry_feature, "combo_entry_feature"); gtk_widget_show (combo_entry_feature); new_feature = gtk_button_new_with_mnemonic (_("new")); gtk_widget_set_name (new_feature, "new_feature"); gtk_widget_show (new_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), new_feature, FALSE, FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (new_feature), 2); gtk_tooltips_set_tip (tooltips, new_feature, _("add new feature to the end of list"), NULL); rename_feature = gtk_button_new_with_mnemonic (_("rename")); gtk_widget_set_name (rename_feature, "rename_feature"); gtk_widget_show (rename_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), rename_feature, FALSE, FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (rename_feature), 2); pack_feature = gtk_button_new_with_mnemonic (_("pack")); gtk_widget_set_name (pack_feature, "pack_feature"); gtk_widget_show (pack_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), pack_feature, FALSE, FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (pack_feature), 2); gtk_tooltips_set_tip (tooltips, pack_feature, _("pack the selected points in this feature"), NULL); unpack_feature = gtk_button_new_with_mnemonic (_("unpack")); gtk_widget_set_name (unpack_feature, "unpack_feature"); gtk_widget_show (unpack_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), unpack_feature, FALSE, FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (unpack_feature), 2); gtk_tooltips_set_tip (tooltips, unpack_feature, _("unpack this feature and transforms all points of it to selected points"), NULL); delete_feature = gtk_button_new_with_mnemonic (_("delete")); gtk_widget_set_name (delete_feature, "delete_feature"); gtk_widget_show (delete_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), delete_feature, FALSE, FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (delete_feature), 2); gtk_tooltips_set_tip (tooltips, delete_feature, _("delete last feature"), NULL); toolbar = gtk_toolbar_new (); gtk_widget_set_name (toolbar, "toolbar"); gtk_widget_show (toolbar); gtk_box_pack_start (GTK_BOX (vbox7), toolbar, FALSE, FALSE, 0); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH); tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar)); tool_edit = (GtkWidget*) gtk_radio_tool_button_new (NULL); gtk_tool_button_set_label (GTK_TOOL_BUTTON (tool_edit), _("edit")); tmp_image = create_pixmap (window_main, "cursor_left.xpm"); gtk_widget_show (tmp_image); gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (tool_edit), tmp_image); gtk_widget_set_name (tool_edit, "tool_edit"); gtk_widget_show (tool_edit); gtk_container_add (GTK_CONTAINER (toolbar), tool_edit); gtk_container_set_border_width (GTK_CONTAINER (tool_edit), 2); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (tool_edit), tooltips, _("move single point"), NULL); gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (tool_edit), tool_edit_group); tool_edit_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (tool_edit)); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (tool_edit), TRUE); tool_move = (GtkWidget*) gtk_radio_tool_button_new (NULL); gtk_tool_button_set_label (GTK_TOOL_BUTTON (tool_move), _("move")); tmp_image = create_pixmap (window_main, "hand01.xpm"); gtk_widget_show (tmp_image); gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (tool_move), tmp_image); gtk_widget_set_name (tool_move, "tool_move"); gtk_widget_show (tool_move); gtk_container_add (GTK_CONTAINER (toolbar), tool_move); gtk_container_set_border_width (GTK_CONTAINER (tool_move), 2); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (tool_move), tooltips, _("move whole feature"), NULL); gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (tool_move), tool_edit_group); tool_edit_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (tool_move)); tool_stretch = (GtkWidget*) gtk_radio_tool_button_new (NULL); gtk_tool_button_set_label (GTK_TOOL_BUTTON (tool_stretch), _("stretch")); tmp_image = create_pixmap (window_main, "transform.xpm"); gtk_widget_show (tmp_image); gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (tool_stretch), tmp_image); gtk_widget_set_name (tool_stretch, "tool_stretch"); gtk_widget_show (tool_stretch); gtk_container_add (GTK_CONTAINER (toolbar), tool_stretch); gtk_container_set_border_width (GTK_CONTAINER (tool_stretch), 2); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (tool_stretch), tooltips, _("stretch whole feature"), NULL); gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (tool_stretch), tool_edit_group); tool_edit_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (tool_stretch)); toolitem1 = (GtkWidget*) gtk_tool_item_new (); gtk_widget_set_name (toolitem1, "toolitem1"); gtk_widget_show (toolitem1); gtk_container_add (GTK_CONTAINER (toolbar), toolitem1); label20 = gtk_label_new (_("-")); gtk_widget_set_name (label20, "label20"); gtk_widget_show (label20); gtk_container_add (GTK_CONTAINER (toolitem1), label20); gtk_label_set_justify (GTK_LABEL (label20), GTK_JUSTIFY_CENTER); tool_select = (GtkWidget*) gtk_radio_tool_button_new (NULL); gtk_tool_button_set_label (GTK_TOOL_BUTTON (tool_select), _("select")); tmp_image = create_pixmap (window_main, "pencil_y.xpm"); gtk_widget_show (tmp_image); gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (tool_select), tmp_image); gtk_widget_set_name (tool_select, "tool_select"); gtk_widget_show (tool_select); gtk_container_add (GTK_CONTAINER (toolbar), tool_select); gtk_container_set_border_width (GTK_CONTAINER (tool_select), 2); gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (tool_select), tool_edit_group); tool_edit_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (tool_select)); tool_unselect = (GtkWidget*) gtk_radio_tool_button_new (NULL); gtk_tool_button_set_label (GTK_TOOL_BUTTON (tool_unselect), _("unselect")); tmp_image = create_pixmap (window_main, "eraser.xpm"); gtk_widget_show (tmp_image); gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (tool_unselect), tmp_image); gtk_widget_set_name (tool_unselect, "tool_unselect"); gtk_widget_show (tool_unselect); gtk_container_add (GTK_CONTAINER (toolbar), tool_unselect); gtk_container_set_border_width (GTK_CONTAINER (tool_unselect), 2); gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (tool_unselect), tool_edit_group); tool_edit_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (tool_unselect)); tool_assign = (GtkWidget*) gtk_radio_tool_button_new (NULL); gtk_tool_button_set_label (GTK_TOOL_BUTTON (tool_assign), _("assign")); tmp_image = create_pixmap (window_main, "pencil.xpm"); gtk_widget_show (tmp_image); gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (tool_assign), tmp_image); gtk_widget_set_name (tool_assign, "tool_assign"); gtk_widget_show (tool_assign); gtk_container_add (GTK_CONTAINER (toolbar), tool_assign); gtk_container_set_border_width (GTK_CONTAINER (tool_assign), 2); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (tool_assign), tooltips, _("assign point to feature"), NULL); gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (tool_assign), tool_edit_group); tool_edit_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (tool_assign)); scrolledwindow_image = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow_image, "scrolledwindow_image"); gtk_widget_show (scrolledwindow_image); gtk_box_pack_start (GTK_BOX (vbox3), scrolledwindow_image, TRUE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS (scrolledwindow_image, GTK_CAN_FOCUS); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow_image), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport4 = gtk_viewport_new (NULL, NULL); gtk_widget_set_name (viewport4, "viewport4"); gtk_widget_show (viewport4); gtk_container_add (GTK_CONTAINER (scrolledwindow_image), viewport4); gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport4), GTK_SHADOW_ETCHED_OUT); image_frame = gtk_frame_new (NULL); gtk_widget_set_name (image_frame, "image_frame"); gtk_widget_show (image_frame); gtk_container_add (GTK_CONTAINER (viewport4), image_frame); drawingarea = gtk_drawing_area_new (); gtk_widget_set_name (drawingarea, "drawingarea"); gtk_widget_show (drawingarea); gtk_container_add (GTK_CONTAINER (image_frame), drawingarea); gtk_widget_set_events (drawingarea, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); label21 = gtk_label_new (_("error")); gtk_widget_set_name (label21, "label21"); gtk_widget_show (label21); gtk_frame_set_label_widget (GTK_FRAME (image_frame), label21); handlebox_res_size = gtk_handle_box_new (); gtk_widget_set_name (handlebox_res_size, "handlebox_res_size"); gtk_widget_show (handlebox_res_size); gtk_box_pack_start (GTK_BOX (vbox3), handlebox_res_size, FALSE, FALSE, 0); frame3 = gtk_frame_new (NULL); gtk_widget_set_name (frame3, "frame3"); gtk_widget_show (frame3); gtk_container_add (GTK_CONTAINER (handlebox_res_size), frame3); gtk_frame_set_label_align (GTK_FRAME (frame3), 0.02, 0.5); hbox4 = gtk_hbox_new (TRUE, 0); gtk_widget_set_name (hbox4, "hbox4"); gtk_widget_show (hbox4); gtk_container_add (GTK_CONTAINER (frame3), hbox4); label16 = gtk_label_new (_("width")); gtk_widget_set_name (label16, "label16"); gtk_widget_show (label16); gtk_box_pack_start (GTK_BOX (hbox4), label16, TRUE, TRUE, 0); gtk_label_set_justify (GTK_LABEL (label16), GTK_JUSTIFY_CENTER); gtk_misc_set_alignment (GTK_MISC (label16), 0.7, 0.5); spinbutton_reswidth_adj = gtk_adjustment_new (400, 16, 4000, 1, 10, 10); spinbutton_reswidth = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_reswidth_adj), 1, 0); gtk_widget_set_name (spinbutton_reswidth, "spinbutton_reswidth"); gtk_widget_show (spinbutton_reswidth); gtk_box_pack_start (GTK_BOX (hbox4), spinbutton_reswidth, TRUE, TRUE, 1); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_reswidth), TRUE); label17 = gtk_label_new (_("height")); gtk_widget_set_name (label17, "label17"); gtk_widget_show (label17); gtk_box_pack_start (GTK_BOX (hbox4), label17, FALSE, TRUE, 0); gtk_label_set_justify (GTK_LABEL (label17), GTK_JUSTIFY_CENTER); gtk_misc_set_alignment (GTK_MISC (label17), 0.7, 0.5); spinbutton_resheight_adj = gtk_adjustment_new (300, 16, 4000, 1, 50, 50); spinbutton_resheight = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_resheight_adj), 1, 0); gtk_widget_set_name (spinbutton_resheight, "spinbutton_resheight"); gtk_widget_show (spinbutton_resheight); gtk_box_pack_start (GTK_BOX (hbox4), spinbutton_resheight, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_resheight), TRUE); double_size = gtk_button_new_with_mnemonic (_("x2")); gtk_widget_set_name (double_size, "double_size"); gtk_widget_show (double_size); gtk_box_pack_start (GTK_BOX (hbox4), double_size, FALSE, FALSE, 1); gtk_container_set_border_width (GTK_CONTAINER (double_size), 2); halve_size = gtk_button_new_with_mnemonic (_("/2")); gtk_widget_set_name (halve_size, "halve_size"); gtk_widget_show (halve_size); gtk_box_pack_start (GTK_BOX (hbox4), halve_size, FALSE, FALSE, 1); gtk_container_set_border_width (GTK_CONTAINER (halve_size), 2); resulting_apply = gtk_button_new_with_mnemonic (_("apply")); gtk_widget_set_name (resulting_apply, "resulting_apply"); gtk_widget_show (resulting_apply); gtk_box_pack_start (GTK_BOX (hbox4), resulting_apply, FALSE, FALSE, 6); gtk_container_set_border_width (GTK_CONTAINER (resulting_apply), 2); label22 = gtk_label_new (_("resulting image size")); gtk_widget_set_name (label22, "label22"); gtk_widget_show (label22); gtk_frame_set_label_widget (GTK_FRAME (frame3), label22); main_info_label = gtk_label_new (_("welcome")); gtk_widget_set_name (main_info_label, "main_info_label"); gtk_widget_show (main_info_label); gtk_box_pack_start (GTK_BOX (vbox1), main_info_label, FALSE, TRUE, 0); gtk_label_set_line_wrap (GTK_LABEL (main_info_label), TRUE); gtk_misc_set_alignment (GTK_MISC (main_info_label), 0, 0); gtk_misc_set_padding (GTK_MISC (main_info_label), 1, 1); g_signal_connect ((gpointer) window_main, "delete_event", G_CALLBACK (on_window_main_delete), NULL); g_signal_connect ((gpointer) load_session, "activate", G_CALLBACK (on_load_session_activate), NULL); g_signal_connect ((gpointer) save_session, "activate", G_CALLBACK (on_save_session_activate), NULL); g_signal_connect ((gpointer) add_an_image, "activate", G_CALLBACK (on_add_an_image_activate), NULL); g_signal_connect ((gpointer) add_a_difference, "activate", G_CALLBACK (on_add_a_difference_activate), NULL); g_signal_connect ((gpointer) quit1, "activate", G_CALLBACK (on_quit1_activate), NULL); g_signal_connect ((gpointer) view_images1, "activate", G_CALLBACK (on_view_images1_activate), NULL); g_signal_connect ((gpointer) show_mag, "activate", G_CALLBACK (on_show_mag_activate), NULL); g_signal_connect ((gpointer) resulting_image_size, "activate", G_CALLBACK (on_resulting_image_size_activate), NULL); g_signal_connect ((gpointer) show_morph_factors, "activate", G_CALLBACK (on_show_morph_factors_activate), NULL); g_signal_connect ((gpointer) interpolate_meshes1, "activate", G_CALLBACK (on_interpolate_meshes1_activate), NULL); g_signal_connect ((gpointer) morph_images1, "activate", G_CALLBACK (on_morph_images1_activate), NULL); g_signal_connect ((gpointer) adjust_all_meshes, "activate", G_CALLBACK (on_adjust_all_meshes_activate), NULL); g_signal_connect ((gpointer) wavelet_equalize, "activate", G_CALLBACK (on_wavelet_equalize_activate), NULL); g_signal_connect ((gpointer) restore_morph_factors1, "activate", G_CALLBACK (on_restore_morph_factors1_activate), NULL); g_signal_connect ((gpointer) startr, "activate", G_CALLBACK (on_restore_start_activate), NULL); g_signal_connect ((gpointer) endr, "activate", G_CALLBACK (on_restore_end_activate), NULL); g_signal_connect ((gpointer) equal, "activate", G_CALLBACK (on_restore_equal_activate), NULL); g_signal_connect ((gpointer) store_morph_factors, "activate", G_CALLBACK (on_store_morph_factors_activate), NULL); g_signal_connect ((gpointer) starts, "activate", G_CALLBACK (on_store_start_activate), NULL); g_signal_connect ((gpointer) ende, "activate", G_CALLBACK (on_store_end_activate), NULL); g_signal_connect ((gpointer) morph_sequence1, "activate", G_CALLBACK (on_morph_sequence1_activate), NULL); g_signal_connect ((gpointer) guide, "activate", G_CALLBACK (on_guide_activate), NULL); g_signal_connect ((gpointer) load_example_session, "activate", G_CALLBACK (on_load_example_session_activate), NULL); g_signal_connect ((gpointer) generic_help, "activate", G_CALLBACK (on_generic_help_activate), NULL); g_signal_connect ((gpointer) warp_help, "activate", G_CALLBACK (on_warp_help_activate), NULL); g_signal_connect ((gpointer) mesh_tips, "activate", G_CALLBACK (on_mesh_tips_activate), NULL); g_signal_connect ((gpointer) morph_help1, "activate", G_CALLBACK (on_morph_help_activate), NULL); g_signal_connect ((gpointer) feature_help, "activate", G_CALLBACK (on_feature_help_activate), NULL); g_signal_connect ((gpointer) why_the_beep_1, "activate", G_CALLBACK (on_why_the_beep_1_activate), NULL); g_signal_connect ((gpointer) load_image, "clicked", G_CALLBACK (on_loadimage_clicked), NULL); g_signal_connect ((gpointer) load_mesh, "clicked", G_CALLBACK (on_loadmesh_clicked), NULL); g_signal_connect ((gpointer) save_mesh, "clicked", G_CALLBACK (on_savemesh_clicked), NULL); g_signal_connect ((gpointer) settings_button, "clicked", G_CALLBACK (on_settings_clicked), NULL); g_signal_connect ((gpointer) button_interp_meshes, "clicked", G_CALLBACK (on_interpolate_meshes1_activate), NULL); g_signal_connect ((gpointer) do_mixing, "clicked", G_CALLBACK (on_do_mixing_clicked), NULL); g_signal_connect ((gpointer) button_do_morph, "clicked", G_CALLBACK (on_morph_images1_activate), NULL); g_signal_connect ((gpointer) save_image, "clicked", G_CALLBACK (on_save_image_clicked), NULL); g_signal_connect ((gpointer) back_to_guide, "clicked", G_CALLBACK (on_back_to_guide_activate), NULL); g_signal_connect ((gpointer) color_feature, "clicked", G_CALLBACK (on_color_feature_clicked), NULL); g_signal_connect ((gpointer) drawingarea_color, "expose_event", G_CALLBACK (on_drawingarea_color_expose_event), NULL); g_signal_connect ((gpointer) combo_entry_feature, "activate", G_CALLBACK (on_combo_entry_feature_activate), NULL); g_signal_connect ((gpointer) combo_entry_feature, "changed", G_CALLBACK (on_combo_entry_feature_changed), NULL); g_signal_connect ((gpointer) new_feature, "clicked", G_CALLBACK (on_new_feature_clicked), NULL); g_signal_connect ((gpointer) rename_feature, "clicked", G_CALLBACK (on_rename_feature_clicked), NULL); g_signal_connect ((gpointer) pack_feature, "clicked", G_CALLBACK (on_pack_feature_clicked), NULL); g_signal_connect ((gpointer) unpack_feature, "clicked", G_CALLBACK (on_unpack_feature_clicked), NULL); g_signal_connect ((gpointer) delete_feature, "clicked", G_CALLBACK (on_delete_feature_clicked), NULL); g_signal_connect ((gpointer) tool_edit, "clicked", G_CALLBACK (on_tool_edit_clicked), NULL); g_signal_connect ((gpointer) tool_move, "clicked", G_CALLBACK (on_tool_move_clicked), NULL); g_signal_connect ((gpointer) tool_stretch, "clicked", G_CALLBACK (on_tool_stretch_clicked), NULL); g_signal_connect ((gpointer) tool_select, "clicked", G_CALLBACK (on_tool_select_clicked), NULL); g_signal_connect ((gpointer) tool_unselect, "clicked", G_CALLBACK (on_tool_unselect_clicked), NULL); g_signal_connect ((gpointer) tool_assign, "clicked", G_CALLBACK (on_tool_assign_clicked), NULL); g_signal_connect ((gpointer) drawingarea, "motion_notify_event", G_CALLBACK (on_motion_notify_event), NULL); g_signal_connect ((gpointer) drawingarea, "button_press_event", G_CALLBACK (on_button_press_event), NULL); g_signal_connect ((gpointer) drawingarea, "expose_event", G_CALLBACK (on_expose_event), NULL); g_signal_connect ((gpointer) drawingarea, "realize", G_CALLBACK (on_drawingarea_realize), NULL); g_signal_connect ((gpointer) drawingarea, "button_release_event", G_CALLBACK (on_drawingarea_button_release_event), NULL); g_signal_connect ((gpointer) spinbutton_reswidth, "value_changed", G_CALLBACK (on_spinbutton_reswidth_changed), NULL); g_signal_connect ((gpointer) spinbutton_resheight, "value_changed", G_CALLBACK (on_spinbutton_resheight_changed), NULL); g_signal_connect ((gpointer) double_size, "clicked", G_CALLBACK (on_double_size_clicked), NULL); g_signal_connect ((gpointer) halve_size, "clicked", G_CALLBACK (on_halve_size_clicked), NULL); g_signal_connect ((gpointer) resulting_apply, "clicked", G_CALLBACK (on_resulting_apply_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (window_main, window_main, "window_main"); GLADE_HOOKUP_OBJECT (window_main, vbox1, "vbox1"); GLADE_HOOKUP_OBJECT (window_main, menubar1, "menubar1"); GLADE_HOOKUP_OBJECT (window_main, file, "file"); GLADE_HOOKUP_OBJECT (window_main, file_menu, "file_menu"); GLADE_HOOKUP_OBJECT (window_main, load_session, "load_session"); GLADE_HOOKUP_OBJECT (window_main, save_session, "save_session"); GLADE_HOOKUP_OBJECT (window_main, separatore4, "separatore4"); GLADE_HOOKUP_OBJECT (window_main, add_an_image, "add_an_image"); GLADE_HOOKUP_OBJECT (window_main, add_a_difference, "add_a_difference"); GLADE_HOOKUP_OBJECT (window_main, separatore9, "separatore9"); GLADE_HOOKUP_OBJECT (window_main, quit1, "quit1"); GLADE_HOOKUP_OBJECT (window_main, edit, "edit"); GLADE_HOOKUP_OBJECT (window_main, edit_menu, "edit_menu"); GLADE_HOOKUP_OBJECT (window_main, view_images1, "view_images1"); GLADE_HOOKUP_OBJECT (window_main, show_mag, "show_mag"); GLADE_HOOKUP_OBJECT (window_main, separator4, "separator4"); GLADE_HOOKUP_OBJECT (window_main, resulting_image_size, "resulting_image_size"); GLADE_HOOKUP_OBJECT (window_main, show_morph_factors, "show_morph_factors"); GLADE_HOOKUP_OBJECT (window_main, settings_menu, "settings_menu"); GLADE_HOOKUP_OBJECT (window_main, morph, "morph"); GLADE_HOOKUP_OBJECT (window_main, morph_menu, "morph_menu"); GLADE_HOOKUP_OBJECT (window_main, interpolate_meshes1, "interpolate_meshes1"); GLADE_HOOKUP_OBJECT (window_main, morph_images1, "morph_images1"); GLADE_HOOKUP_OBJECT (window_main, separatore1, "separatore1"); GLADE_HOOKUP_OBJECT (window_main, adjust_all_meshes, "adjust_all_meshes"); GLADE_HOOKUP_OBJECT (window_main, wavelet_equalize, "wavelet_equalize"); GLADE_HOOKUP_OBJECT (window_main, separator13, "separator13"); GLADE_HOOKUP_OBJECT (window_main, restore_morph_factors1, "restore_morph_factors1"); GLADE_HOOKUP_OBJECT (window_main, restore_morph_factors1_menu, "restore_morph_factors1_menu"); GLADE_HOOKUP_OBJECT (window_main, startr, "startr"); GLADE_HOOKUP_OBJECT (window_main, endr, "endr"); GLADE_HOOKUP_OBJECT (window_main, equal, "equal"); GLADE_HOOKUP_OBJECT (window_main, store_morph_factors, "store_morph_factors"); GLADE_HOOKUP_OBJECT (window_main, store_morph_factors_menu, "store_morph_factors_menu"); GLADE_HOOKUP_OBJECT (window_main, starts, "starts"); GLADE_HOOKUP_OBJECT (window_main, ende, "ende"); GLADE_HOOKUP_OBJECT (window_main, morph_sequence1, "morph_sequence1"); GLADE_HOOKUP_OBJECT (window_main, separator3, "separator3"); GLADE_HOOKUP_OBJECT (window_main, help, "help"); GLADE_HOOKUP_OBJECT (window_main, help_menu, "help_menu"); GLADE_HOOKUP_OBJECT (window_main, guide, "guide"); GLADE_HOOKUP_OBJECT (window_main, load_example_session, "load_example_session"); GLADE_HOOKUP_OBJECT (window_main, separator2, "separator2"); GLADE_HOOKUP_OBJECT (window_main, help_sub, "help_sub"); GLADE_HOOKUP_OBJECT (window_main, help_sub_menu, "help_sub_menu"); GLADE_HOOKUP_OBJECT (window_main, generic_help, "generic_help"); GLADE_HOOKUP_OBJECT (window_main, warp_help, "warp_help"); GLADE_HOOKUP_OBJECT (window_main, mesh_tips, "mesh_tips"); GLADE_HOOKUP_OBJECT (window_main, morph_help1, "morph_help1"); GLADE_HOOKUP_OBJECT (window_main, feature_help, "feature_help"); GLADE_HOOKUP_OBJECT (window_main, separator11, "separator11"); GLADE_HOOKUP_OBJECT (window_main, why_the_beep_1, "why_the_beep_1"); GLADE_HOOKUP_OBJECT (window_main, vbox3, "vbox3"); GLADE_HOOKUP_OBJECT (window_main, hbox3, "hbox3"); GLADE_HOOKUP_OBJECT (window_main, load_image, "load_image"); GLADE_HOOKUP_OBJECT (window_main, load_mesh, "load_mesh"); GLADE_HOOKUP_OBJECT (window_main, save_mesh, "save_mesh"); GLADE_HOOKUP_OBJECT (window_main, optionmenu_editview, "optionmenu_editview"); GLADE_HOOKUP_OBJECT (window_main, convertwidget1, "convertwidget1"); GLADE_HOOKUP_OBJECT (window_main, convertwidget2, "convertwidget2"); GLADE_HOOKUP_OBJECT (window_main, convertwidget3, "convertwidget3"); GLADE_HOOKUP_OBJECT (window_main, convertwidget4, "convertwidget4"); GLADE_HOOKUP_OBJECT (window_main, convertwidget5, "convertwidget5"); GLADE_HOOKUP_OBJECT (window_main, settings_button, "settings_button"); GLADE_HOOKUP_OBJECT (window_main, button_interp_meshes, "button_interp_meshes"); GLADE_HOOKUP_OBJECT (window_main, do_mixing, "do_mixing"); GLADE_HOOKUP_OBJECT (window_main, button_do_morph, "button_do_morph"); GLADE_HOOKUP_OBJECT (window_main, save_image, "save_image"); GLADE_HOOKUP_OBJECT (window_main, back_to_guide, "back_to_guide"); GLADE_HOOKUP_OBJECT (window_main, handlebox_tools, "handlebox_tools"); GLADE_HOOKUP_OBJECT (window_main, vbox7, "vbox7"); GLADE_HOOKUP_OBJECT (window_main, hbox_feature, "hbox_feature"); GLADE_HOOKUP_OBJECT (window_main, color_feature, "color_feature"); GLADE_HOOKUP_OBJECT (window_main, drawingarea_color, "drawingarea_color"); GLADE_HOOKUP_OBJECT (window_main, combo_feature, "combo_feature"); GLADE_HOOKUP_OBJECT (window_main, combo_entry_feature, "combo_entry_feature"); GLADE_HOOKUP_OBJECT (window_main, new_feature, "new_feature"); GLADE_HOOKUP_OBJECT (window_main, rename_feature, "rename_feature"); GLADE_HOOKUP_OBJECT (window_main, pack_feature, "pack_feature"); GLADE_HOOKUP_OBJECT (window_main, unpack_feature, "unpack_feature"); GLADE_HOOKUP_OBJECT (window_main, delete_feature, "delete_feature"); GLADE_HOOKUP_OBJECT (window_main, toolbar, "toolbar"); GLADE_HOOKUP_OBJECT (window_main, tool_edit, "tool_edit"); GLADE_HOOKUP_OBJECT (window_main, tool_move, "tool_move"); GLADE_HOOKUP_OBJECT (window_main, tool_stretch, "tool_stretch"); GLADE_HOOKUP_OBJECT (window_main, toolitem1, "toolitem1"); GLADE_HOOKUP_OBJECT (window_main, label20, "label20"); GLADE_HOOKUP_OBJECT (window_main, tool_select, "tool_select"); GLADE_HOOKUP_OBJECT (window_main, tool_unselect, "tool_unselect"); GLADE_HOOKUP_OBJECT (window_main, tool_assign, "tool_assign"); GLADE_HOOKUP_OBJECT (window_main, scrolledwindow_image, "scrolledwindow_image"); GLADE_HOOKUP_OBJECT (window_main, viewport4, "viewport4"); GLADE_HOOKUP_OBJECT (window_main, image_frame, "image_frame"); GLADE_HOOKUP_OBJECT (window_main, drawingarea, "drawingarea"); GLADE_HOOKUP_OBJECT (window_main, label21, "label21"); GLADE_HOOKUP_OBJECT (window_main, handlebox_res_size, "handlebox_res_size"); GLADE_HOOKUP_OBJECT (window_main, frame3, "frame3"); GLADE_HOOKUP_OBJECT (window_main, hbox4, "hbox4"); GLADE_HOOKUP_OBJECT (window_main, label16, "label16"); GLADE_HOOKUP_OBJECT (window_main, spinbutton_reswidth, "spinbutton_reswidth"); GLADE_HOOKUP_OBJECT (window_main, label17, "label17"); GLADE_HOOKUP_OBJECT (window_main, spinbutton_resheight, "spinbutton_resheight"); GLADE_HOOKUP_OBJECT (window_main, double_size, "double_size"); GLADE_HOOKUP_OBJECT (window_main, halve_size, "halve_size"); GLADE_HOOKUP_OBJECT (window_main, resulting_apply, "resulting_apply"); GLADE_HOOKUP_OBJECT (window_main, label22, "label22"); GLADE_HOOKUP_OBJECT (window_main, main_info_label, "main_info_label"); GLADE_HOOKUP_OBJECT_NO_REF (window_main, tooltips, "tooltips"); gtk_window_add_accel_group (GTK_WINDOW (window_main), accel_group); return window_main; } GtkWidget* create_imageselection1 (void) { GtkWidget *imageselection1; GtkWidget *ok_button1; GtkWidget *cancel_button1; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); imageselection1 = gtk_file_selection_new (_("error!")); gtk_widget_set_name (imageselection1, "imageselection1"); gtk_container_set_border_width (GTK_CONTAINER (imageselection1), 10); gtk_window_set_type_hint (GTK_WINDOW (imageselection1), GDK_WINDOW_TYPE_HINT_DIALOG); ok_button1 = GTK_FILE_SELECTION (imageselection1)->ok_button; gtk_widget_set_name (ok_button1, "ok_button1"); gtk_widget_show (ok_button1); GTK_WIDGET_SET_FLAGS (ok_button1, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, ok_button1, _("load the selected image"), NULL); cancel_button1 = GTK_FILE_SELECTION (imageselection1)->cancel_button; gtk_widget_set_name (cancel_button1, "cancel_button1"); gtk_widget_show (cancel_button1); GTK_WIDGET_SET_FLAGS (cancel_button1, GTK_CAN_DEFAULT); g_signal_connect ((gpointer) imageselection1, "destroy_event", G_CALLBACK (on_imageselection1_destroy_event), NULL); g_signal_connect ((gpointer) imageselection1, "delete_event", G_CALLBACK (on_imageselection1_destroy_event), NULL); g_signal_connect ((gpointer) ok_button1, "realize", G_CALLBACK (on_ok_button1_realize), NULL); g_signal_connect ((gpointer) ok_button1, "clicked", G_CALLBACK (on_ok_button1_clicked), NULL); g_signal_connect_swapped ((gpointer) cancel_button1, "clicked", G_CALLBACK (gtk_widget_destroy), GTK_OBJECT (imageselection1)); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (imageselection1, imageselection1, "imageselection1"); GLADE_HOOKUP_OBJECT_NO_REF (imageselection1, ok_button1, "ok_button1"); GLADE_HOOKUP_OBJECT_NO_REF (imageselection1, cancel_button1, "cancel_button1"); GLADE_HOOKUP_OBJECT_NO_REF (imageselection1, tooltips, "tooltips"); return imageselection1; } GtkWidget* create_image_win_1 (void) { GtkWidget *image_win_1; GtkWidget *vbox2; GtkWidget *hbox1; GtkWidget *load_image; GtkWidget *load_mesh; GtkWidget *save_mesh; GtkWidget *save_diff; GtkWidget *optionmenu_editview; GtkWidget *convertwidget11; GtkWidget *convertwidget12; GtkWidget *convertwidget13; GtkWidget *convertwidget14; GtkWidget *convertwidget15; GtkWidget *settings_button; GtkWidget *do_warp; GtkWidget *save_image; GtkWidget *back_to_guide; GtkWidget *scrolledwindow_image; GtkWidget *viewport3; GtkWidget *image_frame; GtkWidget *drawingarea; GtkWidget *label23; GtkWidget *handlebox_factors; GtkWidget *frame5; GtkWidget *table2; GtkWidget *label6; GtkWidget *label7; GtkWidget *hscale_mesh; GtkWidget *hscale_image; GtkObject *spinbutton_image_adj; GtkWidget *spinbutton_image; GtkObject *spinbutton_mesh_adj; GtkWidget *spinbutton_mesh; GtkWidget *label24; GtkWidget *handleboxsubimage; GtkWidget *frame1; GtkWidget *hbox2; GtkWidget *eyessubimage; GtkWidget *eventbox1; GtkWidget *label8; GtkObject *spinbuttonx_adj; GtkWidget *spinbuttonx; GtkWidget *eventbox2; GtkWidget *label9; GtkObject *spinbuttony_adj; GtkWidget *spinbuttony; GtkWidget *label10; GtkObject *spinbuttonw_adj; GtkWidget *spinbuttonw; GtkWidget *label11; GtkObject *spinbuttonh_adj; GtkWidget *spinbuttonh; GtkWidget *subimage_apply; GtkWidget *label25; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); image_win_1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (image_win_1, "image_win_1"); gtk_window_set_title (GTK_WINDOW (image_win_1), _("error!")); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox2, "vbox2"); gtk_widget_show (vbox2); gtk_container_add (GTK_CONTAINER (image_win_1), vbox2); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox1, "hbox1"); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0); load_image = gtk_button_new_with_mnemonic (_("load\nimage")); gtk_widget_set_name (load_image, "load_image"); gtk_widget_show (load_image); gtk_box_pack_start (GTK_BOX (hbox1), load_image, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (load_image), 4); load_mesh = gtk_button_new_with_mnemonic (_("load\nmesh")); gtk_widget_set_name (load_mesh, "load_mesh"); gtk_widget_show (load_mesh); gtk_box_pack_start (GTK_BOX (hbox1), load_mesh, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (load_mesh), 4); save_mesh = gtk_button_new_with_mnemonic (_("save\nmesh")); gtk_widget_set_name (save_mesh, "save_mesh"); gtk_widget_show (save_mesh); gtk_box_pack_start (GTK_BOX (hbox1), save_mesh, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (save_mesh), 4); save_diff = gtk_button_new_with_mnemonic (_("save\ndiff")); gtk_widget_set_name (save_diff, "save_diff"); gtk_widget_show (save_diff); gtk_box_pack_start (GTK_BOX (hbox1), save_diff, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (save_diff), 4); gtk_tooltips_set_tip (tooltips, save_diff, _("save difference from this mesh to other mesh"), NULL); optionmenu_editview = gtk_option_menu_new (); gtk_widget_set_name (optionmenu_editview, "optionmenu_editview"); gtk_widget_show (optionmenu_editview); gtk_box_pack_start (GTK_BOX (hbox1), optionmenu_editview, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (optionmenu_editview), 3); gtk_tooltips_set_tip (tooltips, optionmenu_editview, _("``edit mesh'': view the loaded image and edit the mesh on it. ``view warp'': view the result of warping the loaded image from this mesh to the resulting mesh. ``v. warp&meshes'' as before but with both meshes on. ``choose subimage'' choose which subimage of the loaded image you wish to use. You can also use the 'settings' button to change these settings more finely."), NULL); convertwidget11 = gtk_menu_new (); gtk_widget_set_name (convertwidget11, "convertwidget11"); convertwidget12 = gtk_menu_item_new_with_mnemonic (_("edit mesh")); gtk_widget_set_name (convertwidget12, "convertwidget12"); gtk_widget_show (convertwidget12); gtk_container_add (GTK_CONTAINER (convertwidget11), convertwidget12); convertwidget13 = gtk_menu_item_new_with_mnemonic (_("view warp")); gtk_widget_set_name (convertwidget13, "convertwidget13"); gtk_widget_show (convertwidget13); gtk_container_add (GTK_CONTAINER (convertwidget11), convertwidget13); convertwidget14 = gtk_menu_item_new_with_mnemonic (_("v. warp&meshes")); gtk_widget_set_name (convertwidget14, "convertwidget14"); gtk_widget_show (convertwidget14); gtk_container_add (GTK_CONTAINER (convertwidget11), convertwidget14); convertwidget15 = gtk_menu_item_new_with_mnemonic (_("choose subimage")); gtk_widget_set_name (convertwidget15, "convertwidget15"); gtk_widget_show (convertwidget15); gtk_container_add (GTK_CONTAINER (convertwidget11), convertwidget15); gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu_editview), convertwidget11); settings_button = gtk_button_new_with_mnemonic (_("settings")); gtk_widget_set_name (settings_button, "settings_button"); gtk_widget_show (settings_button); gtk_box_pack_start (GTK_BOX (hbox1), settings_button, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (settings_button), 4); do_warp = gtk_button_new_with_mnemonic (_("do\nwarp")); gtk_widget_set_name (do_warp, "do_warp"); gtk_widget_show (do_warp); gtk_box_pack_start (GTK_BOX (hbox1), do_warp, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (do_warp), 4); gtk_tooltips_set_tip (tooltips, do_warp, _("warp this image from this mesh to the resulting mesh, and show the result in this window or an accessory window"), NULL); save_image = gtk_button_new_with_mnemonic (_("save\nimage")); gtk_widget_set_name (save_image, "save_image"); gtk_widget_show (save_image); gtk_box_pack_start (GTK_BOX (hbox1), save_image, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (save_image), 4); gtk_tooltips_set_tip (tooltips, save_image, _("it saves whatever image is currently shown in the window"), NULL); back_to_guide = gtk_button_new_with_mnemonic (_("guide")); gtk_widget_set_name (back_to_guide, "back_to_guide"); gtk_widget_show (back_to_guide); gtk_box_pack_start (GTK_BOX (hbox1), back_to_guide, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (back_to_guide), 4); gtk_tooltips_set_tip (tooltips, back_to_guide, _("back to guide"), NULL); scrolledwindow_image = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow_image, "scrolledwindow_image"); gtk_widget_show (scrolledwindow_image); gtk_box_pack_start (GTK_BOX (vbox2), scrolledwindow_image, TRUE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS (scrolledwindow_image, GTK_CAN_FOCUS); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow_image), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport3 = gtk_viewport_new (NULL, NULL); gtk_widget_set_name (viewport3, "viewport3"); gtk_widget_show (viewport3); gtk_container_add (GTK_CONTAINER (scrolledwindow_image), viewport3); gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport3), GTK_SHADOW_ETCHED_OUT); image_frame = gtk_frame_new (NULL); gtk_widget_set_name (image_frame, "image_frame"); gtk_widget_show (image_frame); gtk_container_add (GTK_CONTAINER (viewport3), image_frame); drawingarea = gtk_drawing_area_new (); gtk_widget_set_name (drawingarea, "drawingarea"); gtk_widget_show (drawingarea); gtk_container_add (GTK_CONTAINER (image_frame), drawingarea); GTK_WIDGET_SET_FLAGS (drawingarea, GTK_CAN_FOCUS); GTK_WIDGET_SET_FLAGS (drawingarea, GTK_CAN_DEFAULT); gtk_widget_set_events (drawingarea, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); label23 = gtk_label_new (_("error")); gtk_widget_set_name (label23, "label23"); gtk_widget_show (label23); gtk_frame_set_label_widget (GTK_FRAME (image_frame), label23); handlebox_factors = gtk_handle_box_new (); gtk_widget_set_name (handlebox_factors, "handlebox_factors"); gtk_widget_show (handlebox_factors); gtk_box_pack_start (GTK_BOX (vbox2), handlebox_factors, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, handlebox_factors, _("these coefficents decide how much this image/mesh will influence the final morph"), NULL); frame5 = gtk_frame_new (NULL); gtk_widget_set_name (frame5, "frame5"); gtk_widget_show (frame5); gtk_container_add (GTK_CONTAINER (handlebox_factors), frame5); table2 = gtk_table_new (2, 3, FALSE); gtk_widget_set_name (table2, "table2"); gtk_widget_show (table2); gtk_container_add (GTK_CONTAINER (frame5), table2); gtk_container_set_border_width (GTK_CONTAINER (table2), 5); gtk_table_set_row_spacings (GTK_TABLE (table2), 5); gtk_table_set_col_spacings (GTK_TABLE (table2), 6); label6 = gtk_label_new (_("image\nblending")); gtk_widget_set_name (label6, "label6"); gtk_widget_show (label6); gtk_table_attach (GTK_TABLE (table2), label6, 0, 1, 1, 2, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_label_set_justify (GTK_LABEL (label6), GTK_JUSTIFY_CENTER); label7 = gtk_label_new (_("mesh\ninterp.")); gtk_widget_set_name (label7, "label7"); gtk_widget_show (label7); gtk_table_attach (GTK_TABLE (table2), label7, 0, 1, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_label_set_justify (GTK_LABEL (label7), GTK_JUSTIFY_CENTER); hscale_mesh = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (40, -100, 200, 1, 10, 10))); gtk_widget_set_name (hscale_mesh, "hscale_mesh"); gtk_widget_show (hscale_mesh); gtk_table_attach (GTK_TABLE (table2), hscale_mesh, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); GTK_WIDGET_UNSET_FLAGS (hscale_mesh, GTK_CAN_FOCUS); gtk_scale_set_value_pos (GTK_SCALE (hscale_mesh), GTK_POS_BOTTOM); gtk_scale_set_digits (GTK_SCALE (hscale_mesh), 0); gtk_range_set_update_policy (GTK_RANGE (hscale_mesh), GTK_UPDATE_DELAYED); hscale_image = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (20, -100, 200, 1, 10, 10))); gtk_widget_set_name (hscale_image, "hscale_image"); gtk_widget_show (hscale_image); gtk_table_attach (GTK_TABLE (table2), hscale_image, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); GTK_WIDGET_UNSET_FLAGS (hscale_image, GTK_CAN_FOCUS); gtk_scale_set_value_pos (GTK_SCALE (hscale_image), GTK_POS_BOTTOM); gtk_scale_set_digits (GTK_SCALE (hscale_image), 0); gtk_range_set_update_policy (GTK_RANGE (hscale_image), GTK_UPDATE_DELAYED); spinbutton_image_adj = gtk_adjustment_new (20, -100, 200, 1, 10, 10); spinbutton_image = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_image_adj), 1, 0); gtk_widget_set_name (spinbutton_image, "spinbutton_image"); gtk_widget_show (spinbutton_image); gtk_table_attach (GTK_TABLE (table2), spinbutton_image, 2, 3, 1, 2, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, spinbutton_image, _("when you morph the images, or you ``do mixing'', this factor will measure how much this image will show in the mixing in the resulting image"), NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_image), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbutton_image), GTK_UPDATE_IF_VALID); spinbutton_mesh_adj = gtk_adjustment_new (20, -100, 200, 1, 10, 10); spinbutton_mesh = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_mesh_adj), 1, 0); gtk_widget_set_name (spinbutton_mesh, "spinbutton_mesh"); gtk_widget_show (spinbutton_mesh); gtk_table_attach (GTK_TABLE (table2), spinbutton_mesh, 2, 3, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, spinbutton_mesh, _("when you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's mesh"), NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_mesh), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbutton_mesh), GTK_UPDATE_IF_VALID); label24 = gtk_label_new (_("coefficients")); gtk_widget_set_name (label24, "label24"); gtk_widget_show (label24); gtk_frame_set_label_widget (GTK_FRAME (frame5), label24); handleboxsubimage = gtk_handle_box_new (); gtk_widget_set_name (handleboxsubimage, "handleboxsubimage"); gtk_widget_show (handleboxsubimage); gtk_box_pack_start (GTK_BOX (vbox2), handleboxsubimage, FALSE, FALSE, 0); frame1 = gtk_frame_new (NULL); gtk_widget_set_name (frame1, "frame1"); gtk_widget_show (frame1); gtk_container_add (GTK_CONTAINER (handleboxsubimage), frame1); hbox2 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox2, "hbox2"); gtk_widget_show (hbox2); gtk_container_add (GTK_CONTAINER (frame1), hbox2); eyessubimage = gtk_button_new_with_mnemonic (_("reset")); gtk_widget_set_name (eyessubimage, "eyessubimage"); gtk_widget_show (eyessubimage); gtk_box_pack_start (GTK_BOX (hbox2), eyessubimage, FALSE, FALSE, 1); gtk_tooltips_set_tip (tooltips, eyessubimage, _("infer the subimage from the eyes position"), NULL); eventbox1 = gtk_event_box_new (); gtk_widget_set_name (eventbox1, "eventbox1"); gtk_widget_show (eventbox1); gtk_box_pack_start (GTK_BOX (hbox2), eventbox1, TRUE, TRUE, 2); gtk_tooltips_set_tip (tooltips, eventbox1, _("x coordinate of center"), NULL); label8 = gtk_label_new (_("c x")); gtk_widget_set_name (label8, "label8"); gtk_widget_show (label8); gtk_container_add (GTK_CONTAINER (eventbox1), label8); gtk_label_set_justify (GTK_LABEL (label8), GTK_JUSTIFY_CENTER); gtk_misc_set_alignment (GTK_MISC (label8), 0.75, 0.5); spinbuttonx_adj = gtk_adjustment_new (0, -4000, 4000, 1, 10, 10); spinbuttonx = gtk_spin_button_new (GTK_ADJUSTMENT (spinbuttonx_adj), 1, 0); gtk_widget_set_name (spinbuttonx, "spinbuttonx"); gtk_widget_show (spinbuttonx); gtk_box_pack_start (GTK_BOX (hbox2), spinbuttonx, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbuttonx), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbuttonx), GTK_UPDATE_IF_VALID); eventbox2 = gtk_event_box_new (); gtk_widget_set_name (eventbox2, "eventbox2"); gtk_widget_show (eventbox2); gtk_box_pack_start (GTK_BOX (hbox2), eventbox2, TRUE, TRUE, 2); gtk_tooltips_set_tip (tooltips, eventbox2, _("y coordinate of center"), NULL); label9 = gtk_label_new (_("c y")); gtk_widget_set_name (label9, "label9"); gtk_widget_show (label9); gtk_container_add (GTK_CONTAINER (eventbox2), label9); gtk_label_set_justify (GTK_LABEL (label9), GTK_JUSTIFY_CENTER); gtk_misc_set_alignment (GTK_MISC (label9), 0.75, 0.5); spinbuttony_adj = gtk_adjustment_new (0, -4000, 4000, 1, 10, 10); spinbuttony = gtk_spin_button_new (GTK_ADJUSTMENT (spinbuttony_adj), 1, 0); gtk_widget_set_name (spinbuttony, "spinbuttony"); gtk_widget_show (spinbuttony); gtk_box_pack_start (GTK_BOX (hbox2), spinbuttony, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbuttony), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbuttony), GTK_UPDATE_IF_VALID); label10 = gtk_label_new (_("width")); gtk_widget_set_name (label10, "label10"); gtk_widget_show (label10); gtk_box_pack_start (GTK_BOX (hbox2), label10, TRUE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (label10), GTK_JUSTIFY_CENTER); spinbuttonw_adj = gtk_adjustment_new (420, 8, 8000, 1, 100, 100); spinbuttonw = gtk_spin_button_new (GTK_ADJUSTMENT (spinbuttonw_adj), 1, 0); gtk_widget_set_name (spinbuttonw, "spinbuttonw"); gtk_widget_show (spinbuttonw); gtk_box_pack_start (GTK_BOX (hbox2), spinbuttonw, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbuttonw), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbuttonw), GTK_UPDATE_IF_VALID); label11 = gtk_label_new (_("height")); gtk_widget_set_name (label11, "label11"); gtk_widget_show (label11); gtk_box_pack_start (GTK_BOX (hbox2), label11, TRUE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (label11), GTK_JUSTIFY_CENTER); spinbuttonh_adj = gtk_adjustment_new (300, 8, 8000, 1, 100, 100); spinbuttonh = gtk_spin_button_new (GTK_ADJUSTMENT (spinbuttonh_adj), 1, 0); gtk_widget_set_name (spinbuttonh, "spinbuttonh"); gtk_widget_show (spinbuttonh); gtk_box_pack_start (GTK_BOX (hbox2), spinbuttonh, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbuttonh), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbuttonh), GTK_UPDATE_IF_VALID); subimage_apply = gtk_button_new_with_mnemonic (_("apply")); gtk_widget_set_name (subimage_apply, "subimage_apply"); gtk_widget_show (subimage_apply); gtk_box_pack_start (GTK_BOX (hbox2), subimage_apply, FALSE, FALSE, 7); gtk_container_set_border_width (GTK_CONTAINER (subimage_apply), 1); label25 = gtk_label_new (_("subimage position")); gtk_widget_set_name (label25, "label25"); gtk_widget_show (label25); gtk_frame_set_label_widget (GTK_FRAME (frame1), label25); g_signal_connect ((gpointer) image_win_1, "delete_event", G_CALLBACK (on_image_win_1_delete_event), NULL); g_signal_connect ((gpointer) load_image, "clicked", G_CALLBACK (on_loadimage_clicked), NULL); g_signal_connect ((gpointer) load_mesh, "clicked", G_CALLBACK (on_loadmesh_clicked), NULL); g_signal_connect ((gpointer) save_mesh, "clicked", G_CALLBACK (on_savemesh_clicked), NULL); g_signal_connect ((gpointer) save_diff, "clicked", G_CALLBACK (on_save_diff_clicked), NULL); g_signal_connect ((gpointer) settings_button, "clicked", G_CALLBACK (on_settings_clicked), NULL); g_signal_connect ((gpointer) do_warp, "clicked", G_CALLBACK (on_do_warp_clicked), NULL); g_signal_connect ((gpointer) save_image, "clicked", G_CALLBACK (on_save_image_clicked), NULL); g_signal_connect ((gpointer) back_to_guide, "clicked", G_CALLBACK (on_back_to_guide_activate), NULL); g_signal_connect ((gpointer) drawingarea, "motion_notify_event", G_CALLBACK (on_motion_notify_event), NULL); g_signal_connect ((gpointer) drawingarea, "button_press_event", G_CALLBACK (on_button_press_event), NULL); g_signal_connect ((gpointer) drawingarea, "expose_event", G_CALLBACK (on_expose_event), NULL); g_signal_connect ((gpointer) drawingarea, "realize", G_CALLBACK (on_drawingarea_realize), NULL); g_signal_connect ((gpointer) drawingarea, "button_release_event", G_CALLBACK (on_drawingarea_button_release_event), NULL); g_signal_connect ((gpointer) drawingarea, "key_press_event", G_CALLBACK (on_drawingarea_key_press_event), NULL); g_signal_connect_after ((gpointer) handlebox_factors, "show", G_CALLBACK (on_handlebox_factors_show), NULL); g_signal_connect ((gpointer) hscale_mesh, "value_changed", G_CALLBACK (on_hscale_mesh_changed), NULL); g_signal_connect ((gpointer) hscale_image, "value_changed", G_CALLBACK (on_hscale_image_changed), NULL); g_signal_connect ((gpointer) spinbutton_image, "value_changed", G_CALLBACK (on_spinbutton_image_changed), NULL); g_signal_connect ((gpointer) spinbutton_mesh, "value_changed", G_CALLBACK (on_spinbutton_mesh_changed), NULL); g_signal_connect_after ((gpointer) handleboxsubimage, "show", G_CALLBACK (on_handleboxsubimage_show), NULL); g_signal_connect ((gpointer) eyessubimage, "clicked", G_CALLBACK (on_reset_subimage_clicked), NULL); g_signal_connect ((gpointer) spinbuttonx, "value_changed", G_CALLBACK (on_spinbuttonx_changed), NULL); g_signal_connect ((gpointer) spinbuttony, "value_changed", G_CALLBACK (on_spinbuttony_changed), NULL); g_signal_connect ((gpointer) spinbuttonw, "value_changed", G_CALLBACK (on_spinbuttonw_changed), NULL); g_signal_connect ((gpointer) spinbuttonh, "value_changed", G_CALLBACK (on_spinbuttonh_changed), NULL); g_signal_connect ((gpointer) subimage_apply, "clicked", G_CALLBACK (on_subimage_apply_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (image_win_1, image_win_1, "image_win_1"); GLADE_HOOKUP_OBJECT (image_win_1, vbox2, "vbox2"); GLADE_HOOKUP_OBJECT (image_win_1, hbox1, "hbox1"); GLADE_HOOKUP_OBJECT (image_win_1, load_image, "load_image"); GLADE_HOOKUP_OBJECT (image_win_1, load_mesh, "load_mesh"); GLADE_HOOKUP_OBJECT (image_win_1, save_mesh, "save_mesh"); GLADE_HOOKUP_OBJECT (image_win_1, save_diff, "save_diff"); GLADE_HOOKUP_OBJECT (image_win_1, optionmenu_editview, "optionmenu_editview"); GLADE_HOOKUP_OBJECT (image_win_1, convertwidget11, "convertwidget11"); GLADE_HOOKUP_OBJECT (image_win_1, convertwidget12, "convertwidget12"); GLADE_HOOKUP_OBJECT (image_win_1, convertwidget13, "convertwidget13"); GLADE_HOOKUP_OBJECT (image_win_1, convertwidget14, "convertwidget14"); GLADE_HOOKUP_OBJECT (image_win_1, convertwidget15, "convertwidget15"); GLADE_HOOKUP_OBJECT (image_win_1, settings_button, "settings_button"); GLADE_HOOKUP_OBJECT (image_win_1, do_warp, "do_warp"); GLADE_HOOKUP_OBJECT (image_win_1, save_image, "save_image"); GLADE_HOOKUP_OBJECT (image_win_1, back_to_guide, "back_to_guide"); GLADE_HOOKUP_OBJECT (image_win_1, scrolledwindow_image, "scrolledwindow_image"); GLADE_HOOKUP_OBJECT (image_win_1, viewport3, "viewport3"); GLADE_HOOKUP_OBJECT (image_win_1, image_frame, "image_frame"); GLADE_HOOKUP_OBJECT (image_win_1, drawingarea, "drawingarea"); GLADE_HOOKUP_OBJECT (image_win_1, label23, "label23"); GLADE_HOOKUP_OBJECT (image_win_1, handlebox_factors, "handlebox_factors"); GLADE_HOOKUP_OBJECT (image_win_1, frame5, "frame5"); GLADE_HOOKUP_OBJECT (image_win_1, table2, "table2"); GLADE_HOOKUP_OBJECT (image_win_1, label6, "label6"); GLADE_HOOKUP_OBJECT (image_win_1, label7, "label7"); GLADE_HOOKUP_OBJECT (image_win_1, hscale_mesh, "hscale_mesh"); GLADE_HOOKUP_OBJECT (image_win_1, hscale_image, "hscale_image"); GLADE_HOOKUP_OBJECT (image_win_1, spinbutton_image, "spinbutton_image"); GLADE_HOOKUP_OBJECT (image_win_1, spinbutton_mesh, "spinbutton_mesh"); GLADE_HOOKUP_OBJECT (image_win_1, label24, "label24"); GLADE_HOOKUP_OBJECT (image_win_1, handleboxsubimage, "handleboxsubimage"); GLADE_HOOKUP_OBJECT (image_win_1, frame1, "frame1"); GLADE_HOOKUP_OBJECT (image_win_1, hbox2, "hbox2"); GLADE_HOOKUP_OBJECT (image_win_1, eyessubimage, "eyessubimage"); GLADE_HOOKUP_OBJECT (image_win_1, eventbox1, "eventbox1"); GLADE_HOOKUP_OBJECT (image_win_1, label8, "label8"); GLADE_HOOKUP_OBJECT (image_win_1, spinbuttonx, "spinbuttonx"); GLADE_HOOKUP_OBJECT (image_win_1, eventbox2, "eventbox2"); GLADE_HOOKUP_OBJECT (image_win_1, label9, "label9"); GLADE_HOOKUP_OBJECT (image_win_1, spinbuttony, "spinbuttony"); GLADE_HOOKUP_OBJECT (image_win_1, label10, "label10"); GLADE_HOOKUP_OBJECT (image_win_1, spinbuttonw, "spinbuttonw"); GLADE_HOOKUP_OBJECT (image_win_1, label11, "label11"); GLADE_HOOKUP_OBJECT (image_win_1, spinbuttonh, "spinbuttonh"); GLADE_HOOKUP_OBJECT (image_win_1, subimage_apply, "subimage_apply"); GLADE_HOOKUP_OBJECT (image_win_1, label25, "label25"); GLADE_HOOKUP_OBJECT_NO_REF (image_win_1, tooltips, "tooltips"); gtk_widget_grab_focus (drawingarea); gtk_widget_grab_default (drawingarea); return image_win_1; } GtkWidget* create_dialogwarning (void) { GtkWidget *dialogwarning; GtkWidget *dialog_vbox1; GtkWidget *labelwarning; GtkWidget *dialog_action_area1; GtkWidget *ok; dialogwarning = gtk_dialog_new (); gtk_widget_set_name (dialogwarning, "dialogwarning"); gtk_window_set_title (GTK_WINDOW (dialogwarning), _("warning")); gtk_window_set_type_hint (GTK_WINDOW (dialogwarning), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox1 = GTK_DIALOG (dialogwarning)->vbox; gtk_widget_set_name (dialog_vbox1, "dialog_vbox1"); gtk_widget_show (dialog_vbox1); labelwarning = gtk_label_new (_("warning!")); gtk_widget_set_name (labelwarning, "labelwarning"); gtk_widget_show (labelwarning); gtk_box_pack_start (GTK_BOX (dialog_vbox1), labelwarning, TRUE, TRUE, 0); gtk_label_set_line_wrap (GTK_LABEL (labelwarning), TRUE); dialog_action_area1 = GTK_DIALOG (dialogwarning)->action_area; gtk_widget_set_name (dialog_action_area1, "dialog_action_area1"); gtk_widget_show (dialog_action_area1); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END); ok = gtk_button_new_with_mnemonic (_("ok")); gtk_widget_set_name (ok, "ok"); gtk_widget_show (ok); gtk_dialog_add_action_widget (GTK_DIALOG (dialogwarning), ok, 0); gtk_container_set_border_width (GTK_CONTAINER (ok), 2); GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT); g_signal_connect ((gpointer) dialogwarning, "delete_event", G_CALLBACK (on_dialogwarning_delete_event), NULL); g_signal_connect ((gpointer) labelwarning, "show", G_CALLBACK (on_labelwarning_show), NULL); g_signal_connect ((gpointer) labelwarning, "realize", G_CALLBACK (on_labelwarning_realize), NULL); g_signal_connect_swapped ((gpointer) ok, "clicked", G_CALLBACK (gtk_widget_destroy), GTK_OBJECT (dialogwarning)); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (dialogwarning, dialogwarning, "dialogwarning"); GLADE_HOOKUP_OBJECT_NO_REF (dialogwarning, dialog_vbox1, "dialog_vbox1"); GLADE_HOOKUP_OBJECT (dialogwarning, labelwarning, "labelwarning"); GLADE_HOOKUP_OBJECT_NO_REF (dialogwarning, dialog_action_area1, "dialog_action_area1"); GLADE_HOOKUP_OBJECT (dialogwarning, ok, "ok"); gtk_widget_grab_focus (ok); gtk_widget_grab_default (ok); return dialogwarning; } GtkWidget* create_window_warped (void) { GtkWidget *window_warped; GtkWidget *warped_frame; GtkWidget *alignment1; GtkWidget *scrolledwindow6; GtkWidget *viewport5; GtkWidget *drawingarea_warped; GtkWidget *label27; window_warped = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (window_warped, "window_warped"); gtk_window_set_title (GTK_WINDOW (window_warped), _("warped image")); gtk_window_set_default_size (GTK_WINDOW (window_warped), 200, 200); warped_frame = gtk_frame_new (NULL); gtk_widget_set_name (warped_frame, "warped_frame"); gtk_widget_show (warped_frame); gtk_container_add (GTK_CONTAINER (window_warped), warped_frame); gtk_frame_set_shadow_type (GTK_FRAME (warped_frame), GTK_SHADOW_NONE); alignment1 = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_set_name (alignment1, "alignment1"); gtk_widget_show (alignment1); gtk_container_add (GTK_CONTAINER (warped_frame), alignment1); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment1), 0, 0, 12, 0); scrolledwindow6 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow6, "scrolledwindow6"); gtk_widget_show (scrolledwindow6); gtk_container_add (GTK_CONTAINER (alignment1), scrolledwindow6); GTK_WIDGET_UNSET_FLAGS (scrolledwindow6, GTK_CAN_FOCUS); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow6), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport5 = gtk_viewport_new (NULL, NULL); gtk_widget_set_name (viewport5, "viewport5"); gtk_widget_show (viewport5); gtk_container_add (GTK_CONTAINER (scrolledwindow6), viewport5); drawingarea_warped = gtk_drawing_area_new (); gtk_widget_set_name (drawingarea_warped, "drawingarea_warped"); gtk_widget_show (drawingarea_warped); gtk_container_add (GTK_CONTAINER (viewport5), drawingarea_warped); label27 = gtk_label_new (_("frame6")); gtk_widget_set_name (label27, "label27"); gtk_widget_show (label27); gtk_frame_set_label_widget (GTK_FRAME (warped_frame), label27); gtk_label_set_use_markup (GTK_LABEL (label27), TRUE); g_signal_connect ((gpointer) window_warped, "delete_event", G_CALLBACK (on_window_warped_delete_event), NULL); g_signal_connect ((gpointer) drawingarea_warped, "expose_event", G_CALLBACK (on_drawingarea_warped_expose_event), NULL); g_signal_connect ((gpointer) drawingarea_warped, "configure_event", G_CALLBACK (on_drawingarea_warped_configure_event), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (window_warped, window_warped, "window_warped"); GLADE_HOOKUP_OBJECT (window_warped, warped_frame, "warped_frame"); GLADE_HOOKUP_OBJECT (window_warped, alignment1, "alignment1"); GLADE_HOOKUP_OBJECT (window_warped, scrolledwindow6, "scrolledwindow6"); GLADE_HOOKUP_OBJECT (window_warped, viewport5, "viewport5"); GLADE_HOOKUP_OBJECT (window_warped, drawingarea_warped, "drawingarea_warped"); GLADE_HOOKUP_OBJECT (window_warped, label27, "label27"); return window_warped; } GtkWidget* create_menuEditMesh (void) { GtkWidget *menuEditMesh; GtkWidget *unselect_point; GtkWidget *select_point; GtkWidget *assign_point; GtkWidget *adjust; GtkWidget *separator5; GtkWidget *add_horizontal_line; GtkWidget *add_vertical_line; GtkWidget *del_horizontal_line; GtkWidget *del_vertical_line; GtkWidget *separator12; GtkWidget *smooth; GtkAccelGroup *accel_group; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); accel_group = gtk_accel_group_new (); menuEditMesh = gtk_menu_new (); gtk_widget_set_name (menuEditMesh, "menuEditMesh"); unselect_point = gtk_menu_item_new_with_mnemonic (_("unselect point")); gtk_widget_set_name (unselect_point, "unselect_point"); gtk_widget_show (unselect_point); gtk_container_add (GTK_CONTAINER (menuEditMesh), unselect_point); select_point = gtk_menu_item_new_with_mnemonic (_("select point")); gtk_widget_set_name (select_point, "select_point"); gtk_widget_show (select_point); gtk_container_add (GTK_CONTAINER (menuEditMesh), select_point); assign_point = gtk_menu_item_new_with_mnemonic (_("assign point")); gtk_widget_set_name (assign_point, "assign_point"); gtk_widget_show (assign_point); gtk_container_add (GTK_CONTAINER (menuEditMesh), assign_point); adjust = gtk_menu_item_new_with_mnemonic (_("adjust")); gtk_widget_set_name (adjust, "adjust"); gtk_widget_show (adjust); gtk_container_add (GTK_CONTAINER (menuEditMesh), adjust); gtk_tooltips_set_tip (tooltips, adjust, _("adjust mesh point position w.r.t. previous image"), NULL); separator5 = gtk_separator_menu_item_new (); gtk_widget_set_name (separator5, "separator5"); gtk_widget_show (separator5); gtk_container_add (GTK_CONTAINER (menuEditMesh), separator5); gtk_widget_set_sensitive (separator5, FALSE); add_horizontal_line = gtk_menu_item_new_with_mnemonic (_("add horizontal line")); gtk_widget_set_name (add_horizontal_line, "add_horizontal_line"); gtk_widget_show (add_horizontal_line); gtk_container_add (GTK_CONTAINER (menuEditMesh), add_horizontal_line); gtk_widget_add_accelerator (add_horizontal_line, "activate", accel_group, GDK_H, (GdkModifierType) 0, GTK_ACCEL_VISIBLE); add_vertical_line = gtk_menu_item_new_with_mnemonic (_("add vertical line")); gtk_widget_set_name (add_vertical_line, "add_vertical_line"); gtk_widget_show (add_vertical_line); gtk_container_add (GTK_CONTAINER (menuEditMesh), add_vertical_line); gtk_widget_add_accelerator (add_vertical_line, "activate", accel_group, GDK_V, (GdkModifierType) 0, GTK_ACCEL_VISIBLE); del_horizontal_line = gtk_menu_item_new_with_mnemonic (_("del horizontal line")); gtk_widget_set_name (del_horizontal_line, "del_horizontal_line"); gtk_widget_show (del_horizontal_line); gtk_container_add (GTK_CONTAINER (menuEditMesh), del_horizontal_line); gtk_widget_add_accelerator (del_horizontal_line, "activate", accel_group, GDK_H, (GdkModifierType) GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); del_vertical_line = gtk_menu_item_new_with_mnemonic (_("del vertical line")); gtk_widget_set_name (del_vertical_line, "del_vertical_line"); gtk_widget_show (del_vertical_line); gtk_container_add (GTK_CONTAINER (menuEditMesh), del_vertical_line); gtk_widget_add_accelerator (del_vertical_line, "activate", accel_group, GDK_V, (GdkModifierType) GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); separator12 = gtk_separator_menu_item_new (); gtk_widget_set_name (separator12, "separator12"); gtk_widget_show (separator12); gtk_container_add (GTK_CONTAINER (menuEditMesh), separator12); gtk_widget_set_sensitive (separator12, FALSE); smooth = gtk_menu_item_new_with_mnemonic (_("smooth")); gtk_widget_set_name (smooth, "smooth"); gtk_widget_show (smooth); gtk_container_add (GTK_CONTAINER (menuEditMesh), smooth); g_signal_connect ((gpointer) unselect_point, "activate", G_CALLBACK (on_unselect_point_activate), NULL); g_signal_connect ((gpointer) select_point, "activate", G_CALLBACK (on_select_point_activate), NULL); g_signal_connect ((gpointer) assign_point, "activate", G_CALLBACK (on_assign_point_activate), NULL); g_signal_connect ((gpointer) adjust, "activate", G_CALLBACK (on_adjust_activate), NULL); g_signal_connect ((gpointer) add_horizontal_line, "activate", G_CALLBACK (on_add_horizontal_line_activate), NULL); g_signal_connect ((gpointer) add_vertical_line, "activate", G_CALLBACK (on_add_vertical_line_activate), NULL); g_signal_connect ((gpointer) del_horizontal_line, "activate", G_CALLBACK (on_del_horizontal_line_activate), NULL); g_signal_connect ((gpointer) del_vertical_line, "activate", G_CALLBACK (on_del_vertical_line_activate), NULL); g_signal_connect ((gpointer) smooth, "activate", G_CALLBACK (on_menu_smooth_activate), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (menuEditMesh, menuEditMesh, "menuEditMesh"); GLADE_HOOKUP_OBJECT (menuEditMesh, unselect_point, "unselect_point"); GLADE_HOOKUP_OBJECT (menuEditMesh, select_point, "select_point"); GLADE_HOOKUP_OBJECT (menuEditMesh, assign_point, "assign_point"); GLADE_HOOKUP_OBJECT (menuEditMesh, adjust, "adjust"); GLADE_HOOKUP_OBJECT (menuEditMesh, separator5, "separator5"); GLADE_HOOKUP_OBJECT (menuEditMesh, add_horizontal_line, "add_horizontal_line"); GLADE_HOOKUP_OBJECT (menuEditMesh, add_vertical_line, "add_vertical_line"); GLADE_HOOKUP_OBJECT (menuEditMesh, del_horizontal_line, "del_horizontal_line"); GLADE_HOOKUP_OBJECT (menuEditMesh, del_vertical_line, "del_vertical_line"); GLADE_HOOKUP_OBJECT (menuEditMesh, separator12, "separator12"); GLADE_HOOKUP_OBJECT (menuEditMesh, smooth, "smooth"); GLADE_HOOKUP_OBJECT_NO_REF (menuEditMesh, tooltips, "tooltips"); gtk_menu_set_accel_group (GTK_MENU (menuEditMesh), accel_group); return menuEditMesh; } GtkWidget* create_window_movie (void) { GtkWidget *window_movie; GtkWidget *vbox4; GtkWidget *hbox11; GtkWidget *hbox5; GtkWidget *eventbox4; GtkWidget *label19; GtkObject *spinbutton_n_files_adj; GtkWidget *spinbutton_n_files; GtkWidget *pixmap2; GtkWidget *hbox6; GtkWidget *eventbox3; GtkWidget *label18; GtkObject *spinbutton_first_file_adj; GtkWidget *spinbutton_first_file; GtkWidget *hbox7; GtkWidget *labelfile; GtkWidget *file_base_name; GtkWidget *frame4; GtkWidget *table5; GtkWidget *animated_gif; GtkWidget *animate; GtkWidget *replay; GtkWidget *animated_mpeg; GtkWidget *avi; GtkWidget *information_label; GtkWidget *label26; GtkWidget *hbox8; GtkWidget *ok; GtkWidget *stop; GtkWidget *cancel; GtkWidget *help; GtkAccelGroup *accel_group; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); accel_group = gtk_accel_group_new (); window_movie = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (window_movie, "window_movie"); gtk_window_set_title (GTK_WINDOW (window_movie), _("gtkmorph movie")); vbox4 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox4, "vbox4"); gtk_widget_show (vbox4); gtk_container_add (GTK_CONTAINER (window_movie), vbox4); hbox11 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox11, "hbox11"); gtk_widget_show (hbox11); gtk_box_pack_start (GTK_BOX (vbox4), hbox11, TRUE, TRUE, 0); hbox5 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox5, "hbox5"); gtk_widget_show (hbox5); gtk_box_pack_start (GTK_BOX (hbox11), hbox5, TRUE, TRUE, 0); eventbox4 = gtk_event_box_new (); gtk_widget_set_name (eventbox4, "eventbox4"); gtk_widget_show (eventbox4); gtk_box_pack_start (GTK_BOX (hbox5), eventbox4, FALSE, FALSE, 4); gtk_tooltips_set_tip (tooltips, eventbox4, _("how many frames will be saved; each will be saved in a file"), NULL); label19 = gtk_label_new (_("how many frames")); gtk_widget_set_name (label19, "label19"); gtk_widget_show (label19); gtk_container_add (GTK_CONTAINER (eventbox4), label19); gtk_label_set_justify (GTK_LABEL (label19), GTK_JUSTIFY_CENTER); gtk_misc_set_alignment (GTK_MISC (label19), 0, 0.5); spinbutton_n_files_adj = gtk_adjustment_new (10, 2, 500, 1, 10, 10); spinbutton_n_files = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_n_files_adj), 1, 0); gtk_widget_set_name (spinbutton_n_files, "spinbutton_n_files"); gtk_widget_show (spinbutton_n_files); gtk_box_pack_start (GTK_BOX (hbox5), spinbutton_n_files, FALSE, TRUE, 3); pixmap2 = create_pixmap (window_movie, "howmany.xpm"); gtk_widget_set_name (pixmap2, "pixmap2"); gtk_widget_show (pixmap2); gtk_box_pack_start (GTK_BOX (hbox11), pixmap2, TRUE, TRUE, 0); hbox6 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox6, "hbox6"); gtk_widget_show (hbox6); gtk_box_pack_start (GTK_BOX (vbox4), hbox6, TRUE, TRUE, 5); eventbox3 = gtk_event_box_new (); gtk_widget_set_name (eventbox3, "eventbox3"); gtk_widget_show (eventbox3); gtk_box_pack_start (GTK_BOX (hbox6), eventbox3, FALSE, FALSE, 4); gtk_tooltips_set_tip (tooltips, eventbox3, _("the files of the frames will be numbered sequentially starting from this number"), NULL); label18 = gtk_label_new (_("number of first file")); gtk_widget_set_name (label18, "label18"); gtk_widget_show (label18); gtk_container_add (GTK_CONTAINER (eventbox3), label18); gtk_label_set_justify (GTK_LABEL (label18), GTK_JUSTIFY_CENTER); gtk_misc_set_alignment (GTK_MISC (label18), 0, 0.5); spinbutton_first_file_adj = gtk_adjustment_new (1, -2500, 2500, 1, 10, 10); spinbutton_first_file = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_first_file_adj), 1, 0); gtk_widget_set_name (spinbutton_first_file, "spinbutton_first_file"); gtk_widget_show (spinbutton_first_file); gtk_box_pack_start (GTK_BOX (hbox6), spinbutton_first_file, FALSE, FALSE, 4); hbox7 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox7, "hbox7"); gtk_widget_show (hbox7); gtk_box_pack_start (GTK_BOX (vbox4), hbox7, TRUE, TRUE, 4); labelfile = gtk_label_new (_("file base name")); gtk_widget_set_name (labelfile, "labelfile"); gtk_widget_show (labelfile); gtk_box_pack_start (GTK_BOX (hbox7), labelfile, FALSE, FALSE, 4); gtk_label_set_justify (GTK_LABEL (labelfile), GTK_JUSTIFY_CENTER); gtk_misc_set_alignment (GTK_MISC (labelfile), 0, 0.5); file_base_name = gtk_entry_new (); gtk_widget_set_name (file_base_name, "file_base_name"); gtk_widget_show (file_base_name); gtk_box_pack_start (GTK_BOX (hbox7), file_base_name, TRUE, TRUE, 3); gtk_entry_set_text (GTK_ENTRY (file_base_name), _("frame")); frame4 = gtk_frame_new (NULL); gtk_widget_set_name (frame4, "frame4"); gtk_widget_show (frame4); gtk_box_pack_start (GTK_BOX (vbox4), frame4, TRUE, TRUE, 2); table5 = gtk_table_new (3, 2, TRUE); gtk_widget_set_name (table5, "table5"); gtk_widget_show (table5); gtk_container_add (GTK_CONTAINER (frame4), table5); animated_gif = gtk_check_button_new_with_mnemonic (_("create animated gif")); gtk_widget_set_name (animated_gif, "animated_gif"); gtk_widget_show (animated_gif); gtk_table_attach (GTK_TABLE (table5), animated_gif, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, animated_gif, _("creates an animated gif (needs 'convert' from imagemagick) and plays it (needs 'animate' from imagemagick)"), NULL); animate = gtk_check_button_new_with_mnemonic (_("animate sequence")); gtk_widget_set_name (animate, "animate"); gtk_widget_show (animate); gtk_table_attach (GTK_TABLE (table5), animate, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, animate, _("show animated sequence after saving it all (on some platforms, it may need 'animate' command from imagemagick)"), NULL); replay = gtk_button_new_with_mnemonic (_("replay")); gtk_widget_set_name (replay, "replay"); gtk_widget_show (replay); gtk_table_attach (GTK_TABLE (table5), replay, 1, 2, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_container_set_border_width (GTK_CONTAINER (replay), 2); GTK_WIDGET_SET_FLAGS (replay, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, replay, _("resaves and replays animations"), NULL); animated_mpeg = gtk_check_button_new_with_mnemonic (_("creates mpeg")); gtk_widget_set_name (animated_mpeg, "animated_mpeg"); gtk_widget_show (animated_mpeg); gtk_table_attach (GTK_TABLE (table5), animated_mpeg, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, animated_mpeg, _("creates an mpeg file and plays it; will use a parameter file (see help) (needs 'mpeg_encode' and 'mpeg_play')"), NULL); avi = gtk_check_button_new_with_mnemonic (_("create AVI MPEG4")); gtk_widget_set_name (avi, "avi"); gtk_widget_show (avi); gtk_table_attach (GTK_TABLE (table5), avi, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, avi, _("creates an AVI file in MPEG4 format (needs 'mplayer' and 'mencoder')"), NULL); information_label = gtk_label_new (""); gtk_widget_set_name (information_label, "information_label"); gtk_widget_show (information_label); gtk_table_attach (GTK_TABLE (table5), information_label, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (information_label), 0, 0.5); label26 = gtk_label_new (_("animations")); gtk_widget_set_name (label26, "label26"); gtk_widget_show (label26); gtk_frame_set_label_widget (GTK_FRAME (frame4), label26); hbox8 = gtk_hbox_new (TRUE, 2); gtk_widget_set_name (hbox8, "hbox8"); gtk_widget_show (hbox8); gtk_box_pack_start (GTK_BOX (vbox4), hbox8, TRUE, TRUE, 6); ok = gtk_button_new_from_stock ("gtk-media-play"); gtk_widget_set_name (ok, "ok"); gtk_widget_show (ok); gtk_box_pack_start (GTK_BOX (hbox8), ok, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (ok), 2); GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, ok, _("creates and saves all morphs, builds animations"), NULL); gtk_widget_add_accelerator (ok, "clicked", accel_group, GDK_Return, (GdkModifierType) 0, GTK_ACCEL_VISIBLE); stop = gtk_button_new_from_stock ("gtk-stop"); gtk_widget_set_name (stop, "stop"); gtk_widget_show (stop); gtk_box_pack_start (GTK_BOX (hbox8), stop, FALSE, FALSE, 0); gtk_widget_set_sensitive (stop, FALSE); gtk_tooltips_set_tip (tooltips, stop, _("stops the computation of frames"), NULL); cancel = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_set_name (cancel, "cancel"); gtk_widget_show (cancel); gtk_box_pack_start (GTK_BOX (hbox8), cancel, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (cancel), 2); GTK_WIDGET_SET_FLAGS (cancel, GTK_CAN_DEFAULT); gtk_widget_add_accelerator (cancel, "clicked", accel_group, GDK_Escape, (GdkModifierType) 0, GTK_ACCEL_VISIBLE); help = gtk_button_new_from_stock ("gtk-help"); gtk_widget_set_name (help, "help"); gtk_widget_show (help); gtk_box_pack_start (GTK_BOX (hbox8), help, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (help), 2); GTK_WIDGET_SET_FLAGS (help, GTK_CAN_DEFAULT); gtk_widget_add_accelerator (help, "clicked", accel_group, GDK_Help, (GdkModifierType) 0, GTK_ACCEL_VISIBLE); g_signal_connect ((gpointer) replay, "clicked", G_CALLBACK (on_movie_replay_clicked), NULL); g_signal_connect ((gpointer) ok, "clicked", G_CALLBACK (on_movie_ok_clicked), NULL); g_signal_connect ((gpointer) stop, "clicked", G_CALLBACK (on_stop_clicked), NULL); g_signal_connect_swapped ((gpointer) cancel, "clicked", G_CALLBACK (gtk_widget_hide), GTK_OBJECT (window_movie)); g_signal_connect ((gpointer) help, "clicked", G_CALLBACK (on_movie_help_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (window_movie, window_movie, "window_movie"); GLADE_HOOKUP_OBJECT (window_movie, vbox4, "vbox4"); GLADE_HOOKUP_OBJECT (window_movie, hbox11, "hbox11"); GLADE_HOOKUP_OBJECT (window_movie, hbox5, "hbox5"); GLADE_HOOKUP_OBJECT (window_movie, eventbox4, "eventbox4"); GLADE_HOOKUP_OBJECT (window_movie, label19, "label19"); GLADE_HOOKUP_OBJECT (window_movie, spinbutton_n_files, "spinbutton_n_files"); GLADE_HOOKUP_OBJECT (window_movie, pixmap2, "pixmap2"); GLADE_HOOKUP_OBJECT (window_movie, hbox6, "hbox6"); GLADE_HOOKUP_OBJECT (window_movie, eventbox3, "eventbox3"); GLADE_HOOKUP_OBJECT (window_movie, label18, "label18"); GLADE_HOOKUP_OBJECT (window_movie, spinbutton_first_file, "spinbutton_first_file"); GLADE_HOOKUP_OBJECT (window_movie, hbox7, "hbox7"); GLADE_HOOKUP_OBJECT (window_movie, labelfile, "labelfile"); GLADE_HOOKUP_OBJECT (window_movie, file_base_name, "file_base_name"); GLADE_HOOKUP_OBJECT (window_movie, frame4, "frame4"); GLADE_HOOKUP_OBJECT (window_movie, table5, "table5"); GLADE_HOOKUP_OBJECT (window_movie, animated_gif, "animated_gif"); GLADE_HOOKUP_OBJECT (window_movie, animate, "animate"); GLADE_HOOKUP_OBJECT (window_movie, replay, "replay"); GLADE_HOOKUP_OBJECT (window_movie, animated_mpeg, "animated_mpeg"); GLADE_HOOKUP_OBJECT (window_movie, avi, "avi"); GLADE_HOOKUP_OBJECT (window_movie, information_label, "information_label"); GLADE_HOOKUP_OBJECT (window_movie, label26, "label26"); GLADE_HOOKUP_OBJECT (window_movie, hbox8, "hbox8"); GLADE_HOOKUP_OBJECT (window_movie, ok, "ok"); GLADE_HOOKUP_OBJECT (window_movie, stop, "stop"); GLADE_HOOKUP_OBJECT (window_movie, cancel, "cancel"); GLADE_HOOKUP_OBJECT (window_movie, help, "help"); GLADE_HOOKUP_OBJECT_NO_REF (window_movie, tooltips, "tooltips"); gtk_window_add_accel_group (GTK_WINDOW (window_movie), accel_group); return window_movie; } GtkWidget* create_guide (void) { GtkWidget *guide; GtkWidget *vbox5; GtkWidget *guide_pixmap; GtkWidget *scrolledwindow7; GtkWidget *text; GtkWidget *hbox9; GtkWidget *prev; GtkWidget *do_it; GtkWidget *next; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); guide = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (guide, "guide"); gtk_window_set_title (GTK_WINDOW (guide), _("gtkmorph guide")); vbox5 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox5, "vbox5"); gtk_widget_show (vbox5); gtk_container_add (GTK_CONTAINER (guide), vbox5); guide_pixmap = create_pixmap (guide, "example.xpm"); gtk_widget_set_name (guide_pixmap, "guide_pixmap"); gtk_widget_show (guide_pixmap); gtk_box_pack_start (GTK_BOX (vbox5), guide_pixmap, FALSE, TRUE, 0); scrolledwindow7 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow7, "scrolledwindow7"); gtk_widget_show (scrolledwindow7); gtk_box_pack_start (GTK_BOX (vbox5), scrolledwindow7, TRUE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS (scrolledwindow7, GTK_CAN_FOCUS); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow7), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow7), GTK_SHADOW_IN); text = gtk_text_view_new (); gtk_widget_set_name (text, "text"); gtk_widget_show (text); gtk_container_add (GTK_CONTAINER (scrolledwindow7), text); gtk_text_view_set_editable (GTK_TEXT_VIEW (text), FALSE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text), GTK_WRAP_WORD); hbox9 = gtk_hbox_new (TRUE, 0); gtk_widget_set_name (hbox9, "hbox9"); gtk_widget_show (hbox9); gtk_box_pack_start (GTK_BOX (vbox5), hbox9, FALSE, TRUE, 0); prev = gtk_button_new_with_mnemonic (_("prev")); gtk_widget_set_name (prev, "prev"); gtk_widget_show (prev); gtk_box_pack_start (GTK_BOX (hbox9), prev, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (prev), 2); gtk_tooltips_set_tip (tooltips, prev, _("go back to previous guide pane"), NULL); do_it = gtk_button_new_with_mnemonic (_("do it")); gtk_widget_set_name (do_it, "do_it"); gtk_widget_show (do_it); gtk_box_pack_start (GTK_BOX (hbox9), do_it, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (do_it), 2); gtk_tooltips_set_tip (tooltips, do_it, _("do what is proposed in this pane"), NULL); next = gtk_button_new_with_mnemonic (_("next")); gtk_widget_set_name (next, "next"); gtk_widget_show (next); gtk_box_pack_start (GTK_BOX (hbox9), next, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (next), 2); gtk_tooltips_set_tip (tooltips, next, _("skip this and go to next guide pane"), NULL); g_signal_connect ((gpointer) guide, "delete_event", G_CALLBACK (on_guide_delete_event), NULL); g_signal_connect ((gpointer) guide, "destroy", G_CALLBACK (on_guide_destroy), NULL); g_signal_connect ((gpointer) text, "expose_event", G_CALLBACK (on_guide_text_expose_event), NULL); g_signal_connect ((gpointer) prev, "clicked", G_CALLBACK (on_guide_prev_clicked), NULL); g_signal_connect ((gpointer) do_it, "clicked", G_CALLBACK (on_guide_do_it_clicked), NULL); g_signal_connect ((gpointer) next, "clicked", G_CALLBACK (on_guide_next_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (guide, guide, "guide"); GLADE_HOOKUP_OBJECT (guide, vbox5, "vbox5"); GLADE_HOOKUP_OBJECT (guide, guide_pixmap, "guide_pixmap"); GLADE_HOOKUP_OBJECT (guide, scrolledwindow7, "scrolledwindow7"); GLADE_HOOKUP_OBJECT (guide, text, "text"); GLADE_HOOKUP_OBJECT (guide, hbox9, "hbox9"); GLADE_HOOKUP_OBJECT (guide, prev, "prev"); GLADE_HOOKUP_OBJECT (guide, do_it, "do_it"); GLADE_HOOKUP_OBJECT (guide, next, "next"); GLADE_HOOKUP_OBJECT_NO_REF (guide, tooltips, "tooltips"); return guide; } GtkWidget* create_question (void) { GtkWidget *question; GtkWidget *dialog_vbox2; GtkWidget *questionlabel; GtkWidget *dialog_action_area2; GtkWidget *hbox10; GtkWidget *yes; GtkWidget *no; question = gtk_dialog_new (); gtk_widget_set_name (question, "question"); gtk_window_set_title (GTK_WINDOW (question), _("question")); gtk_window_set_type_hint (GTK_WINDOW (question), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox2 = GTK_DIALOG (question)->vbox; gtk_widget_set_name (dialog_vbox2, "dialog_vbox2"); gtk_widget_show (dialog_vbox2); questionlabel = gtk_label_new (_("question?")); gtk_widget_set_name (questionlabel, "questionlabel"); gtk_widget_show (questionlabel); gtk_box_pack_start (GTK_BOX (dialog_vbox2), questionlabel, TRUE, TRUE, 0); gtk_label_set_line_wrap (GTK_LABEL (questionlabel), TRUE); dialog_action_area2 = GTK_DIALOG (question)->action_area; gtk_widget_set_name (dialog_action_area2, "dialog_action_area2"); gtk_widget_show (dialog_action_area2); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_END); hbox10 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox10, "hbox10"); gtk_widget_show (hbox10); gtk_container_add (GTK_CONTAINER (dialog_action_area2), hbox10); yes = gtk_button_new_with_mnemonic (_("Yes")); gtk_widget_set_name (yes, "yes"); gtk_widget_show (yes); gtk_box_pack_start (GTK_BOX (hbox10), yes, TRUE, FALSE, 0); no = gtk_button_new_with_mnemonic (_("No")); gtk_widget_set_name (no, "no"); gtk_widget_show (no); gtk_box_pack_start (GTK_BOX (hbox10), no, TRUE, FALSE, 2); g_signal_connect ((gpointer) question, "delete_event", G_CALLBACK (on_question_delete_event), NULL); g_signal_connect ((gpointer) yes, "clicked", G_CALLBACK (on_yes_clicked), NULL); g_signal_connect ((gpointer) no, "clicked", G_CALLBACK (on_no_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (question, question, "question"); GLADE_HOOKUP_OBJECT_NO_REF (question, dialog_vbox2, "dialog_vbox2"); GLADE_HOOKUP_OBJECT (question, questionlabel, "questionlabel"); GLADE_HOOKUP_OBJECT_NO_REF (question, dialog_action_area2, "dialog_action_area2"); GLADE_HOOKUP_OBJECT (question, hbox10, "hbox10"); GLADE_HOOKUP_OBJECT (question, yes, "yes"); GLADE_HOOKUP_OBJECT (question, no, "no"); return question; } GtkWidget* create_colorselectiondialog (void) { GtkWidget *colorselectiondialog; GtkWidget *ok_button_color; GtkWidget *cancel_button_csd; GtkWidget *help_button1; GtkWidget *colorselection1; colorselectiondialog = gtk_color_selection_dialog_new (_("Select Color")); gtk_widget_set_name (colorselectiondialog, "colorselectiondialog"); gtk_container_set_border_width (GTK_CONTAINER (colorselectiondialog), 10); gtk_window_set_resizable (GTK_WINDOW (colorselectiondialog), FALSE); gtk_window_set_type_hint (GTK_WINDOW (colorselectiondialog), GDK_WINDOW_TYPE_HINT_DIALOG); ok_button_color = GTK_COLOR_SELECTION_DIALOG (colorselectiondialog)->ok_button; gtk_widget_set_name (ok_button_color, "ok_button_color"); gtk_widget_show (ok_button_color); GTK_WIDGET_SET_FLAGS (ok_button_color, GTK_CAN_DEFAULT); cancel_button_csd = GTK_COLOR_SELECTION_DIALOG (colorselectiondialog)->cancel_button; gtk_widget_set_name (cancel_button_csd, "cancel_button_csd"); gtk_widget_show (cancel_button_csd); GTK_WIDGET_SET_FLAGS (cancel_button_csd, GTK_CAN_DEFAULT); help_button1 = GTK_COLOR_SELECTION_DIALOG (colorselectiondialog)->help_button; gtk_widget_set_name (help_button1, "help_button1"); gtk_widget_show (help_button1); GTK_WIDGET_SET_FLAGS (help_button1, GTK_CAN_DEFAULT); colorselection1 = GTK_COLOR_SELECTION_DIALOG (colorselectiondialog)->colorsel; gtk_widget_set_name (colorselection1, "colorselection1"); gtk_widget_show (colorselection1); gtk_color_selection_set_has_opacity_control (GTK_COLOR_SELECTION (colorselection1), FALSE); g_signal_connect ((gpointer) ok_button_color, "clicked", G_CALLBACK (on_ok_button_color_clicked), NULL); g_signal_connect_swapped ((gpointer) cancel_button_csd, "clicked", G_CALLBACK (gtk_widget_destroy), GTK_OBJECT (colorselectiondialog)); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (colorselectiondialog, colorselectiondialog, "colorselectiondialog"); GLADE_HOOKUP_OBJECT_NO_REF (colorselectiondialog, ok_button_color, "ok_button_color"); GLADE_HOOKUP_OBJECT_NO_REF (colorselectiondialog, cancel_button_csd, "cancel_button_csd"); GLADE_HOOKUP_OBJECT_NO_REF (colorselectiondialog, help_button1, "help_button1"); GLADE_HOOKUP_OBJECT_NO_REF (colorselectiondialog, colorselection1, "colorselection1"); return colorselectiondialog; } GtkWidget* create_unused (void) { GtkWidget *unused; GtkWidget *vbox6; GtkWidget *handlebox_tools; GtkWidget *toolbar_image_tools; GtkIconSize tmp_toolbar_icon_size; GSList *tool_edit_group = NULL; GtkWidget *tmp_image; GtkWidget *tool_edit; GtkWidget *tool_move; GtkWidget *tool_stretch; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); unused = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (unused, "unused"); gtk_window_set_title (GTK_WINDOW (unused), _("window1")); vbox6 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox6, "vbox6"); gtk_widget_show (vbox6); gtk_container_add (GTK_CONTAINER (unused), vbox6); handlebox_tools = gtk_handle_box_new (); gtk_widget_set_name (handlebox_tools, "handlebox_tools"); gtk_widget_show (handlebox_tools); gtk_box_pack_start (GTK_BOX (vbox6), handlebox_tools, TRUE, TRUE, 0); gtk_handle_box_set_snap_edge (GTK_HANDLE_BOX (handlebox_tools), GTK_POS_BOTTOM); toolbar_image_tools = gtk_toolbar_new (); gtk_widget_set_name (toolbar_image_tools, "toolbar_image_tools"); gtk_widget_show (toolbar_image_tools); gtk_container_add (GTK_CONTAINER (handlebox_tools), toolbar_image_tools); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar_image_tools), GTK_TOOLBAR_BOTH); tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar_image_tools)); tool_edit = (GtkWidget*) gtk_radio_tool_button_new (NULL); gtk_tool_button_set_label (GTK_TOOL_BUTTON (tool_edit), _("edit")); tmp_image = create_pixmap (unused, "cursor_left.xpm"); gtk_widget_show (tmp_image); gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (tool_edit), tmp_image); gtk_widget_set_name (tool_edit, "tool_edit"); gtk_widget_show (tool_edit); gtk_container_add (GTK_CONTAINER (toolbar_image_tools), tool_edit); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (tool_edit), tooltips, _("move single point"), NULL); gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (tool_edit), tool_edit_group); tool_edit_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (tool_edit)); tool_move = (GtkWidget*) gtk_radio_tool_button_new (NULL); gtk_tool_button_set_label (GTK_TOOL_BUTTON (tool_move), _("move")); tmp_image = create_pixmap (unused, "hand01.xpm"); gtk_widget_show (tmp_image); gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (tool_move), tmp_image); gtk_widget_set_name (tool_move, "tool_move"); gtk_widget_show (tool_move); gtk_container_add (GTK_CONTAINER (toolbar_image_tools), tool_move); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (tool_move), tooltips, _("move whole feature"), NULL); gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (tool_move), tool_edit_group); tool_edit_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (tool_move)); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (tool_move), TRUE); tool_stretch = (GtkWidget*) gtk_radio_tool_button_new (NULL); gtk_tool_button_set_label (GTK_TOOL_BUTTON (tool_stretch), _("stretch")); tmp_image = create_pixmap (unused, "transform.xpm"); gtk_widget_show (tmp_image); gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (tool_stretch), tmp_image); gtk_widget_set_name (tool_stretch, "tool_stretch"); gtk_widget_show (tool_stretch); gtk_container_add (GTK_CONTAINER (toolbar_image_tools), tool_stretch); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (tool_stretch), tooltips, _("stretch whole feature"), NULL); gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (tool_stretch), tool_edit_group); tool_edit_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (tool_stretch)); g_signal_connect ((gpointer) tool_edit, "clicked", G_CALLBACK (on_tool_edit_clicked), NULL); g_signal_connect ((gpointer) tool_move, "clicked", G_CALLBACK (on_tool_move_clicked), NULL); g_signal_connect ((gpointer) tool_stretch, "clicked", G_CALLBACK (on_tool_stretch_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (unused, unused, "unused"); GLADE_HOOKUP_OBJECT (unused, vbox6, "vbox6"); GLADE_HOOKUP_OBJECT (unused, handlebox_tools, "handlebox_tools"); GLADE_HOOKUP_OBJECT (unused, toolbar_image_tools, "toolbar_image_tools"); GLADE_HOOKUP_OBJECT (unused, tool_edit, "tool_edit"); GLADE_HOOKUP_OBJECT (unused, tool_move, "tool_move"); GLADE_HOOKUP_OBJECT (unused, tool_stretch, "tool_stretch"); GLADE_HOOKUP_OBJECT_NO_REF (unused, tooltips, "tooltips"); return unused; } GtkWidget* create_mag (void) { GtkWidget *mag; GtkWidget *mag_vbox; GtkWidget *mag_hbox; GtkWidget *mag_label; GtkObject *mag_spinbutton_adj; GtkWidget *mag_spinbutton; GtkWidget *mag_track; GtkWidget *mag_drawingarea; mag = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (mag, "mag"); gtk_window_set_title (GTK_WINDOW (mag), _("gtkmorph mag")); gtk_window_set_default_size (GTK_WINDOW (mag), 200, 200); mag_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (mag_vbox, "mag_vbox"); gtk_widget_show (mag_vbox); gtk_container_add (GTK_CONTAINER (mag), mag_vbox); mag_hbox = gtk_hbox_new (TRUE, 0); gtk_widget_set_name (mag_hbox, "mag_hbox"); gtk_widget_show (mag_hbox); gtk_box_pack_start (GTK_BOX (mag_vbox), mag_hbox, FALSE, FALSE, 0); mag_label = gtk_label_new (_("1")); gtk_widget_set_name (mag_label, "mag_label"); gtk_widget_show (mag_label); gtk_box_pack_start (GTK_BOX (mag_hbox), mag_label, FALSE, FALSE, 0); mag_spinbutton_adj = gtk_adjustment_new (300, 50, 1000, 10, 50, 50); mag_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (mag_spinbutton_adj), 1, 0); gtk_widget_set_name (mag_spinbutton, "mag_spinbutton"); gtk_widget_show (mag_spinbutton); gtk_box_pack_start (GTK_BOX (mag_hbox), mag_spinbutton, TRUE, TRUE, 0); mag_track = gtk_check_button_new_with_mnemonic (_("track")); gtk_widget_set_name (mag_track, "mag_track"); gtk_widget_show (mag_track); gtk_box_pack_start (GTK_BOX (mag_hbox), mag_track, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mag_track), TRUE); mag_drawingarea = gtk_drawing_area_new (); gtk_widget_set_name (mag_drawingarea, "mag_drawingarea"); gtk_widget_show (mag_drawingarea); gtk_box_pack_start (GTK_BOX (mag_vbox), mag_drawingarea, TRUE, TRUE, 0); g_signal_connect ((gpointer) mag, "unrealize", G_CALLBACK (on_mag_unrealize), NULL); g_signal_connect ((gpointer) mag_spinbutton, "activate", G_CALLBACK (on_mag_spinbutton_activate), NULL); g_signal_connect ((gpointer) mag_spinbutton, "changed", G_CALLBACK (on_mag_spinbutton_changed), NULL); g_signal_connect ((gpointer) mag_track, "toggled", G_CALLBACK (on_mag_track_toggled), NULL); g_signal_connect ((gpointer) mag_drawingarea, "configure_event", G_CALLBACK (on_mag_drawingarea_configure_event), NULL); g_signal_connect ((gpointer) mag_drawingarea, "expose_event", G_CALLBACK (on_mag_drawingarea_expose_event), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (mag, mag, "mag"); GLADE_HOOKUP_OBJECT (mag, mag_vbox, "mag_vbox"); GLADE_HOOKUP_OBJECT (mag, mag_hbox, "mag_hbox"); GLADE_HOOKUP_OBJECT (mag, mag_label, "mag_label"); GLADE_HOOKUP_OBJECT (mag, mag_spinbutton, "mag_spinbutton"); GLADE_HOOKUP_OBJECT (mag, mag_track, "mag_track"); GLADE_HOOKUP_OBJECT (mag, mag_drawingarea, "mag_drawingarea"); return mag; } GtkWidget* create_diff_window (void) { GtkWidget *diff_window; GtkWidget *hbox12; GtkWidget *label28; GtkWidget *hscale_mesh; GtkObject *spinbutton_mesh_adj; GtkWidget *spinbutton_mesh; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); diff_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (diff_window, "diff_window"); gtk_window_set_title (GTK_WINDOW (diff_window), _("differential mesh")); gtk_window_set_default_size (GTK_WINDOW (diff_window), 300, -1); hbox12 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox12, "hbox12"); gtk_widget_show (hbox12); gtk_container_add (GTK_CONTAINER (diff_window), hbox12); label28 = gtk_label_new (_("mesh\ninterp.")); gtk_widget_set_name (label28, "label28"); gtk_widget_show (label28); gtk_box_pack_start (GTK_BOX (hbox12), label28, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (label28), GTK_JUSTIFY_CENTER); hscale_mesh = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -100, 100, 1, 10, 10))); gtk_widget_set_name (hscale_mesh, "hscale_mesh"); gtk_widget_show (hscale_mesh); gtk_box_pack_start (GTK_BOX (hbox12), hscale_mesh, TRUE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS (hscale_mesh, GTK_CAN_FOCUS); gtk_scale_set_value_pos (GTK_SCALE (hscale_mesh), GTK_POS_BOTTOM); gtk_scale_set_digits (GTK_SCALE (hscale_mesh), 0); gtk_range_set_update_policy (GTK_RANGE (hscale_mesh), GTK_UPDATE_DELAYED); spinbutton_mesh_adj = gtk_adjustment_new (0, -100, 100, 1, 10, 10); spinbutton_mesh = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_mesh_adj), 1, 0); gtk_widget_set_name (spinbutton_mesh, "spinbutton_mesh"); gtk_widget_show (spinbutton_mesh); gtk_box_pack_start (GTK_BOX (hbox12), spinbutton_mesh, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, spinbutton_mesh, _("when you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's mesh"), NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_mesh), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbutton_mesh), GTK_UPDATE_IF_VALID); g_signal_connect ((gpointer) diff_window, "delete_event", G_CALLBACK (on_diff_window_delete_event), NULL); g_signal_connect ((gpointer) hscale_mesh, "value_changed", G_CALLBACK (on_hscale_mesh_changed), NULL); g_signal_connect ((gpointer) spinbutton_mesh, "value_changed", G_CALLBACK (on_spinbutton_mesh_changed), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (diff_window, diff_window, "diff_window"); GLADE_HOOKUP_OBJECT (diff_window, hbox12, "hbox12"); GLADE_HOOKUP_OBJECT (diff_window, label28, "label28"); GLADE_HOOKUP_OBJECT (diff_window, hscale_mesh, "hscale_mesh"); GLADE_HOOKUP_OBJECT (diff_window, spinbutton_mesh, "spinbutton_mesh"); GLADE_HOOKUP_OBJECT_NO_REF (diff_window, tooltips, "tooltips"); return diff_window; } xmorph-20140707+nmu2/glade2/callbacks.c0000664000000000000000000005554412356304632014304 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include "callbacks.h" #include "interface.h" #include "support.h" gboolean on_window_main_delete (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_load_session_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_save_session_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_add_an_image_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_view_images1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_resulting_image_size_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_show_morph_factors_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_interpolate_meshes1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_morph_images1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_restore_morph_factors1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_restore_start_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_restore_end_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_store_morph_factors_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_store_start_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_store_end_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_morph_sequence1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_guide_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_generic_help_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_warp_help_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_morph_help_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_why_the_beep_1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_loadimage_clicked (GtkButton *button, gpointer user_data) { } void on_loadmesh_clicked (GtkButton *button, gpointer user_data) { } void on_savemesh_clicked (GtkButton *button, gpointer user_data) { } void on_optionmenu_editview_released (GtkButton *button, gpointer user_data) { } void on_optionmenu_editview_clicked (GtkButton *button, gpointer user_data) { } void on_settings_clicked (GtkButton *button, gpointer user_data) { } void on_do_mixing_clicked (GtkButton *button, gpointer user_data) { } void on_save_image_clicked (GtkButton *button, gpointer user_data) { } void on_back_to_guide_activate (GtkButton *button, gpointer user_data) { } void on_color_feature_clicked (GtkButton *button, gpointer user_data) { } gboolean on_drawingarea_color_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_combo_entry_feature_activate (GtkEntry *entry, gpointer user_data) { } void on_combo_entry_feature_changed (GtkEditable *editable, gpointer user_data) { } void on_new_feature_clicked (GtkButton *button, gpointer user_data) { } void on_rename_feature_clicked (GtkButton *button, gpointer user_data) { } void on_pack_feature_clicked (GtkButton *button, gpointer user_data) { } void on_unpack_feature_clicked (GtkButton *button, gpointer user_data) { } void on_delete_feature_clicked (GtkButton *button, gpointer user_data) { } void on_tool_edit_clicked (GtkButton *button, gpointer user_data) { } void on_tool_move_clicked (GtkButton *button, gpointer user_data) { } void on_tool_stretch_clicked (GtkButton *button, gpointer user_data) { } void on_tool_select_clicked (GtkButton *button, gpointer user_data) { } void on_tool_unselect_clicked (GtkButton *button, gpointer user_data) { } void on_tool_assign_clicked (GtkButton *button, gpointer user_data) { } void on_viewport3_realize (GtkWidget *widget, gpointer user_data) { } gboolean on_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data) { return FALSE; } gboolean on_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { return FALSE; } gboolean on_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_drawingarea_realize (GtkWidget *widget, gpointer user_data) { } gboolean on_drawingarea_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { return FALSE; } gboolean on_drawingarea_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { return FALSE; } gboolean on_spinbutton_reswidth_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } gboolean on_spinbutton_resheight_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_double_size_clicked (GtkButton *button, gpointer user_data) { } void on_halve_size_clicked (GtkButton *button, gpointer user_data) { } void on_resulting_apply_clicked (GtkButton *button, gpointer user_data) { } void on_ok_button1_realize (GtkWidget *widget, gpointer user_data) { } void on_ok_button1_clicked (GtkButton *button, gpointer user_data) { } gboolean on_image_win_1_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_optionmenu_editview_pressed (GtkButton *button, gpointer user_data) { } void on_do_warp_clicked (GtkButton *button, gpointer user_data) { } void on_handlebox_factors_show (GtkWidget *widget, gpointer user_data) { } gboolean on_hscale_mesh_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { return FALSE; } gboolean on_hscale_image_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { return FALSE; } void on_handleboxsubimage_show (GtkWidget *widget, gpointer user_data) { } void on_reset_subimage_clicked (GtkButton *button, gpointer user_data) { } /* void */ /* on_spinbuttonx_changed (GtkEditable *editable, */ /* gpointer user_data) */ /* { */ /* } */ gboolean on_spinbuttonx_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } /* void */ /* on_spinbuttony_changed (GtkEditable *editable, */ /* gpointer user_data) */ /* { */ /* } */ gboolean on_spinbuttony_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } /* void */ /* on_spinbuttonw_changed (GtkEditable *editable, */ /* gpointer user_data) */ /* { */ /* } */ gboolean on_spinbuttonw_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } /* void */ /* on_spinbuttonh_changed (GtkEditable *editable, */ /* gpointer user_data) */ /* { */ /* } */ gboolean on_spinbuttonh_draw (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_subimage_apply_clicked (GtkButton *button, gpointer user_data) { } gboolean on_dialogwarning_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_labelwarning_show (GtkWidget *widget, gpointer user_data) { } void on_labelwarning_realize (GtkWidget *widget, gpointer user_data) { } gboolean on_window_warped_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } gboolean on_drawingarea_warped_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } gboolean on_drawingarea_warped_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { return FALSE; } void on_unselect_point_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_select_point_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_assign_point_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_add_horizontal_line_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_add_vertical_line_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_del_horizontal_line_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_del_vertical_line_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_movie_replay_clicked (GtkButton *button, gpointer user_data) { } void on_movie_ok_clicked (GtkButton *button, gpointer user_data) { } void on_movie_help_clicked (GtkButton *button, gpointer user_data) { } gboolean on_guide_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_guide_destroy (GtkObject *object, gpointer user_data) { } gboolean on_guide_text_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_guide_prev_clicked (GtkButton *button, gpointer user_data) { } void on_guide_do_it_clicked (GtkButton *button, gpointer user_data) { } void on_guide_next_clicked (GtkButton *button, gpointer user_data) { } gboolean on_question_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_yes_clicked (GtkButton *button, gpointer user_data) { } void on_no_clicked (GtkButton *button, gpointer user_data) { } void on_ok_button_color_clicked (GtkButton *button, gpointer user_data) { } gboolean on_spinbuttonx_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } gboolean on_spinbuttony_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } gboolean on_spinbuttonw_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } gboolean on_spinbuttonh_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_spinbutton_reswidth_valuechanged (GtkSpinButton *spinbutton, gpointer user_data) { } void on_spinbutton_resheight_valuechanged (GtkSpinButton *spinbutton, gpointer user_data) { } void on_spinbutton_reswidth_changed (GtkSpinButton *spinbutton, gpointer user_data) { } void on_spinbutton_resheight_changed (GtkSpinButton *spinbutton, gpointer user_data) { } void on_mag_spinbutton_activate (GtkEntry *entry, gpointer user_data) { } void on_mag_track_toggled (GtkToggleButton *togglebutton, gpointer user_data) { } gboolean on_mag_drawingarea_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { return FALSE; } gboolean on_mag_drawingarea_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_show_mag_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_mag_unrealize (GtkWidget *widget, gpointer user_data) { } void on_mag_spinbutton_changed (GtkEditable *editable, gpointer user_data) { } void on_restore_equal_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_spinbuttonx_changed (GtkSpinButton *spinbutton, gpointer user_data) { } void on_spinbuttony_changed (GtkSpinButton *spinbutton, gpointer user_data) { } void on_spinbuttonw_changed (GtkSpinButton *spinbutton, gpointer user_data) { } void on_spinbuttonh_changed (GtkSpinButton *spinbutton, gpointer user_data) { } void on_adjust_all_meshes_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_adjust_activate (GtkMenuItem *menuitem, gpointer user_data) { } gboolean on_imageselection1_destroy_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_wavelet_equalize_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_menu_smooth_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_spinbutton_image_changed (GtkSpinButton *spinbutton, gpointer user_data) { } void on_spinbutton_mesh_changed (GtkSpinButton *spinbutton, gpointer user_data) { } void on_hscale_mesh_changed (GtkRange *range, gpointer user_data) { } void on_hscale_image_changed (GtkRange *range, gpointer user_data) { } gboolean on_drawingarea_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { return FALSE; } void on_feature_help_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_mesh_tips_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_stop_clicked (GtkButton *button, gpointer user_data) { } void on_add_a_difference_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_save_diff_clicked (GtkButton *button, gpointer user_data) { } gboolean on_diff_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_load_example_session_activate (GtkMenuItem *menuitem, gpointer user_data) { } xmorph-20140707+nmu2/glade2/Makefile.am0000664000000000000000000000054012356304632014237 0ustar ## Process this file with automake to produce Makefile.in if COND_GTKMORPH noinst_PROGRAMS = gtkmorph endif AM_CPPFLAGS = $(GTK_CFLAGS) -I../intl -DLOCALEDIR=\"$(localedir)\" -DDATADIR=\"$(datadir)\" gtkmorph_SOURCES = \ main.c \ support.c support.h \ interface.c interface.h \ callbacks.c callbacks.h gtkmorph_LDADD = $(GTK_LIBS) $(INTLLIBS) xmorph-20140707+nmu2/README.old0000664000000000000000000001452212356304633012510 0ustar following is the an excerpt of the old README that was written M.J.Gourlay; it is now obsolete, and is kept mostly for historical reasons A Mennucci ----------------------------------------------------------------------------- DISTRIBUTION I have occasionally found xmorph being distributed without my consent on CDROM's, (and on some CDROM's with my consent). I generally have no problem letting people distribute xmorph on CD, except that I want to have a copy of the CD for myself. Also, if I know about the CD, I can tell people to buy it, so it is to our mutual advantage to let me know about CD's with xmorph. Digital Equipment Corporation gives out their Multimedia Showcase CDROM for free to interested Digital UNIX Alpha users. If you own a DEC Alpha, I suppose that you can ask DEC for this CDROM. SGI distributes Xmorph on their Freeware CDROM and web site. If you have an SGI, look at http://freeware.sgi.com/ A major computer manufacturer distributes a very old (1996) version of Xmorph with their machines which is broken, buggy, and lacks several important features (such as the ability to use 24-bit displays). If you have been using the version that comes with some machines, then you might be wasting your time with crippled code, and my credibility of a programmer has been diminished. This is the sort of problem I want to avoid by having people who want to print CDROM's first consult with me to make sure they have the latest version or that they notify their users or customers about how to obtain new versions from me. Beware that versions released on CD are more than likely not the latest version, since CD's last forever but latest versions last for a few months. The place where I make official new releases of xmorph is at my web site and sometimes at the Open Group X11 FTP site with the rest of the X Window System contributed software. Look for xmorph in ftp.x.org (was export.lcs.mit.edu) in the contrib directory hierarchy, in the applications or graphics subdirectories: ftp://ftp.x.org/contrib/applications ftp://ftp.x.org/contrib/graphics The Open Group site is mirrored around the world. Please find the Open Group mirror most appropriate for you. There are several mirrors in Europe, and from what I am told, if you are in Europe, network delays calling Open Group directly are very bad, so look for a mirror local to you. NOTE: Since the X Window System FTP site changes its structure each time they make a new major release of the X Window System, the place where the latest xmorph can be found might change. I make a new release about twice a year, so if the version you find is much older than about six months, then it is probably not the latest version. A Linux version is being maintained and that version is kept at sunsite.unc.edu along with other Linux software for X, but their version is ancient. A direct source of the source code is through my home page. I put releases up at this location more often than anywhere else: http://www.colorado-research.com/~gourlay/ http://www.colorado-research.com/~gourlay/software/ http://www.colorado-research.com/~gourlay/software/Graphics/ http://www.colorado-research.com/~gourlay/software/Graphics/Xmorph/ DISPLAY HARDWARE NOTES Xmorph is designed to work on static gray 1-bit, pseudo-color 8-bit, and true-color 24-bit displays. If you are running on a static gray or pseudo-color display, the images that show up in the xmorph image panels are dithered (which makes them look grainy), but the images stored internally are full-color non-dithered, and the image files written by xmorph are full-color non-dithered. Do not let the relatively poor image quality of the dithered image panels concern you. They are only "schematic" images to let you manipulate the meshes. Remember that the xmorph graphical user interface is primarily used to manipulate meshes, not to display images. To view your morphs in full glory requires that you make an animation of your image sequence. Notes about color dithering: I have made the color dithering routines within xmorph somewhat generic, in the sense that you can choose the number of bits per channel that you want to use when creating the so-called ``dithering colormap''. Look in "diw_map.h". You can change the number of bits used to represent each of the channels red, green, and blue. It is generally believed that the human eye is most sensitive to green, and least sensitive to blue, so it makes sense to give more bits to green and fewer to blue. However, one could imagine that somebody could prefer to give more bits to another color, or whatever you want. Also, for 16-bit colormapped displays (which are becoming more common now), you could conceivably use up 8 bits or more for your colormap without worrying about interference with other programs. I would recommend using a RGB-332 dithering colormap in that case. Another thing: Some monochrome displays simulate PseudoColor by allowing the applications to have a colormap. This makes application programming more simple. The X server then has the responsibility of dithering from color to monochrome. Some such monochrome systems have a 4-bit PseudoColor simulation mode which could conceivably be used with xmorph, if some changes were made in the "dither_image" routine in "image_x.c". The colormap situation is easy to deal with: Just use 1 bit per channel to get an RGB-111 dithering colormap. tkmorph uses Tk PhotoImages to display images and the dithering is a built-in function that I have relatively little control over. However, the Tk PhotoImage dithering seems to be fast and clean so I'm more than satisfied with it. In any case, the displayed image is dithered but the actual images that are written to output files are not dithered, as in xmorph. WORLD WIDE WEB SITES The main Xmorph web site is at http://www.colorado-research.com/~gourlay/software/Graphics/Xmorph/ That site has source code, example images, meshes and morph movies. For xmorph animations see Andy Thaller's WWW home page at http://www.informatik.tu-muenchen.de/cgi-bin/nph-gateway/hphalle2/~thaller The old one was at this address: http://www.informatik.tu-muenchen.de/cgi-bin/nph-gateway/hphalle8/~thaller There is a weird morph on Bruno Boettcher's home page: http://erm6.u-strasbg.fr/~bboett/fr.index.html Please report to me if you have animations that are cool that you would like other people to see. xmorph-20140707+nmu2/autogen.sh0000775000000000000000000000167312356304633013057 0ustar #!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` DIE=0 (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`autoconf' installed." DIE=1 } (libtool --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`libtool' installed." DIE=1 } (gettext --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`gettext' installed." DIE=1 } (automake --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`automake' installed." DIE=1 } (aclocal --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: Missing \`aclocal'. The version of \`automake'" echo "installed doesn't appear recent enough." DIE=1 } if test "$DIE" -eq 1; then exit 1 fi test -e config.rpath || ln -sv /usr/share/gettext/config.rpath . autoreconf -i -s -I aclocal-gtk1.2 xmorph-20140707+nmu2/po/0000775000000000000000000000000012356343462011470 5ustar xmorph-20140707+nmu2/po/fr.po0000664000000000000000000022467612356342536012461 0ustar # French translation of xmorph. # Copyright (C) 2005 Free Software Foundation, Inc. # Christophe Masson , 2005. # msgid "" msgstr "" "Project-Id-Version: xmorph 1:20050408b\n" "Report-Msgid-Bugs-To: mennucc1@debian.org\n" "POT-Creation-Date: 2014-07-06 23:50+0200\n" "PO-Revision-Date: 2014-07-06 23:51+0200\n" "Last-Translator: Christophe Masson \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" #: glade2/support.c:90 glade2/support.c:114 glade1/support.c:121 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Fichier pixmap introuvabler : %s" #: glade2/interface.c:154 glade1/interface.c:141 po/gtkmorph.glade2.c:7 #: po/gtkmorph.glade.c:7 msgid "gtkmorph" msgstr "gtkmorph" #: glade2/interface.c:166 glade1/interface.c:160 po/gtkmorph.glade2.c:8 #: po/gtkmorph.glade.c:9 msgid "File" msgstr "Fichier" #: glade2/interface.c:175 gtkmorph/callbacks_main.c:181 glade1/interface.c:177 #: po/gtkmorph.glade2.c:9 po/gtkmorph.glade.c:10 msgid "load session" msgstr "Charger une session" #: glade2/interface.c:180 gtkmorph/callbacks_main.c:198 glade1/interface.c:185 #: po/gtkmorph.glade2.c:10 po/gtkmorph.glade.c:11 msgid "save session" msgstr "Sauvegarder la session" #: glade2/interface.c:191 glade1/interface.c:202 po/gtkmorph.glade2.c:11 #: po/gtkmorph.glade.c:12 msgid "add an image" msgstr "Ajouter une image" #: glade2/interface.c:196 po/gtkmorph.glade2.c:13 msgid "load a difference" msgstr "Charger un différentiel" #: glade2/interface.c:200 po/gtkmorph.glade2.c:12 msgid "" "load a \"differential mesh\", that is a mesh representing the difference of " "two meshes" msgstr "" "Charger un « maillage différentiel », c'est-à-dire un maillage représentant " "la différence entre deux maillages" #: glade2/interface.c:208 glade1/interface.c:219 po/gtkmorph.glade2.c:14 #: po/gtkmorph.glade.c:13 msgid "Quit" msgstr "Quitter" #: glade2/interface.c:216 glade1/interface.c:230 po/gtkmorph.glade2.c:15 #: po/gtkmorph.glade.c:14 msgid "Edit" msgstr "Édition" #: glade2/interface.c:225 glade1/interface.c:246 po/gtkmorph.glade2.c:16 #: po/gtkmorph.glade.c:15 msgid "show all images" msgstr "Montrer toutes les images" #: glade2/interface.c:230 glade1/interface.c:254 po/gtkmorph.glade2.c:17 #: po/gtkmorph.glade.c:16 msgid "show mag" msgstr "Afficher la loupe" #: glade2/interface.c:241 glade1/interface.c:271 po/gtkmorph.glade2.c:18 #: po/gtkmorph.glade.c:17 msgid "resulting image size..." msgstr "Taille de l'image finale..." #: glade2/interface.c:246 glade1/interface.c:279 po/gtkmorph.glade2.c:19 #: po/gtkmorph.glade.c:18 msgid "show morph factors" msgstr "Voir les coefficients de morphose" #: glade2/interface.c:251 glade1/interface.c:287 po/gtkmorph.glade2.c:20 #: po/gtkmorph.glade.c:19 msgid "Settings" msgstr "Préférences" #: glade2/interface.c:256 glade1/interface.c:295 po/gtkmorph.glade2.c:21 #: po/gtkmorph.glade.c:20 msgid "Morph" msgstr "Morphose" #: glade2/interface.c:265 glade1/interface.c:311 po/gtkmorph.glade2.c:23 #: po/gtkmorph.glade.c:22 msgid "interpolate meshes" msgstr "Interpoler les maillages" #: glade2/interface.c:269 glade1/interface.c:318 po/gtkmorph.glade2.c:22 #: po/gtkmorph.glade.c:21 msgid "" "the mesh of the resulting image is set to an interpolation of the input " "images' meshes, weighted by the ``mesh factors''" msgstr "" "Le maillage de l'image finale correspond à une interpolation des maillages " "des images d'entrée, pondérés par les « facteurs de maillage »." #: glade2/interface.c:271 glade1/interface.c:320 po/gtkmorph.glade2.c:25 #: po/gtkmorph.glade.c:24 msgid "morph images" msgstr "Transformer les images (morph)" #: glade2/interface.c:275 glade1/interface.c:327 po/gtkmorph.glade2.c:24 #: po/gtkmorph.glade.c:23 msgid "" "the input images are warped to the resulting mesh and blended using ``image " "blending factors'' as weights. It has the same effect as if you hit all the " "``do warp'' buttons and then you hit the ``do blending'' button" msgstr "" "Les images d'entrée sont déformées vers le maillage final et mélangées en " "les pondérant avec les « facteurs de mélange ». Ceci équivaut à presser tous " "les boutons « Exécuter la déformation » et ensuite presser « Mélanger »." #: glade2/interface.c:286 glade1/interface.c:341 po/gtkmorph.glade2.c:27 #: po/gtkmorph.glade.c:26 msgid "adjust all meshes" msgstr "Ajuster tous les maillages" #: glade2/interface.c:290 glade1/interface.c:348 po/gtkmorph.glade2.c:26 #: po/gtkmorph.glade.c:25 msgid "adjust points of meshes confronting original images and the morph" msgstr "" "Ajuster les noeuds des maillages en comparant les images originales et le " "\"\n" "\"résultat de la morphose" #: glade2/interface.c:292 glade1/interface.c:350 po/gtkmorph.glade2.c:29 #: po/gtkmorph.glade.c:28 msgid "wavelet equalize" msgstr "Égalisation par ondelettes" #: glade2/interface.c:296 glade1/interface.c:357 po/gtkmorph.glade2.c:28 #: po/gtkmorph.glade.c:27 msgid "" "equalize input images so that the subband of wavelet transform have the same " "energies" msgstr "" "Égaliser les images d'entrée de sorte que les sous-bandes de la transformée " "en ondelettes possèdent la même énergie" #: glade2/interface.c:304 glade1/interface.c:368 po/gtkmorph.glade2.c:30 #: po/gtkmorph.glade.c:29 msgid "restore morph coefficients..." msgstr "Restaurer les coefficients de morphose..." #: glade2/interface.c:313 glade2/interface.c:338 glade1/interface.c:384 #: glade1/interface.c:425 po/gtkmorph.glade2.c:31 po/gtkmorph.glade2.c:36 #: po/gtkmorph.glade.c:30 po/gtkmorph.glade.c:35 msgid "start" msgstr "Début" #: glade2/interface.c:318 glade2/interface.c:343 glade1/interface.c:392 #: glade1/interface.c:433 po/gtkmorph.glade2.c:32 po/gtkmorph.glade2.c:37 #: po/gtkmorph.glade.c:31 po/gtkmorph.glade.c:36 msgid "end" msgstr "Fin" #: glade2/interface.c:323 glade1/interface.c:400 po/gtkmorph.glade2.c:33 #: po/gtkmorph.glade.c:32 msgid "equal" msgstr "Égal" #: glade2/interface.c:328 glade1/interface.c:408 po/gtkmorph.glade2.c:35 #: po/gtkmorph.glade.c:34 msgid "store morph coefficients..." msgstr "Enregistrer les coefficients de morphose..." #: glade2/interface.c:332 glade1/interface.c:415 po/gtkmorph.glade2.c:34 #: po/gtkmorph.glade.c:33 msgid "" "stores internally the state of all mesh and image-blending factors (to make " "morph sequences)" msgstr "" "Sauvegarde en interne de l'état de tous les maillages et facteurs de mélange " "(pour générer des séquences de morphose)." #: glade2/interface.c:348 glade1/interface.c:441 po/gtkmorph.glade2.c:39 #: po/gtkmorph.glade.c:38 msgid "morph sequence" msgstr "Séquence de morphose" #: glade2/interface.c:352 glade1/interface.c:448 po/gtkmorph.glade2.c:38 #: po/gtkmorph.glade.c:37 msgid "" "create and save many morphs, equally spaced between the morph start and the " "morph end (that you have already stored with the above menu)" msgstr "" "Crée et sauvegarde de nombreuses morphoses, régulièrement espacées entre le " "début et la fin (que vous avez déjà sauvegardés avec le menu ci-dessus)." #: glade2/interface.c:360 glade1/interface.c:459 po/gtkmorph.glade2.c:40 #: po/gtkmorph.glade.c:39 po/gtkmorph.glade.c:191 msgid "Help" msgstr "Aide" #: glade2/interface.c:369 glade1/interface.c:475 po/gtkmorph.glade2.c:41 #: po/gtkmorph.glade.c:40 msgid "guide..." msgstr "Guide..." #: glade2/interface.c:374 po/gtkmorph.glade2.c:42 msgid "load example session" msgstr "Charger une session d'exemple" #: glade2/interface.c:385 glade1/interface.c:492 po/gtkmorph.glade2.c:43 #: po/gtkmorph.glade.c:41 msgid "help..." msgstr "Aide..." #: glade2/interface.c:394 glade1/interface.c:508 po/gtkmorph.glade2.c:44 #: po/gtkmorph.glade.c:42 msgid "generic help" msgstr "Aide générique" #: glade2/interface.c:399 glade1/interface.c:516 po/gtkmorph.glade2.c:45 #: po/gtkmorph.glade.c:43 msgid "warp help" msgstr "Aide à la déformation (warp)" #: glade2/interface.c:404 po/gtkmorph.glade2.c:46 msgid "mesh tips" msgstr "Astuces sur les maillages" #: glade2/interface.c:409 glade1/interface.c:524 po/gtkmorph.glade2.c:47 #: po/gtkmorph.glade.c:44 msgid "morph help" msgstr "Aide à la morphose" #: glade2/interface.c:414 po/gtkmorph.glade2.c:48 msgid "feature help" msgstr "Aide sur les caractéristiques" #: glade2/interface.c:425 glade1/interface.c:541 po/gtkmorph.glade2.c:49 #: po/gtkmorph.glade.c:45 msgid "why the beep?" msgstr "Pourquoi ce bip ?" #: glade2/interface.c:440 glade2/interface.c:1240 glade1/interface.c:565 #: glade1/interface.c:1342 po/gtkmorph.glade2.c:51 po/gtkmorph.glade2.c:108 #: po/gtkmorph.glade.c:47 po/gtkmorph.glade.c:105 msgid "" "load\n" "image" msgstr "" "Charger\n" "une image" #: glade2/interface.c:445 glade1/interface.c:573 po/gtkmorph.glade2.c:50 #: po/gtkmorph.glade.c:46 msgid "" "load the image. This image may not be warped or morphed, but it may help in " "setting the resulting mesh" msgstr "" "Charger une image. Celle-ci ne sera pas forcément déformée mais servira à " "déterminer le maillage final." #: glade2/interface.c:447 glade2/interface.c:1246 glade1/interface.c:575 #: glade1/interface.c:1351 po/gtkmorph.glade2.c:53 po/gtkmorph.glade2.c:110 #: po/gtkmorph.glade.c:49 po/gtkmorph.glade.c:107 msgid "" "load\n" "mesh" msgstr "" "Charger\n" "un maillage" #: glade2/interface.c:453 glade2/interface.c:1252 glade1/interface.c:584 #: glade1/interface.c:1360 po/gtkmorph.glade2.c:55 po/gtkmorph.glade2.c:112 #: po/gtkmorph.glade.c:51 po/gtkmorph.glade.c:109 msgid "" "save\n" "mesh" msgstr "" "Sauvegarder\n" "le maillage" #: glade2/interface.c:464 glade1/interface.c:601 po/gtkmorph.glade2.c:57 #: po/gtkmorph.glade.c:53 msgid "" "``edit template'': view the loaded image and edit the mesh on it. \\n ``view " "morphed'': view the result of morphing. ``v.morph&mesh'' as above but " "with the mesh. ``edit eyes points'' sets the reference position of the eyes" msgstr "" "« Modifier le modèle » : visualiser l'image chargée et modifier son " "maillage.\n" "« Voir la morphose » : visualiser le résultat de la morphose. « V. la " "morphose avec maillage » comme ci-dessus mais avec le maillage. « Modifier " "les points des yeux » positionne les points de référence des yeux" #: glade2/interface.c:469 glade1/interface.c:603 po/gtkmorph.glade2.c:58 #: po/gtkmorph.glade.c:54 msgid "edit template" msgstr "Modifier le modèle" #: glade2/interface.c:474 glade1/interface.c:606 po/gtkmorph.glade2.c:59 #: po/gtkmorph.glade.c:55 msgid "view morph" msgstr "Voir la morphose" #: glade2/interface.c:479 glade1/interface.c:609 po/gtkmorph.glade2.c:60 #: po/gtkmorph.glade.c:56 msgid "v morph&meshes" msgstr "V. la morphose avec maillage" #: glade2/interface.c:484 glade1/interface.c:612 po/gtkmorph.glade2.c:61 #: po/gtkmorph.glade.c:57 msgid "edit eyes points" msgstr "Modifier les « points des yeux »" #: glade2/interface.c:491 glade2/interface.c:1297 glade1/interface.c:617 #: glade1/interface.c:1393 po/gtkmorph.glade2.c:62 po/gtkmorph.glade2.c:122 #: po/gtkmorph.glade.c:58 po/gtkmorph.glade.c:116 msgid "settings" msgstr "Préférences" #: glade2/interface.c:497 glade1/interface.c:626 po/gtkmorph.glade2.c:64 #: po/gtkmorph.glade.c:60 msgid "" "interpol.\n" "meshes" msgstr "" "Interpoler\n" "les maillages" #: glade2/interface.c:502 glade1/interface.c:634 po/gtkmorph.glade2.c:63 #: po/gtkmorph.glade.c:59 msgid "" "set this mesh to be an interpolation of all other meshes, using ``mesh " "factors'' as weights" msgstr "" "Calculer ce maillage par interpolation de tous les autres, en appliquant " "comme poids les « coefficients de maillage »" #: glade2/interface.c:504 glade1/interface.c:636 po/gtkmorph.glade2.c:67 #: po/gtkmorph.glade.c:63 msgid "" "do\n" "blending" msgstr "Mélanger" #: glade2/interface.c:509 glade1/interface.c:644 po/gtkmorph.glade2.c:66 #: po/gtkmorph.glade.c:62 msgid "" "mix all the warped images in the ``resulting image'' using ``image blending " "factors'' as weights" msgstr "" "Mélanger toutes les images déformées en utilisant comme coefficients les " "« coefficients de mélange »" #: glade2/interface.c:511 glade1/interface.c:646 po/gtkmorph.glade2.c:70 #: po/gtkmorph.glade.c:66 msgid "" "do\n" "morph" msgstr "" "Exécuter la\n" "morphose" #: glade2/interface.c:516 glade1/interface.c:654 po/gtkmorph.glade2.c:69 #: po/gtkmorph.glade.c:65 msgid "" "the input images are warped to the resulting mesh and blended using ``image " "blending factors'' as weights. It has the same effect as if you hit all the " "``do warp'' buttons and then you hit the ``do blending'' button." msgstr "" "Les images d'entrées sont déformées vers le maillage final, et mélangées en " "les pondérant avec les « facteurs de mélange ». Ceci équivaut à presser tous " "les boutons « Exécuter la déformation » et presser ensuite « Mélanger »." #: glade2/interface.c:518 glade2/interface.c:1310 glade1/interface.c:656 #: glade1/interface.c:1412 po/gtkmorph.glade2.c:73 po/gtkmorph.glade2.c:127 #: po/gtkmorph.glade.c:69 po/gtkmorph.glade.c:121 msgid "" "save\n" "image" msgstr "" "Sauvegarder\n" "l'image" #: glade2/interface.c:523 glade2/interface.c:1315 glade1/interface.c:664 #: glade1/interface.c:1420 po/gtkmorph.glade2.c:72 po/gtkmorph.glade2.c:126 #: po/gtkmorph.glade.c:68 po/gtkmorph.glade.c:120 msgid "it saves whatever image is currently shown in the window" msgstr "Sauve l'image courante de la fenêtre" #: glade2/interface.c:525 glade2/interface.c:1317 glade1/interface.c:666 #: glade1/interface.c:1422 po/gtkmorph.glade2.c:76 po/gtkmorph.glade2.c:130 #: po/gtkmorph.glade.c:72 po/gtkmorph.glade.c:124 msgid "guide" msgstr "Guide" #: glade2/interface.c:530 glade2/interface.c:1322 glade1/interface.c:674 #: glade1/interface.c:1430 po/gtkmorph.glade2.c:75 po/gtkmorph.glade2.c:129 #: po/gtkmorph.glade.c:71 po/gtkmorph.glade.c:123 msgid "back to guide" msgstr "Retour au guide" #: glade2/interface.c:572 glade1/interface.c:734 po/gtkmorph.glade2.c:78 #: po/gtkmorph.glade.c:74 msgid "new" msgstr "Nouveau" #: glade2/interface.c:577 glade1/interface.c:742 po/gtkmorph.glade2.c:77 #: po/gtkmorph.glade.c:73 msgid "add new feature to the end of list" msgstr "Ajouter une nouvelle caractéristique à la fin de la liste" #: glade2/interface.c:579 glade1/interface.c:744 po/gtkmorph.glade2.c:79 #: po/gtkmorph.glade.c:75 msgid "rename" msgstr "Renommer" #: glade2/interface.c:585 glade1/interface.c:753 po/gtkmorph.glade2.c:81 #: po/gtkmorph.glade.c:77 msgid "pack" msgstr "Empaqueter" #: glade2/interface.c:590 glade1/interface.c:761 po/gtkmorph.glade2.c:80 #: po/gtkmorph.glade.c:76 msgid "pack the selected points in this feature" msgstr "Empaqueter les noeuds sélectionnés dans cette caractéristique" #: glade2/interface.c:592 glade1/interface.c:763 po/gtkmorph.glade2.c:83 #: po/gtkmorph.glade.c:79 msgid "unpack" msgstr "Dépaqueter" #: glade2/interface.c:597 glade1/interface.c:771 po/gtkmorph.glade2.c:82 #: po/gtkmorph.glade.c:78 msgid "unpack this feature and transforms all points of it to selected points" msgstr "Dépaqueter cette caractéristique et en sélectionne tous ses points" #: glade2/interface.c:599 glade1/interface.c:773 po/gtkmorph.glade2.c:85 #: po/gtkmorph.glade.c:81 msgid "delete" msgstr "Supprimer" #: glade2/interface.c:604 glade1/interface.c:781 po/gtkmorph.glade2.c:84 #: po/gtkmorph.glade.c:80 msgid "delete last feature" msgstr "Supprimer la dernière caractéristique" #: glade2/interface.c:614 glade2/interface.c:2508 glade1/interface.c:795 #: glade1/interface.c:2656 po/gtkmorph.glade2.c:87 po/gtkmorph.glade2.c:199 #: po/gtkmorph.glade.c:83 po/gtkmorph.glade.c:194 msgid "edit" msgstr "Modifier" #: glade2/interface.c:622 glade2/interface.c:2515 glade1/interface.c:796 #: glade1/interface.c:2657 po/gtkmorph.glade2.c:86 po/gtkmorph.glade2.c:198 #: po/gtkmorph.glade.c:82 po/gtkmorph.glade.c:193 msgid "move single point" msgstr "Déplacer un noeud" #: glade2/interface.c:628 glade2/interface.c:2520 glade1/interface.c:811 #: glade1/interface.c:2670 po/gtkmorph.glade2.c:89 po/gtkmorph.glade2.c:201 #: po/gtkmorph.glade.c:85 po/gtkmorph.glade.c:196 msgid "move" msgstr "Déplacer" #: glade2/interface.c:636 glade2/interface.c:2527 glade1/interface.c:812 #: glade1/interface.c:2671 po/gtkmorph.glade2.c:88 po/gtkmorph.glade2.c:200 #: po/gtkmorph.glade.c:84 po/gtkmorph.glade.c:195 msgid "move whole feature" msgstr "Déplacer l'ensemble de la caractéristique" #: glade2/interface.c:641 glade2/interface.c:2533 glade1/interface.c:826 #: glade1/interface.c:2685 po/gtkmorph.glade2.c:91 po/gtkmorph.glade2.c:203 #: po/gtkmorph.glade.c:87 po/gtkmorph.glade.c:198 msgid "stretch" msgstr "Étirer" #: glade2/interface.c:649 glade2/interface.c:2540 glade1/interface.c:827 #: glade1/interface.c:2686 po/gtkmorph.glade2.c:90 po/gtkmorph.glade2.c:202 #: po/gtkmorph.glade.c:86 po/gtkmorph.glade.c:197 msgid "stretch whole feature" msgstr "Étirer l'ensemble de la caractéristique" #: glade2/interface.c:658 glade1/interface.c:837 po/gtkmorph.glade2.c:92 #: po/gtkmorph.glade.c:88 msgid "-" msgstr "-" #: glade2/interface.c:665 glade1/interface.c:849 po/gtkmorph.glade2.c:93 #: po/gtkmorph.glade.c:89 msgid "select" msgstr "Sélectionner" #: glade2/interface.c:677 glade1/interface.c:864 po/gtkmorph.glade2.c:94 #: po/gtkmorph.glade.c:90 msgid "unselect" msgstr "Déselectionner" #: glade2/interface.c:689 glade1/interface.c:879 po/gtkmorph.glade2.c:96 #: po/gtkmorph.glade.c:92 msgid "assign" msgstr "Assigner" #: glade2/interface.c:697 glade1/interface.c:880 po/gtkmorph.glade2.c:95 #: po/gtkmorph.glade.c:91 msgid "assign point to feature" msgstr "Assigner un noeud à une caractéristique" #: glade2/interface.c:725 glade2/interface.c:1350 gtkmorph/dialogs.c:85 #: glade1/interface.c:908 glade1/interface.c:1450 po/gtkmorph.glade2.c:97 #: po/gtkmorph.glade2.c:131 po/gtkmorph.glade.c:93 po/gtkmorph.glade.c:125 msgid "error" msgstr "Erreur" #: glade2/interface.c:746 glade2/interface.c:1502 glade1/interface.c:951 #: glade1/interface.c:1660 po/gtkmorph.glade2.c:98 po/gtkmorph.glade2.c:146 #: po/gtkmorph.glade.c:95 po/gtkmorph.glade.c:141 msgid "width" msgstr "Largeur" #: glade2/interface.c:760 glade2/interface.c:1516 glade1/interface.c:971 #: glade1/interface.c:1678 po/gtkmorph.glade2.c:99 po/gtkmorph.glade2.c:147 #: po/gtkmorph.glade.c:96 po/gtkmorph.glade.c:142 msgid "height" msgstr "Hauteur" #: glade2/interface.c:774 glade1/interface.c:991 po/gtkmorph.glade2.c:100 #: po/gtkmorph.glade.c:97 msgid "x2" msgstr "x2" #: glade2/interface.c:780 glade1/interface.c:1000 po/gtkmorph.glade2.c:101 #: po/gtkmorph.glade.c:98 msgid "/2" msgstr "/2" #: glade2/interface.c:786 glade2/interface.c:1530 glade1/interface.c:1009 #: glade1/interface.c:1696 po/gtkmorph.glade2.c:102 po/gtkmorph.glade2.c:148 #: po/gtkmorph.glade.c:99 po/gtkmorph.glade.c:143 msgid "apply" msgstr "Appliquer" #: glade2/interface.c:792 glade1/interface.c:933 po/gtkmorph.glade2.c:103 #: po/gtkmorph.glade.c:94 msgid "resulting image size" msgstr "Taille de l'image finale" #: glade2/interface.c:797 po/gtkmorph.glade2.c:104 msgid "welcome" msgstr "Bienvenue" #: glade2/interface.c:1124 glade2/interface.c:1228 glade1/interface.c:1228 #: glade1/interface.c:1323 po/gtkmorph.glade2.c:105 po/gtkmorph.glade2.c:107 #: po/gtkmorph.glade.c:100 po/gtkmorph.glade.c:104 msgid "error!" msgstr "Erreur !" #: glade2/interface.c:1133 glade1/interface.c:1240 po/gtkmorph.glade2.c:106 #: po/gtkmorph.glade.c:101 msgid "load the selected image" msgstr "Charger l'image sélectionnée" #: glade2/interface.c:1258 po/gtkmorph.glade2.c:115 msgid "" "save\n" "diff" msgstr "" "Sauvegarder\n" "la différence" #: glade2/interface.c:1263 po/gtkmorph.glade2.c:114 msgid "save difference from this mesh to other mesh" msgstr "Sauvegarder la différence entre ce maillage et un autre maillage" #: glade2/interface.c:1270 glade1/interface.c:1377 po/gtkmorph.glade2.c:117 #: po/gtkmorph.glade.c:111 msgid "" "``edit mesh'': view the loaded image and edit the mesh on it. ``view " "warp'': view the result of warping the loaded image from this mesh to the " "resulting mesh. ``v. warp&meshes'' as before but with both " "meshes on. ``choose subimage'' choose which subimage of the " "loaded image you wish to use. You can also use the 'settings' " "button to change these settings more finely." msgstr "" "« Modifier le maillage » : visualiser l'image chargée et modifier son " "maillage. « Voir la déformation » : visualiser le résutat de la déformation " "de l'image chargée depuis ce maillage vers le maillage final. « ``V. " "déformation avec maillages » comme précédemment mais avec les deux " "maillages. « Choisir la sous-image » choisir quelle sous-image de l'image " "chargée vous voulez utiliser. Vous pouvez aussi utiliser le bouton " "« Préférences » pour modifier plus précisément les réglages." #: glade2/interface.c:1275 glade1/interface.c:1379 po/gtkmorph.glade2.c:118 #: po/gtkmorph.glade.c:112 msgid "edit mesh" msgstr "Modifier le maillage" #: glade2/interface.c:1280 glade1/interface.c:1382 po/gtkmorph.glade2.c:119 #: po/gtkmorph.glade.c:113 msgid "view warp" msgstr "Visualiser la déformation (warp)" #: glade2/interface.c:1285 glade1/interface.c:1385 po/gtkmorph.glade2.c:120 #: po/gtkmorph.glade.c:114 msgid "v. warp&meshes" msgstr "V. déformation et maillages" #: glade2/interface.c:1290 glade1/interface.c:1388 po/gtkmorph.glade2.c:121 #: po/gtkmorph.glade.c:115 msgid "choose subimage" msgstr "Définir une sous-image" #: glade2/interface.c:1303 glade1/interface.c:1402 po/gtkmorph.glade2.c:124 #: po/gtkmorph.glade.c:118 msgid "" "do\n" "warp" msgstr "Déformer (warp)" #: glade2/interface.c:1308 glade1/interface.c:1410 po/gtkmorph.glade2.c:123 #: po/gtkmorph.glade.c:117 msgid "" "warp this image from this mesh to the resulting mesh, and show the result in " "this window or an accessory window" msgstr "" "Déformer cette image depuis ce maillage vers le maillage final et visualiser " "le résultat dans cette fenêtre ou une fenêtre accessoire" #: glade2/interface.c:1359 glade1/interface.c:1476 po/gtkmorph.glade2.c:132 #: po/gtkmorph.glade.c:126 msgid "" "these coefficents decide how much this image/mesh will influence the final " "morph" msgstr "" "Ces coefficients déterminent le poids de cette image/ce maillage dans la " "morphose." #: glade2/interface.c:1374 glade1/interface.c:1497 po/gtkmorph.glade2.c:133 #: po/gtkmorph.glade.c:128 msgid "" "image\n" "blending" msgstr "" "Mélange\n" "d'image" #: glade2/interface.c:1382 glade2/interface.c:2670 glade1/interface.c:1507 #: po/gtkmorph.glade2.c:135 po/gtkmorph.glade2.c:208 po/gtkmorph.glade.c:130 msgid "" "mesh\n" "interp." msgstr "" "Interp.\n" "des maillages" #: glade2/interface.c:1419 glade1/interface.c:1553 po/gtkmorph.glade2.c:137 #: po/gtkmorph.glade.c:132 msgid "" "when you morph the images, or you ``do mixing'', this factor will measure " "how much this image will show in the mixing in the resulting image" msgstr "" "Lors d'une transformation ou d'un mélange, ce coefficient représentera le " "poids de cette image dans l'image finale." #: glade2/interface.c:1430 glade2/interface.c:2690 glade1/interface.c:1567 #: po/gtkmorph.glade2.c:138 po/gtkmorph.glade2.c:210 po/gtkmorph.glade.c:133 msgid "" "when you use the ``interpolate meshes'' function, the ``mesh factor'' " "measures how much this mesh will influence the resulting image's mesh" msgstr "" "Quand vous utilisez la fonction d' « interpolation de maillages », le " "« facteur de maillage » mesure le poids de ce maillage sur le maillage de " "l'image finale." #: glade2/interface.c:1434 glade1/interface.c:1478 po/gtkmorph.glade2.c:139 #: po/gtkmorph.glade.c:127 msgid "coefficients" msgstr "Coefficients" #: glade2/interface.c:1454 glade1/interface.c:1595 po/gtkmorph.glade2.c:141 #: po/gtkmorph.glade.c:136 msgid "reset" msgstr "Retour à l'état initial" #: glade2/interface.c:1458 glade1/interface.c:1602 po/gtkmorph.glade2.c:140 #: po/gtkmorph.glade.c:135 msgid "infer the subimage from the eyes position" msgstr "Déduire la sous-image de la position des yeux." #: glade2/interface.c:1464 glade1/interface.c:1611 po/gtkmorph.glade2.c:142 #: po/gtkmorph.glade.c:137 msgid "x coordinate of center" msgstr "Abscisse du centre" #: glade2/interface.c:1466 glade1/interface.c:1613 po/gtkmorph.glade2.c:143 #: po/gtkmorph.glade.c:138 msgid "c x" msgstr "c x" #: glade2/interface.c:1485 glade1/interface.c:1639 po/gtkmorph.glade2.c:144 #: po/gtkmorph.glade.c:139 msgid "y coordinate of center" msgstr "Ordonnée du centre" #: glade2/interface.c:1487 glade1/interface.c:1641 po/gtkmorph.glade2.c:145 #: po/gtkmorph.glade.c:140 msgid "c y" msgstr "c y" #: glade2/interface.c:1536 glade1/interface.c:1579 po/gtkmorph.glade2.c:149 #: po/gtkmorph.glade.c:134 msgid "subimage position" msgstr "Position de la sous-image" #: glade2/interface.c:1690 gtkmorph/dialogs.c:74 glade1/interface.c:1813 #: po/gtkmorph.glade2.c:150 po/gtkmorph.glade.c:144 msgid "warning" msgstr "Avertissement" #: glade2/interface.c:1697 glade1/interface.c:1824 po/gtkmorph.glade2.c:152 #: po/gtkmorph.glade.c:146 msgid "warning!" msgstr "Avertissement !" #: glade2/interface.c:1708 glade1/interface.c:1840 po/gtkmorph.glade2.c:151 #: po/gtkmorph.glade.c:145 msgid "ok" msgstr "OK" #: glade2/interface.c:1753 gtkmorph/utils.c:358 glade1/interface.c:1879 #: po/gtkmorph.glade2.c:153 po/gtkmorph.glade.c:147 msgid "warped image" msgstr "Image déformée" #: glade2/interface.c:1785 po/gtkmorph.glade2.c:154 msgid "frame6" msgstr "trame6" #: glade2/interface.c:1838 glade1/interface.c:1945 po/gtkmorph.glade2.c:155 #: po/gtkmorph.glade.c:148 msgid "unselect point" msgstr "Déselectionner un point" #: glade2/interface.c:1843 glade1/interface.c:1953 po/gtkmorph.glade2.c:156 #: po/gtkmorph.glade.c:149 msgid "select point" msgstr "Sélectionner un point" #: glade2/interface.c:1848 glade1/interface.c:1961 po/gtkmorph.glade2.c:157 #: po/gtkmorph.glade.c:150 msgid "assign point" msgstr "Assigner un point" #: glade2/interface.c:1853 glade1/interface.c:1969 po/gtkmorph.glade2.c:159 #: po/gtkmorph.glade.c:151 msgid "adjust" msgstr "Ajuster" #: glade2/interface.c:1857 po/gtkmorph.glade2.c:158 msgid "adjust mesh point position w.r.t. previous image" msgstr "Ajuster la position du noeud par rapport à l'image précédente" #: glade2/interface.c:1865 glade1/interface.c:1986 po/gtkmorph.glade2.c:160 #: po/gtkmorph.glade.c:152 msgid "add horizontal line" msgstr "Ajouter une ligne horizontale" #: glade2/interface.c:1873 glade1/interface.c:1997 po/gtkmorph.glade2.c:161 #: po/gtkmorph.glade.c:153 msgid "add vertical line" msgstr "Ajouter une ligne verticale" #: glade2/interface.c:1881 glade1/interface.c:2008 po/gtkmorph.glade2.c:162 #: po/gtkmorph.glade.c:154 msgid "del horizontal line" msgstr "Supprimer une ligne horizontale" #: glade2/interface.c:1889 glade1/interface.c:2019 po/gtkmorph.glade2.c:163 #: po/gtkmorph.glade.c:155 msgid "del vertical line" msgstr "Supprimer une ligne verticale" #: glade2/interface.c:1903 glade1/interface.c:2039 po/gtkmorph.glade2.c:164 #: po/gtkmorph.glade.c:156 msgid "smooth" msgstr "Lisser" #: glade2/interface.c:1999 glade1/interface.c:2120 po/gtkmorph.glade2.c:165 #: po/gtkmorph.glade.c:157 msgid "gtkmorph movie" msgstr "Animation gtkmorph" #: glade2/interface.c:2020 glade1/interface.c:2145 po/gtkmorph.glade2.c:166 #: po/gtkmorph.glade.c:158 msgid "how many frames will be saved; each will be saved in a file" msgstr "Combien de trames doivent être sauvegardées (un fichier par trame)" #: glade2/interface.c:2022 glade1/interface.c:2147 po/gtkmorph.glade2.c:167 #: po/gtkmorph.glade.c:159 msgid "how many frames" msgstr "Combien de trames" #: glade2/interface.c:2049 glade1/interface.c:2181 po/gtkmorph.glade2.c:168 #: po/gtkmorph.glade.c:160 msgid "" "the files of the frames will be numbered sequentially starting from this " "number" msgstr "" "Les fichiers contenant les trames seront numérotés séquentiellement depuis " "ce numéro." #: glade2/interface.c:2051 glade1/interface.c:2183 po/gtkmorph.glade2.c:169 #: po/gtkmorph.glade.c:161 msgid "number of first file" msgstr "Numéro du premier fichier" #: glade2/interface.c:2069 glade1/interface.c:2210 po/gtkmorph.glade2.c:170 #: po/gtkmorph.glade.c:162 msgid "file base name" msgstr "Racine (basename) du nom de fichier" #: glade2/interface.c:2080 glade1/interface.c:2226 po/gtkmorph.glade2.c:171 #: po/gtkmorph.glade.c:163 msgid "frame" msgstr "Trame" #: glade2/interface.c:2092 glade1/interface.c:2244 po/gtkmorph.glade2.c:173 #: po/gtkmorph.glade.c:166 msgid "create animated gif" msgstr "Créer une animation GIF" #: glade2/interface.c:2098 glade1/interface.c:2253 po/gtkmorph.glade2.c:172 #: po/gtkmorph.glade.c:165 msgid "" "creates an animated gif (needs 'convert' from imagemagick) and plays it " "(needs 'animate' from imagemagick)" msgstr "" "Crée un GIF animé (nécessite le programme « convert » du paquet imagemagick) " "et joue l'animation (nécessite le programme « animate » du paquet " "imagemagick)" #: glade2/interface.c:2100 glade1/interface.c:2255 po/gtkmorph.glade2.c:175 #: po/gtkmorph.glade.c:168 msgid "animate sequence" msgstr "Animer la séquence" #: glade2/interface.c:2106 po/gtkmorph.glade2.c:174 msgid "" "show animated sequence after saving it all (on some platforms, it may need " "'animate' command from imagemagick)" msgstr "" "Montrer la séquence animée après avoir tout sauvegardé (sur certaine " "architectures, nécessite la commande « animate » du paquet imagemagick)" #: glade2/interface.c:2108 glade1/interface.c:2266 po/gtkmorph.glade2.c:177 #: po/gtkmorph.glade.c:170 msgid "replay" msgstr "Rejouer" #: glade2/interface.c:2116 glade1/interface.c:2277 po/gtkmorph.glade2.c:176 #: po/gtkmorph.glade.c:169 msgid "resaves and replays animations" msgstr "Sauvegarde à nouveau et rejoue les animations" #: glade2/interface.c:2118 glade1/interface.c:2279 po/gtkmorph.glade2.c:179 #: po/gtkmorph.glade.c:172 msgid "creates mpeg" msgstr "Crée un fichier mpeg" #: glade2/interface.c:2124 glade1/interface.c:2288 po/gtkmorph.glade2.c:178 #: po/gtkmorph.glade.c:171 msgid "" "creates an mpeg file and plays it; will use a parameter file (see help) " "(needs 'mpeg_encode' and 'mpeg_play')" msgstr "" "Crée un fichier mpeg et le joue ; ceci utilisera un fichier de paramètres " "(voir l'aide) (nécessite « mpeg_encode » et « mpeg_play »)" #: glade2/interface.c:2126 po/gtkmorph.glade2.c:181 msgid "create AVI MPEG4" msgstr "Créer un fichier AVI MPEG4" #: glade2/interface.c:2132 po/gtkmorph.glade2.c:180 msgid "creates an AVI file in MPEG4 format (needs 'mplayer' and 'mencoder')" msgstr "" "\"Crée un fichier AVI au format MPEG4 (nécessite « mplayer » et « mencoder »)" #: glade2/interface.c:2142 glade1/interface.c:2228 po/gtkmorph.glade2.c:182 #: po/gtkmorph.glade.c:164 msgid "animations" msgstr "Animations" #: glade2/interface.c:2158 glade1/interface.c:2327 po/gtkmorph.glade2.c:183 #: po/gtkmorph.glade.c:173 msgid "creates and saves all morphs, builds animations" msgstr "Crée et sauvegarde toutes les morphoses, génère les animations" #: glade2/interface.c:2168 po/gtkmorph.glade2.c:184 msgid "stops the computation of frames" msgstr "Arrête le calcul des trames" #: glade2/interface.c:2261 glade1/interface.c:2397 po/gtkmorph.glade2.c:185 #: po/gtkmorph.glade.c:177 msgid "gtkmorph guide" msgstr "Guide de gtkmorph" #: glade2/interface.c:2293 glade1/interface.c:2440 po/gtkmorph.glade2.c:187 #: po/gtkmorph.glade.c:179 msgid "prev" msgstr "Précédent" #: glade2/interface.c:2298 glade1/interface.c:2448 po/gtkmorph.glade2.c:186 #: po/gtkmorph.glade.c:178 msgid "go back to previous guide pane" msgstr "Retour à la section précédente du guide." #: glade2/interface.c:2300 glade1/interface.c:2450 po/gtkmorph.glade2.c:189 #: po/gtkmorph.glade.c:181 msgid "do it" msgstr "Éxécuter" #: glade2/interface.c:2305 glade1/interface.c:2458 po/gtkmorph.glade2.c:188 #: po/gtkmorph.glade.c:180 msgid "do what is proposed in this pane" msgstr "Mettre en pratique ce qui est présenté dans cette section" #: glade2/interface.c:2307 glade1/interface.c:2460 po/gtkmorph.glade2.c:191 #: po/gtkmorph.glade.c:183 msgid "next" msgstr "Suivant" #: glade2/interface.c:2312 glade1/interface.c:2468 po/gtkmorph.glade2.c:190 #: po/gtkmorph.glade.c:182 msgid "skip this and go to next guide pane" msgstr "Sauter ceci et passer à la section suivante" #: glade2/interface.c:2361 glade1/interface.c:2508 po/gtkmorph.glade2.c:192 #: po/gtkmorph.glade.c:184 msgid "question" msgstr "Question" #: glade2/interface.c:2368 glade1/interface.c:2516 po/gtkmorph.glade2.c:195 #: po/gtkmorph.glade.c:187 msgid "question?" msgstr "Question ?" #: glade2/interface.c:2384 glade1/interface.c:2540 po/gtkmorph.glade2.c:193 #: po/gtkmorph.glade.c:185 msgid "Yes" msgstr "Oui" #: glade2/interface.c:2389 glade1/interface.c:2548 po/gtkmorph.glade2.c:194 #: po/gtkmorph.glade.c:186 msgid "No" msgstr "Non" #: glade2/interface.c:2425 glade1/interface.c:2577 po/gtkmorph.glade2.c:196 #: po/gtkmorph.glade.c:188 msgid "Select Color" msgstr "Sélectionner une couleur" #: glade2/interface.c:2487 glade1/interface.c:2625 po/gtkmorph.glade2.c:197 #: po/gtkmorph.glade.c:192 msgid "window1" msgstr "Fenêtre 1" #: glade2/interface.c:2581 glade1/interface.c:2723 po/gtkmorph.glade2.c:204 #: po/gtkmorph.glade.c:199 msgid "gtkmorph mag" msgstr "Loupe de gtkmorph" #: glade2/interface.c:2594 glade1/interface.c:2741 po/gtkmorph.glade2.c:205 #: po/gtkmorph.glade.c:200 msgid "1" msgstr "1" #: glade2/interface.c:2605 glade1/interface.c:2759 po/gtkmorph.glade2.c:206 #: po/gtkmorph.glade.c:201 msgid "track" msgstr "Pister" #: glade2/interface.c:2662 gtkmorph/utils2_c:6 po/gtkmorph.glade2.c:207 msgid "differential mesh" msgstr "Maillage différentiel" #: gtkmorph/settings.c:84 msgid "no warnings" msgstr "Pas d'avertissements" #: gtkmorph/settings.c:87 msgid "" "dont warn, just beep; warnings may be read with 'why the beep' in the 'help' " "menu" msgstr "" "Pas d'avertissements, seulement des alarmes sonores ; les avertissements " "seront décrits dans « Pourquoi ce bip » dans le menu « Aide »" #: gtkmorph/settings.c:91 msgid "edit features" msgstr "Modifier les caractéristiques" #: gtkmorph/settings.c:94 msgid "permits to add and delete mesh lines, edit features" msgstr "" "Permets d'ajouter et de supprimer des lignes de maillages, de modifier des " "caractéristiques" #: gtkmorph/settings.c:98 msgid "preserve border" msgstr "Conserver la frontière" #: gtkmorph/settings.c:101 msgid "border points of the mesh are forced to stay on the border of the image" msgstr "" "Les points situés sur la frontière sont maintenus sur le bord de l'image." #: gtkmorph/settings.c:105 msgid "hide unusable" msgstr "Cacher quand inutilisable" #: gtkmorph/settings.c:108 msgid "hide unusable widgets, instead of deactivating them" msgstr "Cacher les widgets inutilisables, au lieu de les désactiver" #: gtkmorph/settings.c:112 msgid "cursor jump" msgstr "Saut de curseur" #: gtkmorph/settings.c:115 msgid "moves the image to recenter the last edited point" msgstr "Centrer l'image sur le dernier point modifié" #: gtkmorph/settings.c:119 msgid "mesh cant overlap" msgstr "Les portions de maillage ne peuvent se chevaucher" #: gtkmorph/settings.c:122 msgid "" "a mesh point cannot enter in a neighbouring cell (this is currently not very " "well enforced)" msgstr "" "Un noeud du maillage ne peut pénétrer une maille voisine (ceci n'est pas " "correctement contrôlé actuellement)" #: gtkmorph/settings.c:126 msgid "use antialiasing warping" msgstr "Déforme en appliquant une méthode d'anticrénelage" #: gtkmorph/settings.c:129 msgid "" "choose antialiasing method that is used when warping: the lanczos kernels " "are slower, but are necessary if the images have fine or grained textures " "for animations" msgstr "" "Choisir la méthode d'anticrénelage à appliquer lors d'une déformation : les " "noyaux lanczos sont plus lents, mais nécessaires si les images possédent des " "textures fines ou granuleuses et/ou pour les animations." #: gtkmorph/settings.c:134 msgid "wavelet equalization" msgstr "Égalisation par ondelettes" #: gtkmorph/settings.c:137 msgid "" "the averaging of images will lose details; you may enable an enhancing " "algorithm (based on wavelets)" msgstr "" "Le moyennage des images entraînera des pertes ; vous pouvez améliorer le " "résultat par un algorithme adapté (basé sur les ondelettes)" #: gtkmorph/settings.c:141 msgid "wavelet depth" msgstr "Profondeur de décomposition des ondelettes" #: gtkmorph/settings.c:144 msgid "this is the depth of the wavelets" msgstr "Ceci est la profondeur de décomposition des ondelettes." #: gtkmorph/settings.c:149 msgid "energy for mesh smoothing" msgstr "Puissance du lissage du maillage" #: gtkmorph/settings.c:152 msgid "" "type of energy that is minimized to decide the position of the non-selected " "mesh points: thin plate energy is better but slower, to speed up use elastic " "energy when editing meshes" msgstr "" "Type d'énergie qui est minimisée pour décider de la position des noeuds non " "sélectionnés du maillage : une énergie en fin plateau est meilleure mais " "plus lente, pour gagner en vitesse utiliser une énergie élastique lors de la " "modification des maillages" #: gtkmorph/settings.c:156 msgid "auto point adjust" msgstr "Ajustement automatique des points" #: gtkmorph/settings.c:159 msgid "" "adjust the position of a mesh point by comparing this image with the " "previous one and doing a best match. Achieves sub-pixel precision but may " "move your point around erratically." msgstr "" "Ajuste la position d'un noeud du maillage en comparant cette image avec la " "précédente et en cherchant la meilleure correspondance. Permets d'obtenir " "une précsion de l'ordre du sous-pixel mais déplace les points de manière " "erratique." #: gtkmorph/settings.c:163 msgid "mesh factors sum to 1" msgstr "Somme des coefficients de maillage égale à 1" #: gtkmorph/settings.c:166 msgid "" "always force the mesh factors so that they sum to 1;\n" "(if not, they are internally renormalized before using)" msgstr "" "La somme des coefficients doit être égale à 1 (sinon, l'application les " "normalise avant utilisation)." #: gtkmorph/settings.c:170 msgid "image factors sum to 1" msgstr "Somme des poids des images égale à 1" #: gtkmorph/settings.c:173 msgid "" "always force the image factors so that they sum to 1;\n" "(if not, they are internally renormalized before using)" msgstr "" "La somme des coefficients doit être égale à 1 (sinon, l'application les " "normalise avant utilisation)." #: gtkmorph/settings.c:177 msgid "automatic mesh interpolation" msgstr "Interpolation automatique du maillage" #: gtkmorph/settings.c:180 msgid "" "automatically interpolates the resulting mesh when morphing (note that in " "this case you cannot edit it)" msgstr "" "Interpole automatiquement le maillage final lors d'une morphose (notez que " "dans ce cas vous ne pouvez le modifier)" #: gtkmorph/settings.c:184 msgid "automatic blending" msgstr "Mélange automatique" #: gtkmorph/settings.c:187 msgid "" "automatically blends the images when the image blending factors are changed" msgstr "" "mélange automatiquement les images quand les coefficients de mélange sont " "modifiés" #: gtkmorph/settings.c:191 msgid "mesh auto sync" msgstr "Synchronisation automatique des maillages" #: gtkmorph/settings.c:194 msgid "any change (add/del, label/unlabel) to a mesh is replicated" msgstr "" "Les changements (ajout/suppression, ajout d'étiquette/suppression " "d'étiquette) appliqués sur un maillage sont répliqués." #: gtkmorph/settings.c:198 msgid "warped image in other win" msgstr "Déformer l'image dans une autre fenêtre" #: gtkmorph/settings.c:201 msgid "put warped images in another window" msgstr "Afficher les images déformées dans une autre fenêtre" #: gtkmorph/settings.c:207 msgid "show warp after warp" msgstr "Montrer le résultat de la déformation" #: gtkmorph/settings.c:210 msgid "" "switch the input window(s) to the warped image after a warp (overridden by " "the above)" msgstr "" "Basculer de l'(des) image(s) d'entrée vers l'image déformée après une " "déformation (primé par ci-dessus)" #: gtkmorph/settings.c:273 msgid "preserve aspect ratio" msgstr "Conserver la géométrie" #: gtkmorph/settings.c:276 msgid "when loading an image, preserve aspect ratio" msgstr "Préserver la géométrie lors du chargement d'une image" #: gtkmorph/settings.c:280 msgid "dim image" msgstr "Tamiser l'image" #: gtkmorph/settings.c:287 msgid "view original mesh" msgstr "Voir le maillage initial" #: gtkmorph/settings.c:294 msgid "view original points" msgstr "Voir les noeuds initiaux" #: gtkmorph/settings.c:308 msgid "view warped mesh" msgstr "Voir le maillage déformé" #: gtkmorph/settings.c:315 msgid "view warped points" msgstr "Voir les points modifiés" #: gtkmorph/settings.c:329 msgid "view eyes" msgstr "Voir les points des yeux" #: gtkmorph/settings.c:343 msgid "mesh is readonly" msgstr "Maillage en lecture seule" #: gtkmorph/settings.c:383 msgid "disable" msgstr "Désactiver" #: gtkmorph/settings.c:416 msgid "show mesh difference to..." msgstr "Afficher la différence de maillage avec..." #: gtkmorph/settings.c:418 msgid "show difference between this mesh and another mesh, as white arrows" msgstr "" "Montrer les différences entre ce maillage et un autre par des flèches " "blanches" #: gtkmorph/utils2_c:14 msgid "resulting image" msgstr "Image finale" #: gtkmorph/utils2_c:19 gtkmorph/utils.c:350 msgid "input image" msgstr "Image d'entrée" #: gtkmorph/feature.c:201 msgid "(unavailable feature name)" msgstr "Nom de caractéristique inconnu" #: gtkmorph/feature.c:366 gtkmorph/feature.c:386 msgid "feature" msgstr "Caractéristique" #: gtkmorph/feature.c:504 msgid "sorry this functions is as yet unimplemented" msgstr "Désolé, cette fonction n'est pas implantée pour l'instant." #: gtkmorph/guide_text.c:20 msgid "-Introduction" msgstr "-Introduction" #: gtkmorph/guide_text.c:22 msgid "" " Welcome to GtkMorph\n" "\n" "GtkMorph is a powerful program that permits you to warp or morph images.\n" "\n" " Using this guide.\n" "\n" "Hit 'next' to skip a topic, or 'do it' to do it; when you have done a topic, " "hit 'Guide' in the main window to come back to the guide.\n" "(Note that, when you hit 'do it', the guide will iconify and deiconify other " "windows to highlight your task: with some dumb window managers, this will " "not work ok).\n" " If you are not satisfied by the way you have complied with the guide " "requests, hit 'prev' and 'do it' to retry the task.\n" "As a first task, you may get acquainted with the main gtkmorph window: if " "you want to give it a look, hit 'do it': the main window will pop up! Note " "that, if you keep the mouse still on a menu voice or on a button for a " "moment, a tip shows up. When you are done, hit 'Guide' to come back to the " "guide.\n" "If you know the program main window, simply hit 'next'.\n" "\n" "If you are fed up with the guide, you may stop it at any time by closing " "this window: the normal gtkmorph program will pop up.\n" "\n" "If you want to test the program, you may want to load the example session:" "look into the 'Help' menu." msgstr "" " Bienvenue dans GtkMorph\n" "\n" "GtkMorph est un puissant programme permettant de déformer (warp) des images " "ou d'effectuer des morphoses (morph).\n" "\n" " Utilisation du guide.\n" "\n" "Pressez « Suivant » pour sauter un sujet ou « Exécuter » pour mettre en " "pratique ; quand vous avez parcouru un sujet, pressez « Guide » dans la " "fenêtre principale pour revenir au guide.\n" "Notez que, quand vous pressez « Exécuter », le guide sera réduit et les " "autres fenêtres seront restaurées pour mettre en avant votre travail : ceci " "ne fonctionnera pas correctement avec certains mauvais gestionnaires de " "fenêtre.\n" "Si vous n'êtes pas satisfait de la façon dont vous avez exécuté les " "instructions du guide, pressez « Précédent » puis « Exécuter » pour " "recommencer l'exercice.\n" "Lors du premier exercice, vous ferez connaissance avec la fenêtre principale " "de gtkmorph : si vous voulez la visualiser, tapez « Exécuter » : la fenêtre " "principale apparaîtra ! Notez que, si vous maintenez la souris sur un menu " "ou un bouton suffisamment longtemps, une bulle d'aide apparaîtra. Quand vous " "avez terminé, pressez « Guide » pour revenir au guide.\n" "Si vous connaissez déjà la fenêtre principale de gtkmorph, pressez « Suivant " "».\n" "\n" "Vous pouvez quitter le guide à tout moment en fermant cette fenêtre : le " "programme gtkmorph réapparaîtra.\n" "Si vous voulez tester le programme, vous pouvez charger la session " "d'exemple : voir le menu « Aide »." #: gtkmorph/guide_text.c:48 msgid "-Select subimage size" msgstr "-Choisir la taille de la sous-image" #: gtkmorph/guide_text.c:50 msgid "" "Now you select the size that the output image(s) will have. To this end, in " "the lower part of the main window, there is a pair of spins; select your " "preferred size and hit 'apply'.\n" "After that, you will be brought back to the guide.\n" "You may change the size again by selecting 'resulting size...' in the Edit " "menu." msgstr "" "Maintenant, sélectionnez la taille de l'(des) image(s) de sortie. Pour cela, " "vous disposez de deux flèches dans la partie basse de la fenêtre ; " "sélectionnez la taille souhaitée et pressez « Appliquer ».\n" "Alors, vous serez de retour dans le guide.\n" "Vous pourrez modifier à nouveau la taille en sélectionnant « Taille " "finale... » dans le menu « Édition »." #: gtkmorph/guide_text.c:57 msgid "-Morph or warp" msgstr "-Effectuer une morphose (morph) ou déformer (warp)" #: gtkmorph/guide_text.c:59 msgid "" "You may `warp' or `morph'.\n" "\n" "'Warp' means 'to deform, contort, distort, wring, bend, or otherwise " "twist'.\n" "If you have one single input image and you want to make a distortion of it, " "then you want to warp it. In this case, hit 'next'\n" "\n" "'Morphing' images instead means 'blending together warped versions of the " "images'. So to morph you need two or more input images.\n" "In this case, press 'do it', and, in the File menu, choose 'add image' as " "many times as to reach the required number of input images, then hit 'Guide' " "in the main window.\n" "\n" "Note that at startup the program is set for ``warping'': there is only one " "input image." msgstr "" "Vous pouvez déformer (warp) une image ou effectuer une morphose (morph).\n" "\n" "« warp » signifie déformer, tordre, distordre...\n" "Si vous ne disposez que d'une seule image d'entrée, vous souhaitez " "certainement la déformer (warp). Dans ce cas, pressez « Suivant ».\n" "\n" "Une morphose consiste en un mélange d'images déformées (warped). Le " "\"morphing\" requiert au moins deux images d'entrée.\n" "Pour effectuer une « morphose », pressez « Effectuer », et, dans le menu " "Fichier, choisissez « Ajouter une image » autant de fois que vous voulez " "utiliser d'images d'entrées. Puis, pressez « Guide » dans la fenêtre " "principale.\n" "\n" "Remarque : au démarrage, le mode « warping » est actif : une seule image " "d'entrée est requise." #: gtkmorph/guide_text.c:74 msgid "-Load image(s)" msgstr "-Charger une (des) image(s)" #: gtkmorph/guide_text.c:76 msgid "" "Now you need to load the input images.\n" "In each input image window, load the input image using the big 'load image' " "button." msgstr "" "Maintenant, vous devez charger les images d'entrées.\n" "Dans chaque fenêtre « Image d'entrée », chargez une image grâce au bouton " "« Charger une image »." #: gtkmorph/guide_text.c:80 msgid ";Load reference image" msgstr ";Charger une image de référence" #: gtkmorph/guide_text.c:82 msgid "" "If you wish, you may load an image in the main window; it may help you if " "you are warping images and you want to have a reference to use as a target. " "This is not really necessary, and you may do as well without.\n" "\n" "If in this reference image there are 3 important features, like the eyes and " "mouth in face, then you should drag the 3 white points on these features.\n" "\n" "Similarly, if you have a reference mesh that is associated to this image, " "you may load it now, using the 'load mesh' button\n" "\n" "When done, click 'Guide'." msgstr "" "Si vous le souhaitez, vous pouvez charger une image dans la fenêtre " "principale ; ceci peut vous aider si vous déformez des images et que vous " "voulez utiliser une cible comme référence. Ceci n'est pas vraiment " "nécessaire et vous pouvez faire sans.\n" "\n" "Si, dans cette image de référence, il y a trois éléments remarquables, comme " "les yeux et la bouche d'un visage, vous pouvez y faire glisser les trois " "points blancs.\n" "\n" "De même, si vous disposez d'un maillage de référence associé à cette image, " "vous pouvez le charger, en utilisant le bouton « Charger un maillage ».\n" "\n" "Quand vous avez fini, pressez « Guide »." #: gtkmorph/guide_text.c:92 msgid "-Select subimage(s)" msgstr "-Sélectionnez la (les) sous-ensemble(s) de l'image" #: gtkmorph/guide_text.c:94 msgid "" "Now you select a subimage of each input image. You do this by either moving " "the selection rectangle (using the spins at bottom of the window) or by " "dragging the 3 white feature points. (see [1] below)\n" "\n" "When you have chosen the preferred subimage, hit 'apply' (and the window " "will close). If later you find out that are not satisfied of your choice, " "you may click in the option menu (at center top) and select 'choose " "subimage' to repeat this process.\n" "\n" "Alternatively, if you have already a mesh for this image, you may load it " "now; since the subimage selection is saved with the mesh; when you load the " "saved mesh, the subimage is reselected for you.\n" "\n" " [1] Note that you cannot position the 3 points freely: their mutual " "position is copied from the position of the 3 reference points in the " "resulting image; so you will need to be patient.\n" "Note also that the selection rectangle has currently a fixed aspect (see " "[2]); if you want to freely change the aspect, change the 'preserve aspect " "ratio' setting in the 'settings'.\n" " [2] 'aspect' is the ratio between width and height." msgstr "" "Maintenant, sélectionnez une sous-image dans chaque image d'entrée, soit en " "déplaçant le rectangle de sélection (en utilisant les flêches en bas de la " "fenêtre), soit en faisant glisser les trois points blancs. (voir [1] ci-" "dessous)\n" "\n" "Une fois que vous avez choisi une sous-image, pressez « Appliquer » (et la " "fenêtre se fermera). Si plus tard ce choix ne vous convient pas, vous " "pourrez sélectionner « Choisir une sous-image », dans le menu option (en " "haut, au centre) pour recommencer.\n" "\n" "Sinon, si vous disposez déjà d'un maillage pour cette image, vous pouvez le " "charger maintenant ; puisque la sous-image est sauvegardée avec le maillage, " "lorsque vous chargez le maillage, la sous-image est re-sélectionnée pour " "vous.\n" "\n" "[1] Notez que vous ne pouvez pas disposer les trois points librement : leur " "position relative est déterminée par celle des trois points de référence de " "l'image finale ; vous devrez être patient.\n" "Remarquez aussi que le rectangle de sélection a, à ce moment, un aspect figé " "(voir [2]) ; si vous souhaitez modifier librement son aspect, changer le " "réglage « Conserver la géométrie » dans les « Préférences ».\n" "[2] la « géométrie » est le rapport entre la largeur et la hauteur de " "l'image." #: gtkmorph/guide_text.c:117 msgid "-Adjust mesh" msgstr "-Ajuster le maillage" #: gtkmorph/guide_text.c:119 msgid "" "Now you adjust the mesh in the input image(s) so that they best fit to the " "features of those images. If you hit the right mouse key while on the mesh, " "you will get a menu.\n" "It is very important that points in different meshes are syncronized, that " "is, that point (i,j) in every mesh is associated to the same type of " "feature; for this reason, when you drag a point in a mesh, the same point " "flashes in all other meshes.\n" "When you have put points on a feature (say, for example, the right eye), you " "may hit 'pack' to pack all this point into a 'feature'." msgstr "" "Maintenant, ajustez le maillage de l'image (des images) d'entrée de sorte " "qu'il corresponde aux points caractéristiques de celles-ci. Si vous cliquez " "avec le bouton droit de la souris sur le maillage, un menu apparaîtra.\n" "Il est très important que les points des différents maillages soient " "synchronisés, c'est-à-dire que les points (i,j) de chaque maillage " "correspondent aux mêmes détails caractéristiques ; pour cette raison, quand " "vous faîtes glisser un point d'un maillage, le point associé dans chaque " "autre maillage clignote.\n" "Lorsque vous avez positionné des noeuds sur un point caractéristique " "(disons, par exemple, l'oeil droit), vous devriez presser « Empaqueter » " "pour associer tous ces points dans une « caractéristique »." #: gtkmorph/guide_text.c:130 msgid "From time to time, you better save the mesh(es)." msgstr "Sauvegardez régulièrement le(s) maillage(s)." #: gtkmorph/guide_text.c:132 msgid ";Warp" msgstr ";Warp" #: gtkmorph/guide_text.c:134 msgid "" "Hit the 'do warp' button to view the warp. If you are not satisfied, choose " "'edit mesh' in the option menu (top center) and edit the mesh further.From " "time to time, you better save the mesh." msgstr "" "Pressez le bouton « Déformer » (warp) pour voir la déformation. Si vous " "n'êtes pas satisfait, sélectionnez « Modifier le maillage » depuis le menu " "option (en haut au centre) et retravaillez le maillage. Sauvegardez " "régulièrement le maillage." #: gtkmorph/guide_text.c:139 msgid ":Morph" msgstr ":Morph" #: gtkmorph/guide_text.c:140 msgid "" "To morph your images, you must decide how much each image should influence " "the resulting morph. To this end, you adjust the morph factors to your need; " "the 'mesh interpolation' slide tells how much this mesh will influence the " "resulting mesh, and the 'image blending' tells how much this image is " "visible in the resulting image.\n" "\n" "Then hit the 'do morph' button in the main window to view the morph.\n" " If you are not satisfied, choose 'edit mesh' in the option menu (top " "center) and edit the mesh further; or, choose 'view warp&mesh' and edit the " "morph factors.\n" "\n" "If you want to change the morph factors further, choose ``morph factors..'' " "in the 'edit' menu\n" "\n" "Tip: set all factors to equal values and do a morph: if the images do not " "superimpose well, you may try to select a subimage in each image so that " "they superimpose better" msgstr "" "Pour effectuer une morphose, vous devez déterminer le poids de chaque image " "dans le résultat. Pour ceci, ajustez les facteurs de morphose ;\n" "le curseur d' « interpolation de maillage » indique le poids d'un maillage " "dans le maillage final, et le coefficient de mélange (blending factor) " "indique le taux de visiblité de cette image dans l'image finale.\n" "\n" "Ensuite, pressez le bouton « Exécuter la morphose » dans la fenêtre " "principale pour visualiser la morphose.\n" "Si vous n'êtes pas satisfait, sélectionnez « Modifier le maillage » dans le " "menu option (en haut,au centre) et retravaillez le maillage ; ou choisissez " "« V. déformation&maillage » et modifier les facteurs de morphose.\n" "\n" "Si vous désirez modifier les facteurs de morphose, choisissez « Coefficient " "de morphose.. » depuis le menu « Édition ».\n" "\n" "Conseil : réglez tous les facteurs à la même valeur et effectuez une " "morphose : si les images ne se superposent pas correctement, sélectionnez " "une sous-image dans chacune d'elles afin d'améliorer ceci." #: gtkmorph/guide_text.c:157 msgid ":Movie" msgstr ":Animation" #: gtkmorph/guide_text.c:158 msgid "" "To make a movie of your morph, choose 'morph sequence' in the Morph menu. A " "window will pop up. Click on help there for further help." msgstr "" "Pour réaliser un film à partir de votre morphose, choisissez « Séquence de " "morphose » dans le menu « Morphose » . Une fenêtre de pop-up apparaîtra et " "vous proposera alors davantage d'aide." #: gtkmorph/guide_text.c:161 msgid "-End" msgstr "-Fin" #: gtkmorph/guide_text.c:162 msgid "" "Here ends the guide.\n" "\n" "Goodbye and thank you" msgstr "" "Fin du guide.\n" "\n" "Au revoir et merci." #: gtkmorph/movies.c:64 gtkmorph/callbacks_main.c:318 msgid "to morph, you must have at least two input images" msgstr "" "Pour exécuter une morphose, vous devez disposer d'au moins deux images " "d'entrée." #: gtkmorph/movies.c:526 #, c-format msgid "" "Help on movie making: when you hit ok, gtkmorph will repeat a loop for %d " "times. Any time, it will set the warping and image-blending factors to an " "interpolation between the values that you have stored as 'first' and 'end'. " "Any time, it will save the morphed image (in format %s), starting from '%s' " "and ending with '%s'. Then it will create any animation that you have asked " "to create: the animated gif is called '%s.gif', the mpeg file is called '%s." "mpeg' (and mpeg_encode will use '%s.param' for parameters if available: see " "in %s/mpeg.param an example, or copy the end part of %s.auto.param) and play " "them. You may recreate animations from preexisting frames by hitting 'replay'" msgstr "" "Aide à la réalisation d'animation : quand vous presserez OK, gtkmorph " "répètera une boucle %d fois. Les coefficients de déformation et de mélange " "seront interpolés à partir des valeurs de « Début » et de « Fin » que vous " "aurez mémorisées. L'image transformée sera sauvegardée (au format %s), en " "commençant par « %s » et en finissant par « %s ». Ensuite, sera créée " "l'animation que vous aurez demandée : le GIF animé est nommé « %s.gif », le " "fichier MPEG est nommé « %s.mpeg » (et mpeg_encode utilisera « %s.param » " "comme paramètres, s'il existe : voir en exemple le fichier %s/mpeg.param, ou " "copier la fin de %s.auto.param) et les jouera. Vous pouvez recréer des " "animations depuis des trames existantes en pressant « Rejouer »." #: gtkmorph/movies.c:599 msgid "" "Sorry : temporary files can only be saved as png, and not as ppm; but " "'mencoder' does not read ppm files. You must compile gtkmorph using a newer " "version of libGTK." msgstr "" "Désolé : les fichiers temporaires ne peuvent être sauvegarder qu'au format " "PNG et non au format PPM ; mais « mencoder » ne sait pas lire les fichiers " "PPM. Vous devez compiler gtkmorph avec une version de libGTK plus récente." #: gtkmorph/movies.c:602 msgid "" "sorry : cannot create AVI if a comma ',' is in the filename (blame this on " "'mencoder')" msgstr "" "Désolé : impossible de créer un fichier AVI si le nom contient une virgule " "« , » (la faute à « mencoder »)" #: gtkmorph/callbacks_help.c:18 msgid "" "Here are a few tips at using this program\n" "0) at startup the program is set for ``warping'': read the ``warp help''\n" "1) to morph, you need to have 2 or more `input images' :\n" " use `add an image' (it is in the `file' menu); read the ``morph help''\n" "2) if you keep the mouse still on a menu voice or on a button\n" " for a moment, you may read the help tips.\n" "3) when the mouse pointer is in on the mesh grid, by hitting\n" " the right button, you get an useful menu.\n" "\n" "\n" "If you need more help, activate the guide." msgstr "" "Voici quelques conseils.\n" "0) Au démarrage, ce programme est en mode « warping » : lire l' « Aide à la " "déformation » :\n" "1) Pour une morphose, vous avez besoin d'au moins deux images d'entrée :\n" "utilisez « Ajouter une image », dans le menu « Fichier » ; lire l'« Aide à " "la morphose ».\n" "2) Si vous maintenez la souris sur un menu ou sur un bouton suffisamment " "longtemps, une bulle d'aide apparaîtra.\n" "3) Quand la souris est positionnée sur le maillage, un clic droit fait " "apparaître un menu.\n" "\n" "\n" "Pour plus d'aide, activer le guide." #: gtkmorph/callbacks_help.c:38 msgid "" "To morph:\n" " 1) load an image in each `input image',\n" " 2) edit the meshes by dragging the points (and use the menu that you get\n" " by the right mouse button)\n" " 3) set the `blending factors' and `mesh factors' as desired\n" " 4) and hit `do morph'\n" msgstr "" "Pour effectuer une morphose :\n" " 1) charger une image pour chaque fenêtre « Image d'entrée »,\n" " 2) modifier le maillage en déplaçant les noeuds (et utiliser le menu du " "clic droit),\n" " 3) modifier comme désiré les « coefficients de mélange » (blending " "factors) et les « coefficients de maillage » (mesh factors),\n" " 4) presser le bouton « Exécuter la morphose » (do morph).\n" #: gtkmorph/callbacks_help.c:72 msgid "" "It is not difficult to use this program for warping: just\n" " 1) load an image in the `input image 1',\n" " 2) edit the meshes by dragging the points (and use the menu that you get\n" " by the right mouse button)\n" " 3) and hit `do warp'\n" msgstr "" "Ce programme permet de déformer des images (warping) simplement :\n" " 1) charger une image dans la fenêtre « Image d'entrée 1 »,\n" " 2) modifier le maillage en faisant glisser les noeuds\n" " (et utiliser le menu du clic droit),\n" " 3) presser « Déformer » (do warp).\n" #: gtkmorph/utils-mesh.c:43 msgid "to interpolate meshes, you must have at least two input images" msgstr "Pour interpoler les maillages, deux images d'entrée sont nécessaires." #: gtkmorph/utils-mesh.c:56 msgid "" "to interpolate the meshes, the sum of the all `mesh factors' should be " "nonzero\n" "I have set some default values for you" msgstr "" "Pour interpoler les maillages, la somme des « coefficients de maillage » " "doit être non-nulle.\n" "Les valeurs par défaut ont été sélectionnées." #: gtkmorph/callbacks_fs.c:168 #, c-format msgid "load %s" msgstr "Charger %s" #: gtkmorph/callbacks_fs.c:317 gtkmorph/loadsave.c:449 msgid "internal error: the image doesnt exist!" msgstr "Erreur interne : image inexistante !" #: gtkmorph/callbacks_fs.c:324 #, c-format msgid "save %s (only PPM format)" msgstr "Sauvegarder %s (format PPM seul)" #: gtkmorph/callbacks_fs.c:326 #, c-format msgid "save %s" msgstr "Sauver %s" #: gtkmorph/utils.c:348 msgid "template image" msgstr "Image de référence" #: gtkmorph/utils.c:356 msgid "morphed image" msgstr "Image déformée (morphed)" #: gtkmorph/guide_text.h:7 msgid "" "'Features' are sets of grid points; they are represented by the same color " "in the grid. They can be used to more easily edit a complex grid: for " "example, when preparing a grid on a face, each facial feature (eyes, " "mouth..) can be outlined by using a proper set of points.\n" "Points can be added or subtracted from features using the tools 'assign' and " "'unselect'; whole features can be moved all together, using the 'move' and " "'stretch' tools; the 'pack' button transforms all selected points into a " "feature, and 'unpack' does the opposite." msgstr "" "Les « caractéristiques » sont des ensembles de points ; ceux-ci sont " "représentés par la même couleur sur la grille. Ils peuvent servir à " "faciliter la modification d'une grille complexe : par exemple, lors de la " "création d'une grille sur un visage, chaque caractéristique faciale (yeux, " "bouche...) peut être isolée grâce à un ensemble adapté de points.\n" "Des points peuvent être ajoutés ou supprimés d'une caractéristique grâce aux " "outils « Assigner » et « Déselectionner » ; toute une caractéristique peut " "être déplacée en bloc grâce aux outils « Déplacer » et « Étirer » ; le " "bouton « Empaqueter » crée une caractéristique à partir de l'ensemble des " "points sélectionnés, et « Dépaqueter » effectue l'opération inverse." #: gtkmorph/guide_text.h:18 msgid "" "Tips:\n" "1) try to keep the mesh lines as linear as possible: add new lines (with " "right mouse button) if this helps!\n" "2) to have a better morph, for each image, set the `morph factors' to a " "maximum, hit `do warp' and try to adjust the mesh until this warp looks " "right\n" "3) if you are fighting with small details, then you should increase the " "resulting image size until you have fixed things. (Use the the 'x2' button.)" msgstr "" "Conseils :\n" " 1) Essayer de garder les lignes du maillages aussi lineaires que " "possible : ajouter de nouvelles lignes (clic droit) si besoin !\n" " 2) Pour une meilleure morphose, à chaque image, positionner les " "coefficients de morphose au maximum, presser « Déformer » et essayer " "d'ajuster le maillage jusqu'à ce que la déformation obtenue soit " "satisfaisante.\n" " 3) Si de petits détails vous pose problème, augmentez la taille de l'image " "finale jusqu'à obtention du résultat souhaité (utiliser le bouton « x2 »)." #: gtkmorph/loadsave_mesh.c:81 #, c-format msgid "this filename is already used by the mesh of image %d" msgstr "Ce nom de fichier est déjà utilisé par le maillage de l'image %d." #: gtkmorph/loadsave_mesh.c:108 gtkmorph/loadsave_mesh.c:362 msgid "" "the attempt to load mesh from file has produced an error\n" "(either this is not a mesh file, or the mesh file is corrupted)" msgstr "" "La tentative de chargement d'un maillage depuis le fichier a générer une " "erreur\n" "(soit ce n'est pas un fichier de maillage, soit ce fchier est endommagé)." #: gtkmorph/loadsave_mesh.c:195 #, c-format msgid "this mesh was created on image '%s' and not on this image '%s'" msgstr "" "Ce maillage a été créé à partir de l'image « %s » et non cette image « %s »." #: gtkmorph/loadsave_mesh.c:217 #, c-format msgid "" "the size of the image w=%d h=%d and the size recorded in the mesh w=%d h=" "%d do not match" msgstr "" "La taille de l'image L=%d h=%d et la taille enregistrée dans le maillage L=" "%d h=%d ne correspondent pas." #: gtkmorph/loadsave_mesh.c:252 msgid "" "This mesh is automatically generated. You don't want to overwrite another " "mesh with this one!" msgstr "" "Ce maillage est généré automatiquement. Vous ne voulez pas écraser un autre " "maillage par celui-ci !" #: gtkmorph/loadsave_mesh.c:403 #, c-format msgid "the attempt to load the image file %s has produced error: %s" msgstr "La tentative de chargement de l'image %s a produit une erreur: %s" #: gtkmorph/loadsave_mesh.c:477 msgid "" "gtkmorph could not find libply, so it cannot load PLY surfaces. Read " "documentations to install libply." msgstr "" "gtkmorph n'a pas pu trouver libply et ne peut donc pas charger les surfaces " "PLY. Lisez la documentation pour installer libply." #: gtkmorph/loadsave_mesh.c:481 msgid "error while loading PLY file" msgstr "Erreur lors du chargement du fichier PLY" #: gtkmorph/loadsave_mesh.c:486 msgid "gtkmorph was NOT compiled with PLY support" msgstr "gtkmorph n'a PAS été compilé avec le support de PLY." #: gtkmorph/loadsave_mesh.c:503 msgid "" "This file already exists! If you really want to overwrite it, delete it." msgstr "" "Ce fichier existe déjà ! Si vous souhaitez vraiment le remplacer, supprimer " "le." #: gtkmorph/loadsave_mesh.c:531 #, c-format msgid "can't resize %dth image-no filename" msgstr "Impossible de redimensionner l'image %d - pas de nom de fichier." #: gtkmorph/loadsave_mesh.c:546 #, c-format msgid "" "the attempt to reload the image file %s to resize it has produced error: %s" msgstr "" "La tentative de chargement de l'image %s à redimensionner a produit " "l'erreur: %s" #: gtkmorph/dialogs.c:65 msgid "info" msgstr "Information" #: gtkmorph/unused.c:166 #, c-format msgid "" "The image %d has an %ld by %ld mesh while the resulting mesh is %d by %d!\n" "I cant warp it!\n" "I suggest that you add lines so that both meshes are %d by %d" msgstr "" "L'image %d possède un maillage de %ld par %ld alors que le maillage final " "est de %d par %d !\n" "Déformation impossible !\n" "Il est conseillé d'ajouter des lignes de sorte que les deux maillages soient " "de %d par %d." #: gtkmorph/loadsave.c:76 msgid "please provide a filename" msgstr "Veuillez fournir un nom de fichier." #: gtkmorph/loadsave.c:103 #, c-format msgid "could not open file '%s' for write: %s" msgstr "Ouverture en écriture du fichier '%s' impossible : %s" #: gtkmorph/loadsave.c:229 msgid "can't reload the full session-no more available images" msgstr "Impossible de recharger la session - plus d'images disponibles" #: gtkmorph/loadsave.c:286 #, c-format msgid "could not open file '%s' for read: %s" msgstr "Lecture du fichier « %s » impossible : %s" #: gtkmorph/loadsave.c:301 msgid "parsing of session failed at first header!" msgstr "Echec de l'analyse de la session au premier en-tête !" #: gtkmorph/loadsave.c:336 msgid "parsing of session failed" msgstr "L'analyse de la session a échoué." #: gtkmorph/loadsave.c:356 gtkmorph/loadsave.c:379 gtkmorph/loadsave.c:401 #, c-format msgid "the attempt to save the image file %s has produced error: %s" msgstr "La tentative de sauvegarde de l'image %s a produit l'erreur: %s" #: gtkmorph/loadsave.c:407 #, c-format msgid "the attempt to close the saved image file %s has produced error: %s" msgstr "" "La tentative de fermer le fichier de l'image sauvegardée %s a produit " "l'erreur: %s" #: gtkmorph/loadsave.c:457 msgid "" " this version of gtkmorph can save images only in .ppm format (to save in " "other formats, compile with GTK2 or higher). Please set the filename " "extension to '.ppm'" msgstr "" "Cette version de gtkmorph peut sauvegarder les images au seul format PPM " "(pour sauvegarder dans d'autres formats, compiler avec GTK2 ou une version " "ultérieure). Veuillez appliquer une extension « .ppm »." #: gtkmorph/loadsave.c:479 msgid "please use an allowed image format" msgstr "Veuillez utiliser un format d'image supporté." #: gtkmorph/loadsave.c:499 #, c-format msgid "" "the filename extension is '%s' but the image was saved in format '%s'. This " "mismatch may prevent you from viewing this image." msgstr "" "L'extension du fichier est « %s » mais l'image a été sauvegardée au format " "« %s ». Cette différence peut vous empêcher de visualiser cette image." #: gtkmorph/callbacks_edit.c:88 gtkmorph/callbacks_edit.c:153 msgid "" "you cant edit this mesh - it is automatically generated as an interpolation\n" "of the input images meshes .\n" "(but if you really want to edit, unset 'automatic mesh interpolation')" msgstr "" "Vous ne pouvez pas modifier ce maillage - il est généré par interpolation\n" "de ceux des images d'entrée.\n" "Si vous souhaitez vraiment le modifier, désactivez l'option « Interpolation " "automatique des maillages »." #: gtkmorph/callbacks_edit.c:96 gtkmorph/callbacks_edit.c:161 msgid "" "You are currently viewing the warped version of the image\n" "you may not edit this mesh (which refers to the loaded image).\n" "To edit the mesh, select `edit mesh' in the menu (at top center).\n" "I have done it now for you" msgstr "" "Vous visualisez actuellement la version déformée de l'image.\n" "Vous ne devriez pas modifier ce maillage (qui correspond à l'image " "chargée).\n" "Pour modifier ce maillage, sélectionnez « Modifier le maillage » depuis le " "menu (en haut au centre).\n" "Je l'ai fait pour vous." #: gtkmorph/callbacks_main.c:109 #, c-format msgid "the mesh(es) %s were not saved! do you want to exit anyway?" msgstr "" "Le(s) maillage(s) %s n'a (ont) pas été sauvegardé(s) ! Voulez-vous tout de " "même sortir ?" #: gtkmorph/callbacks_main.c:282 msgid "" "to blend the images, the sum of the all `image mixing factors' must be " "nonzero\n" "I have put default values for you" msgstr "" "Pour mélanger des images, la somme des « coefficients de mélange » (mixing " "factors) doit être non-nulle.\n" "Les valeurs par défaut ont été positionnées pour vous." #: gtkmorph/callbacks_main.c:476 msgid "gtkmorph was not linked with Waili wavelet library" msgstr "gtkmorph n'a pas été lié à la bibliothèque d'ondelette Waili." #: gtkmorph/callbacks_main.c:589 msgid "the input images have different numbers of channels: cannot blend" msgstr "" "Les images d'entrée ont un nombre de canaux différent : impossible de " "mélanger." #: gtkmorph/callbacks_main.c:838 msgid "" "Loading the example session may ruin your current session. Please properly " "save all meshes and retry." msgstr "" "Charger la session d'exemple peut endommager votre session courante. " "Veuillez sauvegarder tous les maillages et réessayer." #: gtkmorph/callbacks_main.c:869 #, c-format msgid "" "The 'example' directory should be in '%s' but is not.\n" "Install the 'gtkmorph-example' debian package." msgstr "" "Le répertoire « example » devrait être dans « %s » mais ce n'est pas le " "cas.\n" "Installez le paquet debian « gtkmorph-example »." #: gtkmorph/callbacks_main.c:872 #, c-format msgid "The 'example' directory should be in '%s' but is not." msgstr "" "Le répertoire « example » devrait être dans '%s' mais ce n'est pas le cas." #: gtkmorph/gtk_subimagesel.c:407 msgid "you must load an image before you may choose a subimage" msgstr "Charger une image avant de définir une sous-image." #: gtkmorph/callbacks_fs_mesh.c:70 #, c-format msgid "load mesh for %s" msgstr "Charger un maillage pour %s." #: gtkmorph/callbacks_fs_mesh.c:105 #, c-format msgid "save mesh for %s" msgstr "Sauvegarder le maillage pour %s." #: gtkmorph/callbacks_fs_mesh.c:136 gtkmorph/callbacks_fs_mesh.c:163 msgid "save difference to mesh" msgstr "Sauvegarder la différence dans le maillage." #: gtkmorph/callbacks_fs_mesh.c:186 msgid "load difference mesh" msgstr ";Charger un maillage différentiel." #: glade1/support.c:130 #, c-format msgid "Error loading pixmap file: %s" msgstr "Erreur lors du chargement du fichier pixmap : %s" #: glade1/interface.c:167 po/gtkmorph.glade.c:8 msgid "File menu" msgstr "Menu Fichier" #: glade1/interface.c:2264 po/gtkmorph.glade.c:167 msgid "" "show animated sequence after saving it all (needs 'animate' command from " "imagemagick)" msgstr "" "Montrer la séquence animée après avoir tout sauvegardé (nécessite la " "commande « animate » du paquet imagemagick)" #: glade1/interface.c:2318 po/gtkmorph.glade.c:174 msgid " ok " msgstr "OK" #: glade1/interface.c:2332 po/gtkmorph.glade.c:103 po/gtkmorph.glade.c:175 msgid "cancel" msgstr "Annuler" #: glade1/interface.c:2345 po/gtkmorph.glade.c:176 msgid "help" msgstr "Aide" #: po/gtkmorph.glade.c:102 po/gtkmorph.glade.c:189 msgid "OK" msgstr "OK" #: po/gtkmorph.glade.c:190 msgid "Cancel" msgstr "Annuler" #~ msgid "load image" #~ msgstr "Charger une image" #~ msgid "save image n." #~ msgstr "Sauvegarder l'image n" #~ msgid "in img" #~ msgstr "dans l'image" #, fuzzy #~ msgid "-More on features" #~ msgstr "-Plus d'information sur les caractéristiques" #~ msgid "MMorph" #~ msgstr "MMorph" #~ msgid "to mix images, you must have at least two input images" #~ msgstr "" #~ "Pour mélanger des images, vous devez disposer d'au moins deux entrées." #~ msgid "this is the resulting image" #~ msgstr "Voici l'image finale" #~ msgid "resulting image and resulting mesh" #~ msgstr "Image et maillage finaux" #~ msgid "view loaded" #~ msgstr "Voir l'image chargée" #~ msgid "" #~ "You have only one input images: all you can do is to warp it;\n" #~ "that is, if you hit the warp button, the 'input image 1' will be warped\n" #~ "from to the 'input mesh' to the 'resulting mesh'. If you want to \n" #~ "morph images, select `add image' in the file menu." #~ msgstr "" #~ "Vous ne disposez que d'une seule image d'entrée : vous pouvez seulement " #~ "la déformer (warp) ;\n" #~ "c'est-à-dire que, si vous pressez le bouton « Déformer », l'image " #~ "d'entrée 1 sera déformée depuis le maillage d'entrée vers le maillage " #~ "finale. Si vous voulez effectuer une morphose, sélectionnez « Ajouter une " #~ "image » dans le menu « Fichier »." #~ msgid "You have two input images: you may morph them to a resulting image." #~ msgstr "" #~ "Deux images sont disponibles : vous pouvez les mélanger (morph) en une " #~ "seule image." #~ msgid "error: probably your subimage was not contained in the image" #~ msgstr "" #~ "Erreur : la sous-image n'était probablement pas contenue dans l'image." xmorph-20140707+nmu2/po/it.gmo0000664000000000000000000013667712356342536012635 0ustar Þ•3´ ™L°k±¢"Åß ú ü  ! !!+!:!P!d!g!i!p!w!! “!¡!¨!Æ!Ë!é! î!0ø!)"ª."óÙ$+Í&¾ù&¸'é¼)e¦* ++'+z=-1¸-8ê1#3&3 +383¤A35æ3d4—4H5]b5œÀ5…]7;ã7÷;<Õ<nñ<ž`?âÿ@[âA >BKB"_B‚B”B›B0­BAÞB² CmÓClAD®D ¿D;ÊDE E E E8EJE]EKzEgÆE .FG8^pw^>è^u'_1_Ï_³Õ_‰`F`×`à`ï`aa &a 0a;aNa cama~a‘a™a ¢ao¬a b)b CbQbfbwb,bŒ¬b‹9c ÅcÓcÙcácøcûc¯d7ÂdLúdTGfœk¾¡k•`l(öno!o3o 9oGoXoko‹o¨o«o­o´o!»oÝoãoêoòop&p>p Cp6Mp„pÔŠpE_s*¥uêÐu'»v"ãx~z…z‹z*Žz€¹|j:}p¥ƒƒƒ /ƒ¬:ƒ:çƒm"„á„Cr…`¶…ò†™ ˆå¤ˆ!ŠŒ¬ü¯Î¬Ž{‘ƒ’d‹“ð“”/ ”P”i”r”@‹”K̔̕tå•wZ–Ò– ä–]ï–M—U— ]—k—‡—¥—!½—Rß—}2˜°˜DÁ˜™ ™M™A\™ž™¦¦™Mš iš/vš1¦šØšƒçšk›J…›LЛ]œ={œ ¹œÜלòœ 1D V` t‰*›ÆFžKždžzž‹žž%¢žÈžXÏž(Ÿ/ŸOŸ WŸbŸ)xŸ ¢Ÿ­Ÿ(³ŸÜŸ€åŸf u  „ Q’ Nä 3¡9¡B¡J¡P¡Y¡6j¡¡¡I³¡ý¡ ¢31¢ e¢r¢+„¢°¢¢"Ô¢ ÷¢ £ £M£j£ˆ£¦£Á£×£vç£^¤z¤Œ¤&ª¤Ѥñ¤¥n'¥–¥§¥Ã¥Ó¥ä¥ê¥¦9¦V¦\¦ e¦s¦‘¦ ”¦9Ÿ¦(Ù¦;§I>§%ˆ§:®§é§û§ ¨3¨L¨T¨]¨f¨m¨Œ¨"’¨µ¨ɨ!è¨ ©© *©8©A©9`©"š©½©Ò© ã©í©ý© ‹ª–ª[¯ª[ «^g« Æ«(Ó«ü«¬2(¬[¬`b¬-ìñ¬$ø¬­M=­‹­‘­¬­tÄ­9®KQ®‚®A ¯Cb¯B¦¯é¯™w°Q±c±|²[•³ñ³<‚´k¿´P+µ>|µ0»µNìµr;¶J®¶xù¶<r·¯·æµ· œ¸O¨¸ ø¸¹¹6¹N¹k¹ €¹‹¹¤¹»¹Û¹*û¹ &º 1º=ºYMº§º$ººߺòº » "»6,»…c»zé»d¼ {¼ …¼¼§¼ª¼µÂ¼Fx½ÖÒ6’M åG¡H=T$Kà õäö½~ãÄÓ¬ni‚¼WÙþÇðO‹ 1Ÿžš*Pf´£D(Þ˜Š lËaÊ¿$3ºÀïç bI+;ø—»#ß Õ@>ÿ&C²F_Q-yÃ^\í¾³©ô±Å™œ° ,÷Æî€:ë–ÚgÝ·! ¥x„*áÂ"ª]YØuý×8m)+vN&ɤ†¸¢ ¨.?Á¹Zk­(”¦3“ '¶«‘úÏó<Üù§%ê0s%ÍjûµÔAæ5{qEw e1ƒ|4}ˆÛc‰[Î#/ér J2,h/`›ü‡U0ñì.Ìâ2"SLV7èŽp-!B®ÈÐ…R9•o¯'Œò X)tzÑd Welcome to GtkMorph GtkMorph is a powerful program that permits you to warp or morph images. Using this guide. Hit 'next' to skip a topic, or 'do it' to do it; when you have done a topic, hit 'Guide' in the main window to come back to the guide. (Note that, when you hit 'do it', the guide will iconify and deiconify other windows to highlight your task: with some dumb window managers, this will not work ok). If you are not satisfied by the way you have complied with the guide requests, hit 'prev' and 'do it' to retry the task. As a first task, you may get acquainted with the main gtkmorph window: if you want to give it a look, hit 'do it': the main window will pop up! Note that, if you keep the mouse still on a menu voice or on a button for a moment, a tip shows up. When you are done, hit 'Guide' to come back to the guide. If you know the program main window, simply hit 'next'. If you are fed up with the guide, you may stop it at any time by closing this window: the normal gtkmorph program will pop up. If you want to test the program, you may want to load the example session:look into the 'Help' menu. ok this version of gtkmorph can save images only in .ppm format (to save in other formats, compile with GTK2 or higher). Please set the filename extension to '.ppm''Features' are sets of grid points; they are represented by the same color in the grid. They can be used to more easily edit a complex grid: for example, when preparing a grid on a face, each facial feature (eyes, mouth..) can be outlined by using a proper set of points. Points can be added or subtracted from features using the tools 'assign' and 'unselect'; whole features can be moved all together, using the 'move' and 'stretch' tools; the 'pack' button transforms all selected points into a feature, and 'unpack' does the opposite.(unavailable feature name)--Adjust mesh-End-Introduction-Load image(s)-Morph or warp-Select subimage size-Select subimage(s)/21:Morph:Movie;Load reference image;Warpframe6CancelCouldn't find pixmap file: %sEditError loading pixmap file: %sFileFile menuFrom time to time, you better save the mesh(es).HelpHelp on movie making: when you hit ok, gtkmorph will repeat a loop for %d times. Any time, it will set the warping and image-blending factors to an interpolation between the values that you have stored as 'first' and 'end'. Any time, it will save the morphed image (in format %s), starting from '%s' and ending with '%s'. Then it will create any animation that you have asked to create: the animated gif is called '%s.gif', the mpeg file is called '%s.mpeg' (and mpeg_encode will use '%s.param' for parameters if available: see in %s/mpeg.param an example, or copy the end part of %s.auto.param) and play them. You may recreate animations from preexisting frames by hitting 'replay'Here are a few tips at using this program 0) at startup the program is set for ``warping'': read the ``warp help'' 1) to morph, you need to have 2 or more `input images' : use `add an image' (it is in the `file' menu); read the ``morph help'' 2) if you keep the mouse still on a menu voice or on a button for a moment, you may read the help tips. 3) when the mouse pointer is in on the mesh grid, by hitting the right button, you get an useful menu. If you need more help, activate the guide.Here ends the guide. Goodbye and thank youHit the 'do warp' button to view the warp. If you are not satisfied, choose 'edit mesh' in the option menu (top center) and edit the mesh further.From time to time, you better save the mesh.If you wish, you may load an image in the main window; it may help you if you are warping images and you want to have a reference to use as a target. This is not really necessary, and you may do as well without. If in this reference image there are 3 important features, like the eyes and mouth in face, then you should drag the 3 white points on these features. Similarly, if you have a reference mesh that is associated to this image, you may load it now, using the 'load mesh' button When done, click 'Guide'.It is not difficult to use this program for warping: just 1) load an image in the `input image 1', 2) edit the meshes by dragging the points (and use the menu that you get by the right mouse button) 3) and hit `do warp' Loading the example session may ruin your current session. Please properly save all meshes and retry.MorphNoNow you adjust the mesh in the input image(s) so that they best fit to the features of those images. If you hit the right mouse key while on the mesh, you will get a menu. It is very important that points in different meshes are syncronized, that is, that point (i,j) in every mesh is associated to the same type of feature; for this reason, when you drag a point in a mesh, the same point flashes in all other meshes. When you have put points on a feature (say, for example, the right eye), you may hit 'pack' to pack all this point into a 'feature'.Now you need to load the input images. In each input image window, load the input image using the big 'load image' button.Now you select a subimage of each input image. You do this by either moving the selection rectangle (using the spins at bottom of the window) or by dragging the 3 white feature points. (see [1] below) When you have chosen the preferred subimage, hit 'apply' (and the window will close). If later you find out that are not satisfied of your choice, you may click in the option menu (at center top) and select 'choose subimage' to repeat this process. Alternatively, if you have already a mesh for this image, you may load it now; since the subimage selection is saved with the mesh; when you load the saved mesh, the subimage is reselected for you. [1] Note that you cannot position the 3 points freely: their mutual position is copied from the position of the 3 reference points in the resulting image; so you will need to be patient. Note also that the selection rectangle has currently a fixed aspect (see [2]); if you want to freely change the aspect, change the 'preserve aspect ratio' setting in the 'settings'. [2] 'aspect' is the ratio between width and height.Now you select the size that the output image(s) will have. To this end, in the lower part of the main window, there is a pair of spins; select your preferred size and hit 'apply'. After that, you will be brought back to the guide. You may change the size again by selecting 'resulting size...' in the Edit menu.OKQuitSelect ColorSettingsSorry : temporary files can only be saved as png, and not as ppm; but 'mencoder' does not read ppm files. You must compile gtkmorph using a newer version of libGTK.The 'example' directory should be in '%s' but is not.The 'example' directory should be in '%s' but is not. Install the 'gtkmorph-example' debian package.The image %d has an %ld by %ld mesh while the resulting mesh is %d by %d! I cant warp it! I suggest that you add lines so that both meshes are %d by %dThis file already exists! If you really want to overwrite it, delete it.This mesh is automatically generated. You don't want to overwrite another mesh with this one!Tips: 1) try to keep the mesh lines as linear as possible: add new lines (with right mouse button) if this helps! 2) to have a better morph, for each image, set the `morph factors' to a maximum, hit `do warp' and try to adjust the mesh until this warp looks right 3) if you are fighting with small details, then you should increase the resulting image size until you have fixed things. (Use the the 'x2' button.)To make a movie of your morph, choose 'morph sequence' in the Morph menu. A window will pop up. Click on help there for further help.To morph your images, you must decide how much each image should influence the resulting morph. To this end, you adjust the morph factors to your need; the 'mesh interpolation' slide tells how much this mesh will influence the resulting mesh, and the 'image blending' tells how much this image is visible in the resulting image. Then hit the 'do morph' button in the main window to view the morph. If you are not satisfied, choose 'edit mesh' in the option menu (top center) and edit the mesh further; or, choose 'view warp&mesh' and edit the morph factors. If you want to change the morph factors further, choose ``morph factors..'' in the 'edit' menu Tip: set all factors to equal values and do a morph: if the images do not superimpose well, you may try to select a subimage in each image so that they superimpose betterTo morph: 1) load an image in each `input image', 2) edit the meshes by dragging the points (and use the menu that you get by the right mouse button) 3) set the `blending factors' and `mesh factors' as desired 4) and hit `do morph' YesYou are currently viewing the warped version of the image you may not edit this mesh (which refers to the loaded image). To edit the mesh, select `edit mesh' in the menu (at top center). I have done it now for youYou may `warp' or `morph'. 'Warp' means 'to deform, contort, distort, wring, bend, or otherwise twist'. If you have one single input image and you want to make a distortion of it, then you want to warp it. In this case, hit 'next' 'Morphing' images instead means 'blending together warped versions of the images'. So to morph you need two or more input images. In this case, press 'do it', and, in the File menu, choose 'add image' as many times as to reach the required number of input images, then hit 'Guide' in the main window. Note that at startup the program is set for ``warping'': there is only one input image.``edit mesh'': view the loaded image and edit the mesh on it. ``view warp'': view the result of warping the loaded image from this mesh to the resulting mesh. ``v. warp&meshes'' as before but with both meshes on. ``choose subimage'' choose which subimage of the loaded image you wish to use. You can also use the 'settings' button to change these settings more finely.``edit template'': view the loaded image and edit the mesh on it. \n ``view morphed'': view the result of morphing. ``v.morph&mesh'' as above but with the mesh. ``edit eyes points'' sets the reference position of the eyesa mesh point cannot enter in a neighbouring cell (this is currently not very well enforced)add an imageadd horizontal lineadd new feature to the end of listadd vertical lineadjustadjust all meshesadjust mesh point position w.r.t. previous imageadjust points of meshes confronting original images and the morphadjust the position of a mesh point by comparing this image with the previous one and doing a best match. Achieves sub-pixel precision but may move your point around erratically.always force the image factors so that they sum to 1; (if not, they are internally renormalized before using)always force the mesh factors so that they sum to 1; (if not, they are internally renormalized before using)animate sequenceanimationsany change (add/del, label/unlabel) to a mesh is replicatedapplyassignassign pointassign point to featureauto point adjustautomatic blendingautomatic mesh interpolationautomatically blends the images when the image blending factors are changedautomatically interpolates the resulting mesh when morphing (note that in this case you cannot edit it)back to guideborder points of the mesh are forced to stay on the border of the imagec xc ycan't reload the full session-no more available imagescan't resize %dth image-no filenamecancelchoose antialiasing method that is used when warping: the lanczos kernels are slower, but are necessary if the images have fine or grained textures for animationschoose subimagecoefficientscould not open file '%s' for read: %scould not open file '%s' for write: %screate AVI MPEG4create and save many morphs, equally spaced between the morph start and the morph end (that you have already stored with the above menu)create animated gifcreates an AVI file in MPEG4 format (needs 'mplayer' and 'mencoder')creates an animated gif (needs 'convert' from imagemagick) and plays it (needs 'animate' from imagemagick)creates an mpeg file and plays it; will use a parameter file (see help) (needs 'mpeg_encode' and 'mpeg_play')creates and saves all morphs, builds animationscreates mpegcursor jumpdel horizontal linedel vertical linedeletedelete last featuredifferential meshdim imagedisabledo blendingdo morphdo warpdo itdo what is proposed in this panedont warn, just beep; warnings may be read with 'why the beep' in the 'help' menueditedit eyes pointsedit featuresedit meshedit templateendenergy for mesh smoothingequalequalize input images so that the subband of wavelet transform have the same energieserrorerror while loading PLY fileerror!featurefeature helpfile base nameframegeneric helpgo back to previous guide panegtkmorphgtkmorph could not find libply, so it cannot load PLY surfaces. Read documentations to install libply.gtkmorph guidegtkmorph maggtkmorph moviegtkmorph was NOT compiled with PLY supportgtkmorph was not linked with Waili wavelet libraryguideguide...heighthelphelp...hide unusablehide unusable widgets, instead of deactivating themhow many frameshow many frames will be saved; each will be saved in a fileimage blendingimage factors sum to 1infer the subimage from the eyes positioninfoinput imageinternal error: the image doesnt exist!interpol. meshesinterpolate meshesit saves whatever image is currently shown in the windowload imageload meshload %sload a "differential mesh", that is a mesh representing the difference of two meshesload a differenceload difference meshload example sessionload mesh for %sload sessionload the image. This image may not be warped or morphed, but it may help in setting the resulting meshload the selected imagemesh interp.mesh auto syncmesh cant overlapmesh factors sum to 1mesh is readonlymesh tipsmix all the warped images in the ``resulting image'' using ``image blending factors'' as weightsmorph helpmorph imagesmorph sequencemorphed imagemovemove single pointmove whole featuremoves the image to recenter the last edited pointnewnextno warningsnumber of first fileokpackpack the selected points in this featureparsing of session failedparsing of session failed at first header!permits to add and delete mesh lines, edit featuresplease provide a filenameplease use an allowed image formatpreserve aspect ratiopreserve borderprevput warped images in another windowquestionquestion?renamereplayresaves and replays animationsresetrestore morph coefficients...resulting imageresulting image sizeresulting image size...save diffsave imagesave meshsave %ssave %s (only PPM format)save difference from this mesh to other meshsave difference to meshsave mesh for %ssave sessionselectselect pointset this mesh to be an interpolation of all other meshes, using ``mesh factors'' as weightssettingsshow all imagesshow animated sequence after saving it all (needs 'animate' command from imagemagick)show animated sequence after saving it all (on some platforms, it may need 'animate' command from imagemagick)show difference between this mesh and another mesh, as white arrowsshow magshow mesh difference to...show morph factorsshow warp after warpskip this and go to next guide panesmoothsorry : cannot create AVI if a comma ',' is in the filename (blame this on 'mencoder')sorry this functions is as yet unimplementedstartstops the computation of framesstore morph coefficients...stores internally the state of all mesh and image-blending factors (to make morph sequences)stretchstretch whole featuresubimage positionswitch the input window(s) to the warped image after a warp (overridden by the above)template imagethe attempt to close the saved image file %s has produced error: %sthe attempt to load mesh from file has produced an error (either this is not a mesh file, or the mesh file is corrupted)the attempt to load the image file %s has produced error: %sthe attempt to reload the image file %s to resize it has produced error: %sthe attempt to save the image file %s has produced error: %sthe averaging of images will lose details; you may enable an enhancing algorithm (based on wavelets)the filename extension is '%s' but the image was saved in format '%s'. This mismatch may prevent you from viewing this image.the files of the frames will be numbered sequentially starting from this numberthe input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button.the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' buttonthe input images have different numbers of channels: cannot blendthe mesh of the resulting image is set to an interpolation of the input images' meshes, weighted by the ``mesh factors''the mesh(es) %s were not saved! do you want to exit anyway?the size of the image w=%d h=%d and the size recorded in the mesh w=%d h=%d do not matchthese coefficents decide how much this image/mesh will influence the final morphthis filename is already used by the mesh of image %dthis is the depth of the waveletsthis mesh was created on image '%s' and not on this image '%s'to blend the images, the sum of the all `image mixing factors' must be nonzero I have put default values for youto interpolate meshes, you must have at least two input imagesto interpolate the meshes, the sum of the all `mesh factors' should be nonzero I have set some default values for youto morph, you must have at least two input imagestracktype of energy that is minimized to decide the position of the non-selected mesh points: thin plate energy is better but slower, to speed up use elastic energy when editing meshesunpackunpack this feature and transforms all points of it to selected pointsunselectunselect pointuse antialiasing warpingv morph&meshesv. warp&meshesview eyesview morphview original meshview original pointsview warpview warped meshview warped pointswarningwarning!warp helpwarp this image from this mesh to the resulting mesh, and show the result in this window or an accessory windowwarped imagewarped image in other winwavelet depthwavelet equalizationwavelet equalizewelcomewhen loading an image, preserve aspect ratiowhen you morph the images, or you ``do mixing'', this factor will measure how much this image will show in the mixing in the resulting imagewhen you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's meshwhy the beep?widthwindow1x coordinate of centerx2y coordinate of centeryou cant edit this mesh - it is automatically generated as an interpolation of the input images meshes . (but if you really want to edit, unset 'automatic mesh interpolation')you must load an image before you may choose a subimageProject-Id-Version: xmorph Report-Msgid-Bugs-To: mennucc1@debian.org POT-Creation-Date: 2014-07-06 23:50+0200 PO-Revision-Date: 2014-07-06 23:53+0200 Last-Translator: mennucc1@debian.org Language-Team: mennucc1@debian.org Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit Benvenuti in GtkMorph GtkMorph è un potente programma che Vi permette di eseguire deformazioni di immagini ('warp') e 'morph' (cioè, combinazioni di 'warp' e di dissolvenze). Usare la guida. Premete 'prossimo' per saltare un compito, oppure 'esegui il compito' per farlo; quando avete fatto, premete il tasto 'Guida' nella finestra principale. (Nota: quando premete 'esegui il compito', la guida si iconizzerà e mostrerà le altre finestre per evideziare il lavoro da compiere: con alcuni 'window manager' meno avanzati, questo non funzionerà). Se non siete soddisfatti da come avete eseguito il compito, potete sempre premere 'precedente' per tornare indietro e rieseguire il compito. Come primo compito, potete familiarizzare con la finestra principale di GtkMorph: se volete provare, premete 'esegui il compito': la finestra principale comparirà! Notate che, se tenete il mouse fermo su un bottone o su una voce di menù, comparirà un suggerimento. Quando avete finito di familiarizzare, premete 'Guida' nella finestra principale per tornare alla guida. Se conoscete già il programma, premete 'prossima'. Se siete stufi della guida, potete smettere in ogni momento chiudendo questa finestra: il programma GTKMorph ricomparità al suo posto. Se volete vedere il programma in azione, potete caricare una sessione di esempio: usate il menù 'Aiuto'. ok questa versione di GtkMorph può salvare le immagini solo in format .ppm (per salvare in altri formati, compilate con GTK2 o superiore). Si prega di usare un nome file con estensione '.ppm' .I 'lineamenti' sono insiemi di punti di una griglia; sono rappresentati da punti che hanno lo stesso colore. Possono essere usati per facilitare la sistemazione di griglie complesse: per esempio, se si sta preparando una griglia basata su un volto, ciascun lineamento (occhi, bocca,...) può essere delineato usando un opportuno insieme di punti. I punti possono essere aggiunti o sottratti da un lineamento con gli strumenti 'assegna' e 'deseleziona'; il lineamento intero può essere spostato o allungato con gli strumenti 'muovi' e 'stira'; il bottone 'colleziona' raccoglie tutti i puni selezionai in un 'lineamento', e il bottone 'scolleziona' fa l'opposto. (nome non disponibile per un lineamento)--Modifica griglia-Fine-Introduzione-Carica immagini-Morph oppure warp-Dimensione immagine risultante-Seleziona una sottoimmagine/21:Morph:Movie;Carica l'immagine di riferimento;Warpframe6AnnullaNon si trova il file pixmap: %sEditErrore nel caricare il file pixmap: %sFilemenu fileDi quando in quando ricordatevi di salvare la griglia.AiutoAiuto sulla creazione di un film: quando premi 'ok', gtkmorph ripeterà un ciclo per %d volte. Ogni volta, i coefficienti di warp e di dissolvenza saranno impostati a una interpolazione fra i valori 'inizio' e 'fine' che avete salvato con il menù `salva coefficienti dei morph'. Ogni volta un'immagine sarà salvata (in formato %s), iniziando da '%s' e finendo con '%s'. Alla fine saranno create tutte le animazioni richieste: la GIF animata sarà '%s.gif', il file mpef sarà '%s.mpeg' (e mpeg_encode userà '%s.param' per i parametri, se disponibile: vedi in %s/mpeg.param per un esempio, oppure copia la parte finale di %s.auto.param) e infine le animazioni saranno mostrate. Potrete ricreare le animazioni premendo 'replay'. ecco alcuni consigli per usare questo programma 0) all'avvio il programma è pronto per fare deformazioni, cioè `warp': leggete il `aiuto sul warp' 1) per fare morph, servono 2 o più imagini di input : usate `aggiungi un immagine' (nel menù `file'); leggete `aiuto sul morph' 2) se tenete il mouse fermo su una voce di menù o su un bottone, vedrete un suggerimento sulla funzione che questo esegue; 3) quando il puntatore del mouse è sulla griglia , con il tasto di destra si ottiene un menù che contiene utili funzioni di editing. Se vi serve più aiuto, attivate la guida. Qui finisce la guida Grazie e arrivederciPremete il bottone 'deforma' per vedere il warp. Se non siete soddisfatti, scegliete 'modifica griglia' nel menù opzioni (in alto al centro) e modificate la griglia ulteriormente. Di quando in quando ricordatevi di salvare la griglia.Se desiderate, potete caricare una immagine nella finestra principale; vi aiuterà se dovete fare dei warp e volete avere un riferimento da usare come meta. Questo non è strettamente necessario, potete anche farne a meno. Se nella immagine di riferimento vi sono 3 punti importanti, come gli occhi e la bocca in una faccia, potete trascinare 3 punti bianchi su questi. Similmente, se avete una griglia di riferimento associata a questa immagine, potete caricarla ora, con il bottone 'carica griglia'. Quando avete finito, premete il bottone 'guida'.Non è difficile usare questo programma per eseguire una deformazione (un 'warp'): 1) caricate l'immagine nella finestra di input (con 'apri immagine') 2) deformate le griglie (con il tasto sinistro trascinate i punti, con il destro ottenete un utile menù) 3) premete il tasto 'deforma' Caricare la sessione di esempio potrebbe rovinare la vostra sessione attuale. Per favore salvate tutte le griglie e riprovate.MorphNoOra aggiustate la griglia della/e immagine/i di input così da ben delineare i tratti salienti delle immagini. Se premete il tasto destro del mouse mentre siete su una griglia, comparirà un utile menù. Fate attenzione che i punti su diverse griglie siano sincronizzati, cioè che il punto (i,j) di ogni griglia sia sempre associato allo stesso elemento pittorico; per questo motivo, quando spostate un punto, il punto associato in ogni altra immagine lampeggia. Quando avete posizionato punti su un tratto somatico, potete collezionarli in un 'lineamento'.Ora dovete caricare le immagini di input. In ciascuna immagini di input, carica l'immagine usando il bottone 'carica immagine'. Ora voi selezionate una sottoimmagine in ciascuna immagine di input. A questo scopo potete, o spostare il rettangolo di selezione (usando le regolazioni in fondo alla finestra) oppure trascinare i 3 punti bianchi (v. [1]), detti 'puntatori occhi'. Quando avete scelto la sottoimmagine, premete 'applica' (e la finestra sparirà). Se più avanti decidete che non siete soddisfatti, poete premere sul menù opzioni (al centro in alto) e selezionare 'seleziona sottoimmagine' per ripetere il processo. Alternativamente, se avete già una griglia per questa immagine, la potete caricare ora; dato che la scelta della sottoimmagine è salvata con la griglia, quando ricaricate la griglia, la sottoimmagine viene reimpostata come salvato. [1] Notate che non potete spostare i 3 punti liberamente: la loro posizione mutua è copiata dalla posizione dei 3 punti di riferimento nella immagine risultante; siate pazienti. Notate anche che il rettangolo ha un 'aspect' [2] fissato; se volete cambiarlo a piacere, deselezionate mantieni l'aspect' nelle preferenze dell'immagine. [2] 'aspect' è il rapporto fra altezza e larghezza delle immagini.Ora potete selezionare la dimensione dell'immagine risultante. A questo scopo, nella parte bassa della finestra principale, vi sono due cursori; selezionate la dimensione e premete 'applica'. Dopo questo, sarete riportati alla guida. Potrete cambiare di nuovo la dimensione risultante in qualunque momento selezionando `dimensione immagine risultante' nel menù `edit'.OKEsciSeleziona colorePreferenzeSpiacente: i file temporanei possono essere salvati solo come png, e non come ppm; ma 'mencoder' non legge i ppm. Dovete compilare gtkmorph con una versione nuova di libGTKLa directory 'example' dovrebbe essere in '%s' ma non c'è.La directory 'example' dovrebbe essere in '%s' ma non c'è. Installate il pacchetto Debian 'gtkmorph-example'.Questa immagine %d ha una griglia di dimensioni %ld per %ld mentre la griglia risultante è %d per %d! Non si può effettuare un warp! Ti suggerisco di aggiungere linee a entrambe le griglie fino a che entrambe sono %d per %d.Il file esiste già! Se lo volete sovrascrivere, prima cancellatelo.Questa griglia è generata automaticamente. Non vorrai sovrascrivere un'altra griglia con questa!Suggerimenti: 1) cercate di tenere le linee della griglia più lineari possibile: aggiungete nuove linee allo scopo (con il bottone destro del mouse) se serve! 2) per avere un morph migliore, in ciascuna immagine mettere il 'coefficiente di griglia' a un massimo, premete 'deforma' e aggiustate la griglia fino a che il warp ha un buon aspetto. 3) se state litigando con dettagli troppo piccoli, dovreste ingrandire l'immagine risultante con il bottone 'x2', fino a che non avete risolto i problemi.Per realizzare un film, scegliete 'crea animazione' nel menù Morph. Comparirà una finestra. Premete il bottone di aiuto per avere ulteriori informazioni.Per creare un morph, dovete decidere quanto ciascuna immagine influenza il risultato finale. A questo scopo, dovete impostare i coefficienti: il cursore 'interpolazione griglia' determina quanto questa griglia influenzerà la griglia risultante, e il cursore 'miscelaz. immagine' quanto questa immagine sarà visibile nella immagine risultante. Dopo premete il bottone 'morph' nella finestra principale per vedere il morph. Se non siete soddisfatti, scegliete 'modifica griglia' (in alto al centro nelle finestre di input) e aggiustate ulteriormente le griglie; oppure, scegliete 'v. i. deformata e le griglie' e aggiustate i cursori. Se volete aggiustare i cursori con i 'coefficienti di morph', potete anche scegliere 'mostra coefficienti di morph' nel menù 'edit'. Suggerimenti: impostate tutti i coefficienti a valori uguali e eseguite un primo morph: se le immagini non si sovrappongono bene, potete seleziona una sottoimmagine di ciscuna immagini di input per cercare di sovrapporle meglio.Non è difficile usare questo programma per eseguire un 'morph': 1) caricate un'immagine in ciascuna finestra di input (con 'apri immagine') 2) sistemate le griglie con il mouse (con il tasto sinistro trascinate i punti, con il destro ottenete un utile menù) 3) premete il tasto 'morph' SìState attualmente vedendo la versione 'warp' dell'immagine questa griglia (che si riferisce alla immagine caricata) non si può modificare. Per editare la griglia, selezionate 'modifica griglia' (in alto al centro). Il programma lo ha fatto ora per voi.Voi potete eseguire 'warp' (deformazioni) o 'morph'. 'warp' significa deformare, distorcere, piegare, etc etc. Se avete una sola immagine in input e volete deformarla, potete fare un 'warp'. In questo caso premete 'prossima'. 'morph' è un procedimento per cui alcune immagini vengono deformate e le versioni deformate vengono miscelate (in un effetto di dissolvenza). Per questo vi servono almeno due immagini. Se questo è il vostro caso, premete 'esegui il compito' e poi nel menù 'file' scegliete 'aggiungi un immagine', tante volte quante sono le immagini a voi necessarie, e poi premete 'guida' nella finestra principale. Notate che all'avvio il programma è pronto per il 'warp': vi è solo un immagine di input.`modifica griglia': mostra l'immagine caricata e modifica la griglia su essa. `vis. warp': mostra il risultato del warp. `v il warp e le griglie': come sopra ma con la griglia. `scegli sottoimmagine': scegli quale parte dell'immagini caricata usare per il morph.`visual. imm. caricata': mostra l'immagine caricata e modifica la griglia su essa. `vis. morph': mostra il risultato del morph. `v il morph e le griglie': come sopra ma con la griglia. `modifica puntatori occhi': sistema la posizione di riferimento per gli occhi.un punto di griglia non può entrare in una cella vicina (questo attualmente non funziona molto bene)aggiungi un immagineaggiungi linea orizzontaleaggiungi nuovi lineamenti alla fine della listaaggiungi linea verticaleaggiustasistema tutte le grigliesistema il punto della griglia, rispetto all'immagine precedentesistema i punti della griglia confrontando la immagine originale e il morphsistema la posizione di un punto della griglia confrontanto questa immagine con la precedente e cercando un miglior abbinamento. Ottiene precisione sub-pixel ma potrebbe spostare i punti in modo erratico.forza i coefficienti di miscelazion ad avere somma 1; (se non è così, sono internamente rinormalizatti quando serve)forza sempre i coefficienti di griglia ad avere somma 1; (se non è così, sono internamente rinormalizatti quando serve)anima la sequenzaanimazioniogni modifica (aggiungi/cancella, etichetta/assegna..) in una griglia è replicata nelle altreapplicaassegnaassegna puntoassegna punto al lineamentosistemazione automatica puntimiscelazione automaticainterpolazione automatica grigliemiscela automaticamente le immagini se i coefficienti di immagine vengono cambiatiinterpola automaticante le griglie in input per creare la griglia risultante (nota che in questo caso non la si può editare) torna alla guidai punti al bordo della griglia sono bloccati sul bordo dell'immaginec xc ynon si può ricaricare l'intera sessione: non vi sono più immagini disponibilinon posso redimensionare l'immagine %d - il nome del file non c'èannullascegli il filtro antialiasing (per migliorare la qualità): il nucleo 'lanczos' è migliore ma necessario se l'immagine ha dettagli fini o tessiture, e/o per animazioniSeleziona una sottoimmaginecoefficientinon si può aprire il file '%s' in lettura: '%s'non si può aprire il file '%s' in scrittura: '%s'crea AVI MPEG4crea e salva molti morph, spaziati uniformemente fra i coefficienti "inizio" e "fine" (che si possono salvare con il men qui sopra)crea immagine gif animatacrea un file AVI in formato MPEG4 (usa i programmi 'mplayer' e 'mencoder')crea una GIF animata (usa 'convert' e 'animate' , dal pacchetto imagemagick)crea un file mpeg e lo mostra; vedi help (usa i comandi esterni 'mpeg_play' e 'mpeg_encode')crea e salva tutti i frami di morph, costruisce le animazionicrea mpegcursore saltellantecancella linea orizzontalecancella linea verticalecancellacancella l'ultimo lineamentogriglia differenzascurisci immaginedisattivaesegue miscelazioneesegue morphdeformaesegui il compitofai quello che è proposto in questa paginanon visualizzare avvisi, fai solo 'bip'; gli avvisi si possono leggere con il comando "perché ha fatto 'bip'?" nel menù "aiuto"editmodifica puntatori occhimodifica i lineamentimodifica grigliamodifica templatefineenergia usata per lisciare le griglieugualiequalizza le immagini di input cosicché le energie nelle sottobande wavelet siano ugualierroreerrore nel caricare il file PLYerrore!lineamentoaiuto su 'lineamenti'prefisso del nome dei file dei fotogrammifotogrammaaiutotorna alla pagina precedente della guidagtkmorphgtkmorph non trova la libreria libply, e dunque non può caricare superfici PLY. Leggete la documentazione per installare libply.guida gtkmorphlente gtkmorphgtkmorph filmquesta versione di GtkMorph non è stata compilata con il supporto per i file PLY gtkmorph non è stato compilato con il supporto per la libreria wavelet 'Waili'guidaguida...altezzaaiutoaiuto...nascondi inutilinascondi gli strumenti inutili, invece di disattivarliquanti fotogrammiquanti fotogrammi saranno calcolati; ciascuno sarà memorizzato in un filemiscelaz. immaginisomma coefficienti di immagine=1deduce la sottoimmagine dalla posizione degli occhiinformazioneimmagine in inputerrore interno: l'immagine non esiste pi?!?interpola griglieinterpola grigliesalva l'immagine che visualizzataapri immagineapri grigliacarica %scarica una "griglia differenza", che è contiene la differenza fra due grigliecarica una griglia differenzacarica una griglia differenzacarica sessione di esempiocarica griglia per %scarica sessioneapri l'immagine. Questa immagine non può essere manipolata, ma può essere di aiuto nel sistemare la griglia risultanteapri l'immagine selezionatainterpol. griglieauto sincronizzazione grigliele griglie non possono autosovrapporsisomma coefficienti di griglia=1la griglia non è modificabilesuggerimenti su grigliedissolvi tutte le immagini deformate nell' `immagine risultante' usando i `coefficienti di immagine' come pesiaiuto su 'morph'esegui morph delle immaginicrea animazioneimmagine 'morph'muovimuovi un singolo puntomuovi un intero lineamentomuove l'immagine per ricentrare l'ultimo punto modificatonuovoprossimaniente avvisinumero seriale del primo fileokcollezionacolleziona tutti i punti selezionati in questo lineamentol'analisi del file di sessione è fallital'analisi del file di sessione è fallita subito all'inizio!permette di modificare le griglie (aggiungi e togli linee) e i lineamentisi prega di inserire il nome del fileper favore usate un formato di immagine che sia supportatomantieni l'aspectmantieni il bordoprecedentevisualizza le immagini di warp in finestre separatedomandadomanda?rinominareplayrisalva e mostra le animazioniresetricarica coefficienti dei morph...immagine risultantedimensione immagine risultantedimensione immagine risultante...salva differenzasalva immaginesalva grigliasalva %ssalva %s (solo in formato PPM)salva la differenza fra questa griglia e un'altra grigliasalva la differenza di due grigliesalva griglia per %ssalva session n.selezionaseleziona puntometti per questa griglia il risultato dell'interpolazione delle altre griglie (esegue una media usando i `coefficienti di griglia' come pesi)preferenzemostra tutte le immaginimostra la sequenza animata dopo averla salvata (usa 'animate' , dal pacchetto imagemagick)mostra la sequenza animata dopo averla salvata (usa 'animate' , dal pacchetto imagemagick)mostra la differenza che intercorre da questa griglia a un'altra griglia, con freccine bianchemostra lentemostra differenza da questa griglia a...mostra coefficienti di morphmostra il warpsalta queste operazioni e vai alla prossima paginalisciaspiacente: non si possono creare file AVI con una virgola ',' nel nome (per colpa di 'mencoder')spiacente, questa funzione non è implementatainiziointerrompe il calcolo dei fotogrammisalva coefficienti dei morph...memorizza internamente lo stato di tutti i coefficienti (per fare animazioni)stirastira un intero lineamentoposizione sottoimmaginequando viene effettuato un warp/morph, mostra nelle finestre di input i warp (solo se il precedente non è attivato) immagine di riferimentoil tentativo di chiudere l'immagine '%s' salvata ha prodotto l'errore: '%s'Il tentatico di caricare il file.mesh ha prodotto un errore (o questo non è un file contenente una griglia, oppure è danneggiato)il tentativo di aprire l'immagine '%s' ha prodotto l'errore: '%s'il tentativo di riaprire l'immagine '%s' ha prodotto l'errore: '%s'il tentativo di salvare l'immagine '%s' ha prodotto l'errore: '%s'la dissolvenza di immagini ne fa una media, che perde dettagli; puoi attivare questo algoritmo di restauro (basato sulla trasformata wavelet)il nome del file ha estensione '%s' ma l'immagine è stata salvata in formato '%s'. Questa discrepanza può provocare problemi nel visualizzare l'immagine.i file dei fotogrammi saranno numerati sequenzialmente iniziando da questo numerole immagini in input sono deformate usando la griglia risultante e dissolve usando i `coefficienti di immagine' come pesi. Questo bottone ha lo stesso risultato che si ottiene premendo tutti i bottoni `deforma' nelle singole immagini di input e poi premendo il bottone `dissolvi'.le immagini in input sono deformate usando la griglia risultante e dissolve usando i `coefficienti di immagine' come pesi. Questo bottone ha lo stesso risultato che si ottiene premendo tutti i bottoni `deforma' nelle singole immagini di input e poi premendo il bottone `dissolvi'.Le immagini in imput hanno differente numero di canali: non si può eseguire una dissolvenzala griglia della immagine risultante viene posta a una interpolazione delle grglie delle immagini di input, pesate con i coefficienti di grigliale griglie %s non sono state salvate! vuoi uscire lo stesso?la dimensione dell'immagine l=%d a=%d e la dimensione l=%d a=%d memorizzata nella griglia non combacianoquesti coefficienti decidono quanto questa immagine/griglia influenzerà il morphquesto nome di file è già usato dalla griglia dell'immagine %dquesta è la profondità della trasformata waveletquesta griglia è stata creata sull'immagine '%s' e non su questa immagine '%s'per dissolvere le immagini, la somma di tutti i coefficienti deve essere non nulla. Ho inserito valori di default.per eseguire la interpolazione, ci vogliono due (o più) immagini di input per eseguire la interpolazione, i coefficienti di griglia devono avere somma non zero. Ho impostato i valori di default.per fare un morph, ci vogliono due (o più) immagini di inputseguitipo di energia minimizzata per decidere la posizione dei punti non selezionati delle griglie: la "energia di piastra sottile" ("thin_plate") è la migliore ma è lenta, per accelerare usa la energia elastica quando editi la grigliascollezionadistruggi questo lineamento e trasforma tutti i suoi punti in punti selezionatideselezionadeseleziona puntousa un warping con antialiasingv il morph e le grigliev. i. deformata e le griglievisualizza gli occhivis. morphmostra griglia originalemostra punti originalivisualizza l'immagine deformatavisualizza la griglia deformatavisualizza i punti della griglia deformataattenzioneattenzione!aiuto su 'warp'deforma questa immagine, da questa griglia alla griglia risultante, e mostra il risultatoimmagine deformataimmagine deformata in altra finestraprofondità waveletequalizzazione waveletequalizza usando waveletbenvenutoquando si carica un immagine, l'aspect viene mantenutoquando esegui un `morph' o quando dissolvi, questi coefficienti peseranno quanto queste immagini appariranno nell'immagine risultantequando le griglie vengono interpolate, questi coefficienti peseranno quanto ogni griglia influenzerà la griglia risultanteperché ha fatto 'bip'?larghezzafinestra1coordinata x del centrox2coordinata y del centronon si può modificare questa griglia - è automaticamente generata interpolando le immagini di input. (se veramente vuoi modificarla, deseleziona `interpolazione automatica griglie')devi caricare un'immagine prima di poter selezionare una sottoimmaginexmorph-20140707+nmu2/po/Makevars0000664000000000000000000000342512356304632013164 0ustar # Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Gourlay, Mennucci # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = mennucc1@debian.org # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = xmorph-20140707+nmu2/po/en@quot.header0000664000000000000000000000226312356325452014257 0ustar # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # xmorph-20140707+nmu2/po/remove-potcdate.sin0000664000000000000000000000066012356325452015302 0ustar # Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } xmorph-20140707+nmu2/po/stamp-po0000664000000000000000000000001212356326052013140 0ustar timestamp xmorph-20140707+nmu2/po/Makevars.template0000664000000000000000000000341612356325452015001 0ustar # Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Free Software Foundation, Inc. # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = xmorph-20140707+nmu2/po/de.po0000664000000000000000000022550012356343214012417 0ustar # Translation of xmorph to German # Copyright (C) 1994-2000 Michael J. Gourlay, 2000 Gourlay, Mennucci. # This file is distributed under the same license as the xmorph package. # Chris Leick , 2009. # msgid "" msgstr "" "Project-Id-Version: xmorph 1:20090606\n" "Report-Msgid-Bugs-To: mennucc1@debian.org\n" "POT-Creation-Date: 2014-07-06 23:50+0200\n" "PO-Revision-Date: 2014-07-06 23:58+0200\n" "Last-Translator: Chris Leick \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: glade2/support.c:90 glade2/support.c:114 glade1/support.c:121 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Pixmap-Datei konnte nicht gefunden werden: %s" #: glade2/interface.c:154 glade1/interface.c:141 po/gtkmorph.glade2.c:7 #: po/gtkmorph.glade.c:7 msgid "gtkmorph" msgstr "gtkmorph" #: glade2/interface.c:166 glade1/interface.c:160 po/gtkmorph.glade2.c:8 #: po/gtkmorph.glade.c:9 msgid "File" msgstr "Datei" #: glade2/interface.c:175 gtkmorph/callbacks_main.c:181 glade1/interface.c:177 #: po/gtkmorph.glade2.c:9 po/gtkmorph.glade.c:10 msgid "load session" msgstr "Sitzung laden" #: glade2/interface.c:180 gtkmorph/callbacks_main.c:198 glade1/interface.c:185 #: po/gtkmorph.glade2.c:10 po/gtkmorph.glade.c:11 msgid "save session" msgstr "Sitzung speichern" #: glade2/interface.c:191 glade1/interface.c:202 po/gtkmorph.glade2.c:11 #: po/gtkmorph.glade.c:12 msgid "add an image" msgstr "ein Bild hinzufügen" #: glade2/interface.c:196 po/gtkmorph.glade2.c:13 msgid "load a difference" msgstr "einen Unterschied laden" #: glade2/interface.c:200 po/gtkmorph.glade2.c:12 msgid "" "load a \"differential mesh\", that is a mesh representing the difference of " "two meshes" msgstr "" "ein »unterschiedliches Kontrollpolygonnetz« laden, welches ein " "Kontrollpolygonnetz ist, das den Unterschied zweier Kontrollpolygonnetze " "repräsentiert." #: glade2/interface.c:208 glade1/interface.c:219 po/gtkmorph.glade2.c:14 #: po/gtkmorph.glade.c:13 msgid "Quit" msgstr "Beenden" #: glade2/interface.c:216 glade1/interface.c:230 po/gtkmorph.glade2.c:15 #: po/gtkmorph.glade.c:14 msgid "Edit" msgstr "Bearbeiten" #: glade2/interface.c:225 glade1/interface.c:246 po/gtkmorph.glade2.c:16 #: po/gtkmorph.glade.c:15 msgid "show all images" msgstr "alle Bilder anzeigen" #: glade2/interface.c:230 glade1/interface.c:254 po/gtkmorph.glade2.c:17 #: po/gtkmorph.glade.c:16 msgid "show mag" msgstr "Magazin anzeigen" #: glade2/interface.c:241 glade1/interface.c:271 po/gtkmorph.glade2.c:18 #: po/gtkmorph.glade.c:17 msgid "resulting image size..." msgstr "resultierende Bildgröße ..." #: glade2/interface.c:246 glade1/interface.c:279 po/gtkmorph.glade2.c:19 #: po/gtkmorph.glade.c:18 msgid "show morph factors" msgstr "Umwandlungsfaktoren anzeigen" #: glade2/interface.c:251 glade1/interface.c:287 po/gtkmorph.glade2.c:20 #: po/gtkmorph.glade.c:19 msgid "Settings" msgstr "Einstellungen" #: glade2/interface.c:256 glade1/interface.c:295 po/gtkmorph.glade2.c:21 #: po/gtkmorph.glade.c:20 msgid "Morph" msgstr "Morph" #: glade2/interface.c:265 glade1/interface.c:311 po/gtkmorph.glade2.c:23 #: po/gtkmorph.glade.c:22 msgid "interpolate meshes" msgstr "Kontrollpolygonnetze interpolieren" #: glade2/interface.c:269 glade1/interface.c:318 po/gtkmorph.glade2.c:22 #: po/gtkmorph.glade.c:21 msgid "" "the mesh of the resulting image is set to an interpolation of the input " "images' meshes, weighted by the ``mesh factors''" msgstr "" "das Kontrollpolygonnetz des resultierenden Bildes wird auf eine " "Interpolation des Eingabebildkontrollpolygonnetzes gesetzt, gewichtet durch " "»Kontrollpolygonnetzfaktoren«" #: glade2/interface.c:271 glade1/interface.c:320 po/gtkmorph.glade2.c:25 #: po/gtkmorph.glade.c:24 msgid "morph images" msgstr "Bilder umwandeln" #: glade2/interface.c:275 glade1/interface.c:327 po/gtkmorph.glade2.c:24 #: po/gtkmorph.glade.c:23 msgid "" "the input images are warped to the resulting mesh and blended using ``image " "blending factors'' as weights. It has the same effect as if you hit all the " "``do warp'' buttons and then you hit the ``do blending'' button" msgstr "" "die Eingabebilder werden zum resultierenden Kontrollpolygonnetz verzerrt und " "unter Benutzung von »Bildverzerrungsfaktoren« gemischt. Es hat den gleichen " "Effekt, als wenn Sie alle »verzerren«-Knöpfe und dann den »vermischen«-Knopf " "drücken." #: glade2/interface.c:286 glade1/interface.c:341 po/gtkmorph.glade2.c:27 #: po/gtkmorph.glade.c:26 msgid "adjust all meshes" msgstr "alle Kontrollpolygonnetze anpassen" #: glade2/interface.c:290 glade1/interface.c:348 po/gtkmorph.glade2.c:26 #: po/gtkmorph.glade.c:25 msgid "adjust points of meshes confronting original images and the morph" msgstr "" "Punkte des Kontrollpolygonnetzes durch Gegenüberstellen der Originalbilder " "und der Gestaltänderung anpassen" #: glade2/interface.c:292 glade1/interface.c:350 po/gtkmorph.glade2.c:29 #: po/gtkmorph.glade.c:28 msgid "wavelet equalize" msgstr "Angleichen einer kleinen Welle" #: glade2/interface.c:296 glade1/interface.c:357 po/gtkmorph.glade2.c:28 #: po/gtkmorph.glade.c:27 msgid "" "equalize input images so that the subband of wavelet transform have the same " "energies" msgstr "" "Eingabebilder angleichen, so dass das Unterband der Umwandlung der kleinen " "Welle die gleichen Energien hat" #: glade2/interface.c:304 glade1/interface.c:368 po/gtkmorph.glade2.c:30 #: po/gtkmorph.glade.c:29 msgid "restore morph coefficients..." msgstr "Umwandlungskoeffizienten wiederherstellen ..." #: glade2/interface.c:313 glade2/interface.c:338 glade1/interface.c:384 #: glade1/interface.c:425 po/gtkmorph.glade2.c:31 po/gtkmorph.glade2.c:36 #: po/gtkmorph.glade.c:30 po/gtkmorph.glade.c:35 msgid "start" msgstr "Start" #: glade2/interface.c:318 glade2/interface.c:343 glade1/interface.c:392 #: glade1/interface.c:433 po/gtkmorph.glade2.c:32 po/gtkmorph.glade2.c:37 #: po/gtkmorph.glade.c:31 po/gtkmorph.glade.c:36 msgid "end" msgstr "Ende" #: glade2/interface.c:323 glade1/interface.c:400 po/gtkmorph.glade2.c:33 #: po/gtkmorph.glade.c:32 msgid "equal" msgstr "gleich" #: glade2/interface.c:328 glade1/interface.c:408 po/gtkmorph.glade2.c:35 #: po/gtkmorph.glade.c:34 msgid "store morph coefficients..." msgstr "Umwandlungskoeffizienten speichern ..." #: glade2/interface.c:332 glade1/interface.c:415 po/gtkmorph.glade2.c:34 #: po/gtkmorph.glade.c:33 msgid "" "stores internally the state of all mesh and image-blending factors (to make " "morph sequences)" msgstr "" "speichert intern den Status aller Kontrollpolygonnetz- und " "Bildvermischungsfaktoren (um Umwandlungsabfolgen zu erzeugen)" #: glade2/interface.c:348 glade1/interface.c:441 po/gtkmorph.glade2.c:39 #: po/gtkmorph.glade.c:38 msgid "morph sequence" msgstr "Umwandlungsabfolge" #: glade2/interface.c:352 glade1/interface.c:448 po/gtkmorph.glade2.c:38 #: po/gtkmorph.glade.c:37 msgid "" "create and save many morphs, equally spaced between the morph start and the " "morph end (that you have already stored with the above menu)" msgstr "" "viele Umwandlungen mit gleichem Abstand zwischen dem Umwandlungsanfang und " "dem Umwandlungsende erstellen und speichern (die Sie bereits mit dem Menü " "darüber gespeichert haben)" #: glade2/interface.c:360 glade1/interface.c:459 po/gtkmorph.glade2.c:40 #: po/gtkmorph.glade.c:39 po/gtkmorph.glade.c:191 msgid "Help" msgstr "Hilfe" #: glade2/interface.c:369 glade1/interface.c:475 po/gtkmorph.glade2.c:41 #: po/gtkmorph.glade.c:40 msgid "guide..." msgstr "Anleitung ..." #: glade2/interface.c:374 po/gtkmorph.glade2.c:42 msgid "load example session" msgstr "Beispielsitzung laden" #: glade2/interface.c:385 glade1/interface.c:492 po/gtkmorph.glade2.c:43 #: po/gtkmorph.glade.c:41 msgid "help..." msgstr "Hilfe ..." #: glade2/interface.c:394 glade1/interface.c:508 po/gtkmorph.glade2.c:44 #: po/gtkmorph.glade.c:42 msgid "generic help" msgstr "allgemeine Hilfe" #: glade2/interface.c:399 glade1/interface.c:516 po/gtkmorph.glade2.c:45 #: po/gtkmorph.glade.c:43 msgid "warp help" msgstr "Verzerrungshilfe" #: glade2/interface.c:404 po/gtkmorph.glade2.c:46 msgid "mesh tips" msgstr "Kontrollpolygonnetz-Tipps" #: glade2/interface.c:409 glade1/interface.c:524 po/gtkmorph.glade2.c:47 #: po/gtkmorph.glade.c:44 msgid "morph help" msgstr "Umwandlungshilfe" #: glade2/interface.c:414 po/gtkmorph.glade2.c:48 msgid "feature help" msgstr "Hilfe für Merkmal" #: glade2/interface.c:425 glade1/interface.c:541 po/gtkmorph.glade2.c:49 #: po/gtkmorph.glade.c:45 msgid "why the beep?" msgstr "Warum das Piepen?" #: glade2/interface.c:440 glade2/interface.c:1240 glade1/interface.c:565 #: glade1/interface.c:1342 po/gtkmorph.glade2.c:51 po/gtkmorph.glade2.c:108 #: po/gtkmorph.glade.c:47 po/gtkmorph.glade.c:105 msgid "" "load\n" "image" msgstr "" "Bild\n" "laden" #: glade2/interface.c:445 glade1/interface.c:573 po/gtkmorph.glade2.c:50 #: po/gtkmorph.glade.c:46 msgid "" "load the image. This image may not be warped or morphed, but it may help in " "setting the resulting mesh" msgstr "" "das Bild laden. Dieses Bild könnte nicht verzerrt oder umgewandelt sein, " "aber es könnte beim Setzen des resultierenden Kontrollpolygonnetzes helfen" #: glade2/interface.c:447 glade2/interface.c:1246 glade1/interface.c:575 #: glade1/interface.c:1351 po/gtkmorph.glade2.c:53 po/gtkmorph.glade2.c:110 #: po/gtkmorph.glade.c:49 po/gtkmorph.glade.c:107 msgid "" "load\n" "mesh" msgstr "" "Kontrollpolygonnetz\n" "laden" #: glade2/interface.c:453 glade2/interface.c:1252 glade1/interface.c:584 #: glade1/interface.c:1360 po/gtkmorph.glade2.c:55 po/gtkmorph.glade2.c:112 #: po/gtkmorph.glade.c:51 po/gtkmorph.glade.c:109 msgid "" "save\n" "mesh" msgstr "" "Kontrollpolygonnetz\n" "speichern" #: glade2/interface.c:464 glade1/interface.c:601 po/gtkmorph.glade2.c:57 #: po/gtkmorph.glade.c:53 msgid "" "``edit template'': view the loaded image and edit the mesh on it. \\n ``view " "morphed'': view the result of morphing. ``v.morph&mesh'' as above but " "with the mesh. ``edit eyes points'' sets the reference position of the eyes" msgstr "" "»Schablone bearbeiten«: Sehen Sie sich das geladene Bild an und bearbeiten " "Sie das daraufliegende Kontrollpolygonnetz. \\n »Umgewandeltes ansehen«: " "Sehen Sie das Resultat der Umwandlung. »Umwandlung & Kontrollpolygonnetz " "ansehen« wie oben, aber mit dem Kontrollpolygonnetz. »Augenpunkte " "bearbeiten« setzt die Bezugsposition der Augen." #: glade2/interface.c:469 glade1/interface.c:603 po/gtkmorph.glade2.c:58 #: po/gtkmorph.glade.c:54 msgid "edit template" msgstr "Schablone bearbeiten" #: glade2/interface.c:474 glade1/interface.c:606 po/gtkmorph.glade2.c:59 #: po/gtkmorph.glade.c:55 msgid "view morph" msgstr "Umwandlung ansehen" #: glade2/interface.c:479 glade1/interface.c:609 po/gtkmorph.glade2.c:60 #: po/gtkmorph.glade.c:56 msgid "v morph&meshes" msgstr "Umwandlung & Kontrollpolygonnetz ansehen" #: glade2/interface.c:484 glade1/interface.c:612 po/gtkmorph.glade2.c:61 #: po/gtkmorph.glade.c:57 msgid "edit eyes points" msgstr "Augenpunkte bearbeiten" #: glade2/interface.c:491 glade2/interface.c:1297 glade1/interface.c:617 #: glade1/interface.c:1393 po/gtkmorph.glade2.c:62 po/gtkmorph.glade2.c:122 #: po/gtkmorph.glade.c:58 po/gtkmorph.glade.c:116 msgid "settings" msgstr "Einstellungen" #: glade2/interface.c:497 glade1/interface.c:626 po/gtkmorph.glade2.c:64 #: po/gtkmorph.glade.c:60 msgid "" "interpol.\n" "meshes" msgstr "" "Interpolation\n" "Kontrollpolygonnetze" #: glade2/interface.c:502 glade1/interface.c:634 po/gtkmorph.glade2.c:63 #: po/gtkmorph.glade.c:59 msgid "" "set this mesh to be an interpolation of all other meshes, using ``mesh " "factors'' as weights" msgstr "" "stellt unter Benutzung von »Kontrollpolygonnetzfaktoren« als Gewicht ein, " "dass dieses Kontrollpolygonnetz eine Interpolation aller anderen " "Kontrollpolygonnetze ist" #: glade2/interface.c:504 glade1/interface.c:636 po/gtkmorph.glade2.c:67 #: po/gtkmorph.glade.c:63 msgid "" "do\n" "blending" msgstr "vermischen" #: glade2/interface.c:509 glade1/interface.c:644 po/gtkmorph.glade2.c:66 #: po/gtkmorph.glade.c:62 msgid "" "mix all the warped images in the ``resulting image'' using ``image blending " "factors'' as weights" msgstr "" "alle verzerrten Bilder im »Ergebnisbild« mixen unter Benutzung von " "»Bildvermischungsfaktoren« als Gewicht" #: glade2/interface.c:511 glade1/interface.c:646 po/gtkmorph.glade2.c:70 #: po/gtkmorph.glade.c:66 msgid "" "do\n" "morph" msgstr "" "wandle\n" "um" #: glade2/interface.c:516 glade1/interface.c:654 po/gtkmorph.glade2.c:69 #: po/gtkmorph.glade.c:65 msgid "" "the input images are warped to the resulting mesh and blended using ``image " "blending factors'' as weights. It has the same effect as if you hit all the " "``do warp'' buttons and then you hit the ``do blending'' button." msgstr "" "die Eingabebilder werden unter Benutzung von »Bildvermischungsfaktoren« als " "Gewicht zu einem resultierenden Kontrollpolygonnetz verzerrt. Es hat den " "gleichen Effekt, als wenn Sie alle »verzerren«-Knöpfe und dann den " "»vermischen«-Knopf drücken." #: glade2/interface.c:518 glade2/interface.c:1310 glade1/interface.c:656 #: glade1/interface.c:1412 po/gtkmorph.glade2.c:73 po/gtkmorph.glade2.c:127 #: po/gtkmorph.glade.c:69 po/gtkmorph.glade.c:121 msgid "" "save\n" "image" msgstr "" "Bild\n" "speichern" #: glade2/interface.c:523 glade2/interface.c:1315 glade1/interface.c:664 #: glade1/interface.c:1420 po/gtkmorph.glade2.c:72 po/gtkmorph.glade2.c:126 #: po/gtkmorph.glade.c:68 po/gtkmorph.glade.c:120 msgid "it saves whatever image is currently shown in the window" msgstr "es speichert welches Bild auch immer aktuell im Fenster angezeigt wird" #: glade2/interface.c:525 glade2/interface.c:1317 glade1/interface.c:666 #: glade1/interface.c:1422 po/gtkmorph.glade2.c:76 po/gtkmorph.glade2.c:130 #: po/gtkmorph.glade.c:72 po/gtkmorph.glade.c:124 msgid "guide" msgstr "Anleitung" #: glade2/interface.c:530 glade2/interface.c:1322 glade1/interface.c:674 #: glade1/interface.c:1430 po/gtkmorph.glade2.c:75 po/gtkmorph.glade2.c:129 #: po/gtkmorph.glade.c:71 po/gtkmorph.glade.c:123 msgid "back to guide" msgstr "zurück zur Anleitung" #: glade2/interface.c:572 glade1/interface.c:734 po/gtkmorph.glade2.c:78 #: po/gtkmorph.glade.c:74 msgid "new" msgstr "neu" #: glade2/interface.c:577 glade1/interface.c:742 po/gtkmorph.glade2.c:77 #: po/gtkmorph.glade.c:73 msgid "add new feature to the end of list" msgstr "neues Merkmal an das Ende der Liste hinzufügen" #: glade2/interface.c:579 glade1/interface.c:744 po/gtkmorph.glade2.c:79 #: po/gtkmorph.glade.c:75 msgid "rename" msgstr "umbenennen" #: glade2/interface.c:585 glade1/interface.c:753 po/gtkmorph.glade2.c:81 #: po/gtkmorph.glade.c:77 msgid "pack" msgstr "packen" #: glade2/interface.c:590 glade1/interface.c:761 po/gtkmorph.glade2.c:80 #: po/gtkmorph.glade.c:76 msgid "pack the selected points in this feature" msgstr "die gewählten Punkte in dieses Merkmal packen" #: glade2/interface.c:592 glade1/interface.c:763 po/gtkmorph.glade2.c:83 #: po/gtkmorph.glade.c:79 msgid "unpack" msgstr "entpacken" #: glade2/interface.c:597 glade1/interface.c:771 po/gtkmorph.glade2.c:82 #: po/gtkmorph.glade.c:78 msgid "unpack this feature and transforms all points of it to selected points" msgstr "" "dieses Merkmal entpacken und alle Punkte davon in ausgewählte Punkte " "umwandeln" #: glade2/interface.c:599 glade1/interface.c:773 po/gtkmorph.glade2.c:85 #: po/gtkmorph.glade.c:81 msgid "delete" msgstr "löschen" #: glade2/interface.c:604 glade1/interface.c:781 po/gtkmorph.glade2.c:84 #: po/gtkmorph.glade.c:80 msgid "delete last feature" msgstr "letztes Merkmal löschen" #: glade2/interface.c:614 glade2/interface.c:2508 glade1/interface.c:795 #: glade1/interface.c:2656 po/gtkmorph.glade2.c:87 po/gtkmorph.glade2.c:199 #: po/gtkmorph.glade.c:83 po/gtkmorph.glade.c:194 msgid "edit" msgstr "bearbeiten" #: glade2/interface.c:622 glade2/interface.c:2515 glade1/interface.c:796 #: glade1/interface.c:2657 po/gtkmorph.glade2.c:86 po/gtkmorph.glade2.c:198 #: po/gtkmorph.glade.c:82 po/gtkmorph.glade.c:193 msgid "move single point" msgstr "einzelnen Punkt bewegen" #: glade2/interface.c:628 glade2/interface.c:2520 glade1/interface.c:811 #: glade1/interface.c:2670 po/gtkmorph.glade2.c:89 po/gtkmorph.glade2.c:201 #: po/gtkmorph.glade.c:85 po/gtkmorph.glade.c:196 msgid "move" msgstr "bewegen" #: glade2/interface.c:636 glade2/interface.c:2527 glade1/interface.c:812 #: glade1/interface.c:2671 po/gtkmorph.glade2.c:88 po/gtkmorph.glade2.c:200 #: po/gtkmorph.glade.c:84 po/gtkmorph.glade.c:195 msgid "move whole feature" msgstr "gesamtes Merkmal bewegen" #: glade2/interface.c:641 glade2/interface.c:2533 glade1/interface.c:826 #: glade1/interface.c:2685 po/gtkmorph.glade2.c:91 po/gtkmorph.glade2.c:203 #: po/gtkmorph.glade.c:87 po/gtkmorph.glade.c:198 msgid "stretch" msgstr "strecken" #: glade2/interface.c:649 glade2/interface.c:2540 glade1/interface.c:827 #: glade1/interface.c:2686 po/gtkmorph.glade2.c:90 po/gtkmorph.glade2.c:202 #: po/gtkmorph.glade.c:86 po/gtkmorph.glade.c:197 msgid "stretch whole feature" msgstr "gesamtes Merkmal strecken" #: glade2/interface.c:658 glade1/interface.c:837 po/gtkmorph.glade2.c:92 #: po/gtkmorph.glade.c:88 msgid "-" msgstr "-" #: glade2/interface.c:665 glade1/interface.c:849 po/gtkmorph.glade2.c:93 #: po/gtkmorph.glade.c:89 msgid "select" msgstr "auswählen" #: glade2/interface.c:677 glade1/interface.c:864 po/gtkmorph.glade2.c:94 #: po/gtkmorph.glade.c:90 msgid "unselect" msgstr "Auswahl aufheben" #: glade2/interface.c:689 glade1/interface.c:879 po/gtkmorph.glade2.c:96 #: po/gtkmorph.glade.c:92 msgid "assign" msgstr "zuweisen" #: glade2/interface.c:697 glade1/interface.c:880 po/gtkmorph.glade2.c:95 #: po/gtkmorph.glade.c:91 msgid "assign point to feature" msgstr "Punkt einem Merkmal zuweisen" #: glade2/interface.c:725 glade2/interface.c:1350 gtkmorph/dialogs.c:85 #: glade1/interface.c:908 glade1/interface.c:1450 po/gtkmorph.glade2.c:97 #: po/gtkmorph.glade2.c:131 po/gtkmorph.glade.c:93 po/gtkmorph.glade.c:125 msgid "error" msgstr "Fehler" #: glade2/interface.c:746 glade2/interface.c:1502 glade1/interface.c:951 #: glade1/interface.c:1660 po/gtkmorph.glade2.c:98 po/gtkmorph.glade2.c:146 #: po/gtkmorph.glade.c:95 po/gtkmorph.glade.c:141 msgid "width" msgstr "Breite" #: glade2/interface.c:760 glade2/interface.c:1516 glade1/interface.c:971 #: glade1/interface.c:1678 po/gtkmorph.glade2.c:99 po/gtkmorph.glade2.c:147 #: po/gtkmorph.glade.c:96 po/gtkmorph.glade.c:142 msgid "height" msgstr "Höhe" #: glade2/interface.c:774 glade1/interface.c:991 po/gtkmorph.glade2.c:100 #: po/gtkmorph.glade.c:97 msgid "x2" msgstr "x2" #: glade2/interface.c:780 glade1/interface.c:1000 po/gtkmorph.glade2.c:101 #: po/gtkmorph.glade.c:98 msgid "/2" msgstr "/2" #: glade2/interface.c:786 glade2/interface.c:1530 glade1/interface.c:1009 #: glade1/interface.c:1696 po/gtkmorph.glade2.c:102 po/gtkmorph.glade2.c:148 #: po/gtkmorph.glade.c:99 po/gtkmorph.glade.c:143 msgid "apply" msgstr "bestätigen" #: glade2/interface.c:792 glade1/interface.c:933 po/gtkmorph.glade2.c:103 #: po/gtkmorph.glade.c:94 msgid "resulting image size" msgstr "resultierende Bildgröße" #: glade2/interface.c:797 po/gtkmorph.glade2.c:104 msgid "welcome" msgstr "Willkommen" #: glade2/interface.c:1124 glade2/interface.c:1228 glade1/interface.c:1228 #: glade1/interface.c:1323 po/gtkmorph.glade2.c:105 po/gtkmorph.glade2.c:107 #: po/gtkmorph.glade.c:100 po/gtkmorph.glade.c:104 msgid "error!" msgstr "Fehler!" #: glade2/interface.c:1133 glade1/interface.c:1240 po/gtkmorph.glade2.c:106 #: po/gtkmorph.glade.c:101 msgid "load the selected image" msgstr "das ausgewählte Bild laden" #: glade2/interface.c:1258 po/gtkmorph.glade2.c:115 msgid "" "save\n" "diff" msgstr "" "Unterschied\n" "speichern" #: glade2/interface.c:1263 po/gtkmorph.glade2.c:114 msgid "save difference from this mesh to other mesh" msgstr "" "Unterschiede von diesem Kontrollpolygonnetz in einem anderen " "Kontrollpolygonnetz speichern" #: glade2/interface.c:1270 glade1/interface.c:1377 po/gtkmorph.glade2.c:117 #: po/gtkmorph.glade.c:111 msgid "" "``edit mesh'': view the loaded image and edit the mesh on it. ``view " "warp'': view the result of warping the loaded image from this mesh to the " "resulting mesh. ``v. warp&meshes'' as before but with both " "meshes on. ``choose subimage'' choose which subimage of the " "loaded image you wish to use. You can also use the 'settings' " "button to change these settings more finely." msgstr "" "»Kontrollpolygonnetz bearbeiten«: Das geladene Bild ansehen und das " "Kontrollpolygonnetz darauf bearbeiten. »Verzerrung ansehen«: Das " "Ergebnis der Verzerrung des geladenen Bildes von diesem Kontrollpolygonnetz " "zu dem resultierenden Kontrollpolygonnetz ansehen. »Umwandlung " "& Kontrollpolygonnetz ansehen« wie vorher, aber mit beiden " "Kontrollpolygonnetzen darauf. »Unterbild wählen« wählt welche " "Unterbild des geladenen Bildes Sie benutzen möchten. Sie können " "außerdem den »Einstellungen«-Knopf benutzen, um diese Einstellung genauer zu " "setzen." #: glade2/interface.c:1275 glade1/interface.c:1379 po/gtkmorph.glade2.c:118 #: po/gtkmorph.glade.c:112 msgid "edit mesh" msgstr "Kontrollpolygonnetz bearbeiten" #: glade2/interface.c:1280 glade1/interface.c:1382 po/gtkmorph.glade2.c:119 #: po/gtkmorph.glade.c:113 msgid "view warp" msgstr "Verzerrung ansehen" #: glade2/interface.c:1285 glade1/interface.c:1385 po/gtkmorph.glade2.c:120 #: po/gtkmorph.glade.c:114 msgid "v. warp&meshes" msgstr "Umwandlung & Kontrollpolygonnetz ansehen" #: glade2/interface.c:1290 glade1/interface.c:1388 po/gtkmorph.glade2.c:121 #: po/gtkmorph.glade.c:115 msgid "choose subimage" msgstr "Unterbild auswählen" #: glade2/interface.c:1303 glade1/interface.c:1402 po/gtkmorph.glade2.c:124 #: po/gtkmorph.glade.c:118 msgid "" "do\n" "warp" msgstr "verzerren" #: glade2/interface.c:1308 glade1/interface.c:1410 po/gtkmorph.glade2.c:123 #: po/gtkmorph.glade.c:117 msgid "" "warp this image from this mesh to the resulting mesh, and show the result in " "this window or an accessory window" msgstr "" "dieses Bild von diesem Kontrollpolygonnetz zu dem " "Ergebniskontrollpolygonnetz verzerren und das Ergebnis in diesem oder einem " "zusätzlichen Fenster anzeigen" #: glade2/interface.c:1359 glade1/interface.c:1476 po/gtkmorph.glade2.c:132 #: po/gtkmorph.glade.c:126 msgid "" "these coefficents decide how much this image/mesh will influence the final " "morph" msgstr "" "diese Koeffizienten entscheiden, wie stark dieses Bild/Kontrollpolygonnetz " "die endgültige Umwandlung beeinflusst" #: glade2/interface.c:1374 glade1/interface.c:1497 po/gtkmorph.glade2.c:133 #: po/gtkmorph.glade.c:128 msgid "" "image\n" "blending" msgstr "" "Bild\n" "vermischen" #: glade2/interface.c:1382 glade2/interface.c:2670 glade1/interface.c:1507 #: po/gtkmorph.glade2.c:135 po/gtkmorph.glade2.c:208 po/gtkmorph.glade.c:130 msgid "" "mesh\n" "interp." msgstr "" "Kontrollpolygonnetz\n" "interpolieren" #: glade2/interface.c:1419 glade1/interface.c:1553 po/gtkmorph.glade2.c:137 #: po/gtkmorph.glade.c:132 msgid "" "when you morph the images, or you ``do mixing'', this factor will measure " "how much this image will show in the mixing in the resulting image" msgstr "" "wenn Sie diese Bilder umwandeln oder Sie »mixen«, wird dieser Faktor messen, " "wie viel dieses Bild im Mix des resultierenden Bildes zeigen wird" #: glade2/interface.c:1430 glade2/interface.c:2690 glade1/interface.c:1567 #: po/gtkmorph.glade2.c:138 po/gtkmorph.glade2.c:210 po/gtkmorph.glade.c:133 msgid "" "when you use the ``interpolate meshes'' function, the ``mesh factor'' " "measures how much this mesh will influence the resulting image's mesh" msgstr "" "wenn Sie die »Kontrollpolygonnetze interpolieren«-Funktion benutzen, misst " "der »Kontrollpolygonnetzfaktor«, wie stark dieses Kontrollpolygonnetz das " "Kontrollpolygonnetz des Ergebnisbildes beeinflusst" #: glade2/interface.c:1434 glade1/interface.c:1478 po/gtkmorph.glade2.c:139 #: po/gtkmorph.glade.c:127 msgid "coefficients" msgstr "Koeffizienten" #: glade2/interface.c:1454 glade1/interface.c:1595 po/gtkmorph.glade2.c:141 #: po/gtkmorph.glade.c:136 msgid "reset" msgstr "zurücksetzen" #: glade2/interface.c:1458 glade1/interface.c:1602 po/gtkmorph.glade2.c:140 #: po/gtkmorph.glade.c:135 msgid "infer the subimage from the eyes position" msgstr "das Unterbild aus der Augenposition schlussfolgern" #: glade2/interface.c:1464 glade1/interface.c:1611 po/gtkmorph.glade2.c:142 #: po/gtkmorph.glade.c:137 msgid "x coordinate of center" msgstr "x-Koordinate der Mitte" #: glade2/interface.c:1466 glade1/interface.c:1613 po/gtkmorph.glade2.c:143 #: po/gtkmorph.glade.c:138 msgid "c x" msgstr "c x" #: glade2/interface.c:1485 glade1/interface.c:1639 po/gtkmorph.glade2.c:144 #: po/gtkmorph.glade.c:139 msgid "y coordinate of center" msgstr "y-Koordinate der Mitte" #: glade2/interface.c:1487 glade1/interface.c:1641 po/gtkmorph.glade2.c:145 #: po/gtkmorph.glade.c:140 msgid "c y" msgstr "c y" #: glade2/interface.c:1536 glade1/interface.c:1579 po/gtkmorph.glade2.c:149 #: po/gtkmorph.glade.c:134 msgid "subimage position" msgstr "Unterbildposition" #: glade2/interface.c:1690 gtkmorph/dialogs.c:74 glade1/interface.c:1813 #: po/gtkmorph.glade2.c:150 po/gtkmorph.glade.c:144 msgid "warning" msgstr "Warnung" #: glade2/interface.c:1697 glade1/interface.c:1824 po/gtkmorph.glade2.c:152 #: po/gtkmorph.glade.c:146 msgid "warning!" msgstr "Warnung!" #: glade2/interface.c:1708 glade1/interface.c:1840 po/gtkmorph.glade2.c:151 #: po/gtkmorph.glade.c:145 msgid "ok" msgstr "Ok" #: glade2/interface.c:1753 gtkmorph/utils.c:358 glade1/interface.c:1879 #: po/gtkmorph.glade2.c:153 po/gtkmorph.glade.c:147 msgid "warped image" msgstr "verzerrtes Bild" #: glade2/interface.c:1785 po/gtkmorph.glade2.c:154 msgid "frame6" msgstr "frame6" #: glade2/interface.c:1838 glade1/interface.c:1945 po/gtkmorph.glade2.c:155 #: po/gtkmorph.glade.c:148 msgid "unselect point" msgstr "Punktauswahl aufheben" #: glade2/interface.c:1843 glade1/interface.c:1953 po/gtkmorph.glade2.c:156 #: po/gtkmorph.glade.c:149 msgid "select point" msgstr "Punkt auswählen" #: glade2/interface.c:1848 glade1/interface.c:1961 po/gtkmorph.glade2.c:157 #: po/gtkmorph.glade.c:150 msgid "assign point" msgstr "Punkt zuweisen" #: glade2/interface.c:1853 glade1/interface.c:1969 po/gtkmorph.glade2.c:159 #: po/gtkmorph.glade.c:151 msgid "adjust" msgstr "anpassen" #: glade2/interface.c:1857 po/gtkmorph.glade2.c:158 msgid "adjust mesh point position w.r.t. previous image" msgstr "Kontrollpolygonnetzpunktposition bezüglich vorherigem Bild anpassen" #: glade2/interface.c:1865 glade1/interface.c:1986 po/gtkmorph.glade2.c:160 #: po/gtkmorph.glade.c:152 msgid "add horizontal line" msgstr "horizontale Linie hinzufügen" #: glade2/interface.c:1873 glade1/interface.c:1997 po/gtkmorph.glade2.c:161 #: po/gtkmorph.glade.c:153 msgid "add vertical line" msgstr "vertikale Linie hinzufügen" #: glade2/interface.c:1881 glade1/interface.c:2008 po/gtkmorph.glade2.c:162 #: po/gtkmorph.glade.c:154 msgid "del horizontal line" msgstr "horizontale Linie löschen" #: glade2/interface.c:1889 glade1/interface.c:2019 po/gtkmorph.glade2.c:163 #: po/gtkmorph.glade.c:155 msgid "del vertical line" msgstr "vertikale Linie löschen" #: glade2/interface.c:1903 glade1/interface.c:2039 po/gtkmorph.glade2.c:164 #: po/gtkmorph.glade.c:156 msgid "smooth" msgstr "glatt" #: glade2/interface.c:1999 glade1/interface.c:2120 po/gtkmorph.glade2.c:165 #: po/gtkmorph.glade.c:157 msgid "gtkmorph movie" msgstr "gtkmorph-Film" #: glade2/interface.c:2020 glade1/interface.c:2145 po/gtkmorph.glade2.c:166 #: po/gtkmorph.glade.c:158 msgid "how many frames will be saved; each will be saved in a file" msgstr "" "wie viele Einzelbilder gespeichert werden. Jedes wird in einer Datei " "gespeichert" #: glade2/interface.c:2022 glade1/interface.c:2147 po/gtkmorph.glade2.c:167 #: po/gtkmorph.glade.c:159 msgid "how many frames" msgstr "wie viele Einzelbilder" #: glade2/interface.c:2049 glade1/interface.c:2181 po/gtkmorph.glade2.c:168 #: po/gtkmorph.glade.c:160 msgid "" "the files of the frames will be numbered sequentially starting from this " "number" msgstr "" "die Dateien der Einzelbilder werden von dieser Nummer beginnend fortlaufend " "nummeriert" #: glade2/interface.c:2051 glade1/interface.c:2183 po/gtkmorph.glade2.c:169 #: po/gtkmorph.glade.c:161 msgid "number of first file" msgstr "Nummer der ersten Datei" #: glade2/interface.c:2069 glade1/interface.c:2210 po/gtkmorph.glade2.c:170 #: po/gtkmorph.glade.c:162 msgid "file base name" msgstr "Dateibasisname" #: glade2/interface.c:2080 glade1/interface.c:2226 po/gtkmorph.glade2.c:171 #: po/gtkmorph.glade.c:163 msgid "frame" msgstr "Einzelbild" #: glade2/interface.c:2092 glade1/interface.c:2244 po/gtkmorph.glade2.c:173 #: po/gtkmorph.glade.c:166 msgid "create animated gif" msgstr "bewegtes GIF erzeugen" #: glade2/interface.c:2098 glade1/interface.c:2253 po/gtkmorph.glade2.c:172 #: po/gtkmorph.glade.c:165 msgid "" "creates an animated gif (needs 'convert' from imagemagick) and plays it " "(needs 'animate' from imagemagick)" msgstr "" "ein bewegtes GIF erzeugen (benötigt »convert« von Imagemagick) und es " "abspielen (benötigt »animate« von Imagemagick)" #: glade2/interface.c:2100 glade1/interface.c:2255 po/gtkmorph.glade2.c:175 #: po/gtkmorph.glade.c:168 msgid "animate sequence" msgstr "Abfolge bewegen" #: glade2/interface.c:2106 po/gtkmorph.glade2.c:174 msgid "" "show animated sequence after saving it all (on some platforms, it may need " "'animate' command from imagemagick)" msgstr "" "bewegte Abfolge anzeigen, nachdem alles gespeichert wurde (auf einigen " "Plattformen könnten Sie den »animate«-Befehl von Imagemagick benötigen)" #: glade2/interface.c:2108 glade1/interface.c:2266 po/gtkmorph.glade2.c:177 #: po/gtkmorph.glade.c:170 msgid "replay" msgstr "erneut abspielen" #: glade2/interface.c:2116 glade1/interface.c:2277 po/gtkmorph.glade2.c:176 #: po/gtkmorph.glade.c:169 msgid "resaves and replays animations" msgstr "Animationen erneut speichern und abspielen" #: glade2/interface.c:2118 glade1/interface.c:2279 po/gtkmorph.glade2.c:179 #: po/gtkmorph.glade.c:172 msgid "creates mpeg" msgstr "MPEG erzeugen" #: glade2/interface.c:2124 glade1/interface.c:2288 po/gtkmorph.glade2.c:178 #: po/gtkmorph.glade.c:171 msgid "" "creates an mpeg file and plays it; will use a parameter file (see help) " "(needs 'mpeg_encode' and 'mpeg_play')" msgstr "" "erzeugt eine MPEG-Datei und spielt sie ab. Wird eine Parameterdatei benutzen " "(siehe Hilfe) (benötigt »mpeg_encode« und »mpeg_play«)" #: glade2/interface.c:2126 po/gtkmorph.glade2.c:181 msgid "create AVI MPEG4" msgstr "AVI-MPEG4 erzeugen" #: glade2/interface.c:2132 po/gtkmorph.glade2.c:180 msgid "creates an AVI file in MPEG4 format (needs 'mplayer' and 'mencoder')" msgstr "" "erzeugt eine AVI-Datei im MPEG4-Format (benötigt »mplayer« und »mencoder«)" #: glade2/interface.c:2142 glade1/interface.c:2228 po/gtkmorph.glade2.c:182 #: po/gtkmorph.glade.c:164 msgid "animations" msgstr "Animationen" #: glade2/interface.c:2158 glade1/interface.c:2327 po/gtkmorph.glade2.c:183 #: po/gtkmorph.glade.c:173 msgid "creates and saves all morphs, builds animations" msgstr "erzeugt und speichert alle Umwandlungen, bildet Animationen" #: glade2/interface.c:2168 po/gtkmorph.glade2.c:184 msgid "stops the computation of frames" msgstr "Stoppt die Berechnung von Einzelbildern" #: glade2/interface.c:2261 glade1/interface.c:2397 po/gtkmorph.glade2.c:185 #: po/gtkmorph.glade.c:177 msgid "gtkmorph guide" msgstr "gtkmorph-Anleitung" #: glade2/interface.c:2293 glade1/interface.c:2440 po/gtkmorph.glade2.c:187 #: po/gtkmorph.glade.c:179 msgid "prev" msgstr "vorheriger" #: glade2/interface.c:2298 glade1/interface.c:2448 po/gtkmorph.glade2.c:186 #: po/gtkmorph.glade.c:178 msgid "go back to previous guide pane" msgstr "zurück zum vorherigen Anleitungsfensterbereich gehen" #: glade2/interface.c:2300 glade1/interface.c:2450 po/gtkmorph.glade2.c:189 #: po/gtkmorph.glade.c:181 msgid "do it" msgstr "ausführen" #: glade2/interface.c:2305 glade1/interface.c:2458 po/gtkmorph.glade2.c:188 #: po/gtkmorph.glade.c:180 msgid "do what is proposed in this pane" msgstr "ausführen, was in diesem Fensterbereich vorgeschlagen wird" #: glade2/interface.c:2307 glade1/interface.c:2460 po/gtkmorph.glade2.c:191 #: po/gtkmorph.glade.c:183 msgid "next" msgstr "weiter" #: glade2/interface.c:2312 glade1/interface.c:2468 po/gtkmorph.glade2.c:190 #: po/gtkmorph.glade.c:182 msgid "skip this and go to next guide pane" msgstr "diesen überspringen und zum nächsten Anleitungsfensterbereich gehen" #: glade2/interface.c:2361 glade1/interface.c:2508 po/gtkmorph.glade2.c:192 #: po/gtkmorph.glade.c:184 msgid "question" msgstr "Frage" #: glade2/interface.c:2368 glade1/interface.c:2516 po/gtkmorph.glade2.c:195 #: po/gtkmorph.glade.c:187 msgid "question?" msgstr "Frage?" #: glade2/interface.c:2384 glade1/interface.c:2540 po/gtkmorph.glade2.c:193 #: po/gtkmorph.glade.c:185 msgid "Yes" msgstr "Ja" #: glade2/interface.c:2389 glade1/interface.c:2548 po/gtkmorph.glade2.c:194 #: po/gtkmorph.glade.c:186 msgid "No" msgstr "Nein" #: glade2/interface.c:2425 glade1/interface.c:2577 po/gtkmorph.glade2.c:196 #: po/gtkmorph.glade.c:188 msgid "Select Color" msgstr "Farbe auswählen" #: glade2/interface.c:2487 glade1/interface.c:2625 po/gtkmorph.glade2.c:197 #: po/gtkmorph.glade.c:192 msgid "window1" msgstr "window1" #: glade2/interface.c:2581 glade1/interface.c:2723 po/gtkmorph.glade2.c:204 #: po/gtkmorph.glade.c:199 msgid "gtkmorph mag" msgstr "gtkmorph-Magazin" #: glade2/interface.c:2594 glade1/interface.c:2741 po/gtkmorph.glade2.c:205 #: po/gtkmorph.glade.c:200 msgid "1" msgstr "1" #: glade2/interface.c:2605 glade1/interface.c:2759 po/gtkmorph.glade2.c:206 #: po/gtkmorph.glade.c:201 msgid "track" msgstr "Spur" #: glade2/interface.c:2662 gtkmorph/utils2_c:6 po/gtkmorph.glade2.c:207 msgid "differential mesh" msgstr "unterschiedliches Kontrollpolygonnetz" #: gtkmorph/settings.c:84 msgid "no warnings" msgstr "keine Warnungen" #: gtkmorph/settings.c:87 msgid "" "dont warn, just beep; warnings may be read with 'why the beep' in the 'help' " "menu" msgstr "" "nicht warnen, nur piepen. Warnungen können mit »warum das Piepen« im " "»Hilfemenü« gelesen werden" #: gtkmorph/settings.c:91 msgid "edit features" msgstr "Merkmale bearbeiten" #: gtkmorph/settings.c:94 msgid "permits to add and delete mesh lines, edit features" msgstr "" "erlaubt es Kontrollpolygonnetzlinien hinzuzufügen, zu löschen und Merkmale " "zu bearbeiten" #: gtkmorph/settings.c:98 msgid "preserve border" msgstr "Rand erhalten" #: gtkmorph/settings.c:101 msgid "border points of the mesh are forced to stay on the border of the image" msgstr "Randpunkte des Kontrollpolygonnetzes müssen am Rand des Bildes bleiben" #: gtkmorph/settings.c:105 msgid "hide unusable" msgstr "unbrauchbare verstecken" #: gtkmorph/settings.c:108 msgid "hide unusable widgets, instead of deactivating them" msgstr "unbrauchbare Widgets verstecken anstatt sie zu deaktivieren" #: gtkmorph/settings.c:112 msgid "cursor jump" msgstr "Cursor-Sprung" #: gtkmorph/settings.c:115 msgid "moves the image to recenter the last edited point" msgstr "" "bewegt das Bild, um den letzten bearbeiteten Punkt wieder zu zentrieren" #: gtkmorph/settings.c:119 msgid "mesh cant overlap" msgstr "Kontrollpolygonnetz kann nicht überlappen" #: gtkmorph/settings.c:122 msgid "" "a mesh point cannot enter in a neighbouring cell (this is currently not very " "well enforced)" msgstr "" "ein Kontrollpolygonnetzpunkt kann nicht in einer benachbarten Zelle " "eingegeben werden (die ist aktuell nicht sehr gut durchgesetzt)" #: gtkmorph/settings.c:126 msgid "use antialiasing warping" msgstr "Kantenglättungverzerrung benutzen" #: gtkmorph/settings.c:129 msgid "" "choose antialiasing method that is used when warping: the lanczos kernels " "are slower, but are necessary if the images have fine or grained textures " "for animations" msgstr "" "Kantenglättungsmethode auswählen, die beim Verzerren benutzt wird: Die " "Lanczos-Kernel sind langsamer, aber notwendig, wenn das Bild feine oder " "gemaserte Texturen für Animationen hat." #: gtkmorph/settings.c:134 msgid "wavelet equalization" msgstr "Angleichung kleiner Wellen" #: gtkmorph/settings.c:137 msgid "" "the averaging of images will lose details; you may enable an enhancing " "algorithm (based on wavelets)" msgstr "" "bei der Durchschnittsberechnung der Bilder gehen Details verloren. Sie " "könnten einen steigernden Algorithmus (auf Basis kleiner Wellen) einschalten" #: gtkmorph/settings.c:141 msgid "wavelet depth" msgstr "Tiefe kleiner Wellen" #: gtkmorph/settings.c:144 msgid "this is the depth of the wavelets" msgstr "dies ist die Tiefe der kleinen Wellen" #: gtkmorph/settings.c:149 msgid "energy for mesh smoothing" msgstr "Energie für Kontrollpolygonnetzglättung" #: gtkmorph/settings.c:152 msgid "" "type of energy that is minimized to decide the position of the non-selected " "mesh points: thin plate energy is better but slower, to speed up use elastic " "energy when editing meshes" msgstr "" "Typ der Energie, die minimiert ist, um die Position der nicht ausgewählten " "Kontrollpolygonnetzpunkte zu entscheiden: Dünne Plattenenergie ist besser, " "aber langsamer. Benutzen Sie zum Beschleunigen elastische Energie, wenn " "Kontrollpolygonnetze bearbeitet werden" #: gtkmorph/settings.c:156 msgid "auto point adjust" msgstr "Punkt automatisch anpassen" #: gtkmorph/settings.c:159 msgid "" "adjust the position of a mesh point by comparing this image with the " "previous one and doing a best match. Achieves sub-pixel precision but may " "move your point around erratically." msgstr "" "die Position von einem Kontrollpolygonnetzpunkt durch Vergleichen dieses " "Bildes mit dem vorherigen anpassen und das am besten passende tun. Erreicht " "Unter-Pixel-Präzision, könnte Ihren Punkt jedoch ziellos umherbewegen." #: gtkmorph/settings.c:163 msgid "mesh factors sum to 1" msgstr "Kontrollpolygonnetzfaktorensumme auf 1" #: gtkmorph/settings.c:166 msgid "" "always force the mesh factors so that they sum to 1;\n" "(if not, they are internally renormalized before using)" msgstr "" "immer erzwingen, dass die Kontrollpolygonnetzfaktoren sich auf 1 summieren.\n" "(wenn nicht, werden sie intern vor der Benutzung erneut normalisiert)" #: gtkmorph/settings.c:170 msgid "image factors sum to 1" msgstr "Bildfaktorensumme auf 1" #: gtkmorph/settings.c:173 msgid "" "always force the image factors so that they sum to 1;\n" "(if not, they are internally renormalized before using)" msgstr "" "immer erzwingen, das die Bildfaktoren sich auf 1 summieren.\n" "(wenn nicht, werden sie intern vor der Benutzung erneut normalisiert)" #: gtkmorph/settings.c:177 msgid "automatic mesh interpolation" msgstr "automatische Kontrollpolygonnetz-Interpolation" #: gtkmorph/settings.c:180 msgid "" "automatically interpolates the resulting mesh when morphing (note that in " "this case you cannot edit it)" msgstr "" "interpoliert automatisch das resultierende Kontrollpolygonnetz, wenn es " "umgewandelt wird (beachten Sie, dass Sie es in diesem Fall nicht bearbeiten " "können)" #: gtkmorph/settings.c:184 msgid "automatic blending" msgstr "automatisches Vermischen" #: gtkmorph/settings.c:187 msgid "" "automatically blends the images when the image blending factors are changed" msgstr "" "vermischt automatisch die Bilder, wenn die Bildvermischungsfaktoren geändert " "werden" #: gtkmorph/settings.c:191 msgid "mesh auto sync" msgstr "automatische Kontrollpolygonnetz-Synchronisation" #: gtkmorph/settings.c:194 msgid "any change (add/del, label/unlabel) to a mesh is replicated" msgstr "" "jede Änderung (hinzufügen/löschen, beschriften/Beschriftung entfernen) an " "einem Kontrollpolygonnetz wird kopiert." #: gtkmorph/settings.c:198 msgid "warped image in other win" msgstr "verzerrtes Bild in anderem Fenster" #: gtkmorph/settings.c:201 msgid "put warped images in another window" msgstr "verzerrtes Bild in ein anderes Fenster verschieben" #: gtkmorph/settings.c:207 msgid "show warp after warp" msgstr "Verzerrung nach Verzerren anzeigen" #: gtkmorph/settings.c:210 msgid "" "switch the input window(s) to the warped image after a warp (overridden by " "the above)" msgstr "" "das/die Eingabefenster zu dem verzerrten Bild nach einer Verzerrung " "umschalten (überschrieben von dem darüberliegenden)" #: gtkmorph/settings.c:273 msgid "preserve aspect ratio" msgstr "Seitenverhältnis beibehalten" #: gtkmorph/settings.c:276 msgid "when loading an image, preserve aspect ratio" msgstr "beim Laden eines Bildes, das Seitenverhältnis beibehalten" #: gtkmorph/settings.c:280 msgid "dim image" msgstr "Bild abblenden" #: gtkmorph/settings.c:287 msgid "view original mesh" msgstr "Originalkontrollpolygonnetz ansehen" #: gtkmorph/settings.c:294 msgid "view original points" msgstr "Originalpunkte ansehen" #: gtkmorph/settings.c:308 msgid "view warped mesh" msgstr "verzerrtes Kontrollpolygonnetz ansehen" #: gtkmorph/settings.c:315 msgid "view warped points" msgstr "verzerrte Punkte ansehen" #: gtkmorph/settings.c:329 msgid "view eyes" msgstr "Augen ansehen" #: gtkmorph/settings.c:343 msgid "mesh is readonly" msgstr "Kontrollpolygonnetz ist nur zum Lesen geöffnet" #: gtkmorph/settings.c:383 msgid "disable" msgstr "ausschalten" #: gtkmorph/settings.c:416 msgid "show mesh difference to..." msgstr "Kontrollpolygonnetzunterschied anzeigen zu ..." #: gtkmorph/settings.c:418 msgid "show difference between this mesh and another mesh, as white arrows" msgstr "" "den Unterschied zwischen diesem Kontrollpolygonnetz und einem anderen " "Kontrollpolygonnetz als weiße Pfeile anzeigen" #: gtkmorph/utils2_c:14 msgid "resulting image" msgstr "Ergebnisbild" #: gtkmorph/utils2_c:19 gtkmorph/utils.c:350 msgid "input image" msgstr "Eingabebild" #: gtkmorph/feature.c:201 msgid "(unavailable feature name)" msgstr "(nicht verfügbarer Merkmalname)" #: gtkmorph/feature.c:366 gtkmorph/feature.c:386 msgid "feature" msgstr "Merkmal" #: gtkmorph/feature.c:504 msgid "sorry this functions is as yet unimplemented" msgstr "" "Entschuldigung. Diese Funktionen ist in der vorliegenden Form noch " "nichtimplementiert" #: gtkmorph/guide_text.c:20 msgid "-Introduction" msgstr "-Einleitung" #: gtkmorph/guide_text.c:22 msgid "" " Welcome to GtkMorph\n" "\n" "GtkMorph is a powerful program that permits you to warp or morph images.\n" "\n" " Using this guide.\n" "\n" "Hit 'next' to skip a topic, or 'do it' to do it; when you have done a topic, " "hit 'Guide' in the main window to come back to the guide.\n" "(Note that, when you hit 'do it', the guide will iconify and deiconify other " "windows to highlight your task: with some dumb window managers, this will " "not work ok).\n" " If you are not satisfied by the way you have complied with the guide " "requests, hit 'prev' and 'do it' to retry the task.\n" "As a first task, you may get acquainted with the main gtkmorph window: if " "you want to give it a look, hit 'do it': the main window will pop up! Note " "that, if you keep the mouse still on a menu voice or on a button for a " "moment, a tip shows up. When you are done, hit 'Guide' to come back to the " "guide.\n" "If you know the program main window, simply hit 'next'.\n" "\n" "If you are fed up with the guide, you may stop it at any time by closing " "this window: the normal gtkmorph program will pop up.\n" "\n" "If you want to test the program, you may want to load the example session:" "look into the 'Help' menu." msgstr "" " Willkommen bei GtkMorph\n" "\n" "GtkMorph ist ein leistungsstarkes Programm, das es Ihnen erlaubt Bilder zu " "verzerren oder umzuwandeln.\n" "\n" " Benutzung dieser Anleitung\n" "\n" "Drücken Sie »weiter«, um ein Thema zu überspringen oder »ausführen«, um es " "auszuführen. Wenn Sie ein Thema erledigt haben, drücken Sie im Hauptfenster " "»Anleitung«, um zurück zur Anleitung zu kommen.\n" "(Beachten Sie dass, wenn Sie »ausführen« drücken, diese Anleitung minimiert " "und andere Fenster maximiert wird, um Ihre Aufgabe hervorzuheben: Bei " "einigen dummen Fenstermanagern funktioniert dies nicht richtig).\n" "Wenn Sie mit dem Weg nicht zufrieden sind, den Sie mit der Anleitungsabfrage " "eingehalten haben, drücken Sie »vorheriger« und dann »ausführen«, um die " "Aufgabe zu wiederholen.\n" "Als erste Aufgabe könnten Sie sich mit dem GtkMorph-Hauptfenster vertraut " "machen: Wenn Sie ihm ein eigenes Aussehen geben wollen, drücken Sie auf " "»ausführen«: Das Hauptfenster erscheint. Beachten Sie dass, wenn Sie die " "Maus für einen Moment still über einem Menüpunkt oder einem Knopf halten, " "ein Tipp erscheint. Wenn Sie das getan haben, drücken Sie »Anleitung«, um " "zurück zur Anleitung zu kommen.\n" "Wenn Sie das Programmhauptfenster kennen, drücken sie einfach »weiter«.\n" "\n" "Wenn Sie von der Anleitung die Nase voll haben, können Sie sie durch " "Schließen dieses Fensters stoppen. Das normale GtkMorph-Programm erscheint.\n" "\n" "Wenn Sie das Programm testen möchten, können Sie die die Beispielsitzung " "laden: Sehen Sie in das »Hilfe«-Menü." #: gtkmorph/guide_text.c:48 msgid "-Select subimage size" msgstr "-Unterbildgröße auswählen" #: gtkmorph/guide_text.c:50 msgid "" "Now you select the size that the output image(s) will have. To this end, in " "the lower part of the main window, there is a pair of spins; select your " "preferred size and hit 'apply'.\n" "After that, you will be brought back to the guide.\n" "You may change the size again by selecting 'resulting size...' in the Edit " "menu." msgstr "" "Nun wählen Sie die Größe, die das/die Ausgabebild(er) haben soll(en). An " "diesem Ende im unteren Teil des Hauptfensters ist ein Paar von Drehknöpfen. " "Wählen Sie Ihre bevorzugte Größe und drücken Sie »bestätigen«.\n" "Danach werden Sie zu dieser Anleitung zurückgeleitet.\n" "Sie können die Größe wieder ändern, indem Sie im Menü Bearbeiten " "»resultierende Größe ...« auswählen." #: gtkmorph/guide_text.c:57 msgid "-Morph or warp" msgstr "-Umwandeln oder verzerren" #: gtkmorph/guide_text.c:59 msgid "" "You may `warp' or `morph'.\n" "\n" "'Warp' means 'to deform, contort, distort, wring, bend, or otherwise " "twist'.\n" "If you have one single input image and you want to make a distortion of it, " "then you want to warp it. In this case, hit 'next'\n" "\n" "'Morphing' images instead means 'blending together warped versions of the " "images'. So to morph you need two or more input images.\n" "In this case, press 'do it', and, in the File menu, choose 'add image' as " "many times as to reach the required number of input images, then hit 'Guide' " "in the main window.\n" "\n" "Note that at startup the program is set for ``warping'': there is only one " "input image." msgstr "" "Sie können »verzerren« oder »umwandeln«.\n" "\n" "»Verzerren« bedeutet »verformen, krümmen. entstellen, auspressen, biegen " "oder auf andere Art verdrehen«.\n" "Wenn Sie nur ein einzelnes Eingabebild haben und eine Deformation davon " "erstellen wollen, möchten Sie es verzerren. In diesem Fall drücken Sie " "»weiter«.\n" "\n" "Bilder »umwandeln« heißt stattdessen, verzerrte Versionen der Bilder " "zusammenzumischen. Deshalb benötigen Sie zum Umwandeln zwei oder mehr " "Bilder.\n" "In diesem Fall drücken Sie »ausführen« und im Datei-Menü wählen Sie so lange " "»Bild hinzufügen« bis Sie die erforderliche Anzahl Bilder erreicht haben, " "dann drücken Sie »Anleitung« im Hauptfenster.\n" "\n" "Beachten Sie, dass das Programm am Anfang auf »verzerren« eingestellt ist: " "Es gibt dort nur ein Eingabebild." #: gtkmorph/guide_text.c:74 msgid "-Load image(s)" msgstr "-Bild(er) laden" #: gtkmorph/guide_text.c:76 msgid "" "Now you need to load the input images.\n" "In each input image window, load the input image using the big 'load image' " "button." msgstr "" "Sie müssen die Eingabebilder laden.\n" "In jedem Eingabefenster benutzen Sie den großen »Bild laden«-Knopf, um das " "Bild zu laden." #: gtkmorph/guide_text.c:80 msgid ";Load reference image" msgstr "; Bezugsbild laden" #: gtkmorph/guide_text.c:82 msgid "" "If you wish, you may load an image in the main window; it may help you if " "you are warping images and you want to have a reference to use as a target. " "This is not really necessary, and you may do as well without.\n" "\n" "If in this reference image there are 3 important features, like the eyes and " "mouth in face, then you should drag the 3 white points on these features.\n" "\n" "Similarly, if you have a reference mesh that is associated to this image, " "you may load it now, using the 'load mesh' button\n" "\n" "When done, click 'Guide'." msgstr "" "Wenn Sie möchten, können Sie ein Bild in das Hauptfenster laden. Es könnte " "Ihnen helfen, wenn Sie Bilder verzerren und Sie einen Bezug haben möchten " "den Sie als Ziel benutzen. Dies ist nicht wirklich notwendig und Sie können " "es auch ohne dies tun.\n" "\n" "Wenn in diesem Bezugsbild drei wichtige Merkmale sind, wie Augen und Mund in " "einem Gesicht, dann können Sie die drei weißen Punkte auf diese Merkmale " "ziehen.\n" "\n" "Wenn Sie gleichermaßen ein Bezugskontrollpolygonnetz haben, das mit diesem " "Bild verbunden ist, können Sie es nun laden, indem Sie »Kontrollpolygonnetz " "laden« drücken.\n" "\n" "Wenn dies erledigt ist, drücken Sie »Anleitung«." #: gtkmorph/guide_text.c:92 msgid "-Select subimage(s)" msgstr ".Unterbild(er) auswählen" #: gtkmorph/guide_text.c:94 msgid "" "Now you select a subimage of each input image. You do this by either moving " "the selection rectangle (using the spins at bottom of the window) or by " "dragging the 3 white feature points. (see [1] below)\n" "\n" "When you have chosen the preferred subimage, hit 'apply' (and the window " "will close). If later you find out that are not satisfied of your choice, " "you may click in the option menu (at center top) and select 'choose " "subimage' to repeat this process.\n" "\n" "Alternatively, if you have already a mesh for this image, you may load it " "now; since the subimage selection is saved with the mesh; when you load the " "saved mesh, the subimage is reselected for you.\n" "\n" " [1] Note that you cannot position the 3 points freely: their mutual " "position is copied from the position of the 3 reference points in the " "resulting image; so you will need to be patient.\n" "Note also that the selection rectangle has currently a fixed aspect (see " "[2]); if you want to freely change the aspect, change the 'preserve aspect " "ratio' setting in the 'settings'.\n" " [2] 'aspect' is the ratio between width and height." msgstr "" "Nun können Sie ein Unterbild zu jedem Bild auswählen. Sie tun dies entweder " "durch Bewegen des Rechtecks (benutzen Sie die Drehknöpfe unten im Fenster) " "oder durch Ziehen der drei weißen Punkte (siehe [1] unten).\n" "\n" "Wenn Sie das bevorzugte Unterbild ausgewählt haben, drücken Sie " "»bestätigen« (und das Fenster wird geschlossen). Wenn Sie später " "feststellen, dass Sie mit Ihrer Auswahl unzufrieden sind, können Sie in das " "Optionen-Menü klicken (oben in der Mitte) und »Unterbild auswählen« " "anklicken, um diesen Prozess zu wiederholen.\n" "Ersatzweise könnten Sie, wenn Sie bereits ein Kontrollpolygonnetz für dieses " "Bild haben, es nun laden. Wenn Sie das gespeicherte Kontrollpolygonnetz " "laden, wird das Unterbild für Sie wieder ausgewählt.\n" "\n" " [1] Beachten Sie, dass Sie die drei Punkt nicht frei setzen können: Ihre " "Position zueinander wird von der Position der drei Bezugspunkte im " "Ergebnisbild kopiert. Seien Sie geduldig.\n" "Beachten Sie außerdem, dass das Auswahlrechteck derzeit einen festen " "Standpunkt hat (siehe [2]). Wenn Sie diesen Standpunkt frei ändern wollen, " "ändern Sie die »Standpunktverhältnis beibehalten«-Einstellung in den " "»Einstellungen«.\n" " [2] »Standpunkt« ist das Verhältnis zwischen Breite und Höhe." #: gtkmorph/guide_text.c:117 msgid "-Adjust mesh" msgstr "-Kontrollpolygonnetz anpassen" #: gtkmorph/guide_text.c:119 msgid "" "Now you adjust the mesh in the input image(s) so that they best fit to the " "features of those images. If you hit the right mouse key while on the mesh, " "you will get a menu.\n" "It is very important that points in different meshes are syncronized, that " "is, that point (i,j) in every mesh is associated to the same type of " "feature; for this reason, when you drag a point in a mesh, the same point " "flashes in all other meshes.\n" "When you have put points on a feature (say, for example, the right eye), you " "may hit 'pack' to pack all this point into a 'feature'." msgstr "" "Nun passen Sie das Kontrollpolygonnetz im (in den) Eingabebild(ern) an, so " "dass es am besten zu dem Merkmalen dieser Bilder passt. Wenn Sie die rechte " "Maustaste drücken, während Sie sich auf dem Kontrollpolygonnetz befinden, " "öffnet sich ein Menü.\n" "Es ist sehr wichtig, dass Punkte in unterschiedlichen Kontrollpolygonnetzen " "synchronisiert werden, weil dieser Punkt (i,j) in jedem Kontrollpolygonnetz " "mit dem gleichen Merkmalstyp verbunden ist. Aus diesem Grund leuchtet der " "gleiche Punkt in allen anderen Kontrollpolygonnetzen auf, wenn Sie ihn in " "ein Kontrollpolygonnetz ziehen.\n" "Wenn Sie Punkte auf ein Merkmal (nehmen wir zum Beispiel das rechte Auge) " "gelegt haben, können Sie »packen« drücken, um all diese Punkte in ein " "»Merkmal« zu packen." #: gtkmorph/guide_text.c:130 msgid "From time to time, you better save the mesh(es)." msgstr "Von Zeit zu Zeit speichern Sie den/das Kontrollpolygonnetz(e) besser." #: gtkmorph/guide_text.c:132 msgid ";Warp" msgstr ";Verzerrung" #: gtkmorph/guide_text.c:134 msgid "" "Hit the 'do warp' button to view the warp. If you are not satisfied, choose " "'edit mesh' in the option menu (top center) and edit the mesh further.From " "time to time, you better save the mesh." msgstr "" "Drücken Sie den »verzerren«-Knopf, um die Verzerrung anzusehen. Wenn Sie " "nicht zufrieden sind, wählen Sie »Kontrollpolygonnetz bearbeiten« im Menü " "Option (oben in der Mitte) und bearbeiten Sie das Kontrollpolygonnetz " "weiter. Von Zeit zu Zeit speichern Sie das Kontrollpolygonnetz besser." #: gtkmorph/guide_text.c:139 msgid ":Morph" msgstr ":Umwandeln" #: gtkmorph/guide_text.c:140 msgid "" "To morph your images, you must decide how much each image should influence " "the resulting morph. To this end, you adjust the morph factors to your need; " "the 'mesh interpolation' slide tells how much this mesh will influence the " "resulting mesh, and the 'image blending' tells how much this image is " "visible in the resulting image.\n" "\n" "Then hit the 'do morph' button in the main window to view the morph.\n" " If you are not satisfied, choose 'edit mesh' in the option menu (top " "center) and edit the mesh further; or, choose 'view warp&mesh' and edit the " "morph factors.\n" "\n" "If you want to change the morph factors further, choose ``morph factors..'' " "in the 'edit' menu\n" "\n" "Tip: set all factors to equal values and do a morph: if the images do not " "superimpose well, you may try to select a subimage in each image so that " "they superimpose better" msgstr "" "Um Ihre Bilder umzuwandeln müssen Sie entscheiden, wie viel jedes Bild das " "Umwandlungsergebnis beeinflussen soll. Dazu passen Sie die " "Umwandlungsfaktoren an Ihre Bedürfnisse an. Der »Kontrollpolygonnetz-" "Interpolation«-Schieber gibt an, wie viel jedes Kontrollpolygonnetz das " "resultierende Umwandlungsergebnis beeinflussen soll und die " "»Bildvermischung« gibt an, wie stark das Bild im Ergebnisbild sichtbar ist.\n" "\n" "Dann drücken Sie den »umwandeln«-Knopf im Hauptfenster und sehen sich die " "Umwandlung an. Wenn Sie nicht zufrieden sind, wählen Sie " "»Kontrollpolygonnetz bearbeiten« im Menü Option (oben in der Mitte) und " "bearbeiten Sie das Kontrollpolygonnetz weiter oder wählen Sie »Umwandlung & " "Kontrollpolygonnetz ansehen« und bearbeiten Sie die Umwandlungsfaktoren.\n" "\n" "Wenn Sie die Umwandlungsfaktoren weiter bearbeiten möchten, wählen Sie " "»Umwandlungsfaktoren« im Menü »Bearbeiten«.\n" "\n" "Tipp: Setzen Sie alle Faktoren auf die gleichen Werte und machen Sie eine " "Umwandlung. Wenn die Bilder nicht gut eingeblendet werden, können Sie " "versuchen in jedem Bild ein Unterbild auszuwählen, so dass Sie besser " "eingeblendet werden." #: gtkmorph/guide_text.c:157 msgid ":Movie" msgstr ":Film" #: gtkmorph/guide_text.c:158 msgid "" "To make a movie of your morph, choose 'morph sequence' in the Morph menu. A " "window will pop up. Click on help there for further help." msgstr "" "Um einen Film von Ihrer Umwandlung zu erstellen, wählen Sie " "»Umwandlungsabfolge« im Menü Umwandlung. Es öffnet sich eine Fenster. " "Klicken Sie dort auf Hilfe, um weitere Hilfe zu erhalten." #: gtkmorph/guide_text.c:161 msgid "-End" msgstr "-Ende" #: gtkmorph/guide_text.c:162 msgid "" "Here ends the guide.\n" "\n" "Goodbye and thank you" msgstr "" "Hier endet die Anleitung.\n" "\n" "Auf Wiedersehen und vielen Dank" #: gtkmorph/movies.c:64 gtkmorph/callbacks_main.c:318 msgid "to morph, you must have at least two input images" msgstr "Zum Umwandeln benötigen Sie mindestens zwei Bilder" #: gtkmorph/movies.c:526 #, c-format msgid "" "Help on movie making: when you hit ok, gtkmorph will repeat a loop for %d " "times. Any time, it will set the warping and image-blending factors to an " "interpolation between the values that you have stored as 'first' and 'end'. " "Any time, it will save the morphed image (in format %s), starting from '%s' " "and ending with '%s'. Then it will create any animation that you have asked " "to create: the animated gif is called '%s.gif', the mpeg file is called '%s." "mpeg' (and mpeg_encode will use '%s.param' for parameters if available: see " "in %s/mpeg.param an example, or copy the end part of %s.auto.param) and play " "them. You may recreate animations from preexisting frames by hitting 'replay'" msgstr "" "Hilfe bei der Filmerstellung: Wenn Sie Ok drücken, wird GtkMorph %d\n" "mal eine Schleife wiederholen. Jedesmal wird es die Verzerrungs- und\n" "Bildvermischungsfaktoren auf eine Interpolation zwischen den Werten\n" "setzen, die Sie als »Anfang« und »Ende« gespeichert haben. Jedesmal\n" "wird das umgewandelte Bild (im Format %s) beginnend bei %s und endend\n" "mit %s gespeichert. Dann wird es jede Bewegung, die Sie zur Erstellung\n" "vorgesehen haben, erstellen: Das bewegte GIF heißt »%s.gif«, die\n" "MPEG-Datei heißt »%s.mpeg« (und mpeg_encode wird für die Parameter\n" "»%s.param« benutzen, falls verfügbar; siehe\n" "in %s/mpeg.param Beispiel, oder kopieren Sie den Endteil %s.auto.param)\n" "und sie abspielen. Sie können die Bewegungen aus bestehenden\n" "Einzelbildern neu erstellen, indem Sie »wieder abspielen« drücken." #: gtkmorph/movies.c:599 msgid "" "Sorry : temporary files can only be saved as png, and not as ppm; but " "'mencoder' does not read ppm files. You must compile gtkmorph using a newer " "version of libGTK." msgstr "" "Entschuldigung: Temporäre Dateien können nur als PNG gespeichert werden und " "nicht als PPM. Aber »mencode« kann keine PPM-Dateien lesen. Sie müssen " "GtkMorph unter Benutzung einer neueren Version von libGTK neu kompilieren." #: gtkmorph/movies.c:602 msgid "" "sorry : cannot create AVI if a comma ',' is in the filename (blame this on " "'mencoder')" msgstr "" "Entschuldigung: AVI kann nicht erzeugt werden, wenn der Dateiname ein Komma " "»,« enthält (»mencoder« ist schuld)." #: gtkmorph/callbacks_help.c:18 msgid "" "Here are a few tips at using this program\n" "0) at startup the program is set for ``warping'': read the ``warp help''\n" "1) to morph, you need to have 2 or more `input images' :\n" " use `add an image' (it is in the `file' menu); read the ``morph help''\n" "2) if you keep the mouse still on a menu voice or on a button\n" " for a moment, you may read the help tips.\n" "3) when the mouse pointer is in on the mesh grid, by hitting\n" " the right button, you get an useful menu.\n" "\n" "\n" "If you need more help, activate the guide." msgstr "" "Hier ein paar Tipps zur Benutzung dieses Programms\n" "0) beim Programmstart ist »verzerren« eingestellt: Lesen Sie die \n" " »verzerren-Hilfe«\n" "1) zum Umwandeln benötigen sie zwei oder mehr »Eingabebilder«:\n" " Benutzen Sie »ein Bild hinzufügen« (es ist im Menü »Datei«). Lesen Sie\n" " die »Umwandeln-Hilfe«\n" "2) wenn Sie die Maus für einen Moment still über einem Menüpunkt oder\n" "einem Knopf halten, können Sie die Hilfetipps lesen.\n" "3) wenn der Mauszeiger sich über dem Kontrollpolygonnetz befindet,\n" " erhalten Sie durch Drücken der rechten Taste ein nützliches Menü.\n" "\n" "\n" "Wenn Sie weitere Hilfe benötigen, aktivieren Sie die Anleitung." #: gtkmorph/callbacks_help.c:38 msgid "" "To morph:\n" " 1) load an image in each `input image',\n" " 2) edit the meshes by dragging the points (and use the menu that you get\n" " by the right mouse button)\n" " 3) set the `blending factors' and `mesh factors' as desired\n" " 4) and hit `do morph'\n" msgstr "" "Zum Umwandeln:\n" " 1) ein Bild in jedes »Eingabebild« laden,\n" " 2) die Kontrollpolygonnetze durch ziehen der Punkte bearbeiten (und\n" " das Menü benutzen, das Sie durch Drücken der rechten Maustaste\n" " erhalten)\n" " 3) die »Vermischungsfaktoren« und »Kontrollpolygonnetzfaktoren wie\n" " gewünscht setzen\n" " 4) und »umwandeln« drücken\n" #: gtkmorph/callbacks_help.c:72 msgid "" "It is not difficult to use this program for warping: just\n" " 1) load an image in the `input image 1',\n" " 2) edit the meshes by dragging the points (and use the menu that you get\n" " by the right mouse button)\n" " 3) and hit `do warp'\n" msgstr "" "Es ist nicht schwierig dieses Programm zum Verzerren zu benutzen: Sie \n" "müssen nur\n" " 1) ein Bild in »Eingabebild 1« laden,\n" " 2) die Kontrollpolygonnetze durch Ziehen der Punkte bearbeiten (und\n" " das Menü benutzen, das Sie durch Drücken der rechten Maustaste\n" " erhalten)\n" " 3) und »verzerren« drücken\n" #: gtkmorph/utils-mesh.c:43 msgid "to interpolate meshes, you must have at least two input images" msgstr "" "Um Kontrollpolygonnetze zu interpolieren, müssen Sie mindestens zwei " "Eingabebilder haben" #: gtkmorph/utils-mesh.c:56 msgid "" "to interpolate the meshes, the sum of the all `mesh factors' should be " "nonzero\n" "I have set some default values for you" msgstr "" "Um die Kontrollpolygonnetze zu interpolieren, darf die Summe aller " "Kontrollpolygonnetzfaktoren nicht Null sein\n" "Einige Vorgabewerte sind bereits eingestellt" #: gtkmorph/callbacks_fs.c:168 #, c-format msgid "load %s" msgstr "%s laden" #: gtkmorph/callbacks_fs.c:317 gtkmorph/loadsave.c:449 msgid "internal error: the image doesnt exist!" msgstr "interner Fehler: Das Bild existiert nicht!" #: gtkmorph/callbacks_fs.c:324 #, c-format msgid "save %s (only PPM format)" msgstr "%s speichern (nur PPM-Format)" #: gtkmorph/callbacks_fs.c:326 #, c-format msgid "save %s" msgstr "%s speichern" #: gtkmorph/utils.c:348 msgid "template image" msgstr "Schablonenbild" #: gtkmorph/utils.c:356 msgid "morphed image" msgstr "umgewandeltes Bild" #: gtkmorph/guide_text.h:7 msgid "" "'Features' are sets of grid points; they are represented by the same color " "in the grid. They can be used to more easily edit a complex grid: for " "example, when preparing a grid on a face, each facial feature (eyes, " "mouth..) can be outlined by using a proper set of points.\n" "Points can be added or subtracted from features using the tools 'assign' and " "'unselect'; whole features can be moved all together, using the 'move' and " "'stretch' tools; the 'pack' button transforms all selected points into a " "feature, and 'unpack' does the opposite." msgstr "" "»Merkmale« sind Zusammenstellungen von Gitterpunkten. Sie werden im Gitter " "in der gleichen Farbe dargestellt. Sie können benutzt werden, um ein " "komplexes Gitter einfacher zu ändern: Wenn Sie zum Beispiel ein Gitter über " "ein Gesicht legen, kann jedes Gesichtsmerkmal (Augen, Mund ...) durch " "Benutzung einer ordentlichen Zusammenstellung von Punkten umrissen werden.\n" "Punkte können durch die Benutzung der Werkzeuge »zuweisen« und »Auswahl " "aufheben« zu Merkmalen hinzugefügt oder von ihnen entfernt werden. Ganze " "Merkmale können mit den Werkzeugen »bewegen« und »strecken« gemeinsam bewegt " "werden. Der »packen«-Knopf wandelt die ausgewählten Punkte in ein Merkmal um " "und »entpacken« tut das Gegenteil." #: gtkmorph/guide_text.h:18 msgid "" "Tips:\n" "1) try to keep the mesh lines as linear as possible: add new lines (with " "right mouse button) if this helps!\n" "2) to have a better morph, for each image, set the `morph factors' to a " "maximum, hit `do warp' and try to adjust the mesh until this warp looks " "right\n" "3) if you are fighting with small details, then you should increase the " "resulting image size until you have fixed things. (Use the the 'x2' button.)" msgstr "" "Tipps:\n" "1) versuchen Sie, die Kontrollpolygonnetzlinien so linear wie möglich zu " "halten: Fügen Sie neue Linien (mit der rechten Maustaste) hinzu, wenn das " "hilft.\n" "2) um eine bessere Umwandlung für jedes Bild zu erhalten, setzen Sie die " "»Umwandlungsfaktoren« zu einem Maximum, drücken Sie »umwandeln« und " "versuchen Sie das Kontrollpolygonnetz so lange anzupassen, bis die " "Verzerrung gut aussieht.\n" "3) wenn Sie mit kleinen Details kämpfen, können Sie das Ergebnisbild " "vergrößern, bis Sie diese Dinge behoben haben. (Benutzen Sie den »x2«-Knopf.)" #: gtkmorph/loadsave_mesh.c:81 #, c-format msgid "this filename is already used by the mesh of image %d" msgstr "" "dieser Dateiname wird bereits von vom Kontrollpolygonnetz des Bildes %d " "benutzt" #: gtkmorph/loadsave_mesh.c:108 gtkmorph/loadsave_mesh.c:362 msgid "" "the attempt to load mesh from file has produced an error\n" "(either this is not a mesh file, or the mesh file is corrupted)" msgstr "" "der Versuch ein Kontrollpolygonnetz aus der Datei zu laden hat einen Fehler " "erzeugt\n" "(entweder ist dies keine Kontrollpolygonnetzdatei oder die " "Kontrollpolygonnetzdatei ist kaputt)" #: gtkmorph/loadsave_mesh.c:195 #, c-format msgid "this mesh was created on image '%s' and not on this image '%s'" msgstr "" "dieses Kontrollpolygonnetz wurde auf dem Bild »%s« erstellt und nicht auf " "diesem Bild »%s«" #: gtkmorph/loadsave_mesh.c:217 #, c-format msgid "" "the size of the image w=%d h=%d and the size recorded in the mesh w=%d h=" "%d do not match" msgstr "" "die Größe des Bildes B=%d H=%d und die im Kontrollpolygonnetz aufgezeichnete " "Größe B=%d H=%d stimmen nicht überein" #: gtkmorph/loadsave_mesh.c:252 msgid "" "This mesh is automatically generated. You don't want to overwrite another " "mesh with this one!" msgstr "" "Diese Kontrollpolygonnetz wurde automatisch erzeugt. Überschreiben Sie kein " "anderes Kontrollpolygonnetz mit diesem!" #: gtkmorph/loadsave_mesh.c:403 #, c-format msgid "the attempt to load the image file %s has produced error: %s" msgstr "der Versuch die Bilddatei %s zu laden hat einen Fehler erzeugt: %s" #: gtkmorph/loadsave_mesh.c:477 msgid "" "gtkmorph could not find libply, so it cannot load PLY surfaces. Read " "documentations to install libply." msgstr "" "GtkMorph konnte libply nicht finden, deshalb kann es keine PLY-Oberflächen " "laden. Lesen Sie die Dokumentationen, um libply zu installieren." #: gtkmorph/loadsave_mesh.c:481 msgid "error while loading PLY file" msgstr "Fehler beim Laden der PLY-Datei" #: gtkmorph/loadsave_mesh.c:486 msgid "gtkmorph was NOT compiled with PLY support" msgstr "GtkMorph wurde nicht mit PLY-Unterstützung kompiliert" #: gtkmorph/loadsave_mesh.c:503 msgid "" "This file already exists! If you really want to overwrite it, delete it." msgstr "" "Diese Datei existiert bereits. Wenn Sie sie wirklich überschreiben wollen, " "löschen Sie sie." #: gtkmorph/loadsave_mesh.c:531 #, c-format msgid "can't resize %dth image-no filename" msgstr "Größe des %dsten Bildes kann nicht geändert werden - kein Dateiname" #: gtkmorph/loadsave_mesh.c:546 #, c-format msgid "" "the attempt to reload the image file %s to resize it has produced error: %s" msgstr "" "der Versuch, die Bilddatei %s erneut zu Laden, um die Größe zu ändern, hat " "einen Fehler erzeugt: %s" #: gtkmorph/dialogs.c:65 msgid "info" msgstr "Informationen" #: gtkmorph/unused.c:166 #, c-format msgid "" "The image %d has an %ld by %ld mesh while the resulting mesh is %d by %d!\n" "I cant warp it!\n" "I suggest that you add lines so that both meshes are %d by %d" msgstr "" "Das Bild %d hat ein %ld mal %ld Kontrollpolygonnetz, während das " "Ergebniskontrollpolygonnetz %d mal %d ist.\n" "Es kann nicht verzerrt werden.\n" "Es wird vorgeschlagen, dass Sie Linien hinzufügen, so dass beide " "Kontrollpolygonnetze %d mal %d sind." #: gtkmorph/loadsave.c:76 msgid "please provide a filename" msgstr "bitte geben Sie einen Dateinamen an" #: gtkmorph/loadsave.c:103 #, c-format msgid "could not open file '%s' for write: %s" msgstr "Datei »%s« kann nicht zum Schreiben geöffnet werden: %s" #: gtkmorph/loadsave.c:229 msgid "can't reload the full session-no more available images" msgstr "" "die ganze Sitzung kann nicht erneut geladen werden - nicht mehr verfügbare " "Bilder" #: gtkmorph/loadsave.c:286 #, c-format msgid "could not open file '%s' for read: %s" msgstr "Datei »%s« kann nicht zum Lesen geöffnet werden: %s" #: gtkmorph/loadsave.c:301 msgid "parsing of session failed at first header!" msgstr "Auswerten der Sitzung bei der ersten Kopfzeile fehlgeschlagen" #: gtkmorph/loadsave.c:336 msgid "parsing of session failed" msgstr "Auswerten der Sitzung fehlgeschlagen" #: gtkmorph/loadsave.c:356 gtkmorph/loadsave.c:379 gtkmorph/loadsave.c:401 #, c-format msgid "the attempt to save the image file %s has produced error: %s" msgstr "" "der Versuch, die Bilddatei %s zu speichern hat einen Fehler erzeugt: %s" #: gtkmorph/loadsave.c:407 #, c-format msgid "the attempt to close the saved image file %s has produced error: %s" msgstr "" "der Versuch die gespeicherte Bilddatei %s zu laden erzeugte einen Fehler: %s" #: gtkmorph/loadsave.c:457 msgid "" " this version of gtkmorph can save images only in .ppm format (to save in " "other formats, compile with GTK2 or higher). Please set the filename " "extension to '.ppm'" msgstr "" " diese Version von GtkMorph kann Bilder nur im .PPM-Format speichern (um sie " "in anderen Formaten zu speichern, kompilieren Sie es mit GTK2 oder höher). " "Bitte setzen Sie die Dateiendung auf ».ppm«" #: gtkmorph/loadsave.c:479 msgid "please use an allowed image format" msgstr "bitte benutzen Sie ein erlaubtes Bildformat" #: gtkmorph/loadsave.c:499 #, c-format msgid "" "the filename extension is '%s' but the image was saved in format '%s'. This " "mismatch may prevent you from viewing this image." msgstr "" "diese Dateinamenerweiterung ist »%s«, aber das Bild wurde im Format »%s« " "gespeichert. Diese fehlende Übereinstimmung könnte verhindern, dass Sie " "dieses Bild ansehen können." #: gtkmorph/callbacks_edit.c:88 gtkmorph/callbacks_edit.c:153 msgid "" "you cant edit this mesh - it is automatically generated as an interpolation\n" "of the input images meshes .\n" "(but if you really want to edit, unset 'automatic mesh interpolation')" msgstr "" "Sie können dieses Kontrollpolygonnetz bearbeiten - es wurde automatisch als " "eine Interpolation des Eingabebildkontrollpolygonnetzes erzeugt.\n" "(wenn Sie es aber wirklich bearbeiten wollen, schalten Sie die »automatische " "Kontrollpolygonnetzinterpolation« aus)" #: gtkmorph/callbacks_edit.c:96 gtkmorph/callbacks_edit.c:161 msgid "" "You are currently viewing the warped version of the image\n" "you may not edit this mesh (which refers to the loaded image).\n" "To edit the mesh, select `edit mesh' in the menu (at top center).\n" "I have done it now for you" msgstr "" "Sie sehen aktuell die verzerrte Version des Bildes, Sie können dieses\n" "Kontrollpolygonnetz nicht bearbeiten (das sich auf das geladene Bild\n" "bezieht).\n" "Um dieses Kontrollpolygonnetz zu bearbeiten, wählen Sie im Menü\n" "»Kontrollpolygonnetz bearbeiten« (oben in der Mitte).\n" "Es wurde bereits für Sie getan." #: gtkmorph/callbacks_main.c:109 #, c-format msgid "the mesh(es) %s were not saved! do you want to exit anyway?" msgstr "" "Das/Die »Kontrollpolygonnetz(e)« %s wurden nicht gespeichert. Möchten Sie " "dennoch beenden?" #: gtkmorph/callbacks_main.c:282 msgid "" "to blend the images, the sum of the all `image mixing factors' must be " "nonzero\n" "I have put default values for you" msgstr "" "um Bilder zu vermischen, muss die Summe aller »Bildvermischungsfaktoren« " "ungleich Null sein.\n" "Es wurden Vorgabewerte für Sie eingestellt." #: gtkmorph/callbacks_main.c:476 msgid "gtkmorph was not linked with Waili wavelet library" msgstr "GtkMorph wurde nicht mit der »Waili wavelet«-Bibliothek verknüpft" #: gtkmorph/callbacks_main.c:589 msgid "the input images have different numbers of channels: cannot blend" msgstr "" "die Eingabebilder haben unterschiedlich viele Kanäle: Sie können nicht " "gemischt werden" #: gtkmorph/callbacks_main.c:838 msgid "" "Loading the example session may ruin your current session. Please properly " "save all meshes and retry." msgstr "" "Die Beispielsitzung zu Laden kann Ihre aktuelle Sitzung ruinieren. Bitte " "speichern Sie alle Kontrollpolygonnetze ordentlich ab und versuchen Sie es " "erneut." #: gtkmorph/callbacks_main.c:869 #, c-format msgid "" "The 'example' directory should be in '%s' but is not.\n" "Install the 'gtkmorph-example' debian package." msgstr "" "Das »Beispiel«-Verzeichnis sollte in »%s« sein, ist jedoch nicht dort.\n" "Installieren Sie das Debian-Paket gtkmorph-example." #: gtkmorph/callbacks_main.c:872 #, c-format msgid "The 'example' directory should be in '%s' but is not." msgstr "Das »Beispiel«-Verzeichnis sollte in »%s« sein, ist jedoch nicht dort." #: gtkmorph/gtk_subimagesel.c:407 msgid "you must load an image before you may choose a subimage" msgstr "Sie müssen ein Bild laden, bevor Sie ein Unterbild auswählen können" #: gtkmorph/callbacks_fs_mesh.c:70 #, c-format msgid "load mesh for %s" msgstr "Kontrollpolygonnetz für %s laden" #: gtkmorph/callbacks_fs_mesh.c:105 #, c-format msgid "save mesh for %s" msgstr "Kontrollpolygonnetz für %s speichern" #: gtkmorph/callbacks_fs_mesh.c:136 gtkmorph/callbacks_fs_mesh.c:163 msgid "save difference to mesh" msgstr "Unterschiede in Kontrollpolygonnetz speichern" #: gtkmorph/callbacks_fs_mesh.c:186 msgid "load difference mesh" msgstr "Kontrollpolygonnetz mit Unterschieden laden" #: glade1/support.c:130 #, c-format msgid "Error loading pixmap file: %s" msgstr "Fehler beim Laden der pixmap-Datei: %s" #: glade1/interface.c:167 po/gtkmorph.glade.c:8 msgid "File menu" msgstr "Dateimenü" #: glade1/interface.c:2264 po/gtkmorph.glade.c:167 msgid "" "show animated sequence after saving it all (needs 'animate' command from " "imagemagick)" msgstr "" "zeigen Sie die bewegte Abfolge nachdem alles gespeichert wurde (benötigt den " "»animate«-Befehl von Imagemagick)" #: glade1/interface.c:2318 po/gtkmorph.glade.c:174 msgid " ok " msgstr "Ok" #: glade1/interface.c:2332 po/gtkmorph.glade.c:103 po/gtkmorph.glade.c:175 msgid "cancel" msgstr "Abbruch" #: glade1/interface.c:2345 po/gtkmorph.glade.c:176 msgid "help" msgstr "Hilfe" #: po/gtkmorph.glade.c:102 po/gtkmorph.glade.c:189 msgid "OK" msgstr "OK" #: po/gtkmorph.glade.c:190 msgid "Cancel" msgstr "Abbruch" xmorph-20140707+nmu2/po/Rules-quot0000664000000000000000000000340012356325452013467 0ustar # Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header xmorph-20140707+nmu2/po/ChangeLog0000664000000000000000000001015312356325452013241 0ustar 2014-07-06 gettextize * Makefile.in.in: Upgrade to gettext-0.18.1. * Rules-quot: Upgrade to gettext-0.18.1. 2007-05-24 gettextize * Makefile.in.in: Upgrade to gettext-0.16.1. 2004-05-27 gettextize * Makefile.in.in: Upgrade to gettext-0.14.1. * Rules-quot: Upgrade to gettext-0.14.1. 2003-11-29 gettextize * Makefile.in.in: New file, from gettext-0.12.1. 2003-11-29 gettextize * Rules-quot: New file, from gettext-0.12.1. * boldquot.sed: New file, from gettext-0.12.1. * en@boldquot.header: New file, from gettext-0.12.1. * en@quot.header: New file, from gettext-0.12.1. * insert-header.sin: New file, from gettext-0.12.1. * quot.sed: New file, from gettext-0.12.1. * remove-potcdate.sin: New file, from gettext-0.12.1. 2003-05-26 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2003-05-26 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2003-05-26 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2003-05-26 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2003-01-22 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2003-01-22 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2002-09-09 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2002-08-01 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2002-06-02 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2002-05-28 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2002-05-24 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2002-05-23 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2002-01-06 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2002-01-06 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2002-01-04 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2002-01-04 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-12-20 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-11-14 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-11-13 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-11-08 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-11-08 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-11-08 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-11-08 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-11-08 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-11-08 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-11-08 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-11-08 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-10-12 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-10-12 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-10-12 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. 2001-10-12 gettextize * Makefile.in.in: Upgrade to gettext-0.10.40. * cat-id-tbl.c: Remove file. * stamp-cat-id: Remove file. 2001-08-20 gettextize * Makefile.in.in: Upgrade to gettext-0.10.39. 2001-08-19 gettextize * Makefile.in.in: Upgrade to gettext-0.10.39. * cat-id-tbl.c: Remove file. * stamp-cat-id: Remove file. xmorph-20140707+nmu2/po/insert-header.sin0000664000000000000000000000124012356325452014731 0ustar # Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } xmorph-20140707+nmu2/po/quot.sed0000664000000000000000000000023112356325452013150 0ustar s/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g xmorph-20140707+nmu2/po/fr.gmo0000664000000000000000000014215112356342536012610 0ustar Þ•3´ ™L°k±¢"Åß ú ü  ! !!+!:!P!d!g!i!p!w!! “!¡!¨!Æ!Ë!é! î!0ø!)"ª."óÙ$+Í&¾ù&¸'é¼)e¦* ++'+z=-1¸-8ê1#3&3 +383¤A35æ3d4—4H5]b5œÀ5…]7;ã7÷;<Õ<nñ<ž`?âÿ@[âA >BKB"_B‚B”B›B0­BAÞB² CmÓClAD®D ¿D;ÊDE E E E8EJE]EKzEgÆE .FG8^pw^>è^u'_1_Ï_³Õ_‰`F`×`à`ï`aa &a 0a;aNa cama~a‘a™a ¢ao¬a b)b CbQbfbwb,bŒ¬b‹9c ÅcÓcÙcácøcûc¯d7Âd‡údr‚fõkËøkÍÄl’o±o³oÈo ÍoÛo2÷o#*p2Npp„p†p p˜p¸p ¾pÌp Ôpõp0ýp.q 6q,CqpqÖuq Lt"Vvñyv[kwÇyzÎzI{R{ÜV{•3~´É~_~ƒÞ„á„é„ …à…Jï…}:†Ð¸†O‰‡cÙ‡ü=ˆ¼:Šé÷ŠráŽTX»_‘ä” –l!—Ž— —9¾—ø—˜˜=7˜du˜èÚ˜eÙe)šš ¢šx­š &›0›9›'K›!s›•›%©›RÏ›r"œ•œI¥œïœóœ>÷œ@6wÑQž hž)už5ŸžÕž”ðž…ŸLŸ›êŸ„† > ¡J¡_¡o¡¡ ­¡%·¡Ý¡ó¡ ¢¢¢,¢<¢9E¢†¢£ £0£N£c£v£ z£›£s £¤(¤D¤M¤]¤#{¤Ÿ¤¥¤(´¤ݤ~æ¤e¥w¥‰¥4œ¥=Ñ¥¦¦¦&¦+¦3¦;M¦‰¦B›¦Þ¦$î¦.§ B§N§$]§‚§›§$´§Ù§ë§ ÿ§n ¨y¨"‘¨´¨Ò¨ï¨g©k©ˆ©)ž©1È©,ú©'ªAªd[ªÀªÓªòª« «)«);«,e«’«š«¢«·«Ñ« Ô«=ß«!¬5?¬[u¬#Ѭ-õ¬#­:­ Q­4[­­ ™­¤­­­-µ­ã­)û­ %®2®K®g®®•® ­® ·®@Ø®+¯ E¯f¯ }¯Нu ¯ °"°p<°Œ­°N:±‰±*›±!Ʊ%è±+²:²jA²:¬²ç²í²+ ³v5³¬³'³³Û³gõ³]´Rp´™Ã´A]µPŸµ?ðµ„0¶‘µ¶UG·á·ß¸O_¹Š¯¹X:ºh“ºRüºAO»7‘»LÉ»Ÿ¼E¶¼‹ü¼Pˆ½Ù½üའݾBè¾+¿:¿1R¿„¿¡¿½¿Ö¿ç¿À À:ÀSÀ lÀzÀŠÀ…§À-Á'<Á*dÁÁªÁ ÅÁ5ÏÁsŸyÂÃ+à 3Ã=ÃPÃSÃÏfÃ26ÄÖÒ6’M åG¡H=T$Kà õäö½~ãÄÓ¬ni‚¼WÙþÇðO‹ 1Ÿžš*Pf´£D(Þ˜Š lËaÊ¿$3ºÀïç bI+;ø—»#ß Õ@>ÿ&C²F_Q-yÃ^\í¾³©ô±Å™œ° ,÷Æî€:ë–ÚgÝ·! ¥x„*áÂ"ª]YØuý×8m)+vN&ɤ†¸¢ ¨.?Á¹Zk­(”¦3“ '¶«‘úÏó<Üù§%ê0s%ÍjûµÔAæ5{qEw e1ƒ|4}ˆÛc‰[Î#/ér J2,h/`›ü‡U0ñì.Ìâ2"SLV7èŽp-!B®ÈÐ…R9•o¯'Œò X)tzÑd Welcome to GtkMorph GtkMorph is a powerful program that permits you to warp or morph images. Using this guide. Hit 'next' to skip a topic, or 'do it' to do it; when you have done a topic, hit 'Guide' in the main window to come back to the guide. (Note that, when you hit 'do it', the guide will iconify and deiconify other windows to highlight your task: with some dumb window managers, this will not work ok). If you are not satisfied by the way you have complied with the guide requests, hit 'prev' and 'do it' to retry the task. As a first task, you may get acquainted with the main gtkmorph window: if you want to give it a look, hit 'do it': the main window will pop up! Note that, if you keep the mouse still on a menu voice or on a button for a moment, a tip shows up. When you are done, hit 'Guide' to come back to the guide. If you know the program main window, simply hit 'next'. If you are fed up with the guide, you may stop it at any time by closing this window: the normal gtkmorph program will pop up. If you want to test the program, you may want to load the example session:look into the 'Help' menu. ok this version of gtkmorph can save images only in .ppm format (to save in other formats, compile with GTK2 or higher). Please set the filename extension to '.ppm''Features' are sets of grid points; they are represented by the same color in the grid. They can be used to more easily edit a complex grid: for example, when preparing a grid on a face, each facial feature (eyes, mouth..) can be outlined by using a proper set of points. Points can be added or subtracted from features using the tools 'assign' and 'unselect'; whole features can be moved all together, using the 'move' and 'stretch' tools; the 'pack' button transforms all selected points into a feature, and 'unpack' does the opposite.(unavailable feature name)--Adjust mesh-End-Introduction-Load image(s)-Morph or warp-Select subimage size-Select subimage(s)/21:Morph:Movie;Load reference image;Warpframe6CancelCouldn't find pixmap file: %sEditError loading pixmap file: %sFileFile menuFrom time to time, you better save the mesh(es).HelpHelp on movie making: when you hit ok, gtkmorph will repeat a loop for %d times. Any time, it will set the warping and image-blending factors to an interpolation between the values that you have stored as 'first' and 'end'. Any time, it will save the morphed image (in format %s), starting from '%s' and ending with '%s'. Then it will create any animation that you have asked to create: the animated gif is called '%s.gif', the mpeg file is called '%s.mpeg' (and mpeg_encode will use '%s.param' for parameters if available: see in %s/mpeg.param an example, or copy the end part of %s.auto.param) and play them. You may recreate animations from preexisting frames by hitting 'replay'Here are a few tips at using this program 0) at startup the program is set for ``warping'': read the ``warp help'' 1) to morph, you need to have 2 or more `input images' : use `add an image' (it is in the `file' menu); read the ``morph help'' 2) if you keep the mouse still on a menu voice or on a button for a moment, you may read the help tips. 3) when the mouse pointer is in on the mesh grid, by hitting the right button, you get an useful menu. If you need more help, activate the guide.Here ends the guide. Goodbye and thank youHit the 'do warp' button to view the warp. If you are not satisfied, choose 'edit mesh' in the option menu (top center) and edit the mesh further.From time to time, you better save the mesh.If you wish, you may load an image in the main window; it may help you if you are warping images and you want to have a reference to use as a target. This is not really necessary, and you may do as well without. If in this reference image there are 3 important features, like the eyes and mouth in face, then you should drag the 3 white points on these features. Similarly, if you have a reference mesh that is associated to this image, you may load it now, using the 'load mesh' button When done, click 'Guide'.It is not difficult to use this program for warping: just 1) load an image in the `input image 1', 2) edit the meshes by dragging the points (and use the menu that you get by the right mouse button) 3) and hit `do warp' Loading the example session may ruin your current session. Please properly save all meshes and retry.MorphNoNow you adjust the mesh in the input image(s) so that they best fit to the features of those images. If you hit the right mouse key while on the mesh, you will get a menu. It is very important that points in different meshes are syncronized, that is, that point (i,j) in every mesh is associated to the same type of feature; for this reason, when you drag a point in a mesh, the same point flashes in all other meshes. When you have put points on a feature (say, for example, the right eye), you may hit 'pack' to pack all this point into a 'feature'.Now you need to load the input images. In each input image window, load the input image using the big 'load image' button.Now you select a subimage of each input image. You do this by either moving the selection rectangle (using the spins at bottom of the window) or by dragging the 3 white feature points. (see [1] below) When you have chosen the preferred subimage, hit 'apply' (and the window will close). If later you find out that are not satisfied of your choice, you may click in the option menu (at center top) and select 'choose subimage' to repeat this process. Alternatively, if you have already a mesh for this image, you may load it now; since the subimage selection is saved with the mesh; when you load the saved mesh, the subimage is reselected for you. [1] Note that you cannot position the 3 points freely: their mutual position is copied from the position of the 3 reference points in the resulting image; so you will need to be patient. Note also that the selection rectangle has currently a fixed aspect (see [2]); if you want to freely change the aspect, change the 'preserve aspect ratio' setting in the 'settings'. [2] 'aspect' is the ratio between width and height.Now you select the size that the output image(s) will have. To this end, in the lower part of the main window, there is a pair of spins; select your preferred size and hit 'apply'. After that, you will be brought back to the guide. You may change the size again by selecting 'resulting size...' in the Edit menu.OKQuitSelect ColorSettingsSorry : temporary files can only be saved as png, and not as ppm; but 'mencoder' does not read ppm files. You must compile gtkmorph using a newer version of libGTK.The 'example' directory should be in '%s' but is not.The 'example' directory should be in '%s' but is not. Install the 'gtkmorph-example' debian package.The image %d has an %ld by %ld mesh while the resulting mesh is %d by %d! I cant warp it! I suggest that you add lines so that both meshes are %d by %dThis file already exists! If you really want to overwrite it, delete it.This mesh is automatically generated. You don't want to overwrite another mesh with this one!Tips: 1) try to keep the mesh lines as linear as possible: add new lines (with right mouse button) if this helps! 2) to have a better morph, for each image, set the `morph factors' to a maximum, hit `do warp' and try to adjust the mesh until this warp looks right 3) if you are fighting with small details, then you should increase the resulting image size until you have fixed things. (Use the the 'x2' button.)To make a movie of your morph, choose 'morph sequence' in the Morph menu. A window will pop up. Click on help there for further help.To morph your images, you must decide how much each image should influence the resulting morph. To this end, you adjust the morph factors to your need; the 'mesh interpolation' slide tells how much this mesh will influence the resulting mesh, and the 'image blending' tells how much this image is visible in the resulting image. Then hit the 'do morph' button in the main window to view the morph. If you are not satisfied, choose 'edit mesh' in the option menu (top center) and edit the mesh further; or, choose 'view warp&mesh' and edit the morph factors. If you want to change the morph factors further, choose ``morph factors..'' in the 'edit' menu Tip: set all factors to equal values and do a morph: if the images do not superimpose well, you may try to select a subimage in each image so that they superimpose betterTo morph: 1) load an image in each `input image', 2) edit the meshes by dragging the points (and use the menu that you get by the right mouse button) 3) set the `blending factors' and `mesh factors' as desired 4) and hit `do morph' YesYou are currently viewing the warped version of the image you may not edit this mesh (which refers to the loaded image). To edit the mesh, select `edit mesh' in the menu (at top center). I have done it now for youYou may `warp' or `morph'. 'Warp' means 'to deform, contort, distort, wring, bend, or otherwise twist'. If you have one single input image and you want to make a distortion of it, then you want to warp it. In this case, hit 'next' 'Morphing' images instead means 'blending together warped versions of the images'. So to morph you need two or more input images. In this case, press 'do it', and, in the File menu, choose 'add image' as many times as to reach the required number of input images, then hit 'Guide' in the main window. Note that at startup the program is set for ``warping'': there is only one input image.``edit mesh'': view the loaded image and edit the mesh on it. ``view warp'': view the result of warping the loaded image from this mesh to the resulting mesh. ``v. warp&meshes'' as before but with both meshes on. ``choose subimage'' choose which subimage of the loaded image you wish to use. You can also use the 'settings' button to change these settings more finely.``edit template'': view the loaded image and edit the mesh on it. \n ``view morphed'': view the result of morphing. ``v.morph&mesh'' as above but with the mesh. ``edit eyes points'' sets the reference position of the eyesa mesh point cannot enter in a neighbouring cell (this is currently not very well enforced)add an imageadd horizontal lineadd new feature to the end of listadd vertical lineadjustadjust all meshesadjust mesh point position w.r.t. previous imageadjust points of meshes confronting original images and the morphadjust the position of a mesh point by comparing this image with the previous one and doing a best match. Achieves sub-pixel precision but may move your point around erratically.always force the image factors so that they sum to 1; (if not, they are internally renormalized before using)always force the mesh factors so that they sum to 1; (if not, they are internally renormalized before using)animate sequenceanimationsany change (add/del, label/unlabel) to a mesh is replicatedapplyassignassign pointassign point to featureauto point adjustautomatic blendingautomatic mesh interpolationautomatically blends the images when the image blending factors are changedautomatically interpolates the resulting mesh when morphing (note that in this case you cannot edit it)back to guideborder points of the mesh are forced to stay on the border of the imagec xc ycan't reload the full session-no more available imagescan't resize %dth image-no filenamecancelchoose antialiasing method that is used when warping: the lanczos kernels are slower, but are necessary if the images have fine or grained textures for animationschoose subimagecoefficientscould not open file '%s' for read: %scould not open file '%s' for write: %screate AVI MPEG4create and save many morphs, equally spaced between the morph start and the morph end (that you have already stored with the above menu)create animated gifcreates an AVI file in MPEG4 format (needs 'mplayer' and 'mencoder')creates an animated gif (needs 'convert' from imagemagick) and plays it (needs 'animate' from imagemagick)creates an mpeg file and plays it; will use a parameter file (see help) (needs 'mpeg_encode' and 'mpeg_play')creates and saves all morphs, builds animationscreates mpegcursor jumpdel horizontal linedel vertical linedeletedelete last featuredifferential meshdim imagedisabledo blendingdo morphdo warpdo itdo what is proposed in this panedont warn, just beep; warnings may be read with 'why the beep' in the 'help' menueditedit eyes pointsedit featuresedit meshedit templateendenergy for mesh smoothingequalequalize input images so that the subband of wavelet transform have the same energieserrorerror while loading PLY fileerror!featurefeature helpfile base nameframegeneric helpgo back to previous guide panegtkmorphgtkmorph could not find libply, so it cannot load PLY surfaces. Read documentations to install libply.gtkmorph guidegtkmorph maggtkmorph moviegtkmorph was NOT compiled with PLY supportgtkmorph was not linked with Waili wavelet libraryguideguide...heighthelphelp...hide unusablehide unusable widgets, instead of deactivating themhow many frameshow many frames will be saved; each will be saved in a fileimage blendingimage factors sum to 1infer the subimage from the eyes positioninfoinput imageinternal error: the image doesnt exist!interpol. meshesinterpolate meshesit saves whatever image is currently shown in the windowload imageload meshload %sload a "differential mesh", that is a mesh representing the difference of two meshesload a differenceload difference meshload example sessionload mesh for %sload sessionload the image. This image may not be warped or morphed, but it may help in setting the resulting meshload the selected imagemesh interp.mesh auto syncmesh cant overlapmesh factors sum to 1mesh is readonlymesh tipsmix all the warped images in the ``resulting image'' using ``image blending factors'' as weightsmorph helpmorph imagesmorph sequencemorphed imagemovemove single pointmove whole featuremoves the image to recenter the last edited pointnewnextno warningsnumber of first fileokpackpack the selected points in this featureparsing of session failedparsing of session failed at first header!permits to add and delete mesh lines, edit featuresplease provide a filenameplease use an allowed image formatpreserve aspect ratiopreserve borderprevput warped images in another windowquestionquestion?renamereplayresaves and replays animationsresetrestore morph coefficients...resulting imageresulting image sizeresulting image size...save diffsave imagesave meshsave %ssave %s (only PPM format)save difference from this mesh to other meshsave difference to meshsave mesh for %ssave sessionselectselect pointset this mesh to be an interpolation of all other meshes, using ``mesh factors'' as weightssettingsshow all imagesshow animated sequence after saving it all (needs 'animate' command from imagemagick)show animated sequence after saving it all (on some platforms, it may need 'animate' command from imagemagick)show difference between this mesh and another mesh, as white arrowsshow magshow mesh difference to...show morph factorsshow warp after warpskip this and go to next guide panesmoothsorry : cannot create AVI if a comma ',' is in the filename (blame this on 'mencoder')sorry this functions is as yet unimplementedstartstops the computation of framesstore morph coefficients...stores internally the state of all mesh and image-blending factors (to make morph sequences)stretchstretch whole featuresubimage positionswitch the input window(s) to the warped image after a warp (overridden by the above)template imagethe attempt to close the saved image file %s has produced error: %sthe attempt to load mesh from file has produced an error (either this is not a mesh file, or the mesh file is corrupted)the attempt to load the image file %s has produced error: %sthe attempt to reload the image file %s to resize it has produced error: %sthe attempt to save the image file %s has produced error: %sthe averaging of images will lose details; you may enable an enhancing algorithm (based on wavelets)the filename extension is '%s' but the image was saved in format '%s'. This mismatch may prevent you from viewing this image.the files of the frames will be numbered sequentially starting from this numberthe input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button.the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' buttonthe input images have different numbers of channels: cannot blendthe mesh of the resulting image is set to an interpolation of the input images' meshes, weighted by the ``mesh factors''the mesh(es) %s were not saved! do you want to exit anyway?the size of the image w=%d h=%d and the size recorded in the mesh w=%d h=%d do not matchthese coefficents decide how much this image/mesh will influence the final morphthis filename is already used by the mesh of image %dthis is the depth of the waveletsthis mesh was created on image '%s' and not on this image '%s'to blend the images, the sum of the all `image mixing factors' must be nonzero I have put default values for youto interpolate meshes, you must have at least two input imagesto interpolate the meshes, the sum of the all `mesh factors' should be nonzero I have set some default values for youto morph, you must have at least two input imagestracktype of energy that is minimized to decide the position of the non-selected mesh points: thin plate energy is better but slower, to speed up use elastic energy when editing meshesunpackunpack this feature and transforms all points of it to selected pointsunselectunselect pointuse antialiasing warpingv morph&meshesv. warp&meshesview eyesview morphview original meshview original pointsview warpview warped meshview warped pointswarningwarning!warp helpwarp this image from this mesh to the resulting mesh, and show the result in this window or an accessory windowwarped imagewarped image in other winwavelet depthwavelet equalizationwavelet equalizewelcomewhen loading an image, preserve aspect ratiowhen you morph the images, or you ``do mixing'', this factor will measure how much this image will show in the mixing in the resulting imagewhen you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's meshwhy the beep?widthwindow1x coordinate of centerx2y coordinate of centeryou cant edit this mesh - it is automatically generated as an interpolation of the input images meshes . (but if you really want to edit, unset 'automatic mesh interpolation')you must load an image before you may choose a subimageProject-Id-Version: xmorph 1:20050408b Report-Msgid-Bugs-To: mennucc1@debian.org POT-Creation-Date: 2014-07-06 23:50+0200 PO-Revision-Date: 2014-07-06 23:51+0200 Last-Translator: Christophe Masson Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit Bienvenue dans GtkMorph GtkMorph est un puissant programme permettant de déformer (warp) des images ou d'effectuer des morphoses (morph). Utilisation du guide. Pressez « Suivant » pour sauter un sujet ou « Exécuter » pour mettre en pratique ; quand vous avez parcouru un sujet, pressez « Guide » dans la fenêtre principale pour revenir au guide. Notez que, quand vous pressez « Exécuter », le guide sera réduit et les autres fenêtres seront restaurées pour mettre en avant votre travail : ceci ne fonctionnera pas correctement avec certains mauvais gestionnaires de fenêtre. Si vous n'êtes pas satisfait de la façon dont vous avez exécuté les instructions du guide, pressez « Précédent » puis « Exécuter » pour recommencer l'exercice. Lors du premier exercice, vous ferez connaissance avec la fenêtre principale de gtkmorph : si vous voulez la visualiser, tapez « Exécuter » : la fenêtre principale apparaîtra ! Notez que, si vous maintenez la souris sur un menu ou un bouton suffisamment longtemps, une bulle d'aide apparaîtra. Quand vous avez terminé, pressez « Guide » pour revenir au guide. Si vous connaissez déjà la fenêtre principale de gtkmorph, pressez « Suivant ». Vous pouvez quitter le guide à tout moment en fermant cette fenêtre : le programme gtkmorph réapparaîtra. Si vous voulez tester le programme, vous pouvez charger la session d'exemple : voir le menu « Aide ».OKCette version de gtkmorph peut sauvegarder les images au seul format PPM (pour sauvegarder dans d'autres formats, compiler avec GTK2 ou une version ultérieure). Veuillez appliquer une extension « .ppm ».Les « caractéristiques » sont des ensembles de points ; ceux-ci sont représentés par la même couleur sur la grille. Ils peuvent servir à faciliter la modification d'une grille complexe : par exemple, lors de la création d'une grille sur un visage, chaque caractéristique faciale (yeux, bouche...) peut être isolée grâce à un ensemble adapté de points. Des points peuvent être ajoutés ou supprimés d'une caractéristique grâce aux outils « Assigner » et « Déselectionner » ; toute une caractéristique peut être déplacée en bloc grâce aux outils « Déplacer » et « Étirer » ; le bouton « Empaqueter » crée une caractéristique à partir de l'ensemble des points sélectionnés, et « Dépaqueter » effectue l'opération inverse.Nom de caractéristique inconnu--Ajuster le maillage-Fin-Introduction-Charger une (des) image(s)-Effectuer une morphose (morph) ou déformer (warp)-Choisir la taille de la sous-image-Sélectionnez la (les) sous-ensemble(s) de l'image/21:Morph:Animation;Charger une image de référence;Warptrame6AnnulerFichier pixmap introuvabler : %sÉditionErreur lors du chargement du fichier pixmap : %sFichierMenu FichierSauvegardez régulièrement le(s) maillage(s).AideAide à la réalisation d'animation : quand vous presserez OK, gtkmorph répètera une boucle %d fois. Les coefficients de déformation et de mélange seront interpolés à partir des valeurs de « Début » et de « Fin » que vous aurez mémorisées. L'image transformée sera sauvegardée (au format %s), en commençant par « %s » et en finissant par « %s ». Ensuite, sera créée l'animation que vous aurez demandée : le GIF animé est nommé « %s.gif », le fichier MPEG est nommé « %s.mpeg » (et mpeg_encode utilisera « %s.param » comme paramètres, s'il existe : voir en exemple le fichier %s/mpeg.param, ou copier la fin de %s.auto.param) et les jouera. Vous pouvez recréer des animations depuis des trames existantes en pressant « Rejouer ».Voici quelques conseils. 0) Au démarrage, ce programme est en mode « warping » : lire l' « Aide à la déformation » : 1) Pour une morphose, vous avez besoin d'au moins deux images d'entrée : utilisez « Ajouter une image », dans le menu « Fichier » ; lire l'« Aide à la morphose ». 2) Si vous maintenez la souris sur un menu ou sur un bouton suffisamment longtemps, une bulle d'aide apparaîtra. 3) Quand la souris est positionnée sur le maillage, un clic droit fait apparaître un menu. Pour plus d'aide, activer le guide.Fin du guide. Au revoir et merci.Pressez le bouton « Déformer » (warp) pour voir la déformation. Si vous n'êtes pas satisfait, sélectionnez « Modifier le maillage » depuis le menu option (en haut au centre) et retravaillez le maillage. Sauvegardez régulièrement le maillage.Si vous le souhaitez, vous pouvez charger une image dans la fenêtre principale ; ceci peut vous aider si vous déformez des images et que vous voulez utiliser une cible comme référence. Ceci n'est pas vraiment nécessaire et vous pouvez faire sans. Si, dans cette image de référence, il y a trois éléments remarquables, comme les yeux et la bouche d'un visage, vous pouvez y faire glisser les trois points blancs. De même, si vous disposez d'un maillage de référence associé à cette image, vous pouvez le charger, en utilisant le bouton « Charger un maillage ». Quand vous avez fini, pressez « Guide ».Ce programme permet de déformer des images (warping) simplement : 1) charger une image dans la fenêtre « Image d'entrée 1 », 2) modifier le maillage en faisant glisser les noeuds (et utiliser le menu du clic droit), 3) presser « Déformer » (do warp). Charger la session d'exemple peut endommager votre session courante. Veuillez sauvegarder tous les maillages et réessayer.MorphoseNonMaintenant, ajustez le maillage de l'image (des images) d'entrée de sorte qu'il corresponde aux points caractéristiques de celles-ci. Si vous cliquez avec le bouton droit de la souris sur le maillage, un menu apparaîtra. Il est très important que les points des différents maillages soient synchronisés, c'est-à-dire que les points (i,j) de chaque maillage correspondent aux mêmes détails caractéristiques ; pour cette raison, quand vous faîtes glisser un point d'un maillage, le point associé dans chaque autre maillage clignote. Lorsque vous avez positionné des noeuds sur un point caractéristique (disons, par exemple, l'oeil droit), vous devriez presser « Empaqueter » pour associer tous ces points dans une « caractéristique ».Maintenant, vous devez charger les images d'entrées. Dans chaque fenêtre « Image d'entrée », chargez une image grâce au bouton « Charger une image ».Maintenant, sélectionnez une sous-image dans chaque image d'entrée, soit en déplaçant le rectangle de sélection (en utilisant les flêches en bas de la fenêtre), soit en faisant glisser les trois points blancs. (voir [1] ci-dessous) Une fois que vous avez choisi une sous-image, pressez « Appliquer » (et la fenêtre se fermera). Si plus tard ce choix ne vous convient pas, vous pourrez sélectionner « Choisir une sous-image », dans le menu option (en haut, au centre) pour recommencer. Sinon, si vous disposez déjà d'un maillage pour cette image, vous pouvez le charger maintenant ; puisque la sous-image est sauvegardée avec le maillage, lorsque vous chargez le maillage, la sous-image est re-sélectionnée pour vous. [1] Notez que vous ne pouvez pas disposer les trois points librement : leur position relative est déterminée par celle des trois points de référence de l'image finale ; vous devrez être patient. Remarquez aussi que le rectangle de sélection a, à ce moment, un aspect figé (voir [2]) ; si vous souhaitez modifier librement son aspect, changer le réglage « Conserver la géométrie » dans les « Préférences ». [2] la « géométrie » est le rapport entre la largeur et la hauteur de l'image.Maintenant, sélectionnez la taille de l'(des) image(s) de sortie. Pour cela, vous disposez de deux flèches dans la partie basse de la fenêtre ; sélectionnez la taille souhaitée et pressez « Appliquer ». Alors, vous serez de retour dans le guide. Vous pourrez modifier à nouveau la taille en sélectionnant « Taille finale... » dans le menu « Édition ».OKQuitterSélectionner une couleurPréférencesDésolé : les fichiers temporaires ne peuvent être sauvegarder qu'au format PNG et non au format PPM ; mais « mencoder » ne sait pas lire les fichiers PPM. Vous devez compiler gtkmorph avec une version de libGTK plus récente.Le répertoire « example » devrait être dans '%s' mais ce n'est pas le cas.Le répertoire « example » devrait être dans « %s » mais ce n'est pas le cas. Installez le paquet debian « gtkmorph-example ».L'image %d possède un maillage de %ld par %ld alors que le maillage final est de %d par %d ! Déformation impossible ! Il est conseillé d'ajouter des lignes de sorte que les deux maillages soient de %d par %d.Ce fichier existe déjà ! Si vous souhaitez vraiment le remplacer, supprimer le.Ce maillage est généré automatiquement. Vous ne voulez pas écraser un autre maillage par celui-ci !Conseils : 1) Essayer de garder les lignes du maillages aussi lineaires que possible : ajouter de nouvelles lignes (clic droit) si besoin ! 2) Pour une meilleure morphose, à chaque image, positionner les coefficients de morphose au maximum, presser « Déformer » et essayer d'ajuster le maillage jusqu'à ce que la déformation obtenue soit satisfaisante. 3) Si de petits détails vous pose problème, augmentez la taille de l'image finale jusqu'à obtention du résultat souhaité (utiliser le bouton « x2 »).Pour réaliser un film à partir de votre morphose, choisissez « Séquence de morphose » dans le menu « Morphose » . Une fenêtre de pop-up apparaîtra et vous proposera alors davantage d'aide.Pour effectuer une morphose, vous devez déterminer le poids de chaque image dans le résultat. Pour ceci, ajustez les facteurs de morphose ; le curseur d' « interpolation de maillage » indique le poids d'un maillage dans le maillage final, et le coefficient de mélange (blending factor) indique le taux de visiblité de cette image dans l'image finale. Ensuite, pressez le bouton « Exécuter la morphose » dans la fenêtre principale pour visualiser la morphose. Si vous n'êtes pas satisfait, sélectionnez « Modifier le maillage » dans le menu option (en haut,au centre) et retravaillez le maillage ; ou choisissez « V. déformation&maillage » et modifier les facteurs de morphose. Si vous désirez modifier les facteurs de morphose, choisissez « Coefficient de morphose.. » depuis le menu « Édition ». Conseil : réglez tous les facteurs à la même valeur et effectuez une morphose : si les images ne se superposent pas correctement, sélectionnez une sous-image dans chacune d'elles afin d'améliorer ceci.Pour effectuer une morphose : 1) charger une image pour chaque fenêtre « Image d'entrée », 2) modifier le maillage en déplaçant les noeuds (et utiliser le menu du clic droit), 3) modifier comme désiré les « coefficients de mélange » (blending factors) et les « coefficients de maillage » (mesh factors), 4) presser le bouton « Exécuter la morphose » (do morph). OuiVous visualisez actuellement la version déformée de l'image. Vous ne devriez pas modifier ce maillage (qui correspond à l'image chargée). Pour modifier ce maillage, sélectionnez « Modifier le maillage » depuis le menu (en haut au centre). Je l'ai fait pour vous.Vous pouvez déformer (warp) une image ou effectuer une morphose (morph). « warp » signifie déformer, tordre, distordre... Si vous ne disposez que d'une seule image d'entrée, vous souhaitez certainement la déformer (warp). Dans ce cas, pressez « Suivant ». Une morphose consiste en un mélange d'images déformées (warped). Le "morphing" requiert au moins deux images d'entrée. Pour effectuer une « morphose », pressez « Effectuer », et, dans le menu Fichier, choisissez « Ajouter une image » autant de fois que vous voulez utiliser d'images d'entrées. Puis, pressez « Guide » dans la fenêtre principale. Remarque : au démarrage, le mode « warping » est actif : une seule image d'entrée est requise.« Modifier le maillage » : visualiser l'image chargée et modifier son maillage. « Voir la déformation » : visualiser le résutat de la déformation de l'image chargée depuis ce maillage vers le maillage final. « ``V. déformation avec maillages » comme précédemment mais avec les deux maillages. « Choisir la sous-image » choisir quelle sous-image de l'image chargée vous voulez utiliser. Vous pouvez aussi utiliser le bouton « Préférences » pour modifier plus précisément les réglages.« Modifier le modèle » : visualiser l'image chargée et modifier son maillage. « Voir la morphose » : visualiser le résultat de la morphose. « V. la morphose avec maillage » comme ci-dessus mais avec le maillage. « Modifier les points des yeux » positionne les points de référence des yeuxUn noeud du maillage ne peut pénétrer une maille voisine (ceci n'est pas correctement contrôlé actuellement)Ajouter une imageAjouter une ligne horizontaleAjouter une nouvelle caractéristique à la fin de la listeAjouter une ligne verticaleAjusterAjuster tous les maillagesAjuster la position du noeud par rapport à l'image précédenteAjuster les noeuds des maillages en comparant les images originales et le " "résultat de la morphoseAjuste la position d'un noeud du maillage en comparant cette image avec la précédente et en cherchant la meilleure correspondance. Permets d'obtenir une précsion de l'ordre du sous-pixel mais déplace les points de manière erratique.La somme des coefficients doit être égale à 1 (sinon, l'application les normalise avant utilisation).La somme des coefficients doit être égale à 1 (sinon, l'application les normalise avant utilisation).Animer la séquenceAnimationsLes changements (ajout/suppression, ajout d'étiquette/suppression d'étiquette) appliqués sur un maillage sont répliqués.AppliquerAssignerAssigner un pointAssigner un noeud à une caractéristiqueAjustement automatique des pointsMélange automatiqueInterpolation automatique du maillagemélange automatiquement les images quand les coefficients de mélange sont modifiésInterpole automatiquement le maillage final lors d'une morphose (notez que dans ce cas vous ne pouvez le modifier)Retour au guideLes points situés sur la frontière sont maintenus sur le bord de l'image.c xc yImpossible de recharger la session - plus d'images disponiblesImpossible de redimensionner l'image %d - pas de nom de fichier.AnnulerChoisir la méthode d'anticrénelage à appliquer lors d'une déformation : les noyaux lanczos sont plus lents, mais nécessaires si les images possédent des textures fines ou granuleuses et/ou pour les animations.Définir une sous-imageCoefficientsLecture du fichier « %s » impossible : %sOuverture en écriture du fichier '%s' impossible : %sCréer un fichier AVI MPEG4Crée et sauvegarde de nombreuses morphoses, régulièrement espacées entre le début et la fin (que vous avez déjà sauvegardés avec le menu ci-dessus).Créer une animation GIF"Crée un fichier AVI au format MPEG4 (nécessite « mplayer » et « mencoder »)Crée un GIF animé (nécessite le programme « convert » du paquet imagemagick) et joue l'animation (nécessite le programme « animate » du paquet imagemagick)Crée un fichier mpeg et le joue ; ceci utilisera un fichier de paramètres (voir l'aide) (nécessite « mpeg_encode » et « mpeg_play »)Crée et sauvegarde toutes les morphoses, génère les animationsCrée un fichier mpegSaut de curseurSupprimer une ligne horizontaleSupprimer une ligne verticaleSupprimerSupprimer la dernière caractéristiqueMaillage différentielTamiser l'imageDésactiverMélangerExécuter la morphoseDéformer (warp)ÉxécuterMettre en pratique ce qui est présenté dans cette sectionPas d'avertissements, seulement des alarmes sonores ; les avertissements seront décrits dans « Pourquoi ce bip » dans le menu « Aide »ModifierModifier les « points des yeux »Modifier les caractéristiquesModifier le maillageModifier le modèleFinPuissance du lissage du maillageÉgalÉgaliser les images d'entrée de sorte que les sous-bandes de la transformée en ondelettes possèdent la même énergieErreurErreur lors du chargement du fichier PLYErreur !CaractéristiqueAide sur les caractéristiquesRacine (basename) du nom de fichierTrameAide génériqueRetour à la section précédente du guide.gtkmorphgtkmorph n'a pas pu trouver libply et ne peut donc pas charger les surfaces PLY. Lisez la documentation pour installer libply.Guide de gtkmorphLoupe de gtkmorphAnimation gtkmorphgtkmorph n'a PAS été compilé avec le support de PLY.gtkmorph n'a pas été lié à la bibliothèque d'ondelette Waili.GuideGuide...HauteurAideAide...Cacher quand inutilisableCacher les widgets inutilisables, au lieu de les désactiverCombien de tramesCombien de trames doivent être sauvegardées (un fichier par trame)Mélange d'imageSomme des poids des images égale à 1Déduire la sous-image de la position des yeux.InformationImage d'entréeErreur interne : image inexistante !Interpoler les maillagesInterpoler les maillagesSauve l'image courante de la fenêtreCharger une imageCharger un maillageCharger %sCharger un « maillage différentiel », c'est-à-dire un maillage représentant la différence entre deux maillagesCharger un différentiel;Charger un maillage différentiel.Charger une session d'exempleCharger un maillage pour %s.Charger une sessionCharger une image. Celle-ci ne sera pas forcément déformée mais servira à déterminer le maillage final.Charger l'image sélectionnéeInterp. des maillagesSynchronisation automatique des maillagesLes portions de maillage ne peuvent se chevaucherSomme des coefficients de maillage égale à 1Maillage en lecture seuleAstuces sur les maillagesMélanger toutes les images déformées en utilisant comme coefficients les « coefficients de mélange »Aide à la morphoseTransformer les images (morph)Séquence de morphoseImage déformée (morphed)DéplacerDéplacer un noeudDéplacer l'ensemble de la caractéristiqueCentrer l'image sur le dernier point modifiéNouveauSuivantPas d'avertissementsNuméro du premier fichierOKEmpaqueterEmpaqueter les noeuds sélectionnés dans cette caractéristiqueL'analyse de la session a échoué.Echec de l'analyse de la session au premier en-tête !Permets d'ajouter et de supprimer des lignes de maillages, de modifier des caractéristiquesVeuillez fournir un nom de fichier.Veuillez utiliser un format d'image supporté.Conserver la géométrieConserver la frontièrePrécédentAfficher les images déformées dans une autre fenêtreQuestionQuestion ?RenommerRejouerSauvegarde à nouveau et rejoue les animationsRetour à l'état initialRestaurer les coefficients de morphose...Image finaleTaille de l'image finaleTaille de l'image finale...Sauvegarder la différenceSauvegarder l'imageSauvegarder le maillageSauver %sSauvegarder %s (format PPM seul)Sauvegarder la différence entre ce maillage et un autre maillageSauvegarder la différence dans le maillage.Sauvegarder le maillage pour %s.Sauvegarder la sessionSélectionnerSélectionner un pointCalculer ce maillage par interpolation de tous les autres, en appliquant comme poids les « coefficients de maillage »PréférencesMontrer toutes les imagesMontrer la séquence animée après avoir tout sauvegardé (nécessite la commande « animate » du paquet imagemagick)Montrer la séquence animée après avoir tout sauvegardé (sur certaine architectures, nécessite la commande « animate » du paquet imagemagick)Montrer les différences entre ce maillage et un autre par des flèches blanchesAfficher la loupeAfficher la différence de maillage avec...Voir les coefficients de morphoseMontrer le résultat de la déformationSauter ceci et passer à la section suivanteLisserDésolé : impossible de créer un fichier AVI si le nom contient une virgule « , » (la faute à « mencoder »)Désolé, cette fonction n'est pas implantée pour l'instant.DébutArrête le calcul des tramesEnregistrer les coefficients de morphose...Sauvegarde en interne de l'état de tous les maillages et facteurs de mélange (pour générer des séquences de morphose).ÉtirerÉtirer l'ensemble de la caractéristiquePosition de la sous-imageBasculer de l'(des) image(s) d'entrée vers l'image déformée après une déformation (primé par ci-dessus)Image de référenceLa tentative de fermer le fichier de l'image sauvegardée %s a produit l'erreur: %sLa tentative de chargement d'un maillage depuis le fichier a générer une erreur (soit ce n'est pas un fichier de maillage, soit ce fchier est endommagé).La tentative de chargement de l'image %s a produit une erreur: %sLa tentative de chargement de l'image %s à redimensionner a produit l'erreur: %sLa tentative de sauvegarde de l'image %s a produit l'erreur: %sLe moyennage des images entraînera des pertes ; vous pouvez améliorer le résultat par un algorithme adapté (basé sur les ondelettes)L'extension du fichier est « %s » mais l'image a été sauvegardée au format « %s ». Cette différence peut vous empêcher de visualiser cette image.Les fichiers contenant les trames seront numérotés séquentiellement depuis ce numéro.Les images d'entrées sont déformées vers le maillage final, et mélangées en les pondérant avec les « facteurs de mélange ». Ceci équivaut à presser tous les boutons « Exécuter la déformation » et presser ensuite « Mélanger ».Les images d'entrée sont déformées vers le maillage final et mélangées en les pondérant avec les « facteurs de mélange ». Ceci équivaut à presser tous les boutons « Exécuter la déformation » et ensuite presser « Mélanger ».Les images d'entrée ont un nombre de canaux différent : impossible de mélanger.Le maillage de l'image finale correspond à une interpolation des maillages des images d'entrée, pondérés par les « facteurs de maillage ».Le(s) maillage(s) %s n'a (ont) pas été sauvegardé(s) ! Voulez-vous tout de même sortir ?La taille de l'image L=%d h=%d et la taille enregistrée dans le maillage L=%d h=%d ne correspondent pas.Ces coefficients déterminent le poids de cette image/ce maillage dans la morphose.Ce nom de fichier est déjà utilisé par le maillage de l'image %d.Ceci est la profondeur de décomposition des ondelettes.Ce maillage a été créé à partir de l'image « %s » et non cette image « %s ».Pour mélanger des images, la somme des « coefficients de mélange » (mixing factors) doit être non-nulle. Les valeurs par défaut ont été positionnées pour vous.Pour interpoler les maillages, deux images d'entrée sont nécessaires.Pour interpoler les maillages, la somme des « coefficients de maillage » doit être non-nulle. Les valeurs par défaut ont été sélectionnées.Pour exécuter une morphose, vous devez disposer d'au moins deux images d'entrée.PisterType d'énergie qui est minimisée pour décider de la position des noeuds non sélectionnés du maillage : une énergie en fin plateau est meilleure mais plus lente, pour gagner en vitesse utiliser une énergie élastique lors de la modification des maillagesDépaqueterDépaqueter cette caractéristique et en sélectionne tous ses pointsDéselectionnerDéselectionner un pointDéforme en appliquant une méthode d'anticrénelageV. la morphose avec maillageV. déformation et maillagesVoir les points des yeuxVoir la morphoseVoir le maillage initialVoir les noeuds initiauxVisualiser la déformation (warp)Voir le maillage déforméVoir les points modifiésAvertissementAvertissement !Aide à la déformation (warp)Déformer cette image depuis ce maillage vers le maillage final et visualiser le résultat dans cette fenêtre ou une fenêtre accessoireImage déforméeDéformer l'image dans une autre fenêtreProfondeur de décomposition des ondelettesÉgalisation par ondelettesÉgalisation par ondelettesBienvenuePréserver la géométrie lors du chargement d'une imageLors d'une transformation ou d'un mélange, ce coefficient représentera le poids de cette image dans l'image finale.Quand vous utilisez la fonction d' « interpolation de maillages », le « facteur de maillage » mesure le poids de ce maillage sur le maillage de l'image finale.Pourquoi ce bip ?LargeurFenêtre 1Abscisse du centrex2Ordonnée du centreVous ne pouvez pas modifier ce maillage - il est généré par interpolation de ceux des images d'entrée. Si vous souhaitez vraiment le modifier, désactivez l'option « Interpolation automatique des maillages ».Charger une image avant de définir une sous-image.xmorph-20140707+nmu2/po/POTFILES.in0000664000000000000000000000524412356304632013246 0ustar ./xmorph/help_menu.h ./xmorph/file_menu.c ./xmorph/mesh_cb.c ./xmorph/mesh_menu.h ./xmorph/file_menu.h ./xmorph/warp_menu.c ./xmorph/help_menu.c ./xmorph/xmorph.c ./xmorph/sequence.c ./xmorph/mjg_dialog.h ./xmorph/mjg_dialog.c ./xmorph/diw_map.h ./xmorph/main.h ./xmorph/xmorph.h ./xmorph/image_cb.c ./xmorph/image_diw.h ./xmorph/warp_menu.h ./xmorph/diw_map.c ./xmorph/image_diw.c ./xmorph/mesh_menu.c ./xmorph/image_cb.h ./xmorph/sequence.h ./xmorph/mesh_cb.h ./glade2/support.c ./glade2/interface.c ./glade2/callbacks.c ./glade2/interface.h ./glade2/support.h ./glade2/main.c ./glade2/callbacks.h ./gtkmorph/spinbuttons.h ./gtkmorph/mag.h ./gtkmorph/feature.h ./gtkmorph/settings.c ./gtkmorph/utils.h ./gtkmorph/guide.c ./gtkmorph/guide.h ./gtkmorph/utils2_c ./gtkmorph/gtksettings.h ./gtkmorph/feature.c ./gtkmorph/settings.h ./gtkmorph/guide_text.c ./gtkmorph/movies.c ./gtkmorph/callbacks_help.c ./gtkmorph/warp-gtk.c ./gtkmorph/utils-mesh.c ./gtkmorph/warp-gtk.h ./gtkmorph/callbacks_fs.c ./gtkmorph/utils.c ./gtkmorph/movies.h ./gtkmorph/affine.h ./gtkmorph/gdk-pixbuf-extra.c ./gtkmorph/mesh-gtk.h ./gtkmorph/gtk-meta.h ./gtkmorph/main.h ./gtkmorph/guide_text.h ./gtkmorph/loadsave_mesh.c ./gtkmorph/dialogs.h ./gtkmorph/callbacks_subimg.h ./gtkmorph/dialogs.c ./gtkmorph/unused.c ./gtkmorph/callbacks_fs.h ./gtkmorph/callbacks_warped.c ./gtkmorph/loadsave.c ./gtkmorph/gtksettings.c ./gtkmorph/callbacks_edit.c ./gtkmorph/loadsave_mesh.h ./gtkmorph/callbacks_img.c ./gtkmorph/colors.c ./gtkmorph/callbacks_subimg.c ./gtkmorph/gdk-pixbuf-extra.h ./gtkmorph/loadsave.h ./gtkmorph/gtk_subimagesel.h ./gtkmorph/mesh-gtk.c ./gtkmorph/main.c ./gtkmorph/gtk-meta.c ./gtkmorph/callbacks_main.c ./gtkmorph/gtk_subimagesel.c ./gtkmorph/gtktopdata.c ./gtkmorph/callbacks_fs_mesh.c ./gtkmorph/gtktopdata.h ./gtkmorph/colors.h ./gtkmorph/mag.c ./glade1/support.c ./glade1/interface.c ./glade1/callbacks.c ./glade1/interface.h ./glade1/support.h ./glade1/main.c ./glade1/callbacks.h ./libmorph/spl-array.h ./libmorph/my_malloc.h ./libmorph/my_malloc.c ./libmorph/tga.h ./libmorph/tga.c ./libmorph/warp.c ./libmorph/mesh.h ./libmorph/warp2.c ./libmorph/braindead_msvc.h ./libmorph/warp2.h ./libmorph/warp-gtk.h ./libmorph/mesh_t.h ./libmorph/sinc_100.h ./libmorph/spline.h ./libmorph/spline.c ./libmorph/resample.c ./libmorph/resample.h ./libmorph/RgbaImage.h ./libmorph/relax.h ./libmorph/mesh.c ./libmorph/relax.c ./libmorph/sinc_1024.h ./libmorph/resample_lvalero,oberger.c ./libmorph/warp.h ./libmorph/mesh-swig.h ./libmorph/resample_snippet.h ./libmorph/spl-array.c ./libmorph/mesh-getext.h ./libmorph/RgbaImage.c ./libmorph/sinc_256.h ./intl/gettext.h ./po/gtkmorph.glade2.c ./po/gtkmorph.glade.c ./config.h ./morph/main.c xmorph-20140707+nmu2/po/boldquot.sed0000664000000000000000000000033112356325452014012 0ustar s/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g s/“/“/g s/â€/â€/g s/‘/‘/g s/’/’/g xmorph-20140707+nmu2/po/xmorph.pot0000664000000000000000000014076212356342222013534 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Gourlay, Mennucci # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: xmorph 20090929\n" "Report-Msgid-Bugs-To: mennucc1@debian.org\n" "POT-Creation-Date: 2014-07-06 23:50+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: glade2/support.c:90 glade2/support.c:114 glade1/support.c:121 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "" #: glade2/interface.c:154 glade1/interface.c:141 po/gtkmorph.glade2.c:7 #: po/gtkmorph.glade.c:7 msgid "gtkmorph" msgstr "" #: glade2/interface.c:166 glade1/interface.c:160 po/gtkmorph.glade2.c:8 #: po/gtkmorph.glade.c:9 msgid "File" msgstr "" #: glade2/interface.c:175 gtkmorph/callbacks_main.c:181 glade1/interface.c:177 #: po/gtkmorph.glade2.c:9 po/gtkmorph.glade.c:10 msgid "load session" msgstr "" #: glade2/interface.c:180 gtkmorph/callbacks_main.c:198 glade1/interface.c:185 #: po/gtkmorph.glade2.c:10 po/gtkmorph.glade.c:11 msgid "save session" msgstr "" #: glade2/interface.c:191 glade1/interface.c:202 po/gtkmorph.glade2.c:11 #: po/gtkmorph.glade.c:12 msgid "add an image" msgstr "" #: glade2/interface.c:196 po/gtkmorph.glade2.c:13 msgid "load a difference" msgstr "" #: glade2/interface.c:200 po/gtkmorph.glade2.c:12 msgid "" "load a \"differential mesh\", that is a mesh representing the difference of " "two meshes" msgstr "" #: glade2/interface.c:208 glade1/interface.c:219 po/gtkmorph.glade2.c:14 #: po/gtkmorph.glade.c:13 msgid "Quit" msgstr "" #: glade2/interface.c:216 glade1/interface.c:230 po/gtkmorph.glade2.c:15 #: po/gtkmorph.glade.c:14 msgid "Edit" msgstr "" #: glade2/interface.c:225 glade1/interface.c:246 po/gtkmorph.glade2.c:16 #: po/gtkmorph.glade.c:15 msgid "show all images" msgstr "" #: glade2/interface.c:230 glade1/interface.c:254 po/gtkmorph.glade2.c:17 #: po/gtkmorph.glade.c:16 msgid "show mag" msgstr "" #: glade2/interface.c:241 glade1/interface.c:271 po/gtkmorph.glade2.c:18 #: po/gtkmorph.glade.c:17 msgid "resulting image size..." msgstr "" #: glade2/interface.c:246 glade1/interface.c:279 po/gtkmorph.glade2.c:19 #: po/gtkmorph.glade.c:18 msgid "show morph factors" msgstr "" #: glade2/interface.c:251 glade1/interface.c:287 po/gtkmorph.glade2.c:20 #: po/gtkmorph.glade.c:19 msgid "Settings" msgstr "" #: glade2/interface.c:256 glade1/interface.c:295 po/gtkmorph.glade2.c:21 #: po/gtkmorph.glade.c:20 msgid "Morph" msgstr "" #: glade2/interface.c:265 glade1/interface.c:311 po/gtkmorph.glade2.c:23 #: po/gtkmorph.glade.c:22 msgid "interpolate meshes" msgstr "" #: glade2/interface.c:269 glade1/interface.c:318 po/gtkmorph.glade2.c:22 #: po/gtkmorph.glade.c:21 msgid "" "the mesh of the resulting image is set to an interpolation of the input " "images' meshes, weighted by the ``mesh factors''" msgstr "" #: glade2/interface.c:271 glade1/interface.c:320 po/gtkmorph.glade2.c:25 #: po/gtkmorph.glade.c:24 msgid "morph images" msgstr "" #: glade2/interface.c:275 glade1/interface.c:327 po/gtkmorph.glade2.c:24 #: po/gtkmorph.glade.c:23 msgid "" "the input images are warped to the resulting mesh and blended using ``image " "blending factors'' as weights. It has the same effect as if you hit all the " "``do warp'' buttons and then you hit the ``do blending'' button" msgstr "" #: glade2/interface.c:286 glade1/interface.c:341 po/gtkmorph.glade2.c:27 #: po/gtkmorph.glade.c:26 msgid "adjust all meshes" msgstr "" #: glade2/interface.c:290 glade1/interface.c:348 po/gtkmorph.glade2.c:26 #: po/gtkmorph.glade.c:25 msgid "adjust points of meshes confronting original images and the morph" msgstr "" #: glade2/interface.c:292 glade1/interface.c:350 po/gtkmorph.glade2.c:29 #: po/gtkmorph.glade.c:28 msgid "wavelet equalize" msgstr "" #: glade2/interface.c:296 glade1/interface.c:357 po/gtkmorph.glade2.c:28 #: po/gtkmorph.glade.c:27 msgid "" "equalize input images so that the subband of wavelet transform have the same " "energies" msgstr "" #: glade2/interface.c:304 glade1/interface.c:368 po/gtkmorph.glade2.c:30 #: po/gtkmorph.glade.c:29 msgid "restore morph coefficients..." msgstr "" #: glade2/interface.c:313 glade2/interface.c:338 glade1/interface.c:384 #: glade1/interface.c:425 po/gtkmorph.glade2.c:31 po/gtkmorph.glade2.c:36 #: po/gtkmorph.glade.c:30 po/gtkmorph.glade.c:35 msgid "start" msgstr "" #: glade2/interface.c:318 glade2/interface.c:343 glade1/interface.c:392 #: glade1/interface.c:433 po/gtkmorph.glade2.c:32 po/gtkmorph.glade2.c:37 #: po/gtkmorph.glade.c:31 po/gtkmorph.glade.c:36 msgid "end" msgstr "" #: glade2/interface.c:323 glade1/interface.c:400 po/gtkmorph.glade2.c:33 #: po/gtkmorph.glade.c:32 msgid "equal" msgstr "" #: glade2/interface.c:328 glade1/interface.c:408 po/gtkmorph.glade2.c:35 #: po/gtkmorph.glade.c:34 msgid "store morph coefficients..." msgstr "" #: glade2/interface.c:332 glade1/interface.c:415 po/gtkmorph.glade2.c:34 #: po/gtkmorph.glade.c:33 msgid "" "stores internally the state of all mesh and image-blending factors (to make " "morph sequences)" msgstr "" #: glade2/interface.c:348 glade1/interface.c:441 po/gtkmorph.glade2.c:39 #: po/gtkmorph.glade.c:38 msgid "morph sequence" msgstr "" #: glade2/interface.c:352 glade1/interface.c:448 po/gtkmorph.glade2.c:38 #: po/gtkmorph.glade.c:37 msgid "" "create and save many morphs, equally spaced between the morph start and the " "morph end (that you have already stored with the above menu)" msgstr "" #: glade2/interface.c:360 glade1/interface.c:459 po/gtkmorph.glade2.c:40 #: po/gtkmorph.glade.c:39 po/gtkmorph.glade.c:191 msgid "Help" msgstr "" #: glade2/interface.c:369 glade1/interface.c:475 po/gtkmorph.glade2.c:41 #: po/gtkmorph.glade.c:40 msgid "guide..." msgstr "" #: glade2/interface.c:374 po/gtkmorph.glade2.c:42 msgid "load example session" msgstr "" #: glade2/interface.c:385 glade1/interface.c:492 po/gtkmorph.glade2.c:43 #: po/gtkmorph.glade.c:41 msgid "help..." msgstr "" #: glade2/interface.c:394 glade1/interface.c:508 po/gtkmorph.glade2.c:44 #: po/gtkmorph.glade.c:42 msgid "generic help" msgstr "" #: glade2/interface.c:399 glade1/interface.c:516 po/gtkmorph.glade2.c:45 #: po/gtkmorph.glade.c:43 msgid "warp help" msgstr "" #: glade2/interface.c:404 po/gtkmorph.glade2.c:46 msgid "mesh tips" msgstr "" #: glade2/interface.c:409 glade1/interface.c:524 po/gtkmorph.glade2.c:47 #: po/gtkmorph.glade.c:44 msgid "morph help" msgstr "" #: glade2/interface.c:414 po/gtkmorph.glade2.c:48 msgid "feature help" msgstr "" #: glade2/interface.c:425 glade1/interface.c:541 po/gtkmorph.glade2.c:49 #: po/gtkmorph.glade.c:45 msgid "why the beep?" msgstr "" #: glade2/interface.c:440 glade2/interface.c:1240 glade1/interface.c:565 #: glade1/interface.c:1342 po/gtkmorph.glade2.c:51 po/gtkmorph.glade2.c:108 #: po/gtkmorph.glade.c:47 po/gtkmorph.glade.c:105 msgid "" "load\n" "image" msgstr "" #: glade2/interface.c:445 glade1/interface.c:573 po/gtkmorph.glade2.c:50 #: po/gtkmorph.glade.c:46 msgid "" "load the image. This image may not be warped or morphed, but it may help in " "setting the resulting mesh" msgstr "" #: glade2/interface.c:447 glade2/interface.c:1246 glade1/interface.c:575 #: glade1/interface.c:1351 po/gtkmorph.glade2.c:53 po/gtkmorph.glade2.c:110 #: po/gtkmorph.glade.c:49 po/gtkmorph.glade.c:107 msgid "" "load\n" "mesh" msgstr "" #: glade2/interface.c:453 glade2/interface.c:1252 glade1/interface.c:584 #: glade1/interface.c:1360 po/gtkmorph.glade2.c:55 po/gtkmorph.glade2.c:112 #: po/gtkmorph.glade.c:51 po/gtkmorph.glade.c:109 msgid "" "save\n" "mesh" msgstr "" #: glade2/interface.c:464 glade1/interface.c:601 po/gtkmorph.glade2.c:57 #: po/gtkmorph.glade.c:53 msgid "" "``edit template'': view the loaded image and edit the mesh on it. \\n ``view " "morphed'': view the result of morphing. ``v.morph&mesh'' as above but " "with the mesh. ``edit eyes points'' sets the reference position of the eyes" msgstr "" #: glade2/interface.c:469 glade1/interface.c:603 po/gtkmorph.glade2.c:58 #: po/gtkmorph.glade.c:54 msgid "edit template" msgstr "" #: glade2/interface.c:474 glade1/interface.c:606 po/gtkmorph.glade2.c:59 #: po/gtkmorph.glade.c:55 msgid "view morph" msgstr "" #: glade2/interface.c:479 glade1/interface.c:609 po/gtkmorph.glade2.c:60 #: po/gtkmorph.glade.c:56 msgid "v morph&meshes" msgstr "" #: glade2/interface.c:484 glade1/interface.c:612 po/gtkmorph.glade2.c:61 #: po/gtkmorph.glade.c:57 msgid "edit eyes points" msgstr "" #: glade2/interface.c:491 glade2/interface.c:1297 glade1/interface.c:617 #: glade1/interface.c:1393 po/gtkmorph.glade2.c:62 po/gtkmorph.glade2.c:122 #: po/gtkmorph.glade.c:58 po/gtkmorph.glade.c:116 msgid "settings" msgstr "" #: glade2/interface.c:497 glade1/interface.c:626 po/gtkmorph.glade2.c:64 #: po/gtkmorph.glade.c:60 msgid "" "interpol.\n" "meshes" msgstr "" #: glade2/interface.c:502 glade1/interface.c:634 po/gtkmorph.glade2.c:63 #: po/gtkmorph.glade.c:59 msgid "" "set this mesh to be an interpolation of all other meshes, using ``mesh " "factors'' as weights" msgstr "" #: glade2/interface.c:504 glade1/interface.c:636 po/gtkmorph.glade2.c:67 #: po/gtkmorph.glade.c:63 msgid "" "do\n" "blending" msgstr "" #: glade2/interface.c:509 glade1/interface.c:644 po/gtkmorph.glade2.c:66 #: po/gtkmorph.glade.c:62 msgid "" "mix all the warped images in the ``resulting image'' using ``image blending " "factors'' as weights" msgstr "" #: glade2/interface.c:511 glade1/interface.c:646 po/gtkmorph.glade2.c:70 #: po/gtkmorph.glade.c:66 msgid "" "do\n" "morph" msgstr "" #: glade2/interface.c:516 glade1/interface.c:654 po/gtkmorph.glade2.c:69 #: po/gtkmorph.glade.c:65 msgid "" "the input images are warped to the resulting mesh and blended using ``image " "blending factors'' as weights. It has the same effect as if you hit all the " "``do warp'' buttons and then you hit the ``do blending'' button." msgstr "" #: glade2/interface.c:518 glade2/interface.c:1310 glade1/interface.c:656 #: glade1/interface.c:1412 po/gtkmorph.glade2.c:73 po/gtkmorph.glade2.c:127 #: po/gtkmorph.glade.c:69 po/gtkmorph.glade.c:121 msgid "" "save\n" "image" msgstr "" #: glade2/interface.c:523 glade2/interface.c:1315 glade1/interface.c:664 #: glade1/interface.c:1420 po/gtkmorph.glade2.c:72 po/gtkmorph.glade2.c:126 #: po/gtkmorph.glade.c:68 po/gtkmorph.glade.c:120 msgid "it saves whatever image is currently shown in the window" msgstr "" #: glade2/interface.c:525 glade2/interface.c:1317 glade1/interface.c:666 #: glade1/interface.c:1422 po/gtkmorph.glade2.c:76 po/gtkmorph.glade2.c:130 #: po/gtkmorph.glade.c:72 po/gtkmorph.glade.c:124 msgid "guide" msgstr "" #: glade2/interface.c:530 glade2/interface.c:1322 glade1/interface.c:674 #: glade1/interface.c:1430 po/gtkmorph.glade2.c:75 po/gtkmorph.glade2.c:129 #: po/gtkmorph.glade.c:71 po/gtkmorph.glade.c:123 msgid "back to guide" msgstr "" #: glade2/interface.c:572 glade1/interface.c:734 po/gtkmorph.glade2.c:78 #: po/gtkmorph.glade.c:74 msgid "new" msgstr "" #: glade2/interface.c:577 glade1/interface.c:742 po/gtkmorph.glade2.c:77 #: po/gtkmorph.glade.c:73 msgid "add new feature to the end of list" msgstr "" #: glade2/interface.c:579 glade1/interface.c:744 po/gtkmorph.glade2.c:79 #: po/gtkmorph.glade.c:75 msgid "rename" msgstr "" #: glade2/interface.c:585 glade1/interface.c:753 po/gtkmorph.glade2.c:81 #: po/gtkmorph.glade.c:77 msgid "pack" msgstr "" #: glade2/interface.c:590 glade1/interface.c:761 po/gtkmorph.glade2.c:80 #: po/gtkmorph.glade.c:76 msgid "pack the selected points in this feature" msgstr "" #: glade2/interface.c:592 glade1/interface.c:763 po/gtkmorph.glade2.c:83 #: po/gtkmorph.glade.c:79 msgid "unpack" msgstr "" #: glade2/interface.c:597 glade1/interface.c:771 po/gtkmorph.glade2.c:82 #: po/gtkmorph.glade.c:78 msgid "unpack this feature and transforms all points of it to selected points" msgstr "" #: glade2/interface.c:599 glade1/interface.c:773 po/gtkmorph.glade2.c:85 #: po/gtkmorph.glade.c:81 msgid "delete" msgstr "" #: glade2/interface.c:604 glade1/interface.c:781 po/gtkmorph.glade2.c:84 #: po/gtkmorph.glade.c:80 msgid "delete last feature" msgstr "" #: glade2/interface.c:614 glade2/interface.c:2508 glade1/interface.c:795 #: glade1/interface.c:2656 po/gtkmorph.glade2.c:87 po/gtkmorph.glade2.c:199 #: po/gtkmorph.glade.c:83 po/gtkmorph.glade.c:194 msgid "edit" msgstr "" #: glade2/interface.c:622 glade2/interface.c:2515 glade1/interface.c:796 #: glade1/interface.c:2657 po/gtkmorph.glade2.c:86 po/gtkmorph.glade2.c:198 #: po/gtkmorph.glade.c:82 po/gtkmorph.glade.c:193 msgid "move single point" msgstr "" #: glade2/interface.c:628 glade2/interface.c:2520 glade1/interface.c:811 #: glade1/interface.c:2670 po/gtkmorph.glade2.c:89 po/gtkmorph.glade2.c:201 #: po/gtkmorph.glade.c:85 po/gtkmorph.glade.c:196 msgid "move" msgstr "" #: glade2/interface.c:636 glade2/interface.c:2527 glade1/interface.c:812 #: glade1/interface.c:2671 po/gtkmorph.glade2.c:88 po/gtkmorph.glade2.c:200 #: po/gtkmorph.glade.c:84 po/gtkmorph.glade.c:195 msgid "move whole feature" msgstr "" #: glade2/interface.c:641 glade2/interface.c:2533 glade1/interface.c:826 #: glade1/interface.c:2685 po/gtkmorph.glade2.c:91 po/gtkmorph.glade2.c:203 #: po/gtkmorph.glade.c:87 po/gtkmorph.glade.c:198 msgid "stretch" msgstr "" #: glade2/interface.c:649 glade2/interface.c:2540 glade1/interface.c:827 #: glade1/interface.c:2686 po/gtkmorph.glade2.c:90 po/gtkmorph.glade2.c:202 #: po/gtkmorph.glade.c:86 po/gtkmorph.glade.c:197 msgid "stretch whole feature" msgstr "" #: glade2/interface.c:658 glade1/interface.c:837 po/gtkmorph.glade2.c:92 #: po/gtkmorph.glade.c:88 msgid "-" msgstr "" #: glade2/interface.c:665 glade1/interface.c:849 po/gtkmorph.glade2.c:93 #: po/gtkmorph.glade.c:89 msgid "select" msgstr "" #: glade2/interface.c:677 glade1/interface.c:864 po/gtkmorph.glade2.c:94 #: po/gtkmorph.glade.c:90 msgid "unselect" msgstr "" #: glade2/interface.c:689 glade1/interface.c:879 po/gtkmorph.glade2.c:96 #: po/gtkmorph.glade.c:92 msgid "assign" msgstr "" #: glade2/interface.c:697 glade1/interface.c:880 po/gtkmorph.glade2.c:95 #: po/gtkmorph.glade.c:91 msgid "assign point to feature" msgstr "" #: glade2/interface.c:725 glade2/interface.c:1350 gtkmorph/dialogs.c:85 #: glade1/interface.c:908 glade1/interface.c:1450 po/gtkmorph.glade2.c:97 #: po/gtkmorph.glade2.c:131 po/gtkmorph.glade.c:93 po/gtkmorph.glade.c:125 msgid "error" msgstr "" #: glade2/interface.c:746 glade2/interface.c:1502 glade1/interface.c:951 #: glade1/interface.c:1660 po/gtkmorph.glade2.c:98 po/gtkmorph.glade2.c:146 #: po/gtkmorph.glade.c:95 po/gtkmorph.glade.c:141 msgid "width" msgstr "" #: glade2/interface.c:760 glade2/interface.c:1516 glade1/interface.c:971 #: glade1/interface.c:1678 po/gtkmorph.glade2.c:99 po/gtkmorph.glade2.c:147 #: po/gtkmorph.glade.c:96 po/gtkmorph.glade.c:142 msgid "height" msgstr "" #: glade2/interface.c:774 glade1/interface.c:991 po/gtkmorph.glade2.c:100 #: po/gtkmorph.glade.c:97 msgid "x2" msgstr "" #: glade2/interface.c:780 glade1/interface.c:1000 po/gtkmorph.glade2.c:101 #: po/gtkmorph.glade.c:98 msgid "/2" msgstr "" #: glade2/interface.c:786 glade2/interface.c:1530 glade1/interface.c:1009 #: glade1/interface.c:1696 po/gtkmorph.glade2.c:102 po/gtkmorph.glade2.c:148 #: po/gtkmorph.glade.c:99 po/gtkmorph.glade.c:143 msgid "apply" msgstr "" #: glade2/interface.c:792 glade1/interface.c:933 po/gtkmorph.glade2.c:103 #: po/gtkmorph.glade.c:94 msgid "resulting image size" msgstr "" #: glade2/interface.c:797 po/gtkmorph.glade2.c:104 msgid "welcome" msgstr "" #: glade2/interface.c:1124 glade2/interface.c:1228 glade1/interface.c:1228 #: glade1/interface.c:1323 po/gtkmorph.glade2.c:105 po/gtkmorph.glade2.c:107 #: po/gtkmorph.glade.c:100 po/gtkmorph.glade.c:104 msgid "error!" msgstr "" #: glade2/interface.c:1133 glade1/interface.c:1240 po/gtkmorph.glade2.c:106 #: po/gtkmorph.glade.c:101 msgid "load the selected image" msgstr "" #: glade2/interface.c:1258 po/gtkmorph.glade2.c:115 msgid "" "save\n" "diff" msgstr "" #: glade2/interface.c:1263 po/gtkmorph.glade2.c:114 msgid "save difference from this mesh to other mesh" msgstr "" #: glade2/interface.c:1270 glade1/interface.c:1377 po/gtkmorph.glade2.c:117 #: po/gtkmorph.glade.c:111 msgid "" "``edit mesh'': view the loaded image and edit the mesh on it. ``view " "warp'': view the result of warping the loaded image from this mesh to the " "resulting mesh. ``v. warp&meshes'' as before but with both " "meshes on. ``choose subimage'' choose which subimage of the " "loaded image you wish to use. You can also use the 'settings' " "button to change these settings more finely." msgstr "" #: glade2/interface.c:1275 glade1/interface.c:1379 po/gtkmorph.glade2.c:118 #: po/gtkmorph.glade.c:112 msgid "edit mesh" msgstr "" #: glade2/interface.c:1280 glade1/interface.c:1382 po/gtkmorph.glade2.c:119 #: po/gtkmorph.glade.c:113 msgid "view warp" msgstr "" #: glade2/interface.c:1285 glade1/interface.c:1385 po/gtkmorph.glade2.c:120 #: po/gtkmorph.glade.c:114 msgid "v. warp&meshes" msgstr "" #: glade2/interface.c:1290 glade1/interface.c:1388 po/gtkmorph.glade2.c:121 #: po/gtkmorph.glade.c:115 msgid "choose subimage" msgstr "" #: glade2/interface.c:1303 glade1/interface.c:1402 po/gtkmorph.glade2.c:124 #: po/gtkmorph.glade.c:118 msgid "" "do\n" "warp" msgstr "" #: glade2/interface.c:1308 glade1/interface.c:1410 po/gtkmorph.glade2.c:123 #: po/gtkmorph.glade.c:117 msgid "" "warp this image from this mesh to the resulting mesh, and show the result in " "this window or an accessory window" msgstr "" #: glade2/interface.c:1359 glade1/interface.c:1476 po/gtkmorph.glade2.c:132 #: po/gtkmorph.glade.c:126 msgid "" "these coefficents decide how much this image/mesh will influence the final " "morph" msgstr "" #: glade2/interface.c:1374 glade1/interface.c:1497 po/gtkmorph.glade2.c:133 #: po/gtkmorph.glade.c:128 msgid "" "image\n" "blending" msgstr "" #: glade2/interface.c:1382 glade2/interface.c:2670 glade1/interface.c:1507 #: po/gtkmorph.glade2.c:135 po/gtkmorph.glade2.c:208 po/gtkmorph.glade.c:130 msgid "" "mesh\n" "interp." msgstr "" #: glade2/interface.c:1419 glade1/interface.c:1553 po/gtkmorph.glade2.c:137 #: po/gtkmorph.glade.c:132 msgid "" "when you morph the images, or you ``do mixing'', this factor will measure " "how much this image will show in the mixing in the resulting image" msgstr "" #: glade2/interface.c:1430 glade2/interface.c:2690 glade1/interface.c:1567 #: po/gtkmorph.glade2.c:138 po/gtkmorph.glade2.c:210 po/gtkmorph.glade.c:133 msgid "" "when you use the ``interpolate meshes'' function, the ``mesh factor'' " "measures how much this mesh will influence the resulting image's mesh" msgstr "" #: glade2/interface.c:1434 glade1/interface.c:1478 po/gtkmorph.glade2.c:139 #: po/gtkmorph.glade.c:127 msgid "coefficients" msgstr "" #: glade2/interface.c:1454 glade1/interface.c:1595 po/gtkmorph.glade2.c:141 #: po/gtkmorph.glade.c:136 msgid "reset" msgstr "" #: glade2/interface.c:1458 glade1/interface.c:1602 po/gtkmorph.glade2.c:140 #: po/gtkmorph.glade.c:135 msgid "infer the subimage from the eyes position" msgstr "" #: glade2/interface.c:1464 glade1/interface.c:1611 po/gtkmorph.glade2.c:142 #: po/gtkmorph.glade.c:137 msgid "x coordinate of center" msgstr "" #: glade2/interface.c:1466 glade1/interface.c:1613 po/gtkmorph.glade2.c:143 #: po/gtkmorph.glade.c:138 msgid "c x" msgstr "" #: glade2/interface.c:1485 glade1/interface.c:1639 po/gtkmorph.glade2.c:144 #: po/gtkmorph.glade.c:139 msgid "y coordinate of center" msgstr "" #: glade2/interface.c:1487 glade1/interface.c:1641 po/gtkmorph.glade2.c:145 #: po/gtkmorph.glade.c:140 msgid "c y" msgstr "" #: glade2/interface.c:1536 glade1/interface.c:1579 po/gtkmorph.glade2.c:149 #: po/gtkmorph.glade.c:134 msgid "subimage position" msgstr "" #: glade2/interface.c:1690 gtkmorph/dialogs.c:74 glade1/interface.c:1813 #: po/gtkmorph.glade2.c:150 po/gtkmorph.glade.c:144 msgid "warning" msgstr "" #: glade2/interface.c:1697 glade1/interface.c:1824 po/gtkmorph.glade2.c:152 #: po/gtkmorph.glade.c:146 msgid "warning!" msgstr "" #: glade2/interface.c:1708 glade1/interface.c:1840 po/gtkmorph.glade2.c:151 #: po/gtkmorph.glade.c:145 msgid "ok" msgstr "" #: glade2/interface.c:1753 gtkmorph/utils.c:358 glade1/interface.c:1879 #: po/gtkmorph.glade2.c:153 po/gtkmorph.glade.c:147 msgid "warped image" msgstr "" #: glade2/interface.c:1785 po/gtkmorph.glade2.c:154 msgid "frame6" msgstr "" #: glade2/interface.c:1838 glade1/interface.c:1945 po/gtkmorph.glade2.c:155 #: po/gtkmorph.glade.c:148 msgid "unselect point" msgstr "" #: glade2/interface.c:1843 glade1/interface.c:1953 po/gtkmorph.glade2.c:156 #: po/gtkmorph.glade.c:149 msgid "select point" msgstr "" #: glade2/interface.c:1848 glade1/interface.c:1961 po/gtkmorph.glade2.c:157 #: po/gtkmorph.glade.c:150 msgid "assign point" msgstr "" #: glade2/interface.c:1853 glade1/interface.c:1969 po/gtkmorph.glade2.c:159 #: po/gtkmorph.glade.c:151 msgid "adjust" msgstr "" #: glade2/interface.c:1857 po/gtkmorph.glade2.c:158 msgid "adjust mesh point position w.r.t. previous image" msgstr "" #: glade2/interface.c:1865 glade1/interface.c:1986 po/gtkmorph.glade2.c:160 #: po/gtkmorph.glade.c:152 msgid "add horizontal line" msgstr "" #: glade2/interface.c:1873 glade1/interface.c:1997 po/gtkmorph.glade2.c:161 #: po/gtkmorph.glade.c:153 msgid "add vertical line" msgstr "" #: glade2/interface.c:1881 glade1/interface.c:2008 po/gtkmorph.glade2.c:162 #: po/gtkmorph.glade.c:154 msgid "del horizontal line" msgstr "" #: glade2/interface.c:1889 glade1/interface.c:2019 po/gtkmorph.glade2.c:163 #: po/gtkmorph.glade.c:155 msgid "del vertical line" msgstr "" #: glade2/interface.c:1903 glade1/interface.c:2039 po/gtkmorph.glade2.c:164 #: po/gtkmorph.glade.c:156 msgid "smooth" msgstr "" #: glade2/interface.c:1999 glade1/interface.c:2120 po/gtkmorph.glade2.c:165 #: po/gtkmorph.glade.c:157 msgid "gtkmorph movie" msgstr "" #: glade2/interface.c:2020 glade1/interface.c:2145 po/gtkmorph.glade2.c:166 #: po/gtkmorph.glade.c:158 msgid "how many frames will be saved; each will be saved in a file" msgstr "" #: glade2/interface.c:2022 glade1/interface.c:2147 po/gtkmorph.glade2.c:167 #: po/gtkmorph.glade.c:159 msgid "how many frames" msgstr "" #: glade2/interface.c:2049 glade1/interface.c:2181 po/gtkmorph.glade2.c:168 #: po/gtkmorph.glade.c:160 msgid "" "the files of the frames will be numbered sequentially starting from this " "number" msgstr "" #: glade2/interface.c:2051 glade1/interface.c:2183 po/gtkmorph.glade2.c:169 #: po/gtkmorph.glade.c:161 msgid "number of first file" msgstr "" #: glade2/interface.c:2069 glade1/interface.c:2210 po/gtkmorph.glade2.c:170 #: po/gtkmorph.glade.c:162 msgid "file base name" msgstr "" #: glade2/interface.c:2080 glade1/interface.c:2226 po/gtkmorph.glade2.c:171 #: po/gtkmorph.glade.c:163 msgid "frame" msgstr "" #: glade2/interface.c:2092 glade1/interface.c:2244 po/gtkmorph.glade2.c:173 #: po/gtkmorph.glade.c:166 msgid "create animated gif" msgstr "" #: glade2/interface.c:2098 glade1/interface.c:2253 po/gtkmorph.glade2.c:172 #: po/gtkmorph.glade.c:165 msgid "" "creates an animated gif (needs 'convert' from imagemagick) and plays it " "(needs 'animate' from imagemagick)" msgstr "" #: glade2/interface.c:2100 glade1/interface.c:2255 po/gtkmorph.glade2.c:175 #: po/gtkmorph.glade.c:168 msgid "animate sequence" msgstr "" #: glade2/interface.c:2106 po/gtkmorph.glade2.c:174 msgid "" "show animated sequence after saving it all (on some platforms, it may need " "'animate' command from imagemagick)" msgstr "" #: glade2/interface.c:2108 glade1/interface.c:2266 po/gtkmorph.glade2.c:177 #: po/gtkmorph.glade.c:170 msgid "replay" msgstr "" #: glade2/interface.c:2116 glade1/interface.c:2277 po/gtkmorph.glade2.c:176 #: po/gtkmorph.glade.c:169 msgid "resaves and replays animations" msgstr "" #: glade2/interface.c:2118 glade1/interface.c:2279 po/gtkmorph.glade2.c:179 #: po/gtkmorph.glade.c:172 msgid "creates mpeg" msgstr "" #: glade2/interface.c:2124 glade1/interface.c:2288 po/gtkmorph.glade2.c:178 #: po/gtkmorph.glade.c:171 msgid "" "creates an mpeg file and plays it; will use a parameter file (see help) " "(needs 'mpeg_encode' and 'mpeg_play')" msgstr "" #: glade2/interface.c:2126 po/gtkmorph.glade2.c:181 msgid "create AVI MPEG4" msgstr "" #: glade2/interface.c:2132 po/gtkmorph.glade2.c:180 msgid "creates an AVI file in MPEG4 format (needs 'mplayer' and 'mencoder')" msgstr "" #: glade2/interface.c:2142 glade1/interface.c:2228 po/gtkmorph.glade2.c:182 #: po/gtkmorph.glade.c:164 msgid "animations" msgstr "" #: glade2/interface.c:2158 glade1/interface.c:2327 po/gtkmorph.glade2.c:183 #: po/gtkmorph.glade.c:173 msgid "creates and saves all morphs, builds animations" msgstr "" #: glade2/interface.c:2168 po/gtkmorph.glade2.c:184 msgid "stops the computation of frames" msgstr "" #: glade2/interface.c:2261 glade1/interface.c:2397 po/gtkmorph.glade2.c:185 #: po/gtkmorph.glade.c:177 msgid "gtkmorph guide" msgstr "" #: glade2/interface.c:2293 glade1/interface.c:2440 po/gtkmorph.glade2.c:187 #: po/gtkmorph.glade.c:179 msgid "prev" msgstr "" #: glade2/interface.c:2298 glade1/interface.c:2448 po/gtkmorph.glade2.c:186 #: po/gtkmorph.glade.c:178 msgid "go back to previous guide pane" msgstr "" #: glade2/interface.c:2300 glade1/interface.c:2450 po/gtkmorph.glade2.c:189 #: po/gtkmorph.glade.c:181 msgid "do it" msgstr "" #: glade2/interface.c:2305 glade1/interface.c:2458 po/gtkmorph.glade2.c:188 #: po/gtkmorph.glade.c:180 msgid "do what is proposed in this pane" msgstr "" #: glade2/interface.c:2307 glade1/interface.c:2460 po/gtkmorph.glade2.c:191 #: po/gtkmorph.glade.c:183 msgid "next" msgstr "" #: glade2/interface.c:2312 glade1/interface.c:2468 po/gtkmorph.glade2.c:190 #: po/gtkmorph.glade.c:182 msgid "skip this and go to next guide pane" msgstr "" #: glade2/interface.c:2361 glade1/interface.c:2508 po/gtkmorph.glade2.c:192 #: po/gtkmorph.glade.c:184 msgid "question" msgstr "" #: glade2/interface.c:2368 glade1/interface.c:2516 po/gtkmorph.glade2.c:195 #: po/gtkmorph.glade.c:187 msgid "question?" msgstr "" #: glade2/interface.c:2384 glade1/interface.c:2540 po/gtkmorph.glade2.c:193 #: po/gtkmorph.glade.c:185 msgid "Yes" msgstr "" #: glade2/interface.c:2389 glade1/interface.c:2548 po/gtkmorph.glade2.c:194 #: po/gtkmorph.glade.c:186 msgid "No" msgstr "" #: glade2/interface.c:2425 glade1/interface.c:2577 po/gtkmorph.glade2.c:196 #: po/gtkmorph.glade.c:188 msgid "Select Color" msgstr "" #: glade2/interface.c:2487 glade1/interface.c:2625 po/gtkmorph.glade2.c:197 #: po/gtkmorph.glade.c:192 msgid "window1" msgstr "" #: glade2/interface.c:2581 glade1/interface.c:2723 po/gtkmorph.glade2.c:204 #: po/gtkmorph.glade.c:199 msgid "gtkmorph mag" msgstr "" #: glade2/interface.c:2594 glade1/interface.c:2741 po/gtkmorph.glade2.c:205 #: po/gtkmorph.glade.c:200 msgid "1" msgstr "" #: glade2/interface.c:2605 glade1/interface.c:2759 po/gtkmorph.glade2.c:206 #: po/gtkmorph.glade.c:201 msgid "track" msgstr "" #: glade2/interface.c:2662 gtkmorph/utils2_c:6 po/gtkmorph.glade2.c:207 msgid "differential mesh" msgstr "" #: gtkmorph/settings.c:84 msgid "no warnings" msgstr "" #: gtkmorph/settings.c:87 msgid "" "dont warn, just beep; warnings may be read with 'why the beep' in the 'help' " "menu" msgstr "" #: gtkmorph/settings.c:91 msgid "edit features" msgstr "" #: gtkmorph/settings.c:94 msgid "permits to add and delete mesh lines, edit features" msgstr "" #: gtkmorph/settings.c:98 msgid "preserve border" msgstr "" #: gtkmorph/settings.c:101 msgid "border points of the mesh are forced to stay on the border of the image" msgstr "" #: gtkmorph/settings.c:105 msgid "hide unusable" msgstr "" #: gtkmorph/settings.c:108 msgid "hide unusable widgets, instead of deactivating them" msgstr "" #: gtkmorph/settings.c:112 msgid "cursor jump" msgstr "" #: gtkmorph/settings.c:115 msgid "moves the image to recenter the last edited point" msgstr "" #: gtkmorph/settings.c:119 msgid "mesh cant overlap" msgstr "" #: gtkmorph/settings.c:122 msgid "" "a mesh point cannot enter in a neighbouring cell (this is currently not very " "well enforced)" msgstr "" #: gtkmorph/settings.c:126 msgid "use antialiasing warping" msgstr "" #: gtkmorph/settings.c:129 msgid "" "choose antialiasing method that is used when warping: the lanczos kernels " "are slower, but are necessary if the images have fine or grained textures " "for animations" msgstr "" #: gtkmorph/settings.c:134 msgid "wavelet equalization" msgstr "" #: gtkmorph/settings.c:137 msgid "" "the averaging of images will lose details; you may enable an enhancing " "algorithm (based on wavelets)" msgstr "" #: gtkmorph/settings.c:141 msgid "wavelet depth" msgstr "" #: gtkmorph/settings.c:144 msgid "this is the depth of the wavelets" msgstr "" #: gtkmorph/settings.c:149 msgid "energy for mesh smoothing" msgstr "" #: gtkmorph/settings.c:152 msgid "" "type of energy that is minimized to decide the position of the non-selected " "mesh points: thin plate energy is better but slower, to speed up use elastic " "energy when editing meshes" msgstr "" #: gtkmorph/settings.c:156 msgid "auto point adjust" msgstr "" #: gtkmorph/settings.c:159 msgid "" "adjust the position of a mesh point by comparing this image with the " "previous one and doing a best match. Achieves sub-pixel precision but may " "move your point around erratically." msgstr "" #: gtkmorph/settings.c:163 msgid "mesh factors sum to 1" msgstr "" #: gtkmorph/settings.c:166 msgid "" "always force the mesh factors so that they sum to 1;\n" "(if not, they are internally renormalized before using)" msgstr "" #: gtkmorph/settings.c:170 msgid "image factors sum to 1" msgstr "" #: gtkmorph/settings.c:173 msgid "" "always force the image factors so that they sum to 1;\n" "(if not, they are internally renormalized before using)" msgstr "" #: gtkmorph/settings.c:177 msgid "automatic mesh interpolation" msgstr "" #: gtkmorph/settings.c:180 msgid "" "automatically interpolates the resulting mesh when morphing (note that in " "this case you cannot edit it)" msgstr "" #: gtkmorph/settings.c:184 msgid "automatic blending" msgstr "" #: gtkmorph/settings.c:187 msgid "" "automatically blends the images when the image blending factors are changed" msgstr "" #: gtkmorph/settings.c:191 msgid "mesh auto sync" msgstr "" #: gtkmorph/settings.c:194 msgid "any change (add/del, label/unlabel) to a mesh is replicated" msgstr "" #: gtkmorph/settings.c:198 msgid "warped image in other win" msgstr "" #: gtkmorph/settings.c:201 msgid "put warped images in another window" msgstr "" #: gtkmorph/settings.c:207 msgid "show warp after warp" msgstr "" #: gtkmorph/settings.c:210 msgid "" "switch the input window(s) to the warped image after a warp (overridden by " "the above)" msgstr "" #: gtkmorph/settings.c:273 msgid "preserve aspect ratio" msgstr "" #: gtkmorph/settings.c:276 msgid "when loading an image, preserve aspect ratio" msgstr "" #: gtkmorph/settings.c:280 msgid "dim image" msgstr "" #: gtkmorph/settings.c:287 msgid "view original mesh" msgstr "" #: gtkmorph/settings.c:294 msgid "view original points" msgstr "" #: gtkmorph/settings.c:308 msgid "view warped mesh" msgstr "" #: gtkmorph/settings.c:315 msgid "view warped points" msgstr "" #: gtkmorph/settings.c:329 msgid "view eyes" msgstr "" #: gtkmorph/settings.c:343 msgid "mesh is readonly" msgstr "" #: gtkmorph/settings.c:383 msgid "disable" msgstr "" #: gtkmorph/settings.c:416 msgid "show mesh difference to..." msgstr "" #: gtkmorph/settings.c:418 msgid "show difference between this mesh and another mesh, as white arrows" msgstr "" #: gtkmorph/utils2_c:14 msgid "resulting image" msgstr "" #: gtkmorph/utils2_c:19 gtkmorph/utils.c:350 msgid "input image" msgstr "" #: gtkmorph/feature.c:201 msgid "(unavailable feature name)" msgstr "" #: gtkmorph/feature.c:366 gtkmorph/feature.c:386 msgid "feature" msgstr "" #: gtkmorph/feature.c:504 msgid "sorry this functions is as yet unimplemented" msgstr "" #: gtkmorph/guide_text.c:20 msgid "-Introduction" msgstr "" #: gtkmorph/guide_text.c:22 msgid "" " Welcome to GtkMorph\n" "\n" "GtkMorph is a powerful program that permits you to warp or morph images.\n" "\n" " Using this guide.\n" "\n" "Hit 'next' to skip a topic, or 'do it' to do it; when you have done a topic, " "hit 'Guide' in the main window to come back to the guide.\n" "(Note that, when you hit 'do it', the guide will iconify and deiconify other " "windows to highlight your task: with some dumb window managers, this will " "not work ok).\n" " If you are not satisfied by the way you have complied with the guide " "requests, hit 'prev' and 'do it' to retry the task.\n" "As a first task, you may get acquainted with the main gtkmorph window: if " "you want to give it a look, hit 'do it': the main window will pop up! Note " "that, if you keep the mouse still on a menu voice or on a button for a " "moment, a tip shows up. When you are done, hit 'Guide' to come back to the " "guide.\n" "If you know the program main window, simply hit 'next'.\n" "\n" "If you are fed up with the guide, you may stop it at any time by closing " "this window: the normal gtkmorph program will pop up.\n" "\n" "If you want to test the program, you may want to load the example session:" "look into the 'Help' menu." msgstr "" #: gtkmorph/guide_text.c:48 msgid "-Select subimage size" msgstr "" #: gtkmorph/guide_text.c:50 msgid "" "Now you select the size that the output image(s) will have. To this end, in " "the lower part of the main window, there is a pair of spins; select your " "preferred size and hit 'apply'.\n" "After that, you will be brought back to the guide.\n" "You may change the size again by selecting 'resulting size...' in the Edit " "menu." msgstr "" #: gtkmorph/guide_text.c:57 msgid "-Morph or warp" msgstr "" #: gtkmorph/guide_text.c:59 msgid "" "You may `warp' or `morph'.\n" "\n" "'Warp' means 'to deform, contort, distort, wring, bend, or otherwise " "twist'.\n" "If you have one single input image and you want to make a distortion of it, " "then you want to warp it. In this case, hit 'next'\n" "\n" "'Morphing' images instead means 'blending together warped versions of the " "images'. So to morph you need two or more input images.\n" "In this case, press 'do it', and, in the File menu, choose 'add image' as " "many times as to reach the required number of input images, then hit 'Guide' " "in the main window.\n" "\n" "Note that at startup the program is set for ``warping'': there is only one " "input image." msgstr "" #: gtkmorph/guide_text.c:74 msgid "-Load image(s)" msgstr "" #: gtkmorph/guide_text.c:76 msgid "" "Now you need to load the input images.\n" "In each input image window, load the input image using the big 'load image' " "button." msgstr "" #: gtkmorph/guide_text.c:80 msgid ";Load reference image" msgstr "" #: gtkmorph/guide_text.c:82 msgid "" "If you wish, you may load an image in the main window; it may help you if " "you are warping images and you want to have a reference to use as a target. " "This is not really necessary, and you may do as well without.\n" "\n" "If in this reference image there are 3 important features, like the eyes and " "mouth in face, then you should drag the 3 white points on these features.\n" "\n" "Similarly, if you have a reference mesh that is associated to this image, " "you may load it now, using the 'load mesh' button\n" "\n" "When done, click 'Guide'." msgstr "" #: gtkmorph/guide_text.c:92 msgid "-Select subimage(s)" msgstr "" #: gtkmorph/guide_text.c:94 msgid "" "Now you select a subimage of each input image. You do this by either moving " "the selection rectangle (using the spins at bottom of the window) or by " "dragging the 3 white feature points. (see [1] below)\n" "\n" "When you have chosen the preferred subimage, hit 'apply' (and the window " "will close). If later you find out that are not satisfied of your choice, " "you may click in the option menu (at center top) and select 'choose " "subimage' to repeat this process.\n" "\n" "Alternatively, if you have already a mesh for this image, you may load it " "now; since the subimage selection is saved with the mesh; when you load the " "saved mesh, the subimage is reselected for you.\n" "\n" " [1] Note that you cannot position the 3 points freely: their mutual " "position is copied from the position of the 3 reference points in the " "resulting image; so you will need to be patient.\n" "Note also that the selection rectangle has currently a fixed aspect (see " "[2]); if you want to freely change the aspect, change the 'preserve aspect " "ratio' setting in the 'settings'.\n" " [2] 'aspect' is the ratio between width and height." msgstr "" #: gtkmorph/guide_text.c:117 msgid "-Adjust mesh" msgstr "" #: gtkmorph/guide_text.c:119 msgid "" "Now you adjust the mesh in the input image(s) so that they best fit to the " "features of those images. If you hit the right mouse key while on the mesh, " "you will get a menu.\n" "It is very important that points in different meshes are syncronized, that " "is, that point (i,j) in every mesh is associated to the same type of " "feature; for this reason, when you drag a point in a mesh, the same point " "flashes in all other meshes.\n" "When you have put points on a feature (say, for example, the right eye), you " "may hit 'pack' to pack all this point into a 'feature'." msgstr "" #: gtkmorph/guide_text.c:130 msgid "From time to time, you better save the mesh(es)." msgstr "" #: gtkmorph/guide_text.c:132 msgid ";Warp" msgstr "" #: gtkmorph/guide_text.c:134 msgid "" "Hit the 'do warp' button to view the warp. If you are not satisfied, choose " "'edit mesh' in the option menu (top center) and edit the mesh further.From " "time to time, you better save the mesh." msgstr "" #: gtkmorph/guide_text.c:139 msgid ":Morph" msgstr "" #: gtkmorph/guide_text.c:140 msgid "" "To morph your images, you must decide how much each image should influence " "the resulting morph. To this end, you adjust the morph factors to your need; " "the 'mesh interpolation' slide tells how much this mesh will influence the " "resulting mesh, and the 'image blending' tells how much this image is " "visible in the resulting image.\n" "\n" "Then hit the 'do morph' button in the main window to view the morph.\n" " If you are not satisfied, choose 'edit mesh' in the option menu (top " "center) and edit the mesh further; or, choose 'view warp&mesh' and edit the " "morph factors.\n" "\n" "If you want to change the morph factors further, choose ``morph factors..'' " "in the 'edit' menu\n" "\n" "Tip: set all factors to equal values and do a morph: if the images do not " "superimpose well, you may try to select a subimage in each image so that " "they superimpose better" msgstr "" #: gtkmorph/guide_text.c:157 msgid ":Movie" msgstr "" #: gtkmorph/guide_text.c:158 msgid "" "To make a movie of your morph, choose 'morph sequence' in the Morph menu. A " "window will pop up. Click on help there for further help." msgstr "" #: gtkmorph/guide_text.c:161 msgid "-End" msgstr "" #: gtkmorph/guide_text.c:162 msgid "" "Here ends the guide.\n" "\n" "Goodbye and thank you" msgstr "" #: gtkmorph/movies.c:64 gtkmorph/callbacks_main.c:318 msgid "to morph, you must have at least two input images" msgstr "" #: gtkmorph/movies.c:526 #, c-format msgid "" "Help on movie making: when you hit ok, gtkmorph will repeat a loop for %d " "times. Any time, it will set the warping and image-blending factors to an " "interpolation between the values that you have stored as 'first' and 'end'. " "Any time, it will save the morphed image (in format %s), starting from '%s' " "and ending with '%s'. Then it will create any animation that you have asked " "to create: the animated gif is called '%s.gif', the mpeg file is called '%s." "mpeg' (and mpeg_encode will use '%s.param' for parameters if available: see " "in %s/mpeg.param an example, or copy the end part of %s.auto.param) and play " "them. You may recreate animations from preexisting frames by hitting 'replay'" msgstr "" #: gtkmorph/movies.c:599 msgid "" "Sorry : temporary files can only be saved as png, and not as ppm; but " "'mencoder' does not read ppm files. You must compile gtkmorph using a newer " "version of libGTK." msgstr "" #: gtkmorph/movies.c:602 msgid "" "sorry : cannot create AVI if a comma ',' is in the filename (blame this on " "'mencoder')" msgstr "" #: gtkmorph/callbacks_help.c:18 msgid "" "Here are a few tips at using this program\n" "0) at startup the program is set for ``warping'': read the ``warp help''\n" "1) to morph, you need to have 2 or more `input images' :\n" " use `add an image' (it is in the `file' menu); read the ``morph help''\n" "2) if you keep the mouse still on a menu voice or on a button\n" " for a moment, you may read the help tips.\n" "3) when the mouse pointer is in on the mesh grid, by hitting\n" " the right button, you get an useful menu.\n" "\n" "\n" "If you need more help, activate the guide." msgstr "" #: gtkmorph/callbacks_help.c:38 msgid "" "To morph:\n" " 1) load an image in each `input image',\n" " 2) edit the meshes by dragging the points (and use the menu that you get\n" " by the right mouse button)\n" " 3) set the `blending factors' and `mesh factors' as desired\n" " 4) and hit `do morph'\n" msgstr "" #: gtkmorph/callbacks_help.c:72 msgid "" "It is not difficult to use this program for warping: just\n" " 1) load an image in the `input image 1',\n" " 2) edit the meshes by dragging the points (and use the menu that you get\n" " by the right mouse button)\n" " 3) and hit `do warp'\n" msgstr "" #: gtkmorph/utils-mesh.c:43 msgid "to interpolate meshes, you must have at least two input images" msgstr "" #: gtkmorph/utils-mesh.c:56 msgid "" "to interpolate the meshes, the sum of the all `mesh factors' should be " "nonzero\n" "I have set some default values for you" msgstr "" #: gtkmorph/callbacks_fs.c:168 #, c-format msgid "load %s" msgstr "" #: gtkmorph/callbacks_fs.c:317 gtkmorph/loadsave.c:449 msgid "internal error: the image doesnt exist!" msgstr "" #: gtkmorph/callbacks_fs.c:324 #, c-format msgid "save %s (only PPM format)" msgstr "" #: gtkmorph/callbacks_fs.c:326 #, c-format msgid "save %s" msgstr "" #: gtkmorph/utils.c:348 msgid "template image" msgstr "" #: gtkmorph/utils.c:356 msgid "morphed image" msgstr "" #: gtkmorph/guide_text.h:7 msgid "" "'Features' are sets of grid points; they are represented by the same color " "in the grid. They can be used to more easily edit a complex grid: for " "example, when preparing a grid on a face, each facial feature (eyes, " "mouth..) can be outlined by using a proper set of points.\n" "Points can be added or subtracted from features using the tools 'assign' and " "'unselect'; whole features can be moved all together, using the 'move' and " "'stretch' tools; the 'pack' button transforms all selected points into a " "feature, and 'unpack' does the opposite." msgstr "" #: gtkmorph/guide_text.h:18 msgid "" "Tips:\n" "1) try to keep the mesh lines as linear as possible: add new lines (with " "right mouse button) if this helps!\n" "2) to have a better morph, for each image, set the `morph factors' to a " "maximum, hit `do warp' and try to adjust the mesh until this warp looks " "right\n" "3) if you are fighting with small details, then you should increase the " "resulting image size until you have fixed things. (Use the the 'x2' button.)" msgstr "" #: gtkmorph/loadsave_mesh.c:81 #, c-format msgid "this filename is already used by the mesh of image %d" msgstr "" #: gtkmorph/loadsave_mesh.c:108 gtkmorph/loadsave_mesh.c:362 msgid "" "the attempt to load mesh from file has produced an error\n" "(either this is not a mesh file, or the mesh file is corrupted)" msgstr "" #: gtkmorph/loadsave_mesh.c:195 #, c-format msgid "this mesh was created on image '%s' and not on this image '%s'" msgstr "" #: gtkmorph/loadsave_mesh.c:217 #, c-format msgid "" "the size of the image w=%d h=%d and the size recorded in the mesh w=%d h=" "%d do not match" msgstr "" #: gtkmorph/loadsave_mesh.c:252 msgid "" "This mesh is automatically generated. You don't want to overwrite another " "mesh with this one!" msgstr "" #: gtkmorph/loadsave_mesh.c:403 #, c-format msgid "the attempt to load the image file %s has produced error: %s" msgstr "" #: gtkmorph/loadsave_mesh.c:477 msgid "" "gtkmorph could not find libply, so it cannot load PLY surfaces. Read " "documentations to install libply." msgstr "" #: gtkmorph/loadsave_mesh.c:481 msgid "error while loading PLY file" msgstr "" #: gtkmorph/loadsave_mesh.c:486 msgid "gtkmorph was NOT compiled with PLY support" msgstr "" #: gtkmorph/loadsave_mesh.c:503 msgid "" "This file already exists! If you really want to overwrite it, delete it." msgstr "" #: gtkmorph/loadsave_mesh.c:531 #, c-format msgid "can't resize %dth image-no filename" msgstr "" #: gtkmorph/loadsave_mesh.c:546 #, c-format msgid "" "the attempt to reload the image file %s to resize it has produced error: %s" msgstr "" #: gtkmorph/dialogs.c:65 msgid "info" msgstr "" #: gtkmorph/unused.c:166 #, c-format msgid "" "The image %d has an %ld by %ld mesh while the resulting mesh is %d by %d!\n" "I cant warp it!\n" "I suggest that you add lines so that both meshes are %d by %d" msgstr "" #: gtkmorph/loadsave.c:76 msgid "please provide a filename" msgstr "" #: gtkmorph/loadsave.c:103 #, c-format msgid "could not open file '%s' for write: %s" msgstr "" #: gtkmorph/loadsave.c:229 msgid "can't reload the full session-no more available images" msgstr "" #: gtkmorph/loadsave.c:286 #, c-format msgid "could not open file '%s' for read: %s" msgstr "" #: gtkmorph/loadsave.c:301 msgid "parsing of session failed at first header!" msgstr "" #: gtkmorph/loadsave.c:336 msgid "parsing of session failed" msgstr "" #: gtkmorph/loadsave.c:356 gtkmorph/loadsave.c:379 gtkmorph/loadsave.c:401 #, c-format msgid "the attempt to save the image file %s has produced error: %s" msgstr "" #: gtkmorph/loadsave.c:407 #, c-format msgid "the attempt to close the saved image file %s has produced error: %s" msgstr "" #: gtkmorph/loadsave.c:457 msgid "" " this version of gtkmorph can save images only in .ppm format (to save in " "other formats, compile with GTK2 or higher). Please set the filename " "extension to '.ppm'" msgstr "" #: gtkmorph/loadsave.c:479 msgid "please use an allowed image format" msgstr "" #: gtkmorph/loadsave.c:499 #, c-format msgid "" "the filename extension is '%s' but the image was saved in format '%s'. This " "mismatch may prevent you from viewing this image." msgstr "" #: gtkmorph/callbacks_edit.c:88 gtkmorph/callbacks_edit.c:153 msgid "" "you cant edit this mesh - it is automatically generated as an interpolation\n" "of the input images meshes .\n" "(but if you really want to edit, unset 'automatic mesh interpolation')" msgstr "" #: gtkmorph/callbacks_edit.c:96 gtkmorph/callbacks_edit.c:161 msgid "" "You are currently viewing the warped version of the image\n" "you may not edit this mesh (which refers to the loaded image).\n" "To edit the mesh, select `edit mesh' in the menu (at top center).\n" "I have done it now for you" msgstr "" #: gtkmorph/callbacks_main.c:109 #, c-format msgid "the mesh(es) %s were not saved! do you want to exit anyway?" msgstr "" #: gtkmorph/callbacks_main.c:282 msgid "" "to blend the images, the sum of the all `image mixing factors' must be " "nonzero\n" "I have put default values for you" msgstr "" #: gtkmorph/callbacks_main.c:476 msgid "gtkmorph was not linked with Waili wavelet library" msgstr "" #: gtkmorph/callbacks_main.c:589 msgid "the input images have different numbers of channels: cannot blend" msgstr "" #: gtkmorph/callbacks_main.c:838 msgid "" "Loading the example session may ruin your current session. Please properly " "save all meshes and retry." msgstr "" #: gtkmorph/callbacks_main.c:869 #, c-format msgid "" "The 'example' directory should be in '%s' but is not.\n" "Install the 'gtkmorph-example' debian package." msgstr "" #: gtkmorph/callbacks_main.c:872 #, c-format msgid "The 'example' directory should be in '%s' but is not." msgstr "" #: gtkmorph/gtk_subimagesel.c:407 msgid "you must load an image before you may choose a subimage" msgstr "" #: gtkmorph/callbacks_fs_mesh.c:70 #, c-format msgid "load mesh for %s" msgstr "" #: gtkmorph/callbacks_fs_mesh.c:105 #, c-format msgid "save mesh for %s" msgstr "" #: gtkmorph/callbacks_fs_mesh.c:136 gtkmorph/callbacks_fs_mesh.c:163 msgid "save difference to mesh" msgstr "" #: gtkmorph/callbacks_fs_mesh.c:186 msgid "load difference mesh" msgstr "" #: glade1/support.c:130 #, c-format msgid "Error loading pixmap file: %s" msgstr "" #: glade1/interface.c:167 po/gtkmorph.glade.c:8 msgid "File menu" msgstr "" #: glade1/interface.c:2264 po/gtkmorph.glade.c:167 msgid "" "show animated sequence after saving it all (needs 'animate' command from " "imagemagick)" msgstr "" #: glade1/interface.c:2318 po/gtkmorph.glade.c:174 msgid " ok " msgstr "" #: glade1/interface.c:2332 po/gtkmorph.glade.c:103 po/gtkmorph.glade.c:175 msgid "cancel" msgstr "" #: glade1/interface.c:2345 po/gtkmorph.glade.c:176 msgid "help" msgstr "" #: po/gtkmorph.glade.c:102 po/gtkmorph.glade.c:189 msgid "OK" msgstr "" #: po/gtkmorph.glade.c:190 msgid "Cancel" msgstr "" xmorph-20140707+nmu2/po/it.po0000664000000000000000000022147412356342532012453 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: xmorph\n" "Report-Msgid-Bugs-To: mennucc1@debian.org\n" "POT-Creation-Date: 2014-07-06 23:50+0200\n" "PO-Revision-Date: 2014-07-06 23:53+0200\n" "Last-Translator: mennucc1@debian.org\n" "Language-Team: mennucc1@debian.org\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" #: glade2/support.c:90 glade2/support.c:114 glade1/support.c:121 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Non si trova il file pixmap: %s" #: glade2/interface.c:154 glade1/interface.c:141 po/gtkmorph.glade2.c:7 #: po/gtkmorph.glade.c:7 msgid "gtkmorph" msgstr "gtkmorph" #: glade2/interface.c:166 glade1/interface.c:160 po/gtkmorph.glade2.c:8 #: po/gtkmorph.glade.c:9 msgid "File" msgstr "File" #: glade2/interface.c:175 gtkmorph/callbacks_main.c:181 glade1/interface.c:177 #: po/gtkmorph.glade2.c:9 po/gtkmorph.glade.c:10 msgid "load session" msgstr "carica sessione" #: glade2/interface.c:180 gtkmorph/callbacks_main.c:198 glade1/interface.c:185 #: po/gtkmorph.glade2.c:10 po/gtkmorph.glade.c:11 msgid "save session" msgstr "salva session n." #: glade2/interface.c:191 glade1/interface.c:202 po/gtkmorph.glade2.c:11 #: po/gtkmorph.glade.c:12 msgid "add an image" msgstr "aggiungi un immagine" #: glade2/interface.c:196 po/gtkmorph.glade2.c:13 msgid "load a difference" msgstr "carica una griglia differenza" #: glade2/interface.c:200 po/gtkmorph.glade2.c:12 msgid "" "load a \"differential mesh\", that is a mesh representing the difference of " "two meshes" msgstr "" "carica una \"griglia differenza\", che è contiene la differenza fra due " "griglie" #: glade2/interface.c:208 glade1/interface.c:219 po/gtkmorph.glade2.c:14 #: po/gtkmorph.glade.c:13 msgid "Quit" msgstr "Esci" #: glade2/interface.c:216 glade1/interface.c:230 po/gtkmorph.glade2.c:15 #: po/gtkmorph.glade.c:14 msgid "Edit" msgstr "Edit" #: glade2/interface.c:225 glade1/interface.c:246 po/gtkmorph.glade2.c:16 #: po/gtkmorph.glade.c:15 msgid "show all images" msgstr "mostra tutte le immagini" #: glade2/interface.c:230 glade1/interface.c:254 po/gtkmorph.glade2.c:17 #: po/gtkmorph.glade.c:16 msgid "show mag" msgstr "mostra lente" #: glade2/interface.c:241 glade1/interface.c:271 po/gtkmorph.glade2.c:18 #: po/gtkmorph.glade.c:17 msgid "resulting image size..." msgstr "dimensione immagine risultante..." #: glade2/interface.c:246 glade1/interface.c:279 po/gtkmorph.glade2.c:19 #: po/gtkmorph.glade.c:18 msgid "show morph factors" msgstr "mostra coefficienti di morph" #: glade2/interface.c:251 glade1/interface.c:287 po/gtkmorph.glade2.c:20 #: po/gtkmorph.glade.c:19 msgid "Settings" msgstr "Preferenze" #: glade2/interface.c:256 glade1/interface.c:295 po/gtkmorph.glade2.c:21 #: po/gtkmorph.glade.c:20 msgid "Morph" msgstr "Morph" #: glade2/interface.c:265 glade1/interface.c:311 po/gtkmorph.glade2.c:23 #: po/gtkmorph.glade.c:22 msgid "interpolate meshes" msgstr "interpola griglie" #: glade2/interface.c:269 glade1/interface.c:318 po/gtkmorph.glade2.c:22 #: po/gtkmorph.glade.c:21 msgid "" "the mesh of the resulting image is set to an interpolation of the input " "images' meshes, weighted by the ``mesh factors''" msgstr "" "la griglia della immagine risultante viene posta a una interpolazione delle " "grglie delle immagini di input, pesate con i coefficienti di griglia" #: glade2/interface.c:271 glade1/interface.c:320 po/gtkmorph.glade2.c:25 #: po/gtkmorph.glade.c:24 msgid "morph images" msgstr "esegui morph delle immagini" #: glade2/interface.c:275 glade1/interface.c:327 po/gtkmorph.glade2.c:24 #: po/gtkmorph.glade.c:23 msgid "" "the input images are warped to the resulting mesh and blended using ``image " "blending factors'' as weights. It has the same effect as if you hit all the " "``do warp'' buttons and then you hit the ``do blending'' button" msgstr "" "le immagini in input sono deformate usando la griglia risultante e dissolve " "usando i `coefficienti di immagine' come pesi. Questo bottone ha lo stesso " "risultato che si ottiene premendo tutti i bottoni `deforma' nelle singole " "immagini di input e poi premendo il bottone `dissolvi'." #: glade2/interface.c:286 glade1/interface.c:341 po/gtkmorph.glade2.c:27 #: po/gtkmorph.glade.c:26 msgid "adjust all meshes" msgstr "sistema tutte le griglie" #: glade2/interface.c:290 glade1/interface.c:348 po/gtkmorph.glade2.c:26 #: po/gtkmorph.glade.c:25 msgid "adjust points of meshes confronting original images and the morph" msgstr "" "sistema i punti della griglia confrontando la immagine originale e il morph" #: glade2/interface.c:292 glade1/interface.c:350 po/gtkmorph.glade2.c:29 #: po/gtkmorph.glade.c:28 msgid "wavelet equalize" msgstr "equalizza usando wavelet" #: glade2/interface.c:296 glade1/interface.c:357 po/gtkmorph.glade2.c:28 #: po/gtkmorph.glade.c:27 msgid "" "equalize input images so that the subband of wavelet transform have the same " "energies" msgstr "" "equalizza le immagini di input cosicché le energie nelle sottobande wavelet " "siano uguali" #: glade2/interface.c:304 glade1/interface.c:368 po/gtkmorph.glade2.c:30 #: po/gtkmorph.glade.c:29 msgid "restore morph coefficients..." msgstr "ricarica coefficienti dei morph..." #: glade2/interface.c:313 glade2/interface.c:338 glade1/interface.c:384 #: glade1/interface.c:425 po/gtkmorph.glade2.c:31 po/gtkmorph.glade2.c:36 #: po/gtkmorph.glade.c:30 po/gtkmorph.glade.c:35 msgid "start" msgstr "inizio" #: glade2/interface.c:318 glade2/interface.c:343 glade1/interface.c:392 #: glade1/interface.c:433 po/gtkmorph.glade2.c:32 po/gtkmorph.glade2.c:37 #: po/gtkmorph.glade.c:31 po/gtkmorph.glade.c:36 msgid "end" msgstr "fine" #: glade2/interface.c:323 glade1/interface.c:400 po/gtkmorph.glade2.c:33 #: po/gtkmorph.glade.c:32 msgid "equal" msgstr "uguali" #: glade2/interface.c:328 glade1/interface.c:408 po/gtkmorph.glade2.c:35 #: po/gtkmorph.glade.c:34 msgid "store morph coefficients..." msgstr "salva coefficienti dei morph..." #: glade2/interface.c:332 glade1/interface.c:415 po/gtkmorph.glade2.c:34 #: po/gtkmorph.glade.c:33 msgid "" "stores internally the state of all mesh and image-blending factors (to make " "morph sequences)" msgstr "" "memorizza internamente lo stato di tutti i coefficienti (per fare animazioni)" #: glade2/interface.c:348 glade1/interface.c:441 po/gtkmorph.glade2.c:39 #: po/gtkmorph.glade.c:38 msgid "morph sequence" msgstr "crea animazione" #: glade2/interface.c:352 glade1/interface.c:448 po/gtkmorph.glade2.c:38 #: po/gtkmorph.glade.c:37 msgid "" "create and save many morphs, equally spaced between the morph start and the " "morph end (that you have already stored with the above menu)" msgstr "" "crea e salva molti morph, spaziati uniformemente fra i coefficienti \"inizio" "\" e \"fine\" (che si possono salvare con il men qui sopra)" #: glade2/interface.c:360 glade1/interface.c:459 po/gtkmorph.glade2.c:40 #: po/gtkmorph.glade.c:39 po/gtkmorph.glade.c:191 msgid "Help" msgstr "Aiuto" #: glade2/interface.c:369 glade1/interface.c:475 po/gtkmorph.glade2.c:41 #: po/gtkmorph.glade.c:40 msgid "guide..." msgstr "guida..." #: glade2/interface.c:374 po/gtkmorph.glade2.c:42 msgid "load example session" msgstr "carica sessione di esempio" #: glade2/interface.c:385 glade1/interface.c:492 po/gtkmorph.glade2.c:43 #: po/gtkmorph.glade.c:41 msgid "help..." msgstr "aiuto..." #: glade2/interface.c:394 glade1/interface.c:508 po/gtkmorph.glade2.c:44 #: po/gtkmorph.glade.c:42 msgid "generic help" msgstr "aiuto" #: glade2/interface.c:399 glade1/interface.c:516 po/gtkmorph.glade2.c:45 #: po/gtkmorph.glade.c:43 msgid "warp help" msgstr "aiuto su 'warp'" #: glade2/interface.c:404 po/gtkmorph.glade2.c:46 msgid "mesh tips" msgstr "suggerimenti su griglie" #: glade2/interface.c:409 glade1/interface.c:524 po/gtkmorph.glade2.c:47 #: po/gtkmorph.glade.c:44 msgid "morph help" msgstr "aiuto su 'morph'" #: glade2/interface.c:414 po/gtkmorph.glade2.c:48 msgid "feature help" msgstr "aiuto su 'lineamenti'" #: glade2/interface.c:425 glade1/interface.c:541 po/gtkmorph.glade2.c:49 #: po/gtkmorph.glade.c:45 msgid "why the beep?" msgstr "perché ha fatto 'bip'?" #: glade2/interface.c:440 glade2/interface.c:1240 glade1/interface.c:565 #: glade1/interface.c:1342 po/gtkmorph.glade2.c:51 po/gtkmorph.glade2.c:108 #: po/gtkmorph.glade.c:47 po/gtkmorph.glade.c:105 msgid "" "load\n" "image" msgstr "" "apri\n" "immagine" #: glade2/interface.c:445 glade1/interface.c:573 po/gtkmorph.glade2.c:50 #: po/gtkmorph.glade.c:46 msgid "" "load the image. This image may not be warped or morphed, but it may help in " "setting the resulting mesh" msgstr "" "apri l'immagine. Questa immagine non può essere manipolata, ma può essere di " "aiuto nel sistemare la griglia risultante" #: glade2/interface.c:447 glade2/interface.c:1246 glade1/interface.c:575 #: glade1/interface.c:1351 po/gtkmorph.glade2.c:53 po/gtkmorph.glade2.c:110 #: po/gtkmorph.glade.c:49 po/gtkmorph.glade.c:107 msgid "" "load\n" "mesh" msgstr "" "apri\n" "griglia" #: glade2/interface.c:453 glade2/interface.c:1252 glade1/interface.c:584 #: glade1/interface.c:1360 po/gtkmorph.glade2.c:55 po/gtkmorph.glade2.c:112 #: po/gtkmorph.glade.c:51 po/gtkmorph.glade.c:109 msgid "" "save\n" "mesh" msgstr "" "salva\n" "griglia" #: glade2/interface.c:464 glade1/interface.c:601 po/gtkmorph.glade2.c:57 #: po/gtkmorph.glade.c:53 msgid "" "``edit template'': view the loaded image and edit the mesh on it. \\n ``view " "morphed'': view the result of morphing. ``v.morph&mesh'' as above but " "with the mesh. ``edit eyes points'' sets the reference position of the eyes" msgstr "" "`visual. imm. caricata': mostra l'immagine caricata e modifica la griglia su " "essa. `vis. morph': mostra il risultato del morph. `v il morph e le " "griglie': come sopra ma con la griglia. `modifica puntatori occhi': sistema " "la posizione di riferimento per gli occhi." #: glade2/interface.c:469 glade1/interface.c:603 po/gtkmorph.glade2.c:58 #: po/gtkmorph.glade.c:54 msgid "edit template" msgstr "modifica template" #: glade2/interface.c:474 glade1/interface.c:606 po/gtkmorph.glade2.c:59 #: po/gtkmorph.glade.c:55 msgid "view morph" msgstr "vis. morph" #: glade2/interface.c:479 glade1/interface.c:609 po/gtkmorph.glade2.c:60 #: po/gtkmorph.glade.c:56 msgid "v morph&meshes" msgstr "v il morph e le griglie" #: glade2/interface.c:484 glade1/interface.c:612 po/gtkmorph.glade2.c:61 #: po/gtkmorph.glade.c:57 msgid "edit eyes points" msgstr "modifica puntatori occhi" #: glade2/interface.c:491 glade2/interface.c:1297 glade1/interface.c:617 #: glade1/interface.c:1393 po/gtkmorph.glade2.c:62 po/gtkmorph.glade2.c:122 #: po/gtkmorph.glade.c:58 po/gtkmorph.glade.c:116 msgid "settings" msgstr "preferenze" #: glade2/interface.c:497 glade1/interface.c:626 po/gtkmorph.glade2.c:64 #: po/gtkmorph.glade.c:60 msgid "" "interpol.\n" "meshes" msgstr "" "interpola\n" "griglie" #: glade2/interface.c:502 glade1/interface.c:634 po/gtkmorph.glade2.c:63 #: po/gtkmorph.glade.c:59 msgid "" "set this mesh to be an interpolation of all other meshes, using ``mesh " "factors'' as weights" msgstr "" "metti per questa griglia il risultato dell'interpolazione delle altre " "griglie (esegue una media usando i `coefficienti di griglia' come pesi)" #: glade2/interface.c:504 glade1/interface.c:636 po/gtkmorph.glade2.c:67 #: po/gtkmorph.glade.c:63 msgid "" "do\n" "blending" msgstr "" "esegue\n" "miscelazione" #: glade2/interface.c:509 glade1/interface.c:644 po/gtkmorph.glade2.c:66 #: po/gtkmorph.glade.c:62 msgid "" "mix all the warped images in the ``resulting image'' using ``image blending " "factors'' as weights" msgstr "" "dissolvi tutte le immagini deformate nell' `immagine risultante' usando i " "`coefficienti di immagine' come pesi" #: glade2/interface.c:511 glade1/interface.c:646 po/gtkmorph.glade2.c:70 #: po/gtkmorph.glade.c:66 msgid "" "do\n" "morph" msgstr "" "esegue\n" "morph" #: glade2/interface.c:516 glade1/interface.c:654 po/gtkmorph.glade2.c:69 #: po/gtkmorph.glade.c:65 msgid "" "the input images are warped to the resulting mesh and blended using ``image " "blending factors'' as weights. It has the same effect as if you hit all the " "``do warp'' buttons and then you hit the ``do blending'' button." msgstr "" "le immagini in input sono deformate usando la griglia risultante e dissolve " "usando i `coefficienti di immagine' come pesi. Questo bottone ha lo stesso " "risultato che si ottiene premendo tutti i bottoni `deforma' nelle singole " "immagini di input e poi premendo il bottone `dissolvi'." #: glade2/interface.c:518 glade2/interface.c:1310 glade1/interface.c:656 #: glade1/interface.c:1412 po/gtkmorph.glade2.c:73 po/gtkmorph.glade2.c:127 #: po/gtkmorph.glade.c:69 po/gtkmorph.glade.c:121 msgid "" "save\n" "image" msgstr "" "salva\n" "immagine" #: glade2/interface.c:523 glade2/interface.c:1315 glade1/interface.c:664 #: glade1/interface.c:1420 po/gtkmorph.glade2.c:72 po/gtkmorph.glade2.c:126 #: po/gtkmorph.glade.c:68 po/gtkmorph.glade.c:120 msgid "it saves whatever image is currently shown in the window" msgstr "salva l'immagine che visualizzata" # guide #: glade2/interface.c:525 glade2/interface.c:1317 glade1/interface.c:666 #: glade1/interface.c:1422 po/gtkmorph.glade2.c:76 po/gtkmorph.glade2.c:130 #: po/gtkmorph.glade.c:72 po/gtkmorph.glade.c:124 msgid "guide" msgstr "guida" #: glade2/interface.c:530 glade2/interface.c:1322 glade1/interface.c:674 #: glade1/interface.c:1430 po/gtkmorph.glade2.c:75 po/gtkmorph.glade2.c:129 #: po/gtkmorph.glade.c:71 po/gtkmorph.glade.c:123 msgid "back to guide" msgstr "torna alla guida" #: glade2/interface.c:572 glade1/interface.c:734 po/gtkmorph.glade2.c:78 #: po/gtkmorph.glade.c:74 msgid "new" msgstr "nuovo" #: glade2/interface.c:577 glade1/interface.c:742 po/gtkmorph.glade2.c:77 #: po/gtkmorph.glade.c:73 msgid "add new feature to the end of list" msgstr "aggiungi nuovi lineamenti alla fine della lista" #: glade2/interface.c:579 glade1/interface.c:744 po/gtkmorph.glade2.c:79 #: po/gtkmorph.glade.c:75 msgid "rename" msgstr "rinomina" #: glade2/interface.c:585 glade1/interface.c:753 po/gtkmorph.glade2.c:81 #: po/gtkmorph.glade.c:77 msgid "pack" msgstr "colleziona" #: glade2/interface.c:590 glade1/interface.c:761 po/gtkmorph.glade2.c:80 #: po/gtkmorph.glade.c:76 msgid "pack the selected points in this feature" msgstr "colleziona tutti i punti selezionati in questo lineamento" #: glade2/interface.c:592 glade1/interface.c:763 po/gtkmorph.glade2.c:83 #: po/gtkmorph.glade.c:79 msgid "unpack" msgstr "scolleziona" #: glade2/interface.c:597 glade1/interface.c:771 po/gtkmorph.glade2.c:82 #: po/gtkmorph.glade.c:78 msgid "unpack this feature and transforms all points of it to selected points" msgstr "" "distruggi questo lineamento e trasforma tutti i suoi punti in punti " "selezionati" #: glade2/interface.c:599 glade1/interface.c:773 po/gtkmorph.glade2.c:85 #: po/gtkmorph.glade.c:81 msgid "delete" msgstr "cancella" #: glade2/interface.c:604 glade1/interface.c:781 po/gtkmorph.glade2.c:84 #: po/gtkmorph.glade.c:80 msgid "delete last feature" msgstr "cancella l'ultimo lineamento" #: glade2/interface.c:614 glade2/interface.c:2508 glade1/interface.c:795 #: glade1/interface.c:2656 po/gtkmorph.glade2.c:87 po/gtkmorph.glade2.c:199 #: po/gtkmorph.glade.c:83 po/gtkmorph.glade.c:194 msgid "edit" msgstr "edit" #: glade2/interface.c:622 glade2/interface.c:2515 glade1/interface.c:796 #: glade1/interface.c:2657 po/gtkmorph.glade2.c:86 po/gtkmorph.glade2.c:198 #: po/gtkmorph.glade.c:82 po/gtkmorph.glade.c:193 msgid "move single point" msgstr "muovi un singolo punto" #: glade2/interface.c:628 glade2/interface.c:2520 glade1/interface.c:811 #: glade1/interface.c:2670 po/gtkmorph.glade2.c:89 po/gtkmorph.glade2.c:201 #: po/gtkmorph.glade.c:85 po/gtkmorph.glade.c:196 msgid "move" msgstr "muovi" #: glade2/interface.c:636 glade2/interface.c:2527 glade1/interface.c:812 #: glade1/interface.c:2671 po/gtkmorph.glade2.c:88 po/gtkmorph.glade2.c:200 #: po/gtkmorph.glade.c:84 po/gtkmorph.glade.c:195 msgid "move whole feature" msgstr "muovi un intero lineamento" #: glade2/interface.c:641 glade2/interface.c:2533 glade1/interface.c:826 #: glade1/interface.c:2685 po/gtkmorph.glade2.c:91 po/gtkmorph.glade2.c:203 #: po/gtkmorph.glade.c:87 po/gtkmorph.glade.c:198 msgid "stretch" msgstr "stira" #: glade2/interface.c:649 glade2/interface.c:2540 glade1/interface.c:827 #: glade1/interface.c:2686 po/gtkmorph.glade2.c:90 po/gtkmorph.glade2.c:202 #: po/gtkmorph.glade.c:86 po/gtkmorph.glade.c:197 msgid "stretch whole feature" msgstr "stira un intero lineamento" #: glade2/interface.c:658 glade1/interface.c:837 po/gtkmorph.glade2.c:92 #: po/gtkmorph.glade.c:88 msgid "-" msgstr "-" #: glade2/interface.c:665 glade1/interface.c:849 po/gtkmorph.glade2.c:93 #: po/gtkmorph.glade.c:89 msgid "select" msgstr "seleziona" #: glade2/interface.c:677 glade1/interface.c:864 po/gtkmorph.glade2.c:94 #: po/gtkmorph.glade.c:90 msgid "unselect" msgstr "deseleziona" #: glade2/interface.c:689 glade1/interface.c:879 po/gtkmorph.glade2.c:96 #: po/gtkmorph.glade.c:92 msgid "assign" msgstr "assegna" #: glade2/interface.c:697 glade1/interface.c:880 po/gtkmorph.glade2.c:95 #: po/gtkmorph.glade.c:91 msgid "assign point to feature" msgstr "assegna punto al lineamento" #: glade2/interface.c:725 glade2/interface.c:1350 gtkmorph/dialogs.c:85 #: glade1/interface.c:908 glade1/interface.c:1450 po/gtkmorph.glade2.c:97 #: po/gtkmorph.glade2.c:131 po/gtkmorph.glade.c:93 po/gtkmorph.glade.c:125 msgid "error" msgstr "errore" #: glade2/interface.c:746 glade2/interface.c:1502 glade1/interface.c:951 #: glade1/interface.c:1660 po/gtkmorph.glade2.c:98 po/gtkmorph.glade2.c:146 #: po/gtkmorph.glade.c:95 po/gtkmorph.glade.c:141 msgid "width" msgstr "larghezza" #: glade2/interface.c:760 glade2/interface.c:1516 glade1/interface.c:971 #: glade1/interface.c:1678 po/gtkmorph.glade2.c:99 po/gtkmorph.glade2.c:147 #: po/gtkmorph.glade.c:96 po/gtkmorph.glade.c:142 msgid "height" msgstr "altezza" #: glade2/interface.c:774 glade1/interface.c:991 po/gtkmorph.glade2.c:100 #: po/gtkmorph.glade.c:97 msgid "x2" msgstr "x2" #: glade2/interface.c:780 glade1/interface.c:1000 po/gtkmorph.glade2.c:101 #: po/gtkmorph.glade.c:98 msgid "/2" msgstr "/2" #: glade2/interface.c:786 glade2/interface.c:1530 glade1/interface.c:1009 #: glade1/interface.c:1696 po/gtkmorph.glade2.c:102 po/gtkmorph.glade2.c:148 #: po/gtkmorph.glade.c:99 po/gtkmorph.glade.c:143 msgid "apply" msgstr "applica" #: glade2/interface.c:792 glade1/interface.c:933 po/gtkmorph.glade2.c:103 #: po/gtkmorph.glade.c:94 msgid "resulting image size" msgstr "dimensione immagine risultante" #: glade2/interface.c:797 po/gtkmorph.glade2.c:104 msgid "welcome" msgstr "benvenuto" #: glade2/interface.c:1124 glade2/interface.c:1228 glade1/interface.c:1228 #: glade1/interface.c:1323 po/gtkmorph.glade2.c:105 po/gtkmorph.glade2.c:107 #: po/gtkmorph.glade.c:100 po/gtkmorph.glade.c:104 msgid "error!" msgstr "errore!" #: glade2/interface.c:1133 glade1/interface.c:1240 po/gtkmorph.glade2.c:106 #: po/gtkmorph.glade.c:101 msgid "load the selected image" msgstr "apri l'immagine selezionata" #: glade2/interface.c:1258 po/gtkmorph.glade2.c:115 msgid "" "save\n" "diff" msgstr "" "salva\n" "differenza" #: glade2/interface.c:1263 po/gtkmorph.glade2.c:114 msgid "save difference from this mesh to other mesh" msgstr "salva la differenza fra questa griglia e un'altra griglia" #: glade2/interface.c:1270 glade1/interface.c:1377 po/gtkmorph.glade2.c:117 #: po/gtkmorph.glade.c:111 msgid "" "``edit mesh'': view the loaded image and edit the mesh on it. ``view " "warp'': view the result of warping the loaded image from this mesh to the " "resulting mesh. ``v. warp&meshes'' as before but with both " "meshes on. ``choose subimage'' choose which subimage of the " "loaded image you wish to use. You can also use the 'settings' " "button to change these settings more finely." msgstr "" "`modifica griglia': mostra l'immagine caricata e modifica la griglia su " "essa. `vis. warp': mostra il risultato del warp. `v il warp e le griglie': " "come sopra ma con la griglia. `scegli sottoimmagine': scegli quale parte " "dell'immagini caricata usare per il morph." #: glade2/interface.c:1275 glade1/interface.c:1379 po/gtkmorph.glade2.c:118 #: po/gtkmorph.glade.c:112 msgid "edit mesh" msgstr "modifica griglia" #: glade2/interface.c:1280 glade1/interface.c:1382 po/gtkmorph.glade2.c:119 #: po/gtkmorph.glade.c:113 msgid "view warp" msgstr "visualizza l'immagine deformata" #: glade2/interface.c:1285 glade1/interface.c:1385 po/gtkmorph.glade2.c:120 #: po/gtkmorph.glade.c:114 msgid "v. warp&meshes" msgstr "v. i. deformata e le griglie" #: glade2/interface.c:1290 glade1/interface.c:1388 po/gtkmorph.glade2.c:121 #: po/gtkmorph.glade.c:115 msgid "choose subimage" msgstr "Seleziona una sottoimmagine" #: glade2/interface.c:1303 glade1/interface.c:1402 po/gtkmorph.glade2.c:124 #: po/gtkmorph.glade.c:118 msgid "" "do\n" "warp" msgstr "deforma" #: glade2/interface.c:1308 glade1/interface.c:1410 po/gtkmorph.glade2.c:123 #: po/gtkmorph.glade.c:117 msgid "" "warp this image from this mesh to the resulting mesh, and show the result in " "this window or an accessory window" msgstr "" "deforma questa immagine, da questa griglia alla griglia risultante,\n" "e mostra il risultato" #: glade2/interface.c:1359 glade1/interface.c:1476 po/gtkmorph.glade2.c:132 #: po/gtkmorph.glade.c:126 msgid "" "these coefficents decide how much this image/mesh will influence the final " "morph" msgstr "" "questi coefficienti decidono quanto questa immagine/griglia influenzerà il " "morph" #: glade2/interface.c:1374 glade1/interface.c:1497 po/gtkmorph.glade2.c:133 #: po/gtkmorph.glade.c:128 msgid "" "image\n" "blending" msgstr "" "miscelaz.\n" "immagini" #: glade2/interface.c:1382 glade2/interface.c:2670 glade1/interface.c:1507 #: po/gtkmorph.glade2.c:135 po/gtkmorph.glade2.c:208 po/gtkmorph.glade.c:130 msgid "" "mesh\n" "interp." msgstr "" "interpol.\n" "griglie" #: glade2/interface.c:1419 glade1/interface.c:1553 po/gtkmorph.glade2.c:137 #: po/gtkmorph.glade.c:132 msgid "" "when you morph the images, or you ``do mixing'', this factor will measure " "how much this image will show in the mixing in the resulting image" msgstr "" "quando esegui un `morph' o quando dissolvi, questi coefficienti peseranno " "quanto queste immagini appariranno nell'immagine risultante" #: glade2/interface.c:1430 glade2/interface.c:2690 glade1/interface.c:1567 #: po/gtkmorph.glade2.c:138 po/gtkmorph.glade2.c:210 po/gtkmorph.glade.c:133 msgid "" "when you use the ``interpolate meshes'' function, the ``mesh factor'' " "measures how much this mesh will influence the resulting image's mesh" msgstr "" "quando le griglie vengono interpolate, questi coefficienti peseranno quanto " "ogni griglia influenzerà la griglia risultante" #: glade2/interface.c:1434 glade1/interface.c:1478 po/gtkmorph.glade2.c:139 #: po/gtkmorph.glade.c:127 msgid "coefficients" msgstr "coefficienti" #: glade2/interface.c:1454 glade1/interface.c:1595 po/gtkmorph.glade2.c:141 #: po/gtkmorph.glade.c:136 msgid "reset" msgstr "reset" #: glade2/interface.c:1458 glade1/interface.c:1602 po/gtkmorph.glade2.c:140 #: po/gtkmorph.glade.c:135 msgid "infer the subimage from the eyes position" msgstr "deduce la sottoimmagine dalla posizione degli occhi" #: glade2/interface.c:1464 glade1/interface.c:1611 po/gtkmorph.glade2.c:142 #: po/gtkmorph.glade.c:137 msgid "x coordinate of center" msgstr "coordinata x del centro" #: glade2/interface.c:1466 glade1/interface.c:1613 po/gtkmorph.glade2.c:143 #: po/gtkmorph.glade.c:138 msgid "c x" msgstr "c x" #: glade2/interface.c:1485 glade1/interface.c:1639 po/gtkmorph.glade2.c:144 #: po/gtkmorph.glade.c:139 msgid "y coordinate of center" msgstr "coordinata y del centro" #: glade2/interface.c:1487 glade1/interface.c:1641 po/gtkmorph.glade2.c:145 #: po/gtkmorph.glade.c:140 msgid "c y" msgstr "c y" #: glade2/interface.c:1536 glade1/interface.c:1579 po/gtkmorph.glade2.c:149 #: po/gtkmorph.glade.c:134 msgid "subimage position" msgstr "posizione sottoimmagine" #: glade2/interface.c:1690 gtkmorph/dialogs.c:74 glade1/interface.c:1813 #: po/gtkmorph.glade2.c:150 po/gtkmorph.glade.c:144 msgid "warning" msgstr "attenzione" #: glade2/interface.c:1697 glade1/interface.c:1824 po/gtkmorph.glade2.c:152 #: po/gtkmorph.glade.c:146 msgid "warning!" msgstr "attenzione!" #: glade2/interface.c:1708 glade1/interface.c:1840 po/gtkmorph.glade2.c:151 #: po/gtkmorph.glade.c:145 msgid "ok" msgstr "ok" #: glade2/interface.c:1753 gtkmorph/utils.c:358 glade1/interface.c:1879 #: po/gtkmorph.glade2.c:153 po/gtkmorph.glade.c:147 msgid "warped image" msgstr "immagine deformata" #: glade2/interface.c:1785 po/gtkmorph.glade2.c:154 msgid "frame6" msgstr "frame6" #: glade2/interface.c:1838 glade1/interface.c:1945 po/gtkmorph.glade2.c:155 #: po/gtkmorph.glade.c:148 msgid "unselect point" msgstr "deseleziona punto" #: glade2/interface.c:1843 glade1/interface.c:1953 po/gtkmorph.glade2.c:156 #: po/gtkmorph.glade.c:149 msgid "select point" msgstr "seleziona punto" #: glade2/interface.c:1848 glade1/interface.c:1961 po/gtkmorph.glade2.c:157 #: po/gtkmorph.glade.c:150 msgid "assign point" msgstr "assegna punto" #: glade2/interface.c:1853 glade1/interface.c:1969 po/gtkmorph.glade2.c:159 #: po/gtkmorph.glade.c:151 msgid "adjust" msgstr "aggiusta" #: glade2/interface.c:1857 po/gtkmorph.glade2.c:158 msgid "adjust mesh point position w.r.t. previous image" msgstr "sistema il punto della griglia, rispetto all'immagine precedente" #: glade2/interface.c:1865 glade1/interface.c:1986 po/gtkmorph.glade2.c:160 #: po/gtkmorph.glade.c:152 msgid "add horizontal line" msgstr "aggiungi linea orizzontale" #: glade2/interface.c:1873 glade1/interface.c:1997 po/gtkmorph.glade2.c:161 #: po/gtkmorph.glade.c:153 msgid "add vertical line" msgstr "aggiungi linea verticale" #: glade2/interface.c:1881 glade1/interface.c:2008 po/gtkmorph.glade2.c:162 #: po/gtkmorph.glade.c:154 msgid "del horizontal line" msgstr "cancella linea orizzontale" #: glade2/interface.c:1889 glade1/interface.c:2019 po/gtkmorph.glade2.c:163 #: po/gtkmorph.glade.c:155 msgid "del vertical line" msgstr "cancella linea verticale" #: glade2/interface.c:1903 glade1/interface.c:2039 po/gtkmorph.glade2.c:164 #: po/gtkmorph.glade.c:156 msgid "smooth" msgstr "liscia" #: glade2/interface.c:1999 glade1/interface.c:2120 po/gtkmorph.glade2.c:165 #: po/gtkmorph.glade.c:157 msgid "gtkmorph movie" msgstr "gtkmorph film" #: glade2/interface.c:2020 glade1/interface.c:2145 po/gtkmorph.glade2.c:166 #: po/gtkmorph.glade.c:158 msgid "how many frames will be saved; each will be saved in a file" msgstr "" "quanti fotogrammi saranno calcolati; ciascuno sarà memorizzato in un file" #: glade2/interface.c:2022 glade1/interface.c:2147 po/gtkmorph.glade2.c:167 #: po/gtkmorph.glade.c:159 msgid "how many frames" msgstr "quanti fotogrammi" #: glade2/interface.c:2049 glade1/interface.c:2181 po/gtkmorph.glade2.c:168 #: po/gtkmorph.glade.c:160 msgid "" "the files of the frames will be numbered sequentially starting from this " "number" msgstr "" "i file dei fotogrammi saranno numerati sequenzialmente iniziando da questo " "numero" #: glade2/interface.c:2051 glade1/interface.c:2183 po/gtkmorph.glade2.c:169 #: po/gtkmorph.glade.c:161 msgid "number of first file" msgstr "numero seriale del primo file" #: glade2/interface.c:2069 glade1/interface.c:2210 po/gtkmorph.glade2.c:170 #: po/gtkmorph.glade.c:162 msgid "file base name" msgstr "prefisso del nome dei file dei fotogrammi" #: glade2/interface.c:2080 glade1/interface.c:2226 po/gtkmorph.glade2.c:171 #: po/gtkmorph.glade.c:163 msgid "frame" msgstr "fotogramma" #: glade2/interface.c:2092 glade1/interface.c:2244 po/gtkmorph.glade2.c:173 #: po/gtkmorph.glade.c:166 msgid "create animated gif" msgstr "crea immagine gif animata" #: glade2/interface.c:2098 glade1/interface.c:2253 po/gtkmorph.glade2.c:172 #: po/gtkmorph.glade.c:165 msgid "" "creates an animated gif (needs 'convert' from imagemagick) and plays it " "(needs 'animate' from imagemagick)" msgstr "" "crea una GIF animata (usa 'convert' e 'animate' , dal pacchetto imagemagick)" #: glade2/interface.c:2100 glade1/interface.c:2255 po/gtkmorph.glade2.c:175 #: po/gtkmorph.glade.c:168 msgid "animate sequence" msgstr "anima la sequenza" #: glade2/interface.c:2106 po/gtkmorph.glade2.c:174 msgid "" "show animated sequence after saving it all (on some platforms, it may need " "'animate' command from imagemagick)" msgstr "" "mostra la sequenza animata dopo averla salvata\n" "(usa 'animate' , dal pacchetto imagemagick)" #: glade2/interface.c:2108 glade1/interface.c:2266 po/gtkmorph.glade2.c:177 #: po/gtkmorph.glade.c:170 msgid "replay" msgstr "replay" #: glade2/interface.c:2116 glade1/interface.c:2277 po/gtkmorph.glade2.c:176 #: po/gtkmorph.glade.c:169 msgid "resaves and replays animations" msgstr "risalva e mostra le animazioni" #: glade2/interface.c:2118 glade1/interface.c:2279 po/gtkmorph.glade2.c:179 #: po/gtkmorph.glade.c:172 msgid "creates mpeg" msgstr "crea mpeg" #: glade2/interface.c:2124 glade1/interface.c:2288 po/gtkmorph.glade2.c:178 #: po/gtkmorph.glade.c:171 msgid "" "creates an mpeg file and plays it; will use a parameter file (see help) " "(needs 'mpeg_encode' and 'mpeg_play')" msgstr "" "crea un file mpeg e lo mostra; vedi help \n" "(usa i comandi esterni 'mpeg_play' e 'mpeg_encode')" #: glade2/interface.c:2126 po/gtkmorph.glade2.c:181 msgid "create AVI MPEG4" msgstr "crea AVI MPEG4" #: glade2/interface.c:2132 po/gtkmorph.glade2.c:180 msgid "creates an AVI file in MPEG4 format (needs 'mplayer' and 'mencoder')" msgstr "" "crea un file AVI in formato MPEG4 (usa i programmi 'mplayer' e 'mencoder')" #: glade2/interface.c:2142 glade1/interface.c:2228 po/gtkmorph.glade2.c:182 #: po/gtkmorph.glade.c:164 msgid "animations" msgstr "animazioni" #: glade2/interface.c:2158 glade1/interface.c:2327 po/gtkmorph.glade2.c:183 #: po/gtkmorph.glade.c:173 msgid "creates and saves all morphs, builds animations" msgstr "crea e salva tutti i frami di morph, costruisce le animazioni" #: glade2/interface.c:2168 po/gtkmorph.glade2.c:184 msgid "stops the computation of frames" msgstr "interrompe il calcolo dei fotogrammi" #: glade2/interface.c:2261 glade1/interface.c:2397 po/gtkmorph.glade2.c:185 #: po/gtkmorph.glade.c:177 msgid "gtkmorph guide" msgstr "guida gtkmorph" #: glade2/interface.c:2293 glade1/interface.c:2440 po/gtkmorph.glade2.c:187 #: po/gtkmorph.glade.c:179 msgid "prev" msgstr "precedente" #: glade2/interface.c:2298 glade1/interface.c:2448 po/gtkmorph.glade2.c:186 #: po/gtkmorph.glade.c:178 msgid "go back to previous guide pane" msgstr "torna alla pagina precedente della guida" #: glade2/interface.c:2300 glade1/interface.c:2450 po/gtkmorph.glade2.c:189 #: po/gtkmorph.glade.c:181 msgid "do it" msgstr "esegui il compito" #: glade2/interface.c:2305 glade1/interface.c:2458 po/gtkmorph.glade2.c:188 #: po/gtkmorph.glade.c:180 msgid "do what is proposed in this pane" msgstr "fai quello che è proposto in questa pagina" #: glade2/interface.c:2307 glade1/interface.c:2460 po/gtkmorph.glade2.c:191 #: po/gtkmorph.glade.c:183 msgid "next" msgstr "prossima" #: glade2/interface.c:2312 glade1/interface.c:2468 po/gtkmorph.glade2.c:190 #: po/gtkmorph.glade.c:182 msgid "skip this and go to next guide pane" msgstr "salta queste operazioni e vai alla prossima pagina" #: glade2/interface.c:2361 glade1/interface.c:2508 po/gtkmorph.glade2.c:192 #: po/gtkmorph.glade.c:184 msgid "question" msgstr "domanda" # domanda? #: glade2/interface.c:2368 glade1/interface.c:2516 po/gtkmorph.glade2.c:195 #: po/gtkmorph.glade.c:187 msgid "question?" msgstr "domanda?" #: glade2/interface.c:2384 glade1/interface.c:2540 po/gtkmorph.glade2.c:193 #: po/gtkmorph.glade.c:185 msgid "Yes" msgstr "Sì" #: glade2/interface.c:2389 glade1/interface.c:2548 po/gtkmorph.glade2.c:194 #: po/gtkmorph.glade.c:186 msgid "No" msgstr "No" #: glade2/interface.c:2425 glade1/interface.c:2577 po/gtkmorph.glade2.c:196 #: po/gtkmorph.glade.c:188 msgid "Select Color" msgstr "Seleziona colore" #: glade2/interface.c:2487 glade1/interface.c:2625 po/gtkmorph.glade2.c:197 #: po/gtkmorph.glade.c:192 msgid "window1" msgstr "finestra1" #: glade2/interface.c:2581 glade1/interface.c:2723 po/gtkmorph.glade2.c:204 #: po/gtkmorph.glade.c:199 msgid "gtkmorph mag" msgstr "lente gtkmorph" #: glade2/interface.c:2594 glade1/interface.c:2741 po/gtkmorph.glade2.c:205 #: po/gtkmorph.glade.c:200 msgid "1" msgstr "1" #: glade2/interface.c:2605 glade1/interface.c:2759 po/gtkmorph.glade2.c:206 #: po/gtkmorph.glade.c:201 msgid "track" msgstr "segui" #: glade2/interface.c:2662 gtkmorph/utils2_c:6 po/gtkmorph.glade2.c:207 msgid "differential mesh" msgstr "griglia differenza" #: gtkmorph/settings.c:84 msgid "no warnings" msgstr "niente avvisi" #: gtkmorph/settings.c:87 msgid "" "dont warn, just beep; warnings may be read with 'why the beep' in the 'help' " "menu" msgstr "" "non visualizzare avvisi, fai solo 'bip'; gli avvisi si possono leggere con " "il comando \"perché ha fatto 'bip'?\" nel menù \"aiuto\"" #: gtkmorph/settings.c:91 msgid "edit features" msgstr "modifica i lineamenti" #: gtkmorph/settings.c:94 msgid "permits to add and delete mesh lines, edit features" msgstr "" "permette di modificare le griglie (aggiungi e togli linee) e i lineamenti" #: gtkmorph/settings.c:98 msgid "preserve border" msgstr "mantieni il bordo" #: gtkmorph/settings.c:101 msgid "border points of the mesh are forced to stay on the border of the image" msgstr "i punti al bordo della griglia sono bloccati sul bordo dell'immagine" #: gtkmorph/settings.c:105 msgid "hide unusable" msgstr "nascondi inutili" #: gtkmorph/settings.c:108 msgid "hide unusable widgets, instead of deactivating them" msgstr "nascondi gli strumenti inutili, invece di disattivarli" #: gtkmorph/settings.c:112 msgid "cursor jump" msgstr "cursore saltellante" #: gtkmorph/settings.c:115 msgid "moves the image to recenter the last edited point" msgstr "muove l'immagine per ricentrare l'ultimo punto modificato" #: gtkmorph/settings.c:119 msgid "mesh cant overlap" msgstr "le griglie non possono autosovrapporsi" #: gtkmorph/settings.c:122 msgid "" "a mesh point cannot enter in a neighbouring cell (this is currently not very " "well enforced)" msgstr "" "un punto di griglia non può entrare in una cella vicina (questo attualmente " "non funziona molto bene)" #: gtkmorph/settings.c:126 msgid "use antialiasing warping" msgstr "usa un warping con antialiasing" #: gtkmorph/settings.c:129 msgid "" "choose antialiasing method that is used when warping: the lanczos kernels " "are slower, but are necessary if the images have fine or grained textures " "for animations" msgstr "" "scegli il filtro antialiasing (per migliorare la qualità): il nucleo " "'lanczos' è migliore ma necessario se l'immagine ha dettagli fini o " "tessiture, e/o per animazioni" #: gtkmorph/settings.c:134 msgid "wavelet equalization" msgstr "equalizzazione wavelet" #: gtkmorph/settings.c:137 msgid "" "the averaging of images will lose details; you may enable an enhancing " "algorithm (based on wavelets)" msgstr "" "la dissolvenza di immagini ne fa una media, che perde dettagli; puoi " "attivare questo algoritmo di restauro (basato sulla trasformata wavelet)" #: gtkmorph/settings.c:141 msgid "wavelet depth" msgstr "profondità wavelet" #: gtkmorph/settings.c:144 msgid "this is the depth of the wavelets" msgstr "questa è la profondità della trasformata wavelet" #: gtkmorph/settings.c:149 msgid "energy for mesh smoothing" msgstr "energia usata per lisciare le griglie" #: gtkmorph/settings.c:152 msgid "" "type of energy that is minimized to decide the position of the non-selected " "mesh points: thin plate energy is better but slower, to speed up use elastic " "energy when editing meshes" msgstr "" "tipo di energia minimizzata per decidere la posizione dei punti non " "selezionati delle griglie: la \"energia di piastra sottile\" (\"thin_plate" "\") è la migliore ma è lenta, per accelerare usa la energia elastica quando " "editi la griglia" #: gtkmorph/settings.c:156 msgid "auto point adjust" msgstr "sistemazione automatica punti" #: gtkmorph/settings.c:159 msgid "" "adjust the position of a mesh point by comparing this image with the " "previous one and doing a best match. Achieves sub-pixel precision but may " "move your point around erratically." msgstr "" "sistema la posizione di un punto della griglia confrontanto questa immagine " "con la precedente e cercando un miglior abbinamento. Ottiene precisione sub-" "pixel ma potrebbe spostare i punti in modo erratico." #: gtkmorph/settings.c:163 msgid "mesh factors sum to 1" msgstr "somma coefficienti di griglia=1" #: gtkmorph/settings.c:166 msgid "" "always force the mesh factors so that they sum to 1;\n" "(if not, they are internally renormalized before using)" msgstr "" "forza sempre i coefficienti di griglia ad avere somma 1; (se non è così, " "sono internamente rinormalizatti quando serve)" #: gtkmorph/settings.c:170 msgid "image factors sum to 1" msgstr "somma coefficienti di immagine=1" #: gtkmorph/settings.c:173 msgid "" "always force the image factors so that they sum to 1;\n" "(if not, they are internally renormalized before using)" msgstr "" "forza i coefficienti di miscelazion ad avere somma 1; (se non è così, sono " "internamente rinormalizatti quando serve)" #: gtkmorph/settings.c:177 msgid "automatic mesh interpolation" msgstr "interpolazione automatica griglie" #: gtkmorph/settings.c:180 msgid "" "automatically interpolates the resulting mesh when morphing (note that in " "this case you cannot edit it)" msgstr "" "interpola automaticante le griglie in input per creare la griglia risultante " "(nota che in questo caso non la si può editare) " #: gtkmorph/settings.c:184 msgid "automatic blending" msgstr "miscelazione automatica" #: gtkmorph/settings.c:187 msgid "" "automatically blends the images when the image blending factors are changed" msgstr "" "miscela automaticamente le immagini se i coefficienti di immagine vengono " "cambiati" #: gtkmorph/settings.c:191 msgid "mesh auto sync" msgstr "auto sincronizzazione griglie" #: gtkmorph/settings.c:194 msgid "any change (add/del, label/unlabel) to a mesh is replicated" msgstr "" "ogni modifica (aggiungi/cancella, etichetta/assegna..) in una griglia è " "replicata nelle altre" #: gtkmorph/settings.c:198 msgid "warped image in other win" msgstr "immagine deformata in altra finestra" #: gtkmorph/settings.c:201 msgid "put warped images in another window" msgstr "visualizza le immagini di warp in finestre separate" #: gtkmorph/settings.c:207 msgid "show warp after warp" msgstr "mostra il warp" #: gtkmorph/settings.c:210 msgid "" "switch the input window(s) to the warped image after a warp (overridden by " "the above)" msgstr "" "quando viene effettuato un warp/morph, mostra nelle finestre di input i warp " "(solo se il precedente non è attivato) " #: gtkmorph/settings.c:273 msgid "preserve aspect ratio" msgstr "mantieni l'aspect" #: gtkmorph/settings.c:276 msgid "when loading an image, preserve aspect ratio" msgstr "quando si carica un immagine, l'aspect viene mantenuto" #: gtkmorph/settings.c:280 msgid "dim image" msgstr "scurisci immagine" #: gtkmorph/settings.c:287 msgid "view original mesh" msgstr "mostra griglia originale" #: gtkmorph/settings.c:294 msgid "view original points" msgstr "mostra punti originali" #: gtkmorph/settings.c:308 msgid "view warped mesh" msgstr "visualizza la griglia deformata" #: gtkmorph/settings.c:315 msgid "view warped points" msgstr "visualizza i punti della griglia deformata" #: gtkmorph/settings.c:329 msgid "view eyes" msgstr "visualizza gli occhi" #: gtkmorph/settings.c:343 msgid "mesh is readonly" msgstr "la griglia non è modificabile" #: gtkmorph/settings.c:383 msgid "disable" msgstr "disattiva" #: gtkmorph/settings.c:416 msgid "show mesh difference to..." msgstr "mostra differenza da questa griglia a..." #: gtkmorph/settings.c:418 msgid "show difference between this mesh and another mesh, as white arrows" msgstr "" "mostra la differenza che intercorre da questa griglia a un'altra griglia, " "con freccine bianche" #: gtkmorph/utils2_c:14 msgid "resulting image" msgstr "immagine risultante" #: gtkmorph/utils2_c:19 gtkmorph/utils.c:350 msgid "input image" msgstr "immagine in input" #: gtkmorph/feature.c:201 msgid "(unavailable feature name)" msgstr "(nome non disponibile per un lineamento)" #: gtkmorph/feature.c:366 gtkmorph/feature.c:386 msgid "feature" msgstr "lineamento" #: gtkmorph/feature.c:504 msgid "sorry this functions is as yet unimplemented" msgstr "spiacente, questa funzione non è implementata" #: gtkmorph/guide_text.c:20 msgid "-Introduction" msgstr "-Introduzione" #: gtkmorph/guide_text.c:22 msgid "" " Welcome to GtkMorph\n" "\n" "GtkMorph is a powerful program that permits you to warp or morph images.\n" "\n" " Using this guide.\n" "\n" "Hit 'next' to skip a topic, or 'do it' to do it; when you have done a topic, " "hit 'Guide' in the main window to come back to the guide.\n" "(Note that, when you hit 'do it', the guide will iconify and deiconify other " "windows to highlight your task: with some dumb window managers, this will " "not work ok).\n" " If you are not satisfied by the way you have complied with the guide " "requests, hit 'prev' and 'do it' to retry the task.\n" "As a first task, you may get acquainted with the main gtkmorph window: if " "you want to give it a look, hit 'do it': the main window will pop up! Note " "that, if you keep the mouse still on a menu voice or on a button for a " "moment, a tip shows up. When you are done, hit 'Guide' to come back to the " "guide.\n" "If you know the program main window, simply hit 'next'.\n" "\n" "If you are fed up with the guide, you may stop it at any time by closing " "this window: the normal gtkmorph program will pop up.\n" "\n" "If you want to test the program, you may want to load the example session:" "look into the 'Help' menu." msgstr "" " Benvenuti in GtkMorph\n" "\n" "GtkMorph è un potente programma che Vi permette di eseguire deformazioni\n" "di immagini ('warp') e 'morph' (cioè, combinazioni di 'warp' e di " "dissolvenze).\n" "\n" " Usare la guida.\n" "\n" "Premete 'prossimo' per saltare un compito, oppure 'esegui il compito' per " "farlo; quando avete fatto, premete il tasto 'Guida' nella finestra " "principale.\n" "(Nota: quando premete 'esegui il compito', la guida si iconizzerà e mostrerà " "le altre finestre per evideziare il lavoro da compiere: con alcuni 'window " "manager' meno avanzati, questo non funzionerà).\n" "Se non siete soddisfatti da come avete eseguito il compito, potete sempre " "premere 'precedente' per tornare indietro e rieseguire il compito.\n" "Come primo compito, potete familiarizzare con la finestra principale di " "GtkMorph: se volete provare, premete 'esegui il compito': la finestra " "principale comparirà! Notate che, se tenete il mouse fermo su un bottone o " "su una voce di menù, comparirà un suggerimento. Quando avete finito di " "familiarizzare, premete 'Guida' nella finestra principale per tornare alla " "guida.\n" "Se conoscete già il programma, premete 'prossima'.\n" "\n" "Se siete stufi della guida, potete smettere in ogni momento chiudendo questa " "finestra: il programma GTKMorph ricomparità al suo posto.\n" "\n" "Se volete vedere il programma in azione, potete caricare una sessione di " "esempio: usate il menù 'Aiuto'." #: gtkmorph/guide_text.c:48 msgid "-Select subimage size" msgstr "-Dimensione immagine risultante" #: gtkmorph/guide_text.c:50 msgid "" "Now you select the size that the output image(s) will have. To this end, in " "the lower part of the main window, there is a pair of spins; select your " "preferred size and hit 'apply'.\n" "After that, you will be brought back to the guide.\n" "You may change the size again by selecting 'resulting size...' in the Edit " "menu." msgstr "" "Ora potete selezionare la dimensione dell'immagine risultante. A questo " "scopo, nella parte bassa della finestra principale, vi sono due cursori; " "selezionate la dimensione e premete 'applica'.\n" "Dopo questo, sarete riportati alla guida.\n" "Potrete cambiare di nuovo la dimensione risultante in qualunque momento " "selezionando `dimensione immagine risultante' nel menù `edit'." #: gtkmorph/guide_text.c:57 msgid "-Morph or warp" msgstr "-Morph oppure warp" #: gtkmorph/guide_text.c:59 msgid "" "You may `warp' or `morph'.\n" "\n" "'Warp' means 'to deform, contort, distort, wring, bend, or otherwise " "twist'.\n" "If you have one single input image and you want to make a distortion of it, " "then you want to warp it. In this case, hit 'next'\n" "\n" "'Morphing' images instead means 'blending together warped versions of the " "images'. So to morph you need two or more input images.\n" "In this case, press 'do it', and, in the File menu, choose 'add image' as " "many times as to reach the required number of input images, then hit 'Guide' " "in the main window.\n" "\n" "Note that at startup the program is set for ``warping'': there is only one " "input image." msgstr "" "Voi potete eseguire 'warp' (deformazioni) o 'morph'.\n" "\n" "'warp' significa deformare, distorcere, piegare, etc etc.\n" "Se avete una sola immagine in input e volete deformarla, potete fare un " "'warp'. In questo caso premete 'prossima'.\n" "\n" "'morph' è un procedimento per cui alcune immagini vengono deformate e le " "versioni deformate vengono miscelate (in un effetto di dissolvenza). Per " "questo vi servono almeno due immagini. Se questo è il vostro caso, premete " "'esegui il compito' e poi nel menù 'file' scegliete 'aggiungi un immagine', " "tante volte quante sono le immagini a voi necessarie, e poi premete 'guida' " "nella finestra principale.\n" "\n" "Notate che all'avvio il programma è pronto per il 'warp': vi è solo un " "immagine di input." #: gtkmorph/guide_text.c:74 msgid "-Load image(s)" msgstr "-Carica immagini" #: gtkmorph/guide_text.c:76 msgid "" "Now you need to load the input images.\n" "In each input image window, load the input image using the big 'load image' " "button." msgstr "" "Ora dovete caricare le immagini di input.\n" "In ciascuna immagini di input, carica l'immagine usando il bottone 'carica " "immagine'. " #: gtkmorph/guide_text.c:80 msgid ";Load reference image" msgstr ";Carica l'immagine di riferimento" #: gtkmorph/guide_text.c:82 msgid "" "If you wish, you may load an image in the main window; it may help you if " "you are warping images and you want to have a reference to use as a target. " "This is not really necessary, and you may do as well without.\n" "\n" "If in this reference image there are 3 important features, like the eyes and " "mouth in face, then you should drag the 3 white points on these features.\n" "\n" "Similarly, if you have a reference mesh that is associated to this image, " "you may load it now, using the 'load mesh' button\n" "\n" "When done, click 'Guide'." msgstr "" "Se desiderate, potete caricare una immagine nella finestra principale; vi " "aiuterà se dovete fare dei warp e volete avere un riferimento da usare come " "meta. Questo non è strettamente necessario, potete anche farne a meno.\n" "\n" "Se nella immagine di riferimento vi sono 3 punti importanti, come gli occhi " "e la bocca in una faccia, potete trascinare 3 punti bianchi su questi.\n" "\n" "Similmente, se avete una griglia di riferimento associata a questa immagine, " "potete caricarla ora, con il bottone 'carica griglia'.\n" "\n" "Quando avete finito, premete il bottone 'guida'." #: gtkmorph/guide_text.c:92 msgid "-Select subimage(s)" msgstr "-Seleziona una sottoimmagine" #: gtkmorph/guide_text.c:94 msgid "" "Now you select a subimage of each input image. You do this by either moving " "the selection rectangle (using the spins at bottom of the window) or by " "dragging the 3 white feature points. (see [1] below)\n" "\n" "When you have chosen the preferred subimage, hit 'apply' (and the window " "will close). If later you find out that are not satisfied of your choice, " "you may click in the option menu (at center top) and select 'choose " "subimage' to repeat this process.\n" "\n" "Alternatively, if you have already a mesh for this image, you may load it " "now; since the subimage selection is saved with the mesh; when you load the " "saved mesh, the subimage is reselected for you.\n" "\n" " [1] Note that you cannot position the 3 points freely: their mutual " "position is copied from the position of the 3 reference points in the " "resulting image; so you will need to be patient.\n" "Note also that the selection rectangle has currently a fixed aspect (see " "[2]); if you want to freely change the aspect, change the 'preserve aspect " "ratio' setting in the 'settings'.\n" " [2] 'aspect' is the ratio between width and height." msgstr "" "Ora voi selezionate una sottoimmagine in ciascuna immagine di input. A " "questo scopo potete, o spostare il rettangolo di selezione (usando le " "regolazioni in fondo alla finestra) oppure trascinare i 3 punti bianchi (v. " "[1]), detti 'puntatori occhi'.\n" "\n" "Quando avete scelto la sottoimmagine, premete 'applica' (e la finestra " "sparirà). Se più avanti decidete che non siete soddisfatti, poete premere " "sul menù opzioni (al centro in alto) e selezionare 'seleziona sottoimmagine' " "per ripetere il processo.\n" "\n" "Alternativamente, se avete già una griglia per questa immagine, la potete " "caricare ora; dato che la scelta della sottoimmagine è salvata con la " "griglia, quando ricaricate la griglia, la sottoimmagine viene reimpostata " "come salvato.\n" "\n" "[1] Notate che non potete spostare i 3 punti liberamente: la loro posizione " "mutua è copiata dalla posizione dei 3 punti di riferimento nella immagine " "risultante; siate pazienti.\n" "Notate anche che il rettangolo ha un 'aspect' [2] fissato; se volete " "cambiarlo a piacere, deselezionate mantieni l'aspect' nelle preferenze " "dell'immagine.\n" "[2] 'aspect' è il rapporto fra altezza e larghezza delle immagini." #: gtkmorph/guide_text.c:117 msgid "-Adjust mesh" msgstr "-Modifica griglia" #: gtkmorph/guide_text.c:119 msgid "" "Now you adjust the mesh in the input image(s) so that they best fit to the " "features of those images. If you hit the right mouse key while on the mesh, " "you will get a menu.\n" "It is very important that points in different meshes are syncronized, that " "is, that point (i,j) in every mesh is associated to the same type of " "feature; for this reason, when you drag a point in a mesh, the same point " "flashes in all other meshes.\n" "When you have put points on a feature (say, for example, the right eye), you " "may hit 'pack' to pack all this point into a 'feature'." msgstr "" "Ora aggiustate la griglia della/e immagine/i di input così da ben delineare " "i tratti salienti delle immagini. Se premete il tasto destro del mouse " "mentre siete su una griglia, comparirà un utile menù.\n" "Fate attenzione che i punti su diverse griglie siano sincronizzati, cioè che " "il punto (i,j) di ogni griglia sia sempre associato allo stesso elemento " "pittorico; per questo motivo, quando spostate un punto, il punto associato " "in ogni altra immagine lampeggia.\n" "Quando avete posizionato punti su un tratto somatico, potete collezionarli " "in un 'lineamento'." #: gtkmorph/guide_text.c:130 msgid "From time to time, you better save the mesh(es)." msgstr "Di quando in quando ricordatevi di salvare la griglia." #: gtkmorph/guide_text.c:132 msgid ";Warp" msgstr ";Warp" #: gtkmorph/guide_text.c:134 msgid "" "Hit the 'do warp' button to view the warp. If you are not satisfied, choose " "'edit mesh' in the option menu (top center) and edit the mesh further.From " "time to time, you better save the mesh." msgstr "" "Premete il bottone 'deforma' per vedere il warp. Se non siete soddisfatti, " "scegliete 'modifica griglia' nel menù opzioni (in alto al centro) e " "modificate la griglia ulteriormente. Di quando in quando ricordatevi di " "salvare la griglia." #: gtkmorph/guide_text.c:139 msgid ":Morph" msgstr ":Morph" #: gtkmorph/guide_text.c:140 msgid "" "To morph your images, you must decide how much each image should influence " "the resulting morph. To this end, you adjust the morph factors to your need; " "the 'mesh interpolation' slide tells how much this mesh will influence the " "resulting mesh, and the 'image blending' tells how much this image is " "visible in the resulting image.\n" "\n" "Then hit the 'do morph' button in the main window to view the morph.\n" " If you are not satisfied, choose 'edit mesh' in the option menu (top " "center) and edit the mesh further; or, choose 'view warp&mesh' and edit the " "morph factors.\n" "\n" "If you want to change the morph factors further, choose ``morph factors..'' " "in the 'edit' menu\n" "\n" "Tip: set all factors to equal values and do a morph: if the images do not " "superimpose well, you may try to select a subimage in each image so that " "they superimpose better" msgstr "" "Per creare un morph, dovete decidere quanto ciascuna immagine influenza il " "risultato finale. A questo scopo, dovete impostare i coefficienti: il " "cursore 'interpolazione griglia' determina quanto questa griglia influenzerà " "la griglia risultante, e il cursore 'miscelaz. immagine' quanto questa " "immagine sarà visibile nella immagine risultante.\n" "\n" "Dopo premete il bottone 'morph' nella finestra principale per vedere il " "morph.\n" "Se non siete soddisfatti, scegliete 'modifica griglia' (in alto al centro " "nelle finestre di input) e aggiustate ulteriormente le griglie; oppure, " "scegliete 'v. i. deformata e le griglie' e aggiustate i cursori.\n" "\n" "Se volete aggiustare i cursori con i 'coefficienti di morph', potete anche " "scegliere 'mostra coefficienti di morph' nel menù 'edit'.\n" "\n" "Suggerimenti: impostate tutti i coefficienti a valori uguali e eseguite un " "primo morph: se le immagini non si sovrappongono bene, potete seleziona una " "sottoimmagine di ciscuna immagini di input per cercare di sovrapporle meglio." #: gtkmorph/guide_text.c:157 msgid ":Movie" msgstr ":Movie" #: gtkmorph/guide_text.c:158 msgid "" "To make a movie of your morph, choose 'morph sequence' in the Morph menu. A " "window will pop up. Click on help there for further help." msgstr "" "Per realizzare un film, scegliete 'crea animazione' nel menù Morph. " "Comparirà una finestra. Premete il bottone di aiuto per avere ulteriori " "informazioni." #: gtkmorph/guide_text.c:161 msgid "-End" msgstr "-Fine" #: gtkmorph/guide_text.c:162 msgid "" "Here ends the guide.\n" "\n" "Goodbye and thank you" msgstr "" "Qui finisce la guida\n" "\n" "Grazie e arrivederci" #: gtkmorph/movies.c:64 gtkmorph/callbacks_main.c:318 msgid "to morph, you must have at least two input images" msgstr "per fare un morph, ci vogliono due (o più) immagini di input" #: gtkmorph/movies.c:526 #, c-format msgid "" "Help on movie making: when you hit ok, gtkmorph will repeat a loop for %d " "times. Any time, it will set the warping and image-blending factors to an " "interpolation between the values that you have stored as 'first' and 'end'. " "Any time, it will save the morphed image (in format %s), starting from '%s' " "and ending with '%s'. Then it will create any animation that you have asked " "to create: the animated gif is called '%s.gif', the mpeg file is called '%s." "mpeg' (and mpeg_encode will use '%s.param' for parameters if available: see " "in %s/mpeg.param an example, or copy the end part of %s.auto.param) and play " "them. You may recreate animations from preexisting frames by hitting 'replay'" msgstr "" "Aiuto sulla creazione di un film: quando premi 'ok', gtkmorph ripeterà un " "ciclo per %d volte. Ogni volta, i coefficienti di warp e di dissolvenza " "saranno impostati a una interpolazione fra i valori 'inizio' e 'fine' che " "avete salvato con il menù `salva coefficienti dei morph'. Ogni volta " "un'immagine sarà salvata (in formato %s), iniziando da '%s' e finendo con " "'%s'. Alla fine saranno create tutte le animazioni richieste: la GIF animata " "sarà '%s.gif', il file mpef sarà '%s.mpeg' (e mpeg_encode userà '%s.param' " "per i parametri, se disponibile: vedi in %s/mpeg.param per un esempio, " "oppure copia la parte finale di %s.auto.param) e infine le animazioni " "saranno mostrate. Potrete ricreare le animazioni premendo 'replay'. " #: gtkmorph/movies.c:599 msgid "" "Sorry : temporary files can only be saved as png, and not as ppm; but " "'mencoder' does not read ppm files. You must compile gtkmorph using a newer " "version of libGTK." msgstr "" "Spiacente: i file temporanei possono essere salvati solo come png, e non " "come ppm; ma 'mencoder' non legge i ppm. Dovete compilare gtkmorph con una " "versione nuova di libGTK" #: gtkmorph/movies.c:602 msgid "" "sorry : cannot create AVI if a comma ',' is in the filename (blame this on " "'mencoder')" msgstr "" "spiacente: non si possono creare file AVI con una virgola ',' nel nome (per " "colpa di 'mencoder')" #: gtkmorph/callbacks_help.c:18 msgid "" "Here are a few tips at using this program\n" "0) at startup the program is set for ``warping'': read the ``warp help''\n" "1) to morph, you need to have 2 or more `input images' :\n" " use `add an image' (it is in the `file' menu); read the ``morph help''\n" "2) if you keep the mouse still on a menu voice or on a button\n" " for a moment, you may read the help tips.\n" "3) when the mouse pointer is in on the mesh grid, by hitting\n" " the right button, you get an useful menu.\n" "\n" "\n" "If you need more help, activate the guide." msgstr "" "ecco alcuni consigli per usare questo programma\n" "0) all'avvio il programma è pronto per fare deformazioni, cioè \n" " `warp': leggete il `aiuto sul warp'\n" "1) per fare morph, servono 2 o più imagini di input : usate\n" " `aggiungi un immagine' (nel menù `file'); leggete `aiuto sul morph'\n" "2) se tenete il mouse fermo su una voce di menù o su un bottone,\n" " vedrete un suggerimento sulla funzione che questo esegue;\n" "3) quando il puntatore del mouse è sulla griglia , con il tasto di\n" " destra si ottiene un menù che contiene utili funzioni di editing.\n" "\n" "\n" "Se vi serve più aiuto, attivate la guida. " #: gtkmorph/callbacks_help.c:38 msgid "" "To morph:\n" " 1) load an image in each `input image',\n" " 2) edit the meshes by dragging the points (and use the menu that you get\n" " by the right mouse button)\n" " 3) set the `blending factors' and `mesh factors' as desired\n" " 4) and hit `do morph'\n" msgstr "" "Non è difficile usare questo programma per eseguire un 'morph':\n" "1) caricate un'immagine in ciascuna finestra di input (con 'apri immagine')\n" "2) sistemate le griglie con il mouse (con il tasto sinistro \n" " trascinate i punti, con il destro ottenete un utile menù) \n" "3) premete il tasto 'morph'\n" #: gtkmorph/callbacks_help.c:72 msgid "" "It is not difficult to use this program for warping: just\n" " 1) load an image in the `input image 1',\n" " 2) edit the meshes by dragging the points (and use the menu that you get\n" " by the right mouse button)\n" " 3) and hit `do warp'\n" msgstr "" "Non è difficile usare questo programma per eseguire una deformazione (un " "'warp'):\n" "1) caricate l'immagine nella finestra di input (con 'apri immagine')\n" "2) deformate le griglie (con il tasto sinistro trascinate i punti,\n" " con il destro ottenete un utile menù)\n" "3) premete il tasto 'deforma'\n" #: gtkmorph/utils-mesh.c:43 msgid "to interpolate meshes, you must have at least two input images" msgstr "" "per eseguire la interpolazione, ci vogliono due (o più) immagini di input " #: gtkmorph/utils-mesh.c:56 msgid "" "to interpolate the meshes, the sum of the all `mesh factors' should be " "nonzero\n" "I have set some default values for you" msgstr "" "per eseguire la interpolazione, i coefficienti di griglia devono avere somma " "non zero.\n" "Ho impostato i valori di default." #: gtkmorph/callbacks_fs.c:168 #, c-format msgid "load %s" msgstr "carica %s" #: gtkmorph/callbacks_fs.c:317 gtkmorph/loadsave.c:449 msgid "internal error: the image doesnt exist!" msgstr "errore interno: l'immagine non esiste pi?!?" #: gtkmorph/callbacks_fs.c:324 #, c-format msgid "save %s (only PPM format)" msgstr "salva %s (solo in formato PPM)" #: gtkmorph/callbacks_fs.c:326 #, c-format msgid "save %s" msgstr "salva %s" #: gtkmorph/utils.c:348 msgid "template image" msgstr "immagine di riferimento" #: gtkmorph/utils.c:356 msgid "morphed image" msgstr "immagine 'morph'" #: gtkmorph/guide_text.h:7 msgid "" "'Features' are sets of grid points; they are represented by the same color " "in the grid. They can be used to more easily edit a complex grid: for " "example, when preparing a grid on a face, each facial feature (eyes, " "mouth..) can be outlined by using a proper set of points.\n" "Points can be added or subtracted from features using the tools 'assign' and " "'unselect'; whole features can be moved all together, using the 'move' and " "'stretch' tools; the 'pack' button transforms all selected points into a " "feature, and 'unpack' does the opposite." msgstr "" "I 'lineamenti' sono insiemi di punti di una griglia; sono rappresentati da " "punti che hanno lo stesso colore. Possono essere usati per facilitare la " "sistemazione di griglie complesse: per esempio, se si sta preparando una " "griglia basata su un volto, ciascun lineamento (occhi, bocca,...) può essere " "delineato usando un opportuno insieme di punti.\n" "I punti possono essere aggiunti o sottratti da un lineamento con gli " "strumenti 'assegna' e 'deseleziona'; il lineamento intero può essere " "spostato o allungato con gli strumenti 'muovi' e 'stira'; il bottone " "'colleziona' raccoglie tutti i puni selezionai in un 'lineamento', e il " "bottone 'scolleziona' fa l'opposto. " #: gtkmorph/guide_text.h:18 msgid "" "Tips:\n" "1) try to keep the mesh lines as linear as possible: add new lines (with " "right mouse button) if this helps!\n" "2) to have a better morph, for each image, set the `morph factors' to a " "maximum, hit `do warp' and try to adjust the mesh until this warp looks " "right\n" "3) if you are fighting with small details, then you should increase the " "resulting image size until you have fixed things. (Use the the 'x2' button.)" msgstr "" "Suggerimenti:\n" "1) cercate di tenere le linee della griglia più lineari possibile: " "aggiungete nuove linee allo scopo (con il bottone destro del mouse) se " "serve!\n" "2) per avere un morph migliore, in ciascuna immagine mettere il " "'coefficiente di griglia' a un massimo, premete 'deforma' e aggiustate la " "griglia fino a che il warp ha un buon aspetto.\n" "3) se state litigando con dettagli troppo piccoli, dovreste ingrandire " "l'immagine risultante con il bottone 'x2', fino a che non avete risolto i " "problemi." #: gtkmorph/loadsave_mesh.c:81 #, c-format msgid "this filename is already used by the mesh of image %d" msgstr "questo nome di file è già usato dalla griglia dell'immagine %d" #: gtkmorph/loadsave_mesh.c:108 gtkmorph/loadsave_mesh.c:362 msgid "" "the attempt to load mesh from file has produced an error\n" "(either this is not a mesh file, or the mesh file is corrupted)" msgstr "" "Il tentatico di caricare il file.mesh ha prodotto un errore\n" "(o questo non è un file contenente una griglia, oppure è danneggiato)" #: gtkmorph/loadsave_mesh.c:195 #, c-format msgid "this mesh was created on image '%s' and not on this image '%s'" msgstr "" "questa griglia è stata creata sull'immagine '%s' e non su questa immagine " "'%s'" #: gtkmorph/loadsave_mesh.c:217 #, c-format msgid "" "the size of the image w=%d h=%d and the size recorded in the mesh w=%d h=" "%d do not match" msgstr "" "la dimensione dell'immagine l=%d a=%d e la dimensione l=%d a=%d " "memorizzata nella griglia non combaciano" #: gtkmorph/loadsave_mesh.c:252 msgid "" "This mesh is automatically generated. You don't want to overwrite another " "mesh with this one!" msgstr "" "Questa griglia è generata automaticamente. Non vorrai sovrascrivere un'altra " "griglia con questa!" #: gtkmorph/loadsave_mesh.c:403 #, c-format msgid "the attempt to load the image file %s has produced error: %s" msgstr "il tentativo di aprire l'immagine '%s' ha prodotto l'errore: '%s'" #: gtkmorph/loadsave_mesh.c:477 msgid "" "gtkmorph could not find libply, so it cannot load PLY surfaces. Read " "documentations to install libply." msgstr "" "gtkmorph non trova la libreria libply, e dunque non può caricare superfici " "PLY. Leggete la documentazione per installare libply." #: gtkmorph/loadsave_mesh.c:481 msgid "error while loading PLY file" msgstr "errore nel caricare il file PLY" #: gtkmorph/loadsave_mesh.c:486 msgid "gtkmorph was NOT compiled with PLY support" msgstr "" "questa versione di GtkMorph non è stata compilata con il supporto per i file " "PLY " #: gtkmorph/loadsave_mesh.c:503 msgid "" "This file already exists! If you really want to overwrite it, delete it." msgstr "Il file esiste già! Se lo volete sovrascrivere, prima cancellatelo." #: gtkmorph/loadsave_mesh.c:531 #, c-format msgid "can't resize %dth image-no filename" msgstr "non posso redimensionare l'immagine %d - il nome del file non c'è" #: gtkmorph/loadsave_mesh.c:546 #, c-format msgid "" "the attempt to reload the image file %s to resize it has produced error: %s" msgstr "il tentativo di riaprire l'immagine '%s' ha prodotto l'errore: '%s'" #: gtkmorph/dialogs.c:65 msgid "info" msgstr "informazione" #: gtkmorph/unused.c:166 #, c-format msgid "" "The image %d has an %ld by %ld mesh while the resulting mesh is %d by %d!\n" "I cant warp it!\n" "I suggest that you add lines so that both meshes are %d by %d" msgstr "" "Questa immagine %d ha una griglia di dimensioni %ld per %ld mentre la " "griglia risultante è %d per %d!\n" "Non si può effettuare un warp!\n" "Ti suggerisco di aggiungere linee a entrambe le griglie fino a che entrambe " "sono %d per %d." #: gtkmorph/loadsave.c:76 msgid "please provide a filename" msgstr "si prega di inserire il nome del file" #: gtkmorph/loadsave.c:103 #, c-format msgid "could not open file '%s' for write: %s" msgstr "non si può aprire il file '%s' in scrittura: '%s'" #: gtkmorph/loadsave.c:229 msgid "can't reload the full session-no more available images" msgstr "" "non si può ricaricare l'intera sessione: non vi sono più immagini disponibili" #: gtkmorph/loadsave.c:286 #, c-format msgid "could not open file '%s' for read: %s" msgstr "non si può aprire il file '%s' in lettura: '%s'" #: gtkmorph/loadsave.c:301 msgid "parsing of session failed at first header!" msgstr "l'analisi del file di sessione è fallita subito all'inizio!" #: gtkmorph/loadsave.c:336 msgid "parsing of session failed" msgstr "l'analisi del file di sessione è fallita" #: gtkmorph/loadsave.c:356 gtkmorph/loadsave.c:379 gtkmorph/loadsave.c:401 #, c-format msgid "the attempt to save the image file %s has produced error: %s" msgstr "il tentativo di salvare l'immagine '%s' ha prodotto l'errore: '%s'" #: gtkmorph/loadsave.c:407 #, c-format msgid "the attempt to close the saved image file %s has produced error: %s" msgstr "" "il tentativo di chiudere l'immagine '%s' salvata ha prodotto l'errore: '%s'" #: gtkmorph/loadsave.c:457 msgid "" " this version of gtkmorph can save images only in .ppm format (to save in " "other formats, compile with GTK2 or higher). Please set the filename " "extension to '.ppm'" msgstr "" "questa versione di GtkMorph può salvare le immagini solo in format .ppm (per " "salvare in altri formati, compilate con GTK2 o superiore). Si prega di usare " "un nome file con estensione '.ppm' ." #: gtkmorph/loadsave.c:479 msgid "please use an allowed image format" msgstr "per favore usate un formato di immagine che sia supportato" #: gtkmorph/loadsave.c:499 #, c-format msgid "" "the filename extension is '%s' but the image was saved in format '%s'. This " "mismatch may prevent you from viewing this image." msgstr "" "il nome del file ha estensione '%s' ma l'immagine è stata salvata in formato " "'%s'. Questa discrepanza può provocare problemi nel visualizzare l'immagine." #: gtkmorph/callbacks_edit.c:88 gtkmorph/callbacks_edit.c:153 msgid "" "you cant edit this mesh - it is automatically generated as an interpolation\n" "of the input images meshes .\n" "(but if you really want to edit, unset 'automatic mesh interpolation')" msgstr "" "non si può modificare questa griglia - è automaticamente generata " "interpolando le immagini di input.\n" "(se veramente vuoi modificarla, deseleziona `interpolazione automatica " "griglie')" #: gtkmorph/callbacks_edit.c:96 gtkmorph/callbacks_edit.c:161 msgid "" "You are currently viewing the warped version of the image\n" "you may not edit this mesh (which refers to the loaded image).\n" "To edit the mesh, select `edit mesh' in the menu (at top center).\n" "I have done it now for you" msgstr "" "State attualmente vedendo la versione 'warp' dell'immagine\n" "questa griglia (che si riferisce alla immagine caricata) non si può " "modificare.\n" "Per editare la griglia, selezionate 'modifica griglia' (in alto al centro).\n" "Il programma lo ha fatto ora per voi." #: gtkmorph/callbacks_main.c:109 #, c-format msgid "the mesh(es) %s were not saved! do you want to exit anyway?" msgstr "le griglie %s non sono state salvate! vuoi uscire lo stesso?" #: gtkmorph/callbacks_main.c:282 msgid "" "to blend the images, the sum of the all `image mixing factors' must be " "nonzero\n" "I have put default values for you" msgstr "" "per dissolvere le immagini, la somma di tutti i coefficienti deve essere non " "nulla. Ho inserito valori di default." #: gtkmorph/callbacks_main.c:476 msgid "gtkmorph was not linked with Waili wavelet library" msgstr "" "gtkmorph non è stato compilato con il supporto per la libreria wavelet " "'Waili'" #: gtkmorph/callbacks_main.c:589 msgid "the input images have different numbers of channels: cannot blend" msgstr "" "Le immagini in imput hanno differente numero di canali: non si può eseguire " "una dissolvenza" #: gtkmorph/callbacks_main.c:838 msgid "" "Loading the example session may ruin your current session. Please properly " "save all meshes and retry." msgstr "" "Caricare la sessione di esempio potrebbe rovinare la vostra sessione " "attuale. Per favore salvate tutte le griglie e riprovate." #: gtkmorph/callbacks_main.c:869 #, c-format msgid "" "The 'example' directory should be in '%s' but is not.\n" "Install the 'gtkmorph-example' debian package." msgstr "" "La directory 'example' dovrebbe essere in '%s' ma non c'è.\n" "Installate il pacchetto Debian 'gtkmorph-example'." #: gtkmorph/callbacks_main.c:872 #, c-format msgid "The 'example' directory should be in '%s' but is not." msgstr "La directory 'example' dovrebbe essere in '%s' ma non c'è." #: gtkmorph/gtk_subimagesel.c:407 msgid "you must load an image before you may choose a subimage" msgstr "devi caricare un'immagine prima di poter selezionare una sottoimmagine" #: gtkmorph/callbacks_fs_mesh.c:70 #, c-format msgid "load mesh for %s" msgstr "carica griglia per %s" #: gtkmorph/callbacks_fs_mesh.c:105 #, c-format msgid "save mesh for %s" msgstr "salva griglia per %s" #: gtkmorph/callbacks_fs_mesh.c:136 gtkmorph/callbacks_fs_mesh.c:163 msgid "save difference to mesh" msgstr "salva la differenza di due griglie" #: gtkmorph/callbacks_fs_mesh.c:186 msgid "load difference mesh" msgstr "carica una griglia differenza" #: glade1/support.c:130 #, c-format msgid "Error loading pixmap file: %s" msgstr "Errore nel caricare il file pixmap: %s" #: glade1/interface.c:167 po/gtkmorph.glade.c:8 msgid "File menu" msgstr "menu file" #: glade1/interface.c:2264 po/gtkmorph.glade.c:167 msgid "" "show animated sequence after saving it all (needs 'animate' command from " "imagemagick)" msgstr "" "mostra la sequenza animata dopo averla salvata\n" "(usa 'animate' , dal pacchetto imagemagick)" #: glade1/interface.c:2318 po/gtkmorph.glade.c:174 msgid " ok " msgstr " ok " #: glade1/interface.c:2332 po/gtkmorph.glade.c:103 po/gtkmorph.glade.c:175 msgid "cancel" msgstr "annulla" #: glade1/interface.c:2345 po/gtkmorph.glade.c:176 msgid "help" msgstr "aiuto" #: po/gtkmorph.glade.c:102 po/gtkmorph.glade.c:189 msgid "OK" msgstr "OK" #: po/gtkmorph.glade.c:190 msgid "Cancel" msgstr "Annulla" #~ msgid "The 'example' directory should be in '%s' but is not" #~ msgstr "la directory 'example' dovrebbe essere in '%s' ma non c'è" #~ msgid "load image" #~ msgstr "apri immagine" #~ msgid "save image n." #~ msgstr "salva immagine n." #~ msgid "in img" #~ msgstr "imm. in" #~ msgid "-More on features" #~ msgstr "muovi un intero insieme" #~ msgid "MMorph" #~ msgstr "MMorph" #~ msgid "to mix images, you must have at least two input images" #~ msgstr "" #~ "per eseguire la miscelazione, ci vogliono due (o pi) immagini di input " #~ msgid "this is the resulting image" #~ msgstr "questa la immagine risultante" #~ msgid "resulting image and resulting mesh" #~ msgstr "immagine risultante e griglia risultante" #~ msgid "view loaded" #~ msgstr "visual. imm. caricata" #~ msgid "" #~ "You have only one input images: all you can do is to warp it;\n" #~ "that is, if you hit the warp button, the 'input image 1' will be warped\n" #~ "from to the 'input mesh' to the 'resulting mesh'. If you want to \n" #~ "morph images, select `add image' in the file menu." #~ msgstr "" #~ "Se presente una sola immagine, la si pu solo deformare. Il 'morph'\n" #~ "si pu eseguire quando si hanno due o pi immagini" #~ msgid "You have two input images: you may morph them to a resulting image." #~ msgstr "Hai due immagini di input: puoi eseguire un morph." #~ msgid "image" #~ msgstr "immagine" #~ msgid " Welcome to GtkMorph" #~ msgstr " Benvenuto a GtkMorph" #~ msgid "" #~ "load the image. You may also load an image in the resulting image window, " #~ "to help in setting a mesh" #~ msgstr "" #~ "carica l'immagine. Si pu anche caricare un'immagine nella finestra\n" #~ "immagine risultante, se serve a posizionare la griglia" #~ msgid "0.0" #~ msgstr "0,0" xmorph-20140707+nmu2/po/en@boldquot.header0000664000000000000000000000247112356325452015121 0ustar # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # xmorph-20140707+nmu2/po/Makefile.in.in0000664000000000000000000003744212356325452014153 0ustar # Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.18 GETTEXT_MACRO_VERSION = 0.18 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = @localedir@ gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, # @install_sh@ does not start with $(SHELL), so we add it. # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. mkinstalldirs = $(SHELL) @install_sh@ -d install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) MSGFMT_ = @MSGFMT@ MSGFMT_no = @MSGFMT@ MSGFMT_yes = @MSGFMT_015@ MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: check-macro-version all-@USE_NLS@ all-yes: stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. check-macro-version: @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ exit 1; \ } # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. # In this case, stamp-po is a nop (i.e. a phony target). # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ echo "touch stamp-po" && \ echo timestamp > stamp-poT && \ mv stamp-poT stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ package_gnu='GNU '; \ else \ package_gnu=''; \ fi; \ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ else \ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_gnu}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ esac; \ }; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir) || exit 1; \ else \ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ esac; \ }; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: # Recreate Makefile by invoking config.status. Explicitly invoke the shell, # because execution permission bits may not work on the current file system. # Use @SHELL@, which is the shell determined by autoconf for the use by its # scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && @SHELL@ ./config.status $(subdir)/$@.in po-directories force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xmorph-20140707+nmu2/po/gtkmorph.glade2.c0000664000000000000000000002206312356324215014622 0ustar /* * File di stringhe traducibile generato da Glade. * Aggiungere questo file al file POTFILE.in del progetto. * NON compilare come parte dell'applicazione. */ gchar *s = N_("gtkmorph"); gchar *s = N_("File"); gchar *s = N_("load session"); gchar *s = N_("save session"); gchar *s = N_("add an image"); gchar *s = N_("load a \"differential mesh\", that is a mesh representing the difference of two meshes"); gchar *s = N_("load a difference"); gchar *s = N_("Quit"); gchar *s = N_("Edit"); gchar *s = N_("show all images"); gchar *s = N_("show mag"); gchar *s = N_("resulting image size..."); gchar *s = N_("show morph factors"); gchar *s = N_("Settings"); gchar *s = N_("Morph"); gchar *s = N_("the mesh of the resulting image is set to an interpolation of the input images' meshes, weighted by the ``mesh factors''"); gchar *s = N_("interpolate meshes"); gchar *s = N_("the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button"); gchar *s = N_("morph images"); gchar *s = N_("adjust points of meshes confronting original images and the morph"); gchar *s = N_("adjust all meshes"); gchar *s = N_("equalize input images so that the subband of wavelet transform have the same energies"); gchar *s = N_("wavelet equalize"); gchar *s = N_("restore morph coefficients..."); gchar *s = N_("start"); gchar *s = N_("end"); gchar *s = N_("equal"); gchar *s = N_("stores internally the state of all mesh and image-blending factors (to make morph sequences)"); gchar *s = N_("store morph coefficients..."); gchar *s = N_("start"); gchar *s = N_("end"); gchar *s = N_("create and save many morphs, equally spaced between the morph start and the morph end (that you have already stored with the above menu)"); gchar *s = N_("morph sequence"); gchar *s = N_("Help"); gchar *s = N_("guide..."); gchar *s = N_("load example session"); gchar *s = N_("help..."); gchar *s = N_("generic help"); gchar *s = N_("warp help"); gchar *s = N_("mesh tips"); gchar *s = N_("morph help"); gchar *s = N_("feature help"); gchar *s = N_("why the beep?"); gchar *s = N_("load the image. This image may not be warped or morphed, but it may help in setting the resulting mesh"); gchar *s = N_("load\n" "image"); gchar *s = N_("load\n" "mesh"); gchar *s = N_("save\n" "mesh"); gchar *s = N_("``edit template'': view the loaded image and edit the mesh on it. \\n ``view morphed'': view the result of morphing. ``v.morph&mesh'' as above but with the mesh. ``edit eyes points'' sets the reference position of the eyes"); gchar *s = N_("edit template"); gchar *s = N_("view morph"); gchar *s = N_("v morph&meshes"); gchar *s = N_("edit eyes points"); gchar *s = N_("settings"); gchar *s = N_("set this mesh to be an interpolation of all other meshes, using ``mesh factors'' as weights"); gchar *s = N_("interpol.\n" "meshes"); gchar *s = N_("mix all the warped images in the ``resulting image'' using ``image blending factors'' as weights"); gchar *s = N_("do\n" "blending"); gchar *s = N_("the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button."); gchar *s = N_("do\n" "morph"); gchar *s = N_("it saves whatever image is currently shown in the window"); gchar *s = N_("save\n" "image"); gchar *s = N_("back to guide"); gchar *s = N_("guide"); gchar *s = N_("add new feature to the end of list"); gchar *s = N_("new"); gchar *s = N_("rename"); gchar *s = N_("pack the selected points in this feature"); gchar *s = N_("pack"); gchar *s = N_("unpack this feature and transforms all points of it to selected points"); gchar *s = N_("unpack"); gchar *s = N_("delete last feature"); gchar *s = N_("delete"); gchar *s = N_("move single point"); gchar *s = N_("edit"); gchar *s = N_("move whole feature"); gchar *s = N_("move"); gchar *s = N_("stretch whole feature"); gchar *s = N_("stretch"); gchar *s = N_("-"); gchar *s = N_("select"); gchar *s = N_("unselect"); gchar *s = N_("assign point to feature"); gchar *s = N_("assign"); gchar *s = N_("error"); gchar *s = N_("width"); gchar *s = N_("height"); gchar *s = N_("x2"); gchar *s = N_("/2"); gchar *s = N_("apply"); gchar *s = N_("resulting image size"); gchar *s = N_("welcome"); gchar *s = N_("error!"); gchar *s = N_("load the selected image"); gchar *s = N_("error!"); gchar *s = N_("load\n" "image"); gchar *s = N_("load\n" "mesh"); gchar *s = N_("save\n" "mesh"); gchar *s = N_("save difference from this mesh to other mesh"); gchar *s = N_("save\n" "diff"); gchar *s = N_("``edit mesh'': view the loaded image and edit the mesh on it. ``view warp'': view the result of warping the loaded image from this mesh to the resulting mesh. ``v. warp&meshes'' as before but with both meshes on. ``choose subimage'' choose which subimage of the loaded image you wish to use. You can also use the 'settings' button to change these settings more finely."); gchar *s = N_("edit mesh"); gchar *s = N_("view warp"); gchar *s = N_("v. warp&meshes"); gchar *s = N_("choose subimage"); gchar *s = N_("settings"); gchar *s = N_("warp this image from this mesh to the resulting mesh, and show the result in this window or an accessory window"); gchar *s = N_("do\n" "warp"); gchar *s = N_("it saves whatever image is currently shown in the window"); gchar *s = N_("save\n" "image"); gchar *s = N_("back to guide"); gchar *s = N_("guide"); gchar *s = N_("error"); gchar *s = N_("these coefficents decide how much this image/mesh will influence the final morph"); gchar *s = N_("image\n" "blending"); gchar *s = N_("mesh\n" "interp."); gchar *s = N_("when you morph the images, or you ``do mixing'', this factor will measure how much this image will show in the mixing in the resulting image"); gchar *s = N_("when you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's mesh"); gchar *s = N_("coefficients"); gchar *s = N_("infer the subimage from the eyes position"); gchar *s = N_("reset"); gchar *s = N_("x coordinate of center"); gchar *s = N_("c x"); gchar *s = N_("y coordinate of center"); gchar *s = N_("c y"); gchar *s = N_("width"); gchar *s = N_("height"); gchar *s = N_("apply"); gchar *s = N_("subimage position"); gchar *s = N_("warning"); gchar *s = N_("ok"); gchar *s = N_("warning!"); gchar *s = N_("warped image"); gchar *s = N_("frame6"); gchar *s = N_("unselect point"); gchar *s = N_("select point"); gchar *s = N_("assign point"); gchar *s = N_("adjust mesh point position w.r.t. previous image"); gchar *s = N_("adjust"); gchar *s = N_("add horizontal line"); gchar *s = N_("add vertical line"); gchar *s = N_("del horizontal line"); gchar *s = N_("del vertical line"); gchar *s = N_("smooth"); gchar *s = N_("gtkmorph movie"); gchar *s = N_("how many frames will be saved; each will be saved in a file"); gchar *s = N_("how many frames"); gchar *s = N_("the files of the frames will be numbered sequentially starting from this number"); gchar *s = N_("number of first file"); gchar *s = N_("file base name"); gchar *s = N_("frame"); gchar *s = N_("creates an animated gif (needs 'convert' from imagemagick) and plays it (needs 'animate' from imagemagick)"); gchar *s = N_("create animated gif"); gchar *s = N_("show animated sequence after saving it all (on some platforms, it may need 'animate' command from imagemagick)"); gchar *s = N_("animate sequence"); gchar *s = N_("resaves and replays animations"); gchar *s = N_("replay"); gchar *s = N_("creates an mpeg file and plays it; will use a parameter file (see help) (needs 'mpeg_encode' and 'mpeg_play')"); gchar *s = N_("creates mpeg"); gchar *s = N_("creates an AVI file in MPEG4 format (needs 'mplayer' and 'mencoder')"); gchar *s = N_("create AVI MPEG4"); gchar *s = N_("animations"); gchar *s = N_("creates and saves all morphs, builds animations"); gchar *s = N_("stops the computation of frames"); gchar *s = N_("gtkmorph guide"); gchar *s = N_("go back to previous guide pane"); gchar *s = N_("prev"); gchar *s = N_("do what is proposed in this pane"); gchar *s = N_("do it"); gchar *s = N_("skip this and go to next guide pane"); gchar *s = N_("next"); gchar *s = N_("question"); gchar *s = N_("Yes"); gchar *s = N_("No"); gchar *s = N_("question?"); gchar *s = N_("Select Color"); gchar *s = N_("window1"); gchar *s = N_("move single point"); gchar *s = N_("edit"); gchar *s = N_("move whole feature"); gchar *s = N_("move"); gchar *s = N_("stretch whole feature"); gchar *s = N_("stretch"); gchar *s = N_("gtkmorph mag"); gchar *s = N_("1"); gchar *s = N_("track"); gchar *s = N_("differential mesh"); gchar *s = N_("mesh\n" "interp."); gchar *s = N_("when you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's mesh"); xmorph-20140707+nmu2/po/gtkmorph.glade.c0000664000000000000000000002055612356304632014546 0ustar /* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("gtkmorph"); gchar *s = N_("File menu"); gchar *s = N_("File"); gchar *s = N_("load session"); gchar *s = N_("save session"); gchar *s = N_("add an image"); gchar *s = N_("Quit"); gchar *s = N_("Edit"); gchar *s = N_("show all images"); gchar *s = N_("show mag"); gchar *s = N_("resulting image size..."); gchar *s = N_("show morph factors"); gchar *s = N_("Settings"); gchar *s = N_("Morph"); gchar *s = N_("the mesh of the resulting image is set to an interpolation of the input images' meshes, weighted by the ``mesh factors''"); gchar *s = N_("interpolate meshes"); gchar *s = N_("the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button"); gchar *s = N_("morph images"); gchar *s = N_("adjust points of meshes confronting original images and the morph"); gchar *s = N_("adjust all meshes"); gchar *s = N_("equalize input images so that the subband of wavelet transform have the same energies"); gchar *s = N_("wavelet equalize"); gchar *s = N_("restore morph coefficients..."); gchar *s = N_("start"); gchar *s = N_("end"); gchar *s = N_("equal"); gchar *s = N_("stores internally the state of all mesh and image-blending factors (to make morph sequences)"); gchar *s = N_("store morph coefficients..."); gchar *s = N_("start"); gchar *s = N_("end"); gchar *s = N_("create and save many morphs, equally spaced between the morph start and the morph end (that you have already stored with the above menu)"); gchar *s = N_("morph sequence"); gchar *s = N_("Help"); gchar *s = N_("guide..."); gchar *s = N_("help..."); gchar *s = N_("generic help"); gchar *s = N_("warp help"); gchar *s = N_("morph help"); gchar *s = N_("why the beep?"); gchar *s = N_("load the image. This image may not be warped or morphed, but it may help in setting the resulting mesh"); gchar *s = N_("load\n" "image"); gchar *s = N_("load\n" "mesh"); gchar *s = N_("save\n" "mesh"); gchar *s = N_("``edit template'': view the loaded image and edit the mesh on it. \\n ``view morphed'': view the result of morphing. ``v.morph&mesh'' as above but with the mesh. ``edit eyes points'' sets the reference position of the eyes"); gchar *s = N_("edit template"); gchar *s = N_("view morph"); gchar *s = N_("v morph&meshes"); gchar *s = N_("edit eyes points"); gchar *s = N_("settings"); gchar *s = N_("set this mesh to be an interpolation of all other meshes, using ``mesh factors'' as weights"); gchar *s = N_("interpol.\n" "meshes"); gchar *s = N_("mix all the warped images in the ``resulting image'' using ``image blending factors'' as weights"); gchar *s = N_("do\n" "blending"); gchar *s = N_("the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button."); gchar *s = N_("do\n" "morph"); gchar *s = N_("it saves whatever image is currently shown in the window"); gchar *s = N_("save\n" "image"); gchar *s = N_("back to guide"); gchar *s = N_("guide"); gchar *s = N_("add new feature to the end of list"); gchar *s = N_("new"); gchar *s = N_("rename"); gchar *s = N_("pack the selected points in this feature"); gchar *s = N_("pack"); gchar *s = N_("unpack this feature and transforms all points of it to selected points"); gchar *s = N_("unpack"); gchar *s = N_("delete last feature"); gchar *s = N_("delete"); gchar *s = N_("move single point"); gchar *s = N_("edit"); gchar *s = N_("move whole feature"); gchar *s = N_("move"); gchar *s = N_("stretch whole feature"); gchar *s = N_("stretch"); gchar *s = N_("-"); gchar *s = N_("select"); gchar *s = N_("unselect"); gchar *s = N_("assign point to feature"); gchar *s = N_("assign"); gchar *s = N_("error"); gchar *s = N_("resulting image size"); gchar *s = N_("width"); gchar *s = N_("height"); gchar *s = N_("x2"); gchar *s = N_("/2"); gchar *s = N_("apply"); gchar *s = N_("error!"); gchar *s = N_("load the selected image"); gchar *s = N_("OK"); gchar *s = N_("cancel"); gchar *s = N_("error!"); gchar *s = N_("load\n" "image"); gchar *s = N_("load\n" "mesh"); gchar *s = N_("save\n" "mesh"); gchar *s = N_("``edit mesh'': view the loaded image and edit the mesh on it. ``view warp'': view the result of warping the loaded image from this mesh to the resulting mesh. ``v. warp&meshes'' as before but with both meshes on. ``choose subimage'' choose which subimage of the loaded image you wish to use. You can also use the 'settings' button to change these settings more finely."); gchar *s = N_("edit mesh"); gchar *s = N_("view warp"); gchar *s = N_("v. warp&meshes"); gchar *s = N_("choose subimage"); gchar *s = N_("settings"); gchar *s = N_("warp this image from this mesh to the resulting mesh, and show the result in this window or an accessory window"); gchar *s = N_("do\n" "warp"); gchar *s = N_("it saves whatever image is currently shown in the window"); gchar *s = N_("save\n" "image"); gchar *s = N_("back to guide"); gchar *s = N_("guide"); gchar *s = N_("error"); gchar *s = N_("these coefficents decide how much this image/mesh will influence the final morph"); gchar *s = N_("coefficients"); gchar *s = N_("image\n" "blending"); gchar *s = N_("mesh\n" "interp."); gchar *s = N_("when you morph the images, or you ``do mixing'', this factor will measure how much this image will show in the mixing in the resulting image"); gchar *s = N_("when you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's mesh"); gchar *s = N_("subimage position"); gchar *s = N_("infer the subimage from the eyes position"); gchar *s = N_("reset"); gchar *s = N_("x coordinate of center"); gchar *s = N_("c x"); gchar *s = N_("y coordinate of center"); gchar *s = N_("c y"); gchar *s = N_("width"); gchar *s = N_("height"); gchar *s = N_("apply"); gchar *s = N_("warning"); gchar *s = N_("ok"); gchar *s = N_("warning!"); gchar *s = N_("warped image"); gchar *s = N_("unselect point"); gchar *s = N_("select point"); gchar *s = N_("assign point"); gchar *s = N_("adjust"); gchar *s = N_("add horizontal line"); gchar *s = N_("add vertical line"); gchar *s = N_("del horizontal line"); gchar *s = N_("del vertical line"); gchar *s = N_("smooth"); gchar *s = N_("gtkmorph movie"); gchar *s = N_("how many frames will be saved; each will be saved in a file"); gchar *s = N_("how many frames"); gchar *s = N_("the files of the frames will be numbered sequentially starting from this number"); gchar *s = N_("number of first file"); gchar *s = N_("file base name"); gchar *s = N_("frame"); gchar *s = N_("animations"); gchar *s = N_("creates an animated gif (needs 'convert' from imagemagick) and plays it (needs 'animate' from imagemagick)"); gchar *s = N_("create animated gif"); gchar *s = N_("show animated sequence after saving it all (needs 'animate' command from imagemagick)"); gchar *s = N_("animate sequence"); gchar *s = N_("resaves and replays animations"); gchar *s = N_("replay"); gchar *s = N_("creates an mpeg file and plays it; will use a parameter file (see help) (needs 'mpeg_encode' and 'mpeg_play')"); gchar *s = N_("creates mpeg"); gchar *s = N_("creates and saves all morphs, builds animations"); gchar *s = N_(" ok "); gchar *s = N_("cancel"); gchar *s = N_("help"); gchar *s = N_("gtkmorph guide"); gchar *s = N_("go back to previous guide pane"); gchar *s = N_("prev"); gchar *s = N_("do what is proposed in this pane"); gchar *s = N_("do it"); gchar *s = N_("skip this and go to next guide pane"); gchar *s = N_("next"); gchar *s = N_("question"); gchar *s = N_("Yes"); gchar *s = N_("No"); gchar *s = N_("question?"); gchar *s = N_("Select Color"); gchar *s = N_("OK"); gchar *s = N_("Cancel"); gchar *s = N_("Help"); gchar *s = N_("window1"); gchar *s = N_("move single point"); gchar *s = N_("edit"); gchar *s = N_("move whole feature"); gchar *s = N_("move"); gchar *s = N_("stretch whole feature"); gchar *s = N_("stretch"); gchar *s = N_("gtkmorph mag"); gchar *s = N_("1"); gchar *s = N_("track"); xmorph-20140707+nmu2/tkmorph/0000775000000000000000000000000012356343462012536 5ustar xmorph-20140707+nmu2/tkmorph/Makefile.in0000664000000000000000000002621212356342010014572 0ustar # Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tkmorph DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac 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@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ 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@ 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@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tkmorph/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tkmorph/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 $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # 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: xmorph-20140707+nmu2/tkmorph/Makefile.am0000664000000000000000000000000012356304631014553 0ustar xmorph-20140707+nmu2/configure.ac0000664000000000000000000002466412356341775013361 0ustar dnl Process this file with autoconf to produce a configure script. dnl################################ dnl : ACGM : this part was generated by glade AC_INIT(xmorph,20090929,mennucc1@debian.org) dnl configure.ac dnl ACGM: the following line tells PRCS (and CVS?) to update the version dnl $Format: "AM_INIT_AUTOMAKE(xmorph, $ProjectVersion$)"$ AM_INIT_AUTOMAKE(xmorph, 20090929) AM_CONFIG_HEADER(config.h) AC_CONFIG_SRCDIR([config.h.in]) dnl libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and dnl libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree. AC_CONFIG_MACRO_DIR([m4]) GETTEXT_PACKAGE=xmorph AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[ the gettext environment ]) # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S dnl AC_PROG_MAKE_SET dnl AC_PROG_RANLIB obsoleted by AC_PROG_LIBTOOL dnl AC_PROG_YACC dnl morph/Makefile.am:13: compiling `main.c' with per-target flags requires AM_PROG_CC_C_O dnl I am not using any of these, but I should dnl AC_HEADER_STDC AC_CHECK_HEADERS([libintl.h locale.h malloc.h memory.h stdlib.h string.h strings.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. dnl AC_HEADER_STDBOOL AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T # Checks for library functions. dnl AC_FUNC_REALLOC AC_FUNC_STAT LDFLAGS='-lm' AC_CHECK_FUNCS([atexit floor getcwd memmove memset sqrt strdup strerror strrchr]) dnl #################### -with-*, AC_ARG_WITH(morph, [ --with-morph compile morph (yes)]) AC_ARG_WITH(xmorph, [ --with-xmorph compile xmorph (auto)]) AC_ARG_WITH(gtk, [ --with-gtk=1,2 use GTK 1 or 2 (auto)]) if ! test "x$with_gtk" = "x1" -o "x$with_gtk" = "x2" -o "x$with_gtk" = "x" ; then AC_ERROR([wrong argument --with-gtk=$with_gtk use 1 or 2]) fi AC_ARG_WITH(gtkmorph, [ --with-gtkmorph compile gtkmorph (auto)]) AC_ARG_WITH(tkmorph, [ --with-tkmorph compile tkmorph (no)]) ######################################################## waili AC_ARG_WITH(waili, [ --with-waili link gtkmorph with Waili wavelet library]) if test "x$with_gtk" = "x1" ; then AC_MSG_WARN([ Sorry, Waili linking code needs newer gtk/glib ]) with_waili=no fi if test "x$with_waili" = x -o "x$with_waili" = xyes ; then AC_LANG_PUSH(C++) dnl AC_CHECK_LIB([waili], [Image(10,10)]) AC_CHECK_HEADERS(waili/Image.h, [ with_waili=yes ], [ if test "x$with_waili" = xyes ; then AC_MSG_ERROR([ The Waili wavelet library was not found ]) exit 1 else AC_MSG_WARN([ Sorry, no Waili was found ]) with_waili=no fi ]) AC_LANG_POP(C++) fi AM_CONDITIONAL(COND_WAILI, test "x$with_waili" != xno ) if test "x$with_waili" != xno ; then AC_DEFINE(HAVE_WAILI, 1,[use code that links to Waili wavelet library] ) else AC_DEFINE(HAVE_WAILI, 0,[use code that links to Waili wavelet library] ) fi ######################################################## fftw AC_ARG_WITH(fftw, [ --with-fftw link gtkmorph with libfftw3 (superfast FFT )]) if test "x$with_fftw" = x -o "x$with_fftw" = xyes ; then AC_CHECK_HEADERS(fftw3.h, [ with_fftw=yes ], [ if test "x$with_fftw" = xyes ; then AC_MSG_ERROR([ The FFTW3 library was not found ]) exit 1 else AC_MSG_WARN([ Sorry, no libfftw was found : FFT will be very slow ]) with_fftw=no fi ]) fi AM_CONDITIONAL(COND_FFTW, test "x$with_fftw" != xno ) if test "x$with_fftw" != xno ; then AC_DEFINE(HAVE_FFTW, 1,[use code that links to fftw3 library] ) else AC_DEFINE(HAVE_FFTW, 0,[use code that links to fftw3 library] ) fi ######################################################## #if test x$target = xi386-cygwin ; then # export CC=i386- #else dnl AC_ISC_POSIX dnl AC_PROG_CC dnl AM_PROG_CC_STDC dnl AC_HEADER_STDC AM_PROG_LIBTOOL dnl Add the languages which your application supports here. ALL_LINGUAS="it fr de" AM_GNU_GETTEXT([external]) dnl Work around stupid definition (note the quotes!!) dnl if test "x${datadir}" = 'x${prefix}/share'; then dnl AC_MSG_WARN([ Work around stupid setting of datadir="'$datadir'" ]) dnl if test "x${prefix}" = "xNONE"; then dnl d="${ac_default_prefix}/share" dnl else dnl d="${prefix}/share" dnl fi dnl else dnl d="${datadir}" dnl fi dnl Set PACKAGE_DATA_DIR in config.h. dnl NO ! use DATADIR "/" PACKAGE dnl where DATADIR is set it in gtkmorph/Makefile.am dnl l=$d/${PACKAGE} dnl AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, $l, [ data dir ]) dnl Set PACKAGE_LOCALE_DIR in config.h. dnl NO ! use LOCALEDIR, and set it in gtkmorph/Makefile.am dnl l=$d/locale dnl AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR,$l , [ locale dir ]) dnl Set PACKAGE_SOURCE_DIR in config.h. dnl packagesrcdir=`cd $srcdir && pwd` dnl AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}", [ source dir ]) dnl Use -Wall if we have gcc. changequote(,)dnl if test "x$GCC" = "xyes"; then LDFLAGS="$LDFLAGS -Wl,--as-needed " case " $CFLAGS " in *[\ \ ]-Wall[\ \ ]*) ;; *) CFLAGS="$CFLAGS -Wall" ;; esac fi changequote([,])dnl #############xmorph dnl see for details in "info autoconf" dnl NO it blocks the 2nd one, cannot use both dnl AC_PATH_X dnl Find additional X libraries, magic flags, etc. dnl in particular, it defines the linker definition "-L///" dnl as @X_LIBS@ dnl see for details in "info autoconf" dnl and in /usr/share/autoconf/acspecific.m4 if test "x$with_xmorph" != xno ; then AC_MSG_CHECKING([libraries needed for xmorph]) #### PATH XTRA AC_PATH_XTRA dnl the Debian extension dnl AC_PATH_XTRA(Xaw,X11/Xaw/MenuButton.h,'MenuButtonWidgetClass a=NULL;') dnl does not work! if test "x$have_x" = "xyes" ; then #### X11/Xaw/MenuButton.h SAVECFLAGS="$CFLAGS" CFLAGS="$CFLAGS $X_CFLAGS" AC_MSG_WARN([ "(Using CFLAGS='"$CFLAGS"' for the following test)" ]) AC_CHECK_HEADER(X11/Xaw/MenuButton.h, [ : ] , [ have_x=no ] ) CFLAGS="$SAVECFLAGS" #### fi fi if test "x$have_x" = "xyes" ; then if test "x$with_xmorph" = x ; then AC_MSG_NOTICE([ Will build xmorph. ]) #force yes with_xmorph=yes fi else #have_x=yes AC_MSG_WARN([ Either you have disabled X support, or you have specified --without-x ]) if test "x$with_xmorph" = xyes ; then AC_MSG_ERROR([ May not build xmorph. ]) exit 1 else with_xmorph=no AC_MSG_WARN([ Will not build xmorph. ]) fi fi #have_x ################### morph if ! test "x$with_morph" = xno ; then echo Will build morph. #force default with_morph=yes fi ################## gtkmorph if test "x$with_gtkmorph" = xno ; then AC_MSG_NOTICE([ gtkmorph will not be compiled ]) else AC_MSG_CHECKING([libraries needed for gtkmorph]) #sanity check test "$gtkmorph_gtk" = "" || exit 1 echo Testing GTK $with_gtk libraries... if test "x$with_gtk" != "x1" -a "$gtkmorph_gtk" = "" ; then pkg_modules="gtk+-2.0 >= 2.0.0" PKG_CHECK_MODULES(GTK, [$pkg_modules], gtkmorph_gtk=gtk2, [if test "x$with_gtk" = "x2" ; then AC_ERROR([ libgtk 2 is not available ]) exit 1 fi;]) else echo Testing for GTK 2 skipped fi AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) if test "x$with_gtk" != "x2" -a "$gtkmorph_gtk" = "" ; then dnl AM_PATH_GTK(1.2.0 , dnl gtkmorph_gtk=gtk1 , dnl [echo Cannot find GTK 1.2: Is gtk-config in path? dnl if test "x$with_gtk" = "x1" ; then dnl AC_ERROR([]) dnl fi dnl ] ) echo sorry, GTK 1.2 building was disabled else echo Testing for GTK 1.2 skipped fi dnl if test "x$gtkmorph_gtk" != xno ; then dnl if echo $GTK_LIBS | grep libart > /dev/null ; then dnl echo libart is a part of this version of gtk dnl else dnl AM_PATH_LIBART(, , dnl echo Cannot find libart: gtkmorph will be less functional dnl #gtkmorph_gtk=no dnl ) dnl fi dnl else dnl echo libart not tested dnl fi if test "$gtkmorph_gtk" = gtk1 ; then if echo $GTK_LIBS $PACKAGE_LIBS | grep gdk.pixbuf > /dev/null ; then echo gdk-pixbuf is a part of this version of gtk GDK_PIXBUF_LIBS="" GDK_PIXBUF_FLAGS="" else dnl NO LONGER AVAILABLE HERE, SORRY : AM_PATH_GDK_PIXBUF 0.9.0, , AC_MSG_ERROR([ Cannot find gdk-pixbuf: gtkmorph may not be compiled ]) gtkmorph_gtk='' fi else AC_MSG_NOTICE([ Testing for gdk-pixbuf skipped. ]) fi if test "$gtkmorph_gtk" = "gtk2" ; then pkg_modules="gthread-2.0" PKG_CHECK_MODULES(GTHREAD, [$pkg_modules] ) else AC_MSG_NOTICE([ Testing for gthreads skipped.]) fi if test "x$gtkmorph_gtk" = x ; then if test "x$with_gtkmorph" = xyes ; then AC_MSG_ERROR([ gtkmorph may not be compiled ]) exit 1 else AC_MSG_WARN([ Not compiling gtkmorph ]) with_gtkmorph=no fi else with_gtkmorph=yes fi fi ## of : if test "x$with_gtkmorph" = xno ; then ##################### tkmorph if test "x$with_tkmorph" = xyes ; then AC_MSG_NOTICE([Will build tkmorph... testing needed libraries...]) #force default with_tkmorph=yes dnl Adds the following arguments to configure: dnl --with-tcl=... dnl Defines the following vars: dnl TCL_BIN_DIR SC_PATH_TCLCONFIG dnl Locate the tkConfig.sh file dnl Defines the following vars: dnl TK_BIN_DIR SC_PATH_TKCONFIG else AC_MSG_NOTICE([ Not compiling tkmorph.]) fi #with tkmorph ################################# dnl automake conditionals AM_CONDITIONAL(COND_MORPH, test "x$with_morph" = xyes ) AM_CONDITIONAL(COND_XMORPH, test "x$with_xmorph" = xyes ) AM_CONDITIONAL(COND_GTKMORPH, test "x$with_gtkmorph" = xyes ) AM_CONDITIONAL(COND_TKMORPH, test "x$with_tkmorph" = xyes ) AM_CONDITIONAL(COND_GTK2, test "x$gtkmorph_gtk" = xgtk2 ) dnl AM_CONDITIONAL(COND_LIBPLY, test "x$with_libply" != xno ) dnl AM_CONDITIONAL(COND_PLYVIEW, test "x$with_plyview" = xyes ) dnl AM_CONDITIONAL(COND_LIBPLY, false ) dnl AM_CONDITIONAL(COND_PLYVIEW, false ) dnl :ACGM: some courtesy message if test "x$with_morph" = xyes ; then AC_MSG_NOTICE([The Makefile will build morph. ]) fi if test "x$with_xmorph" = xyes ; then AC_MSG_NOTICE([The Makefile will build xmorph. ]) fi if test "x$with_gtkmorph" = xyes ; then AC_MSG_NOTICE([The Makefile will build gtkmorph. ]) fi #if test "x$with_plyview" = xyes ; then # AC_MSG_NOTICE([The Makefile will build plyview. #fi if test "x$with_tkmorph" = xyes ; then echo The Makefile will try to build tkmorph. echo We are very sorry but tkmorph is not fully developed now. echo The project will not build properly fi dnl ##################### AC_OUTPUT([ po/Makefile.in Makefile doc/Makefile libmorph/Makefile morph/Makefile xmorph/Makefile gtkmorph/Makefile glade1/Makefile glade2/Makefile tkmorph/Makefile ]) xmorph-20140707+nmu2/aclocal-gtk1.2/0000775000000000000000000000000012356343462013454 5ustar xmorph-20140707+nmu2/aclocal-gtk1.2/gtk.m40000664000000000000000000002013712356304632014502 0ustar # Configure paths for GTK+ # Owen Taylor 97-11-3 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS dnl AC_DEFUN([AM_PATH_GTK], [dnl dnl Get the cflags and libraries from the gtk-config script dnl AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], gtk_config_prefix="$withval", gtk_config_prefix="") AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], , enable_gtktest=yes) for module in . $4 do case "$module" in gthread) gtk_config_args="$gtk_config_args gthread" ;; esac done if test x$gtk_config_exec_prefix != x ; then gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" if test x${GTK_CONFIG+set} != xset ; then GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config fi fi if test x$gtk_config_prefix != x ; then gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" if test x${GTK_CONFIG+set} != xset ; then GTK_CONFIG=$gtk_config_prefix/bin/gtk-config fi fi AC_PATH_PROG(GTK_CONFIG, gtk-config, no) min_gtk_version=ifelse([$1], ,0.99.7,$1) AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) no_gtk="" if test "$GTK_CONFIG" = "no" ; then no_gtk=yes else GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_gtktest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$GTK_LIBS $LIBS" dnl dnl Now check if the installed GTK is sufficiently new. (Also sanity dnl checks the results of gtk-config to some extent dnl rm -f conf.gtktest AC_TRY_RUN([ #include #include #include int main () { int major, minor, micro; char *tmp_version; system ("touch conf.gtktest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = g_strdup("$min_gtk_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_gtk_version"); exit(1); } if ((gtk_major_version != $gtk_config_major_version) || (gtk_minor_version != $gtk_config_minor_version) || (gtk_micro_version != $gtk_config_micro_version)) { printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, gtk_major_version, gtk_minor_version, gtk_micro_version); printf ("*** was found! If gtk-config was correct, then it is best\n"); printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); printf("*** before re-running configure\n"); } #if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) else if ((gtk_major_version != GTK_MAJOR_VERSION) || (gtk_minor_version != GTK_MINOR_VERSION) || (gtk_micro_version != GTK_MICRO_VERSION)) { printf("*** GTK+ header files (version %d.%d.%d) do not match\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", gtk_major_version, gtk_minor_version, gtk_micro_version); } #endif /* defined (GTK_MAJOR_VERSION) ... */ else { if ((gtk_major_version > major) || ((gtk_major_version == major) && (gtk_minor_version > minor)) || ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", gtk_major_version, gtk_minor_version, gtk_micro_version); printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); printf("*** correct copy of gtk-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gtk" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$GTK_CONFIG" = "no" ; then echo "*** The gtk-config script installed by GTK could not be found" echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the GTK_CONFIG environment variable to the" echo "*** full path to gtk-config." else if test -f conf.gtktest ; then : else echo "*** Could not run GTK test program, checking why..." CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" AC_TRY_LINK([ #include #include ], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK or finding the wrong" echo "*** version of GTK. If it is not finding GTK, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" echo "***" echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" echo "*** came with the system with the command" echo "***" echo "*** rpm --erase --nodeps gtk gtk-devel" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GTK was incorrectly installed" echo "*** or that you have moved GTK since it was installed. In the latter case, you" echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GTK_CFLAGS="" GTK_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) rm -f conf.gtktest ]) xmorph-20140707+nmu2/configure0000775000000000000000000245775312356342007013002 0ustar #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for xmorph 20090929. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: mennucc1@debian.org about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='xmorph' PACKAGE_TARNAME='xmorph' PACKAGE_VERSION='20090929' PACKAGE_STRING='xmorph 20090929' PACKAGE_BUGREPORT='mennucc1@debian.org' PACKAGE_URL='' ac_unique_file="config.h.in" # 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" gt_needs= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS COND_GTK2_FALSE COND_GTK2_TRUE COND_TKMORPH_FALSE COND_TKMORPH_TRUE COND_GTKMORPH_FALSE COND_GTKMORPH_TRUE COND_XMORPH_FALSE COND_XMORPH_TRUE COND_MORPH_FALSE COND_MORPH_TRUE GTHREAD_LIBS GTHREAD_CFLAGS GTK_LIBS GTK_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG X_EXTRA_LIBS X_LIBS X_PRE_LIBS X_CFLAGS XMKMF POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL COND_FFTW_FALSE COND_FFTW_TRUE COND_WAILI_FALSE COND_WAILI_TRUE CXXCPP LIBOBJS EGREP GREP LN_S CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX GETTEXT_PACKAGE 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_URL 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 with_morph with_xmorph with_gtk with_gtkmorph with_tkmorph with_waili with_fftw enable_shared enable_static with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock enable_nls enable_rpath with_libiconv_prefix with_libintl_prefix with_x ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS CPP CXXCPP XMKMF PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GTK_CFLAGS GTK_LIBS GTHREAD_CFLAGS GTHREAD_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures xmorph 20090929 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/xmorph] --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 X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of xmorph 20090929:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --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) --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-morph compile morph (yes) --with-xmorph compile xmorph (auto) --with-gtk=1,2 use GTK 1 or 2 (auto) --with-gtkmorph compile gtkmorph (auto) --with-tkmorph compile tkmorph (no) --with-waili link gtkmorph with Waili wavelet library --with-fftw link gtkmorph with libfftw3 (superfast FFT ) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-x use the X Window System Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags CPP C preprocessor CXXCPP C++ preprocessor XMKMF Path to xmkmf, Makefile generator for X Window System PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GTK_CFLAGS C compiler flags for GTK, overriding pkg-config GTK_LIBS linker flags for GTK, overriding pkg-config GTHREAD_CFLAGS C compiler flags for GTHREAD, overriding pkg-config GTHREAD_LIBS linker flags for GTHREAD, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _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 xmorph configure 20090929 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ---------------------------------- ## ## Report this to mennucc1@debian.org ## ## ---------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ---------------------------------- ## ## Report this to mennucc1@debian.org ## ## ---------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link 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 xmorph $as_me 20090929, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi gt_needs="$gt_needs " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( 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_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } 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:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=xmorph VERSION=20090929 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"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' ac_config_headers="$ac_config_headers config.h" GETTEXT_PACKAGE=xmorph cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi if test "x$CC" != xcc; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 $as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. if { ac_try='cc -c conftest.$ac_ext >&5' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # cc works too. : else # cc exists but doesn't like -o. eval ac_cv_prog_cc_${ac_cc}_c_o=no fi fi fi else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h fi # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in libintl.h locale.h malloc.h memory.h stdlib.h string.h strings.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* 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 sort of thing. */ char tx; char *t = &tx; 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 sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; 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 if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # Checks for library functions. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 $as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : $as_echo_n "(cached) " >&6 else rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then if test "$cross_compiling" = yes; then : ac_cv_func_lstat_dereferences_slashed_symlink=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; /* Linux will dereference the symlink and fail, as required by POSIX. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_lstat_dereferences_slashed_symlink=yes else ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else # If the `ln -s' command failed, then we probably don't even # have an lstat function. ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 $as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && cat >>confdefs.h <<_ACEOF #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 _ACEOF if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then case " $LIBOBJS " in *" lstat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5 $as_echo_n "checking whether stat accepts an empty string... " >&6; } if ${ac_cv_func_stat_empty_string_bug+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_stat_empty_string_bug=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; return stat ("", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_stat_empty_string_bug=no else ac_cv_func_stat_empty_string_bug=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5 $as_echo "$ac_cv_func_stat_empty_string_bug" >&6; } if test $ac_cv_func_stat_empty_string_bug = yes; then case " $LIBOBJS " in *" stat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS stat.$ac_objext" ;; esac cat >>confdefs.h <<_ACEOF #define HAVE_STAT_EMPTY_STRING_BUG 1 _ACEOF fi LDFLAGS='-lm' for ac_func in atexit floor getcwd memmove memset sqrt strdup strerror strrchr do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Check whether --with-morph was given. if test "${with_morph+set}" = set; then : withval=$with_morph; fi # Check whether --with-xmorph was given. if test "${with_xmorph+set}" = set; then : withval=$with_xmorph; fi # Check whether --with-gtk was given. if test "${with_gtk+set}" = set; then : withval=$with_gtk; fi if ! test "x$with_gtk" = "x1" -o "x$with_gtk" = "x2" -o "x$with_gtk" = "x" ; then as_fn_error $? "wrong argument --with-gtk=$with_gtk use 1 or 2" "$LINENO" 5 fi # Check whether --with-gtkmorph was given. if test "${with_gtkmorph+set}" = set; then : withval=$with_gtkmorph; fi # Check whether --with-tkmorph was given. if test "${with_tkmorph+set}" = set; then : withval=$with_tkmorph; fi ######################################################## waili # Check whether --with-waili was given. if test "${with_waili+set}" = set; then : withval=$with_waili; fi if test "x$with_gtk" = "x1" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, Waili linking code needs newer gtk/glib " >&5 $as_echo "$as_me: WARNING: Sorry, Waili linking code needs newer gtk/glib " >&2;} with_waili=no fi if test "x$with_waili" = x -o "x$with_waili" = xyes ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu for ac_header in waili/Image.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "waili/Image.h" "ac_cv_header_waili_Image_h" "$ac_includes_default" if test "x$ac_cv_header_waili_Image_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_WAILI_IMAGE_H 1 _ACEOF with_waili=yes else if test "x$with_waili" = xyes ; then as_fn_error $? " The Waili wavelet library was not found " "$LINENO" 5 exit 1 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, no Waili was found " >&5 $as_echo "$as_me: WARNING: Sorry, no Waili was found " >&2;} with_waili=no fi fi done 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 if test "x$with_waili" != xno ; then COND_WAILI_TRUE= COND_WAILI_FALSE='#' else COND_WAILI_TRUE='#' COND_WAILI_FALSE= fi if test "x$with_waili" != xno ; then $as_echo "#define HAVE_WAILI 1" >>confdefs.h else $as_echo "#define HAVE_WAILI 0" >>confdefs.h fi ######################################################## fftw # Check whether --with-fftw was given. if test "${with_fftw+set}" = set; then : withval=$with_fftw; fi if test "x$with_fftw" = x -o "x$with_fftw" = xyes ; then for ac_header in fftw3.h do : ac_fn_c_check_header_mongrel "$LINENO" "fftw3.h" "ac_cv_header_fftw3_h" "$ac_includes_default" if test "x$ac_cv_header_fftw3_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FFTW3_H 1 _ACEOF with_fftw=yes else if test "x$with_fftw" = xyes ; then as_fn_error $? " The FFTW3 library was not found " "$LINENO" 5 exit 1 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, no libfftw was found : FFT will be very slow " >&5 $as_echo "$as_me: WARNING: Sorry, no libfftw was found : FFT will be very slow " >&2;} with_fftw=no fi fi done fi if test "x$with_fftw" != xno ; then COND_FFTW_TRUE= COND_FFTW_FALSE='#' else COND_FFTW_TRUE='#' COND_FFTW_FALSE= fi if test "x$with_fftw" != xno ; then $as_echo "#define HAVE_FFTW 1" >>confdefs.h else $as_echo "#define HAVE_FFTW 0" >>confdefs.h fi ######################################################## #if test x$target = xi386-cygwin ; then # export CC=i386- #else case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$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:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file 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:${as_lineno-$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 "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; 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 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $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:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$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%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$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:${as_lineno-$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:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; 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:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # 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. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) 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:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$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};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /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 lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\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_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$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:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # 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\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$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\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) 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:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test 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 ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 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:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$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" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf # 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; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi 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:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; 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:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test 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= 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' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$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 | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms 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:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test 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:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$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:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$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 ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = 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 *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (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 ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$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=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "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* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "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 $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$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 # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { 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 link_all_deplibs=no 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. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; 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. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # 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. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $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 && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$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 $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) 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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$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:${as_lineno-$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:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` 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; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$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=`func_echo_all "$lib" | $SED '\''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 # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "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' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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;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' ;; netbsdelf*-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 shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$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:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "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:${as_lineno-$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:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "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:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$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 $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$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 $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -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:${as_lineno-$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:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$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:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$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. # 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 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* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` 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_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # 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:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # 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 archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${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 whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= 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. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=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. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${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 hardcode_direct_CXX=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_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= 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_CXX='${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_CXX=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_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${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_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$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 allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # 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_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$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... archive_expsym_cmds_CXX='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 ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_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=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="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_CXX="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}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$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}" archive_expsym_cmds_CXX="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 ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=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 ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$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; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=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 ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${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_CXX='$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_CXX='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++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='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' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$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."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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 archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='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 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=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*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=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. archive_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=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?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$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. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='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 -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$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. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$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 ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$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... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${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 "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken 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. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; 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 postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # 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 postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-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_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-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_CXX='-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 lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; 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_prog_compiler_pic_CXX=-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_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-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_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+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_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-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_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$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=`func_echo_all "$lib" | $SED '\''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 # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "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' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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;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' ;; netbsdelf*-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 shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$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:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != 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, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = 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 fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: ALL_LINGUAS="it fr de" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.18 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$localedir" || localedir='${datadir}/locale' test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # 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 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 $as_echo_n "checking for ld used by GCC... " >&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. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path 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:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 $as_echo_n "checking for 64-bit host... " >&6; } if ${gl_cv_solaris_64bit+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _LP64 sixtyfour bits #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "sixtyfour bits" >/dev/null 2>&1; then : gl_cv_solaris_64bit=yes else gl_cv_solaris_64bit=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 $as_echo "$gl_cv_solaris_64bit" >&6; } if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 $as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFPreferencesCopyAppValue=yes else gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 $as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then $as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 $as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFLocaleCopyCurrent=yes else gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 $as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then $as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if eval \${$gt_func_gnugettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libc=yes" else eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if ${am_cv_func_iconv_works+:} false; then : $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi if test "$cross_compiling" = yes; then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static const char input[] = "\263"; char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) return 1; } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : am_cv_func_iconv_works=yes else am_cv_func_iconv_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LIBS="$am_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if eval \${$gt_func_gnugettext_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libintl=yes" else eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" if test "x$GCC" = "xyes"; then LDFLAGS="$LDFLAGS -Wl,--as-needed " case " $CFLAGS " in *[\ \ ]-Wall[\ \ ]*) ;; *) CFLAGS="$CFLAGS -Wall" ;; esac fi #############xmorph if test "x$with_xmorph" != xno ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking libraries needed for xmorph" >&5 $as_echo_n "checking libraries needed for xmorph... " >&6; } #### PATH XTRA { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then : withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R7/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R7 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R7/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R7 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # We can compile using X headers with no special include directory. ac_x_includes= else for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.i conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. $as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 $as_echo_n "checking whether -R must be followed by a space... " >&6; } ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ac_xsave_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } X_LIBS="$X_LIBS -R $x_libraries" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 $as_echo "neither works" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_c_werror_flag=$ac_xsave_c_werror_flag LIBS=$ac_xsave_LIBS fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dnet_dnet_ntoa=yes else ac_cv_lib_dnet_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dnet_stub_dnet_ntoa=yes else ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" if test "x$ac_cv_func_gethostbyname" = xyes; then : fi if test $ac_cv_func_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } if ${ac_cv_lib_nsl_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_nsl_gethostbyname=yes else ac_cv_lib_nsl_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 $as_echo_n "checking for gethostbyname in -lbsd... " >&6; } if ${ac_cv_lib_bsd_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_bsd_gethostbyname=yes else ac_cv_lib_bsd_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" if test "x$ac_cv_func_connect" = xyes; then : fi if test $ac_cv_func_connect = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 $as_echo_n "checking for connect in -lsocket... " >&6; } if ${ac_cv_lib_socket_connect+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_socket_connect=yes else ac_cv_lib_socket_connect=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 $as_echo "$ac_cv_lib_socket_connect" >&6; } if test "x$ac_cv_lib_socket_connect" = xyes; then : X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" if test "x$ac_cv_func_remove" = xyes; then : fi if test $ac_cv_func_remove = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 $as_echo_n "checking for remove in -lposix... " >&6; } if ${ac_cv_lib_posix_remove+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); int main () { return remove (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_posix_remove=yes else ac_cv_lib_posix_remove=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 $as_echo "$ac_cv_lib_posix_remove" >&6; } if test "x$ac_cv_lib_posix_remove" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" if test "x$ac_cv_func_shmat" = xyes; then : fi if test $ac_cv_func_shmat = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 $as_echo_n "checking for shmat in -lipc... " >&6; } if ${ac_cv_lib_ipc_shmat+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); int main () { return shmat (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ipc_shmat=yes else ac_cv_lib_ipc_shmat=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 $as_echo "$ac_cv_lib_ipc_shmat" >&6; } if test "x$ac_cv_lib_ipc_shmat" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ICE_IceConnectionNumber=yes else ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi if test "x$have_x" = "xyes" ; then #### X11/Xaw/MenuButton.h SAVECFLAGS="$CFLAGS" CFLAGS="$CFLAGS $X_CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"(Using CFLAGS='\"$CFLAGS\"' for the following test)\" " >&5 $as_echo "$as_me: WARNING: \"(Using CFLAGS='\"$CFLAGS\"' for the following test)\" " >&2;} ac_fn_c_check_header_mongrel "$LINENO" "X11/Xaw/MenuButton.h" "ac_cv_header_X11_Xaw_MenuButton_h" "$ac_includes_default" if test "x$ac_cv_header_X11_Xaw_MenuButton_h" = xyes; then : : else have_x=no fi CFLAGS="$SAVECFLAGS" #### fi fi if test "x$have_x" = "xyes" ; then if test "x$with_xmorph" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: Will build xmorph. " >&5 $as_echo "$as_me: Will build xmorph. " >&6;} #force yes with_xmorph=yes fi else #have_x=yes { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Either you have disabled X support, or you have specified --without-x " >&5 $as_echo "$as_me: WARNING: Either you have disabled X support, or you have specified --without-x " >&2;} if test "x$with_xmorph" = xyes ; then as_fn_error $? " May not build xmorph. " "$LINENO" 5 exit 1 else with_xmorph=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Will not build xmorph. " >&5 $as_echo "$as_me: WARNING: Will not build xmorph. " >&2;} fi fi #have_x ################### morph if ! test "x$with_morph" = xno ; then echo Will build morph. #force default with_morph=yes fi ################## gtkmorph if test "x$with_gtkmorph" = xno ; then { $as_echo "$as_me:${as_lineno-$LINENO}: gtkmorph will not be compiled " >&5 $as_echo "$as_me: gtkmorph will not be compiled " >&6;} else { $as_echo "$as_me:${as_lineno-$LINENO}: checking libraries needed for gtkmorph" >&5 $as_echo_n "checking libraries needed for gtkmorph... " >&6; } #sanity check test "$gtkmorph_gtk" = "" || exit 1 echo Testing GTK $with_gtk libraries... if test "x$with_gtk" != "x1" -a "$gtkmorph_gtk" = "" ; then pkg_modules="gtk+-2.0 >= 2.0.0" if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 $as_echo_n "checking for GTK... " >&6; } if test -n "$GTK_CFLAGS"; then pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_modules\""; } >&5 ($PKG_CONFIG --exists --print-errors "$pkg_modules") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "$pkg_modules" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK_LIBS"; then pkg_cv_GTK_LIBS="$GTK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_modules\""; } >&5 ($PKG_CONFIG --exists --print-errors "$pkg_modules") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "$pkg_modules" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$pkg_modules" 2>&1` else GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$pkg_modules" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK_PKG_ERRORS" >&5 if test "x$with_gtk" = "x2" ; then as_fn_error $? " libgtk 2 is not available " "$LINENO" 5 exit 1 fi; elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "x$with_gtk" = "x2" ; then as_fn_error $? " libgtk 2 is not available " "$LINENO" 5 exit 1 fi; else GTK_CFLAGS=$pkg_cv_GTK_CFLAGS GTK_LIBS=$pkg_cv_GTK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } gtkmorph_gtk=gtk2 fi else echo Testing for GTK 2 skipped fi if test "x$with_gtk" != "x2" -a "$gtkmorph_gtk" = "" ; then echo sorry, GTK 1.2 building was disabled else echo Testing for GTK 1.2 skipped fi if test "$gtkmorph_gtk" = gtk1 ; then if echo $GTK_LIBS $PACKAGE_LIBS | grep gdk.pixbuf > /dev/null ; then echo gdk-pixbuf is a part of this version of gtk GDK_PIXBUF_LIBS="" GDK_PIXBUF_FLAGS="" else as_fn_error $? " Cannot find gdk-pixbuf: gtkmorph may not be compiled " "$LINENO" 5 gtkmorph_gtk='' fi else { $as_echo "$as_me:${as_lineno-$LINENO}: Testing for gdk-pixbuf skipped. " >&5 $as_echo "$as_me: Testing for gdk-pixbuf skipped. " >&6;} fi if test "$gtkmorph_gtk" = "gtk2" ; then pkg_modules="gthread-2.0" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5 $as_echo_n "checking for GTHREAD... " >&6; } if test -n "$GTHREAD_CFLAGS"; then pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_modules \""; } >&5 ($PKG_CONFIG --exists --print-errors "$pkg_modules ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "$pkg_modules " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTHREAD_LIBS"; then pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_modules \""; } >&5 ($PKG_CONFIG --exists --print-errors "$pkg_modules ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "$pkg_modules " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$pkg_modules " 2>&1` else GTHREAD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$pkg_modules " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTHREAD_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ($pkg_modules ) were not met: $GTHREAD_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi else { $as_echo "$as_me:${as_lineno-$LINENO}: Testing for gthreads skipped." >&5 $as_echo "$as_me: Testing for gthreads skipped." >&6;} fi if test "x$gtkmorph_gtk" = x ; then if test "x$with_gtkmorph" = xyes ; then as_fn_error $? " gtkmorph may not be compiled " "$LINENO" 5 exit 1 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Not compiling gtkmorph " >&5 $as_echo "$as_me: WARNING: Not compiling gtkmorph " >&2;} with_gtkmorph=no fi else with_gtkmorph=yes fi fi ## of : if test "x$with_gtkmorph" = xno ; then ##################### tkmorph if test "x$with_tkmorph" = xyes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: Will build tkmorph... testing needed libraries..." >&5 $as_echo "$as_me: Will build tkmorph... testing needed libraries..." >&6;} #force default with_tkmorph=yes SC_PATH_TCLCONFIG SC_PATH_TKCONFIG else { $as_echo "$as_me:${as_lineno-$LINENO}: Not compiling tkmorph." >&5 $as_echo "$as_me: Not compiling tkmorph." >&6;} fi #with tkmorph ################################# if test "x$with_morph" = xyes ; then COND_MORPH_TRUE= COND_MORPH_FALSE='#' else COND_MORPH_TRUE='#' COND_MORPH_FALSE= fi if test "x$with_xmorph" = xyes ; then COND_XMORPH_TRUE= COND_XMORPH_FALSE='#' else COND_XMORPH_TRUE='#' COND_XMORPH_FALSE= fi if test "x$with_gtkmorph" = xyes ; then COND_GTKMORPH_TRUE= COND_GTKMORPH_FALSE='#' else COND_GTKMORPH_TRUE='#' COND_GTKMORPH_FALSE= fi if test "x$with_tkmorph" = xyes ; then COND_TKMORPH_TRUE= COND_TKMORPH_FALSE='#' else COND_TKMORPH_TRUE='#' COND_TKMORPH_FALSE= fi if test "x$gtkmorph_gtk" = xgtk2 ; then COND_GTK2_TRUE= COND_GTK2_FALSE='#' else COND_GTK2_TRUE='#' COND_GTK2_FALSE= fi if test "x$with_morph" = xyes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: The Makefile will build morph. " >&5 $as_echo "$as_me: The Makefile will build morph. " >&6;} fi if test "x$with_xmorph" = xyes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: The Makefile will build xmorph. " >&5 $as_echo "$as_me: The Makefile will build xmorph. " >&6;} fi if test "x$with_gtkmorph" = xyes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: The Makefile will build gtkmorph. " >&5 $as_echo "$as_me: The Makefile will build gtkmorph. " >&6;} fi #if test "x$with_plyview" = xyes ; then # AC_MSG_NOTICE([The Makefile will build plyview. #fi if test "x$with_tkmorph" = xyes ; then echo The Makefile will try to build tkmorph. echo We are very sorry but tkmorph is not fully developed now. echo The project will not build properly fi ac_config_files="$ac_config_files po/Makefile.in Makefile doc/Makefile libmorph/Makefile morph/Makefile xmorph/Makefile gtkmorph/Makefile glade1/Makefile glade2/Makefile tkmorph/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${COND_WAILI_TRUE}" && test -z "${COND_WAILI_FALSE}"; then as_fn_error $? "conditional \"COND_WAILI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${COND_FFTW_TRUE}" && test -z "${COND_FFTW_FALSE}"; then as_fn_error $? "conditional \"COND_FFTW\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${COND_MORPH_TRUE}" && test -z "${COND_MORPH_FALSE}"; then as_fn_error $? "conditional \"COND_MORPH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${COND_XMORPH_TRUE}" && test -z "${COND_XMORPH_FALSE}"; then as_fn_error $? "conditional \"COND_XMORPH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${COND_GTKMORPH_TRUE}" && test -z "${COND_GTKMORPH_FALSE}"; then as_fn_error $? "conditional \"COND_GTKMORPH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${COND_TKMORPH_TRUE}" && test -z "${COND_TKMORPH_FALSE}"; then as_fn_error $? "conditional \"COND_TKMORPH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${COND_GTK2_TRUE}" && test -z "${COND_GTK2_FALSE}"; then as_fn_error $? "conditional \"COND_GTK2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by xmorph $as_me 20090929, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ xmorph config.status 20090929 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$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 \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done 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' # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _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 "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "libmorph/Makefile") CONFIG_FILES="$CONFIG_FILES libmorph/Makefile" ;; "morph/Makefile") CONFIG_FILES="$CONFIG_FILES morph/Makefile" ;; "xmorph/Makefile") CONFIG_FILES="$CONFIG_FILES xmorph/Makefile" ;; "gtkmorph/Makefile") CONFIG_FILES="$CONFIG_FILES gtkmorph/Makefile" ;; "glade1/Makefile") CONFIG_FILES="$CONFIG_FILES glade1/Makefile" ;; "glade2/Makefile") CONFIG_FILES="$CONFIG_FILES glade2/Makefile" ;; "tkmorph/Makefile") CONFIG_FILES="$CONFIG_FILES tkmorph/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _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" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # 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; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options 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, 2009, 2010, 2011 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="CXX " # ### 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 # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # 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 # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm 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 # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # 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 # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### 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 '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ 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}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # 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_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # 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_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # 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_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi xmorph-20140707+nmu2/Makefile.conf0000664000000000000000000001120212356304633013427 0ustar # beginning of file Makefile.conf ## ACGM: all configurations that were in "Makefile" ## in the old version of xmorph are now in this file, ## and here we discuss what has been changed ## DEFINES: C precompiler macros ## ----------------------------- # # GIMP: Adds GIMP plugin functionality to xmorph. # Also define NEED_GIMP=1. If this is defined, then you may run # xmorph both as a standalone application, and by adding it to your # ~/.gimp/plug-ins directory (usually via a symlink). From what I # understand, this will not work for tkmorph. See GIMPLIBS, below. # # REAL: Size of a "REAL" used by spline code. # Correct value is "double". Do not change. # # RGBA_MESH_WARP: flag to tell RgbaImage to include mesh-based warping # methods. Do not change. # # RGBA_TK: flag to tell RgbaImage to include Tk Photo image code. # DO NOT DEFINE for xmorph. Only define for tkmorph. # Also change the "all" target if RGBA_TK is changed. # # RED_GREEN_COLOR_BLIND: uses blue instead of red for color of # 'destination' mesh lines and points. # # STRDUP_PROTO_BROKEN: For some versions of GNU C, the string.h # header file has an incorrect prototype for strdup. If you # experience problems compiling, related to the strdup prototype, # then define STRDUP_PROTO_BROKEN. # For tkmorph: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRGBA_TK # For colorblind: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRED_GREEN_COLOR_BLIND # For GIMP plugin: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DGIMP -DNEED_GIMP=1 # Broken GNU C: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DSTRDUP_PROTO_BROKEN # Most systems: #DEFINES=-DREAL=double -DRGBA_MESH_WARP ## acgm: all program specific defines are done in PROG/Makefile.am ## these are the generic defines CFLAGS_CONF = -DREAL=double -DRGBA_MESH_WARP ## XLIBS: X libraries ## ------------------ # # Must have the X libraries: X11, MIT Athena Widgets, X Toolkit, X Misc Utils # # Linux 2.0: must have /usr/X11/lib # or /usr/X11R6/lib explicitly in library search path # # SunOS (pre-Solaris): Might have to use static X libraries because # dynamic X libraries are incomplete. # # Solaris: To link to openwin libraries, add -L/usr/openwin/lib # # IRIX6.2: Need to have -lcvt after -lXt # If you receive an error about an unresolved symbol named # SgCvtCreateConversionContext, you need to include -lcvt. # The cvt library is available in the goldengate.sw.goldengate package # Sun Solaris: #XLIBS=-L/usr/openwin/lib -lXaw -lXmu -lXext -lXt -lX11 # Linux: #XLIBS=-L/usr/X11/lib -lXaw -lXmu -lXext -lXt -lX11 #XLIBS=-L/usr/X11R6/lib -lXaw -lXmu -lXext -lXt -lX11 # SGI IRIX: #XLIBS= -lXaw -lXmu -lXext -lXt -lcvt -lX11 ## ACGM: this is the new autoconf way: ## unfortunately I would say that -lcvt will not be added by default ## for Irix systems.... ## XLIBS= @X_LIBS@ @X_PRE_LIBS@ -lXaw -lXmu -lXext -lXt -lX11 @X_EXTRA_LIBS@ ## GIMPLIBS: GIMP libraries ## ------------------------ # If you have defined -DGIMP in the DEFINES section, then xmorph will # be built to run both as a standalone application and as a GIMP # plugin. Here, you need to specify the appropriate GIMP libraries. # # Comment out this variable if you have not used -DGIMP. #GIMPLIBS=-L/usr/local/lib -lgimp -lglib #GIMPLIBS=-lgimp -lglib ## ACGM : if you do not use the GIMP, you still need to define the ## variable, otherwise Automake will warn you GIMPLIBS= ## NON_GUI_LIBS: libraries which are not part of the GUI ## ----------------------------------------------------- # # Must have the math library (-lm). # # # Linux: Add -ldl if you get link error regarding dlerror, dlopen, or # dlsym # # # FreeBSD: Do not use static libraries, because for some reason they # do not work. # # # SunOS: Use the /usr/lib/debug/malloc.o module if you want to do # memory checking. # Also see the CFLAGS comments about memory checking under SunOS. # # # SGI IRIX: Use -lmalloc to link with their special memory allocation # routines. If you get an error about mallopt being # unresolved, then you will have to link with the libmalloc # shared object. Do this by specifying -lmalloc here. # # -lmalloc_cv has more robust memory checking #NON_GUI_LIBS = -lm #NON_GUI_LIBS = -lm -ldl #NON_GUI_LIBS = -lm /usr/lib/debug/malloc.o #NON_GUI_LIBS = -lm -lmalloc ## ACGM: we surely need this NON_GUI_LIBS = -lm ## LIBS: loader options to link with libraries ## ------------------------------------------- # ### ACGM : the project now ignores this variable # # Read the man page for your linker before sending me email about # problems. # # Apollo w/ Domain/OS, BSD: omit XLIBS #LIBS = $(GIMPLIBS) $(NON_GUI_LIBS) #LIBS = # end of file Makefile.confxmorph-20140707+nmu2/pixmaps/0000775000000000000000000000000012356343462012533 5ustar xmorph-20140707+nmu2/pixmaps/howmany.xpm0000664000000000000000000002674712356304630014755 0ustar /* XPM */ static char * howmany_xpm[] = { "50 50 406 2", " c None", ". c #FFFFFF", "+ c #0686D4", "@ c #0B9AE1", "# c #0577D2", "$ c #023EB3", "% c #0412AB", "& c #0210A2", "* c #0817AC", "= c #052DB7", "- c #0929B6", "; c #020598", "> c #010194", ", c #040194", "' c #04079E", ") c #0B27B6", "! c #0527A4", "~ c #0850C1", "{ c #0460CC", "] c #0B64CF", "^ c #048BDB", "/ c #0690DC", "( c #0774D0", "_ c #0554C7", ": c #0A35BC", "< c #021BA5", "[ c #0453BD", "} c #075FC2", "| c #0120A4", "1 c #091FA6", "2 c #010595", "3 c #02018C", "4 c #03018F", "5 c #020595", "6 c #011098", "7 c #0728A7", "8 c #0627B7", "9 c #0A44C5", "0 c #0796E0", "a c #0566D4", "b c #023CB6", "c c #041CA9", "d c #000989", "e c #0C5CC7", "f c #0380CD", "g c #0572C9", "h c #042BA5", "i c #031A9B", "j c #020194", "k c #000190", "l c #010592", "m c #01069B", "n c #00069A", "o c #030798", "p c #0509A5", "q c #020EA4", "r c #0686D0", "s c #00018C", "t c #030086", "u c #030189", "v c #00119B", "w c #0667CB", "x c #0533A5", "y c #010084", "z c #020282", "A c #020288", "B c #010A98", "C c #0514AE", "D c #010DA2", "E c #02079C", "F c #020399", "G c #27B4EE", "H c #00018A", "I c #04008A", "J c #030199", "K c #0015AB", "L c #0133B3", "M c #0330A4", "N c #080084", "O c #030382", "P c #020285", "Q c #0411A7", "R c #01069F", "S c #000392", "T c #010290", "U c #03008D", "V c #03028F", "W c #0C66C7", "X c #074DC3", "Y c #02019A", "Z c #03039B", "` c #031CB2", " . c #0E36C4", ".. c #0D2FB7", "+. c #032CAA", "@. c #010C97", "#. c #000898", "$. c #000292", "%. c #03008F", "&. c #03008C", "*. c #010089", "=. c #010189", "-. c #02008A", ";. c #01008C", ">. c #000196", ",. c #0E52CE", "'. c #0940C6", "). c #0417A6", "!. c #0428AF", "~. c #0676C9", "{. c #0833B9", "]. c #0217A6", "^. c #01059B", "/. c #020097", "(. c #01009C", "_. c #030099", ":. c #040091", "<. c #020088", "[. c #010086", "}. c #020186", "|. c #030299", "1. c #031AA4", "2. c #032FAD", "3. c #0A2FB5", "4. c #0323A8", "5. c #0E6BCD", "6. c #0125AD", "7. c #0105A0", "8. c #0205A4", "9. c #0205A6", "0. c #01059F", "a. c #01008B", "b. c #071EA7", "c. c #0345BA", "d. c #0846BF", "e. c #0A63D2", "f. c #0A35BE", "g. c #0223A6", "h. c #084CBB", "i. c #0013A5", "j. c #0109A7", "k. c #0323B9", "l. c #0D32C1", "m. c #010A91", "n. c #07028B", "o. c #000088", "p. c #000091", "q. c #0C5DC6", "r. c #1096E4", "s. c #0956C1", "t. c #0219A0", "u. c #010699", "v. c #040398", "w. c #0319A4", "x. c #0728B8", "y. c #041DAE", "z. c #050AA3", "A. c #0219AA", "B. c #092EB8", "C. c #0B29B2", "D. c #08149F", "E. c #06079C", "F. c #04029A", "G. c #010098", "H. c #0733B6", "I. c #0828B3", "J. c #000D94", "K. c #000186", "L. c #020096", "M. c #0207A0", "N. c #071BB2", "O. c #0622B1", "P. c #0A2EB5", "Q. c #0518AD", "R. c #080FA8", "S. c #0111A7", "T. c #011AAD", "U. c #0611A7", "V. c #0735BC", "W. c #0714A5", "X. c #000698", "Y. c #092AAA", "Z. c #010497", "`. c #010195", " + c #02008D", ".+ c #010190", "++ c #020398", "@+ c #02069F", "#+ c #03059F", "$+ c #050DA4", "%+ c #0413A7", "&+ c #01059C", "*+ c #00079C", "=+ c #000FA2", "-+ c #00059B", ";+ c #114BCC", ">+ c #03089C", ",+ c #000499", "'+ c #0F3EB6", ")+ c #010694", "!+ c #020099", "~+ c #020093", "{+ c #00008D", "]+ c #010292", "^+ c #010297", "/+ c #0808A3", "(+ c #0102A0", "_+ c #1043CB", ":+ c #0B48C5", "<+ c #0A34B6", "[+ c #0216A5", "}+ c #0432AE", "|+ c #116BD4", "1+ c #0C3BBD", "2+ c #02029B", "3+ c #081EA8", "4+ c #050290", "5+ c #050195", "6+ c #04009B", "7+ c #010091", "8+ c #00008F", "9+ c #000290", "0+ c #010598", "a+ c #000293", "b+ c #000695", "c+ c #0B20B7", "d+ c #040E99", "e+ c #0B40C0", "f+ c #0E46C3", "g+ c #01019C", "h+ c #020098", "i+ c #020291", "j+ c #0A0B9F", "k+ c #000393", "l+ c #000895", "m+ c #0425B2", "n+ c #031AAA", "o+ c #0410A7", "p+ c #0413A9", "q+ c #0638B9", "r+ c #0609A1", "s+ c #040199", "t+ c #00029A", "u+ c #020198", "v+ c #02069A", "w+ c #0A0FA4", "x+ c #000999", "y+ c #01008D", "z+ c #01018F", "A+ c #010294", "B+ c #04019B", "C+ c #0308A6", "D+ c #0407A7", "E+ c #0515AB", "F+ c #0A1CB2", "G+ c #1223BA", "H+ c #0007A1", "I+ c #0536B7", "J+ c #0730B7", "K+ c #0116A4", "L+ c #0925B3", "M+ c #01008F", "N+ c #030094", "O+ c #02049D", "P+ c #0214AD", "Q+ c #0411AB", "R+ c #000493", "S+ c #000490", "T+ c #010591", "U+ c #000294", "V+ c #0443B7", "W+ c #0251BA", "X+ c #0646B6", "Y+ c #02069C", "Z+ c #000092", "`+ c #060098", " @ c #0523B5", ".@ c #0518AC", "+@ c #010096", "@@ c #02009A", "#@ c #03019A", "$@ c #01089E", "%@ c #0823B4", "&@ c #010B9C", "*@ c #03009C", "=@ c #03089F", "-@ c #030CA2", ";@ c #0415A7", ">@ c #0B1AAA", ",@ c #000397", "'@ c #010298", ")@ c #0105A2", "!@ c #0314AA", "~@ c #040CA1", "{@ c #000094", "]@ c #01059A", "^@ c #000298", "/@ c #0005A1", "(@ c #0621B4", "_@ c #020A9E", ":@ c #000093", "<@ c #0308A3", "[@ c #02019E", "}@ c #00039F", "|@ c #0209A3", "1@ c #0506A3", "2@ c #04039C", "3@ c #072BB8", "4@ c #010A9B", "5@ c #000192", "6@ c #01009B", "7@ c #04009D", "8@ c #02019C", "9@ c #020090", "0@ c #030091", "a@ c #040090", "b@ c #030092", "c@ c #000195", "d@ c #040098", "e@ c #07009A", "f@ c #050099", "g@ c #000599", "h@ c #010299", "i@ c #01019B", "j@ c #00029D", "k@ c #00019E", "l@ c #04019F", "m@ c #0829B7", "n@ c #0818AC", "o@ c #030BA5", "p@ c #0006A3", "q@ c #0205A3", "r@ c #010AA4", "s@ c #051CAD", "t@ c #0229AA", "u@ c #032AB3", "v@ c #061FAE", "w@ c #051DAF", "x@ c #0622B4", "y@ c #0411A9", "z@ c #010B9E", "A@ c #000BA1", "B@ c #0317AB", "C@ c #0229AE", "D@ c #0629B4", "E@ c #00069C", "F@ c #000097", "G@ c #020197", "H@ c #03039C", "I@ c #0220A9", "J@ c #0014A1", "K@ c #0001A1", "L@ c #03069F", "M@ c #00019B", "N@ c #000F9B", "O@ c #00028F", "P@ c #020BA1", "Q@ c #0C1BB1", "R@ c #00049A", "S@ c #00029C", "T@ c #02009C", "U@ c #02099D", "V@ c #01129C", "W@ c #0105A1", "X@ c #0222A7", "Y@ c #010AA1", "Z@ c #03019E", "`@ c #0112A1", " # c #0220A3", ".# c #083DB8", "+# c #116ADB", "@# c #0C67D3", "## c #0245B4", "$# c #0636B8", "%# c #0011A7", "&# c #06009A", "*# c #020091", "=# c #05008B", "-# c #04028A", ";# c #000F92", "># c #0962CE", ",# c #0446B6", "'# c #01149F", ")# c #00049D", "!# c #00028E", "~# c #000387", "{# c #010286", "]# c #030188", "^# c #0C4FC2", "/# c #045DC6", "(# c #0C37BA", "_# c #0930BF", ":# c #02008C", "<# c #010185", "[# c #010284", "}# c #020287", "|# c #0947BB", "1# c #0756C3", "2# c #0532B5", "3# c #010EA6", "4# c #05018A", "5# c #000494", "6# c #0247B8", "7# c #0443C0", "8# c #0415AA", "9# c #00019D", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . + @ # $ % & * = - ; > , ' ) ! ~ { ] . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . 0 a b c d e f g h i j k l m n o p q . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . r s t u v w + x y z A B * C D E ' F . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . G H I J K L ^ M N O P < Q R S T U V . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . W X Y Z ` ...a +.@.#.$.%.&.*.=.-.;.. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . >.,.'.).!.~.{.].^./.(._.:.<.[.z }.*.. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . |.1.2.3.4.5.G 6.7.8.9.0.2 <.N O P a.. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . b.c.d.e.f.g.h.X i.j.k.l...m.n.o.;.p.. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . q.r.s.t.u.v.w.,.x.y.z.A.B.C.D.E.F.G.. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . H.I.J.K.o.L.M.N.O.P.Q.R.S.T.U.V.W.X.. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . Y.Z.`. +a..+++@+#+$+%+&+*+=+-+;+>+,+. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . '+)+!+/.~+{+]+^+/+(+_+:+<+[+}+|+1+2+. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . 3+4+5+6+Y 7+8+9+0+z.+ @ # $ % & * C D E ' F a+b+! ~ { ] . . . . . . . . . . . . . . . . ", ". . . . . . c+d+e+f+g+h+7+{+i+j+^ / ( _ : < Q R S T U V S k+U l+m+n+. . . . . . . . . . . . . . . . ", ". . . . . . o+p+q+r+s+t+t+u+v+w+0 a b c x+$.%.&.*.=.-.;.y+z+A+B+C+D+. . . . . . . . . . . . . . . . ", ". . . . . . E+F+G+H+I+_.J+J K+L+r ].^./.(._.:.<.y z }.*.M+~+N+O+P+Q+. . . . . . . . . . . . . . . . ", ". . . . . . R+S+T+U+V+W+X+Y+e+f+G 6.7.8.9.0.2 <.N O P a.Z+/.`+&+ @.@. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . W X i.j.k. ...m.n.o.;.p.+@@@#@$@%@&@. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . w.,.'.y.z.A.B.C.D.E.F.G.@@*@=@-@;@A+. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . M.N.O.P.Q.R.S.T.U.>@W.X.,@'@)@!@~@{@. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . ++@+#+$+%+&+*+=+-+]@>+,+^@^@/@(@_@:@. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . ]+^+/+(+<@[@}@|@1@B+2@2+t+t+0.3@4@5@. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . 8+9+0+z.6@7@*@(.8@+ @ # $ % & * C D E ' F a+b+! ~ { ] . . . . . . . ", ". . . . . . . . . . . . . . . . 7+{+i+j+9@0@:.a@M+^ / ( _ : < Q R S T U V S k+U l+m+n+. . . . . . . ", ". . . . . . . . . . . . . . . . t+u+v+w+b@Z+c@d@e@0 a b c x+$.%.&.*.=.-.;.y+z+A+B+C+D+. . . . . . . ", ". . . . . . . . . . . . . . . . f@J K+L+g@h@i@j@k@r ].^./.(._.:.<.y z }.*.M+~+N+O+P+Q+. . . . . . . ", ". . . . . . . . . . . . . . . . l@Y+e+f+m@n@o@p@q@G 6.7.8.9.0.2 <.N O P a.Z+/.`+&+ @.@. . . . . . . ", ". . . . . . . . . . . . . . . . r@s@q+t@u@v@w@x@y@W X i.j.k. ...m.n.o.;.p.+@@@#@$@%@&@. . . . . . . ", ". . . . . . . . . . . . . . . . z@^.A@B@I+C@J+D@E@w.,.'.y.z.A.B.C.D.E.F.G.@@*@=@-@;@A+. . . . . . . ", ". . . . . . . . . . . . . . . . F@G@H@I@V+W+X+J@K@M.N.O.P.Q.R.S.T.U.>@W.X.,@'@)@!@~@{@. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . ++@+#+$+%+&+*+=+-+]@>+,+^@^@/@(@_@:@. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . ]+^+/+(+<@[@}@|@1@B+2@2+t+t+0.3@4@5@. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . 8+9+0+z.6@7@*@(.8@L@L@M@M@i@Y+V.N@O@. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . 7+{+i+j+9@0@:.a@M+P@Q@R@S@T@U@;+V@9+. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . t+u+v+w+b@Z+c@d@e@W@_+:+<+X@}+|+1+Y@. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . f@J K+L+g@h@i@j@k@Z@`@ #.#+#@###$#%#. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . l@Y+e+f+m@n@o@p@q@&#*#=#-#;#>#,#'#)#. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . r@s@q+t@u@v@w@x@y@L.!#~#{#]#^#/#(#_#. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . z@^.A@B@I+C@J+D@E@N+:#<#[#}#|#1#2#3#. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . F@G@H@I@V+W+X+J@K@b@.+u 4#5#6#7#8#9#. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; xmorph-20140707+nmu2/pixmaps/hand01.xpm0000664000000000000000000000066012356304630014330 0ustar /* XPM */ static char * hand01_xpm[] = { "16 16 4 1", " c None", ". c #8E085E", "+ c #B18A8A", "@ c #B98B8B", " ", " ... ", " ...+... ", " .@.@.@.. ", " .@.@.@.@. ", " .@.@.@.@. ", " .@.@.@.@. ", " ...@.@.@.@. ", " .@.@@@@@.@. ", " .@.@@@@@@@. ", " .@.@@@@@@@. ", " .@@@@@@@@@. ", " .@@@@@@@@@. ", " .@@@@@@@@. ", " .@@@@@@. ", " ........ "}; xmorph-20140707+nmu2/pixmaps/eraser.xpm0000664000000000000000000000151712356304630014540 0ustar /* XPM */ static char * eraser_xpm[] = { "26 24 5 1", " c None", ". c #000000", "+ c #F8FCF8", "@ c #D8D8D8", "# c #909090", " ", " ", " ", " ", " ", " ", " ", " ", " ........ ", " .++++++.. ", " .++++++.@. ", " .++++++.@@. ", " .++++++.@@.# ", " .++++++.@@.## ", " .++++++.@@.## ", " ........@@.## ", " .@@@@@@.@.## ", " .@@@@@@..## ", " ........## ", " ###### ", " ", " ", " ", " "}; xmorph-20140707+nmu2/pixmaps/cursor_left.xpm0000664000000000000000000000054212356304630015603 0ustar /* XPM */ static char * left_xpm[] = { "11 17 3 1 1 1", " c None", "+ c #000044", ". c #a2adbc", ".. ", ".+. ", ".++. ", ".+++. ", ".++++. ", ".+++++. ", ".++++++. ", ".+++++++. ", ".++++++++. ", ".+++++....+", ".++.++.++++", ".+.+.++. ", "..++.++.+ ", " ++ .++. ", " .++.+ ", " ..++ ", " ++ "}; xmorph-20140707+nmu2/pixmaps/pencil_y.xpm0000664000000000000000000000105312356304630015054 0ustar /* XPM */ static char * pencil_y_xpm[] = { "16 16 12 1", " c None", ". c #727F00", "+ c #ABBF00", "@ c #F7FEBF", "# c #010101", "$ c #FFFFFF", "% c #C3C3C3", "& c #DCDCDC", "* c #808080", "= c #303030", "- c #A0A0A0", "; c #393F00", " .+@+", " .+@++", " .+@+++", " .+@+++.", " .+@+++..", " .+@+++..#", " .+@+++..# ", " .+@+++..# ", " .+@+++..# ", " $$%+++..# ", " $$&%+..# ", " $$&%%*.# ", " $&%%*=# ", " $+%-=# ", " +.;# ", " .; "}; xmorph-20140707+nmu2/pixmaps/pencil.xpm0000664000000000000000000000105112356304630014522 0ustar /* XPM */ static char * pencil_xpm[] = { "16 16 12 1", " c None", ". c #800000", "+ c #C00000", "@ c #FFC0C0", "# c #000000", "$ c #FFFFFF", "% c #C3C3C3", "& c #DCDCDC", "* c #808080", "= c #303030", "- c #A0A0A0", "; c #400000", " .+@+", " .+@++", " .+@+++", " .+@+++.", " .+@+++..", " .+@+++..#", " .+@+++..# ", " .+@+++..# ", " .+@+++..# ", " $$%+++..# ", " $$&%+..# ", " $$&%%*.# ", " $&%%*=# ", " $+%-=# ", " +.;# ", " .; "}; xmorph-20140707+nmu2/pixmaps/example.xpm0000664000000000000000000017677512356304630014735 0ustar /* XPM */ static char * example_xpm[] = { "184 37 3200 2", " c None", ". c #FFFFFF", "+ c #3CA9DC", "@ c #27A0D8", "# c #28A0D8", "$ c #2C9DC8", "% c #2AA0D4", "& c #E8F3F9", "* c #EFF6F9", "= c #F3F8FB", "- c #FDFDFC", "; c #F5F4F4", "> c #F5F5F4", ", c #3EA0B9", "' c #3D6C13", ") c #4C8456", "! c #2DA1D4", "~ c #7EB7D1", "{ c #4998BB", "] c #5299B1", "^ c #518C85", "/ c #4F99B5", "( c #7CB5CE", "_ c #E6E5E3", ": c #8D8A80", "< c #8E8B81", "[ c #8C8A81", "} c #F8F5F2", "| c #F1E9E3", "1 c #439692", "2 c #496908", "3 c #2D500A", "4 c #348D93", "5 c #4A98BA", "6 c #68855A", "7 c #4D6212", "8 c #66835B", "9 c #4F97B4", "0 c #589AB6", "a c #7D9FAA", "b c #7E9FAA", "c c #839C9B", "d c #849C97", "e c #7E9FA9", "f c #A3B0B3", "g c #8D8A7E", "h c #8E897E", "i c #8C8A82", "j c #DAC6B7", "k c #AF8364", "l c #B1DDF1", "m c #34A6DA", "n c #47A0AF", "o c #597C2A", "p c #233907", "q c #284A07", "r c #467245", "s c #3B9DBD", "t c #4A98BB", "u c #5094AB", "v c #657123", "w c #5A6010", "x c #4D5714", "y c #567A5F", "z c #4E98B8", "A c #5396B3", "B c #6B919E", "C c #7B9493", "D c #75743F", "E c #72733A", "F c #7F9084", "G c #6B909C", "H c #6B919F", "I c #99A9AD", "J c #928B7F", "K c #938467", "L c #948669", "M c #908B7E", "N c #8B8981", "O c #28A1D9", "P c #578241", "Q c #2B3F07", "R c #2C5207", "S c #324E0E", "T c #3A620C", "U c #468155", "V c #4E97B4", "W c #71895E", "X c #647F51", "Y c #585D16", "Z c #3E3F0E", "` c #444F0E", " . c #575F25", ".. c #667444", "+. c #5399B3", "@. c #6E929D", "#. c #70929C", "$. c #6A8B92", "%. c #797A58", "&. c #6F6217", "*. c #726319", "=. c #7A6927", "-. c #787959", ";. c #748E90", ">. c #73939A", ",. c #9AABAE", "'. c #8D8A7F", "). c #898479", "!. c #987F5F", "~. c #846939", "{. c #886C3A", "]. c #987D56", "^. c #918471", "/. c #8E877A", "(. c #948B7C", "_. c #8E8B80", ":. c #29A0D7", "<. c #466D28", "[. c #3E5D0B", "}. c #33510B", "|. c #284B04", "1. c #325C08", "2. c #3F773E", "3. c #4595B8", "4. c #448CA6", "5. c #485A15", "6. c #3A450C", "7. c #364012", "8. c #495610", "9. c #4D4E13", "0. c #545D13", "a. c #506113", "b. c #528D96", "c. c #4997B9", "d. c #6A909C", "e. c #647A71", "f. c #716D38", "g. c #6D7557", "h. c #76703D", "i. c #6F5A17", "j. c #5F4A15", "k. c #5E5016", "l. c #6B5B26", "m. c #75652B", "n. c #77826C", "o. c #698E9A", "p. c #9AAAAE", "q. c #8C897F", "r. c #766D5B", "s. c #896E47", "t. c #907758", "u. c #887055", "v. c #8F652D", "w. c #875D1F", "x. c #8A6021", "y. c #8E6426", "z. c #946E41", "A. c #946E39", "B. c #877967", "C. c #8B867A", "D. c #8C8981", "E. c #2BA1D6", "F. c #436527", "G. c #3D5B0C", "H. c #2C4B08", "I. c #356204", "J. c #2E5C08", "K. c #355D14", "L. c #37A0C4", "M. c #4898BB", "N. c #3387AE", "O. c #287EA4", "P. c #445E21", "Q. c #3E510B", "R. c #3D530D", "S. c #404A14", "T. c #48530D", "U. c #4D5E0D", "V. c #4C5D11", "W. c #5A6F43", "X. c #4F93AA", "Y. c #588292", "Z. c #4E6C6B", "`. c #424514", " + c #424312", ".+ c #47451A", "++ c #51481D", "@+ c #665819", "#+ c #6C581A", "$+ c #6E5A1B", "%+ c #6D5F19", "&+ c #726B3C", "*+ c #6C817C", "=+ c #698C96", "-+ c #99A9AC", ";+ c #818079", ">+ c #56544A", ",+ c #4E4221", "'+ c #313011", ")+ c #6E5B36", "!+ c #74592A", "~+ c #815722", "{+ c #7E501F", "]+ c #7E551E", "^+ c #7E5220", "/+ c #8B6024", "(+ c #885E22", "_+ c #89653C", ":+ c #876E51", "<+ c #887864", "[+ c #8B8479", "}+ c #B08262", "|+ c #AF8161", "1+ c #AF8262", "2+ c #AD8061", "3+ c #AE8161", "4+ c #AF8261", "5+ c #AD8161", "6+ c #339DC7", "7+ c #466317", "8+ c #375D08", "9+ c #346305", "0+ c #264908", "a+ c #28460D", "b+ c #447661", "c+ c #29A1D8", "d+ c #4898BA", "e+ c #398BB0", "f+ c #2F84A9", "g+ c #445A31", "h+ c #3E4E13", "i+ c #2E460A", "j+ c #374D0F", "k+ c #43560E", "l+ c #4B5B0D", "m+ c #484F12", "n+ c #495013", "o+ c #545D30", "p+ c #5A93A0", "q+ c #407084", "r+ c #25596E", "s+ c #3D471D", "t+ c #404413", "u+ c #2F390D", "v+ c #343F11", "w+ c #4B461D", "x+ c #615119", "y+ c #6E5F17", "z+ c #6D5F18", "A+ c #695B1B", "B+ c #6E5D24", "C+ c #706742", "D+ c #728077", "E+ c #6D919C", "F+ c #777972", "G+ c #1E353D", "H+ c #3B3820", "I+ c #42381B", "J+ c #322C12", "K+ c #3E351D", "L+ c #4C4024", "M+ c #58451E", "N+ c #815826", "O+ c #865921", "P+ c #8E6122", "Q+ c #8D6122", "R+ c #885E23", "S+ c #885D23", "T+ c #845927", "U+ c #865C2E", "V+ c #90714C", "W+ c #908473", "X+ c #8D897F", "Y+ c #8D8A82", "Z+ c #AE8263", "`+ c #5D3D28", " @ c #764827", ".@ c #9D5F2E", "+@ c #A8622D", "@@ c #A05C2A", "#@ c #A45E2B", "$@ c #975629", "%@ c #A15D2B", "&@ c #AB652E", "*@ c #AF682E", "=@ c #AD652D", "-@ c #AF672E", ";@ c #A55F2B", ">@ c #A15D2C", ",@ c #A86939", "'@ c #AA744C", ")@ c #AE7E5C", "!@ c #2AA1D7", "~@ c #437A69", "{@ c #334B09", "]@ c #3E6307", "^@ c #416908", "/@ c #39600C", "(@ c #1F3909", "_@ c #244609", ":@ c #3B5D13", "<@ c #3B9CC0", "[@ c #3387AD", "}@ c #3D7A85", "|@ c #3D4D17", "1@ c #3B4712", "2@ c #455B14", "3@ c #345309", "4@ c #3A540E", "5@ c #485812", "6@ c #393C0E", "7@ c #3E4510", "8@ c #4B5511", "9@ c #5A6731", "0@ c #5194AB", "a@ c #547E8C", "b@ c #38687B", "c@ c #404C31", "d@ c #4B4D19", "e@ c #45491F", "f@ c #2B390E", "g@ c #374213", "h@ c #454D17", "i@ c #544C16", "j@ c #665B17", "k@ c #5F4718", "l@ c #5F4C18", "m@ c #604F17", "n@ c #6F5E1F", "o@ c #7A785A", "p@ c #6D8E96", "q@ c #7F7E76", "r@ c #344549", "s@ c #42453B", "t@ c #5B4C27", "u@ c #393616", "v@ c #464025", "w@ c #23250F", "x@ c #2D2B13", "y@ c #534728", "z@ c #5B481E", "A@ c #785320", "B@ c #81591F", "C@ c #7F5020", "D@ c #7C501F", "E@ c #784F1E", "F@ c #805620", "G@ c #865A21", "H@ c #8E612C", "I@ c #957652", "J@ c #8E8374", "K@ c #8E8B83", "L@ c #AD8163", "M@ c #4A3428", "N@ c #4C3429", "O@ c #160F0A", "P@ c #724C31", "Q@ c #794C2B", "R@ c #85502C", "S@ c #9C5A2A", "T@ c #9D5928", "U@ c #9E5A29", "V@ c #9D5929", "W@ c #A35D2A", "X@ c #A9632D", "Y@ c #9F5D2A", "Z@ c #A15C2A", "`@ c #9F5A28", " # c #9D592A", ".# c #A16236", "+# c #AB7249", "@# c #AE7D5B", "## c #41969F", "$# c #436114", "%# c #486607", "&# c #486707", "*# c #3E5F08", "=# c #3B600D", "-# c #2E520F", ";# c #27490C", "># c #3A5A0C", ",# c #508668", "'# c #28A0D9", ")# c #42838F", "!# c #374E18", "~# c #445213", "{# c #394A0A", "]# c #4A5D0F", "^# c #415809", "/# c #33490C", "(# c #3E5311", "_# c #485315", ":# c #444814", "<# c #4D5812", "[# c #515712", "}# c #687846", "|# c #4E95B1", "1# c #3D6C7C", "2# c #334B39", "3# c #3F3F1B", "4# c #333B0D", "5# c #403E1C", "6# c #5B5E27", "7# c #3E4B14", "8# c #434B15", "9# c #414A18", "0# c #544F1C", "a# c #5B4919", "b# c #5E4B1A", "c# c #5E5117", "d# c #6B5A19", "e# c #6C581C", "f# c #7D744A", "g# c #6C888D", "h# c #6A909D", "i# c #9BABAE", "j# c #737670", "k# c #16251F", "l# c #615032", "m# c #3E3619", "n# c #2B2A0F", "o# c #514429", "p# c #615533", "q# c #5F542F", "r# c #20250A", "s# c #4F4422", "t# c #4A4021", "u# c #56451F", "v# c #7C5527", "w# c #825722", "x# c #7F5121", "y# c #7E5520", "z# c #81581F", "A# c #82571F", "B# c #815720", "C# c #7E5B36", "D# c #826B51", "E# c #8C7E6D", "F# c #8D8A81", "G# c #4E3727", "H# c #543B2A", "I# c #342419", "J# c #5E422D", "K# c #241910", "L# c #3D2C23", "M# c #553B2D", "N# c #4D301D", "O# c #9C6139", "P# c #9C5C2F", "Q# c #AE652C", "R# c #AD632B", "S# c #AF652C", "T# c #AE642C", "U# c #A45D29", "V# c #975527", "W# c #9E5928", "X# c #9D5A29", "Y# c #A8612B", "Z# c #AD652E", "`# c #AE6B38", " $ c #B27649", ".$ c #447348", "+$ c #456608", "@$ c #446306", "#$ c #4E6F04", "$$ c #3A5406", "%$ c #244606", "&$ c #284A0B", "*$ c #38510F", "=$ c #3E6105", "-$ c #425E18", ";$ c #399EC3", ">$ c #476C54", ",$ c #415610", "'$ c #4C5C0E", ")$ c #40530A", "!$ c #46560E", "~$ c #465B09", "{$ c #3B4B0C", "]$ c #2D420C", "^$ c #384E13", "/$ c #474615", "($ c #585D13", "_$ c #545D0C", ":$ c #50530F", "<$ c #5B6945", "[$ c #5799AC", "}$ c #5B6F5F", "|$ c #454B1A", "1$ c #5A5A20", "2$ c #656322", "3$ c #323E08", "4$ c #464B16", "5$ c #293805", "6$ c #343F0C", "7$ c #313B0E", "8$ c #484B1B", "9$ c #51521C", "0$ c #64501E", "a$ c #6E561D", "b$ c #6D5C17", "c$ c #6A5A15", "d$ c #695417", "e$ c #6A592F", "f$ c #7A7C61", "g$ c #76908F", "h$ c #6D929E", "i$ c #7D796C", "j$ c #463F1F", "k$ c #3B3616", "l$ c #6A582B", "m$ c #705F2E", "n$ c #333111", "o$ c #302F12", "p$ c #403B1A", "q$ c #222609", "r$ c #2A2A0E", "s$ c #2F2C12", "t$ c #4B3F20", "u$ c #463C1C", "v$ c #6A542D", "w$ c #81582A", "x$ c #8B5D24", "y$ c #865B20", "z$ c #845A1E", "A$ c #855A1F", "B$ c #8A5921", "C$ c #936222", "D$ c #976824", "E$ c #92682E", "F$ c #92744F", "G$ c #8F8678", "H$ c #AC8162", "I$ c #1F1610", "J$ c #715038", "K$ c #2E2016", "L$ c #654A30", "M$ c #302518", "N$ c #6A5241", "O$ c #3A2D25", "P$ c #2F221C", "Q$ c #4B3529", "R$ c #51382A", "S$ c #3F2819", "T$ c #825030", "U$ c #89512C", "V$ c #915329", "W$ c #945428", "X$ c #9A5728", "Y$ c #9B5828", "Z$ c #965528", "`$ c #975628", " % c #9A5628", ".% c #935227", "+% c #905227", "@% c #935328", "#% c #9B5E33", "$% c #A66D46", "%% c #AC7B59", "&% c #27A0D9", "*% c #447130", "=% c #416205", "-% c #456703", ";% c #3D5907", ">% c #2E470B", ",% c #2B4909", "'% c #35590C", ")% c #3E630B", "!% c #466B05", "~% c #405C07", "{% c #559375", "]% c #4897BA", "^% c #4B6E4A", "/% c #395007", "(% c #374C08", "_% c #3C5206", ":% c #465B0B", "<% c #3C470F", "[% c #303C0F", "}% c #344C0E", "|% c #2D3F0D", "1% c #374C10", "2% c #586615", "3% c #5D660E", "4% c #5A620E", "5% c #656B0D", "6% c #6A7331", "7% c #5392AA", "8% c #4F624D", "9% c #233405", "0% c #39420D", "a% c #383E0F", "b% c #343F0B", "c% c #4D5217", "d% c #505417", "e% c #464417", "f% c #2A2D10", "g% c #3A4514", "h% c #2C3112", "i% c #42481B", "j% c #57511B", "k% c #72631A", "l% c #726216", "m% c #715F17", "n% c #7A6617", "o% c #7E6917", "p% c #766223", "q% c #777A6C", "r% c #6B919D", "s% c #2E2D11", "t% c #222509", "u% c #463F1A", "v% c #27280D", "w% c #373213", "x% c #26280B", "y% c #584D26", "z% c #5B4C26", "A% c #45391C", "B% c #2C2513", "C% c #544A24", "D% c #2A2811", "E% c #2C2916", "F% c #3A371C", "G% c #4C3F1F", "H% c #82622F", "I% c #895E25", "J% c #875C1F", "K% c #875B21", "L% c #8B5F1F", "M% c #8D6021", "N% c #865820", "O% c #845620", "P% c #8F673A", "Q% c #877765", "R% c #8A8478", "S% c #8D8980", "T% c #4C3728", "U% c #65472F", "V% c #61462E", "W% c #694E32", "X% c #39291E", "Y% c #35281E", "Z% c #765843", "`% c #30231D", " & c #201611", ".& c #432E23", "+& c #32221B", "@& c #312218", "#& c #785134", "$& c #946039", "%& c #995D31", "&& c #AF6731", "*& c #A65F2A", "=& c #9E5A28", "-& c #A55F2A", ";& c #B1672D", ">& c #AD642B", ",& c #A8602B", "'& c #A06133", ")& c #AB7145", "!& c #AD7B57", "~& c #2CA2D8", "{& c #466F24", "]& c #446704", "^& c #436604", "/& c #426406", "(& c #3F5D08", "_& c #2F4B0C", ":& c #375F0A", "<& c #36620B", "[& c #45650B", "}& c #405E08", "|& c #3E5621", "1& c #319FCF", "2& c #3B8EB2", "3& c #3F6C56", "4& c #485A0E", "5& c #495C0C", "6& c #4C600F", "7& c #475A0E", "8& c #3B5209", "9& c #43550E", "0& c #344210", "a& c #395014", "b& c #334D0C", "c& c #3F5913", "d& c #525C12", "e& c #4B4F11", "f& c #58600D", "g& c #505310", "h& c #657E5F", "i& c #4A98B9", "j& c #668D9B", "k& c #45635B", "l& c #505218", "m& c #484F13", "n& c #41490F", "o& c #40490F", "p& c #5E5F22", "q& c #2E3B09", "r& c #3D4411", "s& c #434A14", "t& c #3E4614", "u& c #454822", "v& c #2D3D10", "w& c #364113", "x& c #575A23", "y& c #66591A", "z& c #655118", "A& c #6B5A15", "B& c #715E17", "C& c #6E5B18", "D& c #786627", "E& c #75857D", "F& c #698D99", "G& c #5D6563", "H& c #48432C", "I& c #5A4A23", "J& c #443D18", "K& c #574922", "L& c #6A582F", "M& c #64552D", "N& c #2C2C0E", "O& c #554823", "P& c #463E1B", "Q& c #2B2912", "R& c #5D5233", "S& c #423F23", "T& c #413B1E", "U& c #333317", "V& c #52401F", "W& c #68441A", "X& c #67441A", "Y& c #6B4819", "Z& c #704C19", "`& c #714D1B", " * c #754F1B", ".* c #744C1F", "+* c #76593E", "@* c #726050", "#* c #796B5D", "$* c #8B8478", "%* c #39281D", "&* c #080504", "** c #37261A", "=* c #39281B", "-* c #3B2C1D", ";* c #483223", ">* c #1D140F", ",* c #604636", "'* c #37271D", ")* c #533928", "!* c #432F21", "~* c #34241A", "{* c #503827", "]* c #422E1F", "^* c #412E22", "/* c #37271F", "(* c #4E3729", "_* c #6B452C", ":* c #9B613B", "<* c #A05E2F", "[* c #A05B29", "}* c #A15C29", "|* c #A45E2A", "1* c #A5602B", "2* c #A25E2B", "3* c #A05F31", "4* c #A76C42", "5* c #AE7B56", "6* c #26A0D8", "7* c #4A8C87", "8* c #294D07", "9* c #324E0D", "0* c #375809", "a* c #344F0D", "b* c #2E4D07", "c* c #2F5B03", "d* c #2F5E06", "e* c #30590E", "f* c #33550E", "g* c #3F6107", "h* c #466A05", "i* c #489797", "j* c #478A9F", "k* c #2C4219", "l* c #394F10", "m* c #3D4C15", "n* c #374710", "o* c #3D5011", "p* c #3B4813", "q* c #344C0B", "r* c #3B580E", "s* c #31510D", "t* c #2F4A0E", "u* c #3A450F", "v* c #45520C", "w* c #4A530C", "x* c #4B530C", "y* c #4F561C", "z* c #508793", "A* c #4693B3", "B* c #4896B7", "C* c #4897B9", "D* c #5F8796", "E* c #2F4941", "F* c #353B13", "G* c #4A4D1B", "H* c #545222", "I* c #5C5924", "J* c #384211", "K* c #505120", "L* c #404118", "M* c #4E4B1E", "N* c #373C12", "O* c #364013", "P* c #525B24", "Q* c #3B4918", "R* c #2E3D11", "S* c #484014", "T* c #514612", "U* c #544A11", "V* c #554811", "W* c #554712", "X* c #554612", "Y* c #60593B", "Z* c #607475", "`* c #5D7D87", " = c #698D98", ".= c #9AAAAD", "+= c #61635C", "@= c #2A2815", "#= c #2C2812", "$= c #534822", "%= c #66552D", "&= c #4C4225", "*= c #473C21", "== c #23250D", "-= c #55492A", ";= c #4A3E20", ">= c #473C1E", ",= c #62512B", "'= c #63552B", ")= c #1D230A", "!= c #544E28", "~= c #39391C", "{= c #1E240C", "]= c #483417", "^= c #5F3A14", "/= c #5E3E14", "(= c #603D16", "_= c #613C16", ":= c #5D3915", "<= c #633C14", "[= c #623D13", "}= c #624018", "|= c #6E4F33", "1= c #685A50", "2= c #8B887E", "3= c #533A29", "4= c #593C29", "5= c #60422C", "6= c #533B26", "7= c #241A11", "8= c #583A29", "9= c #38271C", "0= c #7F5C45", "a= c #423023", "b= c #281C14", "c= c #251A12", "d= c #654833", "e= c #4E3724", "f= c #342618", "g= c #57432F", "h= c #594739", "i= c #392B24", "j= c #432F25", "k= c #35261E", "l= c #543A2B", "m= c #743C1F", "n= c #773E1F", "o= c #743D1F", "p= c #753C1F", "q= c #753C1E", "r= c #723C1F", "s= c #773F1F", "t= c #773D1E", "u= c #753E1F", "v= c #793F20", "w= c #26A0D9", "x= c #40725A", "y= c #2E5208", "z= c #31520B", "A= c #37530C", "B= c #39560E", "C= c #3E6408", "D= c #315A06", "E= c #2C5608", "F= c #274C0A", "G= c #2D5406", "H= c #38570D", "I= c #2F480C", "J= c #38622D", "K= c #34A1CC", "L= c #468395", "M= c #344515", "N= c #334A0E", "O= c #2F470D", "P= c #3C5010", "Q= c #32420E", "R= c #2D420B", "S= c #3E5310", "T= c #3B540B", "U= c #32480D", "V= c #2B4B08", "W= c #2E420D", "X= c #394409", "Y= c #42520D", "Z= c #4A5011", "`= c #414710", " - c #424E0A", ".- c #506325", "+- c #4D8B9E", "@- c #4796B8", "#- c #588190", "$- c #464D32", "%- c #383A15", "&- c #3A4414", "*- c #3D4617", "=- c #333815", "-- c #313A0F", ";- c #313613", ">- c #27320C", ",- c #404517", "'- c #4E541A", ")- c #303F0C", "!- c #3D4416", "~- c #1D3305", "{- c #2D370F", "]- c #4C3E0F", "^- c #4E470F", "/- c #534813", "(- c #574714", "_- c #514213", ":- c #56470F", "<- c #524A0F", "[- c #69633C", "}- c #57747F", "|- c #6C6A63", "1- c #413922", "2- c #4D4021", "3- c #2C2C11", "4- c #3E3A1D", "5- c #181E08", "6- c #4B4323", "7- c #21250B", "8- c #483C21", "9- c #141806", "0- c #2C2B11", "a- c #3A3616", "b- c #3A3717", "c- c #343115", "d- c #343018", "e- c #403A1E", "f- c #47401D", "g- c #463012", "h- c #5F3C14", "i- c #553A15", "j- c #5F4117", "k- c #664215", "l- c #643F17", "m- c #674414", "n- c #654414", "o- c #5C3E14", "p- c #634928", "q- c #65574D", "r- c #89867C", "s- c #2C1F17", "t- c #5B3D2B", "u- c #0E0906", "v- c #59402A", "w- c #986D46", "x- c #5D4433", "y- c #76533D", "z- c #3B2B20", "A- c #443124", "B- c #634836", "C- c #5D412C", "D- c #795639", "E- c #4A3622", "F- c #75573A", "G- c #1B140E", "H- c #604936", "I- c #563F31", "J- c #1C1511", "K- c #37251C", "L- c #733719", "M- c #72361A", "N- c #6B351B", "O- c #71371A", "P- c #73391A", "Q- c #6D361A", "R- c #7C3B19", "S- c #783919", "T- c #743719", "U- c #6D351B", "V- c #763B1C", "W- c #34A3CF", "X- c #3B6439", "Y- c #375C0C", "Z- c #366007", "`- c #37520D", " ; c #486414", ".; c #355B09", "+; c #335A09", "@; c #223F07", "#; c #244109", "$; c #2E5409", "%; c #45660C", "&; c #3C5A0E", "*; c #3A6406", "=; c #47835D", "-; c #547B71", ";; c #2A400D", ">; c #2E490C", ",; c #2E4A09", "'; c #344F0C", "); c #424F15", "!; c #475516", "~; c #3A520E", "{; c #304B0B", "]; c #38520F", "^; c #374B0E", "/; c #2F370C", "(; c #3B470D", "_; c #43520F", ":; c #4E570B", "<; c #4A540F", "[; c #47560A", "}; c #3E4E0B", "|; c #527F73", "1; c #4290B2", "2; c #64858C", "3; c #44492E", "4; c #313C11", "5; c #213209", "6; c #2E3B10", "7; c #354211", "8; c #2B390C", "9; c #4D4920", "0; c #393E13", "a; c #4F511C", "b; c #2D3C0C", "c; c #26340B", "d; c #3F4819", "e; c #464E1A", "f; c #3A3610", "g; c #4A3E11", "h; c #4C4412", "i; c #544D12", "j; c #584A11", "k; c #594C13", "l; c #564D0F", "m; c #4F4510", "n; c #585523", "o; c #557079", "p; c #678C99", "q; c #676051", "r; c #22200E", "s; c #302B14", "t; c #151C06", "u; c #3E3B1E", "v; c #3B381D", "w; c #4B4223", "x; c #22250D", "y; c #4A3F21", "z; c #574722", "A; c #524322", "B; c #4B421D", "C; c #343313", "D; c #373415", "E; c #62552E", "F; c #3D3B1A", "G; c #25280D", "H; c #563513", "I; c #633F15", "J; c #674317", "K; c #6A4615", "L; c #674016", "M; c #714815", "N; c #6C4415", "O; c #633D14", "P; c #6B4B20", "Q; c #6B5849", "R; c #878278", "S; c #664735", "T; c #4C3222", "U; c #4B3424", "V; c #3E2D1D", "W; c #271C12", "X; c #473328", "Y; c #0B0706", "Z; c #6D4E3B", "`; c #0F0B08", " > c #503829", ".> c #18100B", "+> c #070503", "@> c #5F422D", "#> c #19120B", "$> c #573F2B", "%> c #34251A", "&> c #17110C", "*> c #6D4F3C", "=> c #36271C", "-> c #4D3424", ";> c #70381A", ">> c #6F371B", ",> c #60311B", "'> c #6C381B", ")> c #72391B", "!> c #73391B", "~> c #753B1B", "{> c #753A1A", "]> c #64331B", "^> c #733B1D", "/> c #3D92A7", "(> c #27450A", "_> c #32590B", ":> c #31570A", "<> c #48680B", "[> c #365608", "}> c #356404", "|> c #3A620B", "1> c #24410D", "2> c #234509", "3> c #3C5E0C", "4> c #416106", "5> c #3D5D0B", "6> c #2D4E09", "7> c #35600E", "8> c #3C8EA2", "9> c #4797BA", "0> c #405F49", "a> c #273A0C", "b> c #2E470F", "c> c #465818", "d> c #31490E", "e> c #42560C", "f> c #36430D", "g> c #475E10", "h> c #466012", "i> c #3A580E", "j> c #3F4D0E", "k> c #3F4410", "l> c #45510D", "m> c #4D580A", "n> c #4E560A", "o> c #4F5A0C", "p> c #46500C", "q> c #46540C", "r> c #475524", "s> c #478CA7", "t> c #5D7A7E", "u> c #222F12", "v> c #3C3E18", "w> c #2D3810", "x> c #474F20", "y> c #4A4C20", "z> c #343F12", "A> c #353F0C", "B> c #524E1C", "C> c #3B4112", "D> c #52581B", "E> c #545A1E", "F> c #50581F", "G> c #2B3C0C", "H> c #544511", "I> c #554412", "J> c #605011", "K> c #5E510F", "L> c #5E4D11", "M> c #615310", "N> c #5B4B10", "O> c #5A4B10", "P> c #594F11", "Q> c #626658", "R> c #648995", "S> c #62625E", "T> c #514834", "U> c #443A1F", "V> c #47391F", "W> c #3B351A", "X> c #2C2D14", "Y> c #453D20", "Z> c #1C2009", "`> c #28290D", " , c #443B1A", "., c #171707", "+, c #67552A", "@, c #68582B", "#, c #6E5C32", "$, c #453F1C", "%, c #4D4522", "&, c #4E4424", "*, c #694315", "=, c #724616", "-, c #714814", ";, c #6B4614", ">, c #6E4915", ",, c #6D4715", "', c #663F14", "), c #694014", "!, c #704715", "~, c #633C16", "{, c #6A4F3A", "], c #848076", "^, c #4E3628", "/, c #38261B", "(, c #312117", "_, c #090604", ":, c #2A1F13", "<, c #513D32", "[, c #443127", "}, c #5C4131", "|, c #140D0A", "1, c #593E2D", "2, c #513726", "3, c #63432E", "4, c #4B3523", "5, c #4D3723", "6, c #3E291D", "7, c #553C2C", "8, c #825E46", "9, c #2A1E16", "0, c #19110B", "a, c #753919", "b, c #7B3D1B", "c, c #793D1B", "d, c #7C3F1B", "e, c #783C1B", "f, c #86421A", "g, c #86431A", "h, c #7D3E1A", "i, c #7C3E1B", "j, c #7A3E1C", "k, c #7C3F1C", "l, c #469EAF", "m, c #2B4612", "n, c #3A5B0C", "o, c #3B5D0A", "p, c #3F5C07", "q, c #3D5A08", "r, c #496C08", "s, c #32560B", "t, c #2A4E0C", "u, c #2E4C10", "v, c #406306", "w, c #466A03", "x, c #436605", "y, c #263E08", "z, c #294C08", "A, c #335F45", "B, c #2BA0D6", "C, c #3C8DB0", "D, c #577A60", "E, c #313E13", "F, c #324310", "G, c #3C510C", "H, c #304906", "I, c #3E5309", "J, c #364609", "K, c #556512", "L, c #495B0D", "M, c #37480D", "N, c #36470D", "O, c #3C420F", "P, c #4C540F", "Q, c #4F5A09", "R, c #515D08", "S, c #49520B", "T, c #35350C", "U, c #3E4D0B", "V, c #373B10", "W, c #48777F", "X, c #69909D", "Y, c #49707D", "Z, c #555D3B", "`, c #323814", " ' c #413F1A", ".' c #25320A", "+' c #3C4413", "@' c #273608", "#' c #323D0A", "$' c #3C3F11", "%' c #4E4F17", "&' c #56591A", "*' c #505319", "=' c #3F4519", "-' c #4D4412", ";' c #574414", ">' c #5D4F0F", ",' c #5C510E", "'' c #5A510E", ")' c #534511", "!' c #483411", "~' c #514710", "{' c #493811", "]' c #535034", "^' c #5E8290", "/' c #9AA9AD", "(' c #8A877E", "_' c #2D3934", ":' c #342E19", "<' c #352F16", "[' c #473C1C", "}' c #483E22", "|' c #39371A", "1' c #4F4726", "2' c #292A0E", "3' c #403A19", "4' c #4A3F1A", "5' c #3E3915", "6' c #403C16", "7' c #4C4220", "8' c #161807", "9' c #514029", "0' c #1C1E0B", "a' c #353116", "b' c #573914", "c' c #654115", "d' c #664314", "e' c #664414", "f' c #5C3F14", "g' c #593C14", "h' c #643E15", "i' c #644216", "j' c #613C15", "k' c #5E3916", "l' c #63472E", "m' c #7F7B72", "n' c #5D4031", "o' c #563B2E", "p' c #3C2A1E", "q' c #533927", "r' c #745334", "s' c #261C15", "t' c #221914", "u' c #110B09", "v' c #2B1D16", "w' c #160F0B", "x' c #5C3E2B", "y' c #0A0705", "z' c #8E6542", "A' c #7A573A", "B' c #70513D", "C' c #6A4A37", "D' c #221812", "E' c #664A37", "F' c #4F3829", "G' c #80401A", "H' c #88441A", "I' c #7E3E1B", "J' c #793C1C", "K' c #783D1C", "L' c #783B1A", "M' c #7C3D1A", "N' c #87431A", "O' c #85421A", "P' c #783C1C", "Q' c #7B3F1D", "R' c #329CC0", "S' c #386229", "T' c #446608", "U' c #406404", "V' c #486B04", "W' c #496705", "X' c #273B07", "Y' c #274907", "Z' c #2D4F0B", "`' c #3D5C0B", " ) c #426605", ".) c #456903", "+) c #406304", "@) c #42620A", "#) c #36550D", "$) c #2E4B12", "%) c #438F97", "&) c #4696B9", "*) c #3C7169", "=) c #394E11", "-) c #3B5111", ";) c #485D10", ">) c #3B5406", ",) c #495D0B", "') c #455A09", ")) c #39480B", "!) c #29310E", "~) c #2D460B", "{) c #34400D", "]) c #424D0E", "^) c #505D0C", "/) c #4E5C08", "() c #4D5A08", "_) c #4C5909", ":) c #515C0B", "<) c #474C10", "[) c #404711", "}) c #485739", "|) c #4B96B4", "1) c #628997", "2) c #374E39", "3) c #2B2E11", "4) c #404716", "5) c #3D4318", "6) c #464F1B", "7) c #474E18", "8) c #2F3D08", "9) c #454C12", "0) c #535518", "a) c #344009", "b) c #383D13", "c) c #25280E", "d) c #2D3511", "e) c #3F4618", "f) c #4A3F11", "g) c #584B11", "h) c #594F0F", "i) c #5B500E", "j) c #544D0F", "k) c #5F5110", "l) c #5B4A13", "m) c #4D3F13", "n) c #52441D", "o) c #637B7F", "p) c #848177", "q) c #45402C", "r) c #393219", "s) c #4D4122", "t) c #2F2F12", "u) c #2F2F15", "v) c #303115", "w) c #2E2E14", "x) c #504524", "y) c #544722", "z) c #393514", "A) c #24270A", "B) c #181E04", "C) c #3B381B", "D) c #292A10", "E) c #4E4323", "F) c #1F220A", "G) c #544427", "H) c #684315", "I) c #644214", "J) c #5F3E15", "K) c #5E3B15", "L) c #643D14", "M) c #663D14", "N) c #623C15", "O) c #5E3B17", "P) c #613E1E", "Q) c #81796D", "R) c #38271D", "S) c #422E23", "T) c #2D1E16", "U) c #61432E", "V) c #3C2A1A", "W) c #433127", "X) c #48342A", "Y) c #584034", "Z) c #2C1E18", "`) c #1A120E", " ! c #452F23", ".! c #724D35", "+! c #37271A", "@! c #2C2015", "#! c #4D392A", "$! c #19110E", "%! c #32251C", "&! c #4B3629", "*! c #281D15", "=! c #412D20", "-! c #71391A", ";! c #65341C", ">! c #64321B", ",! c #763A1B", "'! c #733A1B", ")! c #763B1A", "!! c #6F391D", "~! c #2BA1D7", "{! c #48784D", "]! c #35550D", "^! c #335C08", "/! c #4B6D0E", "(! c #486C03", "_! c #446803", ":! c #3F5F05", "~ c #5D3C15", ",~ c #593916", "'~ c #5B3A18", ")~ c #5C3B16", "!~ c #5D3E15", "~~ c #583D14", "{~ c #543715", "]~ c #5D3C19", "^~ c #7F715E", "/~ c #8E8B82", "(~ c #AD8263", "_~ c #694B34", ":~ c #2A1E14", "<~ c #765638", "[~ c #2A2015", "}~ c #43342B", "|~ c #211814", "1~ c #100B09", "2~ c #5E4134", "3~ c #624435", "4~ c #1D130E", "5~ c #513626", "6~ c #231710", "7~ c #100B07", "8~ c #433225", "9~ c #3F3027", "0~ c #543C2F", "a~ c #3B291F", "b~ c #3E2B20", "c~ c #493223", "d~ c #7A3B19", "e~ c #72371A", "f~ c #71381A", "g~ c #6E351A", "h~ c #7B3B19", "i~ c #6E361A", "j~ c #72391C", "k~ c #2CA1D6", "l~ c #447968", "m~ c #2A4506", "n~ c #2F5608", "o~ c #335F08", "p~ c #3A6011", "q~ c #416605", "r~ c #3E6205", "s~ c #385409", "t~ c #314D07", "u~ c #284906", "v~ c #345C09", "w~ c #34610C", "x~ c #40640B", "y~ c #385709", "z~ c #36510E", "A~ c #37570D", "B~ c #366304", "C~ c #306006", "D~ c #496D0C", "E~ c #4D8C66", "F~ c #4591AF", "G~ c #3B532D", "H~ c #37490F", "I~ c #34500A", "J~ c #3B5912", "K~ c #31510F", "L~ c #304612", "M~ c #33480F", "N~ c #3C4B11", "O~ c #3B4E0E", "P~ c #384613", "Q~ c #354411", "R~ c #284105", "S~ c #2A4905", "T~ c #3D530C", "U~ c #3F4E12", "V~ c #44500D", "W~ c #41480F", "X~ c #414B10", "Y~ c #45530D", "Z~ c #435609", "`~ c #3D5309", " { c #4D5C0F", ".{ c #5E7335", "+{ c #4B98BA", "@{ c #608896", "#{ c #2C3E22", "${ c #504F21", "%{ c #3A4610", "&{ c #2E400B", "*{ c #515C25", "={ c #44501F", "-{ c #363D1A", ";{ c #2C3511", ">{ c #3A3B18", ",{ c #47481A", "'{ c #444617", "){ c #393D17", "!{ c #3A3F18", "~{ c #213107", "{{ c #2D3D0C", "]{ c #363F0B", "^{ c #4C4713", "/{ c #4A4314", "({ c #4F4612", "_{ c #4C3F13", ":{ c #4D4315", "<{ c #524A11", "[{ c #504B0F", "}{ c #4B490F", "|{ c #544C12", "1{ c #635D27", "2{ c #6D909A", "3{ c #5D5740", "4{ c #5E5028", "5{ c #5D5029", "6{ c #252A0E", "7{ c #37331C", "8{ c #4A4227", "9{ c #191C0B", "0{ c #2A2A11", "a{ c #383419", "b{ c #2D2B10", "c{ c #503F22", "d{ c #22250E", "e{ c #504828", "f{ c #282810", "g{ c #292911", "h{ c #5A3F1A", "i{ c #5A3815", "j{ c #593816", "k{ c #5B3916", "l{ c #603F16", "m{ c #604015", "n{ c #5C3C15", "o{ c #5F3F14", "p{ c #5F4015", "q{ c #654215", "r{ c #7F6A4C", "s{ c #AC8163", "t{ c #2A1E17", "u{ c #694A33", "v{ c #5B402B", "w{ c #443120", "x{ c #3B2D1C", "y{ c #5F4734", "z{ c #5D4837", "A{ c #755744", "B{ c #443128", "C{ c #251913", "D{ c #4E3428", "E{ c #4B3327", "F{ c #4C3525", "G{ c #563B27", "H{ c #553E27", "I{ c #231A14", "J{ c #543D30", "K{ c #1F1510", "L{ c #261913", "M{ c #6A351B", "N{ c #67341C", "O{ c #65331C", "P{ c #6A341C", "Q{ c #66321B", "R{ c #67341B", "S{ c #6C351C", "T{ c #6D371C", "U{ c #6B361C", "V{ c #67331C", "W{ c #6A361D", "X{ c #4C9385", "Y{ c #375310", "Z{ c #366005", "`{ c #306104", " ] c #2D5B09", ".] c #27470C", "+] c #2C450E", "@] c #334E0B", "#] c #37530F", "$] c #36590A", "%] c #346204", "&] c #2E5D07", "*] c #294F0B", "=] c #28480C", "-] c #344D0D", ";] c #405C11", ">] c #3A5D0A", ",] c #2C4E08", "'] c #2D5706", ")] c #3A5D10", "!] c #4A7421", "~] c #2FA1D2", "{] c #4B97B7", "]] c #416852", "^] c #405111", "/] c #485C12", "(] c #2E4609", "_] c #34530C", ":] c #3C5119", "<] c #273C0D", "[] c #2E450D", "}] c #32460C", "|] c #3E4A13", "1] c #384A10", "2] c #3C5210", "3] c #2E4907", "4] c #324F0A", "5] c #3B4C0E", "6] c #3C440F", "7] c #424510", "8] c #515914", "9] c #444F0C", "0] c #3E490B", "a] c #3C4D0A", "b] c #424F11", "c] c #536010", "d] c #5296AC", "e] c #5D715E", "f] c #3D3F17", "g] c #575621", "h] c #4F531C", "i] c #494D1D", "j] c #223608", "k] c #434421", "l] c #273110", "m] c #24330A", "n] c #374013", "o] c #343E0E", "p] c #45421A", "q] c #41461A", "r] c #454C1C", "s] c #313C0F", "t] c #23310A", "u] c #4F4C19", "v] c #4B4110", "w] c #4F4013", "x] c #564515", "y] c #574D13", "z] c #534510", "A] c #50430F", "B] c #504913", "C] c #625514", "D] c #708B89", "E] c #88867D", "F] c #2A2D1B", "G] c #161D05", "H] c #2C2E0F", "I] c #46431D", "J] c #3B3719", "K] c #171A0A", "L] c #56482D", "M] c #3A341A", "N] c #423A1B", "O] c #433D1D", "P] c #463E1E", "Q] c #3C3617", "R] c #3B361B", "S] c #39351B", "T] c #3C391B", "U] c #494120", "V] c #633D1A", "W] c #5F3814", "X] c #593C15", "Y] c #613F16", "Z] c #674217", "`] c #5D3F15", " ^ c #694313", ".^ c #674114", "+^ c #633E14", "@^ c #533615", "#^ c #644218", "$^ c #7A623E", "%^ c #433124", "&^ c #291C13", "*^ c #3A291B", "=^ c #583F29", "-^ c #715437", ";^ c #3D2B1E", ">^ c #1B130E", ",^ c #634937", "'^ c #1C140F", ")^ c #2B1E15", "!^ c #291D15", "~^ c #33231A", "{^ c #463022", "]^ c #463021", "^^ c #593F2D", "/^ c #35261F", "(^ c #5B4236", "_^ c #3E2C23", ":^ c #4F3628", "<^ c #6D361C", "[^ c #6F361A", "}^ c #6D361B", "|^ c #6C351B", "1^ c #6E361B", "2^ c #6C361B", "3^ c #6F351A", "4^ c #6F371C", "5^ c #42897A", "6^ c #3E5918", "7^ c #40610C", "8^ c #2E4F07", "9^ c #305D06", "0^ c #27460C", "a^ c #355C08", "b^ c #36520B", "c^ c #436011", "d^ c #385A08", "e^ c #2C5107", "f^ c #284D08", "g^ c #2D5607", "h^ c #3E5D0D", "i^ c #425F0F", "j^ c #376307", "k^ c #376309", "l^ c #243F09", "m^ c #28480E", "n^ c #324E12", "o^ c #3896B6", "p^ c #467E79", "q^ c #3F5013", "r^ c #415113", "s^ c #465B13", "t^ c #465D15", "u^ c #2C450A", "v^ c #25330F", "w^ c #203707", "x^ c #344E0C", "y^ c #37500C", "z^ c #394711", "A^ c #485618", "B^ c #3F5612", "C^ c #294508", "D^ c #32370C", "E^ c #39430B", "F^ c #40520B", "G^ c #50570F", "H^ c #44500C", "I^ c #445809", "J^ c #46560D", "K^ c #384310", "L^ c #41490E", "M^ c #538791", "N^ c #658B96", "O^ c #2C3F1F", "P^ c #2C390B", "Q^ c #3A4012", "R^ c #31410C", "S^ c #4B551A", "T^ c #303812", "U^ c #343819", "V^ c #303714", "W^ c #3C4316", "X^ c #3B4514", "Y^ c #414817", "Z^ c #3C4212", "`^ c #373E15", " / c #384413", "./ c #3B4714", "+/ c #3A4613", "@/ c #524217", "#/ c #4B3B10", "$/ c #4D4510", "%/ c #514811", "&/ c #594911", "*/ c #534B10", "=/ c #554F0E", "-/ c #544912", ";/ c #463710", ">/ c #494115", ",/ c #564B12", "'/ c #6B8079", ")/ c #858278", "!/ c #584A27", "~/ c #3C3615", "{/ c #5F4E25", "]/ c #473F19", "^/ c #25250C", "// c #312D13", "(/ c #5F4E31", "_/ c #272611", ":/ c #1D2108", "( c #2F4411", ",( c #3D5112", "'( c #395010", ")( c #30420C", "!( c #365308", "~( c #415C11", "{( c #414E11", "]( c #373C0E", "^( c #3B4A0C", "/( c #474912", "(( c #4B560B", "_( c #525F0B", ":( c #49550F", "<( c #404C10", "[( c #3C450D", "}( c #434D0D", "|( c #547E71", "1( c #6E8887", "2( c #3F4515", "3( c #2D3A08", "4( c #595320", "5( c #324009", "6( c #394110", "7( c #484B21", "8( c #272F12", "9( c #2C390D", "0( c #4B4D1E", "a( c #444C15", "b( c #3A420F", "c( c #424320", "d( c #34410F", "e( c #444D15", "f( c #444A18", "g( c #4A4110", "h( c #4C4011", "i( c #4E4613", "j( c #514515", "k( c #544412", "l( c #5F5310", "m( c #5F5311", "n( c #554715", "o( c #4F4011", "p( c #554313", "q( c #67756A", "r( c #878274", "s( c #4B4523", "t( c #6F592D", "u( c #1E2208", "v( c #615127", "w( c #6F5A37", "x( c #604E2D", "y( c #322F17", "z( c #61532F", "A( c #564A22", "B( c #4C451C", "C( c #504820", "D( c #373615", "E( c #61522F", "F( c #232011", "G( c #322D15", "H( c #6E4717", "I( c #6E4718", "J( c #764C14", "K( c #724514", "L( c #6C4214", "M( c #704416", "N( c #6D4215", "O( c #674116", "P( c #735535", "Q( c #5F4736", "R( c #7F583F", "S( c #281B13", "T( c #7A5838", "U( c #7D573F", "V( c #644936", "W( c #634835", "X( c #433024", "Y( c #211710", "Z( c #7F5A3E", "`( c #5B412B", " _ c #1F170E", "._ c #614830", "+_ c #513F30", "@_ c #755945", "#_ c #66493A", "$_ c #472F24", "%_ c #6E381B", "&_ c #6E371B", "*_ c #66341B", "=_ c #6E391C", "-_ c #773C1B", ";_ c #783D1B", ">_ c #70391C", ",_ c #68351B", "'_ c #69361C", ")_ c #723B1D", "!_ c #2FA1D4", "~_ c #426A32", "{_ c #3F630A", "]_ c #364F08", "^_ c #3D6706", "/_ c #3B6608", "(_ c #35580D", "__ c #284510", ":_ c #345B0B", "<_ c #35580C", "[_ c #446307", "}_ c #325207", "|_ c #3B6706", "1_ c #3F640D", "2_ c #26470A", "3_ c #28490A", "4_ c #3A5C0E", "5_ c #446012", "6_ c #406109", "7_ c #486A06", "8_ c #254806", "9_ c #284D0B", "0_ c #30490E", "a_ c #355F08", "b_ c #477B56", "c_ c #538F9B", "d_ c #475911", "e_ c #3B5208", "f_ c #4E5A11", "g_ c #455909", "h_ c #34440B", "i_ c #2A420C", "j_ c #3D491A", "k_ c #2F4210", "l_ c #42570F", "m_ c #3A4E09", "n_ c #485614", "o_ c #4F6210", "p_ c #384A0B", "q_ c #32410C", "r_ c #44510D", "s_ c #535B11", "t_ c #4D540F", "u_ c #4D5D09", "v_ c #454F08", "w_ c #3A440B", "x_ c #3E470D", "y_ c #454B10", "z_ c #43540B", "A_ c #4D6E55", "B_ c #577269", "C_ c #494E14", "D_ c #625F1F", "E_ c #4C491A", "F_ c #45451B", "G_ c #504C21", "H_ c #484C1F", "I_ c #4B4A21", "J_ c #3B4412", "K_ c #4F5319", "L_ c #54571A", "M_ c #4C5216", "N_ c #404A10", "O_ c #5F6022", "P_ c #2F3210", "Q_ c #303611", "R_ c #4A3E12", "S_ c #564911", "T_ c #605012", "U_ c #615013", "V_ c #5B4F10", "W_ c #5E530E", "X_ c #53440E", "Y_ c #534410", "Z_ c #554012", "`_ c #564813", " : c #524B10", ".: c #5E6A59", "+: c #8E8A80", "@: c #968468", "#: c #8D7C5F", "$: c #5D5F53", "%: c #73613A", "&: c #64522E", "*: c #2A2A12", "=: c #3F3B1D", "-: c #313015", ";: c #363517", ">: c #26280E", ",: c #171E03", "': c #50461E", "): c #292B0C", "!: c #4B431D", "~: c #26270C", "{: c #564A28", "]: c #312F14", "^: c #453D1C", "/: c #613C14", "(: c #724815", "_: c #6F4715", ":: c #623D16", "<: c #644516", "[: c #5E4115", "}: c #5F3F15", "|: c #5F3C16", "1: c #653E16", "2: c #624115", "3: c #664E30", "4: c #8B887F", "5: c #916C53", "6: c #8A664A", "7: c #876242", "8: c #463327", "9: c #261B14", "0: c #594031", "a: c #17100C", "b: c #483427", "c: c #38271B", "d: c #150F0A", "e: c #654730", "f: c #4A3522", "g: c #77573B", "h: c #271D14", "i: c #271D15", "j: c #543E2E", "k: c #140E0A", "l: c #302117", "m: c #7F3E18", "n: c #89441A", "o: c #80411B", "p: c #7F401B", "q: c #7E401C", "r: c #884319", "s: c #823F19", "t: c #81421D", "u: c #419BB0", "v: c #3F6109", "w: c #406305", "x: c #435F07", "y: c #4F6E06", "z: c #2F4D06", "A: c #285009", "B: c #2A400E", "C: c #3C5F06", "D: c #416006", "E: c #4A6906", "F: c #435E07", "G: c #284B08", "H: c #23430A", "I: c #36590C", "J: c #3A5F0B", "K: c #3D5808", "L: c #3A6205", "M: c #346306", "N: c #2E5108", "O: c #33530C", "P: c #385B0B", "Q: c #3A6009", "R: c #497C47", "S: c #4D8481", "T: c #44590A", "U: c #566611", "V: c #395105", "W: c #414A12", "X: c #3D4F14", "Y: c #404B17", "Z: c #2E440D", "`: c #485D16", " < c #445A0C", ".< c #4A5E0D", "+< c #52640F", "@< c #3E5307", "#< c #353E0F", "$< c #243709", "%< c #35410D", "&< c #474E0F", "*< c #4C540E", "=< c #4E550B", "-< c #42490B", ";< c #4D5F0F", ">< c #45560D", ",< c #3D430D", "'< c #43500D", ")< c #4A590E", "!< c #48560D", "~< c #506F4C", "{< c #4594B7", "]< c #768C83", "^< c #65652B", "/< c #555820", "(< c #2C3B0E", "_< c #696726", ":< c #42431B", "<< c #41441B", "[< c #3C4716", "}< c #2E3D0F", "|< c #384412", "1< c #2B3B05", "2< c #4B5113", "3< c #485013", "4< c #3C450F", "5< c #3D4215", "6< c #30370F", "7< c #3A4413", "8< c #4D3C11", "9< c #5E4E11", "0< c #5E5010", "a< c #524111", "b< c #595112", "c< c #534E13", "d< c #504612", "e< c #514412", "f< c #514511", "g< c #5A5012", "h< c #544B11", "i< c #5A6551", "j< c #8F8779", "k< c #8C7857", "l< c #70613E", "m< c #62593B", "n< c #3E3C21", "o< c #443F1F", "p< c #4B4120", "q< c #4A3F1F", "r< c #4F441F", "s< c #343312", "t< c #483D1B", "u< c #353015", "v< c #6E5D35", "w< c #25260E", "x< c #49350E", "y< c #684313", "z< c #694414", "A< c #624116", "B< c #684213", "C< c #604116", "D< c #654315", "E< c #664C2F", "F< c #8A877D", "G< c #AE8264", "H< c #9F775B", "I< c #6A4F3C", "J< c #745440", "K< c #140F0B", "L< c #674835", "M< c #452E20", "N< c #302016", "O< c #704E34", "P< c #251B11", "Q< c #271A12", "R< c #251A13", "S< c #755540", "T< c #3D2C20", "U< c #422D1F", "V< c #743B1A", "W< c #773B1B", "X< c #6B371C", "Y< c #71391C", "Z< c #723A1B", "`< c #7A3D1B", " [ c #723B1E", ".[ c #439593", "+[ c #446905", "@[ c #476B03", "#[ c #476804", "$[ c #2D3F09", "%[ c #2C5108", "&[ c #2E4B0B", "*[ c #31530B", "=[ c #466B08", "-[ c #456A03", ";[ c #476A03", ">[ c #3F5A07", ",[ c #273D0A", "'[ c #2B4E0A", ")[ c #2F4810", "![ c #3E5F09", "~[ c #3F6206", "{[ c #3C5608", "][ c #4F6F0A", "^[ c #3F5D0D", "/[ c #2E4B0C", "([ c #395F0C", "_[ c #336107", ":[ c #47680F", "<[ c #43640E", "[[ c #4C938A", "}[ c #5D949A", "|[ c #58691F", "1[ c #4A5E0F", "2[ c #364F0A", "3[ c #526517", "4[ c #324011", "5[ c #354A11", "6[ c #354F0D", "7[ c #37540D", "8[ c #38500A", "9[ c #455B0A", "0[ c #3A5305", "a[ c #374D06", "b[ c #455A0E", "c[ c #445612", "d[ c #30400C", "e[ c #4D570C", "f[ c #4B5709", "g[ c #4E5909", "h[ c #576109", "i[ c #474C0C", "j[ c #35410A", "k[ c #3F490C", "l[ c #47540C", "m[ c #44560F", "n[ c #4F5A0E", "o[ c #4E5914", "p[ c #598D8E", "q[ c #6C919D", "r[ c #778E87", "s[ c #708C8D", "t[ c #628180", "u[ c #615E34", "v[ c #4E4F22", "w[ c #25360A", "x[ c #414C19", "y[ c #2C3E0D", "z[ c #4A4F1E", "A[ c #3A4311", "B[ c #2E3C08", "C[ c #353C0D", "D[ c #4C4F1D", "E[ c #414617", "F[ c #343D12", "G[ c #34380A", "H[ c #5C4F0E", "I[ c #594F0E", "J[ c #5D520F", "K[ c #5A4A10", "L[ c #453B0F", "M[ c #4C3D10", "N[ c #584C0E", "O[ c #564C14", "P[ c #5C572F", "Q[ c #6D9099", "R[ c #908A7E", "S[ c #8E8A7F", "T[ c #8F897C", "U[ c #8B7F69", "V[ c #665937", "W[ c #5F4F2B", "X[ c #21210D", "Y[ c #7D6236", "Z[ c #574928", "`[ c #6D5731", " } c #493E22", ".} c #3B371B", "+} c #504826", "@} c #574118", "#} c #6A4413", "$} c #624113", "%} c #5D3815", "&} c #5D3B15", "*} c #603D14", "=} c #5E3F14", "-} c #613F17", ";} c #644319", ">} c #8D8576", ",} c #A57B5E", "'} c #86634B", ")} c #5B4231", "!} c #724E37", "~} c #100C07", "{} c #825D3D", "]} c #684B32", "^} c #815A43", "/} c #7F5942", "(} c #59402F", "_} c #5F4533", ":} c #7B3B18", "<} c #70381B", "[} c #763B1B", "}} c #69331A", "|} c #7A3A1A", "1} c #7C3C19", "2} c #753A1B", "3} c #723A1D", "4} c #499899", "5} c #4B6C0A", "6} c #446903", "7} c #3D6606", "8} c #2A440B", "9} c #375B0D", "0} c #325E06", "a} c #476910", "b} c #3E5F05", "c} c #436508", "d} c #33540C", "e} c #3A5B0B", "f} c #436705", "g} c #4A6C03", "h} c #354908", "i} c #264706", "j} c #2B4B06", "k} c #2E5D05", "l} c #325E0C", "m} c #35580E", "n} c #476A04", "o} c #557626", "p} c #2BA1D8", "q} c #5C949C", "r} c #579099", "s} c #4F8B91", "t} c #4E5C24", "u} c #3F5116", "v} c #324F0C", "w} c #34520F", "x} c #3C5513", "y} c #3E5215", "z} c #3E520F", "A} c #3D520C", "B} c #455510", "C} c #4D5E19", "D} c #354811", "E} c #334E0D", "F} c #495C0E", "G} c #535F07", "H} c #4E5B08", "I} c #464D0B", "J} c #3E440E", "K} c #3B450C", "L} c #405309", "M} c #3C520B", "N} c #3A4810", "O} c #414E0E", "P} c #4E5B09", "Q} c #597859", "R} c #759092", "S} c #798466", "T} c #78846C", "U} c #74887E", "V} c #647256", "W} c #474E1D", "X} c #4C4D1D", "Y} c #2E3411", "Z} c #5C5724", "`} c #5C5B22", " | c #655E27", ".| c #41451A", "+| c #4D541F", "@| c #414915", "#| c #5A500D", "$| c #5A4F0E", "%| c #55490F", "&| c #4F3F12", "*| c #4F4611", "=| c #4E4211", "-| c #4D490F", ";| c #4C4811", ">| c #524911", ",| c #574E0F", "'| c #708783", ")| c #94897A", "!| c #957E62", "~| c #89724E", "{| c #846B41", "]| c #775F3D", "^| c #503D22", "/| c #886A43", "(| c #21220D", "_| c #474021", ":| c #4E3F19", "<| c #614114", "[| c #5B3E15", "}| c #5B3D15", "|| c #5C3C17", "1| c #553716", "2| c #593D16", "3| c #5C3D16", "4| c #5B3C16", "5| c #5C3E15", "6| c #604016", "7| c #898072", "8| c #A97F60", "9| c #82614A", "0| c #916A4B", "a| c #78573D", "b| c #2C2018", "c| c #412F23", "d| c #36261D", "e| c #3A291D", "f| c #71371B", "g| c #6F361B", "h| c #70361A", "i| c #70371B", "j| c #70371A", "k| c #6F381C", "l| c #2EA1D3", "m| c #4D886C", "n| c #467A48", "o| c #4D7E48", "p| c #42630E", "q| c #34530D", "r| c #2E5905", "s| c #316008", "t| c #365C10", "u| c #39590B", "v| c #3A5C08", "w| c #46680A", "x| c #3C5611", "y| c #3B620C", "z| c #38620A", "A| c #436703", "B| c #446606", "C| c #41620D", "D| c #35560D", "E| c #2F5A08", "F| c #2A510B", "G| c #2E5105", "H| c #517931", "I| c #2AA1DA", "J| c #599099", "K| c #5B7E5C", "L| c #5C8E88", "M| c #5A959F", "N| c #587959", "O| c #465716", "P| c #32420F", "Q| c #464F17", "R| c #585A1B", "S| c #A18640", "T| c #576020", "U| c #35520D", "V| c #445814", "W| c #4A5A09", "X| c #4A5609", "Y| c #49540A", "Z| c #454E0C", "`| c #3B440E", " 1 c #41520D", ".1 c #3C4C0F", "+1 c #3B490C", "@1 c #465608", "#1 c #4B5809", "$1 c #58806B", "%1 c #7C8A7F", "&1 c #716A45", "*1 c #5E5C2B", "=1 c #675F2C", "-1 c #6B582B", ";1 c #93703D", ">1 c #796735", ",1 c #243609", "'1 c #4E5220", ")1 c #514D10", "!1 c #544A0F", "~1 c #514611", "{1 c #504410", "]1 c #483C11", "^1 c #4C4612", "/1 c #4D4711", "(1 c #4E4614", "_1 c #4B430F", ":1 c #544C0E", "<1 c #584D12", "[1 c #6B878B", "}1 c #9B8B78", "|1 c #88786C", "11 c #8D8B79", "21 c #899D7C", "31 c #5E7471", "41 c #373F47", "51 c #594E40", "61 c #4A412A", "71 c #6A4E30", "81 c #66421D", "91 c #613F1A", "01 c #624119", "a1 c #604318", "b1 c #644419", "c1 c #60421B", "d1 c #61401B", "e1 c #66431B", "f1 c #67461C", "g1 c #6D4F2E", "h1 c #858076", "i1 c #AE8365", "j1 c #987D70", "k1 c #8A827A", "l1 c #637466", "m1 c #475654", "n1 c #342E32", "o1 c #30231B", "p1 c #684833", "q1 c #66331C", "r1 c #69341C", "s1 c #64331C", "t1 c #6B351C", "u1 c #66341C", "v1 c #6B361E", "w1 c #2EA0D0", "x1 c #42705A", "y1 c #3C6521", "z1 c #488E80", "A1 c #469393", "B1 c #416413", "C1 c #314E0B", "D1 c #314A0B", "E1 c #968331", "F1 c #E0BF5E", "G1 c #4B6215", "H1 c #3B5F0E", "I1 c #43650D", "J1 c #436318", "K1 c #314C0A", "L1 c #2A4705", "M1 c #2C5604", "N1 c #335E09", "O1 c #355C11", "P1 c #3D6009", "Q1 c #3C6006", "R1 c #4B8676", "S1 c #4F98B7", "T1 c #628279", "U1 c #576840", "V1 c #8C7E36", "W1 c #BC974D", "X1 c #D1B061", "Y1 c #806C3A", "Z1 c #3F551C", "`1 c #4B5824", " 2 c #4C6846", ".2 c #5B734F", "+2 c #444A14", "@2 c #414C0D", "#2 c #40540A", "$2 c #40550C", "%2 c #3E4F11", "&2 c #414C13", "*2 c #484F14", "=2 c #566732", "-2 c #4C8EA5", ";2 c #709199", ">2 c #969279", ",2 c #B29462", "'2 c #B5A16E", ")2 c #ABAA73", "!2 c #6D6756", "~2 c #56573E", "{2 c #655E40", "]2 c #586452", "^2 c #6A6E55", "/2 c #5D5022", "(2 c #59501B", "_2 c #595519", ":2 c #585419", "<2 c #56511A", "[2 c #534A1D", "}2 c #5B4F21", "|2 c #635828", "12 c #6A7059", "22 c #658A97", "32 c #868885", "42 c #646E71", "52 c #6D5665", "62 c #78565E", "72 c #7C706B", "82 c #5E6B70", "92 c #685962", "02 c #7C5661", "a2 c #7F6F75", "b2 c #928571", "c2 c #957F5A", "d2 c #948059", "e2 c #918369", "f2 c #907A57", "g2 c #8E7653", "h2 c #917C5D", "i2 c #90826F", "j2 c #908573", "k2 c #8D897D", "l2 c #A88871", "m2 c #475A7A", "n2 c #2D3571", "o2 c #483F66", "p2 c #57727E", "q2 c #49838D", "r2 c #153372", "s2 c #53456A", "t2 c #5E4740", "u2 c #7D4A2E", "v2 c #824B2E", "w2 c #814C2F", "x2 c #814C2E", "y2 c #844C2E", "z2 c #844D2F", "A2 c #7F4B2F", "B2 c #814B2E", "C2 c #834D30", "D2 c #2DA1D6", "E2 c #448FA2", "F2 c #406641", "G2 c #AD983D", "H2 c #F6BA57", "I2 c #FCD16B", "J2 c #AA8338", "K2 c #8F832E", "L2 c #A2954B", "M2 c #53A5BD", "N2 c #469EB2", "O2 c #486934", "P2 c #3C660D", "Q2 c #437733", "R2 c #2F5C0D", "S2 c #24440C", "T2 c #3E6445", "U2 c #458583", "V2 c #86A39C", "W2 c #CEA75D", "X2 c #D3A660", "Y2 c #D5BE70", "Z2 c #9F7D50", "`2 c #C99855", " 3 c #D0A063", ".3 c #7AA0A7", "+3 c #4D99B9", "@3 c #658E86", "#3 c #668451", "$3 c #5F8E81", "%3 c #5C7C5F", "&3 c #556C3F", "*3 c #5E7E66", "=3 c #5893A5", "-3 c #4F99B7", ";3 c #6C929F", ">3 c #938C72", ",3 c #9D7C61", "'3 c #A47B5D", ")3 c #A7986F", "!3 c #80735D", "~3 c #A2795A", "{3 c #A77D63", "]3 c #7E8A8E", "^3 c #6C919E", "/3 c #7A8E89", "(3 c #7D8867", "_3 c #788D81", ":3 c #788A7D", "<3 c #777D5E", "[3 c #75806A", "}3 c #768F8F", "|3 c #70919A", "13 c #898984", "23 c #585F77", "33 c #6E8072", "43 c #7F7A6E", "53 c #745964", "63 c #5F5B69", "73 c #53656B", "83 c #859179", "93 c #786A6A", "03 c #5E576B", "a3 c #707E8B", "b3 c #8D8B82", "c3 c #A57F6A", "d3 c #4A4D6E", "e3 c #46647A", "f3 c #4E3D63", "g3 c #4F3262", "h3 c #493862", "i3 c #3C5474", "j3 c #495871", "k3 c #503762", "l3 c #573C64", "m3 c #A37E6B", "n3 c #56A9C4", "o3 c #FDC759", "p3 c #FFC05A", "q3 c #FCD26B", "r3 c #CD9445", "s3 c #FEBB52", "t3 c #FEC763", "u3 c #92B8A6", "v3 c #35A2D0", "w3 c #3DA1C0", "x3 c #3B98B1", "y3 c #3A94AB", "z3 c #30A2D5", "A3 c #9EA386", "B3 c #D0A75D", "C3 c #D29A5B", "D3 c #CAAA68", "E3 c #A98551", "F3 c #D4A75B", "G3 c #CFA364", "H3 c #8B9B8C", "I3 c #4898BC", "J3 c #4B99BB", "K3 c #6E8592", "L3 c #998F65", "M3 c #AA9368", "N3 c #A37C64", "O3 c #887D67", "P3 c #898161", "Q3 c #AD9D6C", "R3 c #9F866A", "S3 c #6E7B7F", "T3 c #6690A1", "U3 c #727C83", "V3 c #44556D", "W3 c #657D79", "X3 c #86A384", "Y3 c #6E7F7C", "Z3 c #3F5670", "`3 c #4D616E", " 4 c #85A585", ".4 c #7C937F", "+4 c #44566E", "@4 c #546E89", "#4 c #AF8365", "$4 c #4C5374", "%4 c #0D3474", "&4 c #54888E", "*4 c #608A8F", "=4 c #404B75", "-4 c #153170", ";4 c #1B4777", ">4 c #639894", ",4 c #5B7A86", "'4 c #2D3870", ")4 c #42517A", "!4 c #57A9C3", "~4 c #FFBD53", "{4 c #95B7A0", "]4 c #AD9E71", "^4 c #D0B166", "/4 c #D4AD67", "(4 c #BCA76A", "_4 c #A68552", ":4 c #D7B463", "<4 c #CAA969", "[4 c #959F86", "}4 c #4697BC", "|4 c #79807C", "14 c #8B8568", "24 c #AEAC76", "34 c #A19976", "44 c #72766A", "54 c #898565", "64 c #AEAB73", "74 c #989271", "84 c #767E78", "94 c #628EA1", "04 c #9BACAF", "a4 c #8C8A80", "b4 c #787777", "c4 c #46566F", "d4 c #5E6F74", "e4 c #879F87", "f4 c #6C897F", "g4 c #3A5171", "h4 c #505D6A", "i4 c #879F86", "j4 c #74907E", "k4 c #465771", "l4 c #5F697B", "m4 c #A2806B", "n4 c #123A76", "o4 c #093578", "p4 c #4B8B93", "q4 c #5E9D94", "r4 c #346684", "s4 c #083377", "t4 c #174679", "u4 c #5CA09A", "v4 c #619C92", "w4 c #144279", "x4 c #0F377C", "y4 c #9F7F6C", "z4 c #57A9C4", "A4 c #FFBD55", "B4 c #9BBBA1", "C4 c #579BB5", "D4 c #BEA265", "E4 c #C8A766", "F4 c #D6B46D", "G4 c #B4A469", "H4 c #AA8651", "I4 c #D6B364", "J4 c #C7A768", "K4 c #B2A477", "L4 c #4D99BA", "M4 c #74939A", "N4 c #8C836A", "O4 c #887E6C", "P4 c #AB9F71", "Q4 c #A1A279", "R4 c #6B6E68", "S4 c #8E7F61", "T4 c #AFA673", "U4 c #959171", "V4 c #857E6E", "W4 c #748F96", "X4 c #9BABAF", "Y4 c #857B74", "Z4 c #5D596B", "`4 c #715C62", " 5 c #786F6C", ".5 c #6F8279", "+5 c #4B4D69", "@5 c #6D565D", "#5 c #766B68", "$5 c #748175", "%5 c #565A6E", "&5 c #7E7176", "*5 c #937668", "=5 c #0B3477", "-5 c #183677", ";5 c #4B667C", ">5 c #619498", ",5 c #2F6684", "'5 c #0B3279", ")5 c #253F73", "!5 c #5C7D8A", "~5 c #5D9897", "{5 c #123379", "]5 c #927568", "^5 c #57A9C2", "/5 c #FDC75D", "(5 c #FFC05C", "_5 c #FFC763", ":5 c #B9BD8F", "<5 c #639DB0", "[5 c #C8A561", "}5 c #CEA064", "|5 c #D2A867", "15 c #B6A266", "25 c #B5854D", "35 c #D2A45B", "45 c #CAA768", "55 c #C0A46F", "65 c #77949A", "75 c #9C8868", "85 c #9F7E68", "95 c #A27D5D", "05 c #A29771", "a5 c #7A685E", "b5 c #9C7757", "c5 c #A3825E", "d5 c #9B8D6D", "e5 c #9C8169", "f5 c #779198", "g5 c #908C83", "h5 c #776B69", "i5 c #73575D", "j5 c #6A5564", "k5 c #6A7672", "l5 c #6B6466", "m5 c #715558", "n5 c #6D5460", "o5 c #65686C", "p5 c #7D7A70", "q5 c #817A7C", "r5 c #A3806A", "s5 c #343D6D", "t5 c #473865", "u5 c #473C61", "v5 c #474A6B", "w5 c #3C5A79", "x5 c #39376B", "y5 c #483860", "z5 c #463D63", "A5 c #4C5F75", "B5 c #2E4370", "C5 c #473C6B", "D5 c #A67F6A", "E5 c #D4ECF7", "F5 c #56B5E1", "G5 c #4BA9CD", "H5 c #F9C866", "I5 c #FFBD54", "J5 c #B8BD8F", "K5 c #509ABA", "L5 c #AAAB86", "M5 c #D09F63", "N5 c #CA9D63", "O5 c #BFAA68", "P5 c #B9864B", "Q5 c #CD9958", "R5 c #CEAB67", "S5 c #B8A97A", "T5 c #879B93", "U5 c #A58567", "V5 c #99775F", "W5 c #978F6F", "X5 c #8D8366", "Y5 c #A07B5A", "Z5 c #96755E", "`5 c #9D936F", " 6 c #9D977A", ".6 c #6C919F", "+6 c #8D8B81", "@6 c #7E9C90", "#6 c #677176", "$6 c #46526D", "%6 c #6C7C76", "&6 c #7A947E", "*6 c #768176", "=6 c #485268", "-6 c #546170", ";6 c #85A18B", ">6 c #8A8F88", ",6 c #797E80", "'6 c #4F4967", ")6 c #3F3566", "!6 c #24326D", "~6 c #487282", "{6 c #586979", "]6 c #493D63", "^6 c #373369", "/6 c #213B6E", "(6 c #5C848A", "_6 c #716A75", ":6 c #EEF8FC", "<6 c #37A7DB", "[6 c #B8BE92", "}6 c #FFC05D", "|6 c #B8BE90", "16 c #A1CBDE", "26 c #80B7D0", "36 c #98C2C4", "46 c #DAC298", "56 c #D5BA94", "66 c #D4C998", "76 c #D2B98A", "86 c #D4B78C", "96 c #D9C296", "06 c #C0CAB3", "a6 c #87B6CA", "b6 c #98B2BB", "c6 c #95B8C0", "d6 c #BBBDA4", "e6 c #A9A093", "f6 c #B8B29C", "g6 c #B4B69A", "h6 c #BCB698", "i6 c #A89F92", "j6 c #B6AF9A", "k6 c #AEC2B7", "l6 c #98B3BC", "m6 c #B1BDBE", "n6 c #8B8E84", "o6 c #6B777C", "p6 c #47536E", "q6 c #6C7975", "r6 c #789680", "s6 c #77927B", "t6 c #44526A", "u6 c #546276", "v6 c #86918A", "w6 c #A98A70", "x6 c #69938E", "y6 c #143B72", "z6 c #072F77", "A6 c #4E7480", "B6 c #649690", "C6 c #4A7888", "D6 c #093172", "E6 c #123674", "F6 c #6B938D", "G6 c #A78B71", ". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # $ % @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ & * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; > ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ , ' ) ! @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { { { { { ] ^ / { { { { { { { { { { { { { { { { { { ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : < [ } | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ", ". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 1 2 3 4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { { { { 5 6 7 8 9 { { { { { { { { { { { { { { { { { 0 a a a a a a a a a a a a b c d e a a a a a a a a a a a a a a a a a a a a a f : : : : : : : : : : g h : : : : : : : : : : : : : : : : : : : : : : : < i j k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k ", "l l m @ @ @ @ @ @ @ @ @ @ @ @ @ @ n o p q r s @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { { { t u v w x y z { { { { { { { { { { { { { { { { A B B B B B B B B B B B B C D E F G B B B B B B B B B B B B B B B B B B B H I : : : : : : : : : J K L M : : : : : : : : : : : : : : : : : : : : : : < N j k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ O P Q R S T U @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { { V W X Y Z ` ...+.{ { { { { { { { { { { { { { { A B B B B B B B B B @.#.$.%.&.*.=.-.;.>.B B B B B B B B B B B B B B B B B B ,.: : : : : : : '.).!.~.{.].^./.(._.: : : : : : : : : : : : : : : : : : < N j k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ :.<.[.}.|.1.2.:.@ @ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { 3.4.5.6.7.8.9.0.a.b.c.{ { { { { { { { { { { { { { A B B B B B B B B d.e.f.g.h.i.j.k.l.m.n.o.B B B B B B B B B B B B B B B B B p.: : : : q.r.s.t.u.v.w.x.y.v.z.A.B.C.: : : : : : : : : : : : : : : : : < D.j k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ E.F.G.H.I.J.K.L.@ @ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { M.N.O.P.Q.R.S.T.U.V.W.X.{ { { { { { { { { { { { { { A B B B B B B B B Y.Z.`. +.+++@+#+$+%+&+*+=+B B B B B B B B B B B B B B B H -+: : : : ;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+: : : : : : : : : : : : : : : < D.j k k }+|+1+|+2+3+2+3+4+1+|+1+3+5+k k k k k k k k k k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 6+7+8+9+R 0+a+b+c+@ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { d+e+f+g+h+i+j+k+l+m+n+o+p+{ { { { { { { { { { { { { A B B B B B B B B q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+B B B B B B B B B B B B B H -+: : : : F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+: : : : : : : : : : : : < Y+j k Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@Z+k k k k k k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !@~@{@]@^@/@(@_@:@<@@ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { d+[@}@|@1@2@3@4@5@6@7@8@9@0@{ { { { { { { { { { { { A B B B B B B B B a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@B B B B B B B B B B B B B p.: : : : q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@X+: : : : : : : : : : < K@j k L@M@N@O@P@Q@R@S@T@U@V@W@X@#@Y@Z@`@ #.#+#@#k k k k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ##$#%#&#*#=#-#;#>#,#'#@ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { )#!#~#{#]#^#/#(#_#:#<#[#}#|#{ { { { { { { { { { { A B B B B B B B B 1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#B B B B B B B B B B B i#: : : : j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#A#B#C#D#E#h : : : : : : : : < F#j k Z+G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $@#k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ .$+$@$#$$$%$&$*$=$-$;$@ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { >$,$'$)$!$~${$]$^$/$($_$:$<$[${ { { { { { { { { { A B B B B B B B B }$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$B B B B B B B B H I : : : : i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$: : : : : : < i j k H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%Z+k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ &%*%=%-%;%>%,%'%)%!%~%{%@ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { ]%^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%{ { { { { { { { { A B B B B B B B B 8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%B B B B B B B H -+: : : : i$s%t%u%v%w%x%y%z%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%: : : < [ j k L@T%J#U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&U@=&Y$-&;&>&;&,&'&)&!&1+k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ ~&{&]&^&/&(&_&:&<&[&}&|&1&@ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { 2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&g&h&i&{ { { { { { { { A B B B B B B B j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&A&B&C&D&E&F&B B B B B B H -+: : : : G&H&I&u%J&K&L&M&v%N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`& *.*+*@*#*$*q.: < Y+j k L@%*&***=*-*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*@@|*X@1*2*}*[*3*4*5*", "@ @ @ @ @ @ @ @ @ @ @ @ @ 6*7*8*9*0*a*b*c*d*e*f*g*h*i*@ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { j*k*l*m*n*o*p*7#q*r*s*t*u*v*w*x*y*z*A*B*C*d+{ { { { A B B B B B B B D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*`* =d.B B B B .=: : : : +=@=#=$=%=&=*===-=;=>=,='=)=!=~={=]=^=/=(=_=:=<=[=}=|=1=2=: : < D.j k L@3=4=5=6=7=8=9=0=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=s=t=u=r=v=", "@ @ @ @ @ @ @ @ @ @ @ @ @ w=x=y=z=A=B=C=D=E=F=G=H=I=J=K=@ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=`= -.-+-@-{ { { { { { A B B B B B B B #-$-%-&-*-=---;->-,-'-)-!-~-{-]-^-/-(-_-:-<-[-}-h#B B B B B .=: : : : |-1-2-3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-: : < F#j k L@s-t-u-v-w-x-y-z-A-B-!*C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-U-V-", "@ @ @ @ @ @ @ @ @ @ @ @ @ W-X-Y-Z-`- ;.;+;@;#;$;%;&;*;=;c+@ @ @ @ @ @ @ @ @ ~ { { { { { { { M.-;;;>;,;';);!;~;{;];^;/;(;_;:;<;[;};|;1;{ { { { { { A B B B B B B B 2;3;4;5;6;7;8;9;0;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;B B B B B .=: : : : q;r;s;t;u;v;w;x;y;z;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;k-P;Q;R;: : < D.j k H$S;T;U;V;W;X;Y;Z;`; >.>+>@>#>$>%>&>*>=>->;>>>,>'>)>!>~>)>{>]>]>^>", "@ @ @ @ @ @ @ @ @ @ @ @ @ />(>_>:><>[>}>|>1>2>3>4>5>6>7>8>@ @ @ @ @ @ @ @ @ ~ { { { { { { { 9>0>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>{ { { { { { A B B B B B B B t>u>v>w>x>y>z>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>B B B B B .=: : : : S>T>U>V>W>X>Y>Z>`> ,.,+,@,#,$,%,&,*,=,-,;,>,,,',),!,~,{,],: : < Y+j k Z+^,/,(,_,:,<,[,},|,1,2,3,4,5,**6,7,8,9,0,a,b,c,d,e,f,g,h,e,i,j,k,", "@ @ @ @ @ @ @ @ @ @ @ @ @ l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,@ @ @ @ @ @ @ @ ~ { { { { { { { C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,]%{ { { { { A B B B B B B X,Y,Z,`, '.'+'@'#'$'%'&'*'/;='-';'>',''')'!'~'{']'^'B B B B B /': : : ('_':'<'['}'|'1'2'3'4'5'6'7'8'9'0'a'b'c'd'e'f'g'h'i'j'k'l'm': : < D.j k L@n'o'p'q'r's't'X;u'v'w'x'y'z'A'B'C'D'E'F'G'H'I'J'K'c,L'M'N'O'P'Q'", "@ @ @ @ @ @ @ @ @ @ @ @ R'S'_&T'U'V'W'X'Y'Z'`' ).)+)@)#)$)%)@ @ @ @ @ @ @ @ ~ { { { { { { &)*)f@=)-);)>),)')))!)~){)])^)/)()_):)<)[)})|){ { { { { A B B B B B B 1)2)3)4)5)6)7)8)9)0)a)b)c)d)e)f)g)h)i)j)l;k)l)m)n)o)B B B B H .=: : : p)q)r)s)t)u)v)w)x)y)z)A)B)C)D)E)F)G)i'H)I)d'J)K)L)M)N)O)P)Q): : < D.j k Z+R)S)T)U)V)W)X)Y)Z)`) !.!+!@!#!$!%!&!*!=!-!{>P-!>;!>!,!'!)!P-!>!!", "@ @ @ @ @ @ @ @ @ @ @ ~!{!]!^!/!(!_!:!~,~'~)~!~~~{~]~^~: : < /~j k (~p'_~:~<~[~}~|~1~2~3~4~5~6~7~8~9~0~a~b~c~d~e~f~!>Q-g~T-S-h~i~!>j~", "@ @ @ @ @ @ @ @ @ @ k~l~m~n~o~p~q~r~s~t~u~v~w~x~y~z~A~B~C~D~E~@ @ @ @ @ @ @ ~ { { { { { F~G~H~I~J~K~L~M~N~O~P~Q~R~S~T~U~V~W~X~Y~Z~`~ {.{+{{ { { { A B B B B B @{#{${%{&{*{={-{;{>{,{'{){!{~{{{]{^{/{({_{:{<{[{}{|{1{2{B B B H .=: : : 3{;=z%4{5{6{7{8{9{0{a{b{c{V!d{e{f{g{h{i{j{k{O)l{m{n{o{p{q{r{: : < F#j k s{t{u{v{w{x{y{z{A{B{C{D{E{F{G{H{I{J{1~K{L{M{N{O{P{Q{R{S{T{U{O{V{W{", "@ @ @ @ @ @ @ @ @ # X{Y{Z{`{ ].]+]@]#]$]%]&]*]=]-];]>],]'])]!]~]@ @ @ @ @ @ ~ { { { { {]]]^]/](]_]:]<][]}]|]1]2]3]4]5]b%6]7]8]9]0]a]b]c]d]{ { { { A B B B B B e]f]g]h]i]j]k]l]m]n]o]p]q]r]s]t]u]f)v]w]x]y]z]A]^-B]C]D]B B B H -+: : E]F]G]#~H]I]J]K]L]M]N]O]P]Q]R]S]v)T]U]V]W]X]Y]Z]`] ^.^+^@^#^$^: : < D.j k s{%^&^*^=^-^;^>^,^'^)^!^~^{^]^^^/^(^_^ &:^<^[^}^U-|^1^>>2^3^1^|^4^", "@ @ @ @ @ @ @ @ @ 5^6^7^8^9^0^Y'a^b^c^d^e^f^=]g^h^i^j^k^l^m^n^o^@ @ @ @ @ @ ~ { { { { p^q^r^s^t^u^v^w^x^y^z^A^B^C^(#D^E^F^G^H^I^J^D^K^L^M^{ { { { A B B B B N^O^P^Q^R^S^T^U^V^W^X^Y^Z^`^ /./+/@/#/$/%/&/*/=/-/;/>/,/'/B B B H -+: : )/!/~/{/]/^///e-(/_/:/(,('(7&)(!(~({(](j>^(/(((_(:(<([(}(|({ { { { A B B B B 1(2(3(4(5(6(c;7(8(9(0(a(b(c(d(e(f(g(h(i(j(k(l(m(,/n(o(p(q(B B B H I : : r(s(t(u(v(,=w(x(y(z(3'A(l$B(C(D(E(F(G()~H)H(I(,,J(K(L(M(N(O(P(: : < F#j k Z+Q(R(S(6=T(y-U(V(W(X(Y(Z(`( _._+_@_#_v/$_%_&_*_=_)>-_;_'!>_,_'_)_", "@ @ @ @ @ @ @ !_~_{_]_^_/_(___:_<_[_}_|_1_2_3_4_5_6_7_8_9_0_a_b_@ @ @ @ @ @ ~ { { { c_d_e_f_g_h_i_j_k_G,l_m_n_o_p_q_(;r_s_t_u_v_w_x_y_z_A_9>{ { { A B B B B B_C_D_a)E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z_`_ :.:B B B B ,.: : +:@:#:$:%:&:*:=:-:;:>:,:':):!:~:{:]:^:/:(:_:::<:[:}:|:1:Z]2:3:4:: < /~j k k k k 5:6:7:8:9:0:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:n:r:s:f,N'q:t:", "@ @ @ @ @ @ @ u:v:w:x:y:z:A:B:[.C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:@ @ @ @ @ @ ~ { { { S:T:U:V:W:X:Y:Z:`: <.<+<@<#<$<%<&<*<=<-<;<><,<'<) [", "@ @ @ @ @ @ @ .[+[@[#[$[%[&[*[=[-[;[>[,['[)[![~[{[][^[/[([_[:[<[[[@ @ @ @ @ ~ { { { }[|[1[2[3[4[5[6[7[8[9[0[a[b[c[d[e[f[g[h[i[j[k[l[m[n[o[p[{ { { A B B B B q[r[s[t[u[v[w[x[y[z[A[d%B[C[D[E[F[G[H[I[J[K[L[M[S_N[O[V_P[Q[B B B p.: : : : : : : +:R[S[T[U[V[W[X[Y[Z[`[ }.}+}@}#}$}j'%}&}*}=}m{-}m{;}>}: < D.j k k k k k k k k k k ,}'})}!}~}{}]}^}/}(}_}s-:}f~<}[}H/}}|}1}E/N-2}3}", "@ @ @ @ @ @ @ 4}5}6}]&7}8}9}0}a}-[_!b}c}d}e}f}6}g}h}i}j}k}l}m}n}o}p}@ @ @ @ ~ { { { t q}r}s}t}u}v}w}x}y}z}A}B}C}D}E}F}G}H}I}J}K}L}M}N}O}P}Q}{ { { A B B B B B B B B R}S}T}U}V}W}X}Y}Z}`} |.|+|@|#|$|%|&|*|=|-|;|S*>|,|'|B B B p.: : : : : : : : : : : : )|!|~|{|]|^|/|(|_|:|<|[|}|||1|2|3|4|{~5|6|7|: < Y+j k k k k k k k k k k k k k 8|9|0|a|b|c|d|d|e|}^f|Q-1^Q-g|h|2^i|j|}^k|", "@ @ @ @ @ @ @ l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|5}w,A|B|C|D|E|F|G|_!H|I|@ @ @ @ ~ { { { { { { { J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|`| 1.1+1@1#1$1{ { { A B B B B B B B B B B B B q[%1&1*1=1-1;1>1,1'1)1!1~1{1]1^1/1(1_1:1<1[1B B B .=: : : : : : : : : : : : : : }1|111213141516171819101a1b1c1d1e1f1g1h1: < D.j k k k k k k k k k k k k k k i1j1k1l1m1n1o1p1<^R{q1r1B/s1t1T{|^u1q1v1", "@ @ @ @ @ @ @ @ @ # w1x1y1z1A1B1C1D1E1F1G1w~H1I1J1K1L1M1N1O1P1Q1R16*@ @ @ @ ~ { { { { { { { { { { { S1T1U1V1W1X1Y1Z1`1 2.2+2@2#2$2%2&2*2=2-2{ { { A B B B B B B B B B B B B B B ;2>2,2'2)2!2~2{2]2^2/2(2_2:2<2[2}2|21222B B H I : : : : : : : : : : : : : 3242526272829202a22=b2c2d2e2f2g2h2i2j2k2: : < [ j k k k k k k k k k k k k k l2m2n2o2p2q2r2s2t2u2v2w2v2x2y2z2A2B2w2x2C2", "@ @ @ @ @ @ @ @ @ @ @ c+D2@ @ E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2l|@ @ @ @ @ ~ { { { { { { { { { { { { { V2W2X2Y2Z2`2 3.3+3@3#3$3%3&3*3=3-3{ { { { A B B B B B B B B B B B B B B ;3>3,3'3)3!3~3{3]3^3/3(3_3:3<3[3}3|3B B B B B .=: : : : : : : : : : : : 13233343536373839303a3: : : : : +:: : : : : : < b3j k k k k k k k k k k k k c3d3e3f3g3h3i3j3k3l3m3k k k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ n3o3p3q3r3s3t3u3# v3w3~!x3y3z3@ @ @ @ @ @ @ ~ { { { { { { { { { { { { M.A3B3C3D3E3F3G3H3I3{ I3{ { J3{ { { { { { { A B B B B B B B B B B B B B B K3L3M3N3O3P3Q3R3S3T3B B B B B B B B B B B B B i#: : : : : : : : : : : : U3V3W3X3Y3Z3`3 4.4+4@4: : : : : : : : : : : : < K@j k k k k k k k k k k k #4$4%4&4*4=4-4;4>4,4'4)4#4k k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !4o3p3q3r3~4t3{4# @ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { { { { t ]4^4/4(4_4:4<4[4}4{ { { { { { { { { { { { A B B B B B B B B B B B B B H |4142434445464748494B B B B B B B B B B B B B 04: : : : : : : : : : : a4b4c4d4e4f4g4h4i4j4k4l4: : : : : : : : : : : : < K@j k k k k k k k k k k k m4n4o4p4q4r4s4t4u4v4w4x4y4k k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ z4o3p3q3r3A4t3B4# @ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { { { { C4D4E4F4G4H4I4J4K4L4{ { { { { { { { { { { { A B B B B B B B B B B B B B M4N4O4P4Q4R4S4T4U4V4W4B B B B B B B B B B B B B X4: : : : : : : : : : : : Y4Z4`4 5.5+5@5#5$5%5&5: : : : : : : : : : : : < K@j k k k k k k k k k k k *5=5-5;5>5,5'5)5!5~5w4{5]5k k k k k k k k k k ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ^5/5(5q3r3A4_5:56*@ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { { { { <5[5}5|51525354555L4{ { { { { { { { { { { { A B B B B B B B B B B B B B 6575859505a5b5c5d5e5f5B B B B B B B B B B B B B i#: : : : : : : : : : : : g5h5i5j5k5l5m5n5o5p5q5: : : : : : : : : : : : < /~j k k k k k k k k k k k r5s5t5u5v5w5x5y5z5A5B5C5D5k k k k k k k k k k ", "E5F5@ @ @ @ @ @ @ @ @ @ @ @ @ @ G5H5(5q3r3I5_5J56*@ @ @ @ @ @ @ @ @ @ @ @ @ ~ { { { { { { { { { { { { K5L5M5N5O5P5Q5R5S5{ { { { { { { { { { { { { A B B B B B B B B B B B B B ^3T5U5V5W5X5Y5Z5`5 6.6B B B B B B B B B B B B B i#: : : : : : : : : : : : +6@6#6$6%6&6*6=6-6;6>6: : : : : : : : : : : : < /~j k k k k k k k k k k k #4,6'6)6!6~6{6]6^6/6(6_6#4k k k k k k k k k k ", ". :6<6@ @ @ @ @ @ @ @ @ @ @ @ @ @ [6}6q3r3I5_5|66*@ @ @ @ @ @ @ @ @ @ @ @ @ 1626262626262626262626262626364656667686960626262626262626262626262626a6b6b6b6b6b6b6b6b6b6b6b6b6b6b6c6d6e6f6g6h6i6j6k6l6b6b6b6b6b6b6b6b6b6b6b6b6l6m6: : : : : : : : : : : : : n6o6p6q6r6s6t6u6v6: : : : : : : : : : : : : < K@j k k k k k k k k k k k k w6x6y6z6A6B6C6D6E6F6G6k k k k k k k k k k k "}; xmorph-20140707+nmu2/pixmaps/transform.xpm0000664000000000000000000000166112356304630015272 0ustar /* XPM */ static char * transform_xpm[] = { "28 25 6 1", " c None", ". c #000000", "+ c #909090", "@ c #D8D8D8", "# c #909490", "$ c #D0D4D0", " ", " ", " ", " ", " ....... ", " .+++++.+.+.+. ", " .+++++.@@@@@+ ", " .++@@@@.......... ", " .++@@@+@@@@@+@@@.+ ", " ...@+++@@@@@.@@@.+ #", " $+@.@@@@@@@@+@@@.+ #", " .@.@@@@@@@@+@@@.+ ", " +@.@@@@@@@.@@@@.+ ", " .+.+.+.+.+@.@.@.+ ", " .@@@@@@@@@..@.+ ", " .@@@@@@@@...@.+ ", " .@@@@@@@@@@@@.+ ", " ..............+ ", " +++++++++++++ ", " ", " ", " ", " ", " ", " "}; xmorph-20140707+nmu2/README.html0000664000000000000000000005450712356304633012705 0ustar

NAME

xmorph/morph/tkmorph/gtkmorph: image warping and dissolving (morphing) programs alltogether they form the Xmorph project, available at http://xmorph.sf.net

NEWS

In sep 2000, the Xmorph project has been completely reorganized to use the autoconf/automake. Please read the "THE NEW PROJECT" section.

AUTHORS

xmorph/morph/tkmorph/libmorph: Written and Copyright (C) 1994-2000 by Michael J. Gourlay
gtkmorph/libmorph: Written and Copyright (C) 2000-2004 by A C G Mennucci

LICENSE

The Xmorph project 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.
It 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 Xmorph; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

DESCRIPTION

These are digital image warping programs, also known as "morphing" programs. These programs read, write, warp, and dissolve images, and read, write, create, and manipulate control meshes which determine the warping. xmorph and tkmorph have help pages built into them, so no external documentation is necessary. gtkmorph has a runtime guide.

libmorph

this library offers basic services of morphing and mesh editing

xmorph

xmorph runs under the X Window System, using the X library, X toolkit, X miscellaneous utilities, and the Athena widgets, all of which are publically available from the Open Group Inc., and part of the typical X installation. Xmorph also runs under Microsoft Windows NT and Windows 95, if you also have an X server and X libraries such as cygwin. xmorph is a GNU program.

gtkmorph

gtkmorph is another graphical interface for the warping engine libmorph; gtkmorph uses the gtk+ , gdk and gdk-pixbuf libraries; you may find these in ftp://ftp.gnome.org/pub . Gtkmorph is also more evolute than xmorph since it has been actively developed in last years.

tkmorph

tkmorph runs under many window systems, including the X Window System, Microsoft Windows, and Macintosh. Tkmorph requires the use of TCL, the Tool Command Language written by John Ousterhout and others, the widget Toolkit (Tk) that accompanies TCL, and the TCL/Tk shell called "wish" with the "load" command enabled, which allows dynamic loading of modules. When you build "tkmorph" you are actually building dynamic shared libraries to be loaded into an existing executable program, the "wish" shell. The actual "tkmorph" program is a TCL script. You can obtain TCL and Tk for free from http://sunscript.sun.com/ You will also need some TCL scripts from Donald K. Fellows: http://r8h.cs.man.ac.uk:8000/tcl/ You will need dirbrowser3 and all of the routines needed by dirbrowser3, which are inside dkflib, the "Generic Useful Library". tkmorph has not been developed in latest years and may be unusable nowadays.

morph

morph runs with no graphics display and is very portable. It is intended to be used alonside the other programs. Morph can perform image warping and dissolving, using meshes generated by Xmorph or Tkmorph or gtkmorph.

ON MORPHING

Morphing was invented and first used by Industrial Light and Magic. The original author of the first morphing algorithm is Douglas B. Smythe. If you can get ahold of the article, read Douglas B. Smythe's article ``A Two-Pass Mesh Warping Algorithm for Object Transformation and Image Interpolation'', ILM Technical Memo 1030, Computer Graphics Department, Lucasfilm Ltd., 1990. This kind of morphing is technically nothing more than a simultaneous warp and dissolve of an image. Another kind of morphing, which is far more involved than what xmorph does, uses 3D models of the two things being morphed. The first commercial use of morphing was in a sequence in the movie Willow. Since then, morphing has been widely used. Among the more memorable morphing sequences are those found in Michael Jackson's ``Black or White'' video, and in the movie Terminator 2. Be sure to read George Wolberg's Digital Image Warping. I have corresponded with George Wolberg about this program. I asked him whether he considered xmorph to be a violation of copyright of the algorithms in his book, since there are similarities. Mr. Wolberg assured me that my algorithms were different enough that there was no problem, and he seemed very interested and enthused about the existence of my public domain implementation. Also, the algorithms published in Mr. Wolberg's book had bugs in them which I and other xmorph contributors have found, and those bugs have been reported to George Wolberg, who verified my corrections to be proper. I was also told that these bugs were propagated on to Lucasfilm, although I have heard from no one at Lucasfilm directly.

THE NEW PROJECT

In sep 2000, when the gtkmorph code was added to this project, the xmorph project was completely reorganized to use the autoconf/automake programs by GNU. The source code was divided into subdirectories, as follows
/          <-  base autoconf stuff, and  README and etc
/po        <-  NLS (gettext) translation stuff
/intl      <-  gettext (for sites where it is not available)
/doc       <-  documentation
/libmorph  <-  the morphing code (the LIB_OBJS in the old project)
/xmorph    <-  the Athena code (the GUI_OBJS in the old project)
/gtkmorph  <-  the GTK code
/tkmorph   <-  the TK code
/example   <-  example morphing projects
The configuration of the project is now done thru two channels: the "configure" script , and the "Makefile.conf" file.

INSTALLATION

source code

xmorph, tkmorph, and morph are written in ANSI C. Tkmorph also has its graphical user interface and other operational code written in TCL. Tkmorph uses SWIG, the Simplified Wrapper Interface Generator, to create most of the TCL wrapper code.
gtkmorph is not strictly ANSI, you may need the gcc compiler to compile it; moreover some parts are in C++. gtkmorph needs to link to external libraries, namely: the GTK libraries; the Waili wavelet library (used for "wavelet equalization").

configuring

You may disable/enable features using the "configure" script; "configure" will generate a Makefile to build the project. You may not edit the file Makefile: it is automatically generated. Type "sh configure --help" to know about available options. Please refer to the file INSTALL for further instructions.

troubleshooting

The following tips were written for the old project: if you have problems, you better read them.
> GETTING HELP WITH COMPILING
> 
> If you have problems getting xmorph to compile, link, or run
> correctly, please do the following before asking me for help:
> 
> () Make sure you have the latest version of this program.
> 
> () If you do not know how to compile programs, then I assume that if
> you are taking on this task, you want to understand how the process
> works.  In that case, be willing to teach yourself how to use a
> computer the way most programmers do:  Read the man pages and use a lot
> of trial and error.  The process seems tedious and slow at first, but
> you will eventually find that most bugs are not serious, and that you
> can fix them yourself.
> 
> () Pay close attention to the error the computer gives you.  Is the
> error from the make program, the C preprocessor, the C compiler, or the
> linker?  Is the link dynamic or static?  If you feel ready to report a
> compile error, make sure, for example, that the error is in fact a
> compiler error, and not a linker error.  The error could also be a
> preprocessor error, such as when the header files you need can not be
> found.
> 
> () Carefully read the man page for your 'make' utility to see whether
> it operates in a nonstandard way.  If so, then you will either need
> another make program, or you will have to find the '-' option which
> forces your make program to behave properly.
> 
> () If the error is a preprocessor error, such as a complaint that
> header files could not be found, find out why the header files could
> not be found.  Perhaps on your machine, the header files are in a
> nonstandard place.  This is true for Solaris, for example.  Ask your
> system administrator for help finding them.
> 
> () Carefully read the man page and whatever other documentation you
> have for your compiler to see what the error the compiler gave you
> means.  Compiler errors are not as mysterious as people would like to
> pretend they are.
> 
> () Carefully read the man page for your static linker and your dynamic
> linker.  Know whether you are linking dynamic libraries or static
> libraries.  Most systems, sadly, do not have the same libraries for
> static and dynamic linking, so if one set does not work, try the
> other.  This fixes most linker problems I have seen so far,
> particularly on SunOS or Solaris, and FreeBSD.
> 
> () Ask your system administrator to help you.  Most of the so-called
> bug reports I receive have to do with the details of the machine the
> person is compiling on, and I can provide no insight into their
> problem.  The system administrator exists for a reason, which is to
> centralize knowledge about how your computers operate.
> 
> Occasionally I will make a new release of this program which has a bug,
> but most long-lasting releases have no known bugs, and the problems
> that are reported to me are in those cases always eventually solved by
> the user asking their system administrator for information, and the
> information is invariably something I could not know about because it
> is specific to your machine.  About a third of problems reported to me
> could have been handled without my help if the person read the Makefile
> comments.
> 
> 
> 
> 
> SUCCESS BUILDING XMORPH ON SPECIFIC SYSTEMS
> 
> This program has been tested on various models of Sun SPARCs running
> both SunOS and Solaris, SGI's running IRIX, Intel running Linux, Intel
> running MS Win95 and MS WinNT, DEC Alpha running Digital UNIX, and
> various HP machines running HPUX.  The code is so portable that no
> modifications are necessary to compile on these machines, except for
> those documented in the Makefile.  Of course, operating systems change,
> and new bugs are written, so if you find that the status of xmorph's
> portability has changed, then please let me know so that it can be
> fixed.  If you get Xmorph running on other architectures, please send
> email to me to report your success, and whether you had any problems
> compiling, and what the solutions were to those problem.
> 

REPORTING BUGS

Send bug reports to mennucc1@debian.org, or report them at the project page.
  • Reports that are related to the GIMP plugin version of xmorph should be cc'ed to Gordon Matzigkeit . (Unfortunately the gimp plugin is now broken).
  • Tell me the version of xmorph or tkmorph you are using. The version is the same as the distribution date, such as "1999jul16".
  • If you are using tkmorph then tell me what version of the "wish" shell you are using. This information is available by issuing these commands:
        puts $tcl_version $tk_version 
  • Include details about the type of error encountered, and at what stage it happened. (i.e., make, preprocessor, compiler, linker, execution, etc.)
  • Tell me the operating system and version you are using, as well as which variety of the X Window System you are using (for example, Open Group or OpenWindows or XFree86 or whatever). Also tell me what version you are using (X11R6.3 or whatever). If you are using MS Win95 or MS WinNT then tell me so.
  • Tell me the configuration of the display hardware and software on the machine that xmorph or tkmorph failed on. The output of "xdpyinfo" might be helpful in some cases for machines running X Window System. The sort of information that would be useful are the number of bits per pixel of your display (also called the "depth" of your display). If you are using MS Windows then the display information is available from the "Control Panel / Display" utility. Note that just because your hardware might support a certain display depth, that does not mean your X server is currently configured to use it. In fact, as incredible as it seems, high end Silicon Graphics workstations with 32-bit graphics capabilities, including the Onyx with a Reality Engine, by default configure their X servers to use 8 bit pseudo-color even though they can support 24-bit true color. This makes absolutely no sense at all, of course, but there it is.
  • Tell me everything I need to know to reproduce the error.
  • If you followed instructions, you've completely read the Makefile and the README file, in which case you know the magic word. If you include the magic word in your email message to me, the message will automatically be given priority by my mail reader and I will find it sooner.

TODO

The GIMP plugin is broken.

RUNNING XMORPH or TKMORPH

There is a short xmorph man page, which tells you some nice things about how to start xmorph, but most of the information about how to actually use xmorph is contained within xmorph itself.
Xmorph is self-documented, so run the program to find out how to use it. The internal documentation is coded in "help_menu.c". Read all of the help menu information. The best way to learn how to use xmorph is to play with it after you read the help menus.
The general sequence of events in using xmorph is this:
  • Find two images that you want to morph into each other. The first image is called the "source" image. The second image is called the "destination" image. The resulting warp and dissolve between those two images is called the "tween" image.
  • Get these images into a computer. You need to use some sort of digitizing device, such as a flatbed scanner, or a video capture device. If you just want to play around at first to become acquainted with xmorph, then you can find some images already in a computer format. There are zillions of images on the internet. Check, for example, ftp://wuarchive.wustle.edu.
  • Make sure the images are both the same size and shape, in number of pixels. If the images did not start out being the same size, there are many image manipulation programs, both free and commercial, which can resize and crop (cut) images. For example, PBMplus, netpbm, ImageMagick, xv, and Photoshop all perform this sort of manipulation.
  • Convert the images into the Targa image file format. xmorph and tkmorph read and write images in the Targa TrueVision (TGA) image file format. Targa has several methods of storing image data. For best results, use 24-bit or 32-bit full color. The 24-bit format should work for most situations. The 32-bit format includes an "alpha" transparency plane. If you do not already know what an "alpha" plane is, then it is beyond the scope of my intention to explain it here. Suffice it to say that alpha is used to overlay (matte) one image on top of another.
  • NOTE: Xv and xmorph/tkmorph did not always share a common idea of what is a valid "Targa" image file. I do not know why. If you have trouble using Xv to view TGA images produced by xmorph, then you should either get a new version of Xv, or use another program to view your TGA images. Later versions of Xv do not have this incompatibility, so I assume that the problem was a bug in Xv which has since been fixed.
  • Run xmorph or tkmorph. For more details, read the help menus within xmorph or tkmorph.
  • From within xmorph or tkmorph, read the two images. The images will appear behind meshes in the respective image panels.
  • From within xmorph or tkmorph, manipulate the meshes by dragging mesh points around.
  • From within xmorph, perform a "morph sequence". This involves selecting a the number of in-between images to create, and the file name of the images. Xmorph will warp and dissolve the images, and write them to image files.

RUNNING THE XMORPH GIMP PLUG-IN

The GIMP (GNU Image Manipulation Program, see http://www.gimp.org/) is a powerful Adobe Photoshop look-alike for Unix systems. Its plug-in interface allows external programs to manipulate GIMP images directly. If you have installed the GIMP, and compile xmorph with GIMP support (search for the word `GIMP' in the xmorph Makefile), the resulting binary can be used both as a standalone application and as a GIMP plugin. See the above section for information about running xmorph directly. To run xmorph as a GIMP plugin, just create a symbolic link from the xmorph binary to your GIMP plugin directory. If you are not the superuser, that command will be something like: ln -s /usr/local/bin/xmorph ~/.gimp/plug-ins/xmorph If you are the superuser, and you want to add morphing capabilities to every GIMP user on the system, do something like: ln -s /usr/local/bin/xmorph /usr/local/lib/gimp/0.99.15/plug-ins/xmorph Then, restart the GIMP application. There should now be a menu entry, Image/Filters/Effects/Morph, that you can use to do morphing. Open a new source RGB or grayscale image, click the right mouse button and select Filters/Effects/Morph. This starts the xmorph plugin, which resembles the main application, except you cannot load images from files. Select the destination GIMP image via the Destination menu, and be sure to set the sequence number of steps to a reasonable number (each step generates a new GIMP layer). You can run Morph Sequence/Preview Warp Sequence to view the morph without exporting it to the GIMP. When you are satisfied with the morph, run Morph Sequence/Warp Sequence. This will write the morph frames to new layers on top of the source image. The standard procedure is then to convert the image to an indexed image, then save the layers as an animated GIF. Caveat: the scripting interface to xmorph has not been well-tested because I'm not very familiar with script-fu.

CREATING MOTION ANIMATIONS (i.e. MAKING MOVIES FROM IMAGES)

This section covers this topic: how to make an animation of the progressive morphing between two images.
This section does not cover this topic: how to morph two different movies to build a third movie (in which some parts are dynamically moving and morphing, as you see in SF in movies); this is theoretically possible, but it would be very hard.

gtkmorph

gtkmorph can build an animation, with different output formats formats
  • gif animations (using the tool convert command from the package ImageMagick),
  • mpeg format (using mpeg_encode from the tool set ucbmpeg),
  • or in MPEG4/DIVX format, using mencoder.
The above tools are not part of the xmorph package, and must be installed separately. Use the function morph sequence from the menu morph to make animations.

xmorph

See the "xmorph.man" man page for some info about how to make movies out of a sequence of images.
Some other systems have commercial tools for generating animations from a sequence of image files:
  • Adobe Premier can import a sequence of Targa files (and other sequences) to create a motion video, such as a Quicktime or AVI (audio-video interleaved) movie.
  • Silicon Graphics IRIX has tools such as mediaconvert and dmconvert to create movies from images, including Targa files.
      Here is an example of how to use dmconvert:
    • (0) Let us say that you have a sequence of 30 Targa images named 'warp0000' to 'warp0029' that you want to make into a movie.
    • (1) Enter the command dmconvert -D -n warp####.tga warp####.tga to make sure that the image files can be read by dmconvert. You should get a list of information about the image files.
    • (2) Enter the command dmconvert -f sgimv -n warp####.tga -p video warp####.tga out.movie This should create an SGI movie from the images warp0000, warp0001, ..., warp0029. To play the movie, type movieplayer out.movie.
    Also see Andy Thaler's WWW home page (the URL is given elsewhere in this file) for links to some relevant programs.

RUNNING GTKMORPH

Run it , and start the guide from the help menu.

ABOUT TARGA IMAGE FILE FORMAT

I [Gourlay] have been asked by many people what image file format xmorph uses. Xmorph uses the Targa image file format, also called TGA.
Several people say that they can not find a program that supports Targa image files, or ask what the Targa image file format is. Here are some answers:
TrueVision is a company that makes motion video hardware. Some of their hardware products are called "Targa something" where the "something" part depends on the particular model. The Targa TGA image file format has been around for a long time and is still used (or at least supported) by other software packages that handle digital video editing and compression/decompression. See the section in this README about making movies from a sequence of image files.
TGA works well because it is sufficiently flexible to use a number of storage schemes (including colormapped, 24-bit true color, 32-bit alpha true-color, and gray scale) and it provides for some compression using a form of run-length encoding which is modified to minimize the worst-case expansion.
Right now, Xmorph and tkmorph only read and write Targa image files. There is a PBMplus (and netpbm) utility to convert Targa image files to and from other formats. Also, Art Department Pro's Professional Conversion Pack (which runs on Amiga systems) has a Targa reader and writer. Targa files are also viewable from Image Magick utilities, but they have to have a .tga extension to them for some reason (probably because Targa files do not have a magic number in their header identifying them as Targas.) Adobe Premier can easily read a sequence of TGA files and turn them into a full motion video clip.
Gtkmorph reads images in almost any kind of format, and writes them as .ppm (and other formats if the GTK library has version >= 2.2). xmorph-20140707+nmu2/gtkmorph/0000775000000000000000000000000012356343462012705 5ustar xmorph-20140707+nmu2/gtkmorph/testfourier.cc0000664000000000000000000001040512356331536015566 0ustar #include #include //#include #include #include #define DEBUG #include "fourier.hh" #include "fourier.cc" #include "stdio.h" void help() { printf("Usage: testfourier -s|-c si sx sy di dx di [oi]\n\ si sx sy = reference image, position x , y\n\ di dx dy = editing image , position x,y\n\ oi = output of editing image with patch translated\n\ from source to destination\n\n\ Will output the new suggested value for dx,dy\n"); } void test_fft() { for (int c=0;c<3;c++) { F_T *srcf = prealloc_F_T + size*size*c, *dstf = prealloc_F_T + size*size*6, *cmpf = prealloc_F_T + size*size*( (c==0)?1:0); for (int i=0; i < size ; i++) { for (int j=0; j < size ; j++) srcf[IND(i,j)]=drand48()*100+101; } fourier(srcf,dstf); fourier_inv(dstf,cmpf); for (int i=0; i < size ; i++) { for (int j=0; j < size ; j++) { g_assert( norm(cmpf[IND(i,j)] - srcf[IND(i,j)] ) <= 0.0001 ); }} } { int n_channels=3; F_T *src = prealloc_F_T; double e = correlation(src,src,n_channels,0,0) ; double f = ( energy(src,n_channels)); g_assert( ABS(1-e/f) < 0.0001 ); { double dx = correlation_dx(src,src,n_channels,0,0) , dy = correlation_dy(src,src,n_channels,0,0) ; g_assert(ABS(dx/e)<0.01); g_assert(ABS(dy/e)<0.01); } { double dx = correlation_dx(src,src,n_channels,0,0) , dy = correlation_dy(src,src,n_channels,0,0) ; printf(" test random dx %g dy %g \n",dx/e,dy/e); } } } int main(int argc,char* argv[]) { if(argc<7) { help() ; return -1 ; } int cheat=0; if(0==strcmp("-c",argv[1])) { cheat=1; } else if(0!=strcmp("-s",argv[1])) { help() ; return -1 ; } argc--; argv++; double sx=atof(argv[2]), sy=atof(argv[3]), dx=atof(argv[5]),dy=atof(argv[6]) , tx,ty; gtk_set_locale (); gtk_init(&argc, &argv); gdk_rgb_init(); fourier_init(); #if GTK_MAJOR_VERSION >= 2 #define ARG ,NULL #endif GdkPixbuf *src,*dst; src=gdk_pixbuf_new_from_file(argv[1] ARG); if(!src) { perror(argv[1]); exit(1);} dst=gdk_pixbuf_new_from_file(argv[4] ARG); if(!dst) { perror(argv[4]); exit(1);} g_return_val_if_fail( (gdk_pixbuf_get_n_channels (src)) == (gdk_pixbuf_get_n_channels (dst)),1); // testings of basic stuff test_fft(); #if USE_WINDOW == 0 { GdkPixbuf *pixbuf; pixbuf=gdk_pixbuf_new_from_file(argv[1] ARG); if(!pixbuf) { perror(argv[1]); exit(1);} guint n_channels = gdk_pixbuf_get_n_channels (pixbuf); int width = gdk_pixbuf_get_width (pixbuf); int height = gdk_pixbuf_get_height (pixbuf); int rowstride = gdk_pixbuf_get_rowstride (pixbuf); F_T * srcf = prealloc_F_T; fourier_image(src,srcf, (int)sx, (int)sy); inv_fourier_image(srcf, pixbuf, (int)sx, (int)sy) ; guchar *sp = gdk_pixbuf_get_pixels (src); guchar *cp = gdk_pixbuf_get_pixels (pixbuf); for (int c=0;c<3;c++) { for (int i=0; i < height; i++) { for (int j=0; j < width ; j++) { int d=(i) * rowstride + (j) * n_channels; int v = sp[d]-cp[d]; g_assert( ABS(v)==0) ; }}} } #endif //testing of translation detection if(cheat) { tx=dx; ty=dy; } else detect_translation(src,sx,sy, dst,dx,dy, &tx, &ty); printf("tx %g ty %g\n",tx,ty); if(argc>7) { dx=tx; dy=ty; double isx=floor(sx), isy=floor(sy), idx=floor(dx), idy=floor(dy); if (cheat) { isx=idx; isy=idy; } double fsx=sx-isx , fsy=sy-isy , fdx=dx-idx , fdy=dy-idy; double x = fdx-fsx, y = fdy-fsy; F_T * srcf = prealloc_F_T; fourier_image(src,srcf, (int)isx , (int)isy) ; int n_channels =gdk_pixbuf_get_n_channels (src); printf("delta x %g delta y %g\n",x,y); for (int i=0; i < size ; i++) { for (int j=0; j < size ; j++) { F_T v=fourier_transl(i, j,x,y); for (int c=0; c < n_channels;c++) { F_T *s=srcf+c*size*size; (s[IND(i,j)]) = s[IND(i,j)] * v; }}} inv_fourier_image(srcf, dst, (int)idx, (int)idy) ; GError *error=NULL;gboolean result=TRUE; result = gdk_pixbuf_save(dst,argv[7],"png",&error,NULL); g_assert ((result && !error ) || (!result && error )); if(error) {g_warning("%s",(error)->message);g_error_free (error);} } return 0; } xmorph-20140707+nmu2/gtkmorph/utils.c0000664000000000000000000006644012356304631014216 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif #include #include #include "gtk-meta.h" #ifdef USE_IMLIB #include #else #include #endif #include "gdk-pixbuf-extra.h" #include "gtktopdata.h" #include "libmorph/warp.h" #include "libmorph/warp2.h" #include "libmorph/warp-gtk.h" #include "libmorph/resample.h" #include "callbacks.h" #include "interface.h" #include "support.h" //#include "pixmaps.h" #include "mesh-gtk.h" #include "utils.h" #include "main.h" #include "settings.h" #include "dialogs.h" #include "libmorph/mesh.h" #if HAVE_LIBPLY_H #include "../plyview/bind.h" #endif void editview_callback(int i); void drawingarea_configure (int i); #include "utils2_c" GtkWidget * create_menu_of_images(int avoid_this, GtkSignalFunc callback, gboolean avoid_diffs) { GtkWidget *m=gtk_menu_new (); gtk_widget_show(m); int to;for(to=1;to<=MAIN_WIN;to++){ if(to != avoid_this && sp->im_widget[to] != NULL && ( !avoid_diffs || !sp->im_widget_is_difference_mesh[to] ) ) { GtkWidget *i; gchar * N = compute_title (to); i =gtk_menu_item_new_with_label ( N ); g_free(N); gtk_widget_show(i);gtk_container_add (GTK_CONTAINER (m), i); gtk_signal_connect (GTK_OBJECT (i), "activate", GTK_SIGNAL_FUNC (callback ), GINT_TO_POINTER(to + 256 * avoid_this) ); } } return m; } /*********************************************************************** allocates / deallocate pixbufs and pixmaps ********************************************************************/ void create__pixbuf(int lp, enum what_display what) { GdkPixbuf **pb=which_pixbuf(lp,what); int w,h; which_pixbuf_size(lp, what, &w, &h); g_assert(*pb == NULL); *pb=gdk_pixbuf_new (GDK_COLORSPACE_RGB,//GdkColorspace colorspace, FALSE, //gboolean has_alpha, 8,//int bits_per_sample, w,h); //HACK FIXME sp->resulting_width, sp->resulting_height); g_assert( gdk_pixbuf_get_bits_per_sample (*pb) == 8); gdk_pixbuf_clear(*pb); } void destroy_pixmap(int lp, enum what_display what) { GdkPixmap **pm=which_pixmap(lp,what); if(*pm) gdk_pixmap_unref(*pm); else g_debug("%s:%d destroy pixmap [%d] type %d which is already NULL\n", __FILE__,__LINE__, lp, what); *pm=NULL; } void destroy_pixbuf(int lp, enum what_display what) { GdkPixbuf **pb=which_pixbuf(lp,what); if(*pb) gdk_pixbuf_unref(*pb); else g_debug("%s:%d destroy pixbuf [%d] type %d which is already NULL\n", __FILE__,__LINE__,lp, what); *pb=NULL; } /* which image are we displaying? */ GdkPixbuf ** which_pixbuf(int lp, enum what_display what) { GdkPixbuf **pb ; g_assert(lp>0 && lp < MAX_WINS+2); switch( what) { case PIXLOADED: pb=&sp->im_loaded_pixbuf[lp]; break; case PIXSUBIMAGE: pb=&sp->im_subimage_pixbuf[lp]; break; case PIXWARPED: pb=&sp->im_warped_pixbuf[lp]; break; default: abort(); } return pb; } GdkPixbuf ** which_pixbuf_is_visible(int lp) { return which_pixbuf(lp,sp->which_pix[lp]); } GdkPixmap ** which_pixmap(int lp, enum what_display what) { GdkPixmap **pb ; g_assert(lp>0 && lp < MAX_WINS+2); switch( what) { case PIXLOADED: pb=&sp->im_loaded_pixmap[lp]; break; case PIXSUBIMAGE: pb=&sp->im_subimage_pixmap[lp]; break; case PIXWARPED: pb=&sp->im_warped_pixmap[lp]; break; default: abort(); } return pb; } GdkPixmap ** which_pixmap_is_visible(int lp) { return which_pixmap(lp,sp->which_pix[lp]); } void create__pixmap(int lp, enum what_display what) { GdkPixmap **pm=which_pixmap(lp,what); int w,h; static GdkFont* back_font=NULL; char *xlfd="-*-helvetica-*-r-normal--*-120-*-*-*-*-iso8859-1"; if(!back_font) { back_font=gdk_font_load(xlfd); //const gchar *font_name); if(!back_font) g_warning("can't load font %s",xlfd); } which_pixbuf_size(lp, what, &w, &h); /* some border around the image */ if ( what == PIXLOADED) { w+=2*PIXLOADEDBORDER; h+=2*PIXLOADEDBORDER; } else if ( what == PIXSUBIMAGE) { w+=2*PIXEDITBORDER; h+=2*PIXEDITBORDER; } g_assert(*pm == NULL); /* creates backing pixmaps anyway */ *pm = gdk_pixmap_new(sp->im_widget[lp]->window, w, h, -1); gdk_draw_rectangle (*pm, sp->im_widget[lp]->style->black_gc, TRUE, 0, 0, w, h); if(back_font ) { const gchar *text="(no image loaded)"; gdk_draw_text((*pm),//GdkDrawable *drawable, back_font,//GdkFont *font, sp->im_widget[lp]->style->white_gc,//GdkGC *gc, PIXEDITBORDER+30,PIXEDITBORDER+30,//gint x, gint y, text,strlen(text));//const gchar *text, gint text_length); } } static void dim(GdkPixbuf* new) { int i,j, width = gdk_pixbuf_get_width(new), height = gdk_pixbuf_get_height(new); int rowstride= gdk_pixbuf_get_rowstride (new) ; guchar *data = gdk_pixbuf_get_pixels(new); long dp=0; int ch= gdk_pixbuf_get_n_channels(new); //if(ch!=3) FIXME how do I dim the alpha channel?? // g_warning("gtkmorph (%s:%d:%s) image has %d channels! dimming may fail", // __FILE__,__LINE__,__FUNCTION__,ch); for( j=0; j< height ; j++) { dp= rowstride * j; for( i=0; i< width*ch ; i++) { data[dp] = data[dp] * 3/4; dp++; } } } void render_pixmap(int lp, enum what_display what) { GdkPixbuf **pb=which_pixbuf(lp,what); GdkPixmap **pm=which_pixmap(lp,what); int w,h; which_pixbuf_size(lp, what, &w, &h); if( *pm==NULL) { g_debug("creating pixmap [%d] type %d",lp,what); create__pixmap(lp,what); } if( *pb==NULL) { g_debug("creating pixbuf [%d] type %d",lp,what); create__pixbuf(lp,what); } #ifdef DIM //FIXME dim image a bit to better view mesh DONE BELOW gdk_pixbuf_saturate_and_pixelate (const GdkPixbuf *src, GdkPixbuf *dest, gfloat saturation, gboolean pixelate); #endif { int dx=0, dy=0; GdkPixbuf* new; if ( what == PIXLOADED ) { dy+=PIXLOADEDBORDER; dx+=PIXLOADEDBORDER; } if ( what == PIXSUBIMAGE) { dy+=PIXEDITBORDER; dx+=PIXEDITBORDER; } if(what != PIXWARPED && image_settings_get_value("dim image",lp)) { new=gdk_pixbuf_copy (*pb); dim(new); } else { new=*pb; gdk_pixbuf_ref(new); } gdk_pixbuf_render_to_drawable (new, *pm, sp->im_widget[lp]->style->black_gc, //GdkGC *gc, 0, //int src_x, 0, //int src_y, dx, //int dest_x, dy, //int dest_y, w,h, //width, height, GDK_RGB_DITHER_NORMAL,//GdkRgbDither dither, 0, //int x_dither, 0 ); //int y_dither); gdk_pixbuf_unref(new); } } void showhide_subimage(int i) { if(i!= MAIN_WIN) { GtkWidget *m=gtk_widget_get_data_top(sp->im_widget[i],"handleboxsubimage"); g_assert(m); set_sensitive(m,(sp->im_editview[i] == EDITVIEW_EYES)); } } #if GTK_MAJOR_VERSION >= 2 #define FILENAME_UTF8(A) (g_filename_to_utf8((A),-1,NULL,NULL,NULL)) #else #define FILENAME_UTF8(A) (A) #endif void set_frame_label(int i) { GtkWidget *m=lookup_widget(sp->im_widget[i],"image_frame"); gchar *t; double dist; g_assert(m); if(sp->im_editview[i] == EDITVIEW_EDIT || sp->im_editview[i] == EDITVIEW_EYES ) { if(i== MAIN_WIN) t= _("template image"); else t= _("input image"); if(sp-> im_filename_in[i]) t=g_strdup_printf("%s: %s",t,FILENAME_UTF8(sp-> im_filename_in[i])); } else { if(i== MAIN_WIN) //FIXME if only one input? t= _("morphed image"); else t= _("warped image"); if(sp-> im_filename_out[i]) t=g_strdup_printf("%s: %s",t,FILENAME_UTF8(sp-> im_filename_out[i])); } if ( i != MAIN_WIN ) { dist=meshDistance(&sp->im_mesh[i],&sp->im_mesh[MAIN_WIN],0); //g_message("%i dist %g",i, dist); t=g_strdup_printf("%s, dist %.1f",t,dist); } gtk_frame_set_label(GTK_FRAME(m),t); } /*sets things according to the edit view menu value */ void editview_callback(int i) { if(sp->im_widget_is_difference_mesh[i]) return; set_frame_label(i); showhide_subimage(i); if(i!= MAIN_WIN) setup_handlebox_factor(i,FALSE); if(sp->im_editview[i] == EDITVIEW_EYES) sp->which_pix[i]=PIXLOADED; else if(sp->im_editview[i] == EDITVIEW_SHOW || sp->im_editview[i] == EDITVIEW_SHOWMESHES ) sp->which_pix[i]=PIXWARPED; else sp->which_pix[i]=PIXSUBIMAGE; switch (sp->im_editview[i]) { case EDITVIEW_EDIT: { int b=(i==MAIN_WIN)?TRUE:FALSE; image_settings_set_value("dim image",i,1); image_settings_set_value("view original mesh", i, !b); image_settings_set_value("view original points", i, !b); image_settings_set_value("view warped mesh", i, b); image_settings_set_value("view warped points", i, b); image_settings_set_value("view eyes",i,0); //image_settings_set_value("view .../loaded image/subimage/warped image/", i, 1); image_settings_set_value("mesh is readonly", i, 0); } break; case EDITVIEW_SHOW: image_settings_set_value("dim image",i,0); image_settings_set_value("view original mesh", i, 0); image_settings_set_value("view original points", i, 0); image_settings_set_value("view warped mesh", i, 0); image_settings_set_value("view warped points", i, 0); image_settings_set_value("view eyes",i,0); //image_settings_set_value("view .../loaded image/subimage/warped image/", i, 2); image_settings_set_value("mesh is readonly", i, 1); break; case EDITVIEW_SHOWMESHES: { int b=(i==MAIN_WIN)?TRUE:FALSE; image_settings_set_value("dim image",i,1); image_settings_set_value("view original mesh", i, !b); image_settings_set_value("view original points", i, !b); image_settings_set_value("view warped mesh", i, 1); image_settings_set_value("view warped points", i, 1); image_settings_set_value("view eyes",i,0); //image_settings_set_value("view .../loaded image/subimage/warped image/", i, 2); image_settings_set_value("mesh is readonly", i,1); } break; case EDITVIEW_EYES: { int f=0; if(i==MAIN_WIN) f=!0; //image_settings_set_value("dim image",i,1); image_settings_set_value("view original mesh", i, !f); image_settings_set_value("view original points", i, !f); image_settings_set_value("view warped mesh", i, f); image_settings_set_value("view warped points", i, f); image_settings_set_value("view eyes",i,1); //image_settings_set_value("view .../loaded image/subimage/warped image/", i, 0); image_settings_set_value("mesh is readonly", i, 1); } break; //case EDITVIEW_SHOWANIM: //g_critical("showanim unimplemented"); } } /** sets the state of all widgets: visible invisible etc etc**/ void set_state() { int i,s; i=settings_get_value( "use antialiasing warping"); mesh_resample_choose_aa(i); for(i=0;iim_widget[i]) { editview_callback(i); drawingarea_configure(i); } } i= MAIN_WIN; s=settings_get_value( "automatic mesh interpolation"); //if(sp->im_widget[i]) { GtkWidget *m= lookup_widget(sp->im_widget[i],"button_interp_meshes"); g_assert(m); set_sensitive(m,!s); } s=settings_get_value( "automatic blending"); { GtkWidget *m= lookup_widget(sp->im_widget[i],"do_mixing"); g_assert(m); set_sensitive(m,!s); } { GtkWidget *m=gtk_widget_get_data_top(sp->im_widget[i],"hbox_feature"); int flag=//(sp->im_editview[i] == EDITVIEW_FEATURES) && settings_get_value("edit features"); int l=0; gchar *T[]={"tool_select","tool_unselect","tool_assign",NULL}; g_assert(m); set_sensitive(m,flag); while(T[l]) { GtkWidget *m2=gtk_widget_get_data_top(sp->im_widget[i],T[l]); set_sensitive(m2,flag); l++; } } } /******** sets the "edit mesh/show warp" option menu value */ void set_editview(int lp, /* window number */ int status) { /* this trick comes from the FAQ of glade*/ GtkWidget * option_menu = lookup_widget (sp->im_widget[lp], "optionmenu_editview"); sp->im_editview[lp]=status; gtk_option_menu_set_history(GTK_OPTION_MENU( option_menu), status); editview_callback(lp); drawingarea_configure(lp); //FIXME HACK HACK lets see what happens if I skip this //gtk_widget_draw(option_menu, NULL); } /*****************************************************/ #if HAVE_WAILI #include "wavelet.hh" #endif static void __after_warp(int lp) { int val=1; #if HAVE_WAILI { extern GNode *l2_warped_stats[MAX_WINS]; if( settings_get_value ("wavelet equalization")) { g_debug(" ----- wavelet L2 energies for image %d",lp); l2_warped_stats[lp]=wavelet_stats( sp-> im_warped_pixbuf[lp]); } else { if(l2_warped_stats[lp]) wavelet_stats_free(l2_warped_stats[lp]); l2_warped_stats[lp]=NULL; } } #endif val = settings_get_value("warped image in other win"); if( val) { if( sp->im_warped_widget[lp]==NULL) { sp->im_warped_widget[lp]=create_window_warped(); //gtk_widget_show (sp->im_widget[lp]); gtk_widget_set_data_top(sp->im_warped_widget[lp],"imagenum", GUINT_TO_POINTER(lp)); //gtk_widget_set_data_top(sp->im_warped_widget[lp],"pixmap", // sp->im_warped_pixmap[lp]); } { GtkWidget *widget=lookup_widget(sp->im_warped_widget[lp], "warped_frame"); gchar *label=g_strdup_printf("input '%s' image %4d%% mesh %4d%%", sp->im_filename_in[lp], (int)(100.*sp->mf.im_dissolve_factor[lp]), (int)(100.*sp->mf.im_warp_factor[lp])); gtk_frame_set_label (GTK_FRAME(widget),label); g_free(label); } { /* resizes the viewport so that the scrolling bars will work ok */ int w=sp->resulting_width, h=sp->resulting_height; GtkWidget *g =lookup_widget (sp->im_warped_widget[lp],"drawingarea_warped"); g_assert(g); #if GTK_MAJOR_VERSION < 2 gtk_widget_set_usize(g,w,h); #else gtk_widget_set_size_request(g,w,h); #endif } render_pixmap(lp,2); gtk_widget_show (sp->im_warped_widget[lp]); MY_GTK_DRAW (sp->im_warped_widget[lp]); } else { if(settings_get_value( "show warp after warp")) set_editview(lp, EDITVIEW_SHOW); gtk_widget_show (sp->im_widget[lp]); MY_GTK_DRAW(sp->im_widget[lp] ); } render_pixmap(lp,2); } #include "affine.h" void do_warp_an_image_new(int lp) { GdkPixbuf *pb = * which_pixbuf(lp,PIXWARPED); if(pb==NULL) { create__pixbuf(lp,PIXWARPED); } #ifdef WARP_FROM_SUBIMAGE warp_image_gdk_m (* which_pixbuf(lp,PIXSUBIMAGE), * which_pixbuf(lp,PIXWARPED), & sp-> im_mesh[lp], & sp-> im_mesh[MAIN_WIN]); #else { MeshT *mesh=& sp-> im_mesh[lp], *tmp=meshNew(mesh->nx,mesh->ny); double *affine = sp->transforms[lp].subimage2loaded; mesh_X_affine(tmp,mesh,affine); warp_image_gdk_m (* which_pixbuf(lp,PIXLOADED), * which_pixbuf(lp,PIXWARPED), tmp, & sp-> im_mesh[MAIN_WIN]); meshUnref(tmp); } #endif __after_warp(lp); } /******************************************************************** loads image from pixbuf to pixmap for image window "lp" you should unref the pixbuf when it exists copies its data to r,g,b, */ void scale_loaded_pixbuf_et_rrggbb( //GdkPixbuf *impixfile, int lp //image number ) { GdkPixbuf ** pbl = which_pixbuf(lp,PIXLOADED), **pbs = which_pixbuf(lp,PIXSUBIMAGE); double *a=sp->transforms[lp].loaded2subimage; if(a[0]==1. && a[1]==0. && a[2]==0. && a[3]==0. && a[4]==1. && a[5]==0. ) { gdk_pixbuf_unref(*pbs); *pbs=gdk_pixbuf_copy(*pbl); } else gdk_pixbuf_scale(*pbl,//const GdkPixbuf *src, *pbs,//GdkPixbuf *dest, 0,0,//int dest_x, int dest_y, sp->resulting_width,//int dest_width, sp->resulting_height,//int dest_height, a[2],//double offset_x, a[5],//double offset_y, a[0],//double scale_x, a[4],//double scale_y, GDK_INTERP_HYPER); //GdkInterpType interp_type); render_pixmap(lp,PIXSUBIMAGE); #ifdef STORE_RRGGBB pixbuf_to_rrrgggbb(*pbs, sp->red[lp], sp->green[lp], sp->blue[lp] ); #endif } /*************************************************************** * drawing area bookkeeping *********************************************************** */ void drawingarea_configure (int i) { int w,h; g_return_if_fail(sp-> im_widget[i]); if(sp->im_widget_is_difference_mesh[i]) return; { GtkWidget *d=sp->im_drawingarea_widget[i]; if(d) { which_pixbuf_size(i,sp->which_pix[i], &w, &h); /* some border around the image */ if ( sp->which_pix[i] == PIXLOADED) { w+=2*PIXLOADEDBORDER; h+=2*PIXLOADEDBORDER; } /* some border around the image */ if ( sp->which_pix[i] == PIXSUBIMAGE) { w+=2*PIXEDITBORDER; h+=2*PIXEDITBORDER; } //FIXME I think this is already done render_pixmap(i, sp->which_pix[i]); /* resizes the viewport so that the scrolling bars will work ok */ g_debug("scrolled viewport %d set to w %d h %d",i,w,h); #if GTK_MAJOR_VERSION < 2 gtk_widget_set_usize(d,w,h); #else gtk_widget_set_size_request(d,w,h); #endif } else g_critical(" im_drawingarea_widget[%d] == NULL",i); } //HACK why only here // if ( sp->which_pix[i] == PIXSUBIMAGE) { GtkScrolledWindow *d=gtk_widget_get_data_top((sp->im_widget[i]), "scrolledwindow_image"); if(d) { GtkAdjustment* H=gtk_scrolled_window_get_hadjustment(d); GtkAdjustment* V=gtk_scrolled_window_get_vadjustment(d); //g_message("scrolled %d",i); if( H && V ) { /* TRY DISABLING H->value=PIXEDITBORDER; */ /* V->value=PIXEDITBORDER; */ gtk_scrolled_window_set_hadjustment(d,H); gtk_scrolled_window_set_vadjustment(d,V); gtk_adjustment_value_changed(H); gtk_adjustment_value_changed(V); //if(sp->im_widget[i]) //HACK I dont think is needed MY_GTK_DRAW(sp->im_widget[i] ); //else g_warning("redraw %i unavailable",i); } else g_warning("scrolls %i unavailable",i); } else g_warning("scrolling area %i unavailable",i); } //else /* this is not an error: this function gets called before the windows are realized :-( */ //g_warning("drawing area %i unavailable\n",i); } /* GtkWidget *d=NULL; */ /* if(sp->im_drawingarea_widget[i]) { */ /* d=gtk_widget_get_parent( sp->im_drawingarea_widget[i]); */ /* //d=gtk_bin_get_child(d); */ /* if(d && !GTK_IS_VIEWPORT (d)) */ /* d=gtk_widget_get_parent(d); */ /* if(d && !GTK_IS_VIEWPORT (d)) */ /* d=gtk_widget_get_parent(d); */ /* if(d && !GTK_IS_VIEWPORT (d)) */ /* d=gtk_widget_get_parent(d); */ /* if(d && GTK_IS_VIEWPORT (d)) { */ /* //DARNED GTK */ /* GtkAdjustment* HH=gtk_viewport_get_hadjustment(d); */ /* GtkAdjustment* VV=gtk_viewport_get_vadjustment(d); */ /* g_message("viewport %d",i); */ /* if(HH && VV ) { */ /* HH->value=PIXEDITBORDER; */ /* VV->value=PIXEDITBORDER; */ /* gtk_adjustment_value_changed(HH); */ /* gtk_adjustment_value_changed(VV); */ /* if(sp->im_drawingarea_widget[i]) */ /* gtk_widget_draw (sp->im_drawingarea_widget[i] , NULL); */ /* } */ /* } */ /* } */ /* else */ /* { */ /* } */ /**************************************************************************** promote meshes to have same lines and columns ***************************************************************************/ /* adds lines and columns to have this mesh of the given size */ void promote_mesh(MeshT * mesh,int nx, int ny) { while( nx > mesh->nx) { int i=0; while( i < mesh->nx-1 && mesh->nx < nx) { meshLineAdd(mesh, i, 0.5, 1); i+=2; } } while( ny > mesh->ny) { int i=0; while( i < mesh->ny-1 && mesh->ny < ny) { meshLineAdd(mesh, i, 0.5, 2); i+=2; } } } void promote_meshes() { int lp=MAIN_WIN; for(; lp>=0; lp--) if( sp->im_widget[lp] != NULL) { int c=sp->im_mesh[lp].changed; promote_mesh(&sp->im_mesh[lp], sp->meshes_x,sp->meshes_y); if ( c != sp->im_mesh[lp].changed) MY_GTK_DRAW(sp->im_widget[lp]); } } /***************************************************************************** * edit/view option menu ****************************************************************************/ /**************************************************************************** * create/ destroy image windows ***************************************************************************/ void destroy_image_win_pixbufs(int lp, int what) { g_assert(what==0 || what == 1); #ifdef STORE_RRGGBB g_free(sp->red[lp]); g_free(sp->blue[lp] ); g_free( sp->green[lp] ); #endif { int j ; for (j=2;j>=what;j--) { destroy_pixbuf(lp,j); destroy_pixmap(lp,j); }} if(sp->im_warped_widget[lp]) { gtk_widget_destroy(sp->im_warped_widget[lp]); sp->im_warped_widget[lp]=NULL; } } void destroy_image_win_data(int lp) { smooth_idle_stop_by_mesh(&( sp->im_mesh[lp] )); int j;for(j=1;j<=MAIN_WIN;j++) if( sp->im_mesh_diff[j] == &( sp->im_mesh[lp] )) { meshUnref(sp->im_mesh_diff[j]); sp->im_mesh_diff[j]=NULL; if(sp->im_drawingarea_widget[j]) MY_GTK_DRAW(sp->im_drawingarea_widget[j]); } meshUnref( &( sp->im_mesh[lp] )); meshInit(&( sp->im_mesh[lp] )); destroy_image_win_pixbufs(lp,0); #define myfree(A) {g_free(A); A=NULL;} if(sp->im_filename_in[lp]) myfree(sp->im_filename_in[lp]); if(sp->im_filename_out[lp]) myfree(sp->im_filename_out[lp]); if(sp->im_mesh_filename[lp]) myfree(sp->im_mesh_filename[lp]); sp->im_widget[lp]=0; sp->im_drawingarea_widget[lp]=0; } static void init_image_win_data_and_set_all(int lp) /* the slot where the data are put in the arrays in sp-> */ { GtkWidget * topw=sp->im_widget[lp]; /* the top window */ /*sets size and subimage selection */ // set_image_win_initially(lp); /* to start with... until the user loads an image */ sp->im_width[lp]=sp->resulting_width; sp->im_height[lp]=sp->resulting_height; gtk_subimasel_reset(&(sp->subimasel[lp]), sp->im_width[lp],sp->im_height[lp] ); { double a[6]={1,0,0,0,1,0}; memcpy(sp->transforms[lp].subimage2loaded,a,6*sizeof(double)); memcpy(sp->transforms[lp].loaded2subimage,a,6*sizeof(double)); } /* NO : this would mean that the image has been loaded sp->im_filename[lp] = g_strdup_printf("%s%d.png",_("image"),lp); */ /* pixbufs and rr gg bb buffers are alloced here, whilst the im_pixmap_subimage and im_pixwarped are set elsewhere */ //alloc_image_win_data(lp,0); { int j ; for (j=2;j>=0;j--) { create__pixbuf(lp,j); // can't do this now-- need a window --create__pixmap(lp,j); }} create_image_menu_settings (lp); if(lp==MAIN_WIN) { image_settings_set_value("view warped mesh",lp,TRUE); image_settings_set_value("view warped points",lp,TRUE); image_settings_set_value("view original mesh",lp,TRUE); image_settings_set_value("view original points",lp,TRUE); gtk_settings_set_sensitive("view original mesh",sp->im_settings[lp],FALSE); gtk_settings_set_sensitive("view original points",sp->im_settings[lp],FALSE); } { /* this trick comes from the FAQ of glade*/ GtkWidget * option_menu = lookup_widget (topw, "optionmenu_editview"); gtk_signal_connect(GTK_OBJECT (GTK_OPTION_MENU (option_menu)->menu), "deactivate", GTK_SIGNAL_FUNC (on_optionmenu_editview__selected ), GUINT_TO_POINTER(lp)); } /* NOTE THE ORDER: first the widget is created then we set the "imagenum" then we show it, so the pixmaps are created and stored in the *sp structure */ gtk_widget_set_data_top(topw,"imagenum", GUINT_TO_POINTER(lp)); { GtkWidget *w=(lookup_widget(topw,"back_to_guide")); extern GtkWidget *guide_widget; if(w && ! guide_widget) gtk_widget_hide(w); } //FIXME this is risky ... and messy gtk_widget_set_data_top(topw,"gtk_subimagesel", &(sp->subimasel[lp])); //this is set in "set_backing_pixmap()" //sp->im_pixmap_subimage[lp] = get_pixmap_addr (sp->im_widget[lp]); sp->im_mesh_diff[lp]=0; meshInit( &( sp->im_mesh[lp] )); if( settings_get_value("mesh auto sync") && lp!=MAIN_WIN) meshCopy( &(sp->im_mesh[lp]), &(sp->im_mesh[MAIN_WIN])); else { meshAlloc( &(sp->im_mesh[lp]), sp->meshes_x, sp->meshes_y); meshReset( &(sp->im_mesh[lp]), sp->resulting_width, sp->resulting_height); } #ifdef NO_BORDER_HACK { MeshT *m =&sp->im_mesh[lp]; meshSetLabel(m,0,0,MESHPOINTSELECTED); meshSetLabel(m,0,m->ny-1,MESHPOINTSELECTED); meshSetLabel(m,m->nx-1,0,MESHPOINTSELECTED); meshSetLabel(m,m->nx-1,m->ny-1,MESHPOINTSELECTED); } #endif sp->mf.im_warp_factor[lp]=0.1; sp->mf.im_dissolve_factor[lp]=0.1; } #include "callbacks_subimg.h" //redraw_spins void create_and_show_image_win(int lp) { sp->im_widget_is_difference_mesh[lp]=FALSE; if (lp== MAIN_WIN) { GtkWidget *window_main=sp->im_widget[lp]=create_window_main(); { GtkMenuItem *f=GTK_MENU_ITEM(lookup_widget(window_main,"file")); gtk_widget_set_data_top(f->submenu,"imagenum", GUINT_TO_POINTER(MAIN_WIN)); } { GtkMenuItem *f=GTK_MENU_ITEM(lookup_widget(window_main,"settings_menu")); GtkWidget *menuSettings_g=NULL; menuSettings_g=create_gtkmorph_menuSettings(); gtk_menu_item_set_submenu (f,menuSettings_g ); } } else { sp->im_widget[lp]=create_image_win_1(); } { gchar * N=compute_title (lp); gtk_window_set_title (GTK_WINDOW(sp->im_widget[lp]),N); g_free(N); } gtk_window_set_default_size(GTK_WINDOW(sp->im_widget[lp]),-1,460); sp->im_drawingarea_widget[lp]= lookup_widget(sp->im_widget[lp],"drawingarea"); g_assert(sp->im_drawingarea_widget[lp]); init_image_win_data_and_set_all(lp); gtk_widget_show (sp->im_widget[lp]); /* note: this MUST be after the widget_show */ set_editview(lp,EDITVIEW_EDIT); redraw_spins(-3); } /******************************************************************/ #include "fourier.hh" void adjust_1_point_wrt_morph(MeshT *dstmesh, GdkPixbuf *dst , int mi,int mj) { MeshT *srcmesh =&(sp->im_mesh[MAIN_WIN]); GdkPixbuf *src = (sp->im_warped_pixbuf[MAIN_WIN]); double nx,ny; gboolean e=detect_translation(src, meshGetx(srcmesh,mi,mj),meshGety(srcmesh,mi,mj), dst, meshGetx(dstmesh,mi,mj),meshGety(dstmesh,mi,mj), // new suggested destination &nx,&ny); if ( e) meshSetNoundo(dstmesh,mi,mj,nx,ny); } void on_adjust_all_meshes_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp=MAIN_WIN-1; for(; lp>=0; lp--) { if( sp->im_widget[lp] != NULL) { int xi, yi; MeshT *mesh=&(sp->im_mesh[lp]); GdkPixbuf *dst= (sp->im_warped_pixbuf[lp]); for(xi=0; xi < mesh->nx ; xi++) { for(yi=0; yiny ; yi++) { if( 0 != meshGetLabel(mesh,xi,yi)) { adjust_1_point_wrt_morph(mesh,dst , xi, yi); } } } MY_GTK_DRAW(sp->im_widget[lp]); } } } xmorph-20140707+nmu2/gtkmorph/loadsave.c0000664000000000000000000002672412356324215014655 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif #include //NO WE USE g_assert for portability //#include "assert.h" #include #include "gtk-meta.h" #ifdef USE_IMLIB #include #else #include #endif #include "gdk-pixbuf-extra.h" #include "gtktopdata.h" #include "callbacks.h" #include "interface.h" #include "support.h" #include "main.h" #ifdef IS_PLYMORPH #include "utils__.h" #else #include "utils.h" #endif //#include "settings.h" #include "dialogs.h" #include "loadsave.h" /************************************************************************ ************************************************************************ load/save hooks see on_ok_button1_realize () ************************************************************************ ************************************************************************/ inline void showerr(const char *file, const char *msg) { char *s = g_strdup_printf( msg, file, strerror(errno)); show_error(s ); g_free(s); } gboolean is_null(const gchar *s) { if(strlen(s) == 0) { show_error(_("please provide a filename")); return TRUE; } return FALSE; } /*****************************************************************************/ gboolean save_session(int ignored, const char *file) { FILE *f; int lp; #ifdef HAVE_UNISTD_H int c; extern gchar *session_name; char cwd[PATH_MAX]; getcwd(cwd,PATH_MAX); c=strlen(cwd); /* delete the common initial part of cwd and filename */ #define REDUCE_CWD(A) ( (strlen(A)>=(c+1) && 0==strncmp((A),cwd,c) && (A)[c] == '/' ) ? (A)+c+1:(A)) #else #define REDUCE_CWD(A) (A) #endif if(is_null(file)) return FALSE; if((f=fopen(file, "w"))==NULL) { showerr(file, _("could not open file '%s' for write: %s") ); return FALSE; } if(session_name) g_free(session_name); session_name=g_strdup(file); fprintf(f,"\n"); #ifdef HAVE_UNISTD_H fprintf(f,"\n%s\n\n",cwd); #endif for(lp=1;lp<=MAX_WINS; lp++) if(sp->im_widget[lp] != NULL) { if(sp->im_filename_in[lp]) { fprintf(f,"\n"); fprintf(f,"\n%s\n\n", REDUCE_CWD(sp->im_filename_in[lp])); fprintf(f,"\n%d\n\n", image_settings_get_value("preserve aspect ratio",lp)); if(sp->im_mesh_filename[lp]) fprintf(f,"\n%s\n\n", REDUCE_CWD(sp->im_mesh_filename[lp])); fprintf(f,"\n%f %f\n\n", sp->mf.im_warp_factor[lp], sp->mf.im_dissolve_factor[lp]); fprintf(f,"\n"); } } fprintf(f,"\n%d %d\n\n", sp->resulting_width,sp->resulting_height); fprintf(f,"\n"); fclose(f); return TRUE; } static inline void de_n(char *s) { int l=strlen(s); if(s[l-1]=='\n') s[l-1]=0; } /* did the user use it somehow? */ inline static gboolean image_used(int lp) { return sp->im_widget[lp] && ( #ifdef IS_PLYMORPH sp->im_ply_surface[lp].vlist || sp->im_ply_labels_unsaved[lp] || #else sp->im_mesh_filename[lp] || sp->im_mesh[lp].changed>0 || #endif sp->im_filename_in[lp] || sp->im_filename_out[lp]); } static inline void close_tag(FILE *f) { char s[PATH_MAX+1]; fgets(s,PATH_MAX,f); if( s[0]!='<' || s[1]!='/') { de_n(s); g_warning("malformed session: '%s' is not a closing tag",s); } } static gboolean load_session_stanza(FILE *f) { int aspect=-3333, equal=0; float a=-3333.3,b=-3333.3; const int lens=PATH_MAX; char s[lens+1], imagename[lens+1], meshname[lens+1]; imagename[0]=meshname[0]=0; fgets(s,lens,f); de_n(s); /* tag? */ while( !feof(f) && 0!=strcmp(s,"") ) { /********* image tags loop *********/ if( s[0]!='<' || s[1]=='/' ) { /* attemp syncronization */ g_warning("malformed session: '%s' is not an opening tag in image",s); } else if(0==strcmp(s,"")) { fgets(imagename,lens,f); /* file name */ de_n(imagename); close_tag(f); } else if( 0==strcmp(s,"")) { fgets(meshname,lens,f); de_n(meshname); close_tag(f); } else if( 0==strcmp(s,"")) { fgets(s,lens,f); sscanf(s,"%d",&aspect); close_tag(f); } else if( 0==strcmp(s,"")) { fgets(s,lens,f); sscanf(s,"%f %f",&a,&b); close_tag(f); } else g_warning("session file: line '%s' was unrecognized in image\n",s); fgets(s,lens,f); de_n(s);/* tag? */ } /********* end image tags loop *********/ if(imagename[0]==0) { g_warning("malformed session: no image filename"); return FALSE; } {/* look if it has already been loaded */ int empty=0; { int lp; /* FIXME < or <= ?? */ for(lp=1;lpim_widget[lp] != NULL) { if(sp->im_filename_in[lp] && 0==strcmp(sp->im_filename_in[lp],imagename)) { equal=lp; } /* if the user has not used this image... we reuse it */ if(!image_used(lp)) { if(!empty) empty=lp; } } else { if(!empty) empty=lp; } } } /* if not existent, create it now */ if(equal==0) { if(empty==0) { show_error(_("can't reload the full session-no more available images")); return FALSE; } else { if(sp->im_widget[empty] == NULL) { sp->max_wins++; create_and_show_image_win(empty); } } } /* if not loaded, load it now */ if(equal==0) { #ifdef IS_PLYMORPH load_ply_from_file(empty,imagename); #else load_image_from_file(empty,imagename); #endif equal=empty; } } if(equal==0) return TRUE; /* aspect */ if(aspect!=-3333) image_settings_set_value("preserve aspect ratio",equal,aspect); /* mesh file */ if(strlen(meshname) > 0 && ( sp->im_mesh_filename[equal]==NULL || 0!=strcmp(sp->im_mesh_filename[equal],meshname) )) { #ifdef IS_PLYMORPH load_points_from_file__(equal,meshname); #else load_mesh_from_file(equal,meshname); #endif } if(a!=-3333.3) { sp->mf.im_warp_factor[equal]=a; sp->mf.im_dissolve_factor[equal]=b; } gtk_widget_show(sp->im_widget[equal]); return TRUE; } gboolean load_session(int ignored, const char *file) { FILE *f; const int lens=PATH_MAX; char s[lens+1], cwd[lens+1]; if(is_null(file)) return FALSE; cwd[0]=0; if((f=fopen(file, "r"))==NULL) { showerr(file, _("could not open file '%s' for read: %s")); return FALSE; } { int e; #if GLIB_MAJOR_VERSION == 1 gchar * dir = g_dirname(file); #else gchar * dir = g_path_get_dirname (file); #endif e=chdir(dir); if(e) g_critical("cannot ch dir to %s : %s",dir,strerror(e)); g_free(dir); } fgets(s,lens,f); if(strcmp(s,"\n")) { show_error( _("parsing of session failed at first header!") ); return FALSE; } fgets(s,lens,f); de_n(s); while(!feof(f) && strcmp(s,"") ) { /* attemp syncronization */ if( s[0]!='<' || s[1]=='/' ) { /* attemp syncronization */ g_warning("malformed session: '%s' is not an opening tag",s); } else if( 0==strcmp(s,"") ) { fgets(cwd,lens,f); de_n(cwd); if(chdir(cwd)) { g_warning("Cannot change to CWD %s\n as specified in the session file",cwd); perror(""); } close_tag(f); } else if( 0==strcmp(s,"") ) { fgets(s,lens,f); sscanf(s,"%d %d", &sp->resulting_width_sp,&sp->resulting_height_sp); spinbutton_res_set(); on_resulting_apply_clicked(NULL,NULL); close_tag(f); } else if ( 0==strcmp(s,"") ) { load_session_stanza(f); } else g_warning("session file: line '%s' was unrecognized\n",s); fgets(s,lens,f);de_n(s); } if(strcmp(s,"")) { show_error(_("parsing of session failed")); return FALSE; } // WHY? setup_handlebox_factors(); fclose(f); return TRUE; } /* it looks bad: it would be nicer if done with a static inline fun... but it must return the caller, not itself !*/ #define myfputc(F,C) \ { \ if( EOF == fputc(C,F)) { \ showerr(file,_("\ the attempt to save the image file %s has produced error: %s")); \ return FALSE; \ } \ } gboolean save_as_ppm(gchar *file,GdkPixbuf * pb) { FILE *f; int w= gdk_pixbuf_get_width(pb); int h= gdk_pixbuf_get_height(pb); if( gdk_pixbuf_get_n_channels(pb) != 3) { show_error (g_strdup_printf ( " cant save as .ppm :-( the image has %d channels", gdk_pixbuf_get_n_channels(pb) )); return FALSE; } f = fopen(file, "wb"); if( f ==NULL) { showerr(file,_("\ the attempt to save the image file %s has produced error: %s")); return FALSE; } /* save as ppm format */ fprintf(f,"\ P6\n\ # CREATOR: " PACKAGE " " VERSION "\n\ %d %d\n\ 255\n", w,h); { guchar *data = gdk_pixbuf_get_pixels(pb); int y, stride=gdk_pixbuf_get_rowstride(pb), channels=gdk_pixbuf_get_n_channels(pb); for (y=0;ywl) sel= type_by_extension (file); if(sel<0 || sel >wl) { show_error(_("please use an allowed image format")); return FALSE; } F=g_slist_nth(writable_formats,sel); //g_assert(F || sel==wl); if(F) { gpointer data=F->data; GError *error=NULL; // che cavolo ho scritto ?? f=data; type=gdk_pixbuf_format_get_name ((GdkPixbufFormat *)data); result = gdk_pixbuf_save(pb,file,//const char *filename, type,&error,NULL); g_assert ((result && !error ) || (!result && error )); if(error) {show_error((error)->message);g_error_free (error);} } else result=save_as_ppm(file,pb); { if ( ext==NULL || cmp_extension(file,type)) { gchar * s=g_strdup_printf (_("the filename extension is '%s' but the image was saved in format '%s'. This mismatch may prevent you from viewing this image."), (ext?ext:""),type); show_warning(s); g_free(s); } } } #endif return result; } xmorph-20140707+nmu2/gtkmorph/README0000664000000000000000000000161412356304631013562 0ustar PROJECT NAME: xmorph AUTHOR: "A Mennucci" , aug 2000 COPYRIGHT: GPL BASED ON: «xmorph», Written and Copyright (C) 1994-2000 by Michael J. Gourlay DESCRIPTION: xmorph-gtk is a GUI (=graphical user interface) for the morphing engine in xmorph, with some enhancement DEPENDS: you will need to have the source code of xmorph, and the libraries: glib gdk gdk-pixbuf gtk and the includes from these libraries (in "Debian GNU/Linux" they are in the '-dev' packages) INSTALL: first, you have to obtain a copy of xmorph, unpack it in the subdirectory «xmorph/», read the instructions, set it up (by editing the Makefile as desired), and build the library "libmorph.a" second, you have to build and install this package: issue $ sh ./configure $ make at the prompt; if this fails, please read the file "INSTALL" EVENTUALLY: have fun xmorph-20140707+nmu2/gtkmorph/mesh-gtk.h0000664000000000000000000000430012356304631014565 0ustar enum tools { tool_edit,tool_move,tool_stretch,tool_select,tool_unselect,tool_assign, tool_error }; /* stops all background processes that are smoothing the meshes */ gint smooth_idle_stop(); /* stops all background processes that are smoothing this mesh */ gboolean smooth_idle_stop_by_mesh(MeshT *mesh); gboolean gdk_mesh_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data, MeshT *mesh , /* the mesh point affected */ int *mi, int *mj, int *mlabel, enum tools *action); gboolean gdk_mesh_button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data, MeshT *mesh, /* the mesh point affected */ int *mi, int *mj, int *mlabel, enum tools *action //FIXME WHAT FOR? /* what was done: 0==point moved 1== added hor line 2== added ver line */ //MeshT meshes[] /* array , to replicate actions*/ , gboolean readonly ); gboolean gdk_mesh_motion_notify_event(GtkWidget *widget, GdkEventMotion *event, gpointer user_data, MeshT *mesh, int *mi, int *mj /*the mesh point affected */ //MeshT meshes[] /* array , to replicate actions*/ ); gboolean gdk_mesh_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data, MeshT *mesh, int *mi, int *mj /* the mesh point affected */ //MeshT meshes[] /*array , to replicate actions*/ ); gboolean gdk_draw_mesh(GdkDrawable *drawable, gboolean draw_lines_p, GdkGC *lines_gc, //lines GC unsigned int draw_points_p, //also: how many points GC are passed GdkGC *points_gc[], //points GC gboolean draw_features_p, MeshT *mesh, // GdkRectangle *subimage, //int height, //viewport height //int width, //viewport width const double affine[6] ); gboolean gdk_draw_mesh_as_arrows(GdkDrawable *drawable, GdkGC *arrows_gc, MeshT *mesh, MeshT *base_mesh, gboolean as_difference, const double affine[6]); xmorph-20140707+nmu2/gtkmorph/testfourier-3.tif0000664000000000000000000001624412356304631016126 0ustar II*&€?à@$ „B`ÏøT6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–MÉåR¹d¶]/˜LfS9¤Öbœ PÉòm? PhT:%G¤RbòšU6O¨TjTIĦw$ŸTëUºåv½_°XlQšeŽÍg´ZcuYÔ{j¸\nW;¥Öíw—Ùo»åFÙW·ßpX<& ‡ÄbaW¬V6·H«8ì¦W-—ÌfsX,fnÁÉÇô9í&—M§ÔjuXLîcAXÕìv[=¦×m·Òkdºüã}¿àpx\>%÷’âòy\¾g7Ϭdd:>‡W­×ìv{Yî?O·ßðx|^?%{» êy}^¿g·Ýï‰ùã~Ÿ‡×í÷ü~yŸ(×ÓôÿÀ ±Ïâ2ÿ@LÁjµ#D ¬- §®’9 Cì=ļ ‹Ã‘ MÅKÛ¢Ñ,UÆŒdâň¬]ÇÌu³Qª)Ç’ …!È‹œ|øÈ²L•%É‹4މHl¥)Ê’ªO'¢2Œ­-˒켆Ë„µ/Ì“,Í%L(|Ç3Í“lÝM(t×7Γ¬íÎ3ï=Ï“ìE >sõAÐüò…Nt-EÑŽ„Ñ4m%IÒ=‚R4­5MÓ-Óµ EQ»”ümRUMTÂÒéÕWWÖŠÕVÓ5•m[× ui\וí| Wuý…a؉-ƒbÙM•ÔÑý—gÚ1fÉ•­k×ö=±mÛ•}µnÜ 9oÜW-ÍE\—=ÕuÎ×MÙwÞ%ÝxÞ—¬¥yÞ×Íõ ßÝýÅ÷îàìóZà¸Nü`ø^‡ÂØn!‰â&%ŠãËí‹ãXî<òc˜þE‘ºùI“åNM”å™ko•åÙŽdÔfžm›²ù®qçŒ6užè íŸèZ.Œ³  €?à@$ ƒ¿á¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfS9¤N ‹Î&³¹äö}? PhT:%G¤RiTºe6 7ŒN©Õ:¥V­W¬VkUºåv½_°Ij› –Íg´ZmV»e¶Ýo¸B,qj•Æíw¼^oW»åöýÜâ·\ ‡ÄbqX¼f6e‚ˆa1Ù<¦W-—ÌfsUœ„?%›ÐhtZ=&—M¡Îóú}f·]¯ØlvTL7W³Ünw[½æ÷{µ†m÷Ü>'Çä]ø¾'Ïètz]9¯.åÔìv{]¾çw=›w¼^?'—ͯëB|þ¿g·Ýï½úiÿ§×í÷üS>P^oçüÿÀ œ¼“ûÁL½ïÚ ÁŒ% ÂŽDB¬5 ÃëE Ã0ôEÄ‘*ùDÑLUÅ‹|QÆŒe©Ñ|iÇÌt—ÆÑÜ}È ¶Ò#ÉCÓÉ2l'²\¡)Ê’¬5)JÒ̵-¿2Ĺ/Ì Å/LS,Í3¸ó$Ñ5Í“k]5MÌÁý9Ã;Î3Ì¿8OL¡?€NàQ=DTUFQÔ Ò€ K€%5BOÐ NPÔ-ALÓuE>ÕäùT±„õ\ µˆ{Ö•=QÔU½MNÓu¸_ÒT]…GØv ‰cØÖM!eÑ4 ÖIO×t5u!‰Dâ‘X´^1Fã‘Øô~.ï‘ òPÎQ •Jå’Ùt¾a1™LãÀ‰°9'“IôþA¡Pè”8&H¢Òé”Úu>¡0uÔÀš°{Y¨Öë•Úõ~š ±ÖPzÑ`µZí–Ûu& ¥[î—[µÞ–è½ WÐxÁ`ð˜Xà;NâÀLv!‘Éah÷,ž_1™·¹s€V|ÒÑf´š]5%©(õ™íŸa±ÙG²°»žÏq¹ÝD\;Ѐnp÷|^7+É*¹€?Ñéi6°­¿O±ÙÈ6û›þ ‹ÁÚñxï0cé ½žOw¾½Õƒõþ_µ1¡ùÿ€3þûÀ0„@ odÁ°rXù Ϥ B¨Ëc€Œ60ô-D(¨AäNqTEE°’âÛEÑ”f‚+%è,G ÙF‘ô@H s"ôÉ0"‚ÂrTž÷–R’H“´¡,>¡”¶“¥ Ô¿,Ì.̘„LS3ÆTÍ Ë6œß3Î.ˆy:dîóÔå>6s 'O´HOРÙDµAÑ­8H-&”µL2sýLÓ¬)PFU5=T0Â…VP¤øV5MfºÓu¥n¼UÐ=W û`WÚ-X 1dm—aÙªåmgZ*ñj ¯i[*àÉn¾Wµr(V…Ët'çå×^WÄ]ßtÞ*Ýzy×Õå~%·=û€$Θ0P˜–pBb Ša˜²1âøÒ'EžÔ=Wcy(ä¶µ°>å9Vˆc9f^‚Y3f ÒTæÒ g  TU&wåÚ&D‘àÁ¦‘e£ç@>¦œ'CN¯¨æ6³‹G‡dqFÚæX±`+´J‚þÇ‘Ÿ¯•9¶` Ñо/ÐÆã‘1pNo «ÀoÑô€€€?à@ ÿ„BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=йd@\”Ñ”H%R¹d¶]/˜LfS8ðFlQÎd’i¤ö}? PhT:#Ú‚Ò(”ºe6O¨O\U0¬mÖj5ºåv½_¦…l@M”A´X-V»e¶ÝyÑá«}Öíw¼S+-º­^¦â¼àpX<$p1‡,1@¾7 Èdr •'%—Ìfmí,à•ŸHœ¹­&—MD ê@ }`[¯Óìv[9[³+ºm7[½äI¿x@O{Çärü°óœty=>¦Ó·ƒu{]¼Ê÷¼,x@Ï'sÍ缉ý@×´øz>_;S›±¹ú~TåŸô/Àß¿p,  †0HZA€5ÀðŒ$—œO¼' à RÊT€,<q 3Ĉ¨w€lTñlKÆY» F1¬lñÈ6G€íÆò F"È€M#€¤•!I‘«I²ŒJÊ€ç+€̵)KÈŸ/€Ä,»3¼æl¡4MŽÙ7€Ì䳬Û;ºbÌô3èÐÅÞ³]C¶d mG¶ƒ$T¨S…4Ì—”57O°s©úU(EUTÉ µhFV YÕuªòZSÕµtµKGÈ:X)a×v*ì;Ù e€cZ ùY\Ú6ª—žÀZ6€õ½k\ å@€õÍpÝ qGj]7jaž`Íy€Eíw_ è }€=ý_Ø7Ι“wfƒ£PÞ hYbF$ø¨GcÕâxê>IàØöD†¼‡`= .kŸ‘åˆ0¡+†aÙnl‡Th!æùcŠt€–„Ú.{£¡@v”zh+jF¤H)£¿žzÑf¼µ¤&ÀˆQmæçº =kf¤¿€ Š[Îå›É@¢È³\÷–Þ( å¸ðy¹¹Å¯¢ pòNXÃ_Ë€Ç5ÉdG‚ 4ñæFÎLóA®tXëR €·\ÝS‰¨(ÃÐöx™‘ݸ.Ñß÷8“–åEã éx8€‚ =Ç“—Þˆ+úËçàA7´~ëÞøûÁÌ‚ŠwÃwA… /} óÝÁ‡åÁ½_ávœh(‘ó~÷ TÿÐêP þ®uÀ®H±@UÀ7H(E9h¦!@\GÉ -b¬ã…£D\‹Ò™H @E+ÃŒœ•‰ xÏ-À!òÍA¬à¿Wøu˜RñD À1ü²˜ˆÔxLÖh±šS-;ÇÐ#făSQ< 9|¦TÜD¬”©Ì÷ôâLì½a,@Ã;çR]ÄE€ì!ç ñC ü9ü-ŸIq@Ö˜Óž W iEªA =€Ÿ4-Žj,Ú‚`ônŠ$Øt(i ´ŽŽ¤&ÜAÝTN’Ÿ¶è©€4Ζ¤ú½W¸C§TÕB ¨€¥¥”ðù¸±¸ã\{‘¨ˆÅw,æÍQ©hÁÏ@ÕD}Cªg˜iÕÐk¡$um¿akYÀ/­U‘;R¨€¸«U°êŒšì…yütWDF|óÅ–ÂWä0:ˆ(Y¢ ¹Øc/ìƒÓz£®ÊXä/a-‚°Y >2h‚j;pýÖymCîav‘Ö ^-0~Ö±¿’(€×±¶ÐÙŠ»|%Á y[Ä TAÌ nR㡼AB%öîæšj@(fÐkÖî]SóN‚8¿]ãä5ßÕB¶Žó±/{Àq¾PÉ_^ÓÑ ‚t8‚ðêûažABu—Rþ™)°#@xÁ@#Ì y¨LM‰í(`ó¶1ˆ(U¢ÚöacŽ ñªäáã«;à í‘™˜bc¦/ˆ(\¢Ÿbâïæ9#cc·cÜDšØøãÈè×ùÒÈv«0ƒª”RÙ0éå #$רʆðVÉ€Fax×-–¹>ó@™¯2œˆ»ˆåFm7¢–W‚ à7óÁ¶ÉyÈÈËPÑŸÒ2HφÊ_eq $xvÐfêcL‹¸=GvdÑenf¹ìPbL^“4ÊÌMy³4ѱ’ø>íLe3Þ¡0#·VNYÎ{EÖª4“±aâ½/¬ŒÄó ‚2ˆhr:F@ÎÜ[lȦP .¸¿ÇÒp(€™ £×`îÂ|Ý>ùc~oc M×µã¼øÁÓâ耤 ¥mpB¼7x…HO‡*›SÅx¹T¼ÕX1Dq׎ñ©Éêýaœ¯’—„­…h~@Ö—jÜ2Döä}rNjJÆWA |'×·ÏË}›9ÏÌt‚Ýb Z±d}óîœG†YiíFʾ®[Nˆ$°O¯–±ÎAmö„~õnÊFp¶ .€ÝÝûyjv ¹ÖºûgÞJí¶3Ô@j”’€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv= VH@9 å'ÊeR¹d¶]/˜LfQÑÌÔ®œ¹œö}? PhT: ½"A›à`¢ÔjU:¥V­QV@ªàë_«ØlV;%–‚C´ö°VÝf¸\nW;¤)±#ÁœTÀ :uÀ`pX9šc 8â@ŒfÈdbÄÜ C—sY,æw=gÁ‰Ðg%òýÏêuZº²;\;ì@ͦ³m·ÜP û°k|pw<>':ǃ Îm5?Ïèta(N ý×Óô»]¾ƒ¼Jx@¿'sÍçÖ/ ÅÈ3Ÿ›ô|~WWïÔÔB?°Õúþ¾ÏóçÀ‹*¸5 qðl  lƒ H1Ò÷µŒ5 §§ô<ñhD€íÄÑDN{¼\¯,\SFQ¬UŇÔtÙ¶°Úÿǰ íI pë%€4œ’Œ“)ʉq\ KA-p¡*Ì ^¿ÇÏ´!M<ÊÿÌçÌÝδiN3¤å:ÎsÌñ8MÇÌÓ"Ès5?È0Äù:ãð@Q€MCÒŠR„T¨àoSd½IS”ë£5HÓe"Pµ>Ïs½U;U“ÕWWN•EAQT´ i4T”ò,×’lž;XÕ…N“ eŒ;–IÝMØvmg¢•Í¥SZoüt}U5m³X[–ݼÆåkqW5gr0€5Ô·h6^…å$’µà>?Ç…™yß—íüÀZ´%Ë[ÀV¼[Õöôd¯ž¸9ïa±”]‡á8dù7ŸxÎrMxãí€à%‘€Må1üƒ«á ž7ÞS™æ™¬©ŽÜø sŒŸs†'8bÙþÅ£€~•›iÎz‚‹ážy–›«ëδ‰/ô~·¯±Øz >/„ÊzêÛÕµí›nÝ·¨‡¢ :/…{m;†õ½ï›îý¾(0Ö¾¨ñ¼ïüOÅñœmtv Ãø[ g×ÇsÏ5ÍóŽyÔƒ k႟|¿;ÓõOUÕ¬G: )/†Z~ôÝgmÛ÷Ït‹œh0”¾ªkÝøž/ãó¦úƒ(è7‡äz¥éëëº ¼ §çúžï½ïüÑ ƒ ­'¶¦¹ßÕõýŸl¦d9(1Ëó¯¿OÝûÿÏôâ—ýÚý :_p@X ]¹ (Z?hà„‚DøW®Ñœsï9ô'á!„DPS)PDÔÀÞ6B8] á„ËU’=t,C0ÆCØ|û„« ©ôwèâDI‰Nå•Q_#0ˆÑ.*EX¬æÚx¥ðG5H§ãaŒM½p¶6Ê@Û”~°¶1ÆØÝÙLiÔ¾ &ïã„yQí]8  à¬pÑâ>HY !ÐÜ9 ¡¾ bŸ£T‘NJISÍÀ\/ƒÒHI-'å¡3…2ø2œž”R®VJÒä9óÀ q4‚½É]-åĹ&o(‚„R 7H\¶—SbLR26H0F/Sù3æ„Ñ"¯Œ‚¾R ,TšSnnK§àANQ~sffÄy»9çDÄ-?ùÉætéžSÎV@’ È(陓ÂsOIý?ä<]°b O¹%@(E bžèS ç}¡TNŠFf±¡²Ê Ð:ŠÑÚ=D³ ‘ÆÊ?IéDKñ<¦8¥Dhå)¦TÍüÅ‘ _l^¦ššSÚ|÷ã)Ö/‚^4RYãOêEIy 4‚ÇB˜(c½;¨õ*ªUWm€m/‚®AÕ)ûU«asR(Rø-d}F«õжVÖü:ÏY|òv¯Vêí]Ûì¤P¾ ™S]kŰMªl–_¤³­VÆXÖš84¾ £p‡Í«eì™\ƒ+9lÍ¡´K h¾B ïHu–´v®Ö1’A‚›ò³óòÖÛ[l‡'Y¤½ËUmîÁ6ââaÑl蕹W,ç‹,àÈs“ø¦€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfRå8ŠlnoN]ð ô‚LèT:%G¤RiTºe6O¨TjU:¤]>¬]•·lò}@ªØlV;%–Íg´ZmV»e¶Ý1KîG·ÍÕß^ÏàvûåöýÀ`pX<& ‡†Ð@ùèxÞ/P,FW-—ÌfsY¼æw=I~AØÔl å’°gõZ½f·]¯ØlvTGÄÿK@Þš‹ÞÏ}¿àpx\>'Òõƒ±ªÛy”ãtz]>§W­×êià¦Üj®÷çâ»?'—Íçôzj.è1›´¾|>¯§×í÷ü~Pg\ºÆ—Èöù¿p, ÁLÃ0¨Æ™(B‡1¬›ÅÃÌ5 Ãê\r Âci gô ELUÅ‘IÀƒ¨1¸‰Â­L[ÇÌuº†Ò # Ç h¯·±ä#ÉL”ÃQ qÈkÌm%Ê’¬­+Ë Q”ƒ H1Ë(ÂÒÌÅ1Ì“,̘(0²ƒó§3ÎŒå9Ê…Ê 0 Ðj%ȳ¤ý?Ð 2X´(Î9ÑTÝ>ÐTmGÒ¹P›Cjro's܈èR4í=OÔ a@¬ƒ¢¶v+´Ô¥FT5m]WÖ râ¹®§ÊïUL5u]וê”Å iÈQtå}cÙM”Â`Æ‘5‹ Ùv­­kÛ3ä‚¶éé*ÝZvÍÅqܕۂŽìi>æÜ7-ÝwÞ´ ÌiTïÝ·õ}ß’Ån ¯{ã|߸. ƒÅ¯ê /1¥ì‚aŽ%‰ÀóÐ*±¦D%ˆb˜î=¼’ú '¦”KŽdNU•·ò ±ò->XÙfm›ç é·H(¾ijg:…¡¯æš %Éùõ7 hšn§¬RÚ . ¹+Ÿêε­©Æ ,MšUWšë›.ͳ¥s² < ¸²)š(ºfѹcB‘£59ÑY6én[¯ÁÅeM(6Rôί¿Ð< Çò qCRu=SÅì{7Èóœy0¹ãÕkíüg:§s}?UGX)éboÜÏVñõ=ŸlßÙ¤CEÚ]‹'ÛÒ=¯á¤öØn€6úÝ÷Èþ,, >Vl@€”œ(=R/home/debdev/xmorph/xmorph-current/gtkmorph/testfourier-3.tifCreated with The GIMPÄ# ļ_z'bHHxmorph-20140707+nmu2/gtkmorph/gtksettings.c0000664000000000000000000002341212356304631015414 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include "gtk-meta.h" #include /* * Standard gettext macros. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #include "gtktopdata.h" #include "gtksettings.h" /*header in the settings (the template has no header)*/ #define GTKSETTINGS_HEADERSIZE 2 static void call_callback(GtkMenuItem *menuitem) { void (*callback)(GtkMenuItem* thismenuitem, gpointer userdata); gpointer *settings = gtk_widget_get_data_top(GTK_WIDGET(menuitem),"settings"); gpointer *userdata = gtk_widget_get_data_top(GTK_WIDGET(menuitem),"userdata"); g_assert(settings); callback =gtk_widget_get_data_top(GTK_WIDGET(menuitem),"callback"); g_assert(callback==settings[0]); g_assert(userdata==settings[1]); if(callback) (*callback)(menuitem, settings[1]); } static void on_setting_activate (GtkMenuItem *menuitem, gpointer thisitemsetting) { int oldval = GPOINTER_TO_INT( *((gpointer *)thisitemsetting+1) ); gpointer p=gtk_object_get_data(GTK_OBJECT(menuitem),"supermenu"); if (p) { GSList *g=gtk_object_get_data(p,"group"); while(g) { struct _GtkCheckMenuItem * z=g->data; #if GTK_MAJOR_VERSION >= 2 int a=gtk_check_menu_item_get_active(g->data); #else int a=z->active; #endif if(a ) { int newval=GPOINTER_TO_INT (gtk_object_get_data(GTK_OBJECT(z),"setting_value")); *((gpointer *)thisitemsetting+1 ) = GINT_TO_POINTER(newval); g_debug(" %s( '%s') from %d to %d '%s' ", __FUNCTION__, *(char **)thisitemsetting,oldval,newval, gtk_widget_get_name(g->data)); if( newval != oldval ) call_callback(p); break; } g=g_slist_next(g); } } else { int newval = GTK_CHECK_MENU_ITEM(menuitem)->active; *((gpointer *)thisitemsetting+1 ) = GINT_TO_POINTER(newval); g_debug(" %s( '%s') from %d to %d", __FUNCTION__, *(char **)thisitemsetting, oldval, newval ); /* now we dont deal with accels */ g_assert( *((gpointer *)thisitemsetting+2)==NULL ); if( newval != oldval ) call_callback(menuitem); } } /* actually this is never called ... */ /* static void on_setting_toggle (GtkMenuItem *menuitem, */ /* gpointer thisitemsetting) */ /* { */ /* g_debug(" toggle '%s' from %d to %d\n", */ /* *(char **)thisitemsetting, */ /* GPOINTER_TO_INT(*((gpointer *) */ /* thisitemsetting+1 )), */ /* GTK_CHECK_MENU_ITEM(menuitem)->active); */ /* *( ((gpointer *)thisitemsetting) +1)= */ /* GINT_TO_POINTER(GTK_CHECK_MENU_ITEM(menuitem)->active); */ /* call_callback(menuitem); */ /* } */ //static inline int gtk_settings_get_value(char *name,gpointer thesettings[]) { int lp=GTKSETTINGS_HEADERSIZE; while( thesettings[lp]) { if(strcmp(name,thesettings[lp])==0) { //GtkWidget *item = thesettings[lp+4]; /* if ( GTK_CHECK_MENU_ITEM(item)->active */ /* != GPOINTER_TO_INT(thesettings[lp+1])) */ /* g_warning(" the item %s has value %d but the menu has value %d!\n", */ /* *(char **)(thesettings+lp), */ /* GPOINTER_TO_INT(thesettings[lp+1]), */ /* GTK_CHECK_MENU_ITEM(item)->active */ /* ); */ return GPOINTER_TO_INT(thesettings[lp+1]); } lp+=GTKSETTINGS_BLOCKS_SIZE; } g_warning("gtk_settings_get_value: setting '%s' not found", name); return 0; } void gtk_settings_set_sensitive(char *name,gpointer thesettings[], gboolean value) { int lp=GTKSETTINGS_HEADERSIZE; while( thesettings[lp]) { if(strcmp(name,thesettings[lp])==0) { GtkObject *item = thesettings[lp+4]; gtk_widget_set_sensitive(item ,(value)?TRUE:FALSE); return ; } lp+=GTKSETTINGS_BLOCKS_SIZE; } g_warning("gtk_settings_set_sensitive: setting '%s' not found", name); } //static inline gboolean gtk_settings_set_value(char *name,gpointer thesettings[], int value) { int lp=GTKSETTINGS_HEADERSIZE; while( thesettings[lp]) { if(strcmp(name,thesettings[lp])==0) { GtkObject *item = thesettings[lp+4]; thesettings[lp+1] = GINT_TO_POINTER(value); /* FIXME is this relevant? if(!GTK_WIDGET_REALIZED(item)) g_warning(" item %s is not realized, while initializing to %d\n", (char *)(thesettings[lp]),value); else */ { gpointer p=gtk_object_get_data(item,"submenu"); if (p) { GList* L= gtk_container_get_children(p); int len=g_slist_length (L); g_return_val_if_fail(value>=0 && value< len, FALSE); GSList* nth=g_slist_nth(L,value); GtkWidget* radio_menu_item= nth->data; g_return_val_if_fail(radio_menu_item, FALSE); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (radio_menu_item),TRUE); } else gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item) , (value)?TRUE:FALSE); } return TRUE; } lp+=GTKSETTINGS_BLOCKS_SIZE; } g_warning("gtk_settings_set_value: setting '%s' not found", name); return FALSE; } int gtk_settings_template_size(/* template for the settings */ gpointer template[]) { /*find size */ int lp=0; while(template[lp]) { lp+=GTKSETTINGS_BLOCKS_SIZE; } /* includes the final NULL and a HACK (FIXME)*/ return lp+2; } gpointer gtk_settings_alloc(/* template for the settings */ gpointer template[]) { int lp, size; /*find size */ lp=gtk_settings_template_size(template); /* includes the header*/ size=lp+GTKSETTINGS_HEADERSIZE; return g_malloc(size * sizeof(gpointer)); } GtkWidget* gtk_settings_create(gpointer template[], gpointer *thesettings, void (*callback)(), gpointer userdata) { GtkWidget *menuSettings; //GtkAccelGroup *menuSettings_accels; GtkWidget *item; GtkTooltips *tooltips; int lp, size; #if GTK_MAJOR_VERSION < 2 //FIXME // menuSettings_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (menuSettings)); #endif g_assert(thesettings); /*find size */ size= gtk_settings_template_size(template); /* copy template */ memcpy(thesettings+GTKSETTINGS_HEADERSIZE,template, size*sizeof(gpointer) ); /*translate*/ lp=0; while(template[lp]) { /* menu item IS NOT TRANSLATED here but below */ /* thesettings[lp+GTKSETTINGS_HEADERSIZE]= (template[lp]); */ /* tooltip */ thesettings[lp+3+GTKSETTINGS_HEADERSIZE]= _(template[lp+3]); lp+=GTKSETTINGS_BLOCKS_SIZE; } menuSettings = gtk_menu_new (); { //void (*callback)(GtkWidget* thismenu, gpointer userdata); //callback = thesettings[0]; //g_assert(callback == callbac); thesettings[0]=callback; thesettings[1]=userdata; gtk_widget_set_data_top(menuSettings,"callback", callback); gtk_widget_set_data_top(menuSettings,"userdata", userdata); gtk_widget_set_data_top(menuSettings,"settings", thesettings); } tooltips = gtk_tooltips_new (); gtk_widget_set_name (menuSettings, "menuSettings"); // I Think this is useless gtk_object_set_data (GTK_OBJECT (menuSettings),"menuSettings", menuSettings); lp=GTKSETTINGS_HEADERSIZE; while(thesettings[lp]) { char * name = ( char *)thesettings[lp], * tooltip = ( char *)thesettings[lp+3]; if(template[lp+4-GTKSETTINGS_HEADERSIZE]) thesettings[lp+4]= item = /* translate menu label */ gtk_menu_item_new_with_label ( _(name) ); else thesettings[lp+4]= item = /* translate menu label */ gtk_check_menu_item_new_with_label ( _(name) ); gtk_widget_set_name (item,name); // I Think this is useless gtk_widget_ref (item ); gtk_widget_show (item); gtk_container_add (GTK_CONTAINER (menuSettings), item); if ( tooltip[0] ) gtk_tooltips_set_tip (tooltips, item, tooltip, NULL); /* this needs a submenu */ if( template[lp+4-GTKSETTINGS_HEADERSIZE]) { GtkWidget *m=gtk_menu_new (); char **v=template[lp+4-GTKSETTINGS_HEADERSIZE]; int p=0,len=0; GSList *group = NULL; gtk_widget_show(m); /* this creates a submenu */ while (v[len]) len++; while (p < len) { GtkWidget *i; i =gtk_radio_menu_item_new_with_label (group, _(v[p]) ); gtk_widget_set_name(i,v[p]); #if GTK_MAJOR_VERSION < 2 group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (i)); #else group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (i)); #endif gtk_object_set_data(GTK_OBJECT(i),"setting_value",GINT_TO_POINTER(p)); //USELESS ?? gtk_widget_ref (i); gtk_widget_show (i); if ( tooltip[0] ) gtk_tooltips_set_tip (tooltips, i, tooltip, NULL); gtk_container_add (GTK_CONTAINER (m), i); gtk_object_set_data(GTK_OBJECT(i),"supermenu", item); if (p == GPOINTER_TO_INT(thesettings[lp+1])) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (i), TRUE); gtk_signal_connect (GTK_OBJECT (i), "activate", GTK_SIGNAL_FUNC (on_setting_activate ), thesettings+lp); p++; } gtk_menu_item_set_submenu (GTK_MENU_ITEM(item),m); gtk_object_set_data(GTK_OBJECT(item),"group", group); gtk_object_set_data(GTK_OBJECT(item),"submenu", m); } else { /* this needs a check button */ if(thesettings[lp+1]) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE); /* gtk_signal_connect (GTK_OBJECT (item), "toggle", */ /* GTK_SIGNAL_FUNC (on_setting_toggle ), */ /* thesettings+lp); */ gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC (on_setting_activate ), thesettings+lp); } lp+=GTKSETTINGS_BLOCKS_SIZE; } return menuSettings; } xmorph-20140707+nmu2/gtkmorph/feature.h0000664000000000000000000000016412356304631014505 0ustar gboolean add_feature(gchar *t); void feat_entry_set(int n); void feature_save(FILE *f); void feature_load(FILE *f); xmorph-20140707+nmu2/gtkmorph/utils-mesh.c0000664000000000000000000000425612356304631015145 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include "main.h" #include "dialogs.h" #include "gtk-meta.h" #include "support.h" /* gboolean mesh_need_saving(int lp){ */ /* return sp->im_widget[lp] && sp->im_mesh[lp].changed>0; */ /* } */ /* did the user use it somehow? */ /* gboolean image_used(int lp) */ /* { */ /* return sp->im_widget[lp] && ( sp->im_mesh_filename[lp] || */ /* sp->im_mesh[lp].changed>0 || */ /* sp->im_filename_in[lp] || */ /* sp->im_filename_out[lp]); */ /* } */ void on_interpolate_meshes1_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp, nx=sp-> im_mesh[1].nx , ny=sp-> im_mesh[1].ny ; double totwarp; if( sp->max_wins<=1) { show_warning( _("\ to interpolate meshes, you must have at least two input images")); return; } totwarp=0; for ( lp =1; lp <= MAX_WINS; lp++) if( sp->im_widget[lp] != NULL && !sp->im_widget_is_difference_mesh[lp]) totwarp += sp->mf.im_warp_factor[lp]; // FIXME this is not shown sp->mf.im_warp_factor[MAIN_WIN]=totwarp; if ( ABS(totwarp)< 0.0001) { show_warning( _("\ to interpolate the meshes, the sum of the all `mesh factors' should be nonzero\n\ I have set some default values for you") ); do_mesh_factors_equal(); totwarp =1; redraw_spins(-3); } /*check to be on the safe side */ for ( lp =1; lp <= MAIN_WIN; lp++) if( sp->im_widget[lp] != NULL) g_return_if_fail( meshAllocated( &(sp->im_mesh[lp]) )); { int xi, yi; double vx,vy; for(yi=0; yi < ny; yi++) { for(xi=0; xi < nx; xi++) { vx=vy=0; for ( lp =1; lp <= MAX_WINS; lp++) if( sp->im_widget[lp] != NULL) { vx += meshGetx( &(sp->im_mesh[lp]), xi, yi) * sp->mf.im_warp_factor[lp]; vy += meshGety( &(sp->im_mesh[lp]), xi, yi) * sp->mf.im_warp_factor[lp]; } //printf("%d %d %f %f\n", xi, yi, vx, vy); meshSetNoundo((&(sp->im_mesh[MAIN_WIN])), xi, yi, vx /totwarp, vy /totwarp); }} } for ( lp =1; lp <= MAIN_WIN; lp++) if( sp->im_drawingarea_widget[lp] != NULL) MY_GTK_DRAW(sp->im_drawingarea_widget[lp]); } xmorph-20140707+nmu2/gtkmorph/utils2_c0000664000000000000000000000622212356304631014351 0ustar gchar * compute_title (int j) { if(sp->im_widget_is_difference_mesh[j] ) { const gchar * R = _("differential mesh"); gchar *N; if(sp->im_mesh_filename[j] ) N=g_strdup_printf("%s %d '%s'",R,j,sp->im_mesh_filename[j]); else N=g_strdup_printf("%s %d",R,j); return N; } else { const gchar * R = _("resulting image"); gchar *I = R, *N; if(j != MAIN_WIN) /* warning: due to main.c:144 , this _("input image") will always be translated using a UTF-8 locale, regardless of the real LANG setting */ I = g_strdup_printf("%s %d",_("input image"),j); if(sp->im_filename_in[j] ) N=g_strdup_printf("%s '%s'",I, sp->im_filename_in[j]); else N=g_strdup(I); if (I!=R) g_free(I); return N; } } /*********************** some commonly used routines ********************** */ void set_sensitive(GtkWidget * widget, gboolean flag) { if(flag) { gtk_widget_show(widget); gtk_widget_set_sensitive(widget,flag); } else { if(settings_get_value("hide unusable")) { gtk_widget_hide(widget); } else { gtk_widget_show(widget); gtk_widget_set_sensitive(widget,flag); } } } void set_info_label(gchar *t) { static GtkWidget *m=NULL; if(!m) m=lookup_widget(sp->im_widget[MAIN_WIN],"main_info_label"); if(m) { gtk_label_set_text(m,t); } } /* linking callbacks to optionmenu does not work... this comes from the glade FAQ */ void on_optionmenu_editview__selected (GtkMenuShell *menu_shell, gpointer data) { GtkWidget *active_item; gint item_index; /* the following fails: the menu_shell has a different window int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(data), "imagenum")); */ int i= GPOINTER_TO_UINT(data); g_assert(i>0); active_item = gtk_menu_get_active (GTK_MENU (menu_shell)); item_index = g_list_index (menu_shell->children, active_item); /* thanks GOD this works!! g_print ("In on_option_selected active: %i\n", item_index);*/ sp->im_editview[i]=item_index; g_debug("on_optionmenu_editview__selected %d is now %d ",i,item_index); editview_callback(i); #ifndef IS_PLYMORPH drawingarea_configure(i); #endif MY_GTK_DRAW(sp->im_widget[i]); } /************************************ setup_handlebox_factors() if there is only one image , then we may only warp it so the handlebox is hidden otherwise if in showmeshes mode, they are shown, and the user may set the factors and warp the image ***********************************/ void setup_handlebox_factor(int lp,int force) { #ifndef IS_PLYMORPH if(sp->im_widget_is_difference_mesh[lp]) return; #endif GtkWidget* hb= lookup_widget ( sp->im_widget[lp] , "handlebox_factors"); g_assert(hb); // these are really to be hidden! //set_sensitive(hb,( sp->max_wins>1 // && (sp->im_editview[lp] == EDITVIEW_SHOWMESHES // ||sp->im_editview[lp] == EDITVIEW_SHOW) // ))); //return ; if( sp->max_wins>1 && (force #ifndef IS_PLYMORPH || sp->im_editview[lp] == EDITVIEW_SHOWMESHES #endif )) gtk_widget_show(hb); else gtk_widget_hide(hb); } xmorph-20140707+nmu2/gtkmorph/loadsave_mesh.h0000664000000000000000000000052312356304631015663 0ustar gboolean save_mesh_to_file(int lp, const char * file); gboolean save_diff_mesh_to_file(int lp, const char * file); gboolean load_diff_from_file(int lp, const char * file); gboolean load_mesh_from_file(int lp, const char * file); gboolean load_image_from_file(int lp, const char *file); void reload_and_scale_image(int i); xmorph-20140707+nmu2/gtkmorph/callbacks_edit.c0000664000000000000000000002376312356304631016003 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include "gtk-meta.h" #ifdef USE_IMLIB #include #else #include #endif #include "libmorph/mesh.h" #include "main.h" #include "utils.h" #include "mesh-gtk.h" #include "callbacks.h" #include "mag.h" #include "support.h" #include "dialogs.h" #include "gtktopdata.h" #include "fourier.hh" /*************************************************************** * drawing area mesh editing *********************************************************** */ /******************************* sometimes when we change the labels..*/ int all_images_need_redraw=0; static void flash_point(GdkDrawable *drawable, int x,int y ) { int MP_SIZE=10, MP_ARC=360 * 64; extern GdkGC *flash_gc; gdk_draw_arc (drawable, flash_gc, TRUE, x - MP_SIZE/2, y - MP_SIZE/2, MP_SIZE,MP_SIZE,0,MP_ARC); } guint flash_points_id; int flash_mi=0,flash_mj=0; static gboolean flash_points(gpointer ignored) { int lp=MAIN_WIN; all_images_need_redraw++; for(; lp>=0; lp--) if(sp->im_drawingarea_widget[lp] != NULL) { flash_point(sp->im_drawingarea_widget[lp]->window, PIXEDITBORDER+meshGetx(&sp->im_mesh[lp],flash_mi,flash_mj), PIXEDITBORDER+meshGety(&sp->im_mesh[lp],flash_mi,flash_mj) ); } return TRUE; } int last_clicked_image = -1; gboolean on_drawingarea_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); g_assert(i > 0); last_clicked_image = i; g_debug("tasto %d",event->keyval); if(sp->im_editview[i]==EDITVIEW_EYES ) return FALSE;//gdk_subimagesel_button_press_event (widget,event,user_data); if( ( i == MAIN_WIN) && sp->max_wins>1 && settings_get_value("automatic mesh interpolation") //&& EDITVIEW_FEATURES != sp->im_editview[MAIN_WIN] ) { show_warning(_("you cant edit this mesh - it is automatically generated as an interpolation\nof the input images meshes .\n(but if you really want to edit, unset 'automatic mesh interpolation')")); return FALSE; } /* if the menu says "view", do not edit */ if( sp->im_editview[i] == EDITVIEW_SHOWMESHES || sp->im_editview[i] == EDITVIEW_SHOW ) { show_warning(_("\ You are currently viewing the warped version of the image\n\ you may not edit this mesh (which refers to the loaded image).\n\ To edit the mesh, select `edit mesh' in the menu (at top center).\n\ I have done it now for you")); set_editview(i, EDITVIEW_EDIT); return FALSE; } if(i!=MAIN_WIN) { /* hide bar-makes room for editing */ GtkWidget* hb= lookup_widget ( sp->im_widget[i] , "handlebox_factors"); GtkWidget* hs= lookup_widget ( sp->im_widget[i] , "handleboxsubimage"); gtk_widget_hide(hb);gtk_widget_hide(hs); } gboolean readonly = image_settings_get_value("mesh is readonly", i); if(!readonly) { int mi,mj,mlabel; enum tools action; gboolean b; b= gdk_mesh_key_press_event (widget,event, user_data, &(sp->im_mesh[i]), &mi,&mj,&mlabel, &action ); mag_draw(); return b; } return FALSE; } gboolean on_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); g_assert(i > 0); last_clicked_image = i; //mag_start_track(i,event); gtk_widget_grab_focus (widget); if(sp->im_editview[i]==EDITVIEW_EYES ) return gdk_subimagesel_button_press_event (widget,event,user_data); if( ( i == MAIN_WIN) && sp->max_wins>1 && settings_get_value("automatic mesh interpolation") ) { show_warning(_("you cant edit this mesh - it is automatically generated as an interpolation\nof the input images meshes .\n(but if you really want to edit, unset 'automatic mesh interpolation')")); return FALSE; } /* if the menu says "view", do not edit */ if( sp->im_editview[i] == EDITVIEW_SHOWMESHES || sp->im_editview[i] == EDITVIEW_SHOW ) { show_warning(_("\ You are currently viewing the warped version of the image\n\ you may not edit this mesh (which refers to the loaded image).\n\ To edit the mesh, select `edit mesh' in the menu (at top center).\n\ I have done it now for you")); set_editview(i, EDITVIEW_EDIT); return FALSE; } if(i!=MAIN_WIN) { /* hide bar-makes room for editing */ GtkWidget* hb= lookup_widget ( sp->im_widget[i] , "handlebox_factors"); GtkWidget* hs= lookup_widget ( sp->im_widget[i] , "handleboxsubimage"); gtk_widget_hide(hb);gtk_widget_hide(hs); } gboolean readonly = image_settings_get_value("mesh is readonly", i); { int mi,mj,mlabel; enum tools action; gboolean b; b= gdk_mesh_button_press_event (widget,event, user_data, &(sp->im_mesh[i]), &mi,&mj,&mlabel, &action,readonly); if(mlabel>0) feat_entry_set(mlabel-1); if(b && event->button==1) { flash_mi=mi; flash_mj=mj; flash_points_id=gtk_timeout_add(200,flash_points,NULL); gtk_widget_grab_focus (widget); } return b; } } gboolean on_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); g_assert(i > 0); if(sp->im_editview[i]==EDITVIEW_EYES ) return gdk_subimagesel_motion_notify_event (widget,event,user_data); if( ( i == MAIN_WIN) && sp->max_wins>1 && settings_get_value("automatic mesh interpolation")) { mag_track(i,event); return FALSE; } /* if the menu says "view", do not edit */ if (sp->im_editview[i] == EDITVIEW_SHOWMESHES || sp->im_editview[i] ==EDITVIEW_SHOW ) { mag_track(i,event); return FALSE; } { int mi,mj; //g_warning("mesh"); gboolean b=gdk_mesh_motion_notify_event (widget,event, user_data, &(sp->im_mesh[i]), &mi,&mj); mag_track(i,event); return b; { //if(settings_get_value("mesh auto sync")) // flash_points(NULL); } } } void redraw_images() { int lp=MAX_WINS; for(; lp>=0; lp--) if(sp->im_drawingarea_widget[lp] != NULL) { MY_GTK_DRAW(sp->im_drawingarea_widget[lp]); } all_images_need_redraw=0; } gboolean on_drawingarea_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); gboolean bool; if(flash_points_id) gtk_timeout_remove(flash_points_id); g_assert(i > 0); if(//event->state & GDK_BUTTON1_MASK && sp->im_editview[i]==EDITVIEW_EYES ) { bool= gdk_subimagesel_button_release_event (widget,event,user_data); if (bool && i == MAIN_WIN ) all_images_need_redraw++; } else { // FIXME perche'?????????? //if( ( i == MAIN_WIN) && sp->max_wins>1) { // if(settings_get_value("automatic mesh interpolation")) { //on_interpolate_meshes1_activate(NULL,NULL); // gtk_widget_draw (sp->im_drawingarea_widget[MAIN_WIN] , NULL); // } //return FALSE; //} /* if the menu says "view", do not edit */ if (sp->im_editview[i] == EDITVIEW_SHOWMESHES || sp->im_editview[i]==EDITVIEW_SHOW ) return FALSE; { int mi,mj; bool=gdk_mesh_button_release_event ( widget,event, user_data, &(sp->im_mesh[i]), &mi,&mj); if( settings_get_value("auto point adjust")) { int j=i-1; while (j>0 && (!sp->im_widget[j] || ! sp->im_warped_pixbuf[j])) j--; if(j>0) { MeshT *srcmesh =&(sp->im_mesh[j]); GdkPixbuf *src = (sp->im_subimage_pixbuf[j]); MeshT *mesh=&(sp->im_mesh[i]); GdkPixbuf *dst= (sp->im_subimage_pixbuf[i]); double nx,ny; double ox=meshGetx(mesh,mi,mj),oy=meshGety(mesh,mi,mj); gboolean e=detect_translation (src,meshGetx(srcmesh,mi,mj),meshGety(srcmesh,mi,mj), dst,ox,oy, // new suggested destination &nx,&ny); if ( (e) ) { meshSetNoundo(mesh,mi,mj,nx,ny); g_debug("auto point adjust from %g %g to %g %g",ox,oy,nx,ny); } } } if( settings_get_value("automatic mesh interpolation")&& sp->max_wins>1) { on_interpolate_meshes1_activate(NULL,NULL); MY_GTK_DRAW (sp->im_drawingarea_widget[MAIN_WIN]); } set_frame_label(i); ///this needs a lot of work if(settings_get_value("cursor jump")) { GtkWidget *d=gtk_widget_get_data_top((sp->im_widget[i]), "scrolledwindow_image"); //if(d) // d=gtk_widget_get_parent(d); if(d) { gint width, height; #if GTK_MAJOR_VERSION == 1 //gtk_widget_get_usize(d,&width,&height); // gdk_window_get_size(drawable,&width,&height); #else // gdk_drawable_get_size(drawable,&width,&height); #endif GtkAdjustment* H=gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW(d)); GtkAdjustment* V=gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW(d)); width=d->allocation.width; height=d->allocation.height; //g_message("scroll frame window %d %d", width,height); if(H && V) { H->value=event->x-width/2; V->value=event->y-height/2; gtk_scrolled_window_set_hadjustment(GTK_SCROLLED_WINDOW(d),H); gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW(d),V); gtk_adjustment_value_changed(H); gtk_adjustment_value_changed(V); } else g_warning("adjustments of scrolls %i unavailable",i); } else g_warning("scrooolls %i unavailable",i); } } } if ( all_images_need_redraw) { redraw_images(); } else { MY_GTK_DRAW (widget); } return bool; } xmorph-20140707+nmu2/gtkmorph/callbacks_warped.c0000664000000000000000000000423212356304631016326 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #ifdef USE_IMLIB #include #else #include #endif #include "gtktopdata.h" #include "main.h" gboolean on_window_warped_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { /* there are two kinds of "window_warped" */ int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); if(i>0) { /* showing a warp of an image */ g_return_val_if_fail(sp->im_warped_widget[i] == widget,FALSE); sp->im_warped_widget[i]=NULL; } else { /* showing an animation of a morph */ GdkPixmap *pixmap =(gtk_widget_get_data_top(widget,"pixmap")); if(pixmap) gdk_pixmap_unref(pixmap); } return FALSE; } gboolean on_drawingarea_warped_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { GdkPixmap *pixmap; // int w=sp->resulting_width, h=sp->resulting_height; int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); if(i>0) pixmap=sp->im_warped_pixmap[i]; else pixmap=gtk_widget_get_data_top(widget,"pixmap"); //extern GdkPixmap **movie_pixmaps; //extern movie_pixmaps_num ; //if(movie_pixmaps_num == 0) return FALSE ; g_return_val_if_fail(pixmap,FALSE); //g_return_if_fail(movie_pixmaps[0]); //g_(pixmap); gdk_gc_set_clip_rectangle (widget->style->fg_gc[widget->state], &event->area); gdk_draw_pixmap(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], pixmap, event->area.x, event->area.y, event->area.x, event->area.y, event->area.width, event->area.height); gdk_gc_set_clip_rectangle (widget->style->fg_gc[widget->state], NULL); return TRUE; } gboolean on_drawingarea_warped_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { return FALSE; } xmorph-20140707+nmu2/gtkmorph/utils-mesh.h~unused0000664000000000000000000000063512356304631016571 0ustar /* inline static gboolean mesh_need_saving(int lp) */ /* { */ /* return sp->im_widget[lp] && sp->im_mesh[lp].changed>0; */ /* } */ /* did the user use it somehow? */ /* inline static gboolean image_used(int lp) */ /* { */ /* return sp->im_widget[lp] && ( sp->im_mesh_filename[lp] || */ /* sp->im_mesh[lp].changed>0 || */ /* sp->im_filename_in[lp] || */ /* sp->im_filename_out[lp]); */ /* } */ xmorph-20140707+nmu2/gtkmorph/dialogs.h0000664000000000000000000000014712356304631014475 0ustar void show_info(const char *str); void show_warning(const char *str); void show_error(const char *str); xmorph-20140707+nmu2/gtkmorph/gtk_subimagesel.c0000664000000000000000000004151712356304631016221 0ustar /*********************** * this file may be engineered to become a piece of a new library called called gtk-extra but I am too lazy to * ****************/ #include "stdio.h" #include "string.h" #include "gtk/gtk.h" #ifdef USE_IMLIB #include #else #include #endif #include "gtktopdata.h" #include "gtk_subimagesel.h" #include "gtk-meta.h" #include "callbacks.h" #include "guide.h" #include "support.h" #include "utils.h" #include "main.h" #include "dialogs.h" #define SQR(A) ( ((unsigned long)(A)) * ((unsigned long)(A)) ) /*****************************************************************************/ /*****************************************************************************/ void gtk_subimasel_save(gtk_subimage_sel_t * sis, FILE *f) { int lp; fprintf(f,"\n\n%u %u\n\n", sis->orig_width, sis->orig_height); fprintf(f,"\n%d %d %d %d\n\n", (int)sis->subimage.x, (int)sis->subimage.y, (int)sis->subimage.width, (int)sis->subimage.height ); for(lp=0;lp<3;lp++) fprintf(f,"\n%f %f\n\n", (double)sis->eyes[lp][0], (double) sis->eyes[lp][1]); fprintf(f,"\n"); } gboolean gtk_subimasel_load(gtk_subimage_sel_t * sis, FILE *f) { char s[201]; int lp=0; fgets(s,200,f); if(strcmp(s,"\n")) { g_message("parsing of subimage info failed at first header!"); return 1; } fgets(s,200,f);/*orig*/ fgets(s,200,f); sscanf(s,"%u %u",&sis->orig_width, &sis->orig_height); fgets(s,200,f);/* /orig*/ fgets(s,200,f);/* rect */ fgets(s,200,f); { int a,b,c,d; sscanf(s,"%d %d %d %d", &a, &b, &c , &d); sis->subimage.x=a; sis->subimage.y=b; sis->subimage.width=c; sis->subimage.height=d; } fgets(s,200,f);/* /rect */ fgets(s,200,f);/* ? ? */ while( 0==strcmp(s,"\n" )) { fgets(s,200,f); if(lp<3) sscanf(s,"%lf %lf", &sis->eyes[lp][0], &sis->eyes[lp][1] ); fgets(s,200,f); /* ? */ lp++; } if(lp!=3) g_warning("there where %d eyes in this subimage?",lp); if(strcmp(s,"\n")) { g_warning("parsing of subimage info failed at end of subimage."); return 2; } else return 0; } /*****************************************************************************/ void gtk_subimasel_reset(gtk_subimage_sel_t * sis, unsigned int width , unsigned int height) { sis->subimage.height= sis->orig_height=height; sis->subimage.width = sis->orig_width =width; sis->subimage.x=0; sis->subimage.y=0; sis->eyes[0][0]=0.33*width; sis->eyes[0][1]=0.45*height; sis->eyes[1][0]=0.67*width; sis->eyes[1][1]=0.45*height; sis->eyes[2][0]=0.5*width; sis->eyes[2][1]=0.8*height; } /*****************************************************************************/ #include "affine.h" /*****************************************************************************/ void eyes2affine(int lp) { gtk_subimage_sel_t *sis= &(sp->subimasel[lp]); //unsigned int w=sis->orig_width, h=sis->orig_height; gtk_subimage_sel_t *destsis= &(sp->subimasel[MAIN_WIN]); //unsigned int w=sis->orig_width, h=sis->orig_height; double *f=sp->transforms[lp].loaded2subimage; double *b=sp->transforms[lp].subimage2loaded; double *df=sp->transforms[MAIN_WIN].loaded2subimage; //double *db=sp->transforms[MAIN_WIN].subimage2loaded; int l,i; double //e[3][2], de[3][2]; double avg[2], davg[2], var[2], dvar[2], covar[2]; for(l=0; l<3; l++) { //eyes in subimage coordinates affine_X_vector(&(de[l][0]),&(destsis->eyes[l][0]),df); //affine_X_vector(&e[l][0], &sis->eyes[l][0], f); } /* good old least squares */ for(i=0; i<2; i++) { avg[i]=davg[i]=0; for(l=0; l<3; l++) { avg[i]+=sis->eyes[l][i]; davg[i]+= de[l][i]; } avg[i]/=3.0; davg[i]/=3.0; } for(i=0; i<2; i++) { dvar[i]=var[i]=covar[i]=0; for(l=0; l<3; l++) { var[i] += SQR( sis->eyes[l][i] - avg[i] ); dvar[i]+= SQR( de[l][i] -davg[i] ); covar[i]+=( sis->eyes[l][i] - avg[i] ) *( de[l][i] -davg[i] ); } var[i]/=3.0; dvar[i]/=3.0; covar[i]/=3.0; } f[0]=covar[0]/var[0]; f[4]=covar[1] / var[1]; f[2]=davg[0]-avg[0]* f[0]; f[5]=davg[1]-avg[1]* f[4]; invert(b,f); } void affine2subimage(int lp) { gtk_subimage_sel_t *sis= &(sp->subimasel[lp]); //unsigned int w=sis->orig_width, h=sis->orig_height; //gtk_subimage_sel_t *destsis= &(sp->subimasel[MAIN_WIN]); //double *f=sp->transforms[lp].loaded2subimage; double *b=sp->transforms[lp].subimage2loaded; //double *df=sp->transforms[MAIN_WIN].loaded2subimage; //double *db=sp->transforms[MAIN_WIN].subimage2loaded; sis->subimage.width = sp->resulting_width * b[0]; sis->subimage.height = sp->resulting_height * b[4]; sis->subimage.x=b[2]; //-f[2]/f[0] ;// -sis->subimage.width/2; sis->subimage.y=b[5]; //-f[5]/f[4] ;// -sis->subimage.height/2; } //void eyes2subimage(int lp) //{ // eyes2affine(lp); affine2subimage(lp); //} /* computes affines from subimage */ void subimage2affines(int lp) { double *f=sp->transforms[lp].loaded2subimage; double *b=sp->transforms[lp].subimage2loaded; gtk_subimage_sel_t *sis= &(sp->subimasel[lp]); double srcxcen=sis->subimage.x+ (double)sis->subimage.width/2.0, dstxcen=(double)sp->resulting_width/2.0; if(image_settings_get_value("preserve aspect ratio",lp)) { f[0]=f[4] =(double)sp->resulting_height / (double)sis->subimage.height ; f[2]=dstxcen -f[0]*srcxcen; f[5]=-f[4]*(double)sis->subimage.y; } else { f[0]=(double)sp->resulting_width / (double)sis->subimage.width; f[2]=-f[0]*(double)sis->subimage.x; f[4] =(double)sp->resulting_height / (double)sis->subimage.height ; f[5]=-f[4]*(double)sis->subimage.y; } invert(b,f); } /* reset eyes position so that it reflects the position of the eyes in the main window */ void affine2eyes(int lp) { gtk_subimage_sel_t *sis= &(sp->subimasel[lp]), *destsis= &(sp->subimasel[MAIN_WIN]); //unsigned int w=sis->orig_width, h=sis->orig_height; //double *f=sp->transforms[lp].loaded2subimage; double *b=sp->transforms[lp].subimage2loaded; double *df=sp->transforms[MAIN_WIN].loaded2subimage; //double *db=sp->transforms[MAIN_WIN].subimage2loaded; int l; double de[2]; for(l=0; l<3; l++) { affine_X_vector(de,&destsis->eyes[l][0],df); affine_X_vector(&sis->eyes[l][0],de,b); } } /************************************************************************/ void update_eyes( gtk_subimage_sel_t * sis, //coordinates in the loaded image int x,int y) { int lp,which=-1; unsigned long dist= 1000L,d; //unsigned int w=sis->orig_width, h=sis->orig_height; for(lp=0;lp<=2;lp++) { d= SQR(x - sis->eyes[lp][0])+ SQR(y - sis->eyes[lp][1]); if (deyes[which][0]=(double)x;///(double)w; sis->eyes[which][1]=(double)y;///(double)h; } /*****************************************************************************/ gboolean gdk_subimagesel_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { gtk_subimage_sel_t * sis= (gtk_widget_get_data_top(widget,"gtk_subimagesel")); g_assert(sis); if(event->button == 1) { update_eyes(sis,event->x - PIXLOADEDBORDER, event->y - PIXLOADEDBORDER); //FIXME should probably be expose in gtk2.0 //http://developer.gnome.org/dotplan/porting/ar01s18.html MY_GTK_DRAW(widget); return TRUE; } else return FALSE; } /*****************************************************************************/ void subimages_spinbuttons_set(int i); gboolean gdk_subimagesel_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data) { gtk_subimage_sel_t * sis= (gtk_widget_get_data_top(widget,"gtk_subimagesel")); int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); int x,y; GdkModifierType state; static int howmany=0; howmany++; g_assert(sis == &(sp->subimasel[i])); g_assert(i && sp->im_widget[i]); g_assert(sis); if (event->is_hint) gdk_window_get_pointer (event->window, &x, &y, &state); else { x = event->x; y = event->y; state = event->state; } if(state & GDK_BUTTON1_MASK) { update_eyes(sis,x - PIXLOADEDBORDER,y -PIXLOADEDBORDER); /* show how the whole is being dragged */ if (howmany > 9 && i != MAIN_WIN) { eyes2affine(i); affine2subimage(i); howmany=0; MY_GTK_DRAW(lookup_widget(widget,"handleboxsubimage")); } MY_GTK_DRAW(widget); return TRUE; } else return FALSE; } gboolean gdk_subimagesel_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); g_assert(i && sp->im_widget[i]); if (i != MAIN_WIN) { subimages_spinbuttons_set(i); MY_GTK_DRAW(lookup_widget(widget,"handleboxsubimage")); } return TRUE; } /*****************************************************************************/ gboolean gdk_subimagesel_draw(GdkDrawable *drawable, gtk_subimage_sel_t * sis, GdkGC *gc) { int l,x,y, MP_SIZE=10,MP_ARC=360 * 64; for(l=0;l<3;l++) { x=sis->eyes[l][0] +PIXLOADEDBORDER; y=sis->eyes[l][1] +PIXLOADEDBORDER; gdk_draw_arc (drawable, gc, TRUE, x - MP_SIZE/2, y - MP_SIZE/2, MP_SIZE,MP_SIZE,0,MP_ARC); } { GdkRectangle *s=&(sis->subimage); GdkPoint xpoints[4]; xpoints[0].x = s->x +PIXLOADEDBORDER; xpoints[0].y = s->y +PIXLOADEDBORDER; xpoints[1].x = s->x+s->width +PIXLOADEDBORDER; xpoints[1].y = s->y+s->height +PIXLOADEDBORDER; xpoints[2].x = s->x +PIXLOADEDBORDER; xpoints[2].y = s->y+s->height +PIXLOADEDBORDER; xpoints[3].x = s->x+s->width +PIXLOADEDBORDER; xpoints[3].y = s->y +PIXLOADEDBORDER; gdk_draw_lines(drawable, gc , xpoints, 4); xpoints[0].x = s->x +PIXLOADEDBORDER; xpoints[0].y = s->y+s->height +PIXLOADEDBORDER; xpoints[1].x = s->x +PIXLOADEDBORDER; xpoints[1].y = s->y +PIXLOADEDBORDER; xpoints[2].x = s->x+s->width +PIXLOADEDBORDER; xpoints[2].y = s->y +PIXLOADEDBORDER; xpoints[3].x = s->x+s->width +PIXLOADEDBORDER; xpoints[3].y = s->y+s->height +PIXLOADEDBORDER; gdk_draw_lines(drawable, gc , xpoints, 4); } return TRUE; } /******************************************************************** * * input image window, subimage handlebox * ****************************************************************** **/ void on_subimage_apply_clicked (GtkButton *button, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(button),"imagenum")); if ( sp-> im_filename_in[i] == NULL || strlen( sp-> im_filename_in[i]) == 0) { show_warning( _("\ you must load an image before you may choose a subimage") ); } else { subimage2affines(i); reload_and_scale_image(i); drawingarea_configure ( i); set_editview( i, EDITVIEW_EDIT); guide_callback("select subimage",i); } } /*****************************************************************************/ void on_handleboxsubimage_show (GtkWidget *widget, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); g_assert(i > 0); //FIXME this doesnt work so we use a different window in glade if ( i == MAIN_WIN) gtk_widget_hide(widget); else subimages_spinbuttons_set(i); } /*****************************************************************************/ static gboolean lok=FALSE; void subimages_spinbuttons_set(int i) { gtk_subimage_sel_t *sis= &(sp->subimasel[i]); GtkWidget *w,*W=GTK_WIDGET(sp->im_widget[i]); if(lok || i == MAIN_WIN) return; lok=TRUE; w=lookup_widget(W,"spinbuttonh"); gtk_spin_button_set_value (GTK_SPIN_BUTTON(w), sis->subimage.height); w=lookup_widget(W,"spinbuttonw"); gtk_spin_button_set_value (GTK_SPIN_BUTTON(w), sis->subimage.width); w=lookup_widget(W,"spinbuttony"); gtk_spin_button_set_value (GTK_SPIN_BUTTON(w), sis->subimage.y+sis->subimage.height/2); w=lookup_widget(W,"spinbuttonx"); gtk_spin_button_set_value (GTK_SPIN_BUTTON(w), sis->subimage.x+sis->subimage.width/2); lok=FALSE; } #undef CLAMP_SUBIMAGE void on_spinbuttonx_changed (my_GtkSpinButton *editable,//GtkEditable *editable, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(editable), "imagenum")); gtk_subimage_sel_t *sis= &(sp->subimasel[i]); g_assert(i>0); sis->subimage.x= gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON(editable)) -sis->subimage.width/2; #ifdef CLAMP_SUBIMAGE sis->subimage.x = CLAMP( sis->subimage.x, 0, sp-> im_width[i] -sis->subimage.width ); // gtk_spin_button_set_value (GTK_SPIN_BUTTON(widget), // sis->subimage.x+sis->subimage.width/2); #endif subimages_spinbuttons_set(i); subimage2affines(i); affine2eyes(i); MY_GTK_DRAW(sp->im_drawingarea_widget[i]); } void on_spinbuttony_changed (my_GtkSpinButton *editable, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(editable), "imagenum")); gtk_subimage_sel_t *sis= &(sp->subimasel[i]); g_assert(i>0); sis->subimage.y= gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON(editable)) - sis->subimage.height/2; #ifdef CLAMP_SUBIMAGE sis->subimage.y = CLAMP( sis->subimage.y, 0, sp-> im_height[i] -sis->subimage.height ); gtk_spin_button_set_value (GTK_SPIN_BUTTON(editable), sis->subimage.y+sis->subimage.height/2); #endif subimages_spinbuttons_set(i); subimage2affines(i); affine2eyes(i); MY_GTK_DRAW(sp->im_drawingarea_widget[i]); } void on_spinbuttonw_changed (my_GtkSpinButton *editable, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(editable), "imagenum")); gtk_subimage_sel_t *sis= &(sp->subimasel[i]); int cx=sis->subimage.x+sis->subimage.width/2; g_assert(i>0); sis->subimage.width= gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON(editable)); sis->subimage.x= cx //gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON(editable)) -sis->subimage.width/2; #ifdef CLAMP_SUBIMAGE sis->subimage.width = CLAMP( sis->subimage.width, 8, sp-> im_width[i] -sis->subimage.x ); #endif if(image_settings_get_value("preserve aspect ratio",i)) { int cy=sis->subimage.y+sis->subimage.height/2; sis->subimage.height= sis->subimage.width * sp->resulting_height / sp->resulting_width ; sis->subimage.y= cy //gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON(editable)) - sis->subimage.height/2; } subimages_spinbuttons_set(i); subimage2affines(i); affine2eyes(i); MY_GTK_DRAW(sp->im_drawingarea_widget[i]); } void on_spinbuttonh_changed (my_GtkSpinButton *editable, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(editable), "imagenum")); gtk_subimage_sel_t *sis= &(sp->subimasel[i]); int cy=sis->subimage.y+sis->subimage.height/2; g_assert(i>0); sis->subimage.height= gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON(editable)); sis->subimage.y= cy //gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON(editable)) - sis->subimage.height/2; #ifdef CLAMP_SUBIMAGE sis->subimage.height = CLAMP( sis->subimage.height, 8, sp-> im_height[i] -sis->subimage.y ); #endif if(image_settings_get_value("preserve aspect ratio",i)) { int cx=sis->subimage.x+sis->subimage.width/2; sis->subimage.width= sis->subimage.height * sp->resulting_width / sp->resulting_height; sis->subimage.x= cx //gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON(editable)) -sis->subimage.width/2; } subimages_spinbuttons_set(i); subimage2affines(i); affine2eyes(i); MY_GTK_DRAW(sp->im_drawingarea_widget[i]); } /*****************************************************************************/ void on_reset_subimage_clicked (GtkButton *button, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(button), "imagenum")); gtk_subimage_sel_t *sis= &(sp->subimasel[i]); g_assert(i>0); gtk_subimasel_reset(sis,sis->orig_width,sis->orig_height); subimages_spinbuttons_set(i); MY_GTK_DRAW(sp->im_drawingarea_widget[i]); } xmorph-20140707+nmu2/gtkmorph/movies.c0000664000000000000000000004420612356304631014354 0ustar #ifdef HAVE_CONFIG_H # include #endif #include "stdio.h" #include "strings.h" #include "string.h" #include #include "math.h" #include #ifdef USE_IMLIB #include #else #include #endif #include #include "gtk-meta.h" #include "gtktopdata.h" #include "gtk_subimagesel.h" #include "main.h" #include "callbacks.h" #include "interface.h" #include "support.h" #include "dialogs.h" #include "loadsave.h" #ifndef IS_PLYMORPH #include "loadsave_mesh.h" #else #include "loadsave_ply.h" #endif //#include "mesh-gtk.h" //#include "utils.h" //#include "../libmorph/relax.h" #include "movies.h" //#define PRINT_MORPH_TIME /************************************* making movies ******************/ void on_morph_sequence1_activate (GtkMenuItem *menuitem, gpointer user_data) { static GtkWidget* m=NULL; if( sp->max_wins<=1) { show_warning( _("to morph, you must have at least two input images")); return; } else { if(m==NULL || !GTK_IS_WIDGET (m)) m=create_window_movie(); gtk_widget_show(m); } } morph_factors_t morph_factors_saved[2]; int movie_init() { int lp; for(lp=MAX_WINS; lp >=0; lp--) { morph_factors_saved[0].im_warp_factor[lp]=0; morph_factors_saved[1].im_warp_factor[lp]=0; morph_factors_saved[0].im_dissolve_factor[lp]=0; morph_factors_saved[1].im_dissolve_factor[lp]=0; } morph_factors_saved[0].im_warp_factor[1]=1; morph_factors_saved[1].im_warp_factor[2]=1; morph_factors_saved[0].im_dissolve_factor[1]=1; morph_factors_saved[1].im_dissolve_factor[2]=1; return 0; } void store_morph_factors(int i) { memcpy (& morph_factors_saved[i], &sp->mf, sizeof(morph_factors_t)); } #include "callbacks_subimg.h" void restore_morph_factors(int i) { memcpy(& sp->mf, &morph_factors_saved[i], sizeof(morph_factors_t)); redraw_spins(-3); } void on_store_morph_factors_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp; for(lp=1;lp<=MAX_WINS; lp++) if(sp->im_widget[lp] != NULL) setup_handlebox_factor(lp,TRUE); //set_editview(lp, EDITVIEW_SHOWMESHES); } void on_restore_morph_factors1_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp; for(lp=1;lp<=MAX_WINS; lp++) if(sp->im_widget[lp] != NULL) setup_handlebox_factor(lp,TRUE); //set_editview(lp, EDITVIEW_SHOWMESHES); } void on_restore_equal_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp,i=0; for(lp=1;lp<=MAX_WINS; lp++) if( #ifndef IS_PLYMORPH !sp->im_widget_is_difference_mesh[lp] && #endif sp->im_widget[lp] != NULL ) i++; for(lp=1;lp<=MAX_WINS; lp++) if( #ifndef IS_PLYMORPH !sp->im_widget_is_difference_mesh[lp] && #endif sp->im_widget[lp] != NULL) sp->mf.im_warp_factor[lp]=sp->mf.im_dissolve_factor[lp]=1./(double)i; redraw_spins(-3); } void on_restore_start_activate (GtkMenuItem *menuitem, gpointer user_data) { restore_morph_factors(0); } void on_restore_end_activate (GtkMenuItem *menuitem, gpointer user_data) { restore_morph_factors(1); } void on_store_start_activate (GtkMenuItem *menuitem, gpointer user_data) { store_morph_factors(0); } void on_store_end_activate (GtkMenuItem *menuitem, gpointer user_data) { store_morph_factors(1); } #include #include #include #include void movie_names(char *name[],char * basename, char * ext,int first, int tot) { int ima; for(ima=0; ima < tot; ima++) name[ima]=g_strdup_printf("%s%0+4d.%s",basename,ima+first,ext); } gchar * movie_temp_ext() { char *ext="ppm"; #ifdef HAVE_GDK_FORMATS GSList *FORMAT=NULL; { extern GSList *writable_formats ; if(!writable_formats ) create_list_of_formats(); FORMAT=writable_formats; while(FORMAT) { gpointer data=FORMAT->data; gchar * type= gdk_pixbuf_format_get_name ((GdkPixbufFormat *)data); if (0== strcmp("png",type)) break; FORMAT=g_slist_next(FORMAT); } if(FORMAT) { gpointer data=FORMAT->data; ext=gdk_pixbuf_format_get_name (data); } } #endif return ext; } void movie_data( GtkButton *button, int *first, int *tot, gchar **basename) { GtkWidget* m=NULL, *widget=GTK_WIDGET(button); GtkSpinButton *spin; m=gtk_widget_get_data_top(widget,"file_base_name"); g_assert(m); //G_CONST_RETURN gchar* text=gtk_entry_get_text(GTK_ENTRY(m)); *basename= (char *) text; m=gtk_widget_get_data_top(widget,"spinbutton_first_file"); g_assert(m); spin = GTK_SPIN_BUTTON (m); *first=gtk_spin_button_get_value_as_float (spin); m=gtk_widget_get_data_top(widget,"spinbutton_n_files"); g_assert(m); spin = GTK_SPIN_BUTTON (m); *tot=gtk_spin_button_get_value_as_float (spin); } #ifdef ANIMATE_INTERNALLY GdkPixmap **movie_pixmaps =NULL; int movie_pixmaps_num =0; int movie_pixmaps_frame=0; int movie_pixmap_free() { GdkPixmap **p =movie_pixmaps; if(!movie_pixmaps) return 0; movie_pixmaps=NULL; int lp=movie_pixmaps_num-1,z=lp; while(lp) {gdk_pixmap_unref(p[lp]); p[lp]=0; lp--;} g_free(p); movie_pixmaps_num=0; movie_pixmaps_frame=0; return z; } gboolean movie_pixmap_free_callback(GtkWidget *widget, GdkEvent *event, gpointer user_data) { movie_pixmap_free(); return FALSE; } gint animator_loop=-4; static gboolean draw_frame( gpointer data) { GtkWidget *window=data; if(!movie_pixmaps || !data || !GTK_WIDGET(window) //#if GTK_MAJOR_VERSION >= 2 // || !GDK_IS_DRAWABLE(widget->window) //#endif ) return FALSE; movie_pixmaps_frame++; if(movie_pixmaps_frame>=movie_pixmaps_num) movie_pixmaps_frame=0; { GtkWidget *widget=gtk_widget_get_data_top(window,"drawingarea_warped"); #if GTK_MAJOR_VERSION >= 2 if(GDK_IS_DRAWABLE(widget->window) ) #endif { GdkPixmap *pm = movie_pixmaps[movie_pixmaps_frame]; int w=sp->resulting_width, h=sp->resulting_height; gdk_draw_pixmap(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], pm, 0,0,0,0,w,h); } } { GtkWidget *widget=gtk_widget_get_data_top(window,"warped_frame"); gchar *label=g_strdup_printf("frame %04d",movie_pixmaps_frame); gtk_frame_set_label (GTK_FRAME(widget),label); g_free(label); } return TRUE; } #endif gboolean should_stop_computation=FALSE; void on_stop_clicked (GtkButton *button, gpointer user_data) { should_stop_computation=TRUE; } static void __movie_set_sensitives__(GtkButton *button,gboolean b) { GtkWidget * stop=lookup_widget(button,"stop"); gtk_widget_set_sensitive(stop,!b); gtk_widget_set_sensitive(button,b); } void on_movie_ok_clicked (GtkButton *button, gpointer user_data) { char * basename; int ima, lp, first, tot; gchar *ext=movie_temp_ext(); #ifndef IS_PLYMORPH /* stops all background processes that are smoothing the meshes */ smooth_idle_stop(); #endif movie_data( button, &first, &tot, &basename); if(tot<2) { show_error("total number of images must be >=2"); return; } char *name[tot]; movie_names(name,basename,ext, first, tot); { gchar * err= g_strdup (""); struct stat buf; for(ima=0; ima < tot; ima++) { if (0== stat (name[ima],&buf)) { { gchar * err2=g_strdup_printf("%s\n %s ",err,name[ima]); g_free(err); err=err2; } //perror(name[ima]); } } if( strlen(err) > 0) { { gchar * err2=g_strdup_printf("the following files already exist:\n%s",err); g_free(err); err=err2; } show_error(err); for(ima=0; ima < tot; ima++) g_free(name[ima]); g_free(err); return ; } g_free(err); } #ifdef ANIMATE_INTERNALLY if(movie_pixmaps) movie_pixmap_free(); movie_pixmaps = g_new0(GdkPixmap *,tot); movie_pixmaps_num =tot; #endif //#ifdef PRINT_MORPH_TIME GTimeVal bef,aft; g_get_current_time(&bef); //#endif __movie_set_sensitives__(button,FALSE); for(ima=0; ima < tot; ima++) { if(should_stop_computation) { for(ima=0; ima < tot; ima++) g_free(name[ima]); should_stop_computation=FALSE; __movie_set_sensitives__(button,TRUE); return; } double a = (double)ima / ((double)tot-1.0), b=1-a; for(lp=MAX_WINS; lp >=0; lp--) { sp->mf.im_warp_factor[lp]= morph_factors_saved[0].im_warp_factor[lp] * b + morph_factors_saved[1].im_warp_factor[lp] * a; sp->mf.im_dissolve_factor[lp]= morph_factors_saved[0].im_dissolve_factor[lp] * b + morph_factors_saved[1].im_dissolve_factor[lp] * a; } on_interpolate_meshes1_activate (NULL,NULL); redraw_spins(-3); /* computation going on */ while (gtk_events_pending()) gtk_main_iteration(); /* computation continued */ on_morph_images1_activate( NULL, NULL); /* computation going on */ #ifdef IS_PLYMORPH /* refresh sp->im_pixbuf[MAIN_WIN */ MY_GTK_DRAW(sp->im_drawingarea_widget[MAIN_WIN]); #endif while (gtk_events_pending()) gtk_main_iteration(); /* computation continued */ #ifdef IS_PLYMORPH GdkPixbuf *pb=sp->im_pixbuf[MAIN_WIN]; #else GdkPixbuf *pb=sp->im_warped_pixbuf[MAIN_WIN]; #endif #ifdef ANIMATE_INTERNALLY { int w=sp->resulting_width; int h=sp->resulting_height; movie_pixmaps[ima] = gdk_pixmap_new(sp->im_widget[MAIN_WIN]->window, w,h,-1); gdk_pixbuf_render_to_drawable (pb, movie_pixmaps[ima], sp->im_widget[MAIN_WIN]->style->black_gc, //GdkGC *gc, 0, //int src_x, 0, //int src_y, 0, //int dest_x, 0, //int dest_y, w,h, //width, height, GDK_RGB_DITHER_NORMAL,//GdkRgbDither dither, 0, //int x_dither, 0 ); //int y_dither); } #endif #ifdef HAVE_GDK_FORMATS if(0 != strcmp(ext,"ppm")) { gboolean result=TRUE; GError *error=NULL; result = gdk_pixbuf_save( pb, name[ima], ext,&error,NULL); g_assert ((result && !error ) || (!result && error )); if(error) {show_error((error)->message);g_error_free (error);} } else #endif save_as_ppm(name[ima], pb ); { char * rem=NULL, *s =NULL; //#ifdef PRINT_MORPH_TIME g_get_current_time(&aft); { double secs=(double)(aft.tv_sec-bef.tv_sec) + (double)(aft.tv_usec -bef.tv_usec) /1e6; if (tot>ima+1) { secs= ((double)(tot-ima-1))* secs / (double)(ima+1); int min=floor(secs/60); int sec= secs - min*60; rem=g_strdup_printf("%2dm:%02ds",min,sec); } else rem=g_strdup_printf(" 0"); } //#endif GtkWidget* hb= lookup_widget ( button ,"information_label"); if(hb) { s=g_strdup_printf("F %d ETA %s",ima,rem); gtk_label_set_text(hb,s); } else { s=g_strdup_printf("frame %d estimated time %s",ima,rem); gtk_label_set_text(hb,s); } g_free(s); g_free(rem); } } //#ifdef PRINT_MORPH_TIME g_get_current_time(&aft); { double secs=(double)(aft.tv_sec-bef.tv_sec) + (double)(aft.tv_usec -bef.tv_usec) /1e6; int min=floor(secs/60); int sec= secs - min*60; g_message("total movie time %2dm:%02ds",min,sec ); } //#endif __movie_set_sensitives__(button,TRUE); on_movie_replay_clicked(button, user_data); for(ima=0; ima < tot; ima++) g_free(name[ima]); } void on_movie_help_clicked (GtkButton *button, gpointer user_data) { char * basename; int ima, first, tot; movie_data( button, &first, &tot, &basename); { char *name[tot], *help; gchar * movie_temp_ext(); gchar *ext=movie_temp_ext(); movie_names(name,basename,ext, first, tot); help=g_strdup_printf(_("Help on movie making: when you hit ok, gtkmorph will repeat a loop for %d times. Any time, it will set the warping and image-blending factors to an interpolation between the values that you have stored as 'first' and 'end'. Any time, it will save the morphed image (in format %s), starting from '%s' and ending with '%s'. Then it will create any animation that you have asked to create: the animated gif is called '%s.gif', the mpeg file is called '%s.mpeg' (and mpeg_encode will use '%s.param' for parameters if available: see in %s/mpeg.param an example, or copy the end part of %s.auto.param) and play them. You may recreate animations from preexisting frames by hitting 'replay'" ), tot, ext,name[0], name[tot-1] ,basename,basename,basename, DATADIR "/" PACKAGE,basename ); show_info(help); for(ima=0; ima < tot; ima++) g_free(name[ima]); g_free(help); } } void on_movie_replay_clicked (GtkButton *button, gpointer user_data) { char * basename; int ima, first, tot; movie_data( button, &first, &tot, &basename); { char *name[tot]; gchar *ext=movie_temp_ext(); movie_names(name,basename, ext, first, tot); char *names=g_strdup(""); for(ima=0; ima < tot; ima++) { char * newnames=g_strdup_printf("%s '%s'",names,name[ima]); g_free(names); names=newnames; } { GtkWidget *widget=GTK_WIDGET(button); GtkCheckButton *b; /******************** animate ******************/ b=gtk_widget_get_data_top(widget,"animate"); g_assert(b); if(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(b))) { #ifdef ANIMATE_INTERNALLY if(movie_pixmaps_num >0) { GtkWidget* animator=create_window_warped (); /* resizes the viewport so that the scrolling bars will work ok */ int w=sp->resulting_width, h=sp->resulting_height; GtkWidget *g =lookup_widget(animator,"drawingarea_warped"); g_assert(g); gtk_widget_set_data_top(animator,"pixmap", movie_pixmaps[0]); #if GTK_MAJOR_VERSION < 2 gtk_widget_set_usize(g,w,h); #else gtk_widget_set_size_request(g,w,h); #endif gtk_widget_show_all(animator); gtk_signal_connect (GTK_OBJECT (animator), "delete-event", (movie_pixmap_free_callback), NULL); animator_loop=g_timeout_add ((int)ceil(3000/tot),draw_frame, g); } else // if the pixmaps are not available internally, fall back #endif { gchar *cmd= g_strdup_printf ("animate -delay %d %s &",(int)ceil(300/tot),names); system(cmd); g_free(cmd); } } /******************* avi *********************/ b=gtk_widget_get_data_top(widget,"avi"); //g_assert(b); if(b && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(b))) { if(strcmp(ext,"png")) show_error(_("Sorry : temporary files can only be saved as png, and not as ppm; but 'mencoder' does not read ppm files. You must compile gtkmorph using a newer version of libGTK.")); else { if ( strstr(basename,",")) show_error(_("sorry : cannot create AVI if a comma ',' is in the filename (blame this on 'mencoder')")); else { int w=sp->resulting_width, h=sp->resulting_height; char *commanames=g_strdup(""); for(ima=0; ima < tot; ima++) { char * n=g_strdup_printf("%s,'%s'",commanames,name[ima]); g_free(commanames); commanames=n; } gchar *cmd= g_strdup_printf ("\ mencoder mf://%s -mf w=%d:h=%d:fps=%d:type=png -ovc lavc -o '%s.avi' && \ mplayer -noconsolecontrols -loop 10 -fixed-vo '%s.avi' ", commanames,w,h, MAX(25,2+2/tot), basename,basename); system(cmd); g_free(cmd); g_free(commanames); } } } /******************* gif *********************/ b=gtk_widget_get_data_top(widget,"animated_gif"); g_assert(b); if(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(b))) { gchar *cmd= g_strdup_printf ("\ convert %s '%s.gif' && animate -delay %d '%s.gif' &", names,basename, 1+200/tot, basename); system(cmd); g_free(cmd); } /***************** mpeg **********************/ b=gtk_widget_get_data_top(widget,"animated_mpeg"); g_assert(b); if(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(b))) { char *tmpname=g_strdup_printf("%s.auto.param", basename), *parmname=g_strdup_printf ("%s.param",basename); FILE *tmp_file=fopen(tmpname,"w"), *parmfile; char *cmd= g_strdup_printf ("\ mpeg_encode -quiet 3 '%s' && { \ if [ -r /usr/bin/X11/mpeg_play ] ; then mpeg_play -quiet '%s.mpeg' ; \ else xanim '%s.mpeg' ; fi ; } &", tmpname,basename,basename); if(tmp_file) { fprintf(tmp_file,"\ #this file is automatically generated and will be overwritten\n"); if(tmpname[0]=='/') fprintf(tmp_file,"\ OUTPUT %s.mpeg\n\ INPUT_DIR \n\ INPUT\n",basename); else fprintf(tmp_file,"\ OUTPUT %s.mpeg\n\ INPUT_DIR .\n\ INPUT\n",basename); for(ima=0; ima < tot; ima++) fprintf(tmp_file,"%s\n", name[ima]); fprintf(tmp_file,"\ END_INPUT\n\ BASE_FILE_FORMAT PPM\n\ INPUT_CONVERT *\n"); parmfile=fopen(parmname,"r"); if( NULL!= parmfile) { char s[500]; while(!feof(parmfile)) { fgets(s,500,parmfile); fputs(s,tmp_file); } fclose(parmfile); } else { int slices=16; while ( slices >1 && ( sp-> resulting_height %slices) != 0 ) slices --; fprintf(tmp_file,"\ ### these parameters will be read from file %s\n\ ### if you create it\n\ ### explanation of parameters is in the help of mpeg_encode\n\ PATTERN IBBPBBPBBPBBPBB\n\ GOP_SIZE 30\n\ SLICES_PER_FRAME %d\n\ PIXEL HALF\n\ RANGE 10\n\ FRAME_RATE 24\n\ PSEARCH_ALG TWOLEVEL\n\ BSEARCH_ALG CROSS2\n\ IQSCALE 1\n\ PQSCALE 1\n\ BQSCALE 1\n\ REFERENCE_FRAME DECODED\n",parmname,slices); } fclose(tmp_file); system(cmd); g_free(cmd); g_free(parmname); } else show_error(g_strdup_printf("\ can't open the temporary file %s for writing: %s", tmpname,strerror(errno))); } } for(ima=0; ima < tot; ima++) g_free(name[ima]); } } xmorph-20140707+nmu2/gtkmorph/wavelet.cc0000664000000000000000000003771012356331651014670 0ustar #include #include //#include "waili/gtk.h" #include #include //memcpy #include #include /*************/ //#include "application.hh" #include #ifdef USE_IMLIB #include #else #include #endif #include "gtk-meta.h" #ifdef G_HAVE_ISO_VARARGS #define message(...) printf(__VA_ARGS__) #elif defined(G_HAVE_GNUC_VARARGS) #define message(format...) printf(format) #else /* no varargs macros */ static void message (const char *format, ...) { va_list args; va_start (args, format); printf (format, args); va_end (args); } #endif #define EXTRA_PRECISION 16 #define DITHER 1 PixType round_and_dither( double v) { static double delta=0; v=v+delta; double nv=floor(v+0.5); delta=v-nv; return (PixType)nv; } PixType round_and_dither( PixType v) { return v; } #if EXTRA_PRECISION == 1 #define REDUCE_PRECISION(A) (round_and_dither(A)) #else static inline gint REDUCE_PRECISION(double A) { return round_and_dither(A/(double)EXTRA_PRECISION); } #endif static inline guchar pix_2_char(PixType A) { gint v= REDUCE_PRECISION(A)+128; return CLAMP( v ,0,255); } /*************/ #if DITHER PixType dithers[511]; static void dither_init() { int lp; for(lp=0;lp<512;lp++) { int x = rand(); x = ABS(x); x= x % EXTRA_PRECISION; x = x - EXTRA_PRECISION /2 ; dithers[lp]=x; } } static PixType add_dither() { static int d=0; d++; if(d>511) d=0; return dithers[d]; } #endif Image *gdk_to_waili(GdkPixbuf *src) { guchar * data = gdk_pixbuf_get_pixels(src); int ch,c,r, channels=gdk_pixbuf_get_n_channels(src), stride=gdk_pixbuf_get_rowstride(src), w= gdk_pixbuf_get_width(src), h=gdk_pixbuf_get_height(src); Image * dst = new Image(w,h,channels); g_assert(data); for (r = 0; r < h; r++) for (c = 0; c < w; c++) for (ch = 0; ch < channels; ch++) { (*dst)(c, r, ch) = ((PixType) ( data[ch+ c*channels + stride*r]-128)) #if EXTRA_PRECISION != 1 *EXTRA_PRECISION #endif #if DITHER + add_dither() #endif ; } return dst; } /*************/ void waili_to_gdk(GdkPixbuf *dst,Image *src) { int channels=src->GetChannels(), w=src->GetCols(0), h=src->GetRows(0), c ,r ; guchar * data = gdk_pixbuf_get_pixels(dst); int stride=gdk_pixbuf_get_rowstride(dst); assert(channels==gdk_pixbuf_get_n_channels(dst)); assert(w==gdk_pixbuf_get_width(dst)); assert(h==gdk_pixbuf_get_height(dst)); switch(channels) { case 1: for (r = 0; r < h; r++) for (c = 0; c < w; c++) { data[ c + stride*r]= data[ c + stride*r+1]= data[ c + stride*r+2]= pix_2_char((*src)(c, r, 0)); } break; case 3: case 4: for (r = 0; r < h; r++) for (c = 0; c < w; c++) for (int ch = 0; ch < channels; ch++) { data[ch+ c*channels + stride*r]=pix_2_char((*src)(c, r, ch)); } break; default: abort(); } } /*************/ GdkPixbuf *waili_to_gdk(Image *src) { int channels=src->GetChannels(), w=src->GetCols(0), h=src->GetRows(0) ; GdkPixbuf *dst=gdk_pixbuf_new (GDK_COLORSPACE_RGB,//GdkColorspace colorspace, (channels==4?1:0),//gboolean has_alpha, 8,//int bits_per_sample, w,//int width, h);//int height); waili_to_gdk(dst,src); return dst; } /********************************************************************/ /*************/ class statdata { public: Channel *C; #ifdef __APPLICATION_HH__ Application *H; #endif double a; // average double v; // variance double k; // 4th order centered moment PixType max, min; int depth, subband; statdata() {max=min=0; a=v=k=0; C=NULL; #ifdef __APPLICATION_HH__ H=NULL; #endif }; void print() const { //http://mathworld.wolfram.com/Kurtosis.html excess kurtosis printf(\ "avg %+6.2f sigma %6.2f exc.kurtosis %6.2f min %+5.1f max %+5.2f", a/EXTRA_PRECISION, sqrt(v)/EXTRA_PRECISION, k/v/v-3, ((double)min)/EXTRA_PRECISION,((double)max)/EXTRA_PRECISION ); } ~statdata () { #ifdef __APPLICATION_HH__ if(H) delete H; H=NULL; #endif } statdata operator+(const statdata O) { abort(); //should learn more on C++ statdata st; st.v = O.v + this->v; st.a = O.a + this->a; st.k = O.k + this->k; st.min=MIN(O.min,this->min); st.max=MAX(O.max,this->max); #ifdef __APPLICATION_HH__ st.H = *this->H + O.H ; #endif return st; } statdata operator*(const double factor) { abort(); //should learn more on C++ statdata st; st.v = factor * this->v; st.a = factor * this->a; st.k = factor * this->k; st.min=this->min; st.max=this->max; #ifdef __APPLICATION_HH__ st.H = *this->H * factor; #endif return st; } } ; void sum(GNode *thi, GNode *other,double factor) { statdata *st, *so; GNode *stc = g_node_first_child(thi), *soc = g_node_first_child(other); if( stc ) { while(stc) { sum(stc,soc,factor); stc=g_node_next_sibling(stc); soc=g_node_next_sibling(soc); } } else { if(other) { st=(statdata *)(thi->data); so=(statdata *)(other->data); st->v += factor * so->v; st->a += factor * so->a; st->k += factor * so->k; st->min=MIN(st->min,so->min); st->max=MAX(st->max,so->max); #ifdef __APPLICATION_HH__ Application *J= (*(so->H)) * factor; if (st->H) { Application *S= (*(st->H)) + J; delete st->H, J; st->H = S; } else st->H=J; #endif } else g_critical(" wrong depth"); } } void L2(statdata *s ) { Channel *C = s->C; u_int Cols = C->GetCols() , Rows = C->GetRows(); PixType max= (*C)(0, 0); PixType min=max; long long ss = 0; long long mm = 0; for (u_int r = 0; r < Rows; r++) for (u_int c = 0; c < Cols; c++) { PixType p=(*C)(c, r); if(p max) max=p; long long d = p; mm += d; ss += d*d; } s->a = ((double)mm/(double)(Cols*Rows)); s->v = ((double)ss/(double)(Cols*Rows)) - s->a * s->a; s->min=min; s->max=max; //http://mathworld.wolfram.com/Kurtosis.html double a=s->a, k=0; for (u_int r = 0; r < Rows; r++) for (u_int c = 0; c < Cols; c++) { double p=(double)(*C)(c, r); p=p-a; p *= p; p *= p; k += p; } s->k = k / (double)(Cols*Rows) ; } #if GLIB_CHECK_VERSION(2,4,0) static gpointer statscopy (gconstpointer src ,gpointer data) { if(data == NULL) return NULL; statdata *s=(statdata *)data; return new statdata(*s); } static gpointer statsclone (gconstpointer src,gpointer data) { gpointer s=new statdata(); return s; } #endif void statsmalloc(GNode *node,gpointer data) { g_node_children_foreach(node, G_TRAVERSE_ALL, statsmalloc, NULL); node->data=new statdata(); } void statsfree(GNode *node,gpointer pippo) { g_node_children_foreach(node, G_TRAVERSE_ALL, statsfree, NULL); statdata *s=(statdata *)node->data; delete s; node->data=NULL; } /*********************************/ int wavelet_depth=2; const char * wavelet_depths[9] = {"1","2","3","4","5","6","7","8",NULL}; char * wavelet_equalization[5] = {"no","50%","yes","150%",NULL}; double wavelet_equalization_factor=1; Wavelet *MyWavelet = NULL; void Do_FStep_CR(Image *I) { for (u_int ch = 0; ch < I->GetChannels(); ch++) { Channel *ch2 = (*I)[ch]->PushFwtStepCR(*MyWavelet); if (ch2 && ch2 != (*I)[ch]) { delete (*I)[ch]; (*I)[ch] = ch2; } } } void transform(Image *I) { if (! MyWavelet) MyWavelet = new Wavelet_SWE_13_7; //Wavelet_CRF_13_7 (*I).Convert(IT_RGB, IT_YUVr); for(int lp=wavelet_depth;lp>0;lp--) { Do_FStep_CR(I); } } void antitransform(Image *I) { (*I).IFwt(); (*I).Convert(IT_YUVr,IT_RGB); } /*****************************************************************************/ GNode * stats_recurse(Channel *C, int depth=-1) { statdata *s= new statdata; s->C=C; s->depth=depth; GNode * stat= g_node_new(s); if (C->IsLifted()) { unsigned int subbands=((LChannel *)C)->GetSubbands(); for (u_int z = 0; z < subbands; z++) { SubBand c=(SubBand)z; Channel *CS=(*(LChannel *)C)[c]; g_assert(CS); g_debug(" subband=%d ", z); GNode *cstat = stats_recurse(CS,depth+1); statdata *cs=(statdata *)cstat->data; cs->subband=z; g_node_append(stat,cstat); } } else { #ifdef __APPLICATION_HH__ Application * HI = HistoGram(C); s->H =HI; #endif L2(s); assert( G_NODE_IS_LEAF(stat) ); g_debug(" depth %d avg %2.4g sigma %2.4g min %2.4g max %2.4g ",depth, ((double)s->a)/EXTRA_PRECISION,sqrt(s->v)/EXTRA_PRECISION, ((double)s->min)/EXTRA_PRECISION,((double)s->max)/EXTRA_PRECISION); } return stat; } static int remember_color; GNode * stats(Image *I) { transform(I); u_int channels = I->GetChannels(); GNode *stat=g_node_new(NULL); for (unsigned int ch = 0; ch < channels; ch++) { g_debug("color %d ",ch); remember_color=ch; g_node_append(stat, stats_recurse((*I)[ch]) ); } return stat; } GNode * stats(GdkPixbuf *src) { Image * I =gdk_to_waili(src); GNode * n = stats(I); delete I; return n; } /*********************************/ void equalize_channel (Channel *C, const statdata *sw, int depth, int subband) { Channel *channel = C; u_int Cols = channel->GetCols() , Rows = channel->GetRows(); statdata SA; //actual statdata SA.C = C; L2(&SA); printf("col %d dep %d sub %d ", remember_color,depth,subband); #ifdef __APPLICATION_HH__ if(depth<=3 && remember_color == 0) //other histograms are not significant { printf("(hist eq)"); Application * HI = HistoGram(C); Application * EQ= histogram_equalizer(HI, sw->H ); for (u_int r = 0; r < Rows; r++) for (u_int c = 0; c < Cols; c++) { (*channel)(c, r) = round_and_dither( (*EQ)[ (*channel)(c, r) ] ); } if(depth<=0 && remember_color == 0) { { char str[300]; sprintf(str,"equalizer color %d depth %d subband %d", remember_color,depth,subband); //char *A[]={" with line",NULL}; EQ->plot(str," with line"); } { char title[300]; char templat[] = "/tmp/histodataXXXXXXXX"; char *plotdata = mytempfile(templat); sprintf(title,"histogram color %d depth %d subband %d", remember_color,depth,subband); std::ofstream plotfile(plotdata, std::ios::out ); plotfile << "#" << title << "\n"; HI->write(&plotfile); plotfile << "\n\n"; sw->H->write(&plotfile); plotfile << "\n\n"; Application * GOT = HistoGram(C); GOT->write(&plotfile);delete GOT; plotfile.close(); sprintf(title,"histogram color %d depth %d subband %d", remember_color,depth,subband); char *A[]={"index 0 title \"was\" w l 1", "index 1 title \"req\" w l 2", "index 2 title \"got\" w p 3", NULL}; gnuplot(plotdata,title,A); } } delete EQ, HI; } else #endif // if(depth>2 || remember_color == 0) { double e=sqrt(sw->v/(SA.v + 0.000001)) * wavelet_equalization_factor + 1- wavelet_equalization_factor; printf("(lin eq)"); for (u_int r = 0; r < Rows; r++) for (u_int c = 0; c < Cols; c++) { double d = (*channel)(c, r); d=d - SA.a; d=d * e; d=d + sw->a; PixType p= round_and_dither(d); (*channel)(c, r)= p; //CLAMP(p,s->min,s->max); } } statdata SN; // after equaliz SN.C = C; L2(&SN); printf("\n WAS "); SA.print(); printf("\n REQ "); sw->print(); printf("\n GOT "); SN.print(); double EDB= (SN.v / (SA.v+0.00001)); printf("\n energy %+.2f db\n",10*log(EDB)/log(10.)); } void equalize_recurse(Channel *C, GNode *statwanted, int depth=-1, int subband=0) { if (C->IsLifted()) { unsigned int subbands=((LChannel *)C)->GetSubbands(); for (u_int z = 0; z < subbands; z++) { SubBand c=(SubBand)z; Channel *CS=(*(LChannel *)C)[c]; assert(CS); g_assert(! G_NODE_IS_LEAF(statwanted)); //if( CS->IsLifted()) equalize_recurse(CS, g_node_nth_child(statwanted,z), depth+1,z); } } else { g_assert(G_NODE_IS_LEAF(statwanted)); statdata *sw=(statdata *)(statwanted->data); //printf("depth %d: ",depth); equalize_channel(C,sw,depth,subband); } } /***************************************************************** fake an image by using gaussian noise */ // #define FAKE_TEST #ifdef FAKE_TEST // Uniform random generator between 0 and 1 static double ranu(void) { double x; #ifdef __WIN32__ x = (double)rand()/(double)RAND_MAX; #else x=drand48(); #endif return x; } // Gaussian random generator static double rang() { static double x1, x2; double s, num1, num2, v1, v2, tvar; static int igauss = 0 ; if (igauss != 2) { do { num1 = ranu(); num2 = ranu(); v1 = 2.0*num1-1.0; v2 = 2.0*num2-1.0; s = v1*v1+v2*v2; } while (s >= 1.0 || s == 0.0); tvar = sqrt(-2.0*log(s)/s); x1 = v1*tvar; x2 = v2*tvar; igauss = 2; return x1; } else { igauss = 1; return x2; } } void Do_Noise(statdata *s ) { Channel *C=s->C; double stdev=sqrt(s->v); unsigned int w= C->GetCols(),h=C->GetRows(); for (u_int r = 0; r < h; r++) for (u_int c = 0; c < w; c++) (*C)(c, r) = round_and_dither(stdev*rang()+s->a); } void Do_View(Image * MyImage) { char command[512]; char template[] = "/tmp/wailiXXXXXXXX"; char *filename = mytempfile(template); MyImage->Export(filename); sprintf(command, "if which xv >/dev/null ; then xv %s & else display %s & fi", filename,filename); system(command); } void fake_channel(Channel *C, GNode *statfinal,int depth=-1) { statdata *sf; if (C->IsLifted()) { unsigned int subbands=((LChannel *)C)->GetSubbands(); for (u_int z = 0; z < subbands; z++) { SubBand c=(SubBand)z; Channel *CS=(*(LChannel *)C)[c]; assert(CS); g_assert(! G_NODE_IS_LEAF(statfinal)); if(z != 0 || CS->IsLifted()) fake_channel(CS, g_node_nth_child(statfinal,z),depth+1); } } else { sf=(statdata *)(statfinal->data); statdata sfake; sfake.C=C; sf->C = C; Do_Noise(sf ); L2(&sfake); printf("depth %d faked to avg %g = %g sigma %g = %g\n",depth, (sf->a)/EXTRA_PRECISION, (sfake.a)/EXTRA_PRECISION, sqrt(sf->v)/EXTRA_PRECISION, sqrt(sfake.v)/EXTRA_PRECISION); } } #endif //FAKE_TEST /******************************************************************/ void wavelet_equalize_(GdkPixbuf *src,GNode *l2_wanted_stat) { Image * I =gdk_to_waili(src); transform(I); u_int channels = I->GetChannels(); #ifdef FAKE_TEST { Image J =*I; for (unsigned int ch = 0; ch < channels; ch++) { message(" - faking color %d",ch); fake_channel((J)[ch],g_node_nth_child (l2_wanted_stat,ch)); } (J).IFwt(); (J).Convert(IT_YUVr,IT_RGB); for (unsigned int ch = 0; ch < channels; ch++) (J)[ch]->Enhance(1.0/EXTRA_PRECISION); Do_View(&J); } #endif for (unsigned int ch = 0; ch < channels; ch++) { message(" - equalize color %d\n",ch); remember_color=ch; equalize_recurse((*I)[ch], g_node_nth_child (l2_wanted_stat,ch)); } antitransform(I); waili_to_gdk(src,I); } extern "C" { GNode * wavelet_stats(GdkPixbuf *src) { return stats(src); } void wavelet_stats_sum(GNode *ths, GNode *other,double factor) { sum(ths,other,factor); } #if GLIB_CHECK_VERSION(2,4,0) GNode * wavelet_stats_copy(GNode *ths) { return g_node_copy_deep (ths, statscopy,NULL); } GNode * wavelet_stats_clone(GNode *ths) { return g_node_copy_deep (ths, statsclone,NULL); } #else GNode * wavelet_stats_clone(GNode *ths) { GNode *copy= g_node_copy (ths); statsmalloc(copy,NULL); return copy; } #endif void wavelet_stats_free(GNode *ths) { statsfree(ths,NULL); g_node_destroy (ths); } void wavelet_init() { #if DITHER dither_init(); #endif } void wavelet_equalize(GdkPixbuf *dpb,GNode *l2_stats) { wavelet_equalize_(dpb,l2_stats); } } xmorph-20140707+nmu2/gtkmorph/guide_text.c0000664000000000000000000001525512356304631015215 0ustar #include #include #include "guide.h" #include "guide_text.h" #include "support.h" /* the first letter in the title is ';' if it only applies to warp, and ':' for morph; otherwise it is '-' . Any other choice will print a warning */ char **pane_text=NULL; void guide_init_text() { char *p[] = { _("-Introduction"), _(" Welcome to GtkMorph\n\n\ GtkMorph is a powerful program that permits you to warp or morph images.\ \n\n\ Using this guide.\ \n\n\ Hit 'next' to skip a topic, or 'do it' to do it; when you have done a topic,\ hit 'Guide' in the main window to come back to the guide.\n\ (Note that, when you hit 'do it', the guide will iconify and deiconify\ other windows to highlight your task: with some dumb window managers,\ this will not work ok).\n\ If you are not satisfied by the way you have complied with the guide\ requests, hit 'prev' and 'do it' to retry the task.\n\ As a first task, you may get acquainted with the main gtkmorph window:\ if you want to give it a look, hit 'do it': the main window will pop up!\ Note that, if you keep the mouse still on a menu voice or on a button\ for a moment, a tip shows up. When you are done,\ hit 'Guide' to come back to the guide.\n\ If you know the program main window, simply hit 'next'.\ \n\n\ If you are fed up with the guide, you may\ stop it at any time by closing this window:\ the normal gtkmorph program will pop up.\n\ \n\ If you want to test the program, you may want to load the example session:\ look into the 'Help' menu."), _("-Select subimage size"), _("Now you select the size that the output image(s) \ will have. To this end, in the lower part of the main window, there is a \ pair of spins; select your preferred size and hit 'apply'.\n\ After that, you will be brought back to the guide.\n\ You may change the size again by selecting 'resulting size...' \ in the Edit menu."), _("-Morph or warp"), _("You may `warp' or `morph'.\n\n\ 'Warp' means 'to deform, contort, distort, wring, bend, or otherwise twist'.\n\ If you have one single input image and you want to make \ a distortion of it, then you want to warp it. In this case, hit 'next'\n\n\ 'Morphing' images instead means 'blending together warped versions\ of the images'. So\ to morph you need two or more input images.\n\ In this case, press 'do it', and, in the File menu, choose 'add image'\ as many times as\ to reach the required number of input images,\ then hit 'Guide' in the main window.\ \n\n\ Note that at startup the program is set for ``warping'':\ there is only one input image."), _("-Load image(s)"), _("Now you need to load the input images.\n\ In each input image window, load the input image \ using the big 'load image' button."), _(";Load reference image"), _("If you wish, you may load an image in the main window; it may help you \ if you are warping images and you want to have a reference to use as a \ target. This is not really necessary, and you may do as well without.\n\n\ If in this reference image there are 3 important features, like the eyes \ and mouth in face, then you should drag the 3 white points on these \ features.\n\n\ Similarly, if you have a reference mesh that is associated to this image, \ you may load it now, using the 'load mesh' button\n\n\ When done, click 'Guide'."), _("-Select subimage(s)"), _("Now you select a subimage of each input image. You do this by either\ moving the selection rectangle (using the spins at bottom of the\ window) or by dragging the 3 white feature points. (see [1] below)\ \n\n\ When you have chosen the preferred subimage, hit 'apply'\ (and the window will close).\ If later you find out that are not satisfied of your choice, you may\ click in the option menu (at center top) and select 'choose subimage' to\ repeat this process.\ \n\n\ Alternatively,\ if you have already a mesh for this image, you may load it now; since the\ subimage selection is saved with the mesh; when you load the saved mesh,\ the subimage is reselected for you.\ \n\n\ [1] Note that you cannot position the 3 points freely: their mutual\ position is copied from the position of the 3 reference points in the\ resulting image; so you will need to be patient.\n\ Note also that the selection rectangle has currently a fixed aspect\ (see [2]); if you want to freely change the aspect, change the\ 'preserve aspect ratio' setting in the 'settings'.\n\ [2] 'aspect' is the ratio between width and height."), _("-Adjust mesh"), g_strdup_printf("%s\n\n%s\n\n%s\n\n%s", _("\ Now you adjust the mesh in the input image(s) so that they best fit\ to the features of those images. If you hit the right mouse key while on\ the mesh, you will get a menu.\n\ It is very important that points in different meshes are syncronized, that is,\ that point (i,j) in every mesh is associated to the same type of feature;\ for this reason, when you drag a point in a mesh, the same point flashes in\ all other meshes.\n\ When you have put points on a feature (say, for example, the right eye),\ you may hit 'pack' to pack all this point into a 'feature'."), _(FEATURE_HELP), _("From time to time, you better save the mesh(es)."), _(TIPS_HELP)), _(";Warp"), g_strdup_printf("%s\n\n%s", _("\ Hit the 'do warp' button to view the warp. If you are not satisfied, \ choose 'edit mesh' in the option menu (top center) and edit the mesh further.\ From time to time, you better save the mesh."), _(TIPS_HELP)), _(":Morph"), _("To morph your images, you must decide how much each image should\ influence the resulting morph. To this end, you adjust the morph factors\ to your need; the 'mesh interpolation' slide tells how much this mesh\ will influence the resulting mesh, and the 'image blending' tells how much\ this image is visible in the resulting image.\n\n\ Then hit the 'do morph' button in the main window to view the morph.\n\ If you are not satisfied,\ choose 'edit mesh' in the option menu (top center) and edit the mesh further;\ or, choose 'view warp&mesh' and edit the morph factors.\ \n\n\ If you want to change the morph factors further, choose ``morph factors..''\ in the 'edit' menu\ \n\n\ Tip: set all factors to equal values and\ do a morph: if the images do not superimpose well, you may try to select\ a subimage in each image so that they superimpose better"), _(":Movie"), _("To make a movie of your morph, choose 'morph sequence' in the Morph menu.\ A window will pop up. Click on help there for further help."), /* END OF LIST */ _("-End"), _("Here ends the guide.\n\nGoodbye and thank you"), NULL, NULL }; pane_text=g_malloc(sizeof(p)); memcpy(pane_text,p,sizeof(p)); } xmorph-20140707+nmu2/gtkmorph/movies.h0000664000000000000000000000024012356304631014347 0ustar #ifdef __WIN32__ #define ANIMATE_INTERNALLY #endif #define ANIMATE_INTERNALLY #ifdef ANIMATE_INTERNALLY int movie_pixmap_free(); #endif int movie_init(); xmorph-20140707+nmu2/gtkmorph/callbacks_fs_mesh.c0000664000000000000000000001064112356304631016471 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #ifdef USE_IMLIB #include #else #include #endif #include "gtk-meta.h" #include "string.h" //strlen #include "gtktopdata.h" #include "gtk_subimagesel.h" #include "main.h" #include "utils.h" #include "support.h" #include "interface.h" #include "dialogs.h" #include "loadsave.h" #include "callbacks_fs.h" extern fileselection_hook_t fileselection_hook; #ifndef IS_PLYMORPH #include "loadsave_mesh.h" #else #include "loadsave_ply.h" #endif /***** returns TRUE if it was already known ***/ static gboolean set_fs_mesh_filename(int i) { if ( sp->im_mesh_filename[i] != NULL) { gtk_file_selection_set_filename(fileselection_g, sp->im_mesh_filename[i]); return TRUE; } else { char *file= sp-> im_filename_in[i]; if(file != NULL) { char *s = g_strdup_printf("%s.mesh",file); gtk_file_selection_set_filename(fileselection_g, s); g_free(s); } else gtk_file_selection_complete(fileselection_g, "*.mesh"); //gtk_file_selection_set_filename(fileselection_g, ""); return FALSE; } } void on_loadmesh_clicked (GtkButton *button, gpointer user_data) { int i = GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(button),"imagenum")); fileselection_hook=load_mesh_from_file; fileselection1_for_image_num_g=i; show_fs(//GTK_WIDGET(button), _( "load mesh for %s") #if GTK_MAJOR_VERSION >= 2 , GTK_FILE_CHOOSER_ACTION_OPEN #endif ); set_fs_mesh_filename(i); } void on_savemesh_clicked (GtkButton *button, gpointer user_data) { int i = GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(button),"imagenum")); fileselection_hook=save_mesh_to_file; //FIXME auto save doesnt work //if( set_fs_mesh_filename(i) == FALSE|| button->state & GDK_SHIFT_MASK) fileselection1_for_image_num_g=i; show_fs(//GTK_WIDGET(button), _( "save mesh for %s") #if GTK_MAJOR_VERSION >= 2 , GTK_FILE_CHOOSER_ACTION_SAVE #endif ); set_fs_mesh_filename(i); // else /* directly simulate as if OK was hit */ //on_ok_button1_clicked (NULL,NULL); } static void diff_save_it (GtkMenuItem *menuitem, gpointer data) { unsigned int d=GPOINTER_TO_INT(data); unsigned int from=d/256, to=d&255; if(sp->im_mesh_diff[from]) meshUnref(sp->im_mesh_diff[from]); sp->im_mesh_diff[from] = &( sp->im_mesh[to] ); meshRef(sp->im_mesh_diff[from]); g_assert(!sp->im_widget_is_difference_mesh[to]); sp->im_mesh_diff_is_difference_mesh[from] = sp->im_widget_is_difference_mesh[to]; fileselection_hook=save_diff_mesh_to_file; fileselection1_for_image_num_g=from; show_fs(//GTK_WIDGET(button), _( "save difference to mesh") #if GTK_MAJOR_VERSION >= 2 , GTK_FILE_CHOOSER_ACTION_SAVE #endif ); } void on_save_diff_clicked (GtkButton *button, gpointer user_data) { int i = GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(button),"imagenum")); if(sp->im_mesh_diff[i]==NULL) { GtkWidget *m=create_menu_of_images(i,diff_save_it,TRUE); gtk_menu_popup(m,//GtkMenu *menu, NULL,//GtkWidget *parent_menu_shell, NULL,//GtkWidget *parent_menu_item, NULL,//GtkMenuPositionFunc func, NULL,//gpointer data, 0,//guint button, gtk_get_current_event_time());//guint32 activate_time); } else { fileselection_hook=save_diff_mesh_to_file; fileselection1_for_image_num_g=i; //FIXME auto save doesnt work //if( set_fs_mesh_filename(i) == FALSE|| button->state & GDK_SHIFT_MASK) show_fs(//GTK_WIDGET(button), _( "save difference to mesh") #if GTK_MAJOR_VERSION >= 2 , GTK_FILE_CHOOSER_ACTION_SAVE #endif ); } } void on_add_a_difference_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp; for(lp=1 ; lp <= MAX_WINS; lp ++) if(sp->im_widget[lp] == NULL) { fileselection_hook=load_diff_from_file; fileselection1_for_image_num_g= lp; show_fs(//GTK_WIDGET(menuitem), _( "load difference mesh") #if GTK_MAJOR_VERSION >= 2 , GTK_FILE_CHOOSER_ACTION_OPEN #endif ); return; } } xmorph-20140707+nmu2/gtkmorph/gtktopdata.h0000664000000000000000000000106212356304631015212 0ustar #ifndef __GTK_TOP_DATA_H__ #define __GTK_TOP_DATA_H__ void gtk_widget_set_data_top (GtkWidget *widget, const char *key, gpointer data); /* Associate data with key in the data list of toplevel widget. */ gpointer gtk_widget_get_data_top (GtkWidget *widget, const char *key); /* Retrieve the data associated with key in the data list of toplevel widget. */ void gtk_widget_remove_data_top (GtkWidget *widget, const char *key); /* Remove the data associated with key in the data list of toplevel widget. */ #endif // __GTK_TOP_DATA_H__ xmorph-20140707+nmu2/gtkmorph/guide.c0000664000000000000000000001722712356304631014152 0ustar #include "stdio.h" #include #ifdef HAVE_CONFIG_H # include #endif #define GTK_ENABLE_BROKEN #include #include "gtk-meta.h" #ifdef USE_IMLIB #include #else #include #endif #ifdef HAVE_X #include #endif #include #include #include "interface.h" #include "guide.h" #include "support.h" #include "callbacks.h" #include "main.h" /* trick to have a translation that is not immediate //#ifdef ENABLE_NLS //#undef _ //#define _(S) (g_strdup(dgettext(PACKAGE,(S)))) ////#define _(S) (g_strdup(S)) //#endif */ #if GTK_MAJOR_VERSION >= 2 #define SHOW(A) gtk_widget_show(A);gtk_window_deiconify(GTK_WINDOW(A)); #define HIDE(A) gtk_window_iconify(GTK_WINDOW(A)); #else #define SHOW(A) gtk_widget_show(A); #define HIDE(A) gtk_widget_hide(A); #endif extern char **pane_text; int guide_step=0, guide_tot_steps=-1; GtkWidget *guide_widget=NULL; #if GTK_MAJOR_VERSION >= 2 GtkTextView *guide_widget_text=NULL; #else GtkText *guide_widget_text=NULL; GtkEditable *guide_widget_editable=NULL; #endif gboolean guide_callback(char *what, int imagenum) { int lp=0; if(!guide_widget) return FALSE; if(!(sp->im_widget[imagenum])) { g_critical("guide cannot auto hide %d",imagenum); return FALSE; } if ( guide_step!= 6 && ! (strcmp(what,"file")==0 && imagenum==MAIN_WIN) ) { HIDE(sp->im_widget[imagenum]); for(lp=0;lpim_widget[lp]) if( GTK_WIDGET_VISIBLE (sp->im_widget[lp])) { g_debug("guide:image %d is visible",lp); return TRUE; } on_back_to_guide_activate(NULL,NULL); } return TRUE; } void guide_set_text() { char s[6000]; g_return_if_fail(guide_widget_text); if(!pane_text || !pane_text[guide_step*2] || !pane_text[guide_step*2+1]) { g_critical("no guide text %d!!!",guide_step); return; } { char c=pane_text[2*guide_step][0]; if (!(c == '-' || c == ';' ||c == ':') ) g_warning("The guide pane %d has a title '%s' that does not" "start with character '-',';',':'. " "Please correct the program or the translation.", guide_step,pane_text[2*guide_step]); } sprintf(s,"gtkmorph guide %d:%s",guide_step,pane_text[guide_step*2]+1); gtk_window_set_title(GTK_WINDOW (guide_widget), s); sprintf(s," [task %d:%s]\n", guide_step,pane_text[guide_step*2]+1); #if GTK_MAJOR_VERSION >= 2 { GtkTextBuffer *buffer; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (guide_widget_text)); gtk_text_buffer_set_text (buffer, s,-1); gtk_text_buffer_insert_at_cursor (buffer, pane_text[guide_step*2+1],-1); /* Now you might put the view in a container and display it on the * screen; when the user edits the text, signals on the buffer * will be emitted, such as "changed", "insert_text", and so on. */ } #else { gint position; gtk_text_freeze (guide_widget_text); if(gtk_text_get_length (guide_widget_text)>0) gtk_editable_delete_text(guide_widget_editable,//GtkEditable *editable, 0,//gint start_pos, gtk_text_get_length (guide_widget_text)); gtk_text_set_point(guide_widget_text,0); gtk_editable_insert_text(guide_widget_editable, s,strlen(s), &position); gtk_editable_insert_text(guide_widget_editable,//GtkEditable *editable, pane_text[guide_step*2+1],//const gchar *new_text, strlen(pane_text[guide_step*2+1]), //gint new_text_length, &position);//gint *position); gtk_text_thaw (guide_widget_text); } #endif } static void show_all(int step) { int lp=0,m=MAIN_WIN; while (gtk_events_pending()) gtk_main_iteration (); if(step==0 || step==1 || step == 4) { lp=m; } else if(step==3||step==5||step==6) m--; for(;lp<=m;lp++) if(sp->im_widget[lp]) { SHOW(sp->im_widget[lp]); } } static void hide_all() { int lp; while (gtk_events_pending()) gtk_main_iteration (); for(lp=0;lpim_widget[lp]) { HIDE(sp->im_widget[lp]); } } void guide_initialize() { int lp=0; if(guide_widget) return; guide_init_text(); while(pane_text[lp]) lp++; lp--; guide_tot_steps=lp/2; guide_widget=create_guide(); #if GTK_MAJOR_VERSION >= 2 guide_widget_text=GTK_TEXT_VIEW(lookup_widget(guide_widget,"text")); g_assert(guide_widget_text); #else guide_widget_text=GTK_TEXT(lookup_widget(guide_widget,"text")); guide_widget_editable=GTK_EDITABLE(lookup_widget(guide_widget,"text")); g_assert(guide_widget_text && guide_widget_editable); #endif guide_set_text(); gtk_window_set_default_size(GTK_WINDOW(guide_widget),700,300); gtk_widget_show(guide_widget); hide_all(); settings_set_value("no warnings",1); } void guide_next() { guide_step++; while(guide_stepmax_wins==1 ) || ( pane_text[2*guide_step][0] == ';' && sp->max_wins> 1 ) )) guide_step++; } /*************************** callbacks **********************************/ void on_back_to_guide_activate (GtkButton *button, gpointer user_data) { guide_initialize(); guide_next(); if(guide_stepim_widget[lp]) { GtkWidget *w=(lookup_widget(sp->im_widget[lp],"back_to_guide")); if(w) gtk_widget_show(w); } guide_initialize(); guide_set_text(); hide_all(); gtk_widget_show(guide_widget); SHOW(guide_widget); } gboolean on_guide_text_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_guide_prev_clicked (GtkButton *button, gpointer user_data) { if(guide_step>0) guide_step--; guide_set_text(); } void on_guide_do_it_clicked (GtkButton *button, gpointer user_data) { int lp=0; #ifndef IS_PLYMORPH int z=EDITVIEW_EYES; if(guide_step>5) z=EDITVIEW_EDIT; if(guide_step==8) z=EDITVIEW_SHOWMESHES; for(lp=0;lp<=MAIN_WIN;lp++) if(sp->im_widget[lp]) { set_editview(lp,z); } #endif show_all(guide_step); } void on_guide_next_clicked (GtkButton *button, gpointer user_data) { guide_next(); if(guide_step<=guide_tot_steps) { guide_set_text(); } else { guide_step=0; gtk_object_destroy(GTK_OBJECT(guide_widget)); } } gboolean on_guide_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { //destroy will be called as well return FALSE; } void on_guide_destroy (GtkObject *object, gpointer user_data) { //GtkWidget *widget = GTK_WIDGET(object); int lp; show_all(-1); guide_widget=NULL; guide_widget_text=NULL; #if GTK_MAJOR_VERSION < 2 guide_widget_editable=NULL; #endif settings_set_value("no warnings",0); for(lp=0;lpim_widget[lp]) { GtkWidget *w=(lookup_widget(sp->im_widget[lp],"back_to_guide")); if(w) gtk_widget_hide(w); } } xmorph-20140707+nmu2/gtkmorph/wavelet.hh0000664000000000000000000000062012356304631014666 0ustar #ifdef __cplusplus extern "C" { #endif void wavelet_init(); GNode * wavelet_stats(GdkPixbuf *src); void wavelet_stats_sum(GNode *this, GNode *other,double factor); GNode * wavelet_stats_copy(GNode *this); GNode * wavelet_stats_clone(GNode *this); void wavelet_stats_free(GNode *this); void wavelet_equalize(GdkPixbuf *dpb,GNode *l2_stat); #ifdef __cplusplus } #endif xmorph-20140707+nmu2/gtkmorph/dialogs.c0000664000000000000000000000646012356304631014474 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #ifdef USE_IMLIB #include #else #include #endif #include //strncpy #include "callbacks.h" #include "interface.h" #include "support.h" #include "dialogs.h" //#include "settings.h" /****************************************************************************/ /********************************************************************* ********************************************************************** * warning dialog hook FIXME: I think this is not the right way to do it ********************************************************************** ********************************************************************** **/ /* the text of the warning */ char dialogwarning_text[1001]=""; GtkWidget *dialogwarning_g=NULL; void on_labelwarning_show (GtkWidget *widget, gpointer user_data) { gtk_label_set_text (GTK_LABEL(widget), dialogwarning_text); } void on_labelwarning_realize (GtkWidget *widget, gpointer user_data) { gtk_label_set_text (GTK_LABEL(widget), dialogwarning_text); } //GtkWidget *menu_image_num_g=NULL; void show_info(const char *str) { strncpy(dialogwarning_text,str,1000); dialogwarning_g= create_dialogwarning(); gtk_window_set_title(GTK_WINDOW(dialogwarning_g), _("info") ); gtk_widget_show(dialogwarning_g); } void show_warning(const char *str) { strncpy(dialogwarning_text,str,1000); if(settings_get_value("no warnings")==0) { dialogwarning_g= create_dialogwarning(); gtk_window_set_title(GTK_WINDOW(dialogwarning_g), _("warning")); gtk_widget_show(dialogwarning_g); } else gdk_beep(); } void show_error(const char *str) { strncpy(dialogwarning_text,str,1000); dialogwarning_g= create_dialogwarning(); gtk_window_set_title(GTK_WINDOW(dialogwarning_g), _("error")); gtk_widget_show(dialogwarning_g); gdk_beep(); } void on_why_the_beep_1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(*dialogwarning_text) { dialogwarning_g= create_dialogwarning(); gtk_widget_show(dialogwarning_g); } *dialogwarning_text=0; } /******************* new glade callbacks *********************/ gboolean on_dialogwarning_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } gboolean on_question_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_yes_clicked (GtkButton *button, gpointer user_data) { //GtkWidget *b=lookup_widget(GTK_WIDGET(button),"question"); //gtk_widget_destroy(b); } void on_no_clicked (GtkButton *button, gpointer user_data) { GtkWidget *b=lookup_widget(GTK_WIDGET(button),"question"); gtk_widget_destroy(b); } xmorph-20140707+nmu2/gtkmorph/fourier.cc0000664000000000000000000003625012356304631014670 0ustar /***************************************************************** calibration of points position thru Fourier transform */ #include "config.h" #include #ifdef USE_IMLIB #include #else #include #endif #include "gtk-meta.h" #include #include #include #include "fourier.hh" #define GOOD_TRANSLATION_MATCH(A) ((A) >= 0.95) #define BEST_TRANSLATION_MATCH(A) ((A) >= 0.9997) //complex exponential static inline std::complex expI(double a) { std::complex e( cos(a), sin(a)); return e; } const int size = 32; const double S2= (double)size*(double)size; const double M2PI (2*M_PI); const double M2PIS = (2.0 * M_PI/(double)size); //row major indexing, that is, C style #define IND(I,J) ((I)+(size)*(J)) //type of data for fourier transform typedef std::complex F_T; #if HAVE_FFTW #include #define F_T_C(x) reinterpret_cast(x) // according to // file:///usr/share/doc/fftw3-doc/html/Complex-numbers.html#Complex%20numbers // this should work with fftw as well , by using the cast F_T_C // but I double check #else #define F_T_C(x) (x) //#define newF() (new F_T[size*size*4]) //#define deleteF(p) delete (p) #endif // precomputed fourier matrix and vector #if HAVE_FFTW == 0 F_T *F_MAT =new F_T[size*size]; #endif F_T *F_VEC =new F_T[size]; //use windowing #define USE_WINDOW 0 //use full formula to compute translation // currently it is buggy #define FULL 0 #if USE_WINDOW double *window=new double[size*size]; #endif #if HAVE_FFTW fftw_plan fftw_prestored_plan_forw=NULL, fftw_prestored_plan_back=NULL; #endif F_T * prealloc_F_T=NULL; F_T * prealloc_F_T_tmp=NULL; void fourier_init_() { #if USE_WINDOW double s = ((double)(size-1))/2.0; for (int i=0; i < size ; i++) { for (int j=0; j < size ; j++) { double r = ((i-s)*(i-s)+(j-s)*(j-s))/s/s; if ( r<=1) window[IND(i,j)]= cos(r * M_PI/2); else window[IND(i,j)]= 0; }} #endif #if HAVE_FFTW g_assert ((sizeof(F_T)) == 2*sizeof(double)); { void *p= fftw_malloc(size*size*9*sizeof(F_T)); prealloc_F_T= reinterpret_cast(p); g_assert(prealloc_F_T); } { F_T *D = prealloc_F_T , *S = prealloc_F_T +6*size*size; fftw_prestored_plan_forw= fftw_plan_dft_2d(size, size, F_T_C(S), F_T_C(D), -1, 0);//FFTW_UNALIGNED | FFTW_ESTIMATE); fftw_prestored_plan_back= fftw_plan_dft_2d(size, size, F_T_C(D), F_T_C(S), 1, 0);//FFTW_UNALIGNED | FFTW_ESTIMATE); } #else prealloc_F_T=new F_T [size*size*9]; //precompute fourier matrix for (int i=0; i < size ; i++) for (int j=0; j < size ; j++) F_MAT[IND(i,j)] = expI( - M2PIS*(double)(i*j)) ; #endif prealloc_F_T_tmp = prealloc_F_T +8*size*size; for (int i=0; i < size ; i++) F_VEC[i] = expI( M2PIS*i ); } //complex exponential precomputed static inline std::complex expI_S(int i) { //is a precomputed version of return expI( M2PIS*(double)(i)); if(i<0) { i=((-i)%size); if(i>0) i=size-i; } else i=i%size; g_assert(i>=0 && i void fourier_orig(const C * S,F_T *D,const int sign) { //original formula for (int i=0; i < size ; i++) for (int j=0; j < size ; j++) { D[IND(i,j)]=0;} for (int i=0; i < size ; i++) for (int j=0; j < size ; j++) for (int l=0; l < size; l++) for (int k=0; k < size ; k++) D[IND(i,j)] += expI_S ( sign* (i*l +j*k) ) * S[IND(l,k)]; transf_divide(D); } template void fourier_faster(const C * S, F_T *D) { F_T *fouriertmp = new F_T[size*size]; for (int i=0; i < size ; i++) for (int j=0; j < size ; j++) { fouriertmp[IND(i,j)]=0; D[IND(i,j)]=0;} g_assert(norm(F_MAT[1]));//Will trigger if fourier_init was not called for (int j=0; j < size ; j++) for (int l=0; l < size ; l++) for (int k=0; k < size ; k++) fouriertmp[IND(l,j)] += F_MAT[IND(j,k)] * S[IND(l,k)]; for (int i=0; i < size ; i++) for (int j=0; j < size ; j++) for (int l=0; l < size; l++) D[IND(i,j)] += F_MAT[IND( i,l)] * fouriertmp[IND(l,j)]; delete fouriertmp; transf_divide(D); } #define fourier(S,D) fourier_faster(S,D) #define fourier_inv(S,D) fourier_orig(S,D,1) #endif void fourier_image(GdkPixbuf *pixbuf,F_T *transf, int x, int y ) { int width = gdk_pixbuf_get_width (pixbuf); int height = gdk_pixbuf_get_height (pixbuf); int rowstride = gdk_pixbuf_get_rowstride (pixbuf); guchar *pixels = gdk_pixbuf_get_pixels (pixbuf); guint n_channels = gdk_pixbuf_get_n_channels (pixbuf); g_assert (gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB); g_assert (gdk_pixbuf_get_bits_per_sample (pixbuf) == 8); g_assert (n_channels<=4); g_assert ( (size & 1 ) == 0); x-=size/2; y-=size/2; int leftl=0, rightl=size, leftk=0, rightk=size; if(x<0) { leftl=-x;} if(y<0) { leftk=-y;} if( x+size >= width ) { rightl=width -x; } if( y+size >= height ) { rightk=height-y; } F_T * imagetmp=prealloc_F_T_tmp; if (n_channels >= 3) { for (int c=0;c<3;c++) { for (int j=leftl; j < rightl ; j++) { for (int i=leftk; i < rightk ; i++) { guchar * p =pixels + (i+y) * rowstride + (j+x) * n_channels + c; double v= (double) (*p) #if USE_WINDOW * window[IND(i,j)] #endif ; imagetmp[IND(i,j)]= F_T(v,0); }} fourier(imagetmp ,transf+ size*size*c ); } // for (int c=0;c<3;c++) { // for (int i=0; i < size; i++) { // for (int j=0; j < size ; j++) { // F_T *v; // v=(imagef+ (size*size*c + IND(i,j))); // *v= F_T(v->real(),0); // }}} } else { if (n_channels == 1) for (int i=leftk; i < rightk ; i++) { guchar * p=pixels + (i+y) * rowstride + (leftl+x); for (int j=leftl; j < rightl ; j++) { double v= (double)(*p) #if USE_WINDOW * window[IND(i,j)] #endif ; p ++; imagetmp[IND(i,j)]=F_T(v); } fourier(imagetmp,transf); } else throw "wrong number of channels in pixbuf"; } } void inv_fourier_image(F_T * transf, GdkPixbuf *pixbuf, int x, int y) { guint n_channels = gdk_pixbuf_get_n_channels (pixbuf); int width = gdk_pixbuf_get_width (pixbuf); int height = gdk_pixbuf_get_height (pixbuf); int rowstride = gdk_pixbuf_get_rowstride (pixbuf); guchar *pixels = gdk_pixbuf_get_pixels (pixbuf); x-=size/2; y-=size/2; g_return_if_fail (x >= 0 && x < width-size &&y >= 0 && y < height-size && n_channels >= 3 ); F_T * imagetmp=prealloc_F_T_tmp; for (int c=0;c<3;c++) { fourier_inv(transf+ size*size*c ,imagetmp ); for (int j=0; j < size ; j++) { for (int i=0; i < size; i++) { guchar * p=pixels + (i+y) * rowstride + (j+x) * n_channels + c; double v=(imagetmp[IND(i,j)]).real(); v=CLAMP( v , 0,255); *p = (guchar)round(v); }}} } static double energy(//const int size, F_T *src, int n_channels) { int i,j; double e=0; F_T v; for (int c=0; ce) e=ne; int lq; PRINT('L','\n'); while (lp>0 && x>=-2 && y>=-2 && x<=2 && y<=2 && ! BEST_TRANSLATION_MATCH(e/f)) { lq=4; while(lp>0 && lq>0) { lp--;lq--; nx += (drand48()-0.5)/2; ny += (drand48()-0.5)/2; nx=CLAMP(nx,-span,span); ny=CLAMP(ny,-span,span); ne = correlation(src,dst,n_channels,nx,ny)/f; if (e0 && lq>0) { lp--;lq--; double cdx=correlation_dx(src,dst,n_channels,x,y), cdy=correlation_dy(src,dst,n_channels,x,y); nx = x + cdx/10; ny = y + cdy/10; nx=CLAMP(nx,-span,span); ny=CLAMP(ny,-span,span); ne = correlation(src,dst,n_channels,nx,ny)/f; if (e0 ) { double idx=round(dx), idy=round(dy); double fdx=dx-idx , fdy=dy-idy; double tx = fdx-fsx, ty = fdy-fsy; F_T * dstf = prealloc_F_T +size*size*4; fourier_image(dst, dstf, (int)idx , (int)idy) ; { double newcorr=corr; search_fourier_translation(srcf, src_ene, dstf, n_channels, tx, ty, newcorr, loop); g_assert(newcorr<=1); if(newcorr>corr) { corr=newcorr; *nx = tx-(fdx-fsx) + dx; *ny = ty-(fdy-fsy) + dy; } } if( BEST_TRANSLATION_MATCH(corr)) return TRUE; loop--; }}} #ifdef DEBUG printf("\n"); #endif return GOOD_TRANSLATION_MATCH(corr); } extern "C" { gboolean detect_translation(GdkPixbuf *src, double sx, double sy, GdkPixbuf *dst, double dx, double dy, // new suggested destination double *nx,double *ny) { bool res= detect_translation_(src,sx,sy, dst,dx,dy, nx,ny); if(res ) g_message ("autoadjust %3g %3g to %3g %3g ",dx,dy,*nx,*ny); else g_message ("autoadjust %3g %3g stays at %3g %3g ",dx,dy,*nx,*ny); return res; } void fourier_init() {fourier_init_();} } xmorph-20140707+nmu2/gtkmorph/colors.c0000664000000000000000000001217612356304631014354 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif #include #include #include "gtk-meta.h" #ifdef USE_IMLIB #include #else #include #endif #include "gdk-pixbuf-extra.h" #include "gtktopdata.h" #include "libmorph/warp.h" #include "libmorph/warp2.h" #include "libmorph/warp-gtk.h" #include "libmorph/resample.h" #include "callbacks.h" #include "interface.h" #include "support.h" //#include "pixmaps.h" #include "mesh-gtk.h" #include "utils.h" #include "main.h" #include "settings.h" #include "dialogs.h" #include "libmorph/mesh.h" #if HAVE_LIBPLY_H #include "../plyview/bind.h" #endif /***************************** colors ***************/ /* color flashing */ GdkGC *flash_gc; GdkColor colors[] = { //selected points, { 0L, 63 * 1024, 63 * 1024, 40 * 1024 }, //unselected points. This color is used also for lines { 0L, 40 * 1024, 50 * 1024, 40 * 1024 }, //all these are for features //so, to change from feature_n to feature_gc you have to add 2 //so, to change from feature_n to mesh label you have to add 1 //{ 0L, 63 * 1024, 63 * 1024, 63 * 1024 }, //{ 0L, 63 * 1024, 63 * 1024, 30 * 1024 }, { 0L, 63 * 1024, 30 * 1024, 30 * 1024 }, { 0L, 63 * 1024, 30 * 1024, 63 * 1024 }, { 0L, 30 * 1024, 63 * 1024, 63 * 1024 }, { 0L, 30 * 1024, 63 * 1024, 30 * 1024 }, { 0L, 30 * 1024, 30 * 1024, 63 * 1024 }, { 0L, 30 * 1024, 30 * 1024, 30 * 1024 }, //{ 0L, 63 * 1024, 63 * 1024, 63 * 1024 }, { 0L, 63 * 1024, 63 * 1024, 50 * 1024 }, { 0L, 63 * 1024, 50 * 1024, 63 * 1024 }, { 0L, 63 * 1024, 50 * 1024, 50 * 1024 }, { 0L, 50 * 1024, 63 * 1024, 63 * 1024 }, { 0L, 50 * 1024, 63 * 1024, 50 * 1024 }, { 0L, 50 * 1024, 50 * 1024, 63 * 1024 }, { 0L, 50 * 1024, 50 * 1024, 50 * 1024 }, //{ 0L, 63 * 1024, 63 * 1024, 63 * 1024 }, { 0L, 63 * 1024, 63 * 1024, 10 * 1024 }, { 0L, 63 * 1024, 10 * 1024, 63 * 1024 }, { 0L, 63 * 1024, 10 * 1024, 10 * 1024 }, { 0L, 10 * 1024, 63 * 1024, 63 * 1024 }, { 0L, 10 * 1024, 63 * 1024, 10 * 1024 }, { 0L, 10 * 1024, 10 * 1024, 63 * 1024 }, //{ 0L, 10 * 1024, 10 * 1024, 10 * 1024 }, //{ 0L, 40 * 1024, 40 * 1024, 40 * 1024 }, { 0L, 40 * 1024, 40 * 1024, 30 * 1024 }, { 0L, 40 * 1024, 30 * 1024, 40 * 1024 }, { 0L, 40 * 1024, 30 * 1024, 30 * 1024 }, { 0L, 30 * 1024, 40 * 1024, 40 * 1024 }, { 0L, 30 * 1024, 40 * 1024, 30 * 1024 }, { 0L, 30 * 1024, 30 * 1024, 40 * 1024 }, { 0L, 30 * 1024, 30 * 1024, 30 * 1024 } }; GdkGC *features_gc[100]; const int features_max_n=sizeof(colors)/sizeof(GdkColor)-2; /* color for selected points and subimage selection*/ GdkGC *mps_gc; /* color for resulting points */ //GdkGC *mpr_gc; /* color for mesh lines */ GdkGC *mpl_gc; void allocate_colors(GtkWidget * widget) { /* allocate colors */ int lp=sizeof(colors)/sizeof(GdkColor)-1; g_debug("allocating colors"); //features_max_n=lp-2; g_assert(widget->window); g_assert(lp<100); for(;lp>=0;lp--) { features_gc[lp] = gdk_gc_new(widget->window); gdk_gc_copy(features_gc[lp], widget->style->white_gc ); if(gdk_colormap_alloc_color (gdk_colormap_get_system (), & (colors[lp]), FALSE , //gboolean writeable, TRUE //gboolean best_match ) == FALSE) g_warning("%s %d : can't allocate color\n",__FILE__,__LINE__); else gdk_gc_set_foreground ( features_gc[lp], &(colors[lp])); g_assert(features_gc[lp]); } //FIXME CRUDE PROGRAMMING mpl_gc=gdk_gc_new(widget->window); g_assert(mpl_gc); gdk_gc_copy(mpl_gc, features_gc[1] ); gdk_gc_set_line_attributes (mpl_gc, 1, //gint line_width, GDK_LINE_DOUBLE_DASH,//GdkLineStyle line_style, GDK_CAP_BUTT, //GdkCapStyle cap_style, GDK_JOIN_MITER //GdkJoinStyle join_style ); mps_gc=gdk_gc_new(widget->window); g_assert(mps_gc); gdk_gc_copy(mps_gc, features_gc[2] ); gdk_gc_set_line_attributes (mps_gc, 1, //gint line_width, GDK_LINE_DOUBLE_DASH,//GdkLineStyle line_style, GDK_CAP_BUTT, //GdkCapStyle cap_style, GDK_JOIN_MITER //GdkJoinStyle join_style ); #ifdef FIXME /* the xor method flashes on/off we should use the same clipping rectangle as above, but we dont */ gdk_gc_set_function(mpl_gc,GDK_XOR); #endif flash_gc = gdk_gc_new(widget->window); gdk_gc_copy(flash_gc,mpl_gc ); gdk_gc_set_function(flash_gc,GDK_XOR); // mps_gc= features_gc[0]; //mpr_gc= features_gc[1]; } xmorph-20140707+nmu2/gtkmorph/main.c0000664000000000000000000002324512356304631013776 0ustar /* * Initial main.c file generated by Glade. Edit as required. * Glade will not overwrite this file. */ #ifdef ENABLE_NLS #include #endif #ifdef HAVE_CONFIG_H # include #endif #include #include #ifdef USE_IMLIB #include #else #include #endif #include "stdio.h" #include #include #include "interface.h" #include "support.h" #include "callbacks.h" #include "gtktopdata.h" //#include "pixmaps.h" #include "main.h" #ifndef IS_PLYMORPH #include "utils.h" #endif #include "feature.h" #include "mag.h" #include "movies.h" // no we use g_assert //#include "assert.h" //#include "../libmorph/mesh.h" #include "loadsave.h" #ifndef IS_PLYMORPH #include "loadsave_mesh.h" #else #include "loadsave_ply.h" #endif #include "fourier.hh" #include "wavelet.hh" GtkFileSelection *fileselection_g=NULL; /* we will implement UNDO by copying this structure and its substructures */ gtkmorph_status_t settings, *sp = &settings; /*************** warning code*/ void null_logger(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) {} /* this variable stores the number of the window that we are loading for if this is MAIN_WIN then it refers to the window containing the resulting image and the element 0 is not used */ int fileselection1_for_image_num_g=-3; /********** the current settings are in a "structure of arrays " (see main.h) why not an "array of structures"? because many subroutines work on the arrays, and they would become unnecessarily complicated on the other end, a "array of structures" may be easily modified to add new images... this way, the program will have to be recompiled to add new images; but hopefully MAX_WINS may be set to a value that is sufficient in 99.9% of cases */ /* we will implement UNDO by copying this structure and its substructures (the above line was written in 1998 - undo was never implemented ) */ extern gtkmorph_status_t *sp; #ifdef __WIN32__ gchar *program_install_dir=NULL; #endif int main(int argc, char *argv[]) { int debug_mode = 0 ; #ifdef __WIN32__ if(argc>0) { program_install_dir=g_path_get_dirname(argv[0]); } else g_warning("cannot deduce program install dir from argv"); #endif //FIXME to use getopt if( argc >1 && strcmp(argv[1],"-d")==0) { g_debug("argv[0] is '%s'",argv[0]); // avoid this... destroys argv[0] argc--; argv++; debug_mode = 1 ; } else g_log_set_handler (NULL, G_LOG_LEVEL_DEBUG | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, null_logger, NULL); #ifndef __WIN32__ srand48(0); #endif gtk_set_locale (); gtk_init (&argc, &argv); /* numbers in saved files are messed up by locales otherwise */ setlocale(LC_NUMERIC, "C"); #if defined(G_THREADS_ENABLED) && defined(IS_PLYMORPH) #if GLIB_MAJOR_VERSION >= 2 //#warning threads are disabled if (!g_thread_supported ()) g_thread_init (NULL); #else #warning the code for glib-1.2 threads is incomplete and malfunctioning #endif #endif #ifdef ENABLE_NLS bindtextdomain ( GETTEXT_PACKAGE, LOCALEDIR); #if GTK_MAJOR_VERSION >= 2 /* Mennucc: from here on, all messages will be translated before they are passed to GTK, that is, Pango, so they must be UTF-8. Thanks to Thomas Huriaux (see http://bugs.debian.org/361260 ) */ bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); /* note that this means that any translated message that may be written to the terminal will be UTF-8 as well! Currently messages output from g_warnings and such are not translated, so it is not a problem; but, see utils2.c:18 */ #endif textdomain ( GETTEXT_PACKAGE); #endif #ifdef IS_PLYMORPH gtk_gl_init (&argc, &argv); init_gl(); /* try dynamical loading of the ply gizmo */ if(!bind_libply(argv)) return 1; #endif /* Inititalise GDK : done by gtk_init gdk_init(&argc,&argv); */ gdk_rgb_init(); #ifdef HAVE_X //FIXME I think that I need to do something more... gdk_set_sm_client_id (PACKAGE); #endif #ifdef USE_IMLIB { /* Immediately after initialising GDK, Initialise Imlib */ gdk_imlib_init(); /* Get gdk to use imlib's visual and colormap */ gtk_widget_push_visual(gdk_imlib_get_visual()); gtk_widget_push_colormap(gdk_imlib_get_colormap()); } #else #endif #ifdef __WIN32__ printf("\ *************************************************************************\n\ gtkmorph Digital image warp and morph\n\ \n\ gtkmorph: Written and Copyright (C) 2000-2006 by A C G Mennucci\n\ libmorph: Written and Copyright (C) 1994-2000 by Michael J. Gourlay\n\ \n\ This program is free software; you can redistribute it and/or modify\n\ it under the terms of the GNU General Public License v2.\n\ See in the file COPYING.txt\n\ \n\ This program is distributed in the hope that it will be useful,\n\ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\ GNU General Public License for more details.\n\ \n\ *************************************************************************\n\ Don't close this window: this software is still unfinished, and messages \n\ and warnings appear here. If you don't like this window, minimize it.\n\ \n\ "); #endif { gchar *P=NULL; #ifdef __WIN32__ if(program_install_dir && P==NULL) { P= g_build_filename(program_install_dir,"pixmaps",NULL); if(!g_file_test(P, G_FILE_TEST_IS_DIR)) { if( debug_mode ) g_warning(" the 'pixmaps' directory should be in '%s' but is not",P); g_free(P);P=NULL; } } #else if(P==NULL && g_file_test(DATADIR "/" PACKAGE "/pixmaps", G_FILE_TEST_IS_DIR)) P=g_strdup(DATADIR "/" PACKAGE "/pixmaps"); #endif if(P==NULL && g_file_test("pixmaps", G_FILE_TEST_IS_DIR)) P=g_strdup("pixmaps"); if(P) { if( debug_mode ) g_debug("pulling pixmaps from '%s'",P); add_pixmap_directory (P); g_free(P); } else g_warning("could not locate pixmaps"); } /* * The following code was added by Glade to create one of each component * (except popup menus), just so that you see something after building * the project. Delete any components that you don't want shown initially. */ /* Create a new file selection widget */ //HACK imageselection1_g = GTK_FILE_SELECTION(create_imageselection1() ); /* this will crash if some problems are encountered */ fileselection1_for_image_num_g=-5; /* sp->resulting_width = sp->resulting_width_sp = 768; */ /* sp->resulting_height = sp->resulting_height_sp = 576; */ /* sp->meshes_x=40; */ /* sp->meshes_y=30; */ //SIMPLER SETUP #ifdef IS_PLYMORPH sp->resulting_width = sp->resulting_width_sp = 512; sp->resulting_height = sp->resulting_height_sp = 512; #else sp->resulting_width = sp->resulting_width_sp = 300; sp->resulting_height = sp->resulting_height_sp = 400; sp->meshes_x=12; sp->meshes_y=9; #endif /************************ main window ******************/ // FIXME I am undecided // 1) the resulting image is in a window, and there is the main window // 2) the resulting image is in detachable handlebox in ' ' ' ' // Actually we can switch from one to the other: // we detach the content and we attach it in the other. // It looks complicated but the fact is, I would like // the possibility that the user may set with a preference 1) or 2) /* if (0) { */ /* // case 1) NOW DONT WORK */ /* //we create the MAIN_WIN to hold the resulting image */ /* create_and_show_image_win(MAIN_WIN); */ /* { */ /* GtkWidget* hb= lookup_widget (window_main , */ /* "resultingimage_frame"), */ /* * vb=lookup_widget (sp->im_widget[MAIN_WIN] , "vbox3"); */ /* g_assert(hb); */ /* g_assert(vb); */ /* gtk_container_remove(GTK_CONTAINER (sp->im_widget[MAIN_WIN]), */ /* vb); */ /* gtk_container_add (GTK_CONTAINER (hb), vb); */ /* gtk_widget_destroy(sp->im_widget[MAIN_WIN]); */ /* sp->im_widget[MAIN_WIN]=vb; */ /* } */ /* } */ /* else //case 2) */ GtkWidget *window_main=NULL; #ifdef GOOD_OLD window_main = create_window_main (); //now it needs to be set to MA_WINS+1 since it contains the resulting image gtk_widget_set_data_top(window_main,"imagenum", GUINT_TO_POINTER(MAIN_WIN)); sp->im_widget[MAIN_WIN]=window_main; init_image_win_data_and_set_all(MAIN_WIN, window_main,"gtkmorph"); gtk_window_set_default_size(GTK_WINDOW(window_main),600,400); gtk_widget_show (window_main); #else create_and_show_image_win(MAIN_WIN); window_main=sp->im_widget[MAIN_WIN]; #endif #ifdef IS_PLYMORPH GtkWidget *window_navigation=create_navigation(); gtk_widget_show(window_navigation); #else // need to allocate feature colors! allocate_colors( window_main ); create_mag_(); feature_init(); { int lp; for(lp=0 ; lp <= 2; lp ++) { if(!add_feature(NULL)) break; } } /* fix things as prescribed by the current settings */ gtkmorph_settings_callback(NULL,NULL); #endif /* show it */ //sp->max_wins=0; //while (gtk_events_pending()) // gtk_main_iteration (); /******************************************* create images */ // this is honored in the following sp->max_wins=1; //setup_handlebox_factors(); movie_init(); #if HAVE_WAILI wavelet_init(); #endif #ifndef IS_PLYMORPH fourier_init(); #endif if(argc<=1 || ( debug_mode && argc <= 2) ) { int lp; for(lp=1 ; lp <= sp->max_wins; lp ++) create_and_show_image_win(lp); } else { load_session(MAIN_WIN,argv[argc-1]); } gtk_main (); return 0; } xmorph-20140707+nmu2/gtkmorph/mesh-gtk.c0000664000000000000000000007264612356304631014602 0ustar /* by A Mennucci, Aug 2000 * this code is the interface between the GTK+ toolkit and libmorph it is an intermediate step in between, the mesh code and the complexity of the whole GUI it should be part of libmorph, but then libmorph would need to be linked against GTK+, and this is unwanted */ #include #include #include #include #include "../libmorph/spl-array.h" #include "../libmorph/mesh.h" #include "../libmorph/relax.h" #include "gtk/gtk.h" #include #ifdef USE_IMLIB #include #else #include #endif #ifdef HAVE_X #include #endif #include #include "gtk-meta.h" #include "gtktopdata.h" #ifdef HAVE_LIBART #include #endif #include "main.h" #include "callbacks.h" #include "mesh-gtk.h" #include "interface.h" #include "feature.h" #include "utils.h" #include "support.h" #ifdef G_THREADS_ENABLED #if GLIB_MAJOR_VERSION >= 2 //FIXME // for some strange reasons, //the windows are not drawn while the thread is runnig // so I disable this code //#define SMOOTH_THREADS #else #warning the code for glib-1.2 threads is incomplete and malfunctioning #endif #endif double ortho=0.1; static double smooth_mesh_once(MeshT *mesh,int keepborder) { double change; g_return_val_if_fail(mesh->nx>=2 && mesh->ny>=2,0); #ifdef USELESS struct mesh_variance_s aft,bef; const int anylabel=0; struct mesh_variance_s ref= {sp->resulting_width*sp->resulting_width/8, sp->resulting_height *sp->resulting_height/8, 0,// am I stupid? YES sp->resulting_width*sp->resulting_height/8, sp->resulting_width/2,sp->resulting_height/2}; MeshT copymesh; if(!keepborder) { meshInit(©mesh); meshAlloc(©mesh,mesh->nx,mesh->ny); meshCopy(©mesh,mesh); bef=mesh_variance(mesh, anylabel); //avoid crisis bef.vx=CLAMP(bef.vx,400,ref.vx); bef.vxy=CLAMP(bef.vxy,0,ref.vxy); bef.vy=CLAMP(bef.vy,400,ref.vy); bef.mx=CLAMP(bef.mx,ref.mx-100,ref.mx+100); bef.my=CLAMP(bef.my,ref.my-100,ref.my+100); } #endif change=smooth_energy_mesh (settings_get_value("energy for mesh smoothing"), mesh, settings_get_value("mesh cant overlap"), keepborder, ortho, sp->resulting_width, sp->resulting_height); #ifdef USELESS if(!keepborder) { aft=mesh_variance(mesh, anylabel); //mesh_normalize_variance(mesh,anylabel,bef,aft); change= meshDistance(mesh,©mesh,1); // meshFreeReally(©mesh); meshUnref(©mesh); } #endif return change; } static gboolean smooth_idle(gpointer data); #ifdef SMOOTH_THREADS static gpointer smooth_thread(gpointer data); #endif GHashTable *idle_data_by_mesh=NULL; struct idle_data_t { MeshT *mesh;GtkWidget *widget; double total_change ; // , partial_change; int keepborder; GTimeVal time; #ifdef SMOOTH_THREADS GThread* thread; #endif gint idle_pid; // gint width;gint height }; static double smooth_mesh(MeshT *mesh,GtkWidget *widget) { struct idle_data_t *i; if(idle_data_by_mesh==NULL) idle_data_by_mesh = g_hash_table_new(NULL,NULL); i= g_hash_table_lookup (idle_data_by_mesh,//GHashTable *hash_table, mesh); //gconstpointer key if(i){ i->total_change=0; //g_debug("resetting smoothing mesh 0x%lx",(long)mesh); }else{ i=g_malloc0(sizeof(struct idle_data_t)); i->mesh=mesh; i->widget=widget; i->total_change=0; g_get_current_time(&(i->time)); i-> keepborder= settings_get_value("preserve border"); g_hash_table_insert (idle_data_by_mesh,//GHashTable *hash_table, mesh, // gpointer key, i );//value #ifdef SMOOTH_THREADS if(g_thread_supported ()) { GError *err=NULL; i->thread= g_thread_create(smooth_thread,//GThreadFunc func, i,//gpointer data, FALSE,//gboolean joinable, &err); g_debug("starting thread %lx for smoothing mesh 0x%lx", (long)i->thread,(long)mesh); if (err) { g_warning( err->message ); g_error_free (err); } } else #endif { i->idle_pid=(g_idle_add(smooth_idle,i));//gpointer value g_debug("starting idle_smoother %d for smoothing mesh 0x%lx", i->idle_pid, (long)mesh); } } return smooth_mesh_once(mesh,i-> keepborder); } static gboolean smooth_idle_stop_one //(*GHRFunc) (gpointer key, gpointer value, gpointer user_data) { struct idle_data_t *i=value; /* quick exit */ i->total_change=1e100; return TRUE; } gint smooth_idle_stop() { if(idle_data_by_mesh) return g_hash_table_foreach_remove(idle_data_by_mesh,//GHashTable smooth_idle_stop_one,// GHRFunc func, NULL);//gpointer user_data); else return 0; } gboolean smooth_idle_stop_by_mesh(MeshT *mesh) { struct idle_data_t *i; if(idle_data_by_mesh){ i= g_hash_table_lookup (idle_data_by_mesh,//GHashTable *hash_table, mesh); //gconstpointer key /* quick exit */ if(i) i->total_change=1e100; else return FALSE; return TRUE; } else return TRUE; } static gboolean smooth_idle(gpointer data) { struct idle_data_t *i=data; MeshT *mesh=i->mesh; double change=0, maxchange=sp->resulting_width * mesh->nx * mesh->ny, elapsed; GTimeVal bef=i->time,aft; /* 1e100 is the quick exit flag (when window is deleted)*/ if(mesh->x && i->total_change < 1e100) { change=smooth_mesh_once(mesh,i-> keepborder); i->total_change+=change; //i->partial_change+=change; } g_get_current_time(&aft); elapsed=(double)(aft.tv_sec-bef.tv_sec) + (double)(aft.tv_usec -bef.tv_usec) /1e6 ; if( i->total_change < 1e100 && elapsed > 0.4 // && i->partial_change>20 && i->widget && GTK_WIDGET_REALIZED(i->widget)) { //if(i->partial_change>20) i->partial_change=0; i->time=aft; MY_GTK_DRAW(i->widget); } if (mesh->x==NULL || change < 0.001 || i->total_change > maxchange) { g_hash_table_remove (idle_data_by_mesh, mesh); //NOO! RECURSIVE GTK!!! while (gtk_events_pending())gtk_main_iteration (); g_free(data); g_debug("stop smoothing mesh 0x%lx, change %g",(long)mesh,i->total_change); return FALSE; } return TRUE; } // fprintf(stderr,"\r change %f total_change %f mesh %ld", // change,i->total_change, i->mesh); #ifdef SMOOTH_THREADS static gpointer smooth_thread(gpointer data) { struct idle_data_t *i=data; MeshT *mesh=i->mesh; while ( smooth_idle(data) ) { g_thread_yield () ; g_usleep(10000) ; } // g_debug("stopping thread %lx for smoothing mesh %lx", (long)i->thread,(long)mesh); return data; } #endif /*********************************************************************/ /*changes to point to point to upper left corner point, not nearest */ static void point_to_upper_left(MeshT *mesh, int *mi, int *mj, /* the mesh point affected */ GdkEventButton *event) { if ( meshGetxClamp(mesh, *mi,*mj) > event->x //&& *mi>0 // //meshMaxx(mesh) < *mi ) { *mi -= 1;} if ( meshGetyClamp(mesh, *mi,*mj) > event->y //&& *mj > 0 // //meshMaxy(mesh) < *mj ) {*mj -= 1; } } /********************************************************************* these callbacks are used when editing a mesh if they return TRUE, something was done to point *mi *mj (and often the mesh is smootheed) ********************************************************************/ enum tools active_tool=0; static int last_mi, last_mj, last_label; static int last_x=0, last_y=0; enum tools last_action; GdkEventButton last_event; MeshT *last_mesh=NULL; GtkWidget *last_widget=NULL; void on_unselect_point_activate (GtkMenuItem *menuitem, gpointer user_data) { last_action=tool_unselect; if(meshGetLabel(last_mesh, last_mi, last_mj)== 0 // ||sp->im_editview[MAIN_WIN] != EDITVIEW_FEATURES ) {gdk_beep();return;} //if( meshGetLabel(last_mesh, last_mi, last_mj) != 0 ) { if (settings_get_value("mesh auto sync")) { int lp=MAIN_WIN; for(; lp>=0; lp--) if( sp->im_widget[lp] != NULL) { meshSetLabel(&sp->im_mesh[lp], last_mi, last_mj, 0); MY_GTK_DRAW (sp->im_widget[lp]); }} else meshSetLabel(last_mesh, last_mi, last_mj, 0); } smooth_mesh(last_mesh,last_widget); } void on_assign_point_activate (GtkMenuItem *menuitem, gpointer user_data) { extern int feature_n; last_action=tool_assign; if( feature_n < 0 //meshGetLabel(last_mesh, last_mi, last_mj) == feature_n || //|| sp->im_editview[MAIN_WIN] != EDITVIEW_FEATURES ) {gdk_beep();return;} //if(meshGetLabel(last_mesh, last_mi, last_mj)!=-1) { if (settings_get_value("mesh auto sync")) { int lp=MAIN_WIN; for(; lp>=0; lp--) if( sp->im_widget[lp] != NULL) { meshSetLabel(&sp->im_mesh[lp], last_mi, last_mj, feature_n+1); MY_GTK_DRAW(sp-> im_widget[lp]); }} else meshSetLabel(last_mesh, last_mi, last_mj, feature_n+1); } } void on_select_point_activate (GtkMenuItem *menuitem, gpointer user_data) { last_action=tool_select; if(meshGetLabel(last_mesh, last_mi, last_mj)==-1 //||sp->im_editview[MAIN_WIN] != EDITVIEW_FEATURES ) {gdk_beep();return;} //if(meshGetLabel(last_mesh, last_mi, last_mj)!=-1) { if (settings_get_value("mesh auto sync")) { int lp=MAIN_WIN; for(; lp>=0; lp--) if( sp->im_widget[lp] != NULL) { meshSetLabel(&sp->im_mesh[lp], last_mi, last_mj, -1); MY_GTK_DRAW(sp-> im_widget[lp]); }} else meshSetLabel(last_mesh, last_mi, last_mj, -1); } } void on_menu_smooth_activate (GtkMenuItem *menuitem, gpointer user_data) { smooth_mesh(last_mesh,last_widget); } void on_add_horizontal_line_activate (GtkMenuItem *menuitem, gpointer user_data) { point_to_upper_left(last_mesh,&last_mi,&last_mj,&last_event); last_action=4; if (settings_get_value("mesh auto sync")) { int lp=MAIN_WIN; for(; lp>=0; lp--) if( sp->im_widget[lp] != NULL) { meshLineAdd(&sp->im_mesh[lp], last_mj, 0.5, 2); MY_GTK_DRAW(sp->im_widget[lp]); } } else meshLineAdd(last_mesh, last_mj, 0.5, 2); sp->meshes_x= MAX(sp->meshes_x, last_mesh->nx); sp->meshes_y= MAX(sp->meshes_y, last_mesh->ny); smooth_mesh(last_mesh,last_widget); redraw_images(); } void on_add_vertical_line_activate (GtkMenuItem *menuitem, gpointer user_data) { point_to_upper_left(last_mesh,&last_mi,&last_mj,&last_event); last_action=5; if (settings_get_value("mesh auto sync")) { int lp=MAIN_WIN; for(; lp>=0; lp--) if( sp->im_widget[lp] != NULL) { meshLineAdd(&sp->im_mesh[lp], last_mi, 0.5, 1); MY_GTK_DRAW(sp->im_widget[lp]);// gtk_widget_draw (sp->im_widget[lp] , NULL); } } else meshLineAdd(last_mesh, last_mi, 0.5, 1); sp->meshes_x= MAX(sp->meshes_x, last_mesh->nx); sp->meshes_y= MAX(sp->meshes_y, last_mesh->ny); smooth_mesh(last_mesh,last_widget); redraw_images(); } void on_del_horizontal_line_activate (GtkMenuItem *menuitem, gpointer user_data) { //point_to_upper_left(last_mesh,&last_mi,&last_mj,&last_event); last_action=6; if (settings_get_value("mesh auto sync")) { int lp=MAIN_WIN; for(; lp>=0; lp--) if( sp->im_widget[lp] != NULL) { meshLineDelete(&sp->im_mesh[lp], last_mj, 2); MY_GTK_DRAW(sp->im_widget[lp]);// gtk_widget_draw (sp->im_widget[lp] , NULL); } } else meshLineDelete(last_mesh, last_mj, 2); smooth_mesh(last_mesh,last_widget); redraw_images(); } void on_del_vertical_line_activate (GtkMenuItem *menuitem, gpointer user_data) { //point_to_upper_left(last_mesh,&last_mi,&last_mj,&last_event); last_action=7; if (settings_get_value("mesh auto sync")) { int lp=MAIN_WIN; for(; lp>=0; lp--) if( sp->im_widget[lp] != NULL) { meshLineDelete(&sp->im_mesh[lp], last_mi, 1); MY_GTK_DRAW(sp->im_widget[lp]);//gtk_widget_draw (sp->im_widget[lp] , NULL); } } else meshLineDelete(last_mesh, last_mi, 1); smooth_mesh(last_mesh,last_widget); redraw_images(); } void on_adjust_activate (GtkMenuItem *menuitem, gpointer user_data) { extern int last_clicked_image ; int lp = last_clicked_image ; MeshT *mesh=&(sp->im_mesh[lp]); GdkPixbuf *dst= (sp->im_warped_pixbuf[lp]); #if 0 int x,y,dx,dy; int *mi, *mj; long d; GdkModifierType state; gdk_window_get_pointer (event->window, &x, &y, &state); d=meshPointNearest(mesh , x,y, //event->x, event->y, //int px, int py, mi, mj, &dx, &dy); #endif adjust_1_point_wrt_morph(mesh,dst , last_mi, last_mj); redraw_images(); //gtk_widget_update_rect (widget, x, y,90); } /******************************************************************/ /*********************************************************************/ MeshT rubbermesh; gboolean dragging=FALSE; gboolean gdk_mesh_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data, MeshT *mesh , /* the mesh point affected */ int *mi, int *mj, int *mlabel, enum tools *action ) { if ((event->keyval >=48 && event->keyval <58 ) || (event->keyval >=105 && event->keyval <= 108 )) { { int x,y,dx,dy; long d; //GdkModifierType state; // THIS IS OFF: it is computed w/o attention to scrolling //gdk_window_get_pointer (event->window, &x, &y, &state); //dont exist; x=event->x ; y=event->y; x=last_x; y=last_y; d=meshPointNearest(mesh , x,y, //event->x, event->y, //int px, int py, mi, mj, &dx, &dy); my_gtk_widget_update_rect (widget, x, y,90); } last_mi=*mi; last_mj=*mj; last_label=*mlabel=meshGetLabel(mesh, *mi, *mj); //last_event=*event; last_mesh=mesh; last_widget=widget; if(event->keyval ==48) on_unselect_point_activate(NULL,NULL); if(event->keyval >48 && event->keyval <58) { meshSetLabel(mesh, last_mi, last_mj, event->keyval-48); } if (event->keyval >=105 && event->keyval <= 108 ) { double x,y; x=meshGetx(mesh, *mi, *mj); y=meshGety(mesh, *mi, *mj); if (event->keyval ==105) y-=.333; if (event->keyval ==106) x-=.333; if (event->keyval ==107) y+=.333; if (event->keyval ==108) x+=.333; meshSet(mesh, *mi, *mj, x, y); } return TRUE; } else return FALSE; } #define NORMALIZE_X_Y \ if(settings_get_value("preserve border")){\ if(*mi==0)\ x=meshMinx(mesh);\ else\ if(*mi == mesh->nx-1)\ x=meshMaxx(mesh);\ else x=CLAMP(x,meshMinx(mesh) ,meshMaxx(mesh));\ if( *mj==0 )\ y=meshMiny(mesh);\ else\ if( *mj == mesh->ny-1)\ y=meshMaxy(mesh);\ else y=CLAMP(y,meshMiny(mesh) ,meshMaxy(mesh));\ } gboolean gdk_mesh_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data, MeshT *mesh, /* the mesh point affected */ int *mi, int *mj, int *mlabel, enum tools *action, /* what was done: */ gboolean readonly) { //int mi; int mj; int x; int y; long d; int e=settings_get_value("edit features"); //g_message("press"); *action=active_tool; x=event->x; y= event->y; x-= PIXEDITBORDER; y-= PIXEDITBORDER; { int dx; int dy; d=meshPointNearest(mesh , x, y, //int px, int py, mi, mj, &dx, &dy); } last_mi=*mi; last_mj=*mj; last_label=*mlabel=meshGetLabel(mesh, *mi, *mj); last_event=*event; last_mesh=mesh; last_widget=widget; if(readonly) { last_label=*mlabel=meshGetLabel(mesh, *mi, *mj); return TRUE; } if(event->button == 1) { //g_message("press"); NORMALIZE_X_Y dragging=TRUE; if(active_tool == tool_edit &&( last_label!=0 || e )) { if(e && last_label==0) on_select_point_activate(NULL,NULL); meshSet(mesh, *mi, *mj, x,y); smooth_mesh(last_mesh,last_widget); } else if (active_tool == tool_move ||active_tool == tool_stretch) { if(last_label==0) { gdk_beep(); dragging = FALSE; return FALSE; } } else if(e) { if(active_tool == tool_unselect ) on_unselect_point_activate(NULL,NULL); if(active_tool == tool_select ) on_select_point_activate(NULL,NULL); if(active_tool == tool_assign ) on_assign_point_activate(NULL,NULL); } else { gdk_beep(); dragging = FALSE; return FALSE; } //prepare for rubbermesh dragging meshCopy(&rubbermesh,mesh); last_label=*mlabel=meshGetLabel(mesh, *mi, *mj); //FIXME 180 is a wild guess //gtk_widget_update_rect (widget, x, y,180); MY_GTK_DRAW(widget);//gtk_widget_draw(widget,NULL); return TRUE; } else if(event->button == 2 ) { smooth_idle_stop_by_mesh(mesh); return FALSE; } else if(event->button==3) { static GtkWidget* m=NULL; smooth_idle_stop_by_mesh(mesh); if(m==NULL) m=create_menuEditMesh(); if(e) { gtk_widget_set_data_top(m,"mesh",mesh); gtk_widget_set_data_top(m,"drawable",widget); gtk_menu_popup (GTK_MENU(m),//GtkMenu *menu, NULL,//GtkWidget *parent_menu_shell, NULL,//GtkWidget *parent_menu_item, NULL,//GtkMenuPositionFunc func, NULL,//gpointer data, 3,//guint button, 0);//guint32 activate_time); return TRUE; } else { gdk_beep(); return FALSE;} } else { dragging=FALSE; return FALSE; } } gboolean gdk_mesh_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data, MeshT *mesh, int *mi, int *mj/* the mesh point affected */ ) { GdkModifierType state; int x,y; //track point position { if (event->is_hint) gdk_window_get_pointer (event->window, &x, &y, &state); else { x = event->x; y = event->y; state = event->state; } x-= PIXEDITBORDER; y-= PIXEDITBORDER; last_x=x; last_y=y; { char s[200]; sprintf(s,"x %3d y %3d",x,y); set_info_label(s); } } if(!dragging) return FALSE; if (state & GDK_BUTTON1_MASK) { //int mi; int mj; #ifndef LOSE_POINTS_WHILE_MOVING if(last_mi == -1 ) { int dx; int dy; g_warning("lost point while editing the mesh: WHY?!?"); /* I have to track a strange bug : sometimes I lose the point it is as if this signal is executed BEFORE the button press!, or after the button RELEASE*/ //prepare for rubbermesh dragging FIXME memory leak meshCopy(&rubbermesh,mesh); meshPointNearest(mesh , x, y, //int px, int py, mi, mj, &dx, &dy); last_mi=*mi; last_mj=*mj; last_mi=*mi; last_mj=*mj; last_label=meshGetLabel(mesh, *mi, *mj); last_mesh=mesh; last_widget=widget; } else { *mi=last_mi; *mj=last_mj; } #endif NORMALIZE_X_Y if( active_tool == tool_edit) { meshSet(mesh, *mi, *mj, x, y); smooth_mesh(last_mesh,last_widget); } else if( active_tool == tool_move ) { meshSet(mesh, *mi, *mj, x, y); smooth_mesh_rubber(mesh,&rubbermesh,0,*mi,*mj,last_label, settings_get_value("mesh cant overlap"), settings_get_value("preserve border"),ortho, sp->resulting_width, sp->resulting_height ); smooth_mesh(mesh,last_widget); } else if(active_tool == tool_stretch ) { double rubberish=0.2; if(event->state&GDK_SHIFT_MASK ) rubberish+=0.2; if(event->state&GDK_CONTROL_MASK ) rubberish+=0.4; meshSet(mesh, *mi, *mj, x, y); smooth_mesh_rubber(mesh,&rubbermesh,rubberish,*mi,*mj,last_label, settings_get_value("mesh cant overlap"), settings_get_value("preserve border"),ortho , sp->resulting_width, sp->resulting_height); smooth_mesh(mesh,last_widget); } ////FIXME the rectangle size is a wild guess //gtk_widget_update_rect (widget, x, y, 200); MY_GTK_DRAW(widget);//gtk_widget_draw(widget,NULL); return TRUE; } else return FALSE; } gboolean gdk_mesh_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data, MeshT *mesh, int *mi, int *mj /* the mesh point affected */ ) { { int x,y; x = event->x; y = event->y; x-= PIXEDITBORDER; y-= PIXEDITBORDER; last_x=x; last_y=y; } if(!dragging) return FALSE; //g_message("release"); dragging=FALSE; last_mesh=mesh; smooth_mesh(mesh,widget); if(event->button==1) { /* I have to track a strange bug : lets be nasty */ // last_mi=-1; //g_message("release"); meshUnref(&rubbermesh); } *mi=last_mi; *mj=last_mj; MY_GTK_DRAW(widget);//gtk_widget_draw (widget , NULL); return TRUE; } /************************************************************ * the code following is based on: * * diw_map.c: Digital Image Warping X graphical user interface // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // */ /* Meshpoint picking and drawing parameters */ /* MP_PICK_DIST: farthest you may be from a Mesh point to pick it currently ignored */ //#define MP_PICK_DIST 15 //#define MP_SIZE 16 #define MP_ARC (360*64) #define MY_CALLOC(A,B) (g_malloc0((A)*sizeof(B))) #define FREE(A) (g_free(A)) /* --------------------------------------------------------------- */ /* NAME // gdk_draw_mesh: Draw mesh lines and points for one mesh // // // // // DESCRIPTION // Draw mesh lines and points. // Also draw the selected meshpoint. // // if subimage !=NULL, rescale the mesh to stay in the subimage // // SEE ALSO // DrawMeshes */ typedef struct _GdkArc GdkArc; struct _GdkArc { gint filled; gint x; gint y; gint width; gint height; gint angle1; gint angle2; } ; #define USE_SPLINES gboolean gdk_draw_mesh(GdkDrawable *drawable, gboolean draw_lines_p, GdkGC *lines_gc, //lines GC unsigned int draw_points_p, GdkGC *points_gc[], //points GC gboolean draw_features_p, // FIXME unimplemented MeshT *mesh, //GdkRectangle *subimage, //int height, //viewport height //int width, //viewport width const double affine[6] ) { g_return_val_if_fail( meshAllocated(mesh) , FALSE ); GdkPoint *xpoints; int xi, yi; const double *xsP = mesh->x; const double *ysP = mesh->y; double *x_tmp; //= mesh->x; double *y_tmp; //= mesh->y; // this is not defined currently in gdk, so we define it above GdkArc xarc; /* intelligent point size */ int point_size= 6;//MIN (width / mesh-> nx, height / mesh->ny)/3; #ifdef USE_SPLINES double *xrow; double *yrow; gint width, height; #if GTK_MAJOR_VERSION == 1 gdk_window_get_size(drawable,&width,&height); #else gdk_drawable_get_size(drawable,&width,&height); #endif #endif if ( ! draw_points_p && ! draw_lines_p && ! draw_features_p) return TRUE; g_return_val_if_fail(mesh && mesh->x && mesh->y,FALSE); xarc.width = point_size; xarc.height = point_size ; xarc.angle1=0; xarc.angle2=MP_ARC; { int s=MAX(mesh->nx,mesh->ny); if(!(x_tmp=MY_CALLOC(s, double))) { return(FALSE); } if(!(y_tmp=MY_CALLOC(s, double))) { return(FALSE); } #ifdef USE_SPLINES s=MAX(s,MAX(width/4,height/4))+1; if(!(xrow=MY_CALLOC(s, double))) { return(FALSE); } if(!(yrow=MY_CALLOC(s, double))) { return(FALSE); } #endif if(!(xpoints=MY_CALLOC(s, GdkPoint))) { return(FALSE); } } /* Draw meshpoints and vertical meshlines */ for(xi=0; xi < mesh->nx; xi++) { /* Draw vertical mesh lines */ /* Create 1D array of mesh points knots */ { double x,y; for(yi=0; yiny; yi++) { x=xsP[yi*mesh->nx + xi]; y=ysP[yi*mesh->nx + xi]; x_tmp[yi] = x*affine[0]+y*affine[1] +affine[2]; y_tmp[yi] = x*affine[3]+y*affine[4] +affine[5]; } } if(draw_lines_p) { #ifdef USE_SPLINES /* Create abcissas of interpolant to make a smoothly drawn mesh line */ /* for(yi=0; yi<(height/4); yi++) */ /* yrow[yi] = yi*4; */ /* Make sure last abcissa is set */ /* yrow[yi-1] = height-1; */ /* Create the interpolated line segments */ hermite3_array2(y_tmp, x_tmp, mesh->ny, 0,4, xrow, height/4,0); /* Create an array of XPoints to draw smoothly interpolated mesh line */ for(yi=0; yi<(height/4); yi++) { xpoints[yi].x = (int) xrow[yi]; xpoints[yi].y = (int) yi*4; } /* Draw the smoothly interpolated mesh line */ gdk_draw_lines(drawable,lines_gc , xpoints,height/4); #else // USE_SPLINES for(yi=0; yi< mesh->ny; yi++) { xpoints[yi].x = (int) x_tmp[yi]; xpoints[yi].y = (int) y_tmp[yi]; } /* Draw the mesh lines */ gdk_draw_lines(drawable,lines_gc , xpoints, mesh->ny); #endif } /* Draw mesh points */ if(draw_points_p) { int l; for(yi=0; yiny; yi++) { xarc.x = x_tmp[yi] ; xarc.y = y_tmp[yi] ; l=meshGetLabel(mesh,xi,yi); if (l && (l+1) < draw_points_p) gdk_draw_arc (drawable, points_gc[l+1], TRUE, xarc.x - point_size/2, xarc.y - point_size/2, xarc.width, xarc.height, xarc.angle1, xarc.angle2 ); #ifdef DRAW_UNSELECTED_POINTS else gdk_draw_arc (drawable, lines_gc, TRUE, xarc.x - point_size/2, xarc.y - point_size/2, xarc.width/2, xarc.height/2, xarc.angle1, xarc.angle2 ); #endif } } } /* Draw horizontal meshlines */ if(draw_lines_p) { for(yi=0; yiny; yi++) { { double x,y; for(xi=0; xinx; xi++) { x=xsP[yi*mesh->nx + xi]; y=ysP[yi*mesh->nx + xi]; x_tmp[xi] = x*affine[0]+y*affine[1] +affine[2]; y_tmp[xi] = x*affine[3]+y*affine[4] +affine[5]; } } #ifdef USE_SPLINES /* for(xi=0; xi<(width/4); xi++) */ /* xrow[xi] = xi*4; */ /* xrow[xi-1] = width-1; */ hermite3_array2(x_tmp, y_tmp, mesh->nx, 0,4, yrow, width/4,0); for(xi=0; xi<(width/4); xi++) { xpoints[xi].x = (int) xi*4; xpoints[xi].y = (int) yrow[xi]; } gdk_draw_lines (drawable, lines_gc, xpoints, width/4); #else for(xi=0; xinx; xi++) { xpoints[xi].x = (int) x_tmp[xi]; xpoints[xi].y = (int) y_tmp[xi]; } gdk_draw_lines (drawable, lines_gc, xpoints, mesh->nx); #endif } } #ifdef USE_SPLINES g_free(xrow); g_free(yrow); #endif FREE(x_tmp); FREE(y_tmp); g_free(xpoints); return(TRUE); } gboolean gdk_draw_mesh_as_arrows(GdkDrawable *drawable, GdkGC *gc, MeshT *mesh, MeshT *base_mesh, gboolean is_difference_mesh, const double affine[6]) { int xi, yi; g_return_val_if_fail( meshAllocated(mesh) && meshAllocated(base_mesh) , FALSE); const double c=cos(3.141 * 0.8), s=sin(3.141 * 0.8); const int nx=mesh->nx, ny=mesh->ny ; g_return_val_if_fail(nx==base_mesh->nx && ny==base_mesh->ny,FALSE); const double *xsP = mesh->x; const double *ysP = mesh->y; const double *xbP = base_mesh->x; const double *ybP = base_mesh->y; double xt, yt, xbt, ybt , xd, yd ; for(xi=0; xi < nx; xi++) { for(yi=0; yi < ny; yi++) { if(meshGetLabel(mesh,xi,yi)>0 || meshGetLabel(base_mesh,xi,yi)>0) { { double xb, yb; xb=xbP[yi*nx + xi]; yb=ybP[yi*nx + xi]; xbt = xb*affine[0]+yb*affine[1] +affine[2]; ybt = xb*affine[3]+yb*affine[4] +affine[5]; if(!is_difference_mesh) { double x,y ; x =xsP[yi*nx + xi]; y =ysP[yi*nx + xi]; xt = x*affine[0]+y*affine[1] +affine[2]; yt = x*affine[3]+y*affine[4] +affine[5]; xd=xt-xbt; yd=yt-ybt; } else { double x,y ; x =xsP[yi*nx + xi]; y =ysP[yi*nx + xi]; xt = x*affine[0]+y*affine[1]; yt = x*affine[3]+y*affine[4]; xd=xt; yd=yt; xt=xd+xbt; yt=yd+ybt; } } double xdr = xd * c - yd *s , ydr = xd * s + yd * c , xdl = xd * c + yd *s , ydl = - xd * s + yd * c ; gdk_draw_line(drawable,gc, xbt, ybt, xt, yt); gdk_draw_line(drawable,gc, xt, yt, xt+xdr/4., yt+ydr/4.); gdk_draw_line(drawable,gc, xt, yt, xt+xdl/4., yt+ydl/4.); //gdk_draw_line(drawable,gc, xt+xdr/10, yt+ydr/10, xt+xdl/10, yt+ydl/10); }}} return TRUE; } /************************************************************************/ void on_tool_edit_clicked (GtkButton *button, gpointer user_data) { active_tool=tool_edit; } void on_tool_move_clicked (GtkButton *button, gpointer user_data) { active_tool=tool_move; } void on_tool_stretch_clicked (GtkButton *button, gpointer user_data) { active_tool=tool_stretch; } void on_tool_select_clicked (GtkButton *button, gpointer user_data) { active_tool=tool_select; } void on_tool_unselect_clicked (GtkButton *button, gpointer user_data) { active_tool=tool_unselect; } void on_tool_assign_clicked (GtkButton *button, gpointer user_data) { active_tool=tool_assign; } xmorph-20140707+nmu2/gtkmorph/utils.h0000664000000000000000000000777612356304631014232 0ustar #ifndef __UTILS_H__ #define __UTILS_H__ #include "main.h" gchar * compute_title (int j); GtkWidget * create_menu_of_images(int avoid, GtkSignalFunc callback , gboolean avoid_diffs); //CHE CRETINO CHE SONO #define dstmesh (&(sp->im_mesh[MAIN_WIN])) void set_sensitive(GtkWidget * widget, gboolean flag); /* void */ /* flash_point(GdkDrawable *drawable, */ /* int x,int y ); */ void destroy_image_win_pixbufs(int lp, int what); void destroy_image_win_data(int lp); void alloc_image_win_data(int lp, int what); void create_and_show_image_win(int lp); /* void */ /* init_image_win_data_and_set_all(int lp); /\* the slot where the data are put */ /* in the arrays in sp-> *\/ */ void editview_callback(int i); void set_editview(int lp, /* window number */ int status); void pixbuf_to_rrrgggbb(GdkPixbuf *pb, guint8 *r, guint8 *g, guint8 *b); /* void */ /* rrrgggbbb_add_to_pixbuf(GdkPixbuf *pb, /\* destination *\/ */ /* const guint8 *r, const guint8 *g, const guint8 *b, */ /* /\* source *\/ */ /* double factor /\* dissolving factor *\/ */ /* ); */ void do_warp_an_image_old(int lp); //, char * r, char *g, char * b); void do_warp_an_image_new(int lp); #define do_warp_an_image do_warp_an_image_new /********** showerr() * shows libc error */ inline void showerr(const char *file, const char *msg); /********************************************************** * accepts new backing pixmap of the appropriate size * save it in the data of the top window * and in the sp-> structure * resizes the viewport */ gboolean set_backing_pixmap (GtkWidget *widget, GdkPixmap *newpixmap, int width, int height); /******************************************************************** loads image from pixbuf to pixmap for image window "lp" you should unref the pixbuf when it exists copies its data to r,g,b, */ void scale_loaded_pixbuf_to_pixmap_et_rrggbb( // GdkPixbuf *impixold, int lp //image number ); /**************************************************************************** promote meshes to have same lines and columns ***************************************************************************/ void promote_meshes(); /*********************************************************************** which image are we displaying? */ enum what_display{ PIXLOADED=0, PIXSUBIMAGE=1, PIXWARPED=2}; GdkPixbuf ** which_pixbuf_is_visible(int lp); GdkPixmap ** which_pixmap_is_visible(int lp); GdkPixbuf ** which_pixbuf(int lp, enum what_display what); GdkPixmap ** which_pixmap(int lp, enum what_display what); void destroy_pixbuf(int lp, enum what_display what); void destroy_pixmap(int lp, enum what_display what); #define PIXLOADEDBORDER 100 #define PIXEDITBORDER 30 static inline void which_pixbuf_size(int lp, enum what_display what, int *w, int *h) { *w=sp->resulting_width; *h=sp->resulting_height; if(what == PIXLOADED) { *w=sp->im_width[lp] ; *h=sp->im_height[lp]; } } void create__pixbuf(int lp, enum what_display what); void create__pixmap(int lp, enum what_display what); static inline void which_pixbuf_size_is_visible(int lp, int *w, int *h) { which_pixbuf_size( lp,sp->which_pix[lp] , w, h); } void render_pixmap(int lp, enum what_display what); /*************************************************************** * drawing area bookkeeping *********************************************************** */ /* creates new backing pixmap of the appropriate size save it in the data of the top window it uses: the image filename, to load the image, or, if none it creates a black pixmap it sets what is necessary for properly displaying the drawing area*/ void drawingarea_configure (int i); void setup_handlebox_factors(); void setup_handlebox_factor(int lp, int force); void set_frame_label(int i); void set_info_label(gchar *t); /* #ifdef GDK_PIXBUF_MAJOR /\* interfaces accepting GdkPixbufs *\/ */ /* #include "libmorph/warp2.h" */ /* #endif */ #endif //__UTILS_H__ xmorph-20140707+nmu2/gtkmorph/testfourier-1.tif0000664000000000000000000000731412356304631016122 0ustar II*N €?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfS8˜lÁ&“¹äö}? PhT:%G¤RiTºe617œ@éÕ:¥V­W¬VkUºåv½_°Oj› –Íg´ZmV»e¶Ýo¸Flu+Öíw¼^oW»åöýN¹À¯ø<& ‡ÄbqXºfuŒÈdrY<¦W-—¶c³¼æw=ŸÐhtQ ÖM§ÔjuZ½ecK­Ølv[=¦×m ×í÷[½æ÷}¿½îx>'ÇäOø\žg7Ïèt`ü¾—W­×ìvtN×w½ßðxnÏ—ÍçôzhžOW·Ýïø|nS{'Ëí÷ü~~>Ï×÷üÿÀ+ùÀ, ´pÁlÂAP|% ªÃÂÐÌ5 Ê1Ä E¤püIÅLT„ÄÑ\]Ƭ[Æ‘¬lÿFq¼uÇ4sÈ „çÇò#É Ô‹$É’l¾‹¤Ÿ)Ê’«S%ÊÒ̵-¯RĹ/Ì Í/LS,Í3°‹4M“lÜ­L“|å9Ή<ã:ÏÌô‹NóÜý?Ð,û@Д,ßAÐÔM0Q]GÉôm!IÒ’ %JÓÌcKÓTí=Ó”ýEQÆSSRULmPÕUm\ýU•}eY½µi[×ým\וë£]×Ö …TÖc½Ö‘eÙe•fÚ‹·bÚV­¬äYö½µm±͹oÜ ©pÜ—+Mo\×MÔ²Ý]Ýwµ×áyÞŒÛzßʃ{ßWíü˜ª€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfS8˜lÁ&“¹äö}? PhT:%G¤RiTºe617œ@éÕ:¥V­W¬VkUºåv½_°Oj› –Íg´ZmV»e¶Ýo¸Flu+Öíw¼^oW»åöýN¹À¯ø<& ‡ÄbqXºfuŒÈdrY<¦W-—¶c³¼æw=ŸÐhtQ ÖM§ÔjuZ½ecK­Ølv[=¦×m ×í÷[½æ÷}¿½îx>'ÇäOø\žg7Ïèt`ü¾—W­×ìvtN×w½ßðxnÏ—ÍçôzhžOW·Ýïø|nS{'Ëí÷ü~~>Ï×÷üÿÀ+ùÀ, ´pÁlÂAP|% ªÃÂÐÌ5 Ê1Ä E¤püIÅLT„ÄÑ\]Ƭ[Æ‘¬lÿFq¼uÇ4sÈ „çÇò#É Ô‹$É’l¾‹¤Ÿ)Ê’«S%ÊÒ̵-¯RĹ/Ì Í/LS,Í3°‹4M“lÜ­L“zÒ€¤äÄ Œ|î¿N3ÚË:NÓó <ÐSäÕ=P«åD°t%.ÐôzûEÒKåJ®Óí0×N´ÚõKÓË}5Pª”¥HºÔ:×QÕLm;V®M`³Õ•š‘SVË]e\¬­xõÕõúÓ]ØJå}b¨Űؖ[]HÙнƒh«öm©RÚº»e[JÕ­n±¶ÍÀ¬Û—­oÜÕ½Åtª·-ا]{×uÞJmÝz©WñdÞ—Ú“{ßÊ5õ€§–>’`:…áI– †¤N Ÿa˜š]‡âÈæ%Œ¦˜®8•cúŸiäIþ=’¤ÙPŠcyZ[“åÉU˜´™&h™fº=™çHf[ž¤Ù΀gšŸèÉ…¤¢Ú.™NÐ:zW¥êH–¦iª9ªkH~¯¤ë:ê3®lYõû²â9¶Ðì›^Ž›  €?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=€$1ù$–M'”JeR¹d¶Q‚K¦S9¤Öm7œNaà1PhT:%,Èèôºe6O¡L*:¥V­W‡ÏgÐ:Åv½_°Pé6%–ÍgT­»e¶×ZŸÛ®W;¥^Çu¼^oU÷À`c÷ æ ‡ÄE.øœf7}ÈcòY;Æ”ÌfmؼÖw=_µgôZ:nZý¤ÔjhYÍV·]4Ðëö[9.›i·ÜGµ›æö#±ßpxP]·ÆÝñù[Ž/­âóúZþOO­¢æõûYNo½™ê÷üXÎÏÍ€îùýX/¯ÝuòûþVùíÇç÷º{»ÇøÿªÏL«¯Ô ©Ïô¨¨ð4! §T) ¥Ðt1 ¦”9¥ìŒA¥pÔI¤ôQ¢ð´Y¢14a¢qTi¡Qtq¤O« Htm ÆñÔ‰FRÁ“ÍÿÏ”ñ?ÐÐ%D¾ô-÷Ñ{ùEÒOuJ¼ô0ùÒ”ÛÍKÓÎý5P½tíHïT;¯QÕOMVºÕM`çÕ•›·WÖÎue\¸õ­xé×û]ØN }b¹v ßX–[scÙΕh¹‘¨óZ»{iÛM•›nµÖÍÀÛÛ—UoÜÍEÅtº‰ØñÝ{?uÞMMËz³×ððG̽öë^÷û1}`L•邳¸Çà˜[ƒáÎå݈¹Xn(Ãb»…cL6-ޝøÎ@Äc™ÿäÌ­úÓå-žK–¯F`¹dYš÷—æË–eœ¾‰ãíž\8ž€×gzËšèÙ¦…¤µ.˜¯ézߥêLþª®Ù^°ÑgÚ½«ëÊž£°¬îÈ«l;K­mX’•¶²[Nà£l{š«³nÊnå¼µ{føÄïú½ðIÆë©œ¾eœZëÃñÊ/ȶ·(üïܺóÉóM‡-έ¼‡AÃjuÏôË?EÔý/Xµð{kÌöKG9Ú¤ýpŽõ}ÚUÛ÷Èÿuà£=x:7áùIiæ«O¡õšŸãzÈߥì¢~g¹!'¨€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=€$1ù$–M'”JeR¹d¶Q‚K¦S9¤Öm7œNaà1PhT:%,Èèôºe6O¡L*:¥V­W‡ÏgÐ:Åv½_°Pé6%–ÍgT­»e¶×ZŸÛ®W;¥^Çu¼^oU÷À`c÷ æ ‡ÄE.øœf7}ÈcòY;Æ”ÌfmؼÖw=_µgôZ:nZý¤ÔjhYÍV·]4Ðëö[9.›i·ÜGµ›æö#±ßpxP]·ÆÝñù[Ž/­âóú]>§W­×ì]§·Ïw½ßðx|^87GÉçôz}^¿f'Ííø|~_?§Ösïû~_¿ç÷öü?Ð À+@ÐLÁkAÐŒ% ªBÐÌ5 Ãê3 CÑ EÄ”AÅLU¾'ÇäOø\žg7Ïèt`ü¾—W­×ìvtN×w½ßðxnÏ—ÍçôzhžOW·Ýïø|nS{'Ëí÷ü~~>Ï×÷üÿÀ+ùÀ, ´pÁlÂAP|% ªÃÂÐÌ5 Ê1Ä E¤püIÅLT„ÄÑ\]Ƭ[Æ‘¬lÿFq¼uÇ4sÈ „çÇò#É Ô‹$É’l¾‹¤Ÿ)Ê’«S%ÊÒ̵-¯RĹ/Ì Í/LS,Í3°‹4M“lÜ­L“|å9Ή<ã:ÏÌô‹NóÜý?Ð,û@Д,ßAÐÔM0Q]GÉôm!IÒ’ %JÓÌb¨ þ,,8 >@~”@¨¼Ä(=R/home/debdev/xmorph/xmorph-current/gtkmorph/testfourier-1.tifCreated with The GIMPkYÔh cî{”åHHxmorph-20140707+nmu2/gtkmorph/callbacks_help.c0000664000000000000000000000414412356324215015776 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include "guide.h" #include "guide_text.h" #include "support.h" #include "callbacks.h" void on_generic_help_activate (GtkMenuItem *menuitem, gpointer user_data) { show_info( _("\ Here are a few tips at using this program\n\ 0) at startup the program is set for ``warping'': read the ``warp help''\n\ 1) to morph, you need to have 2 or more `input images' :\n\ use `add an image' (it is in the `file' menu); read the ``morph help''\n\ 2) if you keep the mouse still on a menu voice or on a button\n\ for a moment, you may read the help tips.\n\ 3) when the mouse pointer is in on the mesh grid, by hitting\n\ the right button, you get an useful menu.\n\ \n\n\ If you need more help, activate the guide.") ); } void on_morph_help_activate (GtkMenuItem *menuitem, gpointer user_data) { show_info( _("\ To morph:\n\ 1) load an image in each `input image',\n\ 2) edit the meshes by dragging the points (and use the menu that you get\n\ by the right mouse button)\n\ 3) set the `blending factors' and `mesh factors' as desired\n\ 4) and hit `do morph'\n\ ") ); } /* this is only in the GTK2 version... unfortunately glade1 has disappeared!*/ void on_feature_help_activate (GtkMenuItem *menuitem, gpointer user_data) { show_info( _(FEATURE_HELP)); } void on_mesh_tips_activate (GtkMenuItem *menuitem, gpointer user_data) { show_info( _(TIPS_HELP)); } void on_warp_help_activate (GtkMenuItem *menuitem, gpointer user_data) { show_info( _("\ It is not difficult to use this program for warping: just\n\ 1) load an image in the `input image 1',\n\ 2) edit the meshes by dragging the points (and use the menu that you get\n\ by the right mouse button)\n\ 3) and hit `do warp'\n\ ") ); } xmorph-20140707+nmu2/gtkmorph/affine.h0000664000000000000000000000164212356304631014304 0ustar static void affine_X_vector(double *dst,double *src, double *mat) { int i,j; for(i=0; i<2; i++) { dst[i] =0; for(j=0; j<2; j++) { dst[i] += mat[i*3+j] * src[j]; } dst[i] += mat[i*3+2]; } } static void p_affine_X_vector(GdkPoint p,double x, double y, double *affine) { p.x = x*affine[0]+y*affine[1] +affine[2]; p.y = x*affine[3]+y*affine[4] +affine[5]; } static void invert(double *b,double *f) { /* invert */ b[0]=1/f[0]; b[4]=1/f[4]; b[2]=-f[2]/f[0]; b[5]=-f[5]/f[4]; } static void mesh_X_affine(MeshT *dstmesh,MeshT *mesh,double *inv) { int xi,yi; double x,y; const double *xsP = mesh->x; const double *ysP = mesh->y; for(xi=0; xi < mesh->nx; xi++) { for(yi=0; yi < mesh->ny; yi++) { x=xsP[yi*mesh->nx + xi]; y=ysP[yi*mesh->nx + xi]; meshSetNoundo( dstmesh, xi,yi, x*inv[0]+y*inv[1] +inv[2], x*inv[3]+y*inv[4] +inv[5]); } } } xmorph-20140707+nmu2/gtkmorph/testfourier-4.tif0000664000000000000000000007354012356304631016131 0ustar II*âu€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfS8˜lÁ&“¹äö}? PhT:%G¤RiTºe617œ@éÕ:¥V­W¬VkUºåv½_°Oj› –Íg´ZmV»e¶Ýo¸Flu+Öíw¼^oW»åöýN¹À¯ø<& ‡ÄbqXºfuŒÈdrY<¦W-—¶c³¼æw=ŸÐhtQ ÖM§ÔjuZ½ecK­Ølv[=¦×m ×í÷[½æ÷}¿½îx>'ÇäOø\žg7Ïèt`ü¾—W­×ìvtN×w½ßðxnÏ—ÍçôzhžOW·Ýïø|nS{'Ëí÷ü~~>Ï×÷üÿÀ+ùÀ, ´pÁlÂAP|% ªÃÂÐÌ5 Ê1Ä E¤püIÅLT„ÄÑ\]Ƭ[Æ‘¬lÿFq¼uÇ4sÈ „çÇò#É Ô‹$É’l¾‹¤Ÿ)Ê’«S%ÊÒ̵-¯RĹ/Ì Í/LS,Í3°‹4M“lÜ­L“|å9Ή<ã:ÏÌô‹NóÜý?Ð,û@Д,ßAÐÔM0Q]GÉôm!IÒ’ %JÓÌcKÓTí=Ó”ýEQÆSSRULmPÕUm\ýU•}eY½µi[×ým\וë£]×Ö …TÖc½Ö‘eÙe•fÚ‹·bÚV­¬äYö½µm±͹oÜ ©pÜ—+Mo\×MÔ²Ý]Ýwµ×áyÞŒÛzßʃ{ßWíü˜ª€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfS8˜lÁ&“¹äö}? PhT:%G¤RiTºe617œ@éÕ:¥V­W¬VkUºåv½_°Oj› –Íg´ZmV»e¶Ýo¸Flu+Öíw¼^oW»åöýN¹À¯ø<& ‡ÄbqXºfuŒÈdrY<¦W-—¶c³¼æw=ŸÐhtQ ÖM§ÔjuZ½ecK­Ølv[=¦×m ×í÷[½æ÷}¿½îx>'ÇäOø\žg7Ïèt`ü¾—W­×ìvtN×w½ßðxnÏ—ÍçôzhžOW·Ýïø|nS{'Ëí÷ü~~>Ï×÷üÿÀ+ùÀ, ´pÁlÂAP|% ªÃÂÐÌ5 Ê1Ä E¤püIÅLT„ÄÑ\]Ƭ[Æ‘¬lÿFq¼uÇ4sÈ „çÇò#É Ô‹$É’l¾‹¤Ÿ)Ê’«S%ÊÒ̵-¯RĹ/Ì Í/LS,Í3°‹4M“lÜ­L“zÒ›¡ƒ0„€H^€€H@{€9¶s©8ZXƒ1àè%C "€ÀÅh!Ìw :\¦p`ô~1èh  ¢°y< ¢ø€`Xoç˜]ÆØZ™fˆV¨ˆ¾!Tˆª"€(}€‰¶q€‘ú‚„Ø4TWæ|À S fg(àšàÄ!ÀKâ{(`v€bÜäÁneâ-;OÔù?P CQUGR•)KS55NSÕDT•5QUU•uaYVˆ…o\×`{_Ø6‹cÙ6]›gÚ(d¥9/ó޳iµž…"@\WÁ q‚€P àF¶ƒŸ -T™&°^æà|´@P ‚ šöÙÿBfà,ÐÑ÷‚˜†‘À¦ ¦§™ïJè¨8 ÛCˆ¨€0`VGÕzŸt¹ÖyÜca&R^ …@-´"†A@6‹À6 ЇÑëD`- už úчŸ8¦÷3ÅNžŒ€UÀ< øÎ[„‰fc"Ø€½®gÐ&‰°g…Œ|æ·j¨êz®®k:Þ»¯êû²lÛFÔÛspnMÑ»7‡œÞÛëÁ¸Wâ\Zk!n=ȹ7*åÜË›s¯¡ÐDé1 u+hz¡ôÒÌJ…€P ìD E.zý” + ¶€X{€,(Æ>KqÑò±‡8òw¢øiŽp0Æ“ç@\ € PÀP€„5‡ káDÌ<\Y}Àt ¨ÀîÞ(\«l|­¡þVÐùËiâŽP3ÆêÊ a€ÖÁ¨% à,kªFQê;ˆ2Ú «p·z=dÓÉ`O ±’Hj¸B.áܬHx{`F†0—@ e#é‚Aë0³PÂCHlóáȇpõÍD…&â+¾mq&%ÁØ"Š‘Z,E¨¹£bŒ‘š4F¨Ù1ÀoŽ$9ÇW»zqò?H ¤ ÞÒ"EHÅÑ#À‘’a`A‰¸V_¡U+ <ÆQä=!9 àIB PÀÖÈ P€@J)²Çò€‰ Œ~r5Kãâàe€š7‡yô”06@k@tH‘OÞàˆ€bY ‚ÂuKhèºh ’€\ (qü¡€ ýŒD½Áþžàýƒcä~»ÐÚØövàQ‹iV€Óqð°GV€,¦Q ­€!ñ DzܘI¼¡–·ÈcÎQ/6m.Ñüûˆ8fàŒ 7¶:Õˆû²ä0–¶'ƒh]\(Ü;ÝëÂ[°R0/FHU£´~Ò:x¡T(¥Sj–Òúb)5¦ôäƒÓµµOªBku£“RêmOª+fMUZ¯VjÝ]Õ}–V*ÉY«C¾­u´Vúã\€xH¾QèVJ¸ìÔ…Ù@&ëÒ’R\}åÇ–Óa ¯©vÃ& %¤«ƒŽæèl¥À€e4¸vø0uÃÌyí0¤€ €èº;Ç»¤«´f U ?€"„ Å<1ìAÚZ p}¸.{f"Ä`†òA«uáOh)®˜)ˆ‘Fv$!H %Å]Xø1Õ‰°Ð@¸…€z¿E@àǮ /fHƒ ÁÊö¥GÚÆUò€< 1j/Û ·û` ;04ÜÁ2‹ 0†„C §Ü4©¾¸ƒ:\K‰ÀV)Åx·ã q¦6Yøäc¼{æÖBù# Ù…°Ý.¦­%³ ˆ32LgÈD d@f…· â¸ØÀJ‹6!˜X+ »<Š©r å@À.¸–­\(úÃ1%B¶±ýÃ3CjSaºøÃ`S¤ô§Áà=Ö0þ²ƒžÐ'˜ôöà†…§X÷B’Ÿß/¡á…`ýC‡pöQY ÁuZ @õ>±ô¸Å(Ãpø‘Þ„ jë‚G?Yë€`2;±D(#‚ÝVCJwÀ\ÁÎ:€…97jír¶vÞ݇¶‰m =Ź76`{¥’‘ÝÝ>wˆÞ`zïv¿¾”[P˳€p. Á¸G 3‡qŸÄø¯`8ùÓíí}¼q@ pH,„¡pdIh„C, “Ýõ ƒÀÉd|„ÀCaÆ8¨›å÷ ˜Ì @t( ‡‚ &@|=€ 5Û@·g7€³æB€g2Ô ú;ÞOåšØ(l©œ$ ¤(Žæ€0 ¡=Ÿ¤B˜Þs:à ðPUŠ€‚Š~€Ï˜êõ`x¶âwS,ÐIÁƒ—æ¡ñ8t2“@P0 ü}½À ¶e¦%‹F ‘¨äzA"’I¥©dº‰nèÁ¦°)¼æw=ŸÐhp*5!åJ¦Sª*¥Z±Z®W²6–ÏiµÛ_ÿN—Ûïøüþ¿Ïïùÿ€  t€}X ƒ Ø:„!J}Ìð\2l± Ó¨ô` Ñ¡³ ÁðT>Ïõ\|(ËæðÓJ!D$"S’8g(aÀ0 ‡3š,LëK€øý?À Ô$FÕx#Á4ͰŠ)˶â }‰!œRp´ P¶H±0Í0Ž+£$@ @šá‘-" Mz=bÀa:ÎÔƒ*K€ã;YcÌöt Ô"À\mTVÏäÀé:bj‡¢Š$‰¢ˆª,‹€Â2.ãHÚ7Žg8ò>* ‘N)I’äÙ>Q”Ð)VW–e¹v_˜f9F ­í[Z×¶-›jÛA`x"Ô·.Šã¹.[™¸(eÄ$`ƒ@eÂð€pY" VéX°Œ®Ùɼ/+Òö¾/«òþ7° 0l# Ã0àÄìPűŒi=ñÜ!ÈòT&à¹ùK“å9UºÞ‚e[›ç9Þzâ ÁàX5Ž6 ”šÄ´„VŒB^Ê“NAÁàE9@ÖÜW„ ÀÀ’'ÌT‡Ü4Ì•¨süü?cDÙ ¢ÙOP ̹e5¤ x)¨åUK瘰~š³VÂÓÐõjnàé¦Rm à …ÑÈí¥ð,§GHéˆK©unµ×»f«·j„Ý;Ç|Âx€ã<‡”ó£ã&/Aé ¨õžÃÚ{yð>$äüDˆ±#ŸÇ1âDL‰±:' ɬ&!$‘ÁÂà = Qš5€ÉÔ``ÈÀ(°=‹)è~›P6‡)ƒ "4V€î?Ñ `üÄú@îHK2@/ƈá[” )‘ ¨…QТ€2øx àû;ƒ™šVŒ†ˆÞF¨1«ÚA»ZO¬’AöpÇæ ìH èÞL¢¼Y‹qv/€Ãã,g1®6Æøãͤv21æ=ÇØÿ d1Ò"EY#€IRNJ Ø—'\ì«–%&IÝ<§œôZÈèƒ0HèÄxX‹ŒˆÃ€Ø¼Ðü2@$œ€D^bñš(Û¾0>ÁšŒ,6,Ï ß! œ%ðÈhHDƒ°ð\2ËHºƒpȸtl ÁP%@5&ˆæaÇôy~E•<‘ƒnXK‡ LJ˜†XÛKÑTý€ôðCœ!€¨  ‘P¢l]Œà,ÆhÚ<Å\·O™÷?hJ¿ %†‚PjB¦= ¡äV Ñ:+EèÍ*4t„Qòr"©$¤Ô¢•RÊ]L$"SÖÇÙ #P;™²VZËÙ„ ŽˆI „à¦!xþ# -˜Gƒ$=‡ù·Jfh€C€Ia$†H|½“"?T(à%ð=ŠAr‡G0ì€äAÀà1éªx"‘ •€‹ÑYG0î2ÞF›†2“§‰üO)èJ†¢¼ Ap& càyü((ÚE%T–¾ 8hÀ,¼Êu;GCÃ8išjY•SÆ…3 .€*t@Åð€˜2ãöT`:lýÙÛ?hm ´ ÓÍkUkµöÅÛDBd\%¹¶ì[ÛpnŸàRäÜ»›sèÒº†Zë€ ³vîè»åð~^&5c޳9{/Ùá–ód̳Ò{–á à œÅÓÂL"z÷‰€Ù€øæHzCE (+ÀŒ¢òø;̰£ÐÝß‚Â>¢…£äÉà^q«ÙËíÝ”€ È¿£¼ !ŒSÇN "äÁÞ”€”˜©‹rއN@äë0 A,€w«YTü& hö„¬2ÂîÌÈöFc‹à°»p î¤X_ù’«d }¼öR1ñšÂŒ^€löÐjÍ™»89¬äØÇÆuÎãÿ<ç²…ŸŒ¾àšCh£4vºKJhÝ.“´Õ އO€ÍC¨ä–¦ÕªëjÑõ«ËˆÖZÓ[mÝrØÌÆf强(f._̹œGÍ.¨˜qD:Y$ƒÈz“QPã…¸Ëyc¼½¥"k0C̾Šõˆ#ÏH9H¸@¨ q’ç>#…‰,¯†X„»F•È“¥ãÐ0Rä4Bl\ÔH@ƒR #ò¸à©Ýf?éJ_èð)`  !]„€³¬"p\»rÒ€ á {¹pPŒ”ÜÛ”Žÿ‡yùeHfH~bÂØˆ¥%½E}ˆ±F±k9úç/™²FEzèL›¢tn‘,:_Méå ©HN«ÕúÈë}wtŽÀØûdѽœ6öœ5Û;pîë¹(þêVûÂ÷ }ó¿x ³àÔ( b JóOóþœŸ1ÿùÿËÍ„(›@=8R ž‚ *ÔIHx€ˬÀĽƒù5@(Fh.ƒ85Êh.1 AdUØu”@Ïd;ÝmŠ€£Ãˆ9ÆlÅ ÀTŠÀé _ÐeØ&ÌåwE,€hŠÁ4 Ê @”›˜#‚€î˜AW˜÷A¨Â dRÑ‹ÏÀhÒŒ>Éè<ЋÀ:†ÑÀ^˜d€4„‘x€L³‡æ.ÉŽ 2¡°€àFàT“ b€ x%à‚— `ž `® DÑÞ†à Ê „8àÞ`îFÑéìÂ."¢*JÝÿbª+b¸ƒ ¾* As¼mÂd.D°*à È4!tŒ>JˆT9  œ0T 7@ÌÌÄ€ €€G¤aÉL”@Fx)Bè1˰/ H=ÐUÀ¾€€ÌPA\„À4^Bà2Œ B¤˜U—]ã1ļ¥aaÒI˜ë€j’1^ûÉ,>ÓC,ICT8ŒLU`“„ £à¨é­CZF‚R…PKÄÆ,Ü–-¢â.¤J/bþ0H:1#22ã63ãF4Ùn5£b6˜R7^c€‚Ò99£ (c¨#²;£Â<£Ò=ŸÔBv+årWGú+%zXeˆt£\mÁ´ì¸Q¸ÀL–¼^CÀ< (‚,'ŽSÈ@•×AüÛm…!Fì‚”-À4É©Ä!ÄÔ½gÁ°† ŒÀ@I|:Å\‚4)Ò1Ò0À¨OAÔ„@,Iä)›À­OpÀ4ÖBHŠtÀ LîìéKý„¶K0a†A° Dô^8ƒÀ¡IÁ­ÑT ’ÆZ%ª[6[ÅÒÍŽ]ê]åæÇþ_%ú`…Cš4=faæ&bÄ&c€d&Je"Reæd&ngf~hEòhæ”(7eŽhBe‚è*‚ƒAuáÀA‡C =†HÞ’5ÌÀ7§€^æxÇà @ËŠ QÅ Àˆ–†ÐaÃÄ=ðf,B]F×unD-„8Ø4¤@€¦B´/ „&‚àÓF„È)-@„<àh`_È !\ÀÀl Á¸&À’Û4'—Ä<Ô °Ò›Œ?D`8Ìf€6›¨B„¨P¨(]Àhh¢¨q‡è†ˆétm*‰è¤Õ貋†\=hÆŒÒ0<é(Bháh(í(ýi ‘v‘ß>¤D1—h.¨bº‚jŠ©ep5BLMJ)°E^„@ƒà¡Cøã`(Tƒ¤”XXIèÔç@ÂXà  „kÙé¦üaÃõíD\@ƒH7C˜¤1Ť3Ãv¸ÀPÌd%s@9†B(‚ñ2C4É—LM`ž¨õ­)4Ø'“8ù®‡å‰è*è]^4F¸%SU¡èœØL)A´…˜tÀ F éÄ <*±¹ƒÊ«Å ¬ªÐέ‹Ýjéà&¯„&°k±Høë"²«0pë>´kNµk\tkj·+z¸+й+šºŽ§ë¦©­ÿê’Ðmÿíh…ØNŒ6/€–C€€J 9WT4„¢‚ä2,›˜€H–ƒ•ƒCŒ:”üMBd8nL@LêˆdšunC¨;Å•oE”(‚øiCp:ÀlûÕ¼›¥Kè%œÛÄZ'‚äÓ‡ü @tkÚÈØÌ2<6ÃŒJLAiüž–FÜ×ì½TÕCÉè1ƒZ®BL-CYïæBˆ¨>j†Ü8 4 êÔm.ÓhŽÔ-I·mVÕÅšÖ‰J×m}·mŠÙ ÞÙÀÚm¬?-¶„-Ĉ˜îÝD Ýíå«.ß@ßîàۙȆIA En&âî4ZnBä‡Ú¨-ýÙšÐïâþܶ,@t\<ŸÖÓQœ8ÃÌL ;Eñé† €”këÐÀIÀ2R ¨ü›d@8NI霗ŠÙ„ AÁ.…ðí…<ÄIx tŠç(Ä´<Ê2ƒh9'ø°A•( éİ/ÃLZTÏD(\ \FÜÀ@ ãØbÀi~ <;ªäÍ•)Åðm„Íq¡í|mÃØ=FJÙ¸ÖCl:X$¬K˜Ld …Ùº °Ë9ŽÜ ]HÀÔ „ô—E@îLH¡ÖÕ¹“Œ”®„ îW­Iz1,t͂4CŽ®E»/Šg0s …XL<ó…ž2Ð3s>²Ú74À5DÁlž³h”spõšdU3†ôó“9Š=á3«;3¸;3Ã<³Ó=³ã>³ñ±-¼4@´P´B2×.õ¹;²ç[õÉ<¢ÄÀµ†A”Å[¸¤Åð;’ ×Þ ^ 2Á#†hîØw µ@d­kc,?`¼} Íó€8†J/È0‘Œi@ü ôƈ%Î4ƒIÛ –|F´ØkŽ?Od)‚úzTCäŇFÁJd€X–ˆ‹¬²‚ €@Xd€9 …(Õ!Â5Å<ž¼P«H»‚l-LK„ ÀHg€Zw PBøIÕˆ2M¬}µÛ^5èH@c_]#`—`‰i¸Êøž¶v+&64õ€d4kdÛý£v[ff®?g ïgö‡hÃÿivœ6¦F€ïk ïköÄkÚ_mvÞãöëo[uψÑ#\x“‰Ñ07 †Ì]ÎŒPÔý@ßÈ€=ùÀIÔ4 .$5'è`„µ·Q…†[ÉhÀÍ~ÀØ XL ©qŽó'GÄ €)‡yòjÄ@ž4@ªIN¿‚Eî®r®MP¾FÙ~Á¨[á”Ø* 8.R°BH¨g¸·‹Æp›xÍDƒë¸ã!Oε—• Žù^@3‘9’9+¯ù4aù?”yL9¹T9_–yo—\”¹ƒƒÀi¹™ilù ù«›D?9¿œS'8ùä`ìRø£»Ñ3‰»Ã¼Îq=ÁÉ,Í ×ìü,°LPe‚ëºÌ0Ï,m…†™YìXNøaÁL¨ü œO@ Ãì?3uÀÉAÛ¢®„Ô#ɼ1Ô°€8H‘HŠ0°m7ˆ.Ã=,€õÆh!ˆ€Iiªô?Å„>XÝqX4Æh8kEDÆJÉjšNº…&­( ð£@æà@† YC 6 IўÅ†å jlÅ 5ZŸÄ0ÀÜ ÉìÐ@`££*¯Ä½ÒÑ,ûíEë/¿˜7ÀD£Àü¹¼#Õ|-ý|8H¨ˆ’¬ÆH"œK p°ˆá‡A´—0 @”pÌRÝŽC@7jås‹èA=8Q°›.¾ŒdUÃì@€ðý=À@1ðø=@@@T ?¢HpÜø}€`(K%}?@q‡ëÔÃo:ÀUôñ{>dÓ©Üò{>` tŠ[1š²æÛš:Šƒà!h&ƒ€`€õ Ö"ÖlÐÎq§A0Pþa!€Á°ÐþüCÁ2hËéòô@‘7ð‹S° ¦sŠÒ ¥!Àj% Ù, rŘh7] x04“Æ À @tÏçôå÷‚A¡ ÔŒ´p8<.‹Æãò9<®_3›Îçô:<Pÿë¿ú]®ßs»Þïø<>/ YÃ(ËF‚"àY ’Óq€ Éåß4VÈÁ‰p€\BÒ£Ì÷FO3ä÷p[h<ð=Ðñô£bMƒ€ï¸!qP:hÀ¶@Ü9"8°1@¥7I]˜UÀ¤À [“ð1MC 0Lå)ÔIMS}M ÀxEuYVCÁ%€ø<Ðð(¥ä€>ÏÓ舒Œ9޳ÅäN‡qT7 ©® ðÚ8ÏìJž‡©ì{¥ÇÅ€}gáúGú€€‚H-dƒ¡J=…@^†Àvˆb8–'â+‹bøÆ3]RYÖ8Ž£Èú@¤)F’$¤,/ŒÓfs±ì‹&ʲìË5Ñu@€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=2‘†Ø@Šƒ (" IÜn·ÀÚ•X/´@‚“b@À¬:?_ÀpÍé5¥>@@ @ æ8œ]µ*`` ´?‘”"pX" 0Z®H¿àÐ2`?ÀX8¿_€C®N­˜ÀÓò …o†rhöP2Uå€@¬û~ÁeÐW+­Ú,¡Tt×Ëú?€ ©s)%€·ÆÙ|Ðm€®·€ I$Ò‰T³W0™M&Ó‰Ôò}@P¨”jE*™N¨?ªUJµbµ\¯X,@›%šÐµ[-× •Òì¼/Kâü—0, ñ,[Dz,›*Ë Èo ¬- ÃÌ5 Ȳ~Ÿ p„;Ä‘,MÅLNX¢˜ ‰ü}§§Ò “%DZú—fs’Gf(¬ ¤xÐ!€. €ñþÅžçâ´Å` ¥Ä1H\i°uJÀ"€'¡(&‡!B’Ë•F ¢GYêüaS«B8b€!Ù*’åÁˆ†¸¤ÉÈàDÍP¤ f´@3(~µ'ÃPHbaÍðèžÒƒh›$  xm°Ü€iàž¶È,aF•R ÔyS’ †«4‘%I’t¡))'ä«+Ë2Ü»/Ì3Ë3Í3Z 6ÍóŒæ(N³¼ó=ϳø@Ðt-¥DHD%^åyÞ—¬1€1 í}ß—íýÞF÷S£*á  ·Ib­V*ÃqV€ñÖx¢€ð(¸cŠà{£Y§§Yø«Æ9ªf9°Œ²  €H’€©ìšžšz:‹BƒÀš’:'áòÅ‘EY….›gxž§¼, d@1ãáh@•ϳˆyÁú«ÉfÓˆ Æ.sKUži©ÖyÎtÕk†Ø€@ °âPpLáÔì J’«Çqæ@´‚Ê Ek‚àî4«axnUŸxŽ'ŠâøÎ6c¸þC‘žÙ.Ne9^[—æ7ni›gÖyŸ…¢hÍN“¥€nžfê:žªˆ]øçú¤†ß×§ëûϵx•c€¤Uì ­O 耴³†}*ÆÁÆt™6[jg´ª…¼ð((Š É@-@w'X˜ƒDo€žõ0'îAb¬Ci¨#†?Έ²L¼L $„=‡ÊU]¤E†¤Ò$Ázf¡lßâøÚUa†¤xj4R¬ž‚$K‡š›  —ÂøŠ¸ú&­ÀèšR¬‰kehãÙÞaZ0rW ”á0*ÿSáoŒ–9òXúPû}€÷?äý ã÷!Oä?·úÿà €°]À˜`y 0H (+àÌt‚¸@!$„ÊöÀâ$ó^Ü¡”RŽRw«(%,©•R®Tƒ`FxRÍp¤xœUÒ$m9ÉáU©¦Ø8Ç0Œ^“¡ÜOHX $`… +LÃÌ}‘6.Jð¶ctÊ3"iŠc @Ä {9Kž‚LÀ}©a+ä˜ChŠA0À\ÌnœzIÑÔÏ@)V¤ E€(ƒ¨W0€MTÚäÇľ àá©‚’R”BU`6*€‚øVH+ *Ãôâ*¸ ar©Ô挪9@vƒÂr´’Ámn(ÂY„Yk-ÊÃæ+@6^Cäª5¦˜“d©•3&tКE6j€ ¯6fÜÝ…d*p Å9'4èEgNéá<§¡žÃùDÊÊÝ[ëƒÎ”ðz¸×Zí]ׄŒ*îD –HÂ7NÅT«F²\U‰t>NcݳÀ9߀’C:VÈAÀô€"0” “àñ)ôaÀ”z¡È]|P¤à\e ÈæŽn‡àþ1c4oöÕêcN3?ÀP,ÀxqÜkÆÔ e¦¥ #Ñ ¶ @‰fP{håeëclÀ]ÛÀo ­>0© .:)ÎÂÔfm†(ÝjB,T4òvT­L¯•úÀX#H‘,1¢±4¬XÃSc쓲¶]Ù«9g­S´bŠÒ²ÁjUªµ–ºØ em-±©·é.ÛÐoÀÁ¸dJ‹p«ÆAÈY W:·‘2FIÉD9€Š ” z @ØÒ»ð>¡É}1³%QÛJ¸ý&£µ«”4‹ ¯C@‚«PÜ À0¤¬zÑ1`dsYÖf‹š:!§Àb µ5. ¶Ü6p2FÌôÂÌe+©@G㊠ŠÀV@6 p’7^KàOñ'#aŠ5®›NMãT™¤Õjà¡”(xÒ’:4‘jˆ¸ñ )f(Æ%•¨˜K•1ž¾ÍFªåGéºÃàž†á&ÚÇŽ#?(å<«•òÈ Ëm–’+Àó±Ì¹Ÿ4æ¼ÚAs~qÎlç;gŒõŸ3ñ@Ð ¾Ž ¡´FŠ8cûF•m!¤´¦–Nm/MôÄ4ö ÔZ ê`Ø$…ŽKä\‘änIÉùFDɤ"ø% èL„CD“¢@ólƒÊN€ IÇÔR/ 0¾ä; @7@D¿Ê0äµ1.@•aì?°ùhâ­Mˆ ‰PÛÀSebðd€kžæï9À$«P²/|G ¤‚‹1¨8‹éTá54æ6‡8ë“äŒÁ¹0Ui¶@¾ˆpÀL'c{Äš’á¦6ÎHpb»[ر H/U!¦¡Ò;ŽhÝF¼g ‘ÒG9o/æ<ÌÃób­Î o:Ø÷Ÿ™N„:%&éÿ¥ôÕA\RÆ]U^õŠÖàw^µ`°ö0{/g¥Çö¾ÛÛÆÏq!7º;ÞïÞbiïÞN‹r½ÊÇù•|›ýßü”NV ÈZÀÜ €&©&Hƒ(ˆ (¸fˆ.\ƒ‹IÇî¨æµ‚€  ÆE`AòFÌÈ)„š ˆÜéCtà*Àtj$À!Pž!¶ÜJÆrº%^R€žƒLÚJ¡Ì^Á\2bü, P3/DøÁº.ªƒ^aäjÄ @D8A  °4…`%ĪaüšÁp`!lí§¡p ðb­­0 ¡ó'_ål°,(k*p:âðACuLðPQ0V¯]dhmuƒtP~°‚†pŠ 0–ÊèÿñY¦ÿ‘]1d^Ð! ä xàÀbLÁÞ‚iCR€*Ϧ ð€kX€ù.a¡þ7Fꑬ*¾€¤^¶¤^¥R˜â¬Ó$ªá‚´¶¤ªªq ƒRm¤ÀÁpÒ¡¢©‚d"No¬ €”à@Rˆ|&¡< (ÁÌÇb  âê1BÈâ àÄ HÆ«raêc› ‡m!WªyÑo ‹`±~1ƒkšqŒ0 1– ±š. «¤¨jÑ®l€%N]¡ííÛKVQËå_!ÅqÚß g—ÑñQøÎÑÿ 2Rr¹+¤3½,2Å+éì!@þ æ„€@(%,áèFÁ4ÁvmP'ø €–ƒHÈÐÕ V³F|+Aæâ€ü¤eÆ^æfŒl¾ŽAÈO¡àLüé@cCÀ\4 \2Ø1bNÊ¡ gà!Ę!®OÀ€8"Š À\ Â\ap!¢É‚B þ ¦„ t2`:*"™üFÁF¡¼@Ä„q˲_’Ï-2×-²ß. .rêÒï/2÷/³c0‘0@0í0Ó1Õ2A±1 /1ó#2s*“.I³53€3ÓA4F`0Œ}4à53W5 5î‘6Sh{Ón5J­7r™7Òµ,t-Bâ=,1Ct8ž²Ê ©l™ à–ï`FG4¡TŒlú!fD+@ú 0Í>ú¢ €RÁêfA HÁ†@!ØcÚƒlSR­©  2"\ À‚äΓŒ œA”À€,B%Kð  „£œe,!šð}Ìr;Â.ÃêÀâ Fü®€B´` 6Ê"6ÃLFÁ€nŒÍ†ð&¡Ê¦Èaò*R;B £c¢nêš#4BGD¦kE«ETYEÂF FtkFî¯G4vg4}H·Ht‹HåcIJ/I²·Ô£Jt«Jô³KaiK´¿L"L€LÔÐ9ô×M TßCµ¡Z)Cç­ZU­Zî’(8bà ’)^§øã b±6 2†aW" À"RÁ D‘J)`îqá~m¥8ÍTBà€€ÁD vÂV¦eàì"ð«`O À´Ðžu"Á¼öâ@N8D°$ീ@PO€2ï@bE)#¢Èvé" b´7AàÑÆ&¡Üˆ`C[ÁÆ9«Ä:&¾–@ÂOHH´~€• "·[µ¾Ã\uÊÕÏ]5Ö"5Ý^äèfîòð_ƒ_Ö`– ÏV¦6“Âaðb6'b °e[ùC”5o·,@ð #<(8@(ð`ÍœcRAœ˜ þÂðË4Þèr5$¢]¥LÊ€p©`Ë4a¼LÀ±TBï¾(Pð,k`¨€ØLö’ëQ¬8! .åÄ’ÔÌöjJ\+ðÚ×¢Z¨v*aò,¥ò+Ft'²Ü7Lºµ`*Ñ<5"²S!î*E0lCFrbšÚ5#R7%,+tlâ¬äNvXa¦.—Égr’bà7/÷’wÊ·r rw+rè]s,*›Â s s÷CtwJNiñVB—W/\k@Çv!Ýv`v·oQÂwbøŒÅR¡°ð…r»oøY…ñZ¡ †¦g€+AîW'"5!n†¤áˆed°%ƨ' "،έ€J àfp€ cB`(RÁÞ&µ9YÀ3`B¤°R×$àÌ €r:B´ÔŒSdí²ãlâ,  dLÁLì$èôH²H2¢jè" gd«ˆ¦sYâ 2£R·0T ð‡#š8‚kƒlW†I´3 VÖ(ˆØlfr¸xX}ˆˆXˆìxŽ“‰bk cХЂIŠòG‹A ‹˜¼éÀnxÆ™¸Í+a®j2§™‚¸a™ïõ…Ù¡šnP`þ €H3xy!ÀGB°5&4U!ã‡j.õ*NÐL×;€¼SnÀmMé&6Á*è‰LLŠ ËZ7@P 5ÂXPÐ# l+™Â@”  ­†Â\¤ƒR& ¢™Q Øgl*ÑÁ²æ¤j„æsàCCJ£,UÂb)¡ágìFÇ"RÂL+CP7Q¸Ñ"\Nh{hÖ<áî ™µ)™¹›Ç4ÏÍá3`)œ™Ì¢ÂI!Å`¤mùãžrZ}@žàŸ9÷Ÿ¤,:/ %z¡z¡ðÙ©r•©¯l—šZù¯ìˆoçø-Ä î.h`E-€z$Í- ê`MÄÁþ5!°Ìú£.àÒh@87òìã¢)$ªaÜ*AÁ|žÇà#gò,‚ÊIÃlžÀ¤‚ˆ  bÔ”¡¡~¡/P S¸Á"  É"dÉ`gÎnDrÛ€Ú5õeöêªÐ~üæÂ …¹` ‘¢À Ff‘ïÀ1h™0ÈP”¦ ”.ƒ2/‹èÑ+àU&ê5"pH[qû <S±"Q±ˆÃ±áɲ;'²¨é³´\û:/;@*`´mÛ´ÛQµ[YµÂ9¶+[;j<o·;vi}¸…¸„l âÿ X4 …BáØt>!‰Dâ‘X´^1Fã‘Øˆ@@ãÒY4žQ)•Jå’Ùt €°P`, ØœN …ç®×«ìÁg3À  ”ý?@÷£è2„€s) M@à`8òþ/z£YÆó#U«0µãXLà€ 8@ˆÀÁ„'‚ð+øátÜ”ŒvàÆíyAÔ€h EG ˜V{G¤Á@ bâC(ÖÀÛ™×%$ŒÅ€± j €`%P( À:×%s!°U°Ú`µ"ik`Ø#ö©V{M&Ó‰Ôò}@¡Q.ôzM.›O¨ÔêµzÍn»_°ØÀ[:Òµ­«{bº.ËÂôޝ€üÀ0L# Ä1LcÈ2L£,Ì3@´t |?D1GD±2¤IOE±t_F)x4»ÀÈ*°J,€ »¼vžk‘ºs@Œj›àÄv Bí‚ a/‰`.& ª‹0zž¨!ì~àô~) Øx€yŽhIf¹Î‚MRú@škYôð1³Ò /Pd€ @~ƒÀF 4 À9ªAô€`ày³`C°xL€&¦§è ï:ï [ baš)hØ#†€|„ ±•K8~ÌÊqÒeY2gȯÀ÷jPSP 41¼sDZüƒ!®ò0$IRd(JR 1+Y2Ì·. ”Äij̳<Ó5ͬŒá9N“´ðÆÞSå;?Ð)% C ´EFQÔ…%JRÔÅ55Ó \5’±–7Žc¸ö?Å)d¹6O”e(p KËôð„Ì ‚”Éá3+‘ây¼gIÞ¹9“ˆ âp¼ €4 áôì;@$¼z+Yê{ÍL ‚N!èz’lœTa Ðw«x×yæœ2P&' ø, €ÐV€ F €¨E‚7ˆ0Ð.çÃ6}ñ õ±4¤|¯öª€h¾žÚ¨FØ]š&òZ€‰™ 4 ƒZ™x—™f×VK—5¶äñ‚ Kˆn"Œ¬ÇÂeùŽgšæùÌŠ¶g¶nµÚ‹£é:^›§ê(&¦‚jº¾³Ú€æ¼lɳmVÙ·nä¹›¬¦‚ïÓ|oÎÁ8G âŠ&®0Ў״Üh ¢•A8)`³!$,Ž Á¸9`ñì±i¯€:ÀˆàÄÞŽAØ; xã4ÈþR@ì€)€LÙ‚8@0×¢<‡¹cܽ [9 ¡EEØu‡ÚfJ° ñÌ9€#( AÀ”ˆ3y0ô8BÀ Àh *Œ`"9 b¸XÙyØghu¼¤Ö @)‚Ew  ?øSQr3Z ¨ðb kaZ,Æ ñÓ E½VCls™°_  8€ ¢?q♇Ü$„ТY „1ðÌ|ÃV×!Ô<‡ÑD'Ôv¢4H‰@&Dà"Šˆäëňµ"ô`ŒQ’3XÐ#TlÑÂ9GHìN£Ì{¬YiIA$b”FÁùù?gôýdH®Ð: AYA~KÇÐ $‚ÀxñŽ!Ú‡‡À÷8‚ºÒf'ˆMZïðdØþ&¢Œ^ 0-FZNM„ Ç€À@;äÌcÕO££8 ñ¤8@Ã&¡|"ƒAY ;Rq ÂPT‘2jZÄdK@À%>> §9 ƒà¬|3 ÖPØ HAŠgNU±!ÀÅ›@šZ銩¹®€ï=Ûó€¹XÆ?P³’1«É¼©_¼Àψ ¼á‹<û9½íÃÒ€Ó½KÕˆ›×=ƒÙ= Æ½ºQ=ÓÞÛßà¾ê¾1§>Cåæ>p…>ƒT>›ê¾¸>ËíµóÆÂ$" £ÄÂ4$ÂQ”… :ƒ1_–)öš)žj­ $@»±Ð{ €Pž‡x3]i:…Øi0‹°*ñÃ#òµ€0”ñ剨ñ¦‚@‹ZV¼™Ê.jÍ[°Z†sGjL•Ð| œ… \©`‹{‹€:‚’œéa‡°zŒ€~‡Ég€!}8n¢ðJ…›Â!Ãûˆ %”D `Ò€HíCÚÒx ¨~\‡ÂÓ sÞ”ò²0«ŠD?ñ¸ t,$L-Âì/€0Ã2D4¼5ÃhÃyi‡ì9C£yü<¡¤>CòæÀ´)Ä$C)lDˆ|F-$G€H©d!Â\{ÇÁÂD|Çä~‘0M8'+ÑÐ ‹ÓŽ ~›¸ N“0y”áLš²ièkÁª× ˜œÚ²»jØ¼à‚„Ð5“%ñK”ñÊ ¡?`“Ù±p°‡ùOè“0`œ…ðjðCYx šÁk1ð‹9±_-(ëÂC‹Xt‡P܇˜xŒ€C…h\ʈÐ/‚#2‚xpxu²ªZF8}“PqY%“¢.h›‹¿!Ï›è³H9O¬…B´†—´ˆ ¨wH˜hH¬‹†,Œ“äŽ,Ûô·¢“É‚I’€”“¬•.i©IqBÉ€ì4™²d›ÉÌÉàÙIü Ê¢ŠL¤´Mt׉d}Í„ÙÍ È È&¨ *9½°¤ sÏ8×K`ª°ûc”­˜_†°¸è9¿ÑEY±j°Ðk‡*50’Ð ‹)‡€y{ËIÏ‹\? Dˆ bþÎ~Œð›U£˜F0Z\†xèˆ0ã ãšz» ‹° è5œ§šŸt‡¸¤Z<3Œ¸‹/p‚„P1`Á …0a°[Qµ 95{?ˆeŒdÝMåADà.hšNi¬PëNDåæNqON„éKyδìíNà~ÎôðñO O4ô/üõª¬÷@8}OœìúϸÏÌýÏìÿˆ=Mê^e‡æÍlÚÓu7ˆœÙS…9Ó …’£?Ø ÃhÙ¾ŽHâ!¨ª.AO h‚HY °t‡ñ‚‘è1â¦XŒlA¸g ¸O:Iµ‡‚ÄÀÒ‚ˆ¹˜~േu*@°¬+X³‡¸}4. Yý šeÀ ŠÀ|(®èŒ0È´PŠ  €ÈЊ¸ª°M…yõÈ¢+Êx ¸°¬Ðsy3ÐM‹±(P8‡Hœ‰è hУ±Oh$òQð=…»y(Ýh¨°S õ!˜MÅYáYû9¬½¡Ú(Z=¤ÉÈÀ­¦Ú}¨¹ ªZµ¬ZÕ®¯[±[$‰Û<[[]¶Œ¸u¹ºÛ½¼ÛØ|[í¿Ü ÁÜ-Ã}ÅQpƒÇµšß”×Yùß´/`‚P!zƒø,©À~E¹RŠÀJª–ìÃ820ðÀQ¦É¡2B¡†š/€fQQ|`%Ð'ñG¨ÆÈr°ÑÒ8Í-Áñ“à ¦¸;„*ÀÈz¹È~ c†¥Â€W:ŒÝÈ•7(Pƒ€*ÂÐy!ˆh†ØÜ†B (ˆ(¤%›´‘ÈÏŒdO™pï5šÒÐâ°{ Kª1lª0_Ýþµnv¹.`F6 `}Š¡Í(È_à¨`¾ “V àî®a a0»‡–®áha~"á•®a®áÊ/áâaø…ßûå$ß®På$#_È„6ŠÁ°3‚­„ v™±ZB¡`Pƒ/ ™ƒÅ‡Œˆu‹v‡¡c܆韈8J]€ý¦–&T8}Väp…¸Œ` ™_°(€¤¢Pj0Ð飮5ã ˆx>Jp@ ã €v¤T´ š9‡Ø} ‘œòžÈX©–]ȵ€t,‡€| ƒŽ xK…“qPnåK»åfW>®X€Y€Z帛4](påð»æ¦ærf0ƒfFefcÈCf…Œf˜„æ®kæÉfáhføgq†rœÐ‰äþRêCÂå¤êc`å8ƒ€¨ IƒÙp×=‡à¹àQÈ0yÅe{ê7€J¾­kèØñ‡ª˜¨–H6”:€;ÑÓ†ØrÖë^ ë(xXþ€BÁ9`f °rEư-õ°ÐjpuÓ`…ýhð©"Çéªîðí$ê)¨@È%ÆcÁ_+XšåñØqÊÁ@íhL‹°y)ˆ‹jŽ©ê®GêÁ@‡®­€®êþ°ëkþ³¾&µe†¶kv¸^¹Q¹±k¶¼kÕ8‹æ¿#~Àì`ì0]ìB$ìXŠê>¦ïbôê^öï‚ôjxƒ¢ˆ.‹,/ñ©–xh†øÜƒèT»É­ â8£xt‘3kæ°™ƒÐ.RlèÐÜJ„N)`}YxˆÆÐ B$ ¯ðV†«c `z›‹kñ„¨5)[‚£@U²ñºŒ€iÀ„1’¶Š@uQàP8l))mzæ™y@ˆ9ÑŒ€BðP(Ck)ðK³Â¸ÈɼîH,¬(Z†c‹ˆ¶ú€ûïÈïÞþ€.ÿðpäx‚pAµðYLëhCèp ' ßo pÑ5ðèˆpÿñÎqG%¯ˆŽõïL¨&÷ô×N¨ùˆ(3™‚Hi/¯ð€@× `ñ`ï8ÛĸNOà’QAŠØÆH(,+"qÛUkN…Á:†ž•¸‡¡ß㙂¨ u9No8¹>S)q[öÆ`/‚›ƒ¨*ÊxšŠF&0Ðy+(Ú9€À ¦XŒ€C3/˜g\ h19 K€¶9p…Ý"•ê9„À[£›ˆwQu'SuAOuWV²æ€WXu:õ£°u¸‚õÈuß^÷iÚ€`‡aö(v8ÜöI•ŽÐ+vhvh€iö¨vº–†_mvåøt_Oztç ú" ³öNˆ 8‚E°v€Â] Pâ ¢ˆ)UpT†L‹á ?0ñA€&ðÑÐ×vY IH}–xbF°V†ê‡/?ùû ‰¨8‚£„‚0?#’K䟸yŠ 6˜REô[ˆJ,‰¨"’Oh,J}>uW2³…Åñ3DØï˜÷¨o03síú@‰™jš‚€“!j„ˆY¸˜‡ß1¿q °p!ˆX†ˆè‡[6A5}¥zcjz¨z‡©Gªøú¿¬€­Œ¿®€¯‰ï±{$¶{0í{A5ûP{a³{w¸{—žÝØ{·¼{Ñ5‡×¾‰ž_|Áü(…üA29/¢ÿ‚úøÿ¡“× ¡`ÍåÁ×)¨€ÇÀ”0}À X ÀÐà‚€wœQúùyÆÞOPù¦ç0ÚM€ˆ. x(0šÎ ¦ã<Þ±g3Åî¤R_Ô€èL;–Çà@€6}¾aoð -òþ…µ[ÎP=ºÛ@à°` D¡Ðt<@°°X"žz»©0ºCìþ}É·°9RÃ'—lšNW-—Ìe@Y°€!0o;yœ°XF˜Éqp áòú|€”0fÂ9,°0 PH4" ‡D"QH´b5H$RI4¢U,—L&SI´âu<ŸP(TJ6^—u§T*UJµb´®W¬ ’Íhµ[-× •аA“m$À, ÁLÁlÂŒ% Âx €'ü4°ì=Ä EÄ‘,Màjpy‡ÓH‚HÑ*0kHCˆ€ü‰"È¡ø{Æ¡Òtùpe€i¼w²À|t`Ø" Ràtžˆ´¬‡Ëèbš« 0-‹ÚÉ€„„ ¨. ±ü!úà‡Ÿà~Ÿnò~¤€`¸Ç©ìe³ @¨8¡XG8€¬Lz®ñÌ03eHe›j2) 8Š)góÎÊ€à-`‚T±¶u´gÝlÒ€JàO ¢è È‘Üw¤Š 6…€EÌÌaF‘´q)€ä} "sìˆHÒD•&IÒƒ+)!r¬¯,Ërè/€ ñ2LÓBÒÆM“tá9N“´ñ=O“õA"t(CÑ4\ëG€ðHDøÎ5ã˜î=ã°Ä3 ä.M“åNUUÐ{Ÿå_XÀº©®kÁô"ˆÂ~°‡æ¥·m‰(Z2¡Çw@mû€"SÈà h(†B‚yž&O¬r r`wžíŒt¥™†©ÌÀˆÐr…* í"ˆYü°ÇÙö‹y¬%‰‚ËeÀŠ…à1‰ª,FöqÑ®ŠdIFÇšBÍ) Ø$§„ÄèutyÆukºˆ°° eA†fÕuka³$¬#å0øi ¦p0CÁFZåù‹HÎf¹¸œ¡â.Æh F…¢Z6‘tip.œj @ ©€¨K«ë:Þ»¯ì;˳í7 ¶mÛ†åºnÛÂÒaÛáXoàÀ¸1@,+P.@ØÈfP> AX-àÂ`„º áÀ9(” KºR°|ÆØÀJ‹1”ç™±…& ¡€R@JìÝ­`RÈap!”¸'ð?ˆ°ØŒU !¨“FêH MƒÐV @ðä„Áΰ€ËXzu²€ÂÐEE@)9‹‡Xõ0ÁX? Ü=”y•Jä0\œB=‹ì}AJ0Æ›[$(µ ‘#@–c K°ùTÆ`#‚×ÖCJ"`XÁÎ:€….B ¡ 0„Ë…˜W a{†PÑ Ãr©€<ú 1(†D¢)‰%DÈ"”TZ,E¨¹£bZΤØÁ™½7çácðE’N)Í9çDéB"$-BA ,*׌ÆX`<ÈYÅÔ .Pˆ 0ÆM¢Y|@  X ÁÈ+"ª™¡ä>x£c@ q ÇŒ™. Y+‰°æŠ@ý"C¼y5Ñr3I` p½:24(ƒ¸`3 `§Ñ‚,„@¦xs5ÞË@U¤Ð,`¸W(æh@zR–°lq!F0]ÀÒ‰l=a@~ Ë  ¡4´€dð?ÙGc0–Nùâ<§™•ž³Þ|ϰ;?@ÿɦ3AèM ¡´>ˆÑ2‘EV½RnŽÑðHMˆ¤€“R‚'Jéh¥ôÆ™Ÿ5:­E©µV¦rZ{Wkí…±‚ã>ÀÄØ±tuB.à °õ,>Çù±‚Œ_vOÙH"´(Gw"–ˆX8ã:®,L ë†&~¡À Ĉm¥3€‚4Ë@Šâí>Úä$ƒ8RÝöEŒˆ1¢ºæ«†\c±bã 0IØ"C¬v”*EÀc´ºš i©.\6…WìRñ†)rÛÛ›womýÁ¸`âÜ{’.]͹깓Ý+©uœ¡G·nîÝûÃxÙåæ½©*^Ûß|oõC“–Ùe\­•Ù ‚Yc.eܼˆC@Î÷š@À  ¡ Æ·pD@¥¨c¤x²0K€• ¡M¯²;‡‘!b¼dT1ÎI z.VÈr¼’ by$HYŒ‘¢„@º)@4R€JËb²Eôx`Ö$ÅX#¤Á]2Fì4Q ˆ¡})âBI€Œ5Jeyæ Æ€‹SÃ,j-)Lx‚$%……Í9”Ìæ|Óšól{Ã9 ìé³Ä,Ïy÷?è ô(ÞÐì<}h¦÷<´vÒZSKL©—÷ÆùßHÖÃ]÷¿øÿeÜ aÇQŒÀXÀM³VSR¸À =˜ófð¡@T§€.Jx!$ÀßA>0¨·±À(CÅs À~C1r4FÏ ÔpynXÇDPg î(Åô>è°xæº5†Ñ@› ÒòRUʰ¿çœóçåa•ª ZhQО½ÀÁ0Öå v›@²#…wàæ“…ÃÀŸâ`Š™nexÏã«/EÉÒIå© ž]Ì9—4æÜãsÎ|ˆ7¿ó^o*ïß9çý±Ï£a @’ 縃 èÔ« -Fkƒ%Œ`a¤AÀ( ë ™²$e!TmSFDh­y»øÌ• H‹sƒàŠI#(/ƈád ” p#…:)Éãß®E¨¹oæsj@#E]Í#{"hhMà4&óŒ. )ÀÄ ! î/J@oNõ/VZV`öOhöÏp÷HN÷§Êø`hàø¯Žù/–@¯œú¤Ϩ’-*°ûDFó/Cð`ƒ/=0i¨.C`H/ jÒbEB$Aø"€¡@Òbžõ¢–ÀZï.Ž!`àaf²¡¾4€H±! €‹ Oƒv"Á\bXA˜‚&Ýæ8àT}a Kôjôønšk¥tEÏȳâR«èU‚Ñ$P„h  Ùb$ÂHavÀašK.¤DPyÐ’8ð„!ŠŽ)•Ä|\0žç¤] B—   ð²£Ð¶30º¡P¿ $/ Š.Ï 0× ¯˜Bp]Ñ‘( ËQQëBä Z À¦¨Ä\ÏÂØh(näð¼â–à!` )\¡ò†b&QÒ"Àör·aÌ…/  @’ `X§ª!aÈÀKŒê¡AÌs¢7ÄúXf÷¤WE` Ô¥jÀL!ð7€ü²»‚€lBžF´  pÖÀ)ïÚ¡Ú êÁœDš¬aÖªdt!`&bØû„èN©`>& &ʨ®¿  ÃAÖΤ!‘­´‘¸!€ à !ÿ`±Î"ñÔ"ñÙÁûå‘íôùÒ Fw ’ !!R!ÁÏ"ù"KìAQ› 0¤)s 130ñ¤A @xZâi Â$0ÍšVþXd2EÀ'Â*â(¡è0SH$€VÈ€þ"ÁÞsáÚŒ HfÚPãBŸ,(g/âŽãB4 †a~¤ AŒ£ÒªhÌ0Î8#@”@fw"x¡Ðá)ÂØ @– orl€ OÀýÀ¢Á0nή2àtRŠà°5` D\¥H„õÀ6Ê6€'?çÈj+þ"„xå'Â5-"–ÁF Ï(B“23'2¦e2è²53ÿ3Ó@Dª“KDSQ5EÃ5 5îÙ6Si6ÂI7%i7’Ó~Ó‚“‡8°U99S™9Áõ::S©:À;F «1t™I¤1J4¤4p@€D†Lâà$c€ êá–å!ÞÂ,þà(¢Øu,Thf‚`FÂ@¨F B 8!/ s1LÃ(®zÿ—@<º`ƒÒ!"4aÈ0A6^O‚@¤%òKLPí‚H\"Ù6f\oâ,¡àQàPžž×‘,r2 @t‹ÎG`.N^æÆO4_2$g[+¢&Â$\°"ÁæTm¶g6¼IºAô®!t³KkKÀL /LTÉOÔÑMNUY¢+ƒà)4ãNtêðÔñOD]Oˆ³OÁPqP`ÛP¢kQ)õ"•ÃU"³•(O"“S4Õ8Gµ<)¦a+Jv!b4¡b6)IÔªÞ Û†bV˜ xDÀìÆàbq¡üø "–AœìF˜|ˆn d ²„± àÈo b’†aØâà"‚$aÄ%Ò#@&¥-XÂÒüà'âBÁ6Õ':Qå(RÀšh°“Äâ Á.ïç34 LøLâ5Sâ -€4LMJV:)aö Q+bØG"( .x  lÌé=¤ V3ckëcÖ@°6FCöKdöR0öYeÀfdöif‘ggVxK$ñgöƒRÄú‹höiV˜kæ½jÒ"“Âab·q1v'w7y.)T'•g ‚¢éDð!r!VgDa  ˜P/¾0Áª‚€aNpðˆßÀ(_Àæ iöv îáB¼ä8 «AJAŽpxСèƒb-B Àf¢@®‘åpa+èfe`–BØF“L>2·Ò ð5`5vÜŽSfé@að!i&I¡À"¥uà< à°Q@6)à3åVØF²ë @—‚†ˆ»xÅÃW•y—œD—£zwªaã>—´¹{Çœ2·Â-—Ç| A|à}$2-7Úß~!C~ce~ÂÒ'WùÀ¦¡;w¸Ù×w¸á$ÐOÚ v\¢à&~)áà * ÁÊÉm( KO þ óÀ­Â4í¢ŽÁJöªF˜2åd8ˆñ¬ €¡„²-€âàáÖ6 Ì¡Ns”ü@€~J ¤„€0b@òÔ¹îrB‚ô!a$ LL`0ÏŠ•vàÀ!cņäe¢@¡<†ª§‚àT” paWLb-/ñŽØñ@˜üéYJ¹D‘™"ð7ë’y+’ù22Ù6;“ùCg¹I”À•U•™\rd–*廎:!ߢ:(à!„¥”!)ÐÖ‘v„Ð-½€»ZÞA€Ì bz`6&2#@nXü_ë.^ʪQàÊð²s±Ü@oF)Ü È×%Fëϼ¡}f¡4 )MÄ €”ÿ` aÐ0NÞ¨D>€®ä©¥±®¬hðB9 ¢â*£”¥$\†/!úEÚ5£š'Èf‚$ëGx3, öxˆ8r€Vþgè¯!¤¦Þ!Ž%‚Ì%à(-2“œà(¡ AxõášÒó@ÂöVU:º¢aÎâcDB#6VTJuTä\ Á*î)3q äç‹€Ú”V)\$—J)!ᵤy¶£¶c{m· ½·u;·Û)ƒ¸{‹3û‘¹B-¹›œ¡ºA»º„ºÛ±»[¹»ÛÁ¼[É"„´;OÆë_´¼qÇk^q²3«4™ÀIKv@)´ Á ,*8B|„xÀ%ÁʪaÆräò+€ Ì Äúƒ £DèXÄøHDûÁÔæ»FºA|w¸x|n•kÿ„8í"p€Î t¦")(B€Z¢é:hÖa£…Z(Ê2ÚÿÃLäðØæ´Í‡Öl`Á­·A&£p“5§"£8@äYYo<ÏÜ ˆ"aÈâð‰\‰Èܼ•É‹EÉàÊ<§Hü­Ë Ë\¹ËÁùÌfÆÜËu.j)ÓÍsšÝÎäÒC΢Î÷¾- 'Ï|ûÏâXÝA¼mÇÌœÜuÜýÕÝ) :t`ºÊžÁ×ÈbÈaæ0ÁТ,G"BæÃAÜΫ¸,€‹ €Fê¿èf ¡Ea2凨(Þ®°èüLj8ЂÐ:RÙ¬*ç<$”H@Žâ,€ú ¯ÌV’!~bY¼h3*l/0žc>& j&€56ž·MHk¯Ú"¬NŽˆ¦O"‡.é#aÐ$! h(²¤As¢ýàÎÄÁk9q€ X\6.½áÞ@Þ‘âïß ß}úJ~.›áà·àÞáB°¾áçÉa^ÉË>*o¾01þ6;ãó$^D(@ä¾OOÞUå‚#åÁ[ædO«Ë´ËÝ<œ=ÓóÿD‚×zŒD `”ØLNçPf 9‡³Ò >tÞö0ÁÚòþâ±Ëïõ-‹0ˆ86Vâ¢CØ"(ÁL¾Œ6$€ h +ùuSrL- «º À¤*`râlXü„–VM.J@‡ @O¥‚¯ùc @¯ jÊÆwÛ"( °ô€À`D!ñŸp@0 zÑj5ÈvÓm€ÏàŽI%’€¤…ÑøÈÐo9@ ¦M5š‹ÄAp¬”6 ƒÁ Íäö‡€àØ«å÷"†(Qµìú1WÀ!à ÿ>Ÿ€ýý(x½^v'üü¦]€nר 8 #qhØí|€Ì@šÛq Å!ør' ¡€8¸e€l&ˆðü‡MŸú™¶¯Y­×kö–ÏiµÛm÷Öïy½ßoõ`—SfàqùžW/™ÍçsúŽ˜~-€ ¤qX:˼ÞÕ·sµà æ@‰Q(‘ÃdA`:Îü[ ð"þ  ÀÔªÇiæ­À\†ÀOF°,ˆ¨…@¬¡f`€)¬pØTÂAøNÁ8:'éøÄÆì^1gÉò«6a8.À³61Ap ª oQꆀpþ²D‘ €h ´‡’¤€I‚i€ÙjÅ©²²H‚@x lØ´;eñ°q€™“1¶î«®ì»në¾ð€Êó³oSÒ½©#à>O¢ÐûŸÏËöþ¿ð ÖÀ4¡€\Â0œ+ Ã'ô6C°üCı8³Åql_Æq©=ÅñÒLâº6ƒaXv%‹cXŽˆÕXöe›gYö…¢ç„D Bh³H}¼¨ª¬|@0g Ðw< Ó5(!rZ ‚ j® ¯¡(šÎ~¥B{ŸÈ©ö}ž€ïƒ1Þ­Žäég(_¢ˆl€Pt$uT:c€9²˜`Ü’6‰a˜ƒ–ìb«` ÊZš¹pdš€¾sjœ“083b8g†Á*„d—‹I'¤ 0úg×ÍÊ‘€IAà£PrŸ H”`¶™¤ ¢¢@mBhz®!ÄP\É¢o5€ø+6ÚöÍ·nŸú ³´—%ÍtUÙwׄ¼^w¨{ß7Ø ~ŸWûÓ%àx.„áxnˆâh®+‹ã8Ú×xþC‘ä O”åyiù—æ gšæùÎv’÷ixþG“åyv5’â¸Þg£éz~§ªØ:cš€Ö6h©ûÒ ‰ušOª„ÞR)|hD¤ŠŠaÖ.ðÈ`«M5/òP?GÑFk¨F !zïF1À$°@Š`Éëcð³ !v3ÀÉÄÐÂD!F  °Ö àÿ!åý°ÁØ\F˜á@mÌÓˆ =Ô-ÐÀPè­ÔÞW"3‡?Š%ø1À:Ï(à ñ;¼h3`4Ä1]‘yM6<¢ € Áa»’BlËÛ{±ð7Æù_8³}/¬„>Ò+_‹@Ñû?ƒÓ à©j5/þÀ2 4P2!˜±\‚À A¨9¡„P’BˆT>áb/…㚀g D žbOZ[Kyq.^iÃyòê_Kù0MéÓ ¨ëˆ@´ !‹ ^""ŘÍ(cØÃ¦“V€œCá„!€LÀÑk>Æ/‚FH‡Ðùa}âX§] 〩ô ¡Hj @ÉC<G ˜KFé4à0€ÒШ8€±HL8û‰¶°™$UÛE€ €Ô¶H‹Ø¤c¹Â ¿I+œ! P½Œ1¼Ï( #Ækà {„] [ gÔ0ÆÜ95ócÌ™–BflÏš3NjÍs]6¦äÞœŠr"·:Dë³¾xÏ9ë=çÌûv³ú€P*Q¨= ,PÚDh¢ôdQº:XX!¨FL+blU‰yÊþÅØû!d^  Ä Âp"ƒ-EJIm÷A±¦Ãpž.æÌ 3ø#ß[dèµæÀÊùà¯À­¨ðål>Š9ê6ï"pîÕwgÐnBh#…€Å¦Ÿ1ÂF¨;¤¸ˆâ÷HÈbAÐÎ}G‘Vt ,À:…y•>רó9zšE:€_ MÌ«áÙØñX—i탠UEƒà .ãhqžRJAÉ—3vjÎ=ò Em¢´†ÒÓÚ›V¶€Å®sÖÄ‘;im€%¸·OÞ€ pnŸàäܰs@Ϻ7NêÝr×vnÝÝ»÷†ñÞTAz/Uì,…¨ áš6l–[Ë™v]œ){—³ċ(2„``ÚZSøúÒØãel6‰Qa‘ÚÙ®½À&0H€V¹côPñæ= Þ†0à%xr*+†Î3‚íœ XÐ?Í!@ʦãåz†ª#¢_€8Ü© ø,åò“hVâ c p'j9õzµ$/PÎÜsh2¢Ä ŠÛ’DIq”uŽÔ$![&0›÷ pÊ€%Œ}‚D/†±HRˆ‡šÒÞn ¹Ä…g<êísÆzzù[?è¡t9CÑD¿Î}ôŽ“Òº_L€ 7§tøÔ#Q€ K©õN«?š»X\Ýg­u¾¹×e£^©®?™y#䆶Ƭ¾KÊyW+Ô)€$"þ(Èø=‡éüc8ˆáV0ͦ<4MðFÒ2ãñðÎP ΆÜfˆk¦KPN /p±±úq…PÁ4cˆu—° ‰WËîàÆ5ŽAØ@„¸¸€^ ¹¿¹ ¶ŸKÔ5)•N¹\®p¤ì®Ð…ˆÃ4gF3pÚfù›*ÃÂ24Py 2iæ<Ì}óRH–¹Ï;Oúƒt†zº7HéJ§¦tâÔ:—TêÝ`„€N·×Bo_ }‹²ÍÚ;Sà"½··÷Üû¯wï:½±ÎQÊþ—ÓË‹$€€€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=aÊ`@(}Ê%@0‚Ë€ܰ܎V€ηŒP<f(.“¼Ï`­ù,[1Ú ›°~? pÀB‚$ „W³âfó¦KD¤<?@wãåøE*Ø@kmÆx½^ñø@JDè¢ÑvZJ áû,<&V`³‰Ö „$àÐFEàó³:Þo\«íý˜%QL%ÀhèU \®2Ç3¹æ€°iH#_$“J¥2™d»c2šM§©äúB¢Q°ôªe:¡RªU«¨Ev¿a±Ùlö›]¶ßq¹Ö.׋ÕòüÀ0H‚Â@, ÁLÁj, ­ÁЬ- ÃÌ5 ÃEXà'.`C–nX ™%©; ‚ŸgÒXlg@9“e³{%(Xƒ  ¢(V¡hDÇ“ŽNf˜Z&ø®èdv‚€pƒÙ"°pa˜PˆP¤å‘”«“‘†ÇÊS "mˆç¢ø^€(¶!  h’n ¹‚ÌhkùÐu©$™ö¹4” ! ±#d},Í NÒ¥€P J,Ë‘ì´1Z`h €¨J +TäIE,TÈ¥pFQ¤lxÇ´yH‰#IP&IÒ„¥*!²»e-Rä½0LS$Ì}ÍÕ6MÓ„å)¢P9yÞ—­í{ßL# ^WÍýày†Á0@ƒ"ÅJ56ÙmœOXâtRRkg0@eètÊb  H3Rˆχ™ô¹eɜƙºObK Æ% ¤è K¯žŸ‡Û"D•…åÔeH¤´`^LÐÖ‡¥Þu4àå<  •LC¨®`šÄ“¥€–ÊŸ IðÕ¥êå»5çéü”‚`mFP{rcˆ®'ÚÌxZÀX±©à©ÊÅ!ƒ´îX$Ò€³E„aYð‹†‚ø~#‰9`n+¸³˜Î7Žãù ’dÙFU–R¹x˜æy®oœÎˆfyçú‡¢èñÞ“¥éº~¢‰êgñýàà~¯­ëûÊ}Â~×½ïü ë,Çiz`1 a†„·àG R‰e)E5‡»,ÂHûÜá²$„ÍÆ€ì\ŸËû¯þh`9¸P2A©ੱƒh)AÀ¡".P’ÈS Åœ-…äR¹*ß±–RÎZ—¸¿e¬¹—Rî]!Aè)bHã(úP †Le‰HíRÆÈ~–aÚ`ÀÊC€ ñ”4)Ï Á1/ƒJc‡¨ø,Ìtf9²9ÒÂ; 4 Ï2NA¬  9‚‚k¡!—$lµ,,ÆP¦¯ÄA€0G`ð‚ Hlа€ ÀÐGïL}Š5¢z jŽ3?€?Z‚42…d¯@òÅÉT7Ž!…+ÃaC–*@ ¡4€Æ\R%ç4~“Ì> `nflqœb10&ĘÀ"d3‰—3fxýš3LÍZ6&ÔÜ›Ó;YÇ9g9c@vNéà·Íô°3Þ|€ ÷?@XŸãú€’Ê A¨E ¡…Ú‡Z#Dè­£4nކÁ$,eå¡´VëKtÍi-E©µKÎ_p:”” ªp=$ÓRƒÌy™Aä»ÀPVƒéPLÀ Ü@ì@˜ÛѰG<Ê0K°ü¤£ä|±þ?‰c™ € ¤€ kÀ` àv5ÑF/H£ l³ŠBh %Ô,„H¸¤Àb ¢Ìj)˜T¥2Ld Ö ¡ÎgÅÆ`f Æ4kxBéC†šÚ*Hó­Å™J 1·„À“Éݰ•Lˆ-,A¦6@ãÆèê…C8lŽ’9kí³ÔÛÛ‚Yn”­½§7á3‹Š.93W*æ tyɺ—Zì]¦½wRàˆä^[Ïï]í8÷¾øß;êÎlª±¿@þ_ë^¦ˆ6ÀÂt[³;WŸô@–™êh- ¡ôAµ¤; àÜ@`U28KªŽÏÛ^Ue`Ù­ë`.Y•KzaUÚ²”`˜¡óIf½ëNä,Àa,€ ˜áÔH¨iÃlràÏ €»éÌ ž˜g )Âa\1¦e é@~  XγpjŽHT:Ç‘ƒB€È+BÁ$Õ’ ”1üÌÀË„[_¯£t~‘ÒzT–izAGΛ)äOÝ@ŽË2áÔ„S^$¬@6«Õº¾·ë'¦Ktî·×)“^ }°6&Ø»—œ–vhÙàÏh€ §µvºS´ú'žsÝ¡9÷AèZ EäAà Å>ñèA ©r€(–`÷&ÕQøoÈÙÏB‚Ë͈ÿ&¡“7ÒK„, –&BK(q)±‡.’*æ÷‘r3ºüO Š4Fë(êÐÕ˜0¸x‚a(¢Ì'…ƒþÚe¼xºx§³Bq‚Rµ¯µ·Qöã÷Ç3"­¯ç±ÑúOKé½<ýu.©‡_Wq@­uÅ”ÅU ½‰JŽË!€h2€KµÛÜ=»…jNç+1€.íÞz]ó¿à€„@>Äø¿^ü‡’òœëÎô?Ýûå@þÏúK.ŠBøW-€°”¦#"á褡4Áv3ŒÛ`2GàØ d¾€ÌhR¡ì9aæäv¼èì*®¶¢ài¤ŽAÈÈ ~Íl~6à|À@\/ü.åhÊJA dd!ÄcA®‹”€8 Cà\ Å(apIÁ¢Æ4@Àþ ¢Ø t%$éÔdAü¤¡F¡¼@ÄÞ8ÈŒ`òÿoúÿð`°Ðð".p&ð*-1K–Ð:>ðCpKðSp[à0g°nm ]`° p‹ð’ Ж °› ï½ OØþ±UkJB'»‘a1eqi±mñp#¯å1y±}ñ1…eýq‰ñ‘1•q™±aÑ1¥q©±­ä9±q¹±½ñÁ‘µ1ɱÍñÑ+SqÕ±Ýñá1äAqÙqíññ1õQëqýò 2±û r ò!2q\—!ò!"2%"eÿ ²)"ò1#25#b#"Ò9#òA$2E r=$rM$òQ%1Ã$²U%²]%òa2Y&2i&²m&î…&rq'ry'²|–’u'ò…(r‰(¥é(2)2•)r˜#r‘)²¡*2¥*2Ÿ*r­*ò±'«+2¹+²½$2·+òÅ,rÉ!2Ã,²Ñ-2ÕRÏ-rÝ-òá²Û.2é.²íç.òõ/rùró/³03ç²ÿ0s 0ó´3 131³{1ó%2s)2çs+3353f2393óA4"%3ÓE4³M4³I4óU5s)53Y5óa0Ó]63i6²í6sm73u-q7s}7ò±7³8s‰)S…8³‘92y8ó•9³%Ó™9ó¥:rA:3©:ó±"S­;3¹;²I2ïÛ;ÓÅ3åsá>sí>ñ>³ñ?sù3õ?´@1Y?ô@´ '3×@ôAq¥@”Aô ´Eö €?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfS8˜lÁ&“¹äö}? PhT:%G¤RiTºe617œ@éÕ:¥V­W¬VkUºåv½_°Oj› –Íg´ZmV»e¶Ýo¸Flu+Öíw¼^oW»åöýN¹À¯ø<& ‡ÄbqXºfuŒÈdrY<¦W-—¶c³¼æw=ŸÐhtQ ÖM§ÔjuZ½ecK­Ølv[=¦×m ×í÷[½æ÷}¿½îx>'ÇäOø\žg7Ïèt`ü¾—W­×ìvtN×w½ßðxnÏ—ÍçôzhžOW·Ýïø|nS{'Ëí÷ü~~>Ï×÷üÿÀ+ùÀ, ´pÁlÂAP|% ªÃÂÐÌ5 Ê1Ä E¤püIÅLT„ÄÑ\]Ƭ[Æ‘¬lÿFq¼uÇ4sÈ „çÇò#É Ô‹$É’l¾‹¤Ÿ)Ê’«S%ÊÒ̵-¯RĹ/Ì Í/LS,Í3°‹4M“lÜ­L“|å9Ή<ã:ÏÌô‹NóÜý?Ð,û@Д,ßAÐÔM0Q]GÉôm!IÒ’ %JÓÌb¨ þ,,Ìv >Ôvw(w@ #include //stubs for older version of gtk // unfortunately glade uses unexistant code #if GTK_MAJOR_VERSION == 2 #if GTK_MINOR_VERSION <= 2 #warning please use gtk 2.4 !!! some functions are missing !! gpointer GTK_RADIO_TOOL_BUTTON(gpointer d){return d;} gpointer GTK_TOOL_BUTTON(gpointer d){return d;} gpointer GTK_TOOL_ITEM(gpointer d){return d;} gpointer GTK_TOGGLE_TOOL_BUTTON(gpointer d){return d;} GSList *the_group=NULL; GSList *the_active=NULL; typedef GtkButton GtkRadioToolButton; typedef GtkButton GtkToolButton; typedef GtkBin GtkToolItem; GtkToolItem* gtk_tool_item_new(void){ return gtk_button_new(); } void gtk_toggle_tool_button_set_active(){}; void gtk_toggle_button_set_active (GtkToggleButton *toggle_button, gboolean is_active) { if(is_active) the_active = toggle_button; } void gtk_tool_item_set_tooltip(void *a,void*b) {}; GSList * gtk_radio_tool_button_get_group (GtkRadioToolButton *button) { return the_group;} void gtk_radio_tool_button_set_group (GtkRadioToolButton *button, GSList *group) { the_group=group; g_slist_append(the_group,button); } GtkWidget* gtk_button_new (void); GtkToolItem* gtk_tool_button_new (GtkWidget *icon_widget, const gchar *label); GtkToolItem* gtk_radio_tool_button_new (GSList *group) { GtkButton *b= gtk_button_new(); GtkButton *v= gtk_vbox_new(TRUE,1); gtk_widget_show(v); gtk_widget_show(b); gtk_container_add(b,v); return b; } void gtk_button_set_label (GtkButton *button, const gchar *label); void gtk_tool_button_set_label (GtkToolButton *button, const gchar *label) { GtkWidget *v=gtk_bin_get_child (button); if(v && GTK_IS_CONTAINER(v) ) { GtkWidget *w=gtk_label_new(label); gtk_widget_show(w); gtk_container_add(v,w); } } void gtk_tool_button_set_icon_widget (GtkToolButton *button, GtkWidget *icon_widget) { GtkWidget *v=gtk_bin_get_child (button); if(v && GTK_IS_CONTAINER(v) ) gtk_container_add(v,icon_widget); } #endif #endif xmorph-20140707+nmu2/gtkmorph/loadsave_mesh.c0000664000000000000000000003444512356324215015670 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif #include //NO WE USE g_assert for portability //#include "assert.h" #include #include "gtk-meta.h" #ifdef USE_IMLIB #include #else #include #endif #include "gdk-pixbuf-extra.h" #include "gtktopdata.h" #include "libmorph/warp.h" #include "libmorph/warp2.h" #include "libmorph/warp-gtk.h" #include "libmorph/resample.h" #include "libmorph/mesh.h" #include "mesh-gtk.h" #include "support.h" #include "utils.h" //#include "utils-mesh.h" #include "main.h" #include "settings.h" #include "interface.h" #include "dialogs.h" #include "loadsave.h" #include "utils.h" #include "feature.h" /*************************************************************** synch mesh labels ********/ /* we want the negative labels to be the highest, as if casting to unsigned */ #define MESHLABELMAP(A) (((A)<0)? 20000-(A) : (A)) #define MESHLABELDEMAP(A) (((A)>20000)? 20000-(A) : (A)) #define MAXLABEL(A,B) MESHLABELDEMAP( MAX( MESHLABELMAP(A),MESHLABELDEMAP(B))) /*************************************************************** load mesh from file */ static gboolean cmp_mesh_name(int lp,const char *file) { int l; for ( l =1; l <= MAX_WINS; l++) if( sp->im_widget[l] != NULL && sp->im_mesh_filename[l] != NULL) if( l != lp && 0==strcmp (file, sp->im_mesh_filename[l])) { gchar *s= g_strdup_printf (_("this filename is already used by the mesh of image %d") ,l); show_error(s); g_free(s); return FALSE; } return TRUE; } static inline void de_n(char *s) { int l=strlen(s); if(s[l-1]=='\n') s[l-1]=0; } gboolean load_mesh_from_file(int lp, const char * file) { FILE *fP; //int c; if(is_null(file)) return FALSE; if(!cmp_mesh_name(lp,file)) return FALSE; if((fP=fopen(file, "r"))==NULL) { showerr(file, "could not open file '%s' for read: %s"); return FALSE; } if (meshRead_stream( &(sp-> im_mesh[lp]), fP)) { show_error(_("the attempt to load mesh from file has produced an error\n(either this is not a mesh file, or the mesh file is corrupted)")); fclose(fP); return FALSE; } if(sp->im_mesh_filename[lp]) g_free(sp->im_mesh_filename[lp]); sp->im_mesh_filename[lp] = g_strdup(file); #ifdef NO_BORDER_HACK { MeshT *m =&sp->im_mesh[lp]; meshSetLabel(m,0,0,MESHPOINTSELECTED); meshSetLabel(m,0,m->ny-1,MESHPOINTSELECTED); meshSetLabel(m,m->nx-1,0,MESHPOINTSELECTED); meshSetLabel(m,m->nx-1,m->ny-1,MESHPOINTSELECTED); } #endif /* #ifdef THE_MESH_IS_NOW_FREE */ /* meshScaleFreeformat???( &(sp->im_mesh[lp]), */ /* sp->resulting_width, sp->resulting_height); */ /* #endif */ //MY_GTK_DRAW(sp-> im_widget[lp]); sp->meshes_x= MAX(sp->meshes_x, sp->im_mesh[lp].nx); sp->meshes_y= MAX(sp->meshes_y, sp->im_mesh[lp].ny); if (settings_get_value("mesh auto sync")) { int xi,yi,t=0; MeshT *this, *res; promote_meshes(); this=&(sp-> im_mesh[lp]); res=&(sp-> im_mesh[MAIN_WIN]); for(yi=0; yi < this->ny; yi++) { for(xi=0; xi < this->nx; xi++) { t+= meshGetLabel(this,xi,yi); /* this does a sort of fuzzy union */ meshSetLabel(res, xi,yi, MAXLABEL(meshGetLabel(this,xi,yi), meshGetLabel(res ,xi,yi))); }} if(t==0) { /* this is an old style mesh, with no labels: then we select all points so that they cant be smoothed */ g_message(" this mesh %s had no labels: autoselecting all point",file); for(yi=0; yi < this->ny; yi++) { for(xi=0; xi < this->nx; xi++) { meshSetLabel(this , xi,yi, -1); }}} } if(gtk_subimasel_load(&(sp-> subimasel[lp]), fP)==0) { char imagename[PATH_MAX+1]; imagename[0]=0; subimages_spinbuttons_set(lp); subimage2affines(lp); { char s[401]; s[0]=0; fgets(s,400,fP); de_n(s); if( 0==strcmp("",s)) { fgets(imagename,PATH_MAX,fP); de_n(imagename); fgets(s,400,fP); fgets(s,400,fP); de_n(s); } { if( 0==strcmp("",s)) { int old_res_w, old_res_h; fgets(s,400,fP); sscanf(s,"%d %d",&old_res_w, &old_res_h); meshScaleFreeformat( &(sp->im_mesh[lp]), sp->resulting_width/(double)old_res_w, sp->resulting_height/(double)old_res_h); } fgets(s,400,fP); fgets(s,400,fP); de_n(s); } if( 0==strcmp("",s)) { feature_load(fP); //eats the //enable this if there is another part: fgets(s,400,fP); de_n(s); } } fclose(fP);fP=NULL; if(sp-> im_filename_in[lp] && imagename[0] && 0!=strcmp(sp-> im_filename_in[lp],imagename)) { char z[601]; sprintf(z,_("this mesh was created on image '%s' and not on this image '%s'"),imagename,sp-> im_filename_in[lp]); show_warning(z); if(sp-> im_filename_in[lp] && imagename[0] ) { gchar * b1, *b2; #if GLIB_MAJOR_VERSION == 1 b1=g_basename(sp-> im_filename_in[lp]); b2=g_basename(imagename); #else b1=g_path_get_basename(sp-> im_filename_in[lp]); b2=g_path_get_basename(imagename); #endif if(b1 && b2 && 0==strcmp(b1,b2)) { set_editview( lp, EDITVIEW_EDIT); scale_loaded_pixbuf_et_rrggbb(lp);} else set_editview( lp, EDITVIEW_EYES); #if GLIB_MAJOR_VERSION >= 2 g_free(b1); g_free(b2); #endif } } else { if(sp-> subimasel[lp].orig_width != sp-> im_width[lp] || sp-> subimasel[lp].orig_height != sp->im_height[lp]) { char z[601]; sprintf(z,_("the size of the image w=%d h=%d and the size recorded in the mesh w=%d h=%d do not match"), sp-> im_width[lp],sp->im_height[lp], sp-> subimasel[lp].orig_width,sp-> subimasel[lp].orig_height); show_warning(z); set_editview( lp, EDITVIEW_EYES); } else { set_editview( lp, EDITVIEW_EDIT); scale_loaded_pixbuf_et_rrggbb(lp); } } } else show_warning("could not read subimage information from this file."); return TRUE; } /****************************************************************/ gboolean save_mesh_to_file(int lp, const char * file) { FILE *fP; /* int c; */ /* c=strlen(file); */ /* /\* delete the common initial part of cwd and filename *\/ */ /* #define REDUCE__(A) ((0==strncmp(A,file,c)) ? (A)+c:(A)) */ if(is_null(file)) return FALSE; if(lp==MAIN_WIN && settings_get_value("automatic mesh interpolation")) { if((fP=fopen(file, "r"))!=NULL) { show_error(_("This mesh is automatically generated. You don't want to overwrite another mesh with this one!")); fclose(fP); return FALSE; } } if(!cmp_mesh_name(lp,file)) return FALSE; if((fP=fopen(file, "w"))==NULL) { showerr(file, "could not open file '%s' for write: %s"); return FALSE; } { //MeshT copy; meshInit(©); meshCopy(©, &(sp-> im_mesh[lp])) ; //meshScaleFreeformat(copy,?????); if (meshWrite_stream( &(sp-> im_mesh[lp]) , fP) ==0) { if(sp->im_mesh_filename[lp]) g_free(sp->im_mesh_filename[lp]); sp->im_mesh_filename[lp] = g_strdup(file); sp-> subimasel[lp].orig_width = sp-> im_width[lp]; sp-> subimasel[lp].orig_height = sp->im_height[lp]; gtk_subimasel_save(&(sp-> subimasel[lp]), fP); if(sp->im_filename_in[lp]) fprintf(fP,"\n%s\n\n", (sp->im_filename_in[lp])); fprintf(fP,"\n%d %d\n\n", sp->resulting_width, sp->resulting_height); fprintf(fP,"\n"); feature_save(fP); fprintf(fP,"\n"); } else { char *s = g_strdup_printf("\ the attempt to save the mesh in file %s has produced an internal error", file); show_error(s); g_free(s); fclose(fP); //meshUnref(©); return FALSE; } //meshUnref(©); } fclose(fP); return TRUE; } gboolean save_diff_mesh_to_file(int lp, const char * file) { if(is_null(file)) return FALSE; FILE *fP; if((fP=fopen(file, "w"))==NULL) { showerr(file, "could not open file '%s' for write: %s"); return FALSE; } MeshT * mesh = sp->im_mesh_diff[lp], *base_mesh = &(sp->im_mesh[lp]); g_return_val_if_fail(mesh,FALSE); const int nx=mesh->nx, ny=mesh->ny ; g_return_val_if_fail( nx==base_mesh->nx && ny==base_mesh->ny,FALSE); MeshT copy; meshInit(©); meshAlloc(©,nx,ny); {int xi, yi; for(xi=0; xi < nx; xi++) { for(yi=0; yi < ny; yi++) { meshSetNoundo(©, xi,yi, meshGetx(mesh,xi,yi)-meshGetx(base_mesh,xi,yi), meshGety(mesh,xi,yi)-meshGety(base_mesh,xi,yi)); meshSetLabel(©, xi,yi,meshGetLabel(mesh,xi,yi)); }}} if (meshWrite_stream( © , fP) ==0) { fclose(fP); meshUnref(©); } else { char *s = g_strdup_printf("\ the attempt to save the differential mesh in file %s has produced an internal error", file); show_error(s); g_free(s); fclose(fP); meshUnref(©); return FALSE; } return TRUE; } gboolean load_diff_from_file(int lp, const char * file) { if(!cmp_mesh_name(lp,file)) return FALSE; FILE *fP; if((fP=fopen(file, "r"))==NULL) { showerr(file, "could not open file '%s' for read: %s"); return FALSE; } if (meshRead_stream( &(sp-> im_mesh[lp]), fP)) { show_error(_("the attempt to load mesh from file has produced an error\n(either this is not a mesh file, or the mesh file is corrupted)")); fclose(fP); return FALSE; } fclose(fP); if(sp->im_mesh_filename[lp]) g_free(sp->im_mesh_filename[lp]); sp->im_mesh_filename[lp] = g_strdup(file); /* we set this before, otherwise the "factor_normalize" goes berseker */ sp->max_wins++; GtkWidget *window=sp->im_widget[lp]=create_diff_window(); gtk_widget_set_data_top(window,"imagenum", GUINT_TO_POINTER(lp)); sp->mf.im_warp_factor[lp]=0; sp->mf.im_dissolve_factor[lp]=0; sp->im_drawingarea_widget[lp] = NULL; sp->im_widget_is_difference_mesh[lp]=TRUE; { gchar * N=compute_title (lp); gtk_window_set_title (GTK_WINDOW(sp->im_widget[lp]),N); g_free(N); } gtk_widget_show(window); return TRUE; } gboolean load_image_from_file_not_ply(int lp, const char *file) { GdkPixbuf *impixfile; #if GTK_MAJOR_VERSION < 2 impixfile= gdk_pixbuf_new_from_file(file); if (impixfile ==NULL) { showerr(file,_("\ the attempt to load the image file %s has produced error: %s")); return FALSE; } #else { GError *err=NULL; impixfile= gdk_pixbuf_new_from_file(file,&err); if(err) { show_error((err)->message);g_error_free (err); return FALSE; } } #endif { sp->im_width[lp]= gdk_pixbuf_get_width(impixfile); sp->im_height[lp]= gdk_pixbuf_get_height(impixfile); gtk_subimasel_reset( &(sp->subimasel[lp]) , sp->im_width[lp], sp->im_height[lp]); #ifndef RESCALE_RELOAD_LESS_MEM destroy_pixbuf(lp,PIXLOADED ); #endif destroy_pixmap(lp,PIXLOADED ); subimages_spinbuttons_set(lp); subimage2affines(lp); sp->im_loaded_pixbuf[lp]=impixfile; create__pixmap(lp,PIXLOADED ); render_pixmap(lp, PIXLOADED); scale_loaded_pixbuf_et_rrggbb(lp); render_pixmap(lp, PIXSUBIMAGE); //FIXME do we do this here? //render_pixmap(lp, PIXWARPED); #ifdef RESCALE_RELOAD_LESS_MEM destroy_pixbuf(lp,PIXLOADED ); impixfile=NULL; #endif if(sp->im_filename_in[lp]!=NULL) g_free(sp->im_filename_in[lp]); sp->im_filename_in[lp]=g_strdup(file); { gchar * N = compute_title (lp); gtk_window_set_title ( GTK_WINDOW(sp->im_widget[lp]), N); g_free(N); } set_editview( lp, EDITVIEW_EYES); drawingarea_configure(lp); MY_GTK_DRAW( sp-> im_widget[lp]); return TRUE; } } gboolean load_image_from_file(int lp, const char *file) { int len=strlen(file); g_assert(lp>0); if (strcmp(file+len-4,".ply")) return load_image_from_file_not_ply(lp,file); else { #if HAVE_LIBPLY_H if(!read_ply_) { show_error(_("gtkmorph could not find libply, so it cannot load PLY surfaces. Read documentations to install libply.")); return FALSE; } if(!read_ply_(file,&sp->im_ply_surface[lp])) { showerr(file,_("error while loading PLY file")); return FALSE; } return TRUE; #else show_error(_("gtkmorph was NOT compiled with PLY support")); return FALSE; #endif } } gboolean save_image_to_file(int lp, const char *file) { GdkPixbuf * pb=*(which_pixbuf_is_visible(lp)); if(sp->im_filename_out[lp] == NULL || 0!=strcmp(sp->im_filename_out[lp],file)) { if( g_file_test(file, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR )) { showerr(file,_("\ This file already exists! If you really want to overwrite it, delete it.")); return FALSE; } } gboolean result= save_pixbuf_to_file(file,pb); if(result) sp->im_filename_out[lp]=g_strdup(file); return result; } /* reloads image , if necessary, and rescales it */ void reload_and_scale_image(int i) { GdkPixbuf **impixfile = which_pixbuf(i,PIXLOADED); g_assert(i > 0); if(*impixfile == NULL) { #ifndef RESCALE_RELOAD_LESS_MEM g_warning("lost original pixbuf %d... why???\n try reloading\n",i); #endif if ( sp-> im_filename_in[i] == NULL || strlen( sp-> im_filename_in[i]) == 0) { show_error ( g_strdup_printf(_("can't resize %dth image-no filename"),i)); return; } /* reload */ #if GTK_MAJOR_VERSION < 2 *impixfile= gdk_pixbuf_new_from_file(sp-> im_filename_in[i]); #else { GError *err=NULL; *impixfile= gdk_pixbuf_new_from_file(sp-> im_filename_in[i],&err); //FIXME should use err } #endif if (*impixfile ==NULL) { showerr(sp-> im_filename_in[i], _("the attempt to reload the image file %s to resize it has produced error: %s")); create__pixbuf(i, PIXLOADED); return; } } #ifdef RESCALE_RELOAD_LESS_MEM else { g_warning("the original pixbuf %d was not deallocated, reusing it\n",i); //FIXME why?? gdk_pixbuf_ref(*impixfile); } #endif g_assert(*impixfile); g_assert(&(sp->im_loaded_pixbuf[i])==impixfile); render_pixmap(i, PIXLOADED); scale_loaded_pixbuf_et_rrggbb(i); render_pixmap(i, PIXSUBIMAGE); #ifdef RESCALE_RELOAD_LESS_MEM delete_pixbuf(i, PIXLOADED); #endif } xmorph-20140707+nmu2/gtkmorph/callbacks_subimg.c0000664000000000000000000001437512356304631016343 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include "gtk-meta.h" #ifdef USE_IMLIB #include #else #include #endif #include "main.h" #include "support.h" /*************************************************************************** ************************************************************************** handlebox of ranges **************************** used to enter the numerical values for im_warp_factor and im_dissolve_factor ********************************************************************** */ void on_handlebox_factors_show (GtkWidget *widget, gpointer user_data) { /* int i= */ /* GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); */ /* g_assert(i > 0); */ /* //FIXME this doesnt work since we use a different window in glade */ /* // so it is actually unused now */ /* if ( i == MAIN_WIN) */ /* gtk_widget_hide(widget); */ } unsigned int lock_factor_normalize= 0; void redraw_spins(int skip) { //extern unsigned int lock_factor_normalize; lock_factor_normalize++; int lp; GtkWidget *w; GtkSpinButton *s; for (lp=1 ; lp<=MAX_WINS ; lp++) { w=sp->im_widget[lp]; if ( w != NULL) { if( lp!=skip ) { s=GTK_SPIN_BUTTON(lookup_widget(w,"spinbutton_mesh")); gtk_spin_button_set_value (s,sp->mf.im_warp_factor[lp] * 100); if( !sp->im_widget_is_difference_mesh[lp] ) { s=GTK_SPIN_BUTTON(lookup_widget(w,"spinbutton_image")); gtk_spin_button_set_value (s,sp->mf.im_dissolve_factor[lp] * 100); } } } } lock_factor_normalize--; } void im_factor_normalize(double *p, int i) { double t=0,tt=0; int lp; if((p==sp->mf.im_warp_factor && 0== settings_get_value("mesh factors sum to 1")) || (p==sp->mf.im_dissolve_factor && 0== settings_get_value("image factors sum to 1"))) return; for (lp=1 ; lp<=MAX_WINS ; lp++) if(sp->im_widget[lp] != NULL && !sp->im_widget_is_difference_mesh[lp] ) { tt += p[lp]; if(i!=lp) t+= p[lp]; } for (lp=1 ; lp<=MAX_WINS ; lp++) if(sp->im_widget[lp] != NULL && !sp->im_widget_is_difference_mesh[lp] ) { if(i!=lp) { if(sp->max_wins==2) p[lp] = 1-p[i]; else { if( ABS(t) > 0.01) p[lp] = p[lp] * (1 - p[i]) / t; else p[lp] = (1 - p[i]) / ((double) sp->max_wins-1.0) ; } } } if(lock_factor_normalize>0) { g_debug("factor normalize is locked %u",lock_factor_normalize); return; } else g_debug("factor normalize is not locked"); lock_factor_normalize++; redraw_spins(i); lock_factor_normalize--; } void on_spinbutton_mesh_changed (GtkEditable *editable, gpointer user_data) { GtkSpinButton *spin = GTK_SPIN_BUTTON (editable); GtkRange *range=GTK_RANGE(lookup_widget(GTK_WIDGET(editable), "hscale_mesh")); double val; int i=GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(editable) ,"imagenum")); g_debug ( "spin mesh %d = %0.*f",i, spin->digits, gtk_spin_button_get_value_as_float (spin)); sp->mf.im_warp_factor[i]=val=gtk_spin_button_get_value_as_float (spin)/100.0; if(!sp->im_widget_is_difference_mesh[i]) im_factor_normalize(sp->mf.im_warp_factor,i); g_debug(" spin mesh %d = %g",i,sp->mf.im_warp_factor[i]); if(range) { range->adjustment->value=val * 100; gtk_signal_emit_by_name (GTK_OBJECT (range->adjustment), "changed"); #ifndef IS_PLYMORPH if( settings_get_value("automatic mesh interpolation")&& sp->max_wins>1) on_interpolate_meshes1_activate (NULL,NULL); #endif } else g_critical("no adjustment"); } void on_spinbutton_image_changed (GtkEditable *editable, gpointer user_data) { GtkSpinButton *spin = GTK_SPIN_BUTTON (editable); //GtkRange *range=GTK_RANGE(user_data); GtkRange *range=GTK_RANGE(lookup_widget(GTK_WIDGET(editable), "hscale_image")); double val; int i=GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(editable), "imagenum")); g_debug ( "spin image %d = %0.*f",i, spin->digits, gtk_spin_button_get_value_as_float (spin)); sp->mf.im_dissolve_factor[i]=val=gtk_spin_button_get_value_as_float (spin)/100.0; im_factor_normalize(sp->mf.im_dissolve_factor, i); g_debug(" spin image %d = %g",i,sp->mf.im_warp_factor[i]); if(range) { range->adjustment->value=val * 100; gtk_signal_emit_by_name (GTK_OBJECT (range->adjustment), "changed"); #ifndef IS_PLYMORPH if( settings_get_value("automatic blending")&& sp->max_wins>1 && sp-> im_warped_pixbuf[MAIN_WIN] && sp-> im_warped_pixbuf[i] && sp-> im_warped_pixmap[MAIN_WIN] && sp-> im_warped_pixmap[i] && lock_factor_normalize == 0) on_do_mixing_clicked(NULL,NULL); #endif } else g_critical("no v adjustment"); } /*************/ #if GTK_MAJOR_VERSION == 1 gboolean on_hscale_mesh_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) #else void on_hscale_mesh_changed (GtkRange *range, gpointer user_data) #endif { #if GTK_MAJOR_VERSION == 1 GtkRange *range=GTK_RANGE(widget); #endif GtkSpinButton *spin=GTK_SPIN_BUTTON (lookup_widget(GTK_WIDGET(range),"spinbutton_mesh")); if(spin) { gtk_spin_button_set_value (spin, range->adjustment->value); } else g_critical("no adjustment"); return #if GTK_MAJOR_VERSION == 1 FALSE #endif ; } /**************/ #if GTK_MAJOR_VERSION == 1 gboolean on_hscale_image_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) #else void on_hscale_image_changed (GtkRange *range, gpointer user_data) #endif { #if GTK_MAJOR_VERSION == 1 GtkRange *range=GTK_RANGE(widget); #endif GtkSpinButton *spin=GTK_SPIN_BUTTON (lookup_widget(GTK_WIDGET(range),"spinbutton_image")); if(spin) { gtk_spin_button_set_value (spin, range->adjustment->value); } else g_critical("no adjustment"); return #if GTK_MAJOR_VERSION == 1 FALSE #endif ; } xmorph-20140707+nmu2/gtkmorph/guide_text.h0000664000000000000000000000234312356304631015214 0ustar #ifdef _ #error "Error in the code: this header unsets the macro _() , it must be included before support.h" #endif #define _(A) A /* otherwise this string does not end up in the message catalog */ #define FEATURE_HELP _("\ 'Features' are sets of grid points; they are represented\ by the same color in the grid. They can be used to more\ easily edit a complex grid: for example, when preparing\ a grid on a face, each facial feature (eyes,\ mouth..) can be outlined by using a proper set of points.\n\ Points can be added or subtracted from features using\ the tools 'assign' and 'unselect'; whole features can be\ moved all together, using the 'move' and 'stretch' tools;\ the 'pack' button transforms all selected points into\ a feature, and 'unpack' does the opposite.") #define TIPS_HELP _("\ Tips:\n\ 1) try to keep the mesh lines as linear as possible:\ add new lines (with right mouse button) if this helps!\n\ 2) to have a better morph, for each image, set the `morph factors' to\ a maximum, hit `do warp' and try to adjust the mesh until this warp\ looks right\n\ 3) if you are fighting with small details, then you should increase\ the resulting image size until you have fixed things. (Use the\ the 'x2' button.)") #undef _ xmorph-20140707+nmu2/gtkmorph/warp-gtk.h0000664000000000000000000000261712356304631014613 0ustar #ifndef __WARP_GTK_H__ #define __WARP_GTK_H__ #include inline void warp_image_gdk_a ( GdkPixbuf *src, GdkPixbuf *dst, const double *xs, const double *ys, const double *xd, const double *yd, int mesh_width, int mesh_height) { warp_image_versatile (gdk_pixbuf_get_pixels(src), gdk_pixbuf_get_width(src),gdk_pixbuf_get_height(src), gdk_pixbuf_get_n_channels(src),gdk_pixbuf_get_rowstride(src),gdk_pixbuf_get_n_channels(src), gdk_pixbuf_get_pixels(dst), gdk_pixbuf_get_width(dst),gdk_pixbuf_get_height(dst), gdk_pixbuf_get_n_channels(dst),gdk_pixbuf_get_rowstride(dst),gdk_pixbuf_get_n_channels(dst), xs, ys, xd, yd, mesh_width, mesh_height); } inline void warp_image_gdk_m ( GdkPixbuf *src, GdkPixbuf *dst, MeshT *srcmesh, MeshT *dstmesh) { g_return_if_fail( srcmesh->nx == dstmesh->nx && srcmesh->ny == dstmesh->ny); warp_image_versatile (gdk_pixbuf_get_pixels(src), gdk_pixbuf_get_width(src),gdk_pixbuf_get_height(src), gdk_pixbuf_get_n_channels(src),gdk_pixbuf_get_rowstride(src),gdk_pixbuf_get_n_channels(src), gdk_pixbuf_get_pixels(dst), gdk_pixbuf_get_width(dst),gdk_pixbuf_get_height(dst), gdk_pixbuf_get_n_channels(dst),gdk_pixbuf_get_rowstride(dst),gdk_pixbuf_get_n_channels(dst), srcmesh->x, srcmesh->y, dstmesh->x, dstmesh->y, srcmesh->nx,srcmesh->ny); } #endif // __WARP_GTK_H__ xmorph-20140707+nmu2/gtkmorph/callbacks_main.c0000664000000000000000000005123612356304631015776 0ustar #include "stdio.h" #include //strlen #ifdef HAVE_CONFIG_H # include #endif #include #ifdef USE_IMLIB #include #else #include #endif #include "gtk-meta.h" #include #include "gtktopdata.h" #include "gtk_subimagesel.h" #include "main.h" #include "callbacks.h" #include "interface.h" #include "guide.h" #include "support.h" //#include "pixmaps.h" #ifndef IS_PLYMORPH #include "mesh-gtk.h" #include "utils.h" #include "feature.h" #include "../libmorph/relax.h" #endif #include "mag.h" #include "fourier.hh" #include "dialogs.h" #include "callbacks_fs.h" #include "loadsave.h" #ifndef IS_PLYMORPH #include "loadsave_mesh.h" #else #include "loadsave_ply.h" #endif #include "callbacks_subimg.h" //redraw_spins /* some code was taken from the gtk-tutorial , the "scribble" example */ /******************************************************************* ****************************************************************** main window ********************************************************************** ********************************************************************** */ gboolean on_window_main_delete (GtkWidget *widget, GdkEvent *event, gpointer user_data) { if(guide_callback("delete_event",MAIN_WIN)) { gtk_widget_hide(widget); return TRUE; } else { on_quit1_activate(NULL,NULL); return TRUE; } } void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp; char s[MAX_WINS*5+10]; s[0]=0; /* FIXME < or <= ?? */ for(lp=1;lp<=MAX_WINS; lp++) { if( sp->im_widget[lp] && #ifdef IS_PLYMORPH sp->im_ply_labels_unsaved[lp] #else sp->im_mesh[lp].changed>0 #endif ) { int l=strlen(s); sprintf(s+l," %d",lp); } } if ( s[0]) { GtkWidget *q=create_question(), *b; char *z=g_strdup_printf (_("the mesh(es) %s were not saved! do you want to exit anyway?"),s); //gtk_window_set_title(GTK_WINDOW(q),z); gtk_widget_show(q); b=lookup_widget(q,"yes"); gtk_signal_connect (GTK_OBJECT (b), "clicked", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); b=lookup_widget(q,"no"); gtk_signal_connect (GTK_OBJECT (b), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), q); b=lookup_widget(q,"questionlabel"); gtk_label_set_text(GTK_LABEL(b),z); g_free(z); } else gtk_main_quit(); } void on_resulting_image_size_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkWidget* hb= lookup_widget ( sp->im_widget[MAIN_WIN] , "handlebox_res_size"); g_assert(hb); gtk_widget_show(hb); } void on_show_morph_factors_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp; for(lp=1 ; lp <= MAX_WINS; lp ++) if(sp->im_widget[lp] != NULL) { //set_editview(lp,EDITVIEW_SHOWMESHES ); setup_handlebox_factor(lp,TRUE); } } //void //on_logtext_realize (GtkWidget *widget, // gpointer user_data) //{ // //} /* main menus callbacks */ #include gchar *session_name=NULL; void on_load_session_activate (GtkMenuItem *menuitem, gpointer user_data) { fileselection_hook=load_session; fileselection1_for_image_num_g=MAIN_WIN; show_fs(//GTK_WIDGET(menuitem), _("load session") #if GTK_MAJOR_VERSION >= 2 , GTK_FILE_CHOOSER_ACTION_OPEN #endif ); if(session_name) gtk_file_selection_set_filename ((fileselection_g),session_name); } void on_save_session_activate (GtkMenuItem *menuitem, gpointer user_data) { fileselection_hook=save_session; fileselection1_for_image_num_g=MAIN_WIN; show_fs(//GTK_WIDGET(menuitem), _("save session") #if GTK_MAJOR_VERSION >= 2 , GTK_FILE_CHOOSER_ACTION_SAVE #endif ); if(!session_name){ #if GLIB_MAJOR_VERSION == 1 session_name=g_strdup_printf("gtkmorph.session"); #else GDate D; g_date_set_time (&D, time (NULL)); session_name=g_strdup_printf("%d-%02d-%02d.session", g_date_get_year (&D),g_date_get_month (&D), g_date_get_day (&D)); #endif } gtk_file_selection_set_filename ((fileselection_g),session_name); } void on_add_an_image_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp; for(lp=1 ; lp <= MAX_WINS; lp ++) if(sp->im_widget[lp] == NULL) { /* we set this before, otherwise the "factor_normalize" goes berseker */ sp->max_wins++; create_and_show_image_win(lp); setup_handlebox_factor(lp,FALSE); return; } } void on_view_images1_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp; for(lp=1 ; lp <= MAIN_WIN ; lp ++) { if(sp->im_widget[lp] != NULL) gtk_widget_show (sp->im_widget[lp]); } } double tot_mixing_factors() { double totdiss; int lp; totdiss=0; for ( lp =1; lp <= MAX_WINS; lp++) if(sp->im_widget[lp] != NULL) totdiss += sp->mf.im_dissolve_factor[lp]; // FIXME this is not shown sp->mf.im_dissolve_factor[MAIN_WIN]=totdiss; return totdiss; } double tot_mixing_factors_nice() { double totdiss=tot_mixing_factors(); int lp; if ( ABS(totdiss) < 0.001) { show_warning( _("\ to blend the images, the sum of the all `image mixing factors' must be nonzero\ \nI have put default values for you")); for ( lp =1; lp <= MAX_WINS; lp++) if(sp->im_widget[lp] != NULL) { sp->mf.im_dissolve_factor[lp]=1.0/(double)sp->max_wins; //gtk_widget_get_data_top(sp->im_widget[lp],"imagenum") } totdiss =1; redraw_spins(-3); } return totdiss; } /******************************** does the actual morphing ********************************/ #define PRINT_MORPH_TIME void on_morph_images1_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp; //double totdiss=tot_mixing_factors_nice(); #ifdef PRINT_MORPH_TIME GTimeVal bef,aft; g_get_current_time(&bef); #endif if( sp->max_wins<=1) { show_error( _("\ to morph, you must have at least two input images")); return; } on_interpolate_meshes1_activate (NULL,NULL); for ( lp =1; lp <= MAX_WINS; lp++) if(sp->im_widget[lp] != NULL #ifndef IS_PLYMORPH && !sp->im_widget_is_difference_mesh[lp] #endif ) { #ifdef IS_PLYMORPH extern int reference_ply_surface_n; g_return_if_fail(reference_ply_surface_n>0); if( lp != reference_ply_surface_n && ABS(sp->mf.im_dissolve_factor[lp]) < 0.001 ) #else if(ABS(sp->mf.im_dissolve_factor[lp]) < 0.001 ) #endif g_message("NOT morphing image %d to resultin mesh", lp); else { g_message("warping image %d to resulting mesh", lp); // do_warp_an_image_old(lp,r,g,b); do_warp_an_image_new(lp); } } on_do_mixing_clicked(NULL,NULL); #ifdef PRINT_MORPH_TIME g_get_current_time(&aft); g_message("morph time %.2f",(double)(aft.tv_sec-bef.tv_sec) + (double)(aft.tv_usec -bef.tv_usec) /1e6 ); #endif #ifdef IS_PLYMORPH __after_morph_ply_callback(); #endif if(settings_get_value( "show warp after warp")) set_editview(MAIN_WIN, EDITVIEW_SHOW); MY_GTK_DRAW (sp->im_widget[MAIN_WIN]); } /*********************************************************** * *************************** file selection ************ * ********************************************************** the following hook is set so that the same fileselection dialog will be used for many different purposes */ void on_ok_button1_realize (GtkWidget *widget, gpointer user_data) { // GtkWidget *widget_f= gtk_widget_get_toplevel (widget); // doesnt work // gtk_container_add (GTK_CONTAINER (widget_f), // menu_image_num_g); // gtk_menu_item_set_submenu(widget,create_menu_image_num_g ); } void on_ok_button1_clicked (GtkButton *button, gpointer user_data) { const char *file= gtk_file_selection_get_filename ( fileselection_g); g_assert(fileselection1_for_image_num_g > 0); if( //e.g. fileselection_hook=load_image_from_file fileselection_hook (fileselection1_for_image_num_g, file)) { //gtk_widget_hide(GTK_WIDGET(fileselection_g)); //gtk_file_selection_complete (fileselection_g,""); gtk_widget_show( sp-> im_widget[fileselection1_for_image_num_g]); guide_callback("file",fileselection1_for_image_num_g); // lets be nasty fileselection1_for_image_num_g=-2; fileselection_hook=NULL; gtk_widget_destroy(GTK_WIDGET(fileselection_g)); fileselection_g=NULL; } } #if HAVE_WAILI #include "wavelet.hh" GNode *l2_warped_stats[MAX_WINS], *l2_subimage_stats[MAX_WINS]; #endif #ifndef IS_PLYMORPH void on_wavelet_equalize_activate (GtkMenuItem *menuitem, gpointer user_data) { #if HAVE_WAILI int lp; GNode *l2_tmp=NULL; double fact=0; for ( lp =1; lp <= MAX_WINS; lp++) if(sp->im_widget[lp] != NULL && sp-> im_subimage_pixbuf[lp] ) fact +=1; fact = 1/fact; for ( lp =1; lp <= MAX_WINS; lp++) if(sp->im_widget[lp] != NULL && sp-> im_subimage_pixbuf[lp] ) { g_debug(" ----- wavelet L2 energies for subimage image %d\n",lp); l2_subimage_stats[lp]=wavelet_stats( sp-> im_subimage_pixbuf[lp]); if(!l2_tmp) l2_tmp=wavelet_stats_clone(l2_subimage_stats[lp]); wavelet_stats_sum(l2_tmp,l2_subimage_stats[lp],fact); } for ( lp =1; lp <= MAX_WINS; lp++) if(sp->im_widget[lp] != NULL && sp-> im_subimage_pixbuf[lp] ) { g_debug(" --- equalizing wavelet L2 energies for image %d\n",lp); wavelet_equalize(sp-> im_subimage_pixbuf[lp],l2_tmp); } #else show_error(_("gtkmorph was not linked with Waili wavelet library")); #endif } #endif static int round_and_dither( double v) { static double delta=0; double nv; v=v+delta; nv=floor(v+0.5); delta=v-nv; return (int)nv; } void on_do_mixing_clicked (GtkButton *button, gpointer user_data) { int lp; double totdiss=tot_mixing_factors_nice(); guint w=sp->resulting_width, h=sp->resulting_height; int effective_wins=0, max_win=0; guchar *data[MAX_WINS+2]; g_debug("blending textures of warped images"); for ( lp =1; lp <= MAX_WINS; lp++) { if(sp->im_widget[lp] != NULL && #ifndef IS_PLYMORPH !sp->im_widget_is_difference_mesh[lp] && #endif ABS(sp->mf.im_dissolve_factor[lp]) >= 0.0001 && lp != MAIN_WIN ) { effective_wins++; max_win=lp; data[lp] = gdk_pixbuf_get_pixels(sp-> im_warped_pixbuf[lp]); g_assert( data[lp] != NULL); } else data[lp]=NULL; } if( effective_wins <=1) { //simply copy if(sp-> im_warped_pixbuf[MAIN_WIN]) gdk_pixbuf_unref(sp-> im_warped_pixbuf[MAIN_WIN]); sp-> im_warped_pixbuf[MAIN_WIN]= gdk_pixbuf_copy(sp-> im_warped_pixbuf[max_win]); #ifndef IS_PLYMORPH render_pixmap(MAIN_WIN, PIXWARPED); set_editview(MAIN_WIN, settings_get_value( "show warp after warp")); MY_GTK_DRAW(sp->im_widget[MAIN_WIN] ); #endif return; } { /* we precompute some data */ double fact[max_win+1]; guint rowstride[max_win+1]; guint channels[max_win+1]; #if HAVE_WAILI GNode *l2_average_stat=NULL; #endif for ( lp =1; lp <= max_win; lp++) if(data[lp]) { fact[lp] = sp->mf.im_dissolve_factor[lp] / totdiss; rowstride[lp]= gdk_pixbuf_get_rowstride(sp-> im_warped_pixbuf[lp]); channels[lp]= gdk_pixbuf_get_n_channels(sp-> im_warped_pixbuf[lp]); } #if HAVE_WAILI if( settings_get_value ("wavelet equalization")) { g_message("collecting wavelet statistics"); for ( lp =1 ; lp <= max_win ; lp++) { if (data[lp] != NULL){ if(NULL==l2_warped_stats[lp]) { g_debug(" ----- wavelet L2 energies for image %d\n",lp); l2_warped_stats[lp]=wavelet_stats( sp-> im_warped_pixbuf[lp]); } if(NULL==l2_average_stat) l2_average_stat=wavelet_stats_clone(l2_warped_stats[lp]); wavelet_stats_sum(l2_average_stat, l2_warped_stats[lp] , fact[lp] ); } }} #endif { GdkPixbuf *dpb = sp-> im_warped_pixbuf[MAIN_WIN]; if(dpb==NULL) { #ifdef IS_PLYMORPH dpb = sp-> im_warped_pixbuf[MAIN_WIN]= gdk_pixbuf_new(GDK_COLORSPACE_RGB,//GdkColorspace colorspace, TRUE,//gboolean has_alpha, 8,//int bits_per_sample, w,h);//int width, int height); #else create__pixbuf(MAIN_WIN, PIXWARPED); dpb = sp-> im_warped_pixbuf[MAIN_WIN]; #endif } guchar *ddata = gdk_pixbuf_get_pixels(dpb); guint drowstride= gdk_pixbuf_get_rowstride (dpb) ; guint dchannels= gdk_pixbuf_get_n_channels(dpb); guint i,j; double val; int v; guint dps[max_win+1]; long dp=0; /* data position */ //we clear the old image gdk_pixbuf_clear(dpb); //FIXME for ( lp =max_win ; lp >= 1 ; lp--) if (data[lp] != NULL) if( dchannels != channels[lp] ) { show_error( _("the input images have different numbers of channels: cannot blend")); return; } for( j=0; j< h ; j++) { dp= drowstride * j; for ( lp =max_win ; lp >= 1 ; lp--) if (data[lp] != NULL) dps[lp]=rowstride[lp] * j; /* this interpolates also the alpha value, if any */ for( i=0; i< dchannels*w ; i++) { val = 0 ; for ( lp =max_win ; lp >= 1 ; lp--) { if (data[lp] != NULL) { val += fact[lp] * (double) (data[lp])[dps[lp] + i ] ; }} /* FIXME if the image is not 8 bit */ v=round_and_dither(val); ddata[dp + i] = CLAMP(v, 0, 255); } } #if HAVE_WAILI if( settings_get_value ("wavelet equalization")) { g_message("wavelet equalization"); wavelet_equalize(dpb,l2_average_stat); } #endif } } #ifndef IS_PLYMORPH render_pixmap(MAIN_WIN, PIXWARPED); set_editview(MAIN_WIN, settings_get_value( "show warp after warp")); #endif MY_GTK_DRAW(sp->im_widget[MAIN_WIN] ); } void do_mesh_factors_equal() { int lp; for ( lp =1; lp <= MAX_WINS; lp++) if( sp->im_widget[lp] != NULL) sp->mf.im_warp_factor[lp]=1.0/ (double)sp->max_wins; } /* ********************************************************************** ************** resulting image, spinbuttons ******************** ********************************************************************** */ #include "movies.h" void on_resulting_apply_clicked (GtkButton *button, gpointer user_data) { double w=sp->resulting_width,h=sp->resulting_height ; sp->resulting_width = sp->resulting_width_sp; sp->resulting_height = sp->resulting_height_sp; { GtkWidget* hb= lookup_widget ( sp->im_widget[MAIN_WIN] , "handlebox_res_size"); g_assert(hb); gtk_widget_hide(hb); } int lp; #ifndef IS_PLYMORPH #ifdef ANIMATE_INTERNALLY int movie_pixmap_free(); #endif for( lp =1; lp <= MAIN_WIN; lp++) if ( sp->im_widget[lp] ) { destroy_image_win_pixbufs(lp,1); //alloc_image_win_data(lp,1); { int j ; for (j=2;j>=1;j--) { create__pixbuf(lp,j); // can't do this now-- need a window --create__pixmap(lp,j); }} { int j ; for (j=2;j>=1;j--) { // do this now-- need a window -- create__pixmap(lp,j); } } subimage2affines(lp); reload_and_scale_image(lp); meshScaleFreeformat( &(sp->im_mesh[lp]), (double)sp->resulting_width/w, (double)sp->resulting_height/h); } guide_callback("resulting size",MAIN_WIN); #endif for( lp =1; lp <= MAIN_WIN; lp++) if ( sp->im_widget[lp] ) { drawingarea_configure(lp); MY_GTK_DRAW( sp-> im_widget[lp]); } } void spinbutton_res_set() { GtkWidget *widget=lookup_widget(sp->im_widget[MAIN_WIN], "spinbutton_reswidth"); gtk_spin_button_set_value (GTK_SPIN_BUTTON(widget), sp->resulting_width_sp ); widget=lookup_widget(sp->im_widget[MAIN_WIN],"spinbutton_resheight"); gtk_spin_button_set_value (GTK_SPIN_BUTTON(widget), sp->resulting_height_sp ); } void on_spinbutton_reswidth_changed (my_GtkSpinButton *spinbutton,//GtkEditable *editable, gpointer user_data) { // GtkSpinButton *spin = GTK_SPIN_BUTTON (editable); sp->resulting_width_sp =gtk_spin_button_get_value_as_float (spinbutton); } void on_spinbutton_resheight_changed (my_GtkSpinButton *spinbutton,//GtkEditable *editable, gpointer user_data) { // GtkSpinButton *spin = GTK_SPIN_BUTTON (editable); sp->resulting_height_sp =gtk_spin_button_get_value_as_float (spinbutton); } void on_double_size_clicked (GtkButton *button, gpointer user_data) { if( sp->resulting_height_sp <= 5000 && sp->resulting_width_sp <= 5000 ) { sp->resulting_height_sp *= 2; sp->resulting_width_sp *=2; spinbutton_res_set(); MY_GTK_DRAW( sp-> im_widget[MAIN_WIN]); } } void on_halve_size_clicked (GtkButton *button, gpointer user_data) { if( sp->resulting_height_sp > 8 && sp->resulting_width_sp > 8 ) { sp->resulting_height_sp /= 2; sp->resulting_width_sp /= 2; spinbutton_res_set(); MY_GTK_DRAW( sp-> im_widget[MAIN_WIN]); } } /*********************************************************************** ********************************************************************** image windows callbacks note: many callbacks are shared with the "resulting image window" ********************************************************************** */ gboolean on_image_win_1_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); #ifndef IS_PLYMORPH mag_xy_track(MAIN_WIN,0,0); #endif destroy_image_win_data(i); sp->mf.im_warp_factor[i]=0; sp->mf.im_dissolve_factor[i]=0; return FALSE; } gboolean on_diff_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); destroy_image_win_data(i); sp->mf.im_warp_factor[i]=0; sp->mf.im_dissolve_factor[i]=0; return FALSE; } void on_load_example_session_activate (GtkMenuItem *menuitem, gpointer user_data) { int lp; for(lp=1;lp<=MAX_WINS; lp++) { if( sp->im_widget[lp] && #ifdef IS_PLYMORPH sp->im_ply_labels_unsaved[lp] #else sp->im_mesh[lp].changed>0 #endif ) { show_error(_("Loading the example session may ruin your current session. Please properly save all meshes and retry.")); return; } } gchar *P=NULL; #ifdef __WIN32__ extern gchar *program_install_dir; gchar *pp[]={".",program_install_dir,NULL}; gchar *ee[]={"example/ad/gtkmorph.session", "example/AD/gtkmorph.session",NULL}; lp=0; int le=0; while(P == NULL && ee[le]) { while(P == NULL && pp[lp]) { if(P==NULL) { P= g_build_filename(pp[lp],ee[le],NULL); if(!g_file_test(P, G_FILE_TEST_IS_REGULAR)) { g_free(P);P=NULL; } } lp++; } le++; } #else if(P==NULL && g_file_test(DATADIR "/" PACKAGE "/example/AD/gtkmorph.session", G_FILE_TEST_IS_REGULAR)) P=g_strdup(DATADIR "/" PACKAGE "/example/AD/gtkmorph.session"); if(P==NULL) { gchar *s; if(g_file_test("/etc/debian_version", G_FILE_TEST_IS_REGULAR)) s=g_strdup_printf(_("The 'example' directory should be in '%s' but is not.\nInstall the 'gtkmorph-example' debian package."), DATADIR "/" PACKAGE ); else s=g_strdup_printf(_("The 'example' directory should be in '%s' but is not."), DATADIR "/" PACKAGE); show_error(s); g_free(s); } #endif if(P) { g_debug("loading example session from '%s'",P); load_session(0,P); g_free(P); } else g_warning("could not locate example session!"); } xmorph-20140707+nmu2/gtkmorph/feature.c0000664000000000000000000003377112356304631014512 0ustar #ifdef HAVE_CONFIG_H # include #endif #include "stdio.h" #include #ifdef USE_IMLIB #include #else #include #endif #include "support.h" #include "gtk-meta.h" #include "main.h" #include "utils.h" #include "colors.h" #include "interface.h" #include "string.h" #include "feature.h" /********************************************************** FEATURES */ // to change from feature_n to feature_gc you have to add 2 // to change from feature_n to mesh label you have to add 1 #define FEAT_COLOR_SIZE 24 gboolean on_feat_drawinga_expo(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { GdkGC *gc; GdkDrawable *d=widget->window; gc=user_data; gdk_gc_set_clip_rectangle (gc, &event->area); gdk_draw_rectangle (d, gc, 1,0,0,FEAT_COLOR_SIZE,FEAT_COLOR_SIZE); //gdk_draw_line (d,widget->style->white_gc, //2,2,FEAT_COLOR_SIZE,FEAT_COLOR_SIZE); gdk_gc_set_clip_rectangle (gc, NULL); return TRUE; } /*********** adds widget in the combo ****************/ void feat_widget_add(gchar *t,GtkCombo *combo, GdkGC *gc) { GtkWidget *item, *hbox, *label, *d; g_return_if_fail(gc); g_return_if_fail(combo); g_return_if_fail(t); item = gtk_list_item_new(); gtk_widget_show (item); hbox = gtk_hbox_new (FALSE, 4); gtk_container_add (GTK_CONTAINER (item), hbox); gtk_widget_show (hbox); d=gtk_drawing_area_new(); gtk_drawing_area_size(GTK_DRAWING_AREA(d),FEAT_COLOR_SIZE,FEAT_COLOR_SIZE); gtk_widget_show (d); gtk_box_pack_start (GTK_BOX (hbox), d, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (d), "expose_event", GTK_SIGNAL_FUNC (on_feat_drawinga_expo), gc); label = gtk_label_new (t); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); /* You must set the string to display in the entry field when the item is selected. */ gtk_combo_set_item_string (GTK_COMBO (combo), GTK_ITEM (item), t); /* Now we simply add the item to the combo's list. */ gtk_container_add (GTK_CONTAINER (GTK_COMBO (combo)->list), item); } static gchar *feature_array[100]; int feature_n=-10; static int feature_last_n=-10; static int feature_len=0; /********************************************/ /* cache, sort of */ static GtkEditable *combo_entry_feature_itself=NULL; GtkEditable * combo_entry_lookup() { if(NULL==combo_entry_feature_itself) combo_entry_feature_itself=GTK_EDITABLE (lookup_widget(sp->im_widget[MAIN_WIN], "combo_entry_feature")); return combo_entry_feature_itself; } /* cache, sort of */ static GtkCombo *combo_feature_itself=NULL; GtkCombo * combo_lookup() { if(NULL==combo_feature_itself) combo_feature_itself=GTK_COMBO (lookup_widget(sp->im_widget[MAIN_WIN], "combo_feature")); return combo_feature_itself; } static void _remove(GtkWidget *widget, gpointer data) { GtkContainer * con=data; gtk_container_remove(con,widget); } void feature_init() { GtkCombo *combo=combo_lookup(); GList* ch=gtk_container_get_children (GTK_CONTAINER (combo->list)); if(0list),_remove, GTK_CONTAINER(combo->list)); g_critical("a. fix combo glade"); } g_list_free(ch); } /* cache, sort of */ static GtkWidget *dac_itself=NULL; GtkWidget * dac_lookup() { if(NULL==dac_itself) dac_itself=lookup_widget(sp->im_widget[MAIN_WIN], "drawingarea_color"); return dac_itself; } /********************************************/ void sensitivity() { GtkWidget * w=sp->im_widget[MAIN_WIN]; set_sensitive(lookup_widget(w,"delete_feature"),(feature_n>=0)); set_sensitive(lookup_widget(w,"pack_feature"),(feature_n>=0)); set_sensitive(lookup_widget(w,"unpack_feature"),(feature_n>=0)); set_sensitive(lookup_widget(w,"rename_feature"),(feature_n<0)); } gboolean on_drawingarea_color_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { GdkGC *gc; if(feature_n>=0) gc=features_gc[feature_n+2]; else gc=widget->style->black_gc; return on_feat_drawinga_expo(widget,event,gc);; } /******* sets the current feature to number n ********/ void feat_entry_set(int n) { gint position=0; gchar *t; GtkEditable *e=combo_entry_lookup(sp->im_widget[MAIN_WIN]); g_return_if_fail(e ); g_return_if_fail(n>=0); while(n>=feature_len ) if(!add_feature(NULL)) break; if(n>=feature_len) t=_("(unavailable feature name)"); else { t=feature_array[n]; feature_n=n; } sensitivity(); gtk_editable_delete_text (e,0,-1); gtk_editable_insert_text (e,t,strlen(t),&position); MY_GTK_DRAW(dac_lookup()); } int feat_string_find(gchar *t) { int lp=0; for(;lp=0) /*cant re-add the same or an already existing one!*/ { gdk_beep(); return FALSE;} } if(feature_array[i]) { g_free(feature_array[i]); } feature_array[i]=g_strdup(t); { GList* ch=gtk_container_get_children (GTK_CONTAINER (combo->list)); GList *li=g_list_nth(ch,i); if(! li) return FALSE; { GtkWidget *item=li->data; GtkWidget *hbox=GTK_BIN(item)->child; GList* chhbox=gtk_container_get_children (GTK_CONTAINER (hbox)); GList *lili=g_list_nth(chhbox,1); if(!lili)return FALSE; { GtkLabel *label=lili->data; gtk_combo_set_item_string (combo, GTK_ITEM (item), t); gtk_label_set_text(label,t); } g_list_free(chhbox); } g_list_free(ch); } return TRUE; } void on_combo_entry_feature_activate (GtkEditable *editable, gpointer user_data) { GtkCombo *combo=combo_lookup(GTK_WIDGET(editable)); gchar* t=gtk_editable_get_chars (editable, 0,// gint start_pos, -1);// gint end_pos); // WHY??? //gtk_combo_disable_activate (combo); if(feature_last_n>=0 && feature_last_nim_widget[MAIN_WIN] , NULL); } void on_rename_feature_clicked (GtkButton *button, gpointer user_data) { GtkCombo *combo=combo_lookup(GTK_WIDGET(button)); GtkEditable *entry=combo_entry_lookup(GTK_WIDGET(button)); g_assert(entry && combo); { gchar* t=gtk_editable_get_chars (entry, 0,// gint start_pos, -1);// gint end_pos); if(feature_last_n>=0 && feature_last_n=0) { feature_last_n=feature_n; } sensitivity(); MY_GTK_DRAW(dac_lookup()); //gtk_widget_draw(dac_lookup(GTK_WIDGET(editable)),NULL); //printf("CHANGED %d %d\n",feature_n,feature_last_n); } gboolean add_feature(gchar *t) { GtkCombo *combo=combo_lookup(sp->im_widget[MAIN_WIN]); gchar *tc=NULL; if (feature_len>= features_max_n) return FALSE; if(feature_len<0) feature_len=0; if(!t) tc=t=g_strdup_printf("%s %d",_("feature"),feature_len); feature_array[feature_len] = g_strdup(t); feat_widget_add(t,combo,features_gc[feature_len+2]); feature_len++; if(feature_n<0) feat_entry_set(feature_len-1); //gtk_widget_draw (sp->im_widget[MAIN_WIN] , NULL); if(tc) g_free(tc); return TRUE; } void on_new_feature_clicked (GtkButton *button, gpointer user_data) { gchar* t; //GtkCombo *combo=combo_lookup(GTK_WIDGET(button)); GtkEditable *entry=combo_entry_lookup(GTK_WIDGET(button)); if(!entry || feature_len<0 || feat_entry_find(GTK_WIDGET(button))>=0) t=g_strdup_printf("%s %d",_("feature"),feature_len); else t=gtk_editable_get_chars (entry, 0,// gint start_pos, -1);// gint end_pos); if(!add_feature(t)) gdk_beep(); else { //gtk_widget_draw (sp->im_widget[MAIN_WIN] , NULL); feat_entry_set(feature_len-1); } } void on_delete_feature_clicked (GtkButton *button, gpointer user_data) { GtkCombo *combo=combo_lookup(GTK_WIDGET(button)); // WE JUST DELETE THE LAST ONE // OTHERWISE IT MESSES THE ORDER OF COLORS int N= feature_len-1; //N=feature_n if(N>=0 &&feature_len>0 ) { //int lp=feature_len; feature_len--; if(feature_n>=feature_len) feature_n=feature_last_n=-1; //for(;lp<=feature_len;lp++) // feature_array[lp]= feature_array[lp+1]; { GList* ch=gtk_container_children (GTK_CONTAINER (combo->list)); g_return_if_fail(ch ); { GList* li=g_list_nth(ch,N); g_return_if_fail(li ); gtk_container_remove (GTK_CONTAINER(combo->list), li->data); } g_list_free(ch); } //gtk_widget_draw (sp->im_widget[MAIN_WIN] , NULL); } else { feature_n=feature_last_n=-1; gdk_beep(); } } void on_pack_feature_clicked (GtkButton *button, gpointer user_data) { int lp=MAIN_WIN,xi,yi; if(feature_n<0) {gdk_beep();return;} for(; lp>=0; lp--) { if ((settings_get_value("mesh auto sync") || lp==MAIN_WIN) && sp->im_widget[lp] != NULL) { MeshT *mesh=&sp->im_mesh[lp]; for(xi=0; xi < mesh->nx; xi++) { for(yi=0; yiny; yi++) { if( meshGetLabel(mesh,xi,yi)==-1) meshSetLabel(mesh, xi,yi, feature_n+1); }} //gtk_widget_draw (sp->im_widget[lp] , NULL); } } } void on_unpack_feature_clicked (GtkButton *button, gpointer user_data) { int lp=MAIN_WIN,xi,yi; if(feature_n<0) {gdk_beep();return;} for(; lp>=0; lp--) { if ((settings_get_value("mesh auto sync") || lp==MAIN_WIN) && sp->im_widget[lp] != NULL) { MeshT *mesh=&sp->im_mesh[lp]; for(xi=0; xi < mesh->nx; xi++) { for(yi=0; yiny; yi++) { if( meshGetLabel(mesh,xi,yi)==(feature_n+1)) meshSetLabel(mesh, xi,yi, -1); }} //gtk_widget_draw (sp->im_widget[lp] , NULL); } } } void on_color_feature_clicked (GtkButton *button, gpointer user_data) { if(feature_n>=0) { GtkWidget *csd=create_colorselectiondialog (); gtk_widget_show(csd); gtk_object_set_data(GTK_OBJECT (csd), "GC", &(features_gc[feature_n+2])); } else gdk_beep(); } void on_ok_button_color_clicked (GtkButton *button, gpointer user_data) { //GdkGC *gc=user_data; //GdkGC *gc=gtk_object_set_data_top (GTK_OBJECT (button), "GC"); GtkColorSelectionDialog *csd=GTK_COLOR_SELECTION_DIALOG (lookup_widget (GTK_WIDGET(button), "colorselectiondialog")); if(feature_n>=0) { #if GTK_MAJOR_VERSION < 2 //gdouble c[6]; //gtk_color_selection_get_color (csd->colorsel,c); show_warning(_("sorry this functions is as yet unimplemented")); #else GdkColor color; gtk_color_selection_get_current_color(csd->colorsel, &color); if(gdk_colormap_alloc_color (gdk_colormap_get_system (), & color,FALSE ,TRUE)) { gdk_gc_set_foreground ( features_gc[feature_n+2], &color); MY_GTK_DRAW(dac_lookup()); } GtkWidget *csd=lookup_widget(button,"colorselectiondialog"); if(csd) gtk_widget_destroy(csd); #endif } else gdk_beep(); } void feature_save(FILE *f) { int lp; for(lp=0;lp\n%d %d %d\n\n" */ /* color.red,color.green,color.blue) */ fprintf(f,"\n%s\n\n", feature_array[lp]); } } static inline void de_n(char *s) { int l=strlen(s); if(s[l-1]=='\n') s[l-1]=0; } void feature_load(FILE *f) { int lp; GtkCombo *combo=combo_lookup(); gchar s[401]; s[0]=0; for(lp=0;;lp++) { if(feof(f)) break; fgets(s,400,f); de_n(s); if(0==strcmp(s,"")) break; if(0!=strcmp(s,"")) { g_warning("malformed session: '%s' is not an opening tag in features",s); break; } fgets(s,400,f); de_n(s); if(lp")) { g_warning("malformed session: '%s' is not a closing tag for ",s); break; } } if(lp>feature_len) feature_len=MIN(features_max_n-1,lp); feat_entry_set(0); } xmorph-20140707+nmu2/gtkmorph/gtktopdata.c0000664000000000000000000000210212356304631015201 0ustar #include "stdio.h" #include //#include //#include "callbacks.h" //#include "interface.h" //#include "support.h" //#include "main.h" #include "gtktopdata.h" void gtk_widget_set_data_top(GtkWidget *widget, const char *key, gpointer data) { GtkWidget * father_window= gtk_widget_get_toplevel (widget); g_assert(father_window != NULL); g_assert(key != NULL); gtk_object_set_data (GTK_OBJECT(father_window), key, data); } gpointer gtk_widget_get_data_top (GtkWidget *widget, const char *key) { gpointer data; GtkWidget * father_window= gtk_widget_get_toplevel (widget); g_assert(father_window!= NULL); g_assert(key != NULL); data = gtk_object_get_data (GTK_OBJECT(father_window),key); return data; } void gtk_widget_remove_data_top (GtkWidget *widget, const char *key) { GtkWidget * father_window= gtk_widget_get_toplevel (widget); g_assert(father_window!= NULL); g_assert(key != NULL); gtk_object_remove_data (GTK_OBJECT(father_window), key); } xmorph-20140707+nmu2/gtkmorph/callbacks_fs.h0000664000000000000000000000054612356304631015465 0ustar void show_fs(//GtkWidget *widget, char *title /* fileselection title */ #if GTK_MAJOR_VERSION >= 2 , GtkFileChooserAction action #endif ); typedef gboolean (*fileselection_hook_t) (int lp, const char *file); extern fileselection_hook_t fileselection_hook; int type_by_extension (const char *file); void create_fs(); xmorph-20140707+nmu2/gtkmorph/Makefile.in0000664000000000000000000010521312356342010014740 0ustar # Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@ # beginning of file Makefile.conf # # GIMP: Adds GIMP plugin functionality to xmorph. # Also define NEED_GIMP=1. If this is defined, then you may run # xmorph both as a standalone application, and by adding it to your # ~/.gimp/plug-ins directory (usually via a symlink). From what I # understand, this will not work for tkmorph. See GIMPLIBS, below. # # REAL: Size of a "REAL" used by spline code. # Correct value is "double". Do not change. # # RGBA_MESH_WARP: flag to tell RgbaImage to include mesh-based warping # methods. Do not change. # # RGBA_TK: flag to tell RgbaImage to include Tk Photo image code. # DO NOT DEFINE for xmorph. Only define for tkmorph. # Also change the "all" target if RGBA_TK is changed. # # RED_GREEN_COLOR_BLIND: uses blue instead of red for color of # 'destination' mesh lines and points. # # STRDUP_PROTO_BROKEN: For some versions of GNU C, the string.h # header file has an incorrect prototype for strdup. If you # experience problems compiling, related to the strdup prototype, # then define STRDUP_PROTO_BROKEN. # For tkmorph: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRGBA_TK # For colorblind: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRED_GREEN_COLOR_BLIND # For GIMP plugin: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DGIMP -DNEED_GIMP=1 # Broken GNU C: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DSTRDUP_PROTO_BROKEN # Most systems: #DEFINES=-DREAL=double -DRGBA_MESH_WARP VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = README $(srcdir)/../Makefile.conf $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in @COND_GTKMORPH_TRUE@bin_PROGRAMS = gtkmorph$(EXEEXT) @COND_GTKMORPH_TRUE@noinst_PROGRAMS = testfourier$(EXEEXT) subdir = gtkmorph ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) am__gtkmorph_SOURCES_DIST = gtksettings.c gtksettings.h \ gdk-pixbuf-extra.c gdk-pixbuf-extra.h gtk_subimagesel.c \ gtk_subimagesel.h gtktopdata.h gtktopdata.c main.c main.h \ callbacks_main.c callbacks_help.c callbacks_img.c \ callbacks_edit.c callbacks_fs.c callbacks_fs_mesh.c \ callbacks_fs.h callbacks_subimg.c callbacks_subimg.h \ callbacks_warped.c dialogs.c dialogs.h movies.c movies.h \ colors.c colors.h utils.c utils.h utils-mesh.c loadsave.c \ loadsave.h loadsave_mesh.c loadsave_mesh.h settings.c \ settings.h feature.c feature.h guide.c guide_text.c guide.h \ guide_text.h mag.c mag.h mesh-gtk.c mesh-gtk.h gtk-meta.h \ gtk-meta.c affine.h wavelet.cc wavelet.hh fourier.cc \ fourier.hh am__objects_1 = gtksettings.$(OBJEXT) gdk-pixbuf-extra.$(OBJEXT) \ gtk_subimagesel.$(OBJEXT) gtktopdata.$(OBJEXT) am__objects_2 = main.$(OBJEXT) callbacks_main.$(OBJEXT) \ callbacks_help.$(OBJEXT) callbacks_img.$(OBJEXT) \ callbacks_edit.$(OBJEXT) callbacks_fs.$(OBJEXT) \ callbacks_fs_mesh.$(OBJEXT) callbacks_subimg.$(OBJEXT) \ callbacks_warped.$(OBJEXT) dialogs.$(OBJEXT) movies.$(OBJEXT) \ colors.$(OBJEXT) utils.$(OBJEXT) utils-mesh.$(OBJEXT) \ loadsave.$(OBJEXT) loadsave_mesh.$(OBJEXT) settings.$(OBJEXT) \ feature.$(OBJEXT) guide.$(OBJEXT) guide_text.$(OBJEXT) \ mag.$(OBJEXT) mesh-gtk.$(OBJEXT) gtk-meta.$(OBJEXT) am__objects_3 = @COND_WAILI_TRUE@am__objects_4 = wavelet.$(OBJEXT) @COND_FFTW_FALSE@am__objects_5 = fourier.$(OBJEXT) @COND_FFTW_TRUE@am__objects_5 = fourier.$(OBJEXT) am_gtkmorph_OBJECTS = $(am__objects_1) $(am__objects_2) \ $(am__objects_3) $(am__objects_4) $(am__objects_5) gtkmorph_OBJECTS = $(am_gtkmorph_OBJECTS) am__DEPENDENCIES_1 = @COND_GTK2_FALSE@gtkmorph_DEPENDENCIES = $(am__DEPENDENCIES_1) \ @COND_GTK2_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ @COND_GTK2_FALSE@ ../libmorph/libmorph.la ../glade1/interface.o \ @COND_GTK2_FALSE@ ../glade1/support.o $(am__DEPENDENCIES_1) \ @COND_GTK2_FALSE@ $(am__DEPENDENCIES_1) @COND_GTK2_TRUE@gtkmorph_DEPENDENCIES = $(am__DEPENDENCIES_1) \ @COND_GTK2_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ @COND_GTK2_TRUE@ $(am__DEPENDENCIES_1) ../libmorph/libmorph.la \ @COND_GTK2_TRUE@ ../glade2/interface.o ../glade2/support.o \ @COND_GTK2_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_testfourier_OBJECTS = testfourier-testfourier.$(OBJEXT) testfourier_OBJECTS = $(am_testfourier_OBJECTS) testfourier_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) testfourier_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(testfourier_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --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 $@ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(gtkmorph_SOURCES) $(testfourier_SOURCES) DIST_SOURCES = $(am__gtkmorph_SOURCES_DIST) $(testfourier_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(pkgdata_DATA) 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@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ 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@ 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@ CFLAGS_CONF = -DREAL=double -DRGBA_MESH_WARP # # Must have the X libraries: X11, MIT Athena Widgets, X Toolkit, X Misc Utils # # Linux 2.0: must have /usr/X11/lib # or /usr/X11R6/lib explicitly in library search path # # SunOS (pre-Solaris): Might have to use static X libraries because # dynamic X libraries are incomplete. # # Solaris: To link to openwin libraries, add -L/usr/openwin/lib # # IRIX6.2: Need to have -lcvt after -lXt # If you receive an error about an unresolved symbol named # SgCvtCreateConversionContext, you need to include -lcvt. # The cvt library is available in the goldengate.sw.goldengate package # Sun Solaris: #XLIBS=-L/usr/openwin/lib -lXaw -lXmu -lXext -lXt -lX11 # Linux: #XLIBS=-L/usr/X11/lib -lXaw -lXmu -lXext -lXt -lX11 #XLIBS=-L/usr/X11R6/lib -lXaw -lXmu -lXext -lXt -lX11 # SGI IRIX: #XLIBS= -lXaw -lXmu -lXext -lXt -lcvt -lX11 XLIBS = @X_LIBS@ @X_PRE_LIBS@ -lXaw -lXmu -lXext -lXt -lX11 @X_EXTRA_LIBS@ # If you have defined -DGIMP in the DEFINES section, then xmorph will # be built to run both as a standalone application and as a GIMP # plugin. Here, you need to specify the appropriate GIMP libraries. # # Comment out this variable if you have not used -DGIMP. #GIMPLIBS=-L/usr/local/lib -lgimp -lglib #GIMPLIBS=-lgimp -lglib GIMPLIBS = # # Must have the math library (-lm). # # # Linux: Add -ldl if you get link error regarding dlerror, dlopen, or # dlsym # # # FreeBSD: Do not use static libraries, because for some reason they # do not work. # # # SunOS: Use the /usr/lib/debug/malloc.o module if you want to do # memory checking. # Also see the CFLAGS comments about memory checking under SunOS. # # # SGI IRIX: Use -lmalloc to link with their special memory allocation # routines. If you get an error about mallopt being # unresolved, then you will have to link with the libmalloc # shared object. Do this by specifying -lmalloc here. # # -lmalloc_cv has more robust memory checking #NON_GUI_LIBS = -lm #NON_GUI_LIBS = -lm -ldl #NON_GUI_LIBS = -lm /usr/lib/debug/malloc.o #NON_GUI_LIBS = -lm -lmalloc NON_GUI_LIBS = -lm AM_CFLAGS = $(CFLAGS_CONF) someCPPFLAGS = -I../intl $(GDK_PIXBUF_CFLAGS) $(GTK_CFLAGS) -DLOCALEDIR=\"$(localedir)\" -DDATADIR=\"$(datadir)\" @COND_GTK2_FALSE@AM_CPPFLAGS = $(someCPPFLAGS) -I../glade1 @COND_GTK2_TRUE@AM_CPPFLAGS = $(someCPPFLAGS) $(GTHREAD_CFLAGS) -I../glade2 ############################ #this is a sort of extra gtk library # I may decide to compile it as such ... # but now it is too intertwingled with gtkmorph gtkextra = gtksettings.c gtksettings.h \ gdk-pixbuf-extra.c gdk-pixbuf-extra.h \ gtk_subimagesel.c gtk_subimagesel.h \ gtktopdata.h gtktopdata.c #this is the gtkmorph GUI gtkmorphsources = main.c main.h\ callbacks_main.c callbacks_help.c \ callbacks_img.c \ callbacks_edit.c \ callbacks_fs.c callbacks_fs_mesh.c callbacks_fs.h \ callbacks_subimg.c callbacks_subimg.h \ callbacks_warped.c \ dialogs.c dialogs.h \ movies.c movies.h colors.c colors.h \ utils.c utils.h utils-mesh.c loadsave.c loadsave.h \ loadsave_mesh.c loadsave_mesh.h \ settings.c settings.h \ feature.c feature.h \ guide.c guide_text.c guide.h guide_text.h mag.c mag.h \ mesh-gtk.c mesh-gtk.h \ gtk-meta.h gtk-meta.c affine.h # support.c support.h # interface.c interface.h # pixmaps.c pixmaps.h # pixmaps.c pixmaps.h application.hh EXTRA_DIST = mpeg.param utils2_c pkgdata_DATA = mpeg.param #if COND_LIBPLY #p = bind.c bind.h gtk_widget.h gtk_widget.c #else p = @COND_WAILI_FALSE@w = #endif @COND_WAILI_TRUE@w = wavelet.cc wavelet.hh @COND_WAILI_FALSE@wl = @COND_WAILI_TRUE@wl = -lwaili gtkmorph_SOURCES = $(gtkextra) $(gtkmorphsources) $(p) $(w) $(f) testfourier_SOURCES = testfourier.cc #testfourier_CFLAGS = -g testfourier_CXXFLAGS = -g -Wall #there is a backup for lib_fftw @COND_FFTW_FALSE@f = fourier.cc fourier.hh @COND_FFTW_TRUE@f = fourier.cc fourier.hh @COND_FFTW_FALSE@fl = @COND_FFTW_TRUE@fl = -lfftw3 testfourier_LDADD = $(GTK_LIBS) $(GDK_PIXBUF_LIBS) $(fl) @COND_GTK2_FALSE@gtkmorph_LDADD = $(GTK_LIBS) $(GDK_PIXBUF_LIBS) $(INTLLIBS) \ @COND_GTK2_FALSE@ $(NON_GUI_LIBS) ../libmorph/libmorph.la \ @COND_GTK2_FALSE@ ../glade1/interface.o ../glade1/support.o $(wl) $(fl) # HACK $(GTHREAD_LIBS) @COND_GTK2_TRUE@gtkmorph_LDADD = $(GTK_LIBS) $(GTHREAD_LIBS) $(GDK_PIXBUF_LIBS) $(INTLLIBS) \ @COND_GTK2_TRUE@ $(NON_GUI_LIBS) ../libmorph/libmorph.la \ @COND_GTK2_TRUE@ ../glade2/interface.o ../glade2/support.o $(wl) $(fl) all: all-am .SUFFIXES: .SUFFIXES: .c .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.conf $(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 gtkmorph/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu gtkmorph/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; $(srcdir)/../Makefile.conf: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list gtkmorph$(EXEEXT): $(gtkmorph_OBJECTS) $(gtkmorph_DEPENDENCIES) $(EXTRA_gtkmorph_DEPENDENCIES) @rm -f gtkmorph$(EXEEXT) $(CXXLINK) $(gtkmorph_OBJECTS) $(gtkmorph_LDADD) $(LIBS) testfourier$(EXEEXT): $(testfourier_OBJECTS) $(testfourier_DEPENDENCIES) $(EXTRA_testfourier_DEPENDENCIES) @rm -f testfourier$(EXEEXT) $(testfourier_LINK) $(testfourier_OBJECTS) $(testfourier_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks_edit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks_fs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks_fs_mesh.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks_help.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks_img.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks_main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks_subimg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks_warped.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colors.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dialogs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/feature.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fourier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdk-pixbuf-extra.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk-meta.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk_subimagesel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtksettings.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktopdata.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/guide.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/guide_text.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadsave.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadsave_mesh.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mesh-gtk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movies.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/settings.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testfourier-testfourier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils-mesh.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavelet.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(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@ $(am__mv) $(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@ $(am__mv) $(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 $@ $< .cc.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< testfourier-testfourier.o: testfourier.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testfourier_CXXFLAGS) $(CXXFLAGS) -MT testfourier-testfourier.o -MD -MP -MF $(DEPDIR)/testfourier-testfourier.Tpo -c -o testfourier-testfourier.o `test -f 'testfourier.cc' || echo '$(srcdir)/'`testfourier.cc @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testfourier-testfourier.Tpo $(DEPDIR)/testfourier-testfourier.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='testfourier.cc' object='testfourier-testfourier.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testfourier_CXXFLAGS) $(CXXFLAGS) -c -o testfourier-testfourier.o `test -f 'testfourier.cc' || echo '$(srcdir)/'`testfourier.cc testfourier-testfourier.obj: testfourier.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testfourier_CXXFLAGS) $(CXXFLAGS) -MT testfourier-testfourier.obj -MD -MP -MF $(DEPDIR)/testfourier-testfourier.Tpo -c -o testfourier-testfourier.obj `if test -f 'testfourier.cc'; then $(CYGPATH_W) 'testfourier.cc'; else $(CYGPATH_W) '$(srcdir)/testfourier.cc'; fi` @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/testfourier-testfourier.Tpo $(DEPDIR)/testfourier-testfourier.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='testfourier.cc' object='testfourier-testfourier.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testfourier_CXXFLAGS) $(CXXFLAGS) -c -o testfourier-testfourier.obj `if test -f 'testfourier.cc'; then $(CYGPATH_W) 'testfourier.cc'; else $(CYGPATH_W) '$(srcdir)/testfourier.cc'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) 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) set x; \ 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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-pkgdataDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool clean-noinstPROGRAMS 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-pkgdataDATA 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 uninstall-pkgdataDATA # ### ACGM : the project now ignores this variable # # Read the man page for your linker before sending me email about # problems. # # Apollo w/ Domain/OS, BSD: omit XLIBS #LIBS = $(GIMPLIBS) $(NON_GUI_LIBS) #LIBS = # end of file Makefile.conf testfourier_run1: testfourier for i in 200.0 200.2 200.4 200.6 200.8 201.0 201.2 201.4 201.6 201.8 202.0 ; do ./testfourier -c testfourier-2.tif 200 150 testfourier-1.tif $$i 150 /tmp/x_$$i.png ; done # 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: xmorph-20140707+nmu2/gtkmorph/gtk-meta.h0000664000000000000000000000502112356304631014560 0ustar #if GTK_MAJOR_VERSION >= 2 && GTK_MINOR_VERSION >= 4 #define HAVE_GTK_COMBO #endif #if GTK_MAJOR_VERSION >= 2 #define HAVE_GDK_FORMATS #endif #if GTK_MAJOR_VERSION >= 2 && GTK_MINOR_VERSION < 4 typedef enum { GTK_FILE_CHOOSER_ACTION_OPEN, GTK_FILE_CHOOSER_ACTION_SAVE, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER } GtkFileChooserAction; #endif #if GTK_MAJOR_VERSION >= 2 #define MY_GTK_DRAW(A) gdk_window_invalidate_rect((A)->window,NULL,TRUE); #else #define MY_GTK_DRAW(A) gtk_widget_draw((A),NULL); #endif inline static void my_gtk_widget_update_rect (GtkWidget *widget, gdouble x, gdouble y, int span) { static GdkRectangle update_rect; update_rect.x = (long)(x - span); update_rect.y = (long)(y - span) ; update_rect.width = 2*span; update_rect.height = 2*span; #if GTK_MAJOR_VERSION >= 2 gdk_window_invalidate_rect((widget)->window,&update_rect,TRUE); #else gtk_widget_draw (widget, &update_rect); #endif } /**************** VARARG for glib 1.2 ************/ #if GLIB_MAJOR_VERSION == 1 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define G_HAVE_ISO_VARARGS 1 #elif defined (__GNUC__) #define G_HAVE_GNUC_VARARGS 1 #endif #endif /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi * is passed ISO vararg support is turned off, and there is no work * around to turn it on, so we unconditionally turn it off. */ #if __GNUC__ == 2 && __GNUC_MINOR__ == 95 # undef G_HAVE_ISO_VARARGS #endif /**************** g_debug ************/ #ifdef NDEBUG // #ifdef G_HAVE_ISO_VARARGS #define g_debug(...) #elif defined(G_HAVE_GNUC_VARARGS) #define g_debug(format...) #else /* no varargs macros */ static void g_debug (const gchar *format, ...){} #endif // #else // NDEBUG // #ifdef G_HAVE_ISO_VARARGS #define g_debug(...) g_log (G_LOG_DOMAIN, \ G_LOG_LEVEL_DEBUG, \ __VA_ARGS__) #elif defined(G_HAVE_GNUC_VARARGS) #define g_debug(format...) g_log (G_LOG_DOMAIN, \ G_LOG_LEVEL_DEBUG, \ format) #else /* no varargs macros */ static void g_debug (const gchar *format, ...) { va_list args; va_start (args, format); g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format, args); va_end (args); } #endif // #endif // NDEBUG #if GTK_MAJOR_VERSION == 1 #define my_GtkSpinButton GtkEditable #else #define my_GtkSpinButton GtkSpinButton #endif xmorph-20140707+nmu2/gtkmorph/unused.c0000664000000000000000000001740012356304631014351 0ustar /************************** pixbuf <-> r g b * these copy data */ void pixbuf_to_rrrgggbb(GdkPixbuf *pb, guint8 *r, guint8 *g, guint8 *b) /* copy pixbuf data to RGB data for morphing */ { int i,j, width = gdk_pixbuf_get_width(pb), height = gdk_pixbuf_get_height(pb); long //size = width * height, pos=0, dp=0; int rowstride= gdk_pixbuf_get_rowstride (pb) ; guchar *data = gdk_pixbuf_get_pixels(pb); int ch= gdk_pixbuf_get_n_channels(pb); g_assert ( r != NULL); g_assert ( g != NULL); g_assert ( b != NULL); g_assert ( pb != NULL); /* FIXME I am not absolutely sure that the data are RGB with lines strictly packed!! */ g_assert(gdk_pixbuf_get_colorspace(pb) == GDK_COLORSPACE_RGB); g_assert( pb != NULL); for( j=0; j< height ; j++) { dp= rowstride * j; for( i=0; i< width ; i++) { r[pos]= data[dp++]; g[pos]=data[dp++]; b[pos]=data[dp++]; pos++; if (ch==4) dp ++; } } } static void rrrgggbbb_add_to_pixbuf(GdkPixbuf *pb, /* destination */ const guint8 *r, const guint8 *g, const guint8 *b, /* source */ double factor /* dissolving factor */ ) { int i,j, width = gdk_pixbuf_get_width(pb), height = gdk_pixbuf_get_height(pb); long //size = width * height, pos=0, dp=0; guchar *data = gdk_pixbuf_get_pixels(pb); int rowstride= gdk_pixbuf_get_rowstride (pb) ; int ch= gdk_pixbuf_get_n_channels(pb); g_assert ( r != NULL); g_assert ( g != NULL); g_assert ( b != NULL); g_assert ( pb != NULL); /* FIXME I am not absolutely sure that the data are RGB with lines strictly packed!! */ g_assert(gdk_pixbuf_get_colorspace(pb) == GDK_COLORSPACE_RGB); for( j=0; j< height; j++) { dp= rowstride * j; for( i=0; i< width; i++) { data[dp++] += (double)r[pos] * factor; data[dp++] += (double)g[pos] * factor; data[dp++] += (double)b[pos] * factor; pos++; if ( 4 == ch) dp ++; } } } static void pixbuf_add_to_pixbuf(GdkPixbuf *src, GdkPixbuf *dst, double factor /* dissolving factor */ ) { int i,j, d_width = gdk_pixbuf_get_width(dst), d_height = gdk_pixbuf_get_height(dst), s_width = gdk_pixbuf_get_width(src), s_height = gdk_pixbuf_get_height(src); long s=0, d=0; guchar *srcdata = gdk_pixbuf_get_pixels(src); guchar *dstdata = gdk_pixbuf_get_pixels(dst); int s_rowstride= gdk_pixbuf_get_rowstride (src) ; int d_rowstride= gdk_pixbuf_get_rowstride (dst) ; int s_ch= gdk_pixbuf_get_n_channels(src); int d_ch= gdk_pixbuf_get_n_channels(dst); int ii=MIN(s_width,d_width)*MIN(s_ch,d_ch); j=MIN(d_height,s_height); while(j>=0) { for(i=0;i im_mesh[MAIN_WIN].nx, ny=sp-> im_mesh[MAIN_WIN].ny; GdkPixbuf *pb = sp-> im_warped_pixbuf[lp]; MeshT *dstmesh = (&(sp->im_mesh[MAIN_WIN])); /* geometry of the resulting image */ int w=sp->resulting_width, h=sp->resulting_height; long size = w * h ; guint8 * r , *b, *g; r = g_malloc( size ); g = g_malloc( size ); b = g_malloc( size ); if(pb==NULL) { create__pixbuf(lp,PIXWARPED); pb = sp-> im_warped_pixbuf[lp]; } #define warpthis(IN,OUT) \ warp_image_inv_old(IN,OUT, \ sp->resulting_width, sp->resulting_height, \ sp->im_mesh[lp].x, sp->im_mesh[lp].y, \ dstmesh->x, dstmesh->y, \ nx,ny); gdk_pixbuf_clear(pb); if( nx != sp->im_mesh[lp].nx || ny != sp->im_mesh[lp].ny) { show_error (g_strdup_printf (_("\ The image %d has an %ld by %ld mesh while the resulting mesh is %d by %d!\n\ I cant warp it!\n\ I suggest that you add lines so that both meshes are %d by %d"), lp, sp->im_mesh[lp].nx, sp->im_mesh[lp].ny , nx, ny, sp->meshes_x, sp->meshes_y)); } else { warpthis(sp->red[lp], r); warpthis(sp->green[lp], g); warpthis(sp->blue[lp], b); //g_message("writing pixels for %d\n",lp); rrrgggbbb_add_to_pixbuf(pb, r,g,b, 1.0 ); } g_free(r); g_free(g); g_free(b); __after_warp(lp); } /* save also the viewport widget address, so we can resize it easily actually "glade" does the same thing, and I didnt know it */ void on_viewport3_realize (GtkWidget *widget, gpointer user_data) { gtk_widget_set_data_top(widget, "viewport widget", widget); } void on_optionmenu_editview_released (GtkButton *button, gpointer user_data) { /* this signal is (almost) never emitted printf("the choice is %s \n", gtk_widget_get_name(gtk_menu_get_active (GTK_MENU(user_data)))); */ } void on_optionmenu_editview_clicked (GtkButton *button, gpointer user_data) { /* this signal is never emitted printf("the click choice is %s \n", gtk_widget_get_name(gtk_menu_get_active (GTK_MENU(user_data)))); */ } void on_optionmenu_editview_pressed (GtkButton *button, gpointer user_data) { /* this signal is never emitted g_message("at %s %d PRESSED" ,__FILE__ , __LINE__); */ } /********** pixbufs and rr gg bb buffers are alloced here, whilst the im_pixmap_subimage and im_pixwarped are set elsewhere */ void alloc_image_win_data(int lp, int what) { g_assert(what==0 || what == 1); /* there is no image associated to this window */ #ifdef USE_IMLIB sp->im_image[lp]=NULL; sp->im_imlib[lp]=NULL; #endif #ifdef STORE_RRGGBB { long size = sp->resulting_width * sp->resulting_height ; sp->red[lp] = g_malloc( size ); sp->blue[lp] = g_malloc( size ); sp->green[lp] = g_malloc( size ) ; } #endif { int j ; for (j=2;j>=what;j--) { create__pixbuf(lp,j); // can't do this now-- need a window --create__pixmap(lp,j); }} } #if (0) { GtkWidget *b=gtk_button_new_with_label("filter"); GtkWidget *z=gtk_button_new_with_label("che faccio"); //fileselection_g->fileop_dialog=gtk_dialog_new(); g_return_if_fail(fileselection_g->fileop_c_dir); gtk_widget_hide(fileselection_g->fileop_c_dir); //g_return_if_fail(fileselection_g->fileop_dialog); gtk_widget_show(b); gtk_widget_show(z); //gtk_widget_show(fileselection_g->fileop_dialog); gtk_container_add (GTK_CONTAINER (GTK_DIALOG(fileselection_g)->action_area), b); gtk_container_add (GTK_CONTAINER (GTK_DIALOG(fileselection_g)->vbox), z); } // gtk_dialog_has_separator(fileselection_g->fileop_dialog,TRUE); //gtk_dialog_add_button(fileselection_g,"NEW",999); #endif /******************************************************************/ void adjust_point(MeshT *dstmesh, GdkPixbuf *dst , int i) { MeshT *dstmesh=&(sp->im_mesh[i]); GdkPixbuf *dst = (sp->im_subimage_pixbuf[i]); int x,y,dx,dy; int *mi, *mj; long d; GdkModifierType state; gdk_window_get_pointer (event->window, &x, &y, &state); d=meshPointNearest(dstmesh , x,y, //event->x, event->y, //int px, int py, mi, mj, &dx, &dy); gtk_widget_update_rect (widget, x, y,90); } ////////////////////// time /* gchar * elapsed_time_as_string( double secs) */ /* { */ /* int sec= (double)tot / ((double)(tot-ima-1))* */ /* ((double)(aft.tv_usec -bef.tv_usec) /1e6 ); */ /* int min=sec/60; sec= sec % 60; */ /* rem=g_strdup_printf(" %2dm:%02ds",min,sec); */ /* g_get_current_time(&aft); */ /* } */ xmorph-20140707+nmu2/gtkmorph/main.h0000664000000000000000000001231512356304631013777 0ustar #ifndef _XMORPH_GTK_MAIN_H_ #define _XMORPH_GTK_MAIN_H_ #define MAX_WINS 105 #define MAIN_WIN (MAX_WINS+1) extern GtkWidget *menuFile_g; extern GtkWidget *menuEdit_g; extern GtkWidget *menuMorph_g; //extern GtkWidget *menuSettings_g; extern GtkWidget *menuHelp_g; extern GtkFileSelection *fileselection_g; extern int fileselection1_for_image_num_g; extern GtkWidget *dialogwarning_g; /* the text of the warning */ /* extern char dialogwarning_text[]; */ #ifdef HAVE_CONFIG_H # include #endif #if HAVE_LIBPLY_H #include "libply.h" #endif #ifdef IS_PLYMORPH #include #include "libply.h" #include "mytypes.h" #include "topologic.h" #include "eikonal.h" #include "gl-utils.h" #include "bind.h" #include "settings_.h" #else #include "../libmorph/mesh.h" #include "settings.h" #endif #include "gtk_subimagesel.h" /********** the current status is in a "structure of arrays " (see main.h) why not an "array of structures"? because many subroutines work on the arrays, and they would become unnecessarily complicated on the other end, a "array of structures" may be easily modified to add new images... this way, the program will have to be recompiled to add new images; but hopefully MAX_WINS may be set to a value that is sufficient in 99.9% of cases */ typedef struct _morph_factors_t morph_factors_t; struct _morph_factors_t { double im_warp_factor[MAX_WINS+2]; double im_dissolve_factor[MAX_WINS+2]; }; typedef struct _gtkmorph_status_t gtkmorph_status_t; /** affine transforms **/ typedef struct affine_transforms_ affine_transforms; struct affine_transforms_ { double loaded2subimage[6]; double subimage2loaded[6]; }; struct _gtkmorph_status_t { unsigned int max_wins; unsigned int resulting_width; unsigned int resulting_height; /* standard size of meshes; it is augmented when other meshes are loaded */ unsigned int meshes_x; unsigned int meshes_y; /* what is in the spinbuttons */ unsigned int resulting_width_sp; unsigned int resulting_height_sp; /* the filename of the loaded image (or PLY file) */ char *im_filename_in[MAX_WINS+2]; char *im_filename_out[MAX_WINS+2]; char *im_mesh_filename[MAX_WINS+2]; #ifndef IS_PLYMORPH /* the size of the loaded image (and not of the subimage) */ unsigned int im_width[MAX_WINS+2]; unsigned int im_height[MAX_WINS+2]; MeshT im_mesh[MAX_WINS+2]; /* show mesh differences, if this is non null : */ MeshT *im_mesh_diff[MAX_WINS+2]; /* either the above mesh contains a real mesh, or a diff-mesh */ gboolean im_mesh_diff_is_difference_mesh[MAX_WINS+2]; #endif /* is this a usual window, or the simplified window associated to a difference mesh*/ gboolean im_widget_is_difference_mesh[MAX_WINS+2]; morph_factors_t mf; /* record the value of the "edit mesh/ show warp" choice */ editview_t im_editview[MAX_WINS+2]; /** this is the position of the 'eyes&mouth' : 3 points that we use to put all images in the same positions **/ gtk_subimage_sel_t subimasel[MAX_WINS+2]; //private GtkWidget * im_widget[MAX_WINS+2]; GtkWidget * im_drawingarea_widget[MAX_WINS+2]; /* special window for warped images*/ GtkWidget * im_warped_widget[MAX_WINS+2]; /*** this records the settings for the image */ gpointer * im_settings[MAX_WINS+2]; GtkWidget * im_menu_settings[MAX_WINS+2]; /* which image are we displaying? 0 loaded 1 subimage 2 warped */ int which_pix[MAX_WINS+2]; /* affine transformation */ affine_transforms transforms[MAX_WINS+2]; /* stores the loaded PLY surface */ #ifdef IS_PLYMORPH PlySurface im_ply_surface[MAX_WINS+2]; PlySurface im_ply_surface_warped[MAX_WINS+2]; labels_t *im_ply_labels[MAX_WINS+2]; GArray *im_ply_labels_as_array[MAX_WINS+2]; gboolean im_ply_labels_unsaved[MAX_WINS+2]; /* rendering of the PLY has size resulting_width × resulting_height */ GdkPixbuf *im_pixbuf[MAX_WINS+2]; /* backing pixmap of the PLY has size resulting_width × resulting_height */ // GdkPixmap * im_pixmap[MAX_WINS+2]; /* warped flat out version of the image */ GdkPixbuf * im_warped_pixbuf[MAX_WINS+2]; #else /* stores the loaded image, (and not not its subimage). */ /* To save memory, we should not use it , but reload the image when * a new subimage is requested ; see #ifdef RESCALE_RELOAD_LESS_MEM */ GdkPixbuf *im_loaded_pixbuf[MAX_WINS+2]; /* it would have size im_width[lp] × im_height[lp] */ /* and its rendered version */ GdkPixmap *im_loaded_pixmap[MAX_WINS+2]; /* stores the zoomed subimage. has size resulting_width × resulting_height */ GdkPixbuf *im_subimage_pixbuf[MAX_WINS+2]; /* backing pixmap of subimage image has size resulting_width × resulting_height */ GdkPixmap * im_subimage_pixmap[MAX_WINS+2]; /* stores the warped version has size resulting_width × resulting_height */ GdkPixbuf * im_warped_pixbuf[MAX_WINS+2]; /* backing pixmap, the warped version has size resulting_width × resulting_height */ GdkPixmap * im_warped_pixmap[MAX_WINS+2]; #endif } ; //struct gtkmorph_undo { // gtkmorph_status_t undos[1000]; //}; extern gtkmorph_status_t settings, *sp; #endif // _XMORPH_GTK_MAIN_H_ xmorph-20140707+nmu2/gtkmorph/mpeg.param0000664000000000000000000000064712356304631014661 0ustar ### copy this parameter file to the local directory ### if the output name is 'frame' call this file 'frame.param' ### (see the movie help) ### explanation of parameters is in the help of mpeg_encode PATTERN IBBPBBPBBPBBPBB GOP_SIZE 30 #should be a divisor of total height/16 of the image SLICES_PER_FRAME %d PIXEL HALF RANGE 10 PSEARCH_ALG TWOLEVEL BSEARCH_ALG CROSS2 IQSCALE 2 PQSCALE 4 BQSCALE 4 REFERENCE_FRAME DECODED xmorph-20140707+nmu2/gtkmorph/gdk-pixbuf-extra.h0000664000000000000000000000227712356304631016242 0ustar void gdk_pixbuf_clear(GdkPixbuf *pb); /******** measures square distance between images *** * useful for matching subimages */ double long gdk_pixbuf_sqrdist(GdkPixbuf *p1,GdkPixbuf *p2); /*************** gdk_pixbuf_is_subimage () simple test: is one image contained in the other ? */ gboolean gdk_pixbuf_is_subimage (int src_x, int src_y, int width, int height, int dst_width, int dst_height ); /******************************************** gdk_pixbuf_subimage () src_pixbuf : Source pixbuf. src_x : Source X coordinate within src_pixbuf. src_y : Source Y coordinate within src_pixbuf. width : Width of the area to copy. height : Height of the area to copy. returns : subimage pixbuf, or NULL if there is an error This function is similar to gdk_pixbuf_copy_area() but it uses the same buffer as the buffer in src_pixbuf for this reason, the subimage must be contained in the given image */ GdkPixbuf* gdk_pixbuf_subimage (GdkPixbuf *src_pixbuf, int src_x, int src_y, int width, int height); xmorph-20140707+nmu2/gtkmorph/callbacks_img.c0000664000000000000000000001354112356304631015623 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #ifdef USE_IMLIB #include #else #include #endif #include "string.h" //memcpy #include "gtk-meta.h" #include "gtktopdata.h" #include "gtk_subimagesel.h" #include "main.h" #include "utils.h" #include "colors.h" #include "mesh-gtk.h" /******************************************************************** * * input image window, drawingarea * note: many callbacks are shared with the "resulting image window" ****************************************************************** **/ /*************************************************************** * drawing area callbacks *********************************************************** */ void on_drawingarea_realize (GtkWidget *widget, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); /* the drawing area widget will be accessible tru this */ g_return_if_fail(sp->im_drawingarea_widget[i] == widget);//also done in create_and_show_image_win() render_pixmap(i, PIXSUBIMAGE); } /* gboolean */ /* on_drawingarea_configure_event (GtkWidget *widget, */ /* GdkEventConfigure *event, */ /* gpointer user_data) */ /* { */ /* int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); */ /* g_debug(" configure drawingarea %d",i); */ /* // this loops */ /* //`drawingarea_configure(i); */ /* return FALSE; */ /* } */ double transl[6]={1,0,PIXEDITBORDER,0,1,PIXEDITBORDER}, ident[6]={1,0,0,0,1,0}; double loaded[6]; double * matrix_for_image(int i) { double *a=ident; if( sp->im_editview[i]==EDITVIEW_EYES ) { a=loaded; memcpy(a,&sp->transforms[i].subimage2loaded,6*sizeof(double)); a[2]+=PIXLOADEDBORDER; a[5]+=PIXLOADEDBORDER; } if( sp->im_editview[i]==EDITVIEW_EDIT) a=transl; return a; } gboolean on_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); GdkPixmap *pixmap , **pixmap_p=which_pixmap_is_visible(i); g_assert(i > 0); g_assert(pixmap_p); pixmap=*pixmap_p; if(pixmap == NULL) return FALSE; //g_critical("THERE IS NO PIXMAP of type %d for image %d", // sp->which_pix[i],i); // if ( ! mpl_gc) allocate_colors( widget ); if ( ! mpl_gc) { g_critical("colors unavaible: can't draw meshes!"); return FALSE; } /* the gtk+ manual (see "drawing area" section) says we have to:*/ gdk_gc_set_clip_rectangle (widget->style->fg_gc[widget->state], &event->area); // this one flashes too much //gdk_window_clear_area (widget->window, // event->area.x, event->area.y, // event->area.width, event->area.height); /* then we draw...*/ gdk_draw_pixmap(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], pixmap, event->area.x, event->area.y, event->area.x, event->area.y, event->area.width, event->area.height); { double *a=matrix_for_image(i); if(i!=MAIN_WIN) gdk_draw_mesh(widget->window, image_settings_get_value("view original mesh",i), mpl_gc , (image_settings_get_value("view original points",i))? features_max_n:0, features_gc, 0,//image_settings_get_value("view original features",i), &(sp->im_mesh[i]),// MeshT *mesh, //sp->resulting_height, //sp->resulting_width, a ); gdk_draw_mesh(widget->window, image_settings_get_value("view warped mesh",i), widget->style->white_gc , (image_settings_get_value("view warped points",i))? features_max_n:0, features_gc, 0,//image_settings_get_value("view warped features",i), &(sp->im_mesh[MAIN_WIN]),// MeshT *mesh, //sp->resulting_height, //sp->resulting_width, a); if( sp->im_mesh_diff[i]) gdk_draw_mesh_as_arrows( widget->window, widget->style->white_gc , sp->im_mesh_diff[i], &(sp->im_mesh[i]), sp->im_mesh_diff_is_difference_mesh[i], a); } if(image_settings_get_value("view eyes",i)) { gdk_subimagesel_draw( widget->window, &(sp->subimasel[i]), mps_gc); } /* if( sp->im_editview[i]==EDITVIEW_EYES || */ /* sp->im_editview[i]==EDITVIEW_EDIT) */ /* { */ /* a[2]-=PIXLOADEDBORDER; */ /* a[5]-=PIXLOADEDBORDER; */ /* } */ /* if( sp->im_editview[i]==EDITVIEW_EYES || */ /* sp->im_editview[i]==EDITVIEW_EDIT) */ /* { */ /* a[2]-=PIXLOADEDBORDER; */ /* a[5]-=PIXLOADEDBORDER; */ /* } */ /* after that, we */ gdk_gc_set_clip_rectangle (widget->style->fg_gc[widget->state], NULL); return TRUE; } /*****************************************************************************/ void on_settings_clicked (GtkButton *button, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(button),"imagenum")); GtkWidget* m=sp->im_menu_settings[i]; gtk_menu_popup (GTK_MENU(m),//GtkMenu *menu, NULL,//GtkWidget *parent_menu_shell, NULL,//GtkWidget *parent_menu_item, NULL,//GtkMenuPositionFunc func, NULL,//gpointer data, 1,//guint button, 0);//guint32 activate_time); } void on_do_warp_clicked (GtkButton *button, gpointer user_data) { int i= GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(button),"imagenum")); /* geometry of the resulting image */ do_warp_an_image(i); } xmorph-20140707+nmu2/gtkmorph/mag.c0000664000000000000000000001435612356304631013621 0ustar #include #include "gtk-meta.h" #ifdef USE_IMLIB #include #else #include #endif #include "mag.h" #include "main.h" #include "utils.h" #include "colors.h" #include "mesh-gtk.h" #include "interface.h" #include "settings.h" #include "support.h" #include "callbacks.h" /*********************** mag window *****************************/ gint mag_width=0, mag_height=0; double mag_zoom=3; GtkWidget *mag_window=NULL;; gboolean mag_tracking=TRUE; GdkPixmap *mag_pixmap=0; GdkPixbuf *mag_pixbuf=0; GtkWidget *mag_area=NULL; GtkLabel *mag_label=NULL; void mag_draw() { if(!mag_area) return ; gtk_widget_draw(mag_area,NULL); } gint mag_x=0, mag_y=0, mag_source=MAIN_WIN; gint mag_ox=0, mag_oy=0; void mag_pix() { GdkPixbuf **src_p; src_p=which_pixbuf_is_visible(mag_source); mag_ox=(-(mag_x)*mag_zoom+mag_width/2); mag_oy=(-(mag_y)*mag_zoom+mag_height/2); if(!*src_p) return; gdk_pixbuf_scale(*src_p,//const GdkPixbuf *src, mag_pixbuf,//GdkPixbuf *dest, 0,0,//int dest_x, int dest_y, mag_width,//int dest_width, mag_height,//int dest_height, mag_ox,//double offset_x, mag_oy,//double offset_y, mag_zoom,//double scale_x, mag_zoom,//double scale_y, GDK_INTERP_BILINEAR); //GdkInterpType interp_type); mag_draw(); } void mag_xy_track(int i, int x, int y) { //g_debug("mag at %d %d",x,y); if(!mag_area) return ; if( mag_source!=i) {char s[30];sprintf(s,"%d",i); gtk_label_set_text (mag_label,s); } mag_source=i; mag_x=x; mag_y=y; if(sp->im_editview[i]==EDITVIEW_EDIT ) { mag_x-= PIXEDITBORDER; mag_y-= PIXEDITBORDER; } mag_pix(); gtk_widget_draw(mag_area,NULL); } gboolean mag_start_track(int i, GdkEventButton *event) { if(!mag_area) return FALSE; mag_xy_track(i,event->x,event->y); return TRUE; } void mag_track(gint i,GdkEventMotion *event) { GdkModifierType state=event->state;; if(!mag_area) return; if(mag_tracking) { if (event->is_hint) gdk_window_get_pointer (event->window, &mag_x, &mag_y, &state); else { mag_x=event->x; mag_y=event->y; } mag_xy_track(i,mag_x,mag_y); } } void on_mag_spinbutton_activate ( #if GTK_MAJOR_VERSION >= 2 GtkEntry *entry, #else GtkEditable *entry, #endif gpointer user_data) { mag_zoom=gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(entry))/100.; mag_pix(); } void on_mag_spinbutton_changed (GtkEditable *editable, gpointer user_data) { mag_zoom=gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(editable))/100.; mag_pix(); } void on_mag_track_toggled (GtkToggleButton *togglebutton, gpointer user_data) { mag_tracking=gtk_toggle_button_get_active(togglebutton); } gboolean on_mag_drawingarea_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { mag_width=event->width; mag_height=event->height; mag_area=widget; if(mag_pixbuf) gdk_pixbuf_unref(mag_pixbuf); mag_pixbuf=gdk_pixbuf_new(GDK_COLORSPACE_RGB,TRUE,8,mag_width,mag_height); if(mag_source>0 && mag_area) mag_pix(); return TRUE; } gboolean on_mag_drawingarea_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { int i=mag_source; g_return_val_if_fail(i > 0,FALSE); //if ( ! mpl_gc) allocate_colors( widget ); gdk_gc_set_clip_rectangle (widget->style->fg_gc[widget->state], &event->area); gdk_pixbuf_render_to_drawable ( mag_pixbuf,widget->window, sp->im_widget[MAIN_WIN]->style->black_gc, //GdkGC *gc, 0, //int src_x, 0, //int src_y, 0, //int dest_x, 0, //int dest_y, mag_width,mag_height, //width, height, GDK_RGB_DITHER_NORMAL,//GdkRgbDither dither, 0, //int x_dither, 0 ); //int y_dither); { //FIXME the subimage selection is wrong! //double *c=matrix_for_image(i),b[6]; //FIXME the following should be a multiplication double a[6]={mag_zoom,0,mag_ox, 0,mag_zoom,mag_oy }; if(i!=MAIN_WIN) gdk_draw_mesh(widget->window, image_settings_get_value("view original mesh",i), mpl_gc , (image_settings_get_value("view original points",i))? features_max_n:0, features_gc, 0,//image_settings_get_value("view original features",i), &(sp->im_mesh[i]),a);// MeshT *mesh, //mag_height,mag_width, a ); gdk_draw_mesh(widget->window, image_settings_get_value("view warped mesh",i), widget->style->white_gc , (image_settings_get_value("view warped points",i))? features_max_n:0, features_gc, 0,//image_settings_get_value("view warped features",i), &(sp->im_mesh[MAIN_WIN]),a);// MeshT *mesh, // mag_height,mag_width, a ); if( sp->im_mesh_diff[i]) gdk_draw_mesh_as_arrows( widget->window, widget->style->white_gc , sp->im_mesh_diff[i], &(sp->im_mesh[i]), sp->im_mesh_diff_is_difference_mesh[i], a); } if(mag_tracking) { gdk_draw_line (widget->window, widget->style->white_gc , mag_width/2, mag_height/2, mag_width/2+10, mag_height/2+10); gdk_draw_line (widget->window, widget->style->white_gc , mag_width/2, mag_height/2, mag_width/2+5, mag_height/2+2); gdk_draw_line (widget->window, widget->style->white_gc , mag_width/2, mag_height/2, mag_width/2+2, mag_height/2+5); } return FALSE; } void on_show_mag_activate (GtkMenuItem *menuitem, gpointer user_data) { if(!mag_area) create_mag_(); } void on_mag_unrealize (GtkWidget *widget, gpointer user_data) { mag_label=0; mag_area=mag_window=0; } void create_mag_() { mag_window= create_mag(); mag_label=GTK_LABEL(lookup_widget(mag_window,"mag_label")); gtk_widget_show(mag_window); } xmorph-20140707+nmu2/gtkmorph/gtk_subimagesel.h0000664000000000000000000000452112356304631016220 0ustar #ifndef __GTK_SUBIMAGE_SEL_H__ #define __GTK_SUBIMAGE_SEL_H__ #include #include typedef struct gtk_subimage_sel_t_ gtk_subimage_sel_t ; struct gtk_subimage_sel_t_ { /* this is the size of the original image */ unsigned int orig_width; unsigned int orig_height; /** this is the position of the 'eyes&mouth' : 3 points that we use to put all images in the same positions **/ double eyes[3][2]; /* the rectangle in the subimage that is zoomed to resulting_width, resulting_height */ GdkRectangle subimage; //int magic; } ; void gtk_subimasel_save(gtk_subimage_sel_t * sis, FILE *f); int gtk_subimasel_load(gtk_subimage_sel_t * sis, FILE *f); void subimage2affines(int lp); void gtk_subimasel_reset(gtk_subimage_sel_t * sis, unsigned int w, unsigned int h); gboolean gdk_subimagesel_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); gboolean gdk_subimagesel_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data); gboolean gdk_subimagesel_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); gboolean gdk_subimagesel_draw(GdkDrawable *drawable, gtk_subimage_sel_t * sis, GdkGC *mpl_gc); void on_reset_subimage_clicked (GtkButton *button, gpointer user_data); gboolean on_spinbuttonx_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); gboolean on_spinbuttony_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); gboolean on_spinbuttonw_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); gboolean on_spinbuttonh_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); #endif // __GTK_SUBIMAGE_SEL_H__ xmorph-20140707+nmu2/gtkmorph/fourier.hh0000664000000000000000000000036512356304631014700 0ustar #ifdef __cplusplus extern "C" { #endif gboolean detect_translation(GdkPixbuf *src, double sx, double sy, GdkPixbuf *dst, double dx, double dy, // new suggested destination double *nx,double *ny); #ifdef __cplusplus } #endif xmorph-20140707+nmu2/gtkmorph/gdk-pixbuf-extra.c0000664000000000000000000001022112356304631016221 0ustar #include #include #include "gdk-pixbuf-extra.h" #include "string.h" /*************** gdk_pixbuf_is_subimage () simple test: is one image contained in the other ? */ void gdk_pixbuf_clear(GdkPixbuf *pb) { int width = gdk_pixbuf_get_width(pb), height = gdk_pixbuf_get_height(pb); long size = width * height; guchar *data = gdk_pixbuf_get_pixels(pb); memset(data, 0, size * gdk_pixbuf_get_n_channels(pb) ); } /******** measures square distance between images *** * useful for matching subimages */ double long gdk_pixbuf_sqrdist(GdkPixbuf *p1,GdkPixbuf *p2) { int i,j, r1 , r2, w,w1,w2, h,h1,h2, c; int r; double res=0; guchar * d1, * d2; c=gdk_pixbuf_get_n_channels(p1); g_assert (!gdk_pixbuf_get_has_alpha(p1) || !gdk_pixbuf_get_has_alpha(p2) || 8!=gdk_pixbuf_get_bits_per_sample(p2) || 8!=gdk_pixbuf_get_bits_per_sample(p1) || c != gdk_pixbuf_get_n_channels(p2) ); d1=gdk_pixbuf_get_pixels(p1) ; d2=gdk_pixbuf_get_pixels(p2) ; r1= gdk_pixbuf_get_rowstride(p1); r2= gdk_pixbuf_get_rowstride(p2); w1=gdk_pixbuf_get_width(p1); w2=gdk_pixbuf_get_width(p2); h1=gdk_pixbuf_get_width(p1); h2=gdk_pixbuf_get_width(p2); w=MIN(w1,w2); h=MIN(h1,h2); for(j=h; j>=0; j--) for(i=0; i < w*c ; i++){ r=(d1[ i + r1 * j] - d2[ i + r2 * j]); res += r*r; } return res / (double)w / (double)h ; } static void gdk_pixbuf_subimage_GdkPixbufDestroyNotify(guchar *pixels, gpointer data) { gdk_pixbuf_unref( (GdkPixbuf*) data ); } gboolean gdk_pixbuf_is_subimage ( int src_x, int src_y, int width, int height, int dst_width, int dst_height ) { if ( src_x < 0 || src_y < 0 || src_x + width > dst_width || src_y + height > dst_height ) return FALSE; else return TRUE; } /* src_pixbuf : Source pixbuf. src_x : Source X coordinate within src_pixbuf. src_y : Source Y coordinate within src_pixbuf. width : Width of the area to copy. height : Height of the area to copy. returns : subimage pixbuf, or NULL if there is an error This function is similar to gdk_pixbuf_copy_area() but it uses the same buffer as the buffer in src_pixbuf for this reason, the subimage must be contained in the given image */ GdkPixbuf* gdk_pixbuf_subimage (GdkPixbuf *src_pixbuf, int src_x, int src_y, int width, int height) { if( src_pixbuf == NULL) { g_warning( "%s (in %s:%d): %s\n", __FUNCTION__ , __FILE__ , __LINE__ , ( "src_pixbuf is null" )); return NULL; } if ( width < 1 || height < 1 ) { g_warning( "%s (in %s:%d): %s\n", __FUNCTION__ , __FILE__ , __LINE__ , ( "subimage has zero size" )); return NULL; } if ( ! gdk_pixbuf_is_subimage ( src_x, src_y, width, height, gdk_pixbuf_get_width(src_pixbuf), gdk_pixbuf_get_height(src_pixbuf)) ) { g_warning( "%s (in %s:%d): %s\n", __FUNCTION__ , __FILE__ , __LINE__ , ( "subimage is not contained in image" )); return NULL; } { /* bytes per sample */ int b= gdk_pixbuf_get_n_channels(src_pixbuf) * gdk_pixbuf_get_bits_per_sample(src_pixbuf) / 8; /* increment the reference count. this way, we are sure that the buffer will not disappear beneath this pixbuf */ gdk_pixbuf_ref( src_pixbuf); /* the ref count will be decremented when the subimage pixbuf will be destroyed */ return gdk_pixbuf_new_from_data (gdk_pixbuf_get_pixels(src_pixbuf) //+ + gdk_pixbuf_get_rowstride(src_pixbuf) * src_y + src_x * b, gdk_pixbuf_get_colorspace(src_pixbuf), gdk_pixbuf_get_has_alpha(src_pixbuf), gdk_pixbuf_get_bits_per_sample(src_pixbuf), width, height, gdk_pixbuf_get_rowstride(src_pixbuf), //rowstride gdk_pixbuf_subimage_GdkPixbufDestroyNotify, (gpointer)src_pixbuf//gpointer destroy_fn_data ); } } xmorph-20140707+nmu2/gtkmorph/spinbuttons.h0000664000000000000000000000021212356304631015434 0ustar //draw event and expose event are different #if GTK_MAJOR_VERSION < 2 #define __EXPOSE__(A) (A) #else #define __RETURN__(A) (A) #endif xmorph-20140707+nmu2/gtkmorph/gtksettings.h0000664000000000000000000000215312356304631015420 0ustar #define GTKSETTINGS_BLOCKS_SIZE 5 gpointer gtk_settings_alloc(/* template for the settings */ gpointer template[]); /* returns: the menu widget for GUI to the settings */ GtkWidget* gtk_settings_create (/* template for the settings */ gpointer template[], /* actual array that will record the settings; (note that the settings' names are translated using gettext) It must be preallocated by using the above routine */ gpointer *settings, /* the callback that is called when any menu item is changed by the user*/ void (*callback)(GtkWidget* thismenuitem, gpointer userdata), gpointer userdata ); /* there is also a callback that will be called (if non NULL) when the user changes a setting; it is of form void callback(); and is the first element of the template. */ //static inline int gtk_settings_get_value(char *name,gpointer thesettings[]); //static inline int gtk_settings_set_value(char *name,gpointer thesettings[], int value); void gtk_settings_set_sensitive(char *name,gpointer thesettings[], gboolean value); xmorph-20140707+nmu2/gtkmorph/colors.h0000664000000000000000000000041112356304631014346 0ustar /* color for selected points */ extern GdkGC *mps_gc; /* color for resulting points */ extern GdkGC *mpr_gc; /* color for mesh lines */ extern GdkGC *mpl_gc; extern int features_max_n; extern GdkGC *features_gc[]; void allocate_colors(GtkWidget * widget); xmorph-20140707+nmu2/gtkmorph/loadsave.h0000664000000000000000000000135212356304631014650 0ustar /* load/save hooks */ gboolean save_session(int lp, const char *file); gboolean load_session(int lp, const char *file); gboolean save_as_ppm(gchar *file,GdkPixbuf * pb); gboolean save_image_to_file(int lp, const char *file); gboolean save_pixbuf_to_file(const char *file, GdkPixbuf * pb); static inline gchar *extension(const gchar *file ) { int len=strlen(file); len--; while(len>0) { if(file[len]=='.') return ((gchar *)file)+len+1; len--; } return NULL; } static inline int cmp_extension(const gchar *file, const gchar *ext) { int len=strlen(file), l=strlen(ext); if(len #endif #include #include #include #include #include #include #include "gtk-meta.h" #ifdef USE_IMLIB #include #else #include #endif #include "gtktopdata.h" #include "gtksettings.h" #include "settings.h" //#include "callbacks.h" //#include "interface.h" #include "support.h" #include "main.h" #include "utils.h" void gtkmorph_settings_callback(GtkWidget* thismenu, gpointer userdata) { #if HAVE_WAILI extern int wavelet_depth; extern double wavelet_equalization_factor; wavelet_equalization_factor =0.5 * settings_get_value("wavelet equalization"); wavelet_depth=settings_get_value("wavelet depth")+1; #endif /* if the meshes do not have the same sizes, something will crash */ if (settings_get_value("mesh auto sync")) promote_meshes(); #ifndef IS_PLYMORPH smooth_idle_stop(); if (settings_get_value("preserve border")){ int lp=MAX_WINS; for(; lp>=0; lp--) if(sp->im_widget[lp] != NULL && sp->im_mesh[lp].x != NULL) { meshFunctionalize(&sp->im_mesh[lp], sp->resulting_width,sp->resulting_height); /* meshSet(&sp->im_mesh[lp],0,0,0,0); */ /* meshSet(&sp->im_mesh[lp],sp->im_mesh[lp].nx-1,sp->im_mesh[lp].ny-1, */ /* sp->resulting_width,sp->resulting_height); */ }} #endif set_state(); } /* trick, so these get in the po files */ #ifdef ENABLE_NLS #undef _ #define _(S) (S) #endif extern char * resample_array_inv_names[] ; extern char * smooth_mesh_energy_names[] ; extern char * wavelet_depths[] ; extern char * wavelet_equalization[] ; //char * wavelet_stat_origin[]=; gpointer *gtkmorph_settings=NULL, gtkmorph_template[] = { //gtkmorph_settings_callback, /****** next*******/ _("no warnings"), //name NULL,//integer value, stored in pointer NULL,//accels _("dont warn, just beep; warnings may be read with 'why the beep' in the 'help' menu"), NULL, /****** next*******/ _("edit features"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels _("permits to add and delete mesh lines, edit features"), NULL, //magic pointer /****** next *****/ _("preserve border"), //name GUINT_TO_POINTER(0),//integer value, stored in pointer NULL,//accels NOW IGNORED _("border points of the mesh are forced to stay on the border of the image"), //tooltip (they are translated below) NULL, //magic pointer /****** next*******/ _("hide unusable"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels _("hide unusable widgets, instead of deactivating them"), NULL, //magic pointer /****** next*******/ _("cursor jump"), //name GUINT_TO_POINTER(0),//integer value, stored in pointer NULL,//accels _("moves the image to recenter the last edited point"), NULL, //magic pointer /****** next *****/ _("mesh cant overlap"), //name GUINT_TO_POINTER(0),//integer value, stored in pointer NULL,//accels NOW IGNORED _("a mesh point cannot enter in a neighbouring cell (this is currently not very well enforced)"), //tooltip (they are translated below) NULL, //magic pointer /****** next *****/ _("use antialiasing warping"), //name GUINT_TO_POINTER(2),//integer value, stored in pointer NULL,//accels NOW IGNORED _("choose antialiasing method that is used when warping: the lanczos kernels are slower, but are necessary if the images have fine or grained textures for animations"), //tooltip (they are translated below) resample_array_inv_names, //magic pointer #if HAVE_WAILI /****** next *****/ _("wavelet equalization"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED _("the averaging of images will lose details; you may enable an enhancing algorithm (based on wavelets)"), //tooltip (they are translated below) wavelet_equalization, //magic pointer /****** next *****/ _("wavelet depth"), //name GUINT_TO_POINTER(2),//integer value, stored in pointer NULL,//accels NOW IGNORED _("this is the depth of the wavelets"), //tooltip (they are translated below) wavelet_depths, //magic pointer #endif /****** next *****/ _("energy for mesh smoothing"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED _("type of energy that is minimized to decide the position of the non-selected mesh points: thin plate energy is better but slower, to speed up use elastic energy when editing meshes"), //tooltip (they are translated below) smooth_mesh_energy_names, //magic pointer /****** next *****/ _("auto point adjust"), //name GUINT_TO_POINTER(0),//integer value, stored in pointer NULL,//accels NOW IGNORED _("adjust the position of a mesh point by comparing this image with the previous one and doing a best match. Achieves sub-pixel precision but may move your point around erratically."), NULL, //magic pointer /****** next *****/ _("mesh factors sum to 1"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED _("always force the mesh factors so that they sum to 1;\n(if not, they are internally renormalized before using)"), //tooltip NULL, //magic pointer /****** next *****/ _("image factors sum to 1"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED _("always force the image factors so that they sum to 1;\n(if not, they are internally renormalized before using)"), //tooltip NULL, //magic pointer /****** next *****/ _("automatic mesh interpolation"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED _("automatically interpolates the resulting mesh when morphing (note that in this case you cannot edit it)" ) , //tooltip NULL, //magic pointer /****** next *****/ _("automatic blending"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED _("automatically blends the images when the image blending factors are changed" ) , //tooltip NULL, //magic pointer /****** next *****/ _("mesh auto sync"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED _("any change (add/del, label/unlabel) to a mesh is replicated"), //tooltip NULL, //magic pointer /****** next *****/ _("warped image in other win"), //name GUINT_TO_POINTER(0),//integer value, stored in pointer NULL,//accels NOW IGNORED _("put warped images in another window"), //tooltip (they are translated below) NULL, //magic pointer /****** next*******/ /* what is shown after a "warp" or "mix" or "morph" button is hit ?*/ _("show warp after warp"), GUINT_TO_POINTER(EDITVIEW_SHOW), NULL, _("switch the input window(s) to the warped image after a warp (overridden by the above)"), //name NULL, /****** next*******/ NULL}; GtkWidget* create_gtkmorph_menuSettings () { g_assert(gtkmorph_settings==NULL); gtkmorph_settings=gtk_settings_alloc(gtkmorph_template); g_assert(gtkmorph_settings); return gtk_settings_create(gtkmorph_template, gtkmorph_settings, gtkmorph_settings_callback,NULL); } int settings_get_value(char *name) { return gtk_settings_get_value(name, gtkmorph_settings); } int settings_set_value(char *name, int val) { return gtk_settings_set_value(name, gtkmorph_settings, val); } /***************************** image pane settings ******************/ void gtkmorph_image_settings_callback(GtkWidget* thismenu, gpointer userdata) { int i= GPOINTER_TO_UINT(userdata); //userdata==gtk_widget_get_data_top(thismenu,"userdata")); g_assert(i>0); if (sp->im_widget[i] && GTK_WIDGET_DRAWABLE(sp->im_widget[i])) { render_pixmap(i, PIXSUBIMAGE); render_pixmap(i, PIXLOADED); } MY_GTK_DRAW(sp->im_widget[i]); } gpointer image_settings_template[] = { //gtkmorph_image_settings_callback, /****** next *****/ _("preserve aspect ratio"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED _("when loading an image, preserve aspect ratio"), //tooltip (they are translated below) NULL, //magic pointer /****** next*******/ _("dim image"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels "", NULL, //magic pointer /****** next*******/ _("view original mesh"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels "", NULL, //magic pointer /****** next *****/ _("view original points"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED "", NULL, //magic pointer /****** next *****/ /* _("view original features"), //name */ /* GUINT_TO_POINTER(1),//integer value, stored in pointer */ /* NULL,//accels NOW IGNORED */ /* "", */ /* NULL, //magic pointer */ /****** next*******/ _("view warped mesh"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels "", NULL, //magic pointer /****** next *****/ _("view warped points"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED "", NULL, //magic pointer /****** next *****/ /* _("view warped features"), //name */ /* GUINT_TO_POINTER(1),//integer value, stored in pointer */ /* NULL,//accels NOW IGNORED */ /* "", */ /* NULL, //magic pointer */ /****** next *****/ _("view eyes"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED "", NULL, //magic pointer // /****** next *****/ /* HACK FIXME : NOW IGNORED */ // "view .../loaded image/subimage/warped image/", //name //GUINT_TO_POINTER(1),//integer value, stored in pointer //NULL,//accels NOW IGNORED //"view warped image instead of original image", //NULL, //magic pointer /****** next *****/ _("mesh is readonly"), //name GUINT_TO_POINTER(1),//integer value, stored in pointer NULL,//accels NOW IGNORED "", NULL, //magic pointer /****** next*******/ NULL}; static void show_diff_set_it (GtkMenuItem *menuitem, gpointer data) { unsigned int d=GPOINTER_TO_INT(data); unsigned int from=d/256, to=d&255; if(sp->im_mesh_diff[from]) meshUnref(sp->im_mesh_diff[from]); //GtkWidget *b=lookup_widget(sp->im_widget[from],"save_diff"); if(to>0) { g_return_if_fail(meshAllocated ( &( sp->im_mesh[to] ))); sp->im_mesh_diff[from] = &( sp->im_mesh[to] ); meshRef(sp->im_mesh_diff[from]); sp->im_mesh_diff_is_difference_mesh[from] = sp->im_widget_is_difference_mesh[to]; //gtk_widget_show(b); } else { sp->im_mesh_diff[from] = NULL; //gtk_widget_hide(b); } MY_GTK_DRAW(sp->im_drawingarea_widget[from]); } static void show_diff_show (GtkMenuItem *menuitem, gpointer data) { unsigned int to , from = GPOINTER_TO_INT(data); GtkWidget *m=create_menu_of_images(from,show_diff_set_it,FALSE); { GtkWidget *i = gtk_separator_menu_item_new (); gtk_widget_show(i);gtk_container_add (GTK_CONTAINER (m), i); i =gtk_menu_item_new_with_label ( _("disable")); gtk_widget_show(i);gtk_container_add (GTK_CONTAINER (m), i); gtk_signal_connect (GTK_OBJECT (i), "activate", GTK_SIGNAL_FUNC (show_diff_set_it ), GINT_TO_POINTER( 256 * from) ); } gtk_menu_popup(m,//GtkMenu *menu, NULL,//GtkWidget *parent_menu_shell, NULL,//GtkWidget *parent_menu_item, NULL,//GtkMenuPositionFunc func, NULL,//gpointer data, 0,//guint button, gtk_get_current_event_time());//guint32 activate_time); } GtkWidget* create_image_menu_settings (int i) { sp->im_settings[i] = gtk_settings_alloc(image_settings_template); g_assert(sp->im_settings[i]); sp->im_menu_settings[i]= gtk_settings_create(image_settings_template, sp->im_settings[i], gtkmorph_image_settings_callback,GINT_TO_POINTER(i)); g_assert(sp->im_menu_settings[i]); { GtkWidget *menuSettings=sp->im_menu_settings[i]; GtkWidget *item; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); item = gtk_menu_item_new_with_label ( _("show mesh difference to...")); //gtk_widget_set_name (item,name); gtk_tooltips_set_tip (tooltips, item, _("show difference between this mesh and another mesh, as white arrows") , NULL); //gtk_widget_ref (item ); gtk_widget_show (item); gtk_container_add (GTK_CONTAINER (menuSettings), item); gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC(show_diff_show ), GINT_TO_POINTER(i)); } return sp->im_menu_settings[i]; } int image_settings_get_value(char *name, int i) { return gtk_settings_get_value(name, sp->im_settings[i]); } int image_settings_set_value(char *name, int i, int value) { return gtk_settings_set_value(name,sp->im_settings[i],value); } xmorph-20140707+nmu2/gtkmorph/callbacks_fs.c0000664000000000000000000002174612356304631015465 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #ifdef USE_IMLIB #include #else #include #endif #include "gtk-meta.h" #include "string.h" //strlen #include "gtktopdata.h" #include "gtk_subimagesel.h" #include "main.h" #include "support.h" #include "interface.h" #include "dialogs.h" #include "loadsave.h" #ifdef IS_PLYMORPH #include "utils__.h" #include "loadsave_ply.h" #else #include "utils.h" #include "loadsave_mesh.h" #endif #include "callbacks_fs.h" fileselection_hook_t fileselection_hook=NULL; /******************************************************************** * * input image window, top bar buttons * note: many callbacks are shared with the "resulting image window" ****************************************************************** **/ /*********************************************************************** load/save interface */ void create_fs() { /*gtk_widget_destroy(imageselection1_g);*/ // I changed idea - the widget is destroyed each and every time if(fileselection_g && GTK_IS_WIDGET (fileselection_g)) gtk_widget_destroy(GTK_WIDGET(fileselection_g)); #ifdef USE_FILE_CHOOSER // this is unfinished work fileselection_g = gtk_file_chooser_dialog_new ("Open File", sp->im_widget[MAIN_WIN], GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); #else fileselection_g = GTK_FILE_SELECTION(create_imageselection1() ); #if GTK_MAJOR_VERSION >= 2 gtk_file_selection_set_select_multiple( fileselection_g,FALSE); #endif #endif gtk_signal_connect (GTK_OBJECT (fileselection_g), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroyed), &fileselection_g); } gboolean on_imageselection1_destroy_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { fileselection_g = NULL; g_message("bye bye"); // this is never called ! return FALSE; } /**************** show file selector if title contains %s ,then %s is substituded by the window name */ void show_fs(//GtkWidget *widget, char *title #if GTK_MAJOR_VERSION >= 2 , GtkFileChooserAction action #endif ) { create_fs(); /* fileselection1_for_image_num_g= */ /* GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); */ g_assert(fileselection1_for_image_num_g > 0 && title ); if( strstr(title,"%s") ) { int j=fileselection1_for_image_num_g; int l=strlen(title); gchar * N=compute_title (j) ; char s[l+50]; sprintf(s,title,N); gtk_window_set_title(GTK_WINDOW (fileselection_g), s); g_free(N); } else gtk_window_set_title(GTK_WINDOW (fileselection_g), title); #if GTK_MAJOR_VERSION >= 2 #ifdef USE_FILE_CHOOSER // unfinished code gtk_file_chooser_set_action( imageselection1_g,action); #else if(action== GTK_FILE_CHOOSER_ACTION_OPEN) gtk_file_selection_hide_fileop_buttons (fileselection_g); else gtk_file_selection_show_fileop_buttons (fileselection_g); #endif #endif gtk_widget_show( GTK_WIDGET(fileselection_g)); } /* currently unused */ static void fileselection_title(char *name) { #ifdef USE_FILE_CHOOSER gtk_file_chooser_set_filename (fileselection_g, name); #else gtk_file_selection_set_filename (fileselection_g, name); #endif } void #ifdef IS_PLYMORPH on_loadply_clicked #else on_loadimage_clicked #endif (GtkButton *button, gpointer user_data) { int i = GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(button),"imagenum")); #ifdef IS_PLYMORPH fileselection_hook=load_ply_from_file; #else fileselection_hook=load_image_from_file; #endif fileselection1_for_image_num_g=i; show_fs(//GTK_WIDGET(button), _("load %s") #if GTK_MAJOR_VERSION >= 2 , GTK_FILE_CHOOSER_ACTION_OPEN #endif ); if (sp->im_filename_in[i] != NULL) gtk_file_selection_set_filename ((fileselection_g), sp->im_filename_in[i] ); else { if(i==MAIN_WIN) i=0; gtk_file_selection_set_filename ((fileselection_g), #ifdef IS_PLYMORPH g_strdup_printf("image%d.ply",i) #else g_strdup_printf("image%d.png",i) #endif ); } } /*****************************************************************************/ #ifdef HAVE_GDK_FORMATS static void add_if_writable (gpointer d, GSList **list) { GdkPixbufFormat *data=d; if (gdk_pixbuf_format_is_writable (data)) *list = g_slist_prepend (*list, data); } GSList *readable_formats = NULL; GSList *writable_formats = NULL; void create_list_of_formats() { if(readable_formats==NULL) { readable_formats =gdk_pixbuf_get_formats (); g_slist_foreach (readable_formats, add_if_writable, &writable_formats); } } // find image type according to extension (if any) int type_by_extension (const char *file) { char *ext=extension(file); gint lp=0; if(writable_formats == NULL) create_list_of_formats(); GSList *F=writable_formats; if(ext) { while(F) { gpointer data=F->data; GdkPixbufFormat *f=data; gchar * type= gdk_pixbuf_format_get_name (f); if (0== strcmp(ext,type)) { return lp; } F=g_slist_next(F); lp++; } { if (0== strcmp(ext,"ppm")) return lp; else return -1; } } return -1; } #endif /*****************************************************************/ #ifdef HAVE_GTK_COMBO void on_image_type_changed (GtkComboBox *C, gpointer user_data) { const char *file= gtk_file_selection_get_filename ( fileselection_g); gint sel = gtk_combo_box_get_active (C); GSList *F=g_slist_nth(writable_formats,sel); GdkPixbufFormat *f; char *type; if (F) { gpointer data=F->data; f=data; type=gdk_pixbuf_format_get_name (f); } else type="ppm"; { int len=strlen(file); len--; while(len>0 && file[len] != '.') len--; if(len>0) { char *f=g_strdup(file),*z; f[len]=0; z=g_strdup_printf("%s.%s",f,type); gtk_file_selection_set_filename ( fileselection_g,z); g_free(z); g_free(f); } } } GtkWidget * create_image_type_combo() { GtkWidget *C=gtk_combo_box_new_text(); GSList *F=writable_formats; while(F) { gpointer data=F->data; GdkPixbufFormat *f=data; gtk_combo_box_append_text(GTK_COMBO_BOX(C),gdk_pixbuf_format_get_name (f)); F=g_slist_next(F); } gtk_combo_box_append_text(GTK_COMBO_BOX(C),"ppm"); gtk_widget_set_name (C,"file_type_combo"); g_signal_connect ((gpointer) C,"changed",on_image_type_changed,NULL); return C; } // set image type according to extension (if any) void combo_set_image_type (GtkComboBox *C,const char *file) { int lp=type_by_extension (file); if(lp>=0) gtk_combo_box_set_active(C,lp); } #endif // HAVE_GTK_COMBO /*****************************************************************/ #ifdef USE_FILE_CHOOSER //unfinished code //GtkDialog *D=GTK_DIALOG(fileselection_g->fileop_dialog); GtkWidget *toggle; toggle = gtk_check_button_new_with_label ("Open file read-only"); gtk_widget_show (toggle); gtk_file_chooser_set_extra_widget (fileselection_g, toggle); #endif void on_save_image_clicked (GtkButton *button, gpointer user_data) { int i = GPOINTER_TO_UINT(gtk_widget_get_data_top(GTK_WIDGET(button),"imagenum")); #ifndef IS_PLYMORPH GdkPixbuf * pb=*(which_pixbuf_is_visible(i)); if( pb ==NULL) { show_error(_("internal error: the image doesnt exist!")); return ; } #endif fileselection1_for_image_num_g=i; show_fs(//GTK_WIDGET(button), #if GTK_MAJOR_VERSION < 2 _( "save %s (only PPM format)") #else _( "save %s") , GTK_FILE_CHOOSER_ACTION_SAVE #endif ); fileselection_hook=save_image_to_file; if(sp-> im_filename_out[i] != NULL) { gtk_file_selection_set_filename(fileselection_g,sp-> im_filename_out[i]); } else { if(sp-> im_filename_in[i] != NULL) { gchar *s = g_strdup_printf("%s_out.ppm",sp-> im_filename_in[i]); gtk_file_selection_set_filename(fileselection_g, s); g_free(s); } else gtk_file_selection_set_filename(fileselection_g, ""); } #ifdef HAVE_GDK_FORMATS if(!writable_formats ) create_list_of_formats(); { GtkWidget *label; GtkWidget *V=gtk_hbox_new(TRUE,4); label = gtk_label_new ("image format: "); #ifdef HAVE_GTK_COMBO GtkWidget *C=create_image_type_combo(); { char *file=gtk_file_selection_get_filename(fileselection_g); combo_set_image_type(GTK_COMBO_BOX(C),file); } gtk_widget_set_data_top (GTK_WIDGET(fileselection_g),"file_type_combo",C); #else //HAVE_GTK_COMBO GtkWidget *C= gtk_label_new ("jpeg,png,ico,ppm"); #endif //HAVE_GTK_COMBO gtk_container_add (GTK_CONTAINER (V),label); gtk_container_add (GTK_CONTAINER (V),C); gtk_container_add (GTK_CONTAINER (GTK_DIALOG(fileselection_g)->vbox),V); gtk_widget_show_all(V); } #endif //HAVE_GTK_FORMATS } xmorph-20140707+nmu2/gtkmorph/testfourier-2.tif0000664000000000000000000001313412356304631016120 0ustar II*Þ€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfS8˜lÁ&“¹äö}? PhT:%G¤RiTºe617œ@éÕ:¥V­W¬VkUºåv½_°Oj› –Íg´ZmV»e¶Ýo¸Flu+Öíw¼^oW»åöýN¹À¯ø<& ‡ÄbqXºfuŒÈdrY<¦W-—¶c³¼æw=ŸÐhtQ ÖM§ÔjuZ½ecK­Ølv[=¦×m ×í÷[½æ÷}¿½îx>'ÇäOø\žg7Ïèt`ü¾—W­×ìvtN×w½ßðxnÏ—ÍçôzhžOW·Ýïø|nS{'Ëí÷ü~~>Ï×÷üÿÀ+ùÀ, ´pÁlÂAP|% ªÃÂÐÌ5 Ê1Ä E¤püIÅLT„ÄÑ\]Ƭ[Æ‘¬lÿFq¼uÇ4sÈ „çÇò#É Ô‹$É’l¾‹¤Ÿ)Ê’«S%ÊÒ̵-¯RĹ/Ì Í/LS,Í3°‹4M“lÜ­L“|å9Ή<ã:ÏÌô‹NóÜý?Ð,û@Д,ßAÐÔM0Q]GÉôm!IÒ’ %JÓÌcKÓTí=Ó”ýEQÆSSRULmPÕUm\ýU•}eY½µi[×ým\וë£]×Ö …TÖc½Ö‘eÙe•fÚ‹·bÚV­¬äYö½µm±͹oÜ ©pÜ—+Mo\×MÔ²Ý]Ýwµ×áyÞŒÛzßʃ{ßWíü˜ª€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfS8˜lÁ&“¹äö}? PhT:%G¤RiTºe617œ@éÕ:¥V­W¬VkUºåv½_°Oj› –Íg´ZmV»e¶Ýo¸Flu+Öíw¼^oW»åöýN¹À¯ø<& ‡ÄbqXºfuŒÈdrY<¦W-—¶c³¼æw=ŸÐhtQ ÖM§ÔjuZ½ecK­Ølv[=¦×m ×í÷[½æ÷}¿½îx>'ÇäOø\žg7Ïèt`ü¾—W­×ìvtN×w½ßðxnÏ—ÍçôzhžOW·Ýïø|nS{'Ëí÷ü~~>Ï×÷üÿÀ+ùÀ, ´pÁlÂAP|% ªÃÂÐÌ5 Ê1Ä E¤püIÅLT„ÄÑ\]Ƭ[Æ‘¬lÿFq¼uÇ4sÈ „çÇò#É Ô‹$É’l¾‹¤Ÿ)Ê’«S%ÊÒ̵-¯RĹ/Ì Í/LS,Í3°‹4M“lÜ­L“zÒgH Q:éDñ=$óäý<¥ ²S5¤ô2QD$ÔT¥9/ó ³N“²??Ïaú“Ó 5AÐhC±õH”ÑH=I¯”•X°R¨å:“PTå OSi5f’Õ)5^Tt]K`!µ]^¼ÕÖ:»X¢õÚIZ×U½iOÖÕ ‰aU O_¤•í‹nYKµ“p«Vb%g$v‚Kt$WTïiZö݇nÛUõçÞ¨r.7ø«ÜÈmØÝÉ`©ÛÉ%À‘a©â(•÷­×ö0€ P8$ „BaP¸+8@ „ŒœdVÅ£Pˆ”R7Æ$8ìŽ@ɤ÷üª?(—Få“ÔÂh–Kfó¹äö}? PhT:%w(”NgTje6O¨TjU9¼:!’ÑdTZÍ·D®ÐæÔYÇD²Ñló¹ÍRÝo¸\nW; Jº^oW»åöý«,4*ýAÂаô ] ÓDÆÐqö)N;'ÌfsY¼äVíxÎètZ=%ó+^Fk‘:6&ƒ‹ŸähzÊ´Æií.÷}¿àI³öÞÇäA÷SíuaÌÔѹóÝ´ûy>êÏzýN^Z Käø|^;ÿ·äôz}TþìÇ›?éÏ=óïÛ³ðe)ž·ïò¿ï\À‰»ÍÀ°L³Ê«¢Õ£ÍCT°5‹SîÛÁ Œ.ëC.Ä6íC¨CD‘+ÕÄÑLUCèSæž¾°t&ÃB¬„Z¶DoêŒþ@ѺoDQ\…!¹1D‰#É |Áð¤"¡Åéäbš;)䀘ʱ™,ÇñÊ/I3 ĸHÓÍ3´È¬¢Êot›I긚Jétæ˜Î©Tî—O(4Á4P 4¤¸” C©°¼Ö›Í©ušQ³Ô—R´“üíQí<žL´ýEQ¸HlÞÅF²…N×Õ3•.•O©÷XS.^“V(ekRW”5C^Ø ”Ñé"“X©uYVér—Ù©]v“Ú(ýž‹Zvµ#×öݽN°0ƒ[U¹Õkkj¦VÊ7Y×Rkt#V½­oÞ”=»zß5ÃrÎ,EÈø\ÍÍ6³^ÅÜ‹]–vÏ2´-ó‡É7¾!‰ÈWÜÙ€§öJUeÚ˜-FÙô‚áØ¦MbY>UbØÞ0èFuEûGxZ„ÚRÞ ŠÞXD7’åz ”èZ+Ñ–£xâ?$ÚU××Y²œZÚ’ª]9Ö «hÚêý¢kÛ ‹¤!zr5¦$™{¹‘UÛeÏ·f—N¹±n‹ªÐn»ÎƇ¢»2-´$ö¸C\$=Ãmu¦ç½qfï q¼‹9² \/¾›UA¨!yïšë] q|—MsМ÷OÕÜjºË!|?ØjüâÕj}²Üv¼G7 t½g…,)€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=g“ÆHCòˆ\–O,„€@3T i1™ÍàóiÔe=ƒO(ù¼G¤RiTºe67™L pJ}V­W¬VkU¸dæ{*£Ë¨ôJ {džÙ§V‰Õª¡^´Û«—;¥Öíw¹Ô@5;ÅöýÀ`e E‚b¡á(µLM"å0¶b饛‚ÌfsY»¥êùœÐhtZ;A+Ãɬx¬®^׬˜cå™MŽºßŽÛAw:Mæ÷}¿g¨Ü' ØE0ÓÜEŸ“(Ù`ùñþŒi,êǺý Üïßðxk\.Ï‹Íçôu£¹×7_¸ÉôãÞXço©Ýé|"_O÷üÿ«ª‹?@, ˜¹M:ÂÕ1ª;è¾Ï›øí>HìB0´&…Ãp<=·¯$;D‘+C ½‰»ÜÛÁÑ1 £º3 Æ1tg#q’kG‘ìO8qô…!³LRšEi¤iÆÈÄ–GH¼žŒÊ(´¦ŒJ°ä‰-Ë‹Ì,˳ ÄÁ¡:a$²Ä¡&ÊST©6JÓt±8"²º/0!³¤Ç=ψ”E>Ð ”LÉdÐÙÎS¼ô‰ÎÈ´ñ?Q4uH?KmKÓ¬¿IÓ4ìĤmJ^çRµ$ZøÔ¯}N¤Ó”õ]Oõ}eYTTS,µjF¢´z#^"•ò!`"vvœÈ5•@Ö6]@Ö¨ýüÕpmsTZµÂãl'v5Ÿo½mÁqË–Š5iºÔ{]!Ö#÷v!·r#o^7Uƒx@3Íér_Ž%Å~à-ÌŠÝ¥SZí^%^Ö-ð…Æ–N‰À·þ)‹À!‚£·’!}âmßn[xU³UaØ~1•°¶Y—¼8Ò[[å-­›[KnTœasLßæ ¹—hZ+}™ Øãë‘^z!ù¨!Ú–y“á^£kŠn‰®ì Þ5¥Bf?­ º¥õ’g[c%“>ûFù­ê–%ºo k²Eùí¿Z˜No¶î ®å¼ñ.í«qF ¬ažV;³j0Ÿâóž©ëÂw¡ªî[RÆiþÞ×Ìwß}ûOŸÏ}_k´Š{Ðç»ñ{ÿŸãù™÷ó¨ýßí4ûôN« ú?'Vv³ûv®áÑ»¥ ‚õ€F ÕóžLyn ÞÀˆw¤„M¥MÂ8LOˆCñ&°&>h<ù<.„ÆÁG­ _i3…Nþ;hùaü1ˆ0½KCˆ â3Ô*0iç¿vË›ìL´´Ä˜"³Á‰qæÅ(Ÿ¢ŒT‹±ˆ˜J8"Ëý‹¥á6§ÀO ,+ƒçÞ9¡(ꆊB)Œñ²ÂXøû¢ÚkŽèÖA¤É ¡„D+è)™Æˆþö#\sruÈtß%“œ˜QRiIG™C£Ü’‰QúQ=y(Ùää•‘0ÍÔȨe :…!’†RÅ©I-^$§€Ò®XJÙYeü¯ŽÒÆO°AÁ#¥Ã²’3%ºK¢ƒ`dc‡ÓJh¿¨ÈK%‘–“1Ð̹¸Ø%=Z÷){ã(°Ž¦‡§Je'§6)Í9­O›ü`œµõÌUl¨ÒÕ;™´ê¥N ÏQ'MPN3©MUD@k4jµ5¹ÑZ¸ÄÓu+7SBMJËOæ¬Ø¨É"­/:¿8*eo¢ð«(ÉïF«$\­žµUŠŽ”+“\«ÖršÄ(Ýw£´"‡Ðª"ëõl©ÂQzãeYY„°ö&º©J¥UlýWAvM Y†ƒ`í2·V*–XÉ k¤5°‘εÐHt-K/µåWÌé]æ À¡· Ç“ªhGâ9·–fËÜ» ìå¡®Öu_ÚÊÇ'¬¶¢ºç/ÛwwTž“6ÊKÞKÇc¬m´t‰¤Ð+ÀÀnýï§-2èÍx_/½z¯·®Ú]’ w/’ß¾8>^*]y¤Þ“¸*U_Ûùzˆ~À‹/á4Å£– ŸXj~aÉýƒ© "XK +,+‰RæºøzâÊCz-~"«6Þý‘|IŠö'Ç ñ_Z~bf¿Fšÿ‹“Qr,Ú½Øíec¬˜g yÈ5ï!Á›ìGî9Èä_,â<—“ííÍÌ ze+²AÊä{.‘œ·:í­5ËùNäìè‰nµ›Ì×4fxËœr5mÏù$c|ïs‡O´bëXŒ÷póî|Ðx>ãh¤­é¾Š8ùÛM zU£qõiÈûœÍ©qš;Óª\½€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=Ç2ü2%†Hå¹<®*—B%³38@šA†N æ 6œO§sØl}G¤RiTºe6.‘Èàtj}V­W¬VkU¸\’-0ŸLç6 ÍŠidšY¦4 =l¡O"UJåÖíw¼^o NõÀ`pX9-z#h˜ÚªkMÒÏŒÄã­s{mÊ}pœÛ¢¹,&w=ŸÐVï—í—M§ÔQò¬D»+ÖÊõòŒ£g%ÌM3SÌÇwÎjx\>'£ñ¹\¾f›WÚÉvñþŒ§êǺñÝ컓 ærÑÎ7ÍçôSy¿O·ÝïìB;1ßdoçäòáyûo̺•»ésþ”@/#áÁJ¾¨´T {ŽýºOë± :в:û£oª5¤°*Q#ñµÅKÜõÃQT]´ªŠ#0â5#²3"ñ"=?Ì¢â¢Fq„#¹Ðc“$I’k 5Ñkí ;R’5#â-#²=.#’ô6’IrtÍ3´RTµ4M“lÝ7ÎŒå9Ådé;ÏÌõ=Ï“ìü¥NÓýAД- CÑ…DÑ”mGÒ$ǪS-'KÓÍ5MÓ“½NÔ EQÔ•+…OÔÕMUUÕ•m]1Ò³]_YÖ•­m[ЕEq]וí}_Í•ÕaØ–-c¸¶‘eÙ–mg©–U¡iÚ–­­k¾ST­l[–í½oÕv•ÁqÜ—-ÍI\W=ÕuÝ—låtÝ×åyÞUázßÍõ}´7½ùà§_Ø ƒáJ+‚áXn‡àØf!‰â˜­Û‰bØÎ5Ú¸Æ9ä }dY.M“ÔÙ&Q•å™m!•eÙŽe™Ïy†i›çÌ›gYî}ŸÁ9æ¡èš+‰¡hÚN•¥°F™§êŽ mjZ®­«®ºv±­ëšê­kÛÅ­ìͳé{.ѵí™îÕ¶îŽ[·î[®íõ½áûÎù¿ðýÀðœ-çÁðÜOrñ_ÇÚÜo!Éò–G%ÊóÍyËó\ï=VóœÿEÑÔ=IÓõF©ÔõnGÕõÝeWôÝŸmÛίqÝ÷’guÞø #ßø^/ö?•å΋â€?àOð „BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfS8˜lÁ&“¹äö}? PhT:%G¤RiTºe617œ@éÕ:¥V­W¬VkUºåv½_°Oj› –Íg´ZmV»e¶Ýo¸Flu+Öíw¼^oW»åöýN¹À¯ø<& ‡ÄbqXºfuŒÈdrY<¦W-—¶c³¼æw=ŸÐhtQ ÖM§ÔjuZ½ecK­Ølv[=¦×m ×í÷[½æ÷}¿½îx>'ÇäOø\žg7Ïèt`ü¾—W­×ìvtN×w½ßðxnÏ—ÍçôzhžOW·Ýïø|nS{'Ëí÷ü~~>Ï×÷üÿÀ+ùÀ, ´pÁlÂAP|% ªÃÂÐÌ5 Ê1Ä E¤püIÅLT„ÄÑ\]Ƭ[Æ‘¬lÿFq¼uÇ4sÈ „çÇò#É Ô‹$É’l¾‹¤Ÿ)Ê’«S%ÊÒ̵-¯RĹ/Ì Í/LS,Í3°‹4M“lÜ­L“|å9Ή<ã:ÏÌô‹NóÜý?Ð,û@Д,ßAÐÔM0Q]GÉôm!IÒ’ %JÓÌb¨ þ,,È >Ð$@8LT(=R/home/debdev/xmorph/xmorph-current/gtkmorph/testfourier-2.tifCreated with The GIMPkE•øcÚPcåHHxmorph-20140707+nmu2/config.rpath0000775000000000000000000004401212356325452013362 0ustar #! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2010 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally 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. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; darwin*) case $cc_basename in xlc*) wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux* | k*bsd*-gnu) case $cc_basename in ecc*) wl='-Wl,' ;; icc* | ifort*) wl='-Wl,' ;; lf95*) wl='-Wl,' ;; pgcc | pgf77 | pgf90) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no 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 # 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. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 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 fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we cannot use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : 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 ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; 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 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 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) 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 hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) ;; 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=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if test "$GCC" = yes ; then : else case $cc_basename in xlc*) ;; *) ld_shlibs=no ;; esac fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) 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 ;; hpux10*) if test "$with_gnu_ld" = no; then 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 fi ;; hpux11*) 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_direct=yes # 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*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) 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 ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix[4-9]*) library_names_spec='$libname$shrext' ;; amigaos*) library_names_spec='$libname.a' ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32* | cegcc*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd1*) ;; freebsd* | dragonfly*) case "$host_os" in freebsd[123]*) library_names_spec='$libname$shrext$versuffix' ;; *) library_names_spec='$libname$shrext' ;; esac ;; gnu*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; nto-qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <= 7.0.0), libx11-dev, libxt-dev, x11proto-core-dev, libxaw7-dev, xbitmaps, texinfo, bsdmainutils, libgtk2.0-dev, libwaili-dev (>= 19990723-16), dh-autoreconf Priority: optional Maintainer: A Mennucc1 Standards-Version: 3.9.5.0 Vcs-SVN: svn://svn.code.sf.net/p/xmorph/code/ Vcs-Browser: https://sourceforge.net/p/xmorph/code/HEAD/tree/ Package: libmorph Architecture: any Depends: ${misc:Depends}, ${shlibs:Depends} Breaks: xmorph (<< 1:20140707~) Replaces: xmorph (<< 1:20140707~) Priority: optional Section: libs Description: digital image warping library libmorph warps images; the warping technique was invented and first used by Industrial Light and Magic, and is commonly called "morphing." libmorph also contains utilities to handle control meshes, that are line grids that are used to design an image warp. Package: xmorph Architecture: any Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends}, ${shlibs:Depends} Suggests: imagemagick | netpbm | xmorph-example Priority: optional Section: graphics Description: digital image warp and morph (x11) Xmorph loads, saves, warps, and dissolves images, and loads, saves, creates, and manipulates control meshes which determine the warping. The technique was invented and first used by Industrial Light and Magic, and is commonly called "morphing". . Xmorph uses the Targa image format exclusively. Other software is needed to convert to other image formats or to movies. (Due to a bug, Xmorph's images are unreadable by John Bradley's XV.) . xmorph is a GUI for libmorph, using the X Toolkit; the package also contains a text-only program called morph. Package: libmorph-dev Architecture: any Depends: ${misc:Depends}, libmorph (= ${binary:Version}) Priority: optional Section: libdevel Description: digital image warping library (development files) This package contains header files for, and a static version of, the libmorph library. Package: gtkmorph Architecture: any Depends: ${misc:Depends}, ${shlibs:Depends} Suggests: imagemagick, gtkmorph-example Conflicts: xmorph (<< 20030121) Priority: optional Section: graphics Description: Digital image warp and morph (gtk) gtkmorph loads, saves, warps, and dissolves images, and loads, saves, creates, and manipulates control meshes which determine the warping. The technique was invented and first used by Industrial Light and Magic, and is commonly called "morphing." . gtkmorph is a GUI for libmorph, using GTK+. It has many features, as the support for making movies automatically (it needs extra packages). Package: gtkmorph-example Architecture: all Depends: ${misc:Depends}, gtkmorph | xmorph Provides: xmorph-example Priority: optional Section: graphics Description: digital image warp and morph, examples gtkmorph loads, saves, warps, and dissolves images, and loads, saves, creates, and manipulates control meshes which determine the warping. It has support for making movies automatically (it needs extra packages). The technique was invented and first used by Industrial Light and Magic, and is commonly called "morphing." . This package contains an example session, that can be used also with xmorph. xmorph-20140707+nmu2/debian/source/0000775000000000000000000000000012356343462013574 5ustar xmorph-20140707+nmu2/debian/source/format0000664000000000000000000000000412356330632014774 0ustar 1.0 xmorph-20140707+nmu2/debian/dirs0000664000000000000000000000002112356304631013144 0ustar usr/bin usr/sbin xmorph-20140707+nmu2/debian/xmorph.files0000664000000000000000000000012412356304631014625 0ustar usr/bin/xmorph usr/bin/morph usr/share/man/man1/xmorph.1 usr/share/info/xmorph.info xmorph-20140707+nmu2/debian/gtkmorph-example.files0000664000000000000000000000003312356304631016573 0ustar usr/share/xmorph/example/* xmorph-20140707+nmu2/debian/libmorph-dev.files0000664000000000000000000000007612356337271015714 0ustar usr/lib/libmorph*.so usr/lib/libmorph*.a usr/include/xmorph/* xmorph-20140707+nmu2/debian/rules0000775000000000000000000001117312547265664013370 0ustar #!/usr/bin/make -f # Sample debian/rules that uses debhelper. # GNU copyright 1997 by Joey Hess. # # This version is for a hypothetical package that builds an # architecture-dependant package, as well as an architecture-independent # package. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=0 # This is the debhelper compatability version to use, for local overrides. #export DH_COMPAT=4 # This has to be exported to make some magic below work. export DH_OPTIONS INSTALL = install INSTALL_FILE = $(INSTALL) -p -o root -g root -m 644 INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755 INSTALL_SCRIPT = $(INSTALL) -p -o root -g root -m 755 INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755 CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS) CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) -fgnu89-inline CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) # FOR AUTOCONF 2.52 AND NEWER ONLY ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) confflags += --build $(DEB_HOST_GNU_TYPE) else confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) endif config: config-stamp config-stamp: dh_testdir # avoid time skews touch configure.ac && touch aclocal.m4 && touch configure touch config.h.in */Makefile.in Makefile.in #https://bugs.debian.org/744550 dh_autoreconf # ./configure $(confflags) --prefix=/usr --mandir=/usr/share/man \ --infodir=/usr/share/info --disable-rpath \ --with-xmorph --with-gtkmorph --with-gtk=2 \ --with-waili --without-fftw \ CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ CPPFLAGS="$(CPPFLAGS)" CXXFLAGS="$(CXXFLAGS)" touch config-stamp build: config build-arch build-indep build-indep: config build-indep-stamp build-indep-stamp: touch build-indep-stamp build-arch: config build-arch-stamp build-arch-stamp: # Add here commands to compile the package. $(MAKE) # touch build-arch-stamp install-indep: DH_OPTIONS=-i install-indep: build-indep dh_testdir dh_testroot dh_prep dh_installdirs # Add here commands to install the package into debian/tmp. $(MAKE) install-data-local DESTDIR=`pwd`/debian/tmp dh_movefiles dh_link -pgtkmorph-example usr/share/xmorph/example usr/share/gtkmorph/example dh_link -pgtkmorph-example usr/share/xmorph/example usr/share/doc/gtkmorph-example/examples dh_link -pgtkmorph-example usr/share/xmorph/example usr/share/doc/gtkmorph/examples install-arch: DH_OPTIONS=-a install-arch: build-arch dh_testdir dh_testroot dh_prep dh_installdirs # Add here commands to install the package into debian/tmp. $(MAKE) install DESTDIR=`pwd`/debian/tmp dh_movefiles dh_link -pxmorph usr/share/man/man1/xmorph.1.gz usr/share/man/man1/morph.1.gz dh_link -pgtkmorph usr/share/xmorph/pixmaps usr/share/gtkmorph/pixmaps # Build architecture-independent files here. # Pass -i to all debhelper commands in this target to reduce clutter. binary-indep: DH_OPTIONS=-i binary-indep: build-indep install-indep dh_testdir dh_testroot # dh_installdebconf dh_installdocs #nope! it was getting installed twice! # #dh_installexamples -pgtkmorph-example example dh_installmenu # dh_installemacsen # dh_installpam # dh_installinit dh_installcron dh_installman #is done by postinst # dh_undocumented # dh_installinfo dh_installchangelogs #ChangeLog dh_link dh_compress dh_fixperms dh_installdeb # dh_perl dh_gencontrol dh_md5sums dh_builddeb # Build architecture-dependent files here. # Pass -a to all debhelper commands in this target to reduce clutter. binary-arch: DH_OPTIONS=-a binary-arch: build-arch install-arch dh_testdir dh_testroot # dh_installdebconf dh_installdocs # dh_installexamples dh_installmenu # dh_installemacsen # dh_installpam # dh_installinit # dh_installcron dh_installman # is done correctly in my postinst # dh_installinfo # dh_undocumented dh_installchangelogs #ChangeLog dh_strip dh_link dh_compress dh_fixperms dh_makeshlibs dh_installdeb # dh_perl dh_shlibdeps -ldebian/libmorph/usr/lib dh_gencontrol dh_md5sums dh_builddeb binary: binary-arch binary-indep clean: dh_testdir dh_testroot rm -f build-arch-stamp build-indep-stamp config-stamp # Add here commands to clean up after the build process. [ ! -f Makefile ] || $(MAKE) distclean # #https://bugs.debian.org/744550 dh_autoreconf_clean # dh_clean .PHONY: config build-arch build-indep clean binary-indep binary-arch binary binary-arch binary-indep install-indep install-arch xmorph-20140707+nmu2/debian/copyright0000664000000000000000000000207612356304631014227 0ustar This is xmorph, written and maintained by A Mennucc1 on Thu, 22 Feb 2001 18:50:20 +0100. The original source can always be found at: http://sourceforge.net/projects/xmorph xmorph/morph: Written and Copyright (C) 1994-2000 by Michael J. Gourlay gtkmorph: Written and Copyright (C) 2000 by A C G Mennucci 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 with the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA xmorph-20140707+nmu2/debian/gtkmorph-example.dirs0000664000000000000000000000013212356304631016432 0ustar usr/share/gtkmorph usr/share/doc/gtkmorph-example usr/share/doc/gtkmorph usr/share/xmorph xmorph-20140707+nmu2/debian/gtkmorph.dirs0000664000000000000000000000004412356304631015003 0ustar usr/share/gtkmorph usr/share/xmorph xmorph-20140707+nmu2/debian/compat0000664000000000000000000000000112356304631013464 0ustar 7xmorph-20140707+nmu2/debian/changelog0000664000000000000000000005660012547265761014164 0ustar xmorph (1:20140707+nmu2) unstable; urgency=medium * Non-maintainer upload. * Build using -fgnu89-inline. Closes: #778186. -- Matthias Klose Wed, 08 Jul 2015 20:28:07 +0200 xmorph (1:20140707+nmu1) unstable; urgency=medium * Non-maintainer upload. * Bug fix: "fails to upgrade from wheezy - trying to overwrite /usr/share/man/man1/morph.1.gz", thanks to Andreas Beckmann (Closes: #767834). -- Bastien Roucariès Sat, 15 Nov 2014 15:47:21 +0100 xmorph (1:20140707) unstable; urgency=low [ A Mennucc1 ] * Bug fix: "run dh-autoreconf to update config.{sub,guess} and {libtool,aclocal}.m4", thanks to Matthias Klose (Closes: #744550). * Bug fix: "run dh-autoreconf to update config.{sub,guess} and {libtool,aclocal}.m4", thanks to Matthias Klose (Closes: #727522). * Bug fix: "Patch fixes some typos", thanks to Chris Leick (Closes: #550205). * Bug fix: "[INTL:de] Initial German translation", thanks to Chris Leick (Closes: #550204); and correct two bugs in it. * enable hardening * debian/rules: create build-arch and build-indep targets * do not install libmorph.la * update SVN links in debian/control * update Standards-Version to 3.9.5 -- A Mennucc1 Mon, 07 Jul 2014 00:00:52 +0200 xmorph (1:20090926) unstable; urgency=low * Updated to latest auto* stuff in Debian/sid * Use latest debhelper compat 7 * Bump standard version to 3.8.3 , correct lintian warnings: - use ${misc:Depends} in debian/control - Depends: dpkg (>= 1.15.4) | install-info - Remove xmorph.prerm xmorph.postinst templates - Remove dependency on 'xutils' - Change dh-clean-k in dh_prep * Add reference to SVN repo in sourceforge * The correction for info-dir-section was not effective, corrected. -- A Mennucc1 Tue, 29 Sep 2009 19:41:59 +0200 xmorph (1:20090606) unstable; urgency=low * Removed obsolete build-dep on x-dev; thanks to jcristau; (Closes: #515421). * Added info-dir-section to your info files; thanks to Norbert Preining (Closes: #528901). * Update texinfo contents. -- A Mennucc1 Mon, 08 Jun 2009 08:57:40 +0200 xmorph (1:20071230.1) unstable; urgency=low * updated to latest auto* stuff in Debian/sid * Bug fix: "xmorph: FTBFS: configure: error: cannot find install-sh or install.sh ", thanks to Kurt Roeckx (Closes: #458348). -- A Mennucc1 Sun, 30 Dec 2007 18:28:32 +0000 xmorph (1:20071230) unstable; urgency=low * Bump standard version to 3.7.3 : - new section Applications/Graphics for gtkmorph & xmorph menu - use ${binary:Version} in debian/control * Fix lintian warnings: - delete DH_COMPAT, create debian/compat - do not use "-$(MAKE) distclean" , but rather [ ! -f Makefile ] || $(MAKE) distclean * add symbols file for libmorph (thanks mole) * Bug fix: "FTBFS with GCC 4.3: missing #includes", thanks to Martin Michlmayr (Closes: #455618). -- A Mennucc1 Sun, 30 Dec 2007 15:24:39 +0000 xmorph (1:20070522) unstable; urgency=low * try to reduce the library dependency ,use '-Wl,--as-needed' http://rerun.lefant.net/checklib/log.gtkmorph_1:20060817.html * warn in case of precision underflow * use newer auto* stuff -- A Mennucc1 Thu, 24 May 2007 19:27:37 +0200 xmorph (1:20060817) unstable; urgency=low * corrected bug! g_build_filename() arg list must be NULL terminated ! Thanks Tor Lillqvist. -- A Mennucc1 Thu, 17 Aug 2006 18:14:34 +0200 xmorph (1:20060526.1) unstable; urgency=low * needs to build-dep on 'xbitmaps'. Fixes FTBFS, thanks to Frederik Schüler (Closes: #368838). * Bumped standards version. -- A Mennucc1 Thu, 25 May 2006 14:03:47 +0200 xmorph (1:20060526) unstable; urgency=low * in config.h , PACKAGE_{LOCALE,DATA]_DIR where again containing ${datarootdir} . As a consequence, translations and pixmaps where again lost. Resistence is futile. I give up and use DATADIR and LOCALEDIR as explained in 'info automake'. -- A Mennucc1 Thu, 25 May 2006 11:34:25 +0200 xmorph (1:20060525) unstable; urgency=low * xmorph: incorrect handling of i18n in iso environment. Thanks to Thomas Huriaux (Closes: 361260) * [INTL:fr] French program translation update. Thanks Christophe Masson (Closes: 361256) -- A Mennucc1 Thu, 25 May 2006 09:27:12 +0200 xmorph (1:20060304) unstable; urgency=low the "I got a flu this weekend" release * gtkmorph: fix nasty bug: would crash when saving the resulting mesh (due to double fclose); thanks "kkilfedder at iee dot org" * gtkmorph: debugging of "features": - allocate_colors in main() otherwise features are broken - due to stupid newline in glade, the combo was not empty when created! this was breaking the feature renaming and such! for the future, feature_init() clears the combo - save features names in meshes, and load them with meshes - redraw the color in the button when the feature entry changes - properly refresh the color in the colored button when the feature changes * gtkmorph: feature names are saved at the end of the meshes (example meshes in AD and AD2 contain feature names). * gtkmorph: the setting "mesh is readonly" was not working * gtkmorph: does not load the example session if some meshes are unsaved * gtkmorph: when "showing warp in other window" is on and "show warp after warp" is off, the warp-showing window was not working * morph: do not print warnings -- A Mennucc1 Sat, 4 Mar 2006 19:17:06 +0100 xmorph (1:20060130) unstable; urgency=low * new feature: can load, save, and display "difference meshes", that are difference of two meshes; those can be added to a morph, to morph in a particular direction * more uniform naming scheme for windows and images * disabled "view original mesh" and "view original points" in main window: there is no difference between "original" and "warped" there! * add many "g_return_if_fail(meshAllocated(...))" to protect from bugs * can stop movie making * create pixmap when displaying a window (an empty window is useless) * rerun automake autoconf libtoolize gettextize * now "make dist" creates a tar that does compile (so some useless stuff deleted from tar in Debian :-) -- A Mennucc1 Wed, 11 Jan 2006 12:11:55 +0100 xmorph (1:20060107) unstable; urgency=low * do not build-dep on xlibs-dev, but rather on 'libx11-dev, libxt-dev, x-dev' * check in configure that libxaw7 is installed * rebuilt auto* stuff with automake-1.9 and latest configure * some ifdefs to reuse code in forthcoming project "plymorph", and some correction and rationalization of the whole code , such as: * in gtksettings.c : submenus were reversed, didnt work properly * found nasty bug in image blending code , that luckily was never triggered -- A Mennucc1 Thu, 15 Dec 2005 12:16:00 +0100 xmorph (1:20051111) never uploaded * configure.ac : corrected PACKAGE_LOCALE_DIR, now translation are correctly used * updated list of translatable files in po/POTFILES.in , ran 'make update-po' in po/ * updated italian translation * updated menus according to latest guidelines * removed PLY support and plyview (that was never compiled in Debian) -- A Mennucc1 Sun, 23 Oct 2005 14:47:17 +0200 xmorph (1:20050810b) unstable; urgency=low * compiled with newer libwaili (for gcc4.0 transition) * merged different updates * new FSF address (from latest GPL) in copyright * Bug fix: "fr.po: French translation", thanks to Christophe Masson (Closes: #326909). -- A Mennucc1 Mon, 10 Oct 2005 13:22:57 +0200 xmorph (1:20050415) (never uploaded ?) * another correction to 'ijkl' system... point position was affected by scroll bars! * added informational label showing estimated time to movie completion * program crashes when movie should warn that some frames already exist (reason: a duplicate g_free) (corrected in 1:20050408b) -- A Mennucc1 Fri, 15 Apr 2005 10:49:18 +0200 xmorph (1:20050408b-0.1) unstable; urgency=low * Non-maintainer upload, at the maintainer's request. * Add #include "support.h" in gtkmorph/callbacks_subimg.c, which provides the prototype for lookup_widget(). Closes #311005. -- dann frazier Sat, 27 Aug 2005 15:50:17 -0600 xmorph (1:20050408b) unstable; urgency=low * corrected crash when making movies, due to double free in movies.c -- A Mennucc1 Fri, 27 May 2005 10:26:25 +0200 xmorph (1:20050408) unstable; urgency=low * save_image chooses the type from extension of image file name * choose strength of wavelet equalization * can use keys 0...9 to set point labels, and 'ijkl' to finely move points (this was present, but did not work with GTK2) * revised libmorph/README.libmorph * the GTK1 interface is outdated wrt what gtkmorph now offers with GTK2 : - the code for using wavelets does not work with GTK1 - the mplayer button is not there - the button for changing feature colors is not there - images can only be saved in PPM format * in movie making : the role of end and start was inverted ! * do not update config.guess and config.sub : it breaks compilation * when rescaling meshes (when user changes the resulting image size) the mesh border was used and affected (and this is wrong): added new function meshScaleFreeformat in libmorph * when loading meshes in a gtkmorph with different resulting size, the mesh has wrong size: now resulting image size is saved with the mesh -- A Mennucc1 Wed, 6 Apr 2005 15:32:48 +0200 xmorph (1:20040717) unstable; urgency=low * in GTK2 the callback for key presses in the window area was not binded * wavelet statistics are computed while warping and not while blending (so moving the blending slide reacts faster) * the warp pulls pixel from loaded image and not from the editing subimage, and the resample code pads image with its border color and not with black (1:20040714) unreleased * added 'disable-rpath' to configure * the spinbuttons in GTK2 use value-changed callback (1:20040713) unreleased * code clean up: divided 'callbacks.c' and 'utils.c' in many files * use 'gdk_window_invalidate_rect' instead of 'gtk_widget_draw' in GTK2 : the responsiveness of the program is much improved * gtk-meta.h and gtk-meta.c to compile for win32 and gtk 1.2 , 2.2 (1:20040707) unreleased * 'configure --with-gtk2' has been replaced by 'configure --with-gtk=version' * corrected magnifier offset * corrected thin-plate-spline smoother in relax.c: no more mesh entangling * new astounding features: - auto calibration of mesh points - wavelet equalization - saving images in ppm, jpeg, png format (thanks to GTK2 ) -- A Mennucc1 Thu, 10 Jun 2004 11:26:54 +0200 xmorph (1:20040525) unstable; urgency=low * in warp.h there are defines PIXEL_TYPE , PIXEL_MIN, PIXEL_MAX to adapt the warping core to warp images with different pixel bitdepth * in libmorph/resample.c - optimization for lanczos-antialiased-warping as suggested by oberger and lvalero (@ esil univ-mrs fr) : it is twice as fast - corrected a read F[i+1] out of array bounds - sinc() is symmetric! so I don't need a table that big! * corrected GTK_TEXT in guide.c, thanks "J.C. Keet" (j.keet wandromeda tmfweb nl) * deleting CWD from filenames in save_session was off by 1 -- A Mennucc1 Thu, 27 May 2004 15:17:37 +0200 xmorph (1:20040110) unstable; urgency=low * libmorph-dev is in libdevel, not devel * editing the mesh with a free border (that is, w/o "preserve border") sometimes went wild; now it seems ok, so it is the default * while editing the image, the image has a big border (to track mesh points outside the image itself) * the settings "view original features" "view warped features" have disappeared since I never implemented it * new setting "cursor jump" * fixed session file in example (closes: #225090) * Bug fix: "xmorph: Upgrade conflict between xmorph 20011220 and gtkmorph 20030527", thanks to Nick Leverton (Closes: #202691). -- A Mennucc1 Mon, 12 Jan 2004 16:23:56 +0100 xmorph (1:20031129) unstable; urgency=low * Update to latest Debian Policy Standards Version * xmorph.info was not installed properly any more * This release contains some rewrites of the code base of gtkmorph and libmorph. (not of xmorph, though; I do not use xmorph; I only use gtkmorph): * some optimizations * warp2.c and resample.c in libmorph: 1) can warp images of different sizes, (but this is untested) 2) mesh border does not need to stay on image border, 3) warp with Lanczos antialiasing or bilinear resampling and added a global setting "antialiasing" to choose bilinear/Lanczos * added warp-gtk.h : contains a call to warp GdkPixbufs * rewritten code that smooths the meshes: mesh border does not need to stay on image border; and added a global setting "preserve border" to lock/unlock the border of the meshes * removed bashism from debian/rules (closes: 219995) -- A Mennucc1 Fri, 28 Nov 2003 10:42:45 +0100 xmorph (1:20030731) unstable; urgency=low * shows Euclidean distance between meshes and resulting mesh -- A Mennucc1 Fri, 1 Aug 2003 15:16:20 +0200 xmorph (1:20030527) unstable; urgency=low * there is a new 'setting' (in the menu) to choose between elastic-energy smoothing (old way) and thin-plate-energy smoothing (new way , default) of meshes * smoothing is done on idle time (thin splate is complex) * can use keys 0...9 to set point labels, and 'ijkl' to finely move points -- A Mennucc1 Mon, 26 May 2003 19:00:00 +0200 xmorph (1:20030325) unstable; urgency=low * better mpeg; quality file -- A Mennucc1 Tue, 25 Mar 2003 10:39:06 +0100 xmorph (1:20030310bis) unstable; urgency=low * gtkmorph-example provides xmorph-example as well * gtkmorph-example is architecture all * corrected glitch in debian/rules (now using autoconf2.53) * in debian/rules, dh_makeshlibs and dh_installdeb where inverted: so debhelper was installing libmorph/postinst before it added the ldconfig -- A Mennucc1 Tue, 18 Mar 2003 09:42:09 +0100 xmorph (1:20030310) unstable; urgency=low * changed behaviour of callbacks for spinbuttons AGAIN: I got it really wrong : errors while loading subimage selections * new tool: magnifier lens * anisotropic smoothing => better meshes => better morphing (really cool, why didn't I think of it before?) -- A Mennucc1 Sat, 10 Mar 2003 12:10:24 +0100 xmorph (1:20030306) unstable; urgency=low * don't crash on truncated meshes * built with gtk1.2 (gtk 2.0 is too slow) -- A Mennucc1 Wed, 5 Mar 2003 13:18:04 +0100 xmorph (1:20030227) unstable; urgency=low * changed behaviour of callbacks for spinbuttons: I got it really wrong : it was impossible to edit the numbers * some improvements to movie making -- A Mennucc1 Thu, 27 Feb 2003 09:51:52 +0100 xmorph (1:20030121) unstable; urgency=low * added example suite * complete rehaul of the code that now uses both glade1 gtk1 and glade2 gtk2 -- A Mennucc1 Thu, 23 Jan 2003 12:18:46 +0100 xmorph (1:20030119-1) unstable; urgency=low * added tools. * Added 'features' . When points are packed in features, they will be moved as one. TODO note: feature names and colors can be changed but will not be saved; whereas features in meshes are saved with the mesh. -- A Mennucc1 Fri, 17 Jan 2003 23:15:09 +0100 xmorph (1:20021001-1) unstable; urgency=low * I want to try gtk2.0 building so I have removed temporarily libgdk-pixbuf-dev, libgtk1.2-dev | * avoid time skew (closes: #161270) -- Andrea Mennucc Sat, 5 Oct 2002 13:27:58 +0200 xmorph (1:20020909-1) unstable; urgency=low * does not need libart; corrected build-deps (closes: #160445) -- Andrea Mennucc Mon, 16 Sep 2002 16:11:38 +0200 xmorph (1:20020909-0) unstable; urgency=low * no more need of auto* stuff (closes: #156422) (closes: #158353) * put executable there (closes: #160113) * put man page there (closes: #156691) * needs debhelper 3 -- Andrea Mennucc Mon, 9 Sep 2002 14:50:44 +0200 xmorph (1:20020602) unstable; urgency=low * gtkmorph has a 'druid' help * corrects automake problem (hopefully) (closes: #153255) -- Andrea Mennucc Thu, 1 Aug 2002 17:41:41 +0200 xmorph (1:20020520) unstable; urgency=low * new -- Andrea Mennucc Fri, 24 May 2002 18:13:36 +0200 xmorph (1:20011220) unstable; urgency=low * changed '"morphing."' to '"morphing".' (Closes: #110463) * changed '(x110' to '(x11)' (Closes: #119761) * I am implementing new features, which are too buggy, so I have disabled them in this bug-fixing release * debhelper was installing info a second time (closes: #120120) -- Andrea Mennucc Fri, 4 Jan 2002 12:26:04 +0100 xmorph (1:20011113) unstable; urgency=low * Branden Robinson had not really corrected 119005, but J Troup has given me the magical solution (Closes: #119005) (wow isnt this the real Debian spirit?) -- A Mennucc1 Wed, 14 Nov 2001 15:40:05 +0100 xmorph (1:20011112) unstable; urgency=medium * the following changelog and patch comes from Branden Robinson Thu, 8 Nov 2001 16:56:36 -0500 * NMU to fix build-failures * gtkmorph/Makefile.am: add @GDK_PIXBUF_CFLAGS@ to INCLUDES * debian/control: - corrected bad Build-Dependency (Closes: #119005) - add versioning of 1.1.17 to Build-Dep on debhelper - fix up poor grammar and other errors in package descriptions [AM: isn't he such a nice guy?] - fix duplicate and missing package relationships (probably caused by ignorance of proper dh_shlibdeps usage) * debian/docs: don't ship COPYING or INSTALL documents * debian/postrm moved to debian/prerm (where install-info should be run) * debian/{postinst,prerm,libmorph.postinst}: include #DEBHELPER# tokens * debian/rules: - removed invocation of dh_testversion - use dh_shlibdeps properly for this shared-library-containing package - removed useless invocation of dh_suidregister * re-ran aclocal; automake; autoconf against modern libgdk-pixbuf-dev so this package would know where to find that library's headers * package now lintian-clean -- A Mennucc1 Tue, 13 Nov 2001 17:42:01 +0100 xmorph (1:20011109) unstable; urgency=low * again run libtoolize to get support for new architectures. (closes: #103372) * libgtk-dev is a real package, not a virtual one; I want libgtk1.2-dev instead. (closes: #115414) -- A Mennucc1 Fri, 9 Nov 2001 14:16:14 +0100 xmorph (1:20011010) unstable; urgency=low * clean up the CVS, some minor adjustments, better build deps, uses newer libtool and autoconf and automake -- A Mennucc1 Fri, 12 Oct 2001 14:11:22 +0200 xmorph (1:20010421-4) unstable; urgency=low * more italian translation * this bimbo now compiles with i386-cygwin-gcc (without-x) -- A Mennucc1 Wed, 15 Aug 2001 10:56:13 +0200 xmorph (1:20010421-3) unstable; urgency=low * build-depends on gettext (closes: #104389) -- A Mennucc1 Wed, 18 Jul 2001 16:59:24 +0200 xmorph (1:20010421-2.1) unstable; urgency=low * Non-maintainer upload. * Run libtoolize to get support for new architectures. Closes: #103372 -- LaMont Jones Mon, 9 Jul 2001 21:39:34 -0600 xmorph (1:20010421-2) unstable; urgency=low * there was a leftover include for gdk-imlib (closes: #98911) -- A Mennucc1 Fri, 1 Jun 2001 20:11:30 +0200 xmorph (1:20010421-0) unstable; urgency=low * dpkg-source flops when cwd is a sym link! (closes: #97866) * note that, since aug 2000, xmorph is native debian (read the README) * I took the test/ dir out of the tar.gz ... I will put it back when I document it a bit -- A Mennucc1 Fri, 18 May 2001 10:38:56 +0200 xmorph (1:20010421) unstable; urgency=low * gtkmorph: right mouse button brings up a menu: add & delete mesh lines; moreover there is a "movie" option that builds gif movies (needs imagemagick) or mpeg movies (needs ucbmpeg) * libmorph: changes for the above (line adding didnt preserve labels) and for locale problems in read/save of meshes (in italian the , separates decimals, not the .) -- A Mennucc1 Tue, 24 Apr 2001 16:59:39 +0200 xmorph (1:20010220-2) unstable; urgency=low * many changes in gtkmorph (but some parts are still unfinished) * added build depends, (closes: #88211) -- A Mennucc1 Thu, 19 Apr 2001 20:34:17 +0200 xmorph (1:20010220) unstable; urgency=low * New Upstream Release. New mantainer. -- A Mennucci Thu, 22 Feb 2001 18:50:20 +0100 xmorph (1:20000428-1) unstable; urgency=low * New upstream release. (closes: #25108) * This version includes a fix to compile on Linux with libc6. (closes: #33063, #38955) * Maintainer set to Debian QA Group. * Remove "tags" and "Makefile.bak" in the clean target. * Corrected the priority entry in debian/control. * Added "-isp" to dpkg-gencontrol. * Added Build-Depends. * Standards-Version: 3.1.1 * Upload sponsored by Tony Mancill . -- Adrian Bunk Thu, 14 Sep 2000 23:36:07 +0200 xmorph (1:17nov97-2) unstable; urgency=low * NMU. * Package now builds on potato system. (closes: #38955) * Updated menu file. -- Fredrik Hallenberg Sun, 25 Jul 1999 20:42:04 +0200 xmorph (1:17nov97-1) unstable; urgency=low * Verified compliance with Debian policy 2.4.0.0 and updated control file accordingly * New upstream release -- Larry Gilbert Mon, 16 Feb 1998 20:09:41 -0800 xmorph (1:11sep97-2) unstable; urgency=low * Architecture in control file changed to "any" (bug report #13626 by James Troup) -- Larry Gilbert Mon, 6 Oct 1997 08:31:05 -0700 xmorph (1:11sep97-1) unstable; urgency=low * Compiled using xlib6g-dev in an attempt to fix lingering libc5 dependency discovered by Enrique Zanardi (bug report #13007) * Fixed bad man page permissions spotted by Joey Hess (bug report #13027) * Got rid of duplicate man page (/usr/man/man1/xmorph.1) * Tidied the 'menu' entry (for the 'menu' package) a bit * New upstream release -- Larry Gilbert Mon, 15 Sep 1997 23:08:29 -0700 xmorph (18apr97-1) unstable; urgency=low * Changed some default font resources to better match the standard Debian X fonts. * Minor makefile changes to facilitate compilation. * Initial Release. -- Larry Gilbert Tue, 29 Jul 1997 22:42:50 -0700 xmorph-20140707+nmu2/debian/README.Debian0000664000000000000000000000300412356304631014325 0ustar new xmorph for Debian ---------------------- I am now coauthor of xmorph. Since feb 2001, I am a Debian mantainer, and then I take care of the packaging. I have built 5 packages libmorph: shared lib libmorph-dev: to develop against libmorph note that the include files are in /usr/include/xmorph/ xmorph: original program, with some changes gtkmorph: new gtk GUI gtkmorph-example: examples, which can be used for xmorph as well -- A Mennucc , Thu, 22 Feb 2001 18:50:20 +0100 older xmorph for DEBIAN ---------------------- This is Xmorph by Michael Gourlay , compiled and packaged for Debian GNU/Linux. Xmorph only works with Targa image files. You will need other utilities such as ImageMagick if you want to convert to other image formats or movies. Some known problems and workarounds: * Images generated by Xmorph cannot be read by John Bradley's XV. This is believed to be a bug in XV. You must use another program if you want to convert Xmorph's output to other formats. * Changing the display of mesh points/lines by choosing the appropriate options in the "Properties" menus does not take effect immediately. Currently you must fidget with the warp/dissolve slider bars, or move the Xmorph window off-screen and back again, to make mesh points/lines appear (or go away) after you've selected (or deselected) them. -- Larry Gilbert , Tue, 29 Jul 1997 22:42:50 -0700 -- A Mennucc , Wed Dec 10 19:36:19 2003 xmorph-20140707+nmu2/debian/docs0000664000000000000000000000004112356304631013135 0ustar NEWS README TODO HISTORY AUTHORS xmorph-20140707+nmu2/ChangeLog0000664000000000000000000003630512356325452012632 0ustar 2014-07-06 gettextize * m4/gettext.m4: New file, from gettext-0.18.1. * m4/iconv.m4: New file, from gettext-0.18.1. * m4/lib-ld.m4: New file, from gettext-0.18.1. * m4/lib-link.m4: New file, from gettext-0.18.1. * m4/lib-prefix.m4: New file, from gettext-0.18.1. * m4/nls.m4: New file, from gettext-0.18.1. * m4/po.m4: New file, from gettext-0.18.1. * m4/progtest.m4: New file, from gettext-0.18.1. * Makefile.am (EXTRA_DIST): Add config.rpath. 2007-05-24 gettextize * m4/gettext.m4: New file, from gettext-0.16.1. * m4/iconv.m4: New file, from gettext-0.16.1. * m4/lib-ld.m4: New file, from gettext-0.16.1. * m4/lib-link.m4: New file, from gettext-0.16.1. * m4/lib-prefix.m4: New file, from gettext-0.16.1. * m4/nls.m4: New file, from gettext-0.16.1. * m4/po.m4: New file, from gettext-0.16.1. * m4/progtest.m4: New file, from gettext-0.16.1. 2004-05-27 gettextize * Makefile.am (SUBDIRS): Remove intl. 2003-11-29 gettextize * Makefile.am (SUBDIRS): Add intl. * configure.in (AC_OUTPUT): Add intl/Makefile. 2003-11-29 gettextize * configure.in (AC_OUTPUT): Add po/Makefile.in. 2003-11-29 gettextize * Makefile.am (SUBDIRS): Add m4. (SUBDIRS): Remove intl. (ACLOCAL_AMFLAGS): New variable. (EXTRA_DIST): Add config.rpath. * configure.in (AC_OUTPUT): Add m4/Makefile. xmorph: Digital Image Warp ("morph") graphical user interface Written and Copyright (C) 1994-1997 by Michael J. Gourlay Provided as is. No warrantees, express or implied. ------------------ Modifications are often marked by a timestamp and the programmers' initials. MJG refers to Michael J. Gourlay. AT refers to Andy Thaler WA refers to Warwick Allison MH refers to Mike Hoefelein PW refers to Paul Walker Thanks to Geoff Lawler for the Windows NT/95 cygwin port. Other help from ellenberger@tle.enet.dec.com Huge help from Dave Beazley, author of SWIG, for wrapper code generation help (non-specific to tkmorph). Gordon Matzigkeit added the GIMP plugin functionality. ------------------ 20jul99: added #include in my_malloc.h for when DEBUG is not defined 15jul99: separated out libmorph as a stand-alone library. wrote "morph" command line interface version. 19apr98: GG added a missing meshInit in warp_sequence that was causing memory problems on some machines. 17apr98: Added red-green color-blindness changes for GUI 23sep97: Added GIMP plugin functionality, enabled with -DGIMP in the Makefile. 19jul97: No longer rebuild entire "wish" executable. Uses DLL and DSO instead. Renamed "main.tk" to "tkmorph" and changed executable from "tkmorph" to "wish4.2". 14jul97: Received binary executable for xmorph on Windows NT/95 under cygwin. 09jul97: Added meshSet and changed diw_map to use it. Added meshCopy, meshStore, meshRecover, meshBackupIndexSet and other associated "undo" routines and incorporated them into each mesh modifying routine that a user would call during mesh editting. 08jul97: Added meshLineMouseModify to mesh.c and changed diw_map.c to use it. 02jul97: Removed mesh_diw.[ch] since it contained only a call to meshReset. Incorporated use of meshScale when loading images of a size different from the previous size. early June 1997: incorporated TCL/Tk and SWIG code into main xmorph code. separate tkmorph code is now obsolete. New code requires SWIG 1.1b4 or later 18apr97: Added Apollo Domain/OS changes, due to PW. Changed the name of the my_malloc macros to remove the MY_ prefix. 06dec96: Added -DREAL=double to Makefile for spline.c 24nov96: Added meshInitialize to initialize new mesh members, intended primarily to set the mesh arrays to NULL so that the revised meshAlloc routine didn't try to free invalid memory addresses. Added meshMatch to match geometries of two meshes, intended for use in loading new meshes to make sure both meshes are the same size, in a compact routine. Changed meshAlloc to free old space before allocating new space. This required changes elsewhere to make sure that previously unallocated mesh arrays were explicitly set to NULL. This could cause weird memory bugs later if I didn't catch all of the meshAllocs. 13nov96: Added a check to make sure that the start and finish images are the same size in the case that they are provided as command line arguments. Reported by Rick Walker 02oct96: Fixed the meshLoad routine to read in longs instead of ints for nx,ny. Thanks to George C. Hawkins for pointing it out. The bug was introduced in mid August when the mesh data structure was rewritten. nx and ny used to be regular ints. Now they are longs. I forgot why I bothered to change their type, and I wonder what other things depend on them being regular ints instead of longs. Fixed a bunch of tiny little warning-level bugs, such as including needed include files, providing strong prototypes for callback member in the mjg_dialog, fixing a compiler macro in one of the mesh_.h files, etc. Included a copy of the tkmorph stuff so that people can see what I'm up to, in case they want to contribute or something. However, it's not production code. 10sep96: fixed init_diw_stuff in diw_map.c where color allocation used to only be done for PseudoColor. It is now also done for all visual classes. The effect was that the mesh lines were being drawn in black for TrueColor visuals. 30aug96: Created mesh_diw.[ch] and moved reset_meshes routine from mesh.[ch] to mesh_diw.[ch]. Renamed many of the mesh routine names to use another function name convention. Rewrote the entire mesh part of the code to use a "meshT" user defined data type. Many dozens of lines of code throughout many modules were modified. I should have done this to begin with, but I didn't originally, because I wanted to have the source and dst meshes have identical number of points, which I decided was best by just having a single member for the size of both meshes. However, the TCL version will be easier to handle, and the code is more elegant, with a "meshT" data type. This more than likely introduced bugs into the code, particularly regarding any code that modifies or uses the "number of points" members, and in particular, of the "dst" meshes. 09aug96: image.c and image.h renamed to rgba_image.[ch]. The routines in rgba_image.c were renamed to use a different routine naming convention. For example, load_img was renamed loadImageRGBA, etc. 26jul96: Moved reset_images, orig_image, and dither_image into the new module image_diw because they are special purpose code used only by xmorph, whereas the other image.c code is general purpose. 12jul96: Fixed the dithering routine to make use of the dithiering error accumulator. Looks better now. The images used to dither sort of okay before, but it was really stupid of me not to expect better results out of this dithering technique. I guess I figured that the technique wasn't any better than the results i was getting before. Ends up, it was just buggy code. Added support for StaticGray visual class with 1-bit depth. To do this, I had to add a section to the dither_image routine to handle StaticGray. The dithering routine I cooked up for the color images didn't translate well for only 1-bit because the error diffusion of the color scheme is very unsophisticated because it relies on the assumption that there won't be enough quantization at any given pixel to make a harsh error. Well, with 1-bit depth, the quantization error is almost always drastic, so I had to implement something more like a full-blown Floyd Steinberg error diffusion algorithm. Mine is still simpler than full-blown FS, but it looks about as good on a flying horse. 28jun96: Changed the way colormaps are allocated so that now it is a trivial matter to change the number of bits ber channel used to represent a color in the dithering colormap. The primary changes were in diw_map.c and diw_map.h, although some changes were in image.c in dither_image. Note that there are some limitations on the maximum number of bits per channel useable due to the BITS_PER_CHANNEL in dither_image, so 16-bit visuals might not be able to make full use of their huge colormaps. Since I don't have such a machine, I wouldn't be able to test it easily. It might be as simple as changing BITS_PER_CHANNEL to 16 and cranking up the ???_NUM_BITS values to something like 3 or 4 bits each (perhaps RGB-443). This would yeild VERY nice looking images (almost at TrueColor quality) and the dithering would probably be just as fast as it is now. I'm stoked. 30may96: MH Fixed a subtle but important bug in warp.c line 189: /* scan convert vertical splines of S and I */ hermite3_array(yrow1, xrow1, mesh_height, indx, map1, img_height); hermite3_array(yrow1, xrow2, mesh_height, indx, map2, img_height); ^^^^^ The report comes from Mike Hoefelein The effect was to make the warped image conform exactly to the mesh. Before, there was a descrepency between the mesh location and the image. This should have been obvious earlier by simply warping the checkerboard test image, but I had ignored it until Mike pointed it out to me. 14nov95: Fixed a hideous memory allocation bug. TrueColor works for TrueColor default visual. TrueColor does not work for nondefault TrueColor, because Xt does not support such a use of Visual Class. This ends up being a rather subtle and difficult issue, which has been discussed at length by people who want to use TrueColor visuals on displays that have another kind of default visual class but which can support TrueColor. See the X Authority Web site. 14sep95: Removed TrueColor support for nondefault TrueColor machines, but left hooks in. I can't figure out why it doesn't work. 13sep95: Made some modifications due to reports by xmorph users. In particular, there were more divide-by-zero events happening in the warping code. Much of this was due to Wolberg. I've found several errors in Wolberg's original code, and he's been made aware of these changes. One good thing about these changes is that they (in Wolberg's opinion) sufficiently change the code such that there isn't a copyright problem using the code. Wolberg has granted permission to me to use the code in any case. Added my_free to spl-array in hermite3_array (memory leak). Changed free() to my_free in various routines. Changed xi loop bound in reample_array in warp.c to (len-1) WA contributed these changes: added TrueColor support (changed xbm_gray and dither_image) I have to admit that I don't fully understand these changes yet because I haven't looked into TrueColor visuals because I haven't hacked them. If there is a problem with the TrueColor code then let me know, but I might not be able to help. -- MJG fixed memory leak in sequence.c to free a temporary mesh. changed box to paned widget to allow scrolling 14jul94: Modified spline routines to fit my personal library better. Moved some routines from spline.c to spl-array.c Miniscule formatting changes in my_malloc.c. Nov94: Changed my email address to Colorado address in documentation files. Released at MIT. 22jul94: More diddling with the tga routines. Colormap and pixel stuff. 21jul94: removed load_tga_cmap_entry, and changed the way targa cmaps are stored. Added ppmtotga, tgatoppm, cjpeg, djpeg to the man page. release 5 (xmorph-20jul94) 20jul94: Fixed load_tga_image: first row of upside-down images was wrong. Removed (or changed) references to tga.h where inappopriate. Added automatic image compression in save_img if loaded image was compressed. Also checks pixel_size. Added fields to the rgba_image_t for compression, cmaps, pixel size. Added RLE compression to Targa save routines. Added a bounds check in load_tga_image for corrupt Targas. Added more labels to the scrollbars to be more clear. Alligned scrollbar region. Added a missing "#include " in xmorph.c Added a missing "\n\" in help_menu.c Alpha version: these releases come all too often. 19jul94: Ximage array allocation fixed in diw_map.c (factor of 4 deal). Fourth release (xmorph-19jul94.2): unannounced Ximage array indexing fixed in dither_image. Third release (xmorph-19jul94.1): unannounced Modified spline code to continue (not abort) when spline abcissa out of range. Second release (xmorph-18jul94): unannounced Tue Jul 19 02:57:37 EDT 1994 This release was not quite ready, but I was being flooded with reports that xdiw had vanished, and I needed to put something up to keep the email flux down. xmorph-18jul94: Removed spline code from warp.c. Incorporated use of general purpose hermite spline routines I wrote in 1993. Fixed bug in hermite spline routine (for point at last knot). Changed the name from xdiw to xmorph. xdiw-15jul94: Changed the module organization of the rgba_image_t definition. Separated tga-24.c and (new file) tga-write.c Added size-8 write to save_tga_pixel (untested) [Approaching a common tga library for xdiw and showtime] xdiw-08jul94: Added authorship and release date info in internal "About..." page. Made README more like what the X Consortium wants for contrib. Separated application and widget code in diw_map.c and xdiw.c. Wrote a short man page for xdiw. First release (xdiw-07jul94): announced Thu Jul 7 16:36:58 EDT 1994: It's at a stage I'd call "alpha release" if I were into that sort of jargon, which means this program will probably dump core a lot. Please report such incidents, along with any solutions, back to me. I've used it to morph images of Wendy and myself, with significant success. I put the images onto video and it looks really nice. I've never seen any other morphing program at all, so I'm sure my idea of a GUI differs greatly from the "professional" commercial packages, but according to one guy I showed this to, my way is better. If you disagree, please tell me what I can do to make my program more usable. I already have a lot of ideas about how to make it better-- features to add, etc., but at the moment it's pretty usable (enough so that I've decided to release it.) It's self documenting, and I've compiled and run the program on SunOS machines, Solaris machines, SGI's, and HPUX, although on the HP it's slower than molasses. It _flies_ on the Reality Engine. I'm trying to figure out how to get this widely distributed. As far as I know, it's the only publically available image morphing program, for X or any other platform. If any of you know of another publically available morphing program, please let me know so I can kill myself. I also wrote a program that rapidly displays the images generated by Xdiw (for X or MSDOS), for those of you who don't have a high speed JPEG CoDec like I do :) xmorph-20140707+nmu2/gtkmorph2.glade0000664000000000000000000043463312356304633013777 0ustar True gtkmorph GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True GTK_PACK_DIRECTION_LTR GTK_PACK_DIRECTION_LTR True File True True load session True True save session True True True add an image True True load a "differential mesh", that is a mesh representing the difference of two meshes load a difference True True True Quit True True Edit True True show all images True True show mag True True True resulting image size... True True show morph factors True True Settings True True Morph True True the mesh of the resulting image is set to an interpolation of the input images' meshes, weighted by the ``mesh factors'' interpolate meshes True True the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button morph images True True True adjust points of meshes confronting original images and the morph adjust all meshes True True equalize input images so that the subband of wavelet transform have the same energies wavelet equalize True True True restore morph coefficients... True True start True True end True True equal True True stores internally the state of all mesh and image-blending factors (to make morph sequences) store morph coefficients... True True start True True end True True create and save many morphs, equally spaced between the morph start and the morph end (that you have already stored with the above menu) morph sequence True True True Help True True guide... True True load example session True True True help... True True generic help True True warp help True True mesh tips True True morph help True True feature help True True True why the beep? True 0 False False True False 0 True False 0 3 True load the image. This image may not be warped or morphed, but it may help in setting the resulting mesh True load image True GTK_RELIEF_NORMAL True 0 False False 3 True True load mesh True GTK_RELIEF_NORMAL True 0 False False 3 True True save mesh True GTK_RELIEF_NORMAL True 0 False False 3 True ``edit template'': view the loaded image and edit the mesh on it. \n ``view morphed'': view the result of morphing. ``v.morph&mesh'' as above but with the mesh. ``edit eyes points'' sets the reference position of the eyes True 0 True True edit template True True view morph True True v morph&meshes True True edit eyes points True 0 False False 3 True True settings True GTK_RELIEF_NORMAL True 0 False False 3 True set this mesh to be an interpolation of all other meshes, using ``mesh factors'' as weights True interpol. meshes True GTK_RELIEF_NORMAL True 0 False False 3 True mix all the warped images in the ``resulting image'' using ``image blending factors'' as weights True do blending True GTK_RELIEF_NORMAL True 0 False False 3 True the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button. True do morph True GTK_RELIEF_NORMAL True 0 False False 3 True it saves whatever image is currently shown in the window True save image True GTK_RELIEF_NORMAL True 0 False False 3 True back to guide True guide True GTK_RELIEF_NORMAL True 0 False False 0 False False True GTK_SHADOW_OUT GTK_POS_LEFT GTK_POS_TOP True False 0 True False 0 2 True True GTK_RELIEF_NORMAL True 15 10 True 0 False False 2 True False False True True False True True True True 0 True * False True GTK_SELECTION_BROWSE 0 True True 2 True add new feature to the end of list True new True GTK_RELIEF_NORMAL True 2 False False 2 True True rename True GTK_RELIEF_NORMAL True 2 False False 2 True pack the selected points in this feature True pack True GTK_RELIEF_NORMAL True 2 False False 2 True unpack this feature and transforms all points of it to selected points True unpack True GTK_RELIEF_NORMAL True 2 False False 2 True delete last feature True delete True GTK_RELIEF_NORMAL True 2 False False 0 False False True GTK_ORIENTATION_HORIZONTAL GTK_TOOLBAR_BOTH True True 2 True move single point edit True cursor_left.xpm True True False True False True 2 True move whole feature move True hand01.xpm True True False False tool_edit False True 2 True stretch whole feature stretch True transform.xpm True True False False tool_edit False True True True True False True - False False GTK_JUSTIFY_CENTER False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 False False 2 True select True pencil_y.xpm True True False False tool_edit False True 2 True unselect True eraser.xpm True True False False tool_edit False True 2 True assign point to feature assign True pencil.xpm True True False False tool_edit False True 0 False False 0 False True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True GTK_SHADOW_ETCHED_OUT True 0 0.5 GTK_SHADOW_ETCHED_IN True GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True error False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True True GTK_SHADOW_OUT GTK_POS_LEFT GTK_POS_TOP True 0.019999999553 0.5 GTK_SHADOW_ETCHED_IN True True 0 True width False False GTK_JUSTIFY_CENTER False False 0.699999988079 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True True True 1 0 True GTK_UPDATE_ALWAYS False False 400 16 4000 1 10 10 1 True True True height False False GTK_JUSTIFY_CENTER False False 0.699999988079 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False True True True 1 0 True GTK_UPDATE_ALWAYS False False 300 16 4000 1 50 50 0 True True 2 True True x2 True GTK_RELIEF_NORMAL True 1 False False 2 True True /2 True GTK_RELIEF_NORMAL True 1 False False 2 True True apply True GTK_RELIEF_NORMAL True 6 False False True resulting image size False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 False False 0 True True True welcome False False GTK_JUSTIFY_LEFT True False 0 0 1 1 PANGO_ELLIPSIZE_NONE -1 False 0 0 False True 10 True error! GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False True True True True GTK_RELIEF_NORMAL True True load the selected image True True GTK_RELIEF_NORMAL True True error! GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True False 0 4 True True load image True GTK_RELIEF_NORMAL True 0 False False 4 True True load mesh True GTK_RELIEF_NORMAL True 0 False False 4 True True save mesh True GTK_RELIEF_NORMAL True 0 False False 4 True save difference from this mesh to other mesh True save diff True GTK_RELIEF_NORMAL True 0 False False 3 True ``edit mesh'': view the loaded image and edit the mesh on it. ``view warp'': view the result of warping the loaded image from this mesh to the resulting mesh. ``v. warp&meshes'' as before but with both meshes on. ``choose subimage'' choose which subimage of the loaded image you wish to use. You can also use the 'settings' button to change these settings more finely. True 0 True True edit mesh True True view warp True True v. warp&meshes True True choose subimage True 0 False False 4 True True settings True GTK_RELIEF_NORMAL True 0 False False 4 True warp this image from this mesh to the resulting mesh, and show the result in this window or an accessory window True do warp True GTK_RELIEF_NORMAL True 0 False False 4 True it saves whatever image is currently shown in the window True save image True GTK_RELIEF_NORMAL True 0 False False 4 True back to guide True guide True GTK_RELIEF_NORMAL True 0 False False 0 False False True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True GTK_SHADOW_ETCHED_OUT True 0 0.5 GTK_SHADOW_ETCHED_IN True True True True True GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK True error False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True True these coefficents decide how much this image/mesh will influence the final morph GTK_SHADOW_OUT GTK_POS_LEFT GTK_POS_TOP True 0 0.5 GTK_SHADOW_ETCHED_IN 5 True 2 3 False 5 6 True image blending False False GTK_JUSTIFY_CENTER False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 True mesh interp. False False GTK_JUSTIFY_CENTER False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 True True GTK_POS_BOTTOM 0 GTK_UPDATE_DELAYED False 40 -100 200 1 10 10 1 2 0 1 fill True True GTK_POS_BOTTOM 0 GTK_UPDATE_DELAYED False 20 -100 200 1 10 10 1 2 1 2 fill True when you morph the images, or you ``do mixing'', this factor will measure how much this image will show in the mixing in the resulting image True 1 0 True GTK_UPDATE_IF_VALID False False 20 -100 200 1 10 10 2 3 1 2 True when you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's mesh True 1 0 True GTK_UPDATE_IF_VALID False False 20 -100 200 1 10 10 2 3 0 1 True coefficients False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 False False True GTK_SHADOW_OUT GTK_POS_LEFT GTK_POS_TOP True 0 0.5 GTK_SHADOW_ETCHED_IN True False 0 True infer the subimage from the eyes position True reset True GTK_RELIEF_NORMAL True 1 False False True x coordinate of center True False True c x False False GTK_JUSTIFY_CENTER False False 0.75 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 2 True True True True 1 0 True GTK_UPDATE_IF_VALID False False 0 -4000 4000 1 10 10 0 True True True y coordinate of center True False True c y False False GTK_JUSTIFY_CENTER False False 0.75 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 2 True True True True 1 0 True GTK_UPDATE_IF_VALID False False 0 -4000 4000 1 10 10 0 True True True width False False GTK_JUSTIFY_CENTER False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True False True True 1 0 True GTK_UPDATE_IF_VALID False False 420 8 8000 1 100 100 0 True True True height False False GTK_JUSTIFY_CENTER False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True False True True 1 0 True GTK_UPDATE_IF_VALID False False 300 8 8000 1 100 100 0 True True 1 True True apply True GTK_RELIEF_NORMAL True 7 False False True subimage position False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 False False True warning GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False True True False 0 True GTK_BUTTONBOX_END 2 True True True True True ok True GTK_RELIEF_NORMAL True 0 0 False False GTK_PACK_END True warning! False False GTK_JUSTIFY_LEFT True False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True True warped image GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False 200 200 True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True 0 0.5 GTK_SHADOW_NONE True 0.5 0.5 1 1 0 0 12 0 True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True GTK_SHADOW_IN True True <b>frame6</b> False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item True True unselect point True True select point True True assign point True True adjust mesh point position w.r.t. previous image adjust True True True add horizontal line True True add vertical line True True del horizontal line True True del vertical line True True True smooth True True gtkmorph movie GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True False 0 True False 0 True how many frames will be saved; each will be saved in a file True False True how many frames False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 4 False False True True 1 0 False GTK_UPDATE_ALWAYS False False 10 2 500 1 10 10 3 False True 0 True True True howmany.xpm 0.5 0.5 0 0 0 True True 0 True True True False 0 True the files of the frames will be numbered sequentially starting from this number True False True number of first file False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 4 False False True True 1 0 False GTK_UPDATE_ALWAYS False False 1 -2500 2500 1 10 10 4 False False 5 True True True False 0 True file base name False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 4 False False True True True True 0 frame True * False 3 True True 4 True True True 0 0.5 GTK_SHADOW_ETCHED_IN True 3 2 True 0 0 True creates an animated gif (needs 'convert' from imagemagick) and plays it (needs 'animate' from imagemagick) True create animated gif True GTK_RELIEF_NORMAL True False False True 0 1 0 1 fill True show animated sequence after saving it all (on some platforms, it may need 'animate' command from imagemagick) True animate sequence True GTK_RELIEF_NORMAL True False False True 1 2 0 1 fill 2 True resaves and replays animations True True replay True GTK_RELIEF_NORMAL True 1 2 2 3 fill True creates an mpeg file and plays it; will use a parameter file (see help) (needs 'mpeg_encode' and 'mpeg_play') True creates mpeg True GTK_RELIEF_NORMAL True False False True 0 1 1 2 fill True creates an AVI file in MPEG4 format (needs 'mplayer' and 'mencoder') True creati AVI MPEG4 True GTK_RELIEF_NORMAL True False False True 1 2 1 2 fill True False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 2 3 fill True animations False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 2 True True True True 2 2 True creates and saves all morphs, builds animations True True gtk-media-play True GTK_RELIEF_NORMAL True 0 False False True False stops the computation of frames True gtk-stop True GTK_RELIEF_NORMAL True 0 False False 2 True True True gtk-cancel True GTK_RELIEF_NORMAL True 0 False False 2 True True True gtk-help True GTK_RELIEF_NORMAL True 0 False False 6 True True True gtkmorph guide GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True example.xpm 0.5 0.5 0 0 0 False True True GTK_POLICY_NEVER GTK_POLICY_ALWAYS GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True False False True GTK_JUSTIFY_LEFT GTK_WRAP_WORD True 0 0 0 0 0 0 0 True True True True 0 2 True go back to previous guide pane True prev True GTK_RELIEF_NORMAL True 0 False False 2 True do what is proposed in this pane True do it True GTK_RELIEF_NORMAL True 0 False False 2 True skip this and go to next guide pane True next True GTK_RELIEF_NORMAL True 0 False False 0 False True True question GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False True True False 0 True GTK_BUTTONBOX_END True False 0 True True Yes True GTK_RELIEF_NORMAL True 0 True False True True No True GTK_RELIEF_NORMAL True 2 True False 0 False True GTK_PACK_END True question? False False GTK_JUSTIFY_LEFT True False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True 10 True Select Color GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False True True True GTK_RELIEF_NORMAL True True True True GTK_RELIEF_NORMAL True True True True GTK_RELIEF_NORMAL True True False False True window1 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True GTK_SHADOW_OUT GTK_POS_LEFT GTK_POS_BOTTOM True GTK_ORIENTATION_HORIZONTAL GTK_TOOLBAR_BOTH True True True move single point edit True cursor_left.xpm True True False False False True True move whole feature move True hand01.xpm True True False True tool_edit False True True stretch whole feature stretch True transform.xpm True True False False tool_edit False True 0 True True True gtkmorph mag GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False 200 200 True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True True 0 True 1 False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True 1 0 False GTK_UPDATE_ALWAYS False False 300 50 1000 10 50 50 0 True True True True track True GTK_RELIEF_NORMAL True True False True 0 False False 0 False False True 0 True True True differential mesh GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False 300 True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True mesh interp. False False GTK_JUSTIFY_CENTER False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True GTK_POS_BOTTOM 0 GTK_UPDATE_DELAYED False 0 -100 100 1 10 10 0 True True True when you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's mesh True 1 0 True GTK_UPDATE_IF_VALID False False 0 -100 100 1 10 10 0 False False xmorph-20140707+nmu2/gimp-README0000664000000000000000000000423112356304633012661 0ustar From gord@bambam.m-tech.ab.ca Sun Sep 28 15:15:25 1997 Sender: gord@trick.profitpress.com To: michael.gourlay@colorado.edu X-Attribution: Gord Subject: xmorph GIMP plugin (1/2) Mime-Version: 1.0 (split by tm-edit 7.92) Content-Type: message/partial; id="Sun_Sep_28_15:17:00_1997@trick.profitpress.com"; number=1; total=2 From: Gordon Matzigkeit Date: 28 Sep 1997 15:17:00 -0600 Message-Id: <86d8lt3zqr.fsf@trick.profitpress.com> Lines: 999 Status: O To: michael.gourlay@colorado.edu Subject: xmorph GIMP plugin X-Attribution: Gord Gcc: nnml:archive Mime-Version: 1.0 (generated by tm-edit 7.92) Content-Type: multipart/mixed; boundary="Multipart_Sun_Sep_28_15:17:00_1997-1" Content-Transfer-Encoding: 7bit --Multipart_Sun_Sep_28_15:17:00_1997-1 Content-Type: text/plain; charset=US-ASCII Hi! The attached diff was made from xmorph-11sep97 to my GIMP plugin version. Running tar -zxvf xmorph-11sep97.tar.gz cd xmorph-11sep97 patch -p0 < ../xmorph-11sep97-gimp.diff should apply the patch cleanly. Then, search the Makefile.orig for GIMP, and you'll see how to build the plugin or non-plugin version. A few notes: * I think I introduced a memory leak somewhere in the initialization code, because there are no longer just 48 blocks. AFAIK this leak is not cumulative. * I've changed the TGA-writing code to output files that end in .tga. This makes sense to me. * There is now a `preview' option that does not actually output anything. This is useful for the GIMP mode... I'm not sure how useful it is for regular users. * All GIMP-specific code is protected with `#ifdef GIMP' and `if (plugin)', as I mentioned before. So, xmorph should behave identically if you're not running it as a plugin, whether or not it has plugin support built in. Let me know if there's anything in this patch that is unclear, or if there are parts that don't apply cleanly to your latest development sources. After you've released a merged version, I'd like to try it out, and upload it to the GIMP plugin registry. Thanks a lot, -- Gord Matzigkeit | Proudly running pieces of the GNU operating system. gord@m-tech.ab.ca | Jacques Cousteau loved programming in assembler. xmorph-20140707+nmu2/intl/0000775000000000000000000000000012356343462012020 5ustar xmorph-20140707+nmu2/config.h.in0000664000000000000000000001042712356342007013073 0ustar /* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* the gettext environment */ #undef GETTEXT_PACKAGE /* Define to 1 if you have the `atexit' function. */ #undef HAVE_ATEXIT /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT /* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* use code that links to fftw3 library */ #undef HAVE_FFTW /* Define to 1 if you have the header file. */ #undef HAVE_FFTW3_H /* Define to 1 if you have the `floor' function. */ #undef HAVE_FLOOR /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_LIBINTL_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMMOVE /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the `sqrt' function. */ #undef HAVE_SQRT /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ #undef HAVE_STAT_EMPTY_STRING_BUG /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* use code that links to Waili wavelet library */ #undef HAVE_WAILI /* Define to 1 if you have the header file. */ #undef HAVE_WAILI_IMAGE_H /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Define to 1 if your C compiler doesn't accept -c and -o together. */ #undef NO_MINUS_C_MINUS_O /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to `unsigned int' if does not define. */ #undef size_t xmorph-20140707+nmu2/aclocal.m40000664000000000000000000013000012356342005012674 0ustar # generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # intlmacosx.m4 serial 3 (gettext-0.18) dnl Copyright (C) 2004-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on MacOS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in MacOS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_TRY_LINK([#include ], [CFPreferencesCopyAppValue(NULL, NULL)], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in MacOS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 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 1 # 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.11' 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.11.6], [], [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.11.6])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, 2011 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 1 # 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, 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 9 # 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 m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 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 12 # 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'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --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='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 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 5 # _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"]) ]) # 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 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 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 16 # 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.62])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) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl 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 ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 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 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 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, 2009 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_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Copyright (C) 1999, 2000, 2001, 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 6 # AM_PROG_CC_C_O # -------------- # Like AC_PROG_CC_C_O, but changed for automake. AC_DEFUN([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC_C_O])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi dnl Make sure AC_PROG_CC is never called again, or it will override our dnl setting of CC. m4_define([AC_PROG_CC], [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 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 6 # 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 if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --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, 2011 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 1 # 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, 2010 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_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, 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 5 # 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 # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( 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, 2011 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 1 # 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, 2008, 2010 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_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 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. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} 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 m4_include([m4/gettext.m4]) m4_include([m4/iconv.m4]) m4_include([m4/lib-ld.m4]) m4_include([m4/lib-link.m4]) m4_include([m4/lib-prefix.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/nls.m4]) m4_include([m4/po.m4]) m4_include([m4/progtest.m4]) xmorph-20140707+nmu2/morph/0000775000000000000000000000000012356343462012177 5ustar xmorph-20140707+nmu2/morph/main.c0000664000000000000000000002035212356304631013264 0ustar /* main.c : morph main program // // A GUI or command line user interface to a mesh warping algorithm // Written and Copyright (C) 1994-2000 by Michael J. Gourlay This file is part of Xmorph. Xmorph 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. Xmorph 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 Xmorph; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include "mesh.h" #include "RgbaImage.h" #ifdef X_GUI #include #include "xmorph.h" #endif #include "../xmorph/main.h" #define cl_match_arg(cmd) (!strcmp(argv[apc], cmd) && ((apc+1)ncols != src_imgP->ncols) || (dst_imgP->nrows != src_imgP->nrows)) { fprintf(stderr, "%s: images are not the same size\n", argv[0]); return 1; } } else { rgbaImageAlloc(dst_imgP, src_imgP->ncols, src_imgP->nrows); rgbaImageTestCreate(dst_imgP, 1); } #ifdef X_GUI { XtAppContext app; app = initialize_application(src_imgP->ncols, src_imgP->nrows, src_mesh_fn, dst_mesh_fn, &argc, argv, TRUE); XtAppMainLoop(app); } #else /* Command line interface */ if(verbose) fprintf(stderr, "morph_tween : %g\n", morph_tween); if(verbose) fprintf(stderr, "dissolve_tween: %g\n", dissolve_tween); { MeshT *src_mesh = meshNew(4,4); MeshT *dst_mesh = meshNew(4,4); if (NULL != src_mesh_fn) { if(meshRead(src_mesh, src_mesh_fn)) { fprintf(stderr, "%s: ERROR: failed to read src mesh '%s'\n", argv[0], src_mesh_fn); rgbaImageFree(src_imgP); rgbaImageFree(dst_imgP); meshDelete(src_mesh); meshDelete(dst_mesh); return 1; } } else { meshReset(src_mesh, src_imgP->ncols, src_imgP->nrows); } meshScale(src_mesh, src_imgP->ncols, src_imgP->nrows); if (NULL != dst_mesh_fn) { if(meshRead(dst_mesh, dst_mesh_fn)) { fprintf(stderr, "%s: ERROR: failed to read dst mesh '%s'\n", argv[0], dst_mesh_fn); rgbaImageFree(dst_imgP); rgbaImageFree(dst_imgP); meshFree(src_mesh); meshDelete(src_mesh); meshDelete(dst_mesh); return 1; } } else { meshReset(dst_mesh, dst_imgP->ncols, dst_imgP->nrows); } meshScale(dst_mesh, dst_imgP->ncols, dst_imgP->nrows); { RgbaImageT *src_warped = rgbaImageNew(); RgbaImageT *dst_warped = rgbaImageNew(); if(!skip_warp) { if(verbose) printf("."); rgbaImageWarp(src_imgP, src_warped, src_mesh, dst_mesh, morph_tween); if(verbose) printf("."); rgbaImageWarp(dst_imgP, dst_warped, dst_mesh, src_mesh, morph_tween); if(verbose) printf("."); rgbaImageWrite(out_img_fn, src_warped, dst_warped, dissolve_tween); if(verbose) printf(".\n"); } else { rgbaImageWrite(out_img_fn, src_imgP, dst_imgP, dissolve_tween); } rgbaImageFree(dst_warped); rgbaImageDelete(dst_warped); rgbaImageFree(src_warped); rgbaImageDelete(src_warped); } meshBackupFree(); meshFree(src_mesh); meshDelete(src_mesh); meshFree(dst_mesh); meshDelete(dst_mesh); } #endif rgbaImageFree(src_imgP); rgbaImageFree(dst_imgP); return 0; } xmorph-20140707+nmu2/morph/Makefile.in0000664000000000000000000005615112356342010014240 0ustar # Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@ # beginning of file Makefile.conf # # GIMP: Adds GIMP plugin functionality to xmorph. # Also define NEED_GIMP=1. If this is defined, then you may run # xmorph both as a standalone application, and by adding it to your # ~/.gimp/plug-ins directory (usually via a symlink). From what I # understand, this will not work for tkmorph. See GIMPLIBS, below. # # REAL: Size of a "REAL" used by spline code. # Correct value is "double". Do not change. # # RGBA_MESH_WARP: flag to tell RgbaImage to include mesh-based warping # methods. Do not change. # # RGBA_TK: flag to tell RgbaImage to include Tk Photo image code. # DO NOT DEFINE for xmorph. Only define for tkmorph. # Also change the "all" target if RGBA_TK is changed. # # RED_GREEN_COLOR_BLIND: uses blue instead of red for color of # 'destination' mesh lines and points. # # STRDUP_PROTO_BROKEN: For some versions of GNU C, the string.h # header file has an incorrect prototype for strdup. If you # experience problems compiling, related to the strdup prototype, # then define STRDUP_PROTO_BROKEN. # For tkmorph: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRGBA_TK # For colorblind: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRED_GREEN_COLOR_BLIND # For GIMP plugin: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DGIMP -DNEED_GIMP=1 # Broken GNU C: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DSTRDUP_PROTO_BROKEN # Most systems: #DEFINES=-DREAL=double -DRGBA_MESH_WARP VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = $(srcdir)/../Makefile.conf $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in bin_PROGRAMS = morph$(EXEEXT) subdir = morph ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_morph_OBJECTS = morph-main.$(OBJEXT) morph_OBJECTS = $(am_morph_OBJECTS) am__DEPENDENCIES_1 = morph_DEPENDENCIES = $(am__DEPENDENCIES_1) ../libmorph/libmorph.la \ $(am__DEPENDENCIES_1) morph_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(morph_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --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 = $(morph_SOURCES) DIST_SOURCES = $(morph_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac 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@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ 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@ 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@ CFLAGS_CONF = -DREAL=double -DRGBA_MESH_WARP # # Must have the X libraries: X11, MIT Athena Widgets, X Toolkit, X Misc Utils # # Linux 2.0: must have /usr/X11/lib # or /usr/X11R6/lib explicitly in library search path # # SunOS (pre-Solaris): Might have to use static X libraries because # dynamic X libraries are incomplete. # # Solaris: To link to openwin libraries, add -L/usr/openwin/lib # # IRIX6.2: Need to have -lcvt after -lXt # If you receive an error about an unresolved symbol named # SgCvtCreateConversionContext, you need to include -lcvt. # The cvt library is available in the goldengate.sw.goldengate package # Sun Solaris: #XLIBS=-L/usr/openwin/lib -lXaw -lXmu -lXext -lXt -lX11 # Linux: #XLIBS=-L/usr/X11/lib -lXaw -lXmu -lXext -lXt -lX11 #XLIBS=-L/usr/X11R6/lib -lXaw -lXmu -lXext -lXt -lX11 # SGI IRIX: #XLIBS= -lXaw -lXmu -lXext -lXt -lcvt -lX11 XLIBS = @X_LIBS@ @X_PRE_LIBS@ -lXaw -lXmu -lXext -lXt -lX11 @X_EXTRA_LIBS@ # If you have defined -DGIMP in the DEFINES section, then xmorph will # be built to run both as a standalone application and as a GIMP # plugin. Here, you need to specify the appropriate GIMP libraries. # # Comment out this variable if you have not used -DGIMP. #GIMPLIBS=-L/usr/local/lib -lgimp -lglib #GIMPLIBS=-lgimp -lglib GIMPLIBS = # # Must have the math library (-lm). # # # Linux: Add -ldl if you get link error regarding dlerror, dlopen, or # dlsym # # # FreeBSD: Do not use static libraries, because for some reason they # do not work. # # # SunOS: Use the /usr/lib/debug/malloc.o module if you want to do # memory checking. # Also see the CFLAGS comments about memory checking under SunOS. # # # SGI IRIX: Use -lmalloc to link with their special memory allocation # routines. If you get an error about mallopt being # unresolved, then you will have to link with the libmalloc # shared object. Do this by specifying -lmalloc here. # # -lmalloc_cv has more robust memory checking #NON_GUI_LIBS = -lm #NON_GUI_LIBS = -lm -ldl #NON_GUI_LIBS = -lm /usr/lib/debug/malloc.o #NON_GUI_LIBS = -lm -lmalloc NON_GUI_LIBS = -lm INCLUDES = -I$(top_srcdir)/libmorph -I$(top_srcdir)/intl morph_LDADD = $(INTLLIBS) ../libmorph/libmorph.la $(NON_GUI_LIBS) morph_SOURCES = main.c morph_CFLAGS = $(CFLAGS) -DNDEBUG_LIBMORPH_REF_COUNT all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.conf $(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 morph/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu morph/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; $(srcdir)/../Makefile.conf: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list morph$(EXEEXT): $(morph_OBJECTS) $(morph_DEPENDENCIES) $(EXTRA_morph_DEPENDENCIES) @rm -f morph$(EXEEXT) $(morph_LINK) $(morph_OBJECTS) $(morph_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morph-main.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(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@ $(am__mv) $(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@ $(am__mv) $(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 $@ $< morph-main.o: main.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(morph_CFLAGS) $(CFLAGS) -MT morph-main.o -MD -MP -MF $(DEPDIR)/morph-main.Tpo -c -o morph-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/morph-main.Tpo $(DEPDIR)/morph-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='morph-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(morph_CFLAGS) $(CFLAGS) -c -o morph-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c morph-main.obj: main.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(morph_CFLAGS) $(CFLAGS) -MT morph-main.obj -MD -MP -MF $(DEPDIR)/morph-main.Tpo -c -o morph-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/morph-main.Tpo $(DEPDIR)/morph-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='morph-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(morph_CFLAGS) $(CFLAGS) -c -o morph-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` 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) set x; \ 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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS 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 # ### ACGM : the project now ignores this variable # # Read the man page for your linker before sending me email about # problems. # # Apollo w/ Domain/OS, BSD: omit XLIBS #LIBS = $(GIMPLIBS) $(NON_GUI_LIBS) #LIBS = # end of file Makefile.conf # 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: xmorph-20140707+nmu2/morph/Makefile.am0000664000000000000000000000050012356304631014221 0ustar ## Process this file with automake to produce Makefile.in include ../Makefile.conf INCLUDES = -I$(top_srcdir)/libmorph -I$(top_srcdir)/intl bin_PROGRAMS = morph morph_LDADD = $(INTLLIBS) ../libmorph/libmorph.la $(NON_GUI_LIBS) morph_SOURCES = main.c morph_CFLAGS = $(CFLAGS) -DNDEBUG_LIBMORPH_REF_COUNT xmorph-20140707+nmu2/libmorph/0000775000000000000000000000000012356343462012666 5ustar xmorph-20140707+nmu2/libmorph/sinc_256.h0000664000000000000000000005034312356304633014371 0ustar /* # Created by Octave 2.1.35, Thu May 27 10:39:50 2004 CEST */ /* # name: a */ /* # type: matrix */ /* # rows: 1 */ /* # columns: 1025 */ /* [0,1] is divided in 256 parts; sinc() is tableized on [0,4]*/ #define SINC_TABLE_UNIT 256 const double sinc_table[SINC_TABLE_UNIT*4+1]= {1, 0.99997490048705, 0.999899604216142, 0.999774117990856, 0.999598453149679, 0.999372625564787, 0.999096655640336, 0.998770568310265, 0.998394393035618, 0.997968163801375, 0.997491919112793, 0.996965701991267, 0.996389559969702, 0.995763545087404, 0.995087713884477, 0.99436212739575, 0.993586851144206, 0.992761955133942, 0.99188751384264, 0.990963606213557, 0.989990315647039, 0.988967729991555, 0.987895941534253, 0.986775046991037, 0.985605147496174, 0.984386348591423, 0.983118760214691, 0.981802496688219, 0.980437676706299, 0.979024423322519, 0.97756286393654, 0.976053130280415, 0.974495358404433, 0.97288968866251, 0.971236265697115, 0.969535238423734, 0.967786760014884, 0.965990987883666, 0.964148083666867, 0.962258213207611, 0.960321546537559, 0.958338257858663, 0.956308525524472, 0.954232532021004, 0.952110463947164, 0.949942511994734, 0.947728870927921, 0.945469739562477, 0.943165320744382, 0.9408158213281, 0.938421452154413, 0.935982428027821, 0.933498967693537, 0.930971293814047, 0.928399632945265, 0.925784215512272, 0.923125275784645, 0.92042305185138, 0.917677785595408, 0.914889722667714, 0.912059112461055, 0.909186208083284, 0.90627126633028, 0.903314547658495, 0.900316316157106, 0.897276839519795, 0.894196389016141, 0.891075239462644, 0.887913669193369, 0.884711960030229, 0.881470397252895, 0.878189269568351, 0.874868869080083, 0.871509491256922, 0.868111434901528, 0.864675002118533, 0.861200498282333, 0.857688232004546, 0.854138515101133, 0.850551662559182, 0.846927992503372, 0.8432678261621, 0.8395714878333, 0.835839304849939, 0.832071607545196, 0.828268729217346, 0.824431006094321, 0.820558777297987, 0.816652384808115, 0.812712173426065, 0.808738490738177, 0.804731687078882, 0.800692115493534, 0.796620131700964, 0.792516094055767, 0.78838036351032, 0.784213303576537, 0.780015280287371, 0.775786662158059, 0.771527820147119, 0.767239127617103, 0.762920960295116, 0.758573696233089, 0.754197715767832, 0.749793401480856, 0.745361138157977, 0.740901312748699, 0.73641431432539, 0.731900534042252, 0.727360365094082, 0.722794202674842, 0.718202443936035, 0.71358548794489, 0.708943735642371, 0.704277589800999, 0.699587454982507, 0.694873737495324, 0.690136845351899, 0.685377188225859, 0.680595177409025, 0.675791225768264, 0.670965747702215, 0.666119159097861, 0.661251877286975, 0.656364321002438, 0.651456910334427, 0.646530066686494, 0.641584212731523, 0.636619772367581, 0.63163717067367, 0.626636833865371, 0.621619189250407, 0.616584665184108, 0.611533691024797, 0.606466697089098, 0.601384114607171, 0.59628637567788, 0.591173913223897, 0.586047160946749, 0.580906553281814, 0.575752525353269, 0.570585512928995, 0.56540595237545, 0.560214280612503, 0.555010935068248, 0.549796353633792, 0.544570974618032, 0.539335236702415, 0.534089578895698, 0.528834440488703, 0.52357026100908, 0.518297480176077, 0.513016537855323, 0.507727874013639, 0.502431928673864, 0.497129141869721, 0.491819953600707, 0.486504803787037, 0.481184132224619, 0.475858378540095, 0.470527982145922, 0.46519338219553, 0.459855017538531, 0.45451332667601, 0.449168747715885, 0.443821718328353, 0.438472675701421, 0.433122056496526, 0.427770296804251, 0.422417832100147, 0.417065097200656, 0.411712526219149, 0.406360552522073, 0.401009608685231, 0.395660126450176, 0.390312536680744, 0.384967269319715, 0.379624753345624, 0.37428541672971, 0.368949686393017, 0.363617988163652, 0.358290746734199, 0.352968385619303, 0.347651327113417, 0.342339992248728, 0.337034800753259, 0.331736171009154, 0.326444520011154, 0.321160263325261, 0.315883815047604, 0.310615587763502, 0.305355992506736, 0.300105438719035, 0.294864334209768, 0.289633085115863, 0.28441209586195, 0.279201769120731, 0.27400250577358, 0.268814704871382, 0.263638763595621, 0.258475077219701, 0.253324039070522, 0.248186040490318, 0.243061470798741, 0.237950717255215, 0.232854165021556, 0.227772197124857, 0.222705194420662, 0.217653535556396, 0.212617596935103, 0.207597752679449, 0.202594374596033, 0.197607832139978, 0.192638492379827, 0.187686719962747, 0.182752877080024, 0.177837323432881, 0.172940416198603, 0.168062509996977, 0.163203956857058, 0.158365106184254, 0.153546304727741, 0.148747896548207, 0.143970222985932, 0.139213622629205, 0.134478431283079, 0.129764981938479, 0.125073604741643, 0.120404626963932, 0.115758372971974, 0.111135164198182, 0.106535319111626, 0.101959153189259, 0.0974069788875273, 0.0928791056143315, 0.0883758397013731, 0.0838974843768678, 0.0794443397386396, 0.0750167027275947, 0.0706148671015776, 0.0662391234096138, 0.0618897589665404, 0.0575670578280276, 0.0532713007659928, 0.0490027652444116, 0.0447617253955263, 0.040548451996455, 0.036363212446204, 0.0322062707430845, 0.0280778874625376, 0.0239783197353682, 0.0199078212263902, 0.015866642113487, 0.0118550290670852, 0.00787322523004837, 0.00392147019798846, 3.89804309105148e-17, -0.00389095292018302, -0.00775115972260569, -0.0115803951890832, -0.0153784377407642, -0.019145069455264, -0.0228800760833665, -0.0265832470652922, -0.0302543755465339, -0.0338932583932542, -0.0374996962072478, -0.0410734933404641, -0.0446144579090911, -0.0481224018071979, -0.0515971407199358, -0.055038494136296, -0.0584462853614239, -0.0618203415284872, -0.0651604936101004, -0.0684665764293003, -0.0717384286700753, -0.0749758928874464, -0.0781788155170991, -0.0813470468845657, -0.0844804412139577, -0.0875788566362475, -0.0906421551970991, -0.0936702028642471, -0.0966628695344239, -0.0996200290398352, -0.102541559154182, -0.105427341598233, -0.108277262044937, -0.111091210124093, -0.113869079426558, -0.116610767508009, -0.119316175892246, -0.121985210074046, -0.124617779521568, -0.127213797678294, -0.129773181964535, -0.132295853778469, -0.134781738496738, -0.137230765474593, -0.139642868045584, -0.142017983520807, -0.144356053187697, -0.146657022308371, -0.148920840117534, -0.151147459819924, -0.153336838587322, -0.15548893755511, -0.157603721818389, -0.159681160427652, -0.161721226384014, -0.163723896634003, -0.165689152063911, -0.167616977493702, -0.169507361670489, -0.171360297261572, -0.173175780847036, -0.174953812911925, -0.176694397837979, -0.178397543894938, -0.180063263231421, -0.181691571865379, -0.183282489674116, -0.184836040383892, -0.186352251559102, -0.187831154591033, -0.189272784686204, -0.19067718085429, -0.192044385895628, -0.193374446388314, -0.194667412674888, -0.19592333884861, -0.197142282739329, -0.198324305898949, -0.199469473586492, -0.200577854752762, -0.201649522024612, -0.202684551688813, -0.203683023675534, -0.20464502154143, -0.205570632452343, -0.206459947165614, -0.207313060012022, -0.208130068877332, -0.208911075183471, -0.209656183869333, -0.210365503371202, -0.211039145602819, -0.211677225935072, -0.212279863175328, -0.212847179546406, -0.213379300665186, -0.213876355520874, -0.214338476452904, -0.214765799128502, -0.215158462519901, -0.215516608881209, -0.215840383724949, -0.216129935798254, -0.216385417058737, -0.216606982650025, -0.216794790876974, -0.216949003180558, -0.217069784112443, -0.21715730130924, -0.217211725466452, -0.217233230312111, -0.217221992580109, -0.217178191983227, -0.217102011185875, -0.216993635776524, -0.216853254239861, -0.216681057928649, -0.216477241035314, -0.216242000563239, -0.215975536297797, -0.215678050777106, -0.215349749262515, -0.214990839708834, -0.214601532734295, -0.214182041590269, -0.213732582130717, -0.213253372781409, -0.212744634508886, -0.212206590789194, -0.211639467576372, -0.211043493270721, -0.21041889868683, -0.209765917021398, -0.209084783820817, -0.208375736948562, -0.207639016552348, -0.206874865031101, -0.206083527001715, -0.205265249265613, -0.204420280775119, -0.20354887259964, -0.202651277891658, -0.201727751852548, -0.200778551698216, -0.199803936624569, -0.198804167772818, -0.197779508194608, -0.19673022281701, -0.195656578407335, -0.194558843537819, -0.193437288550153, -0.192292185519871, -0.19112380822061, -0.189932432088231, -0.188718334184817, -0.187481793162547, -0.186223089227452, -0.184942504103062, -0.183640320993937, -0.182316824549096, -0.180972300825355, -0.179607037250553, -0.178221322586704, -0.176815446893054, -0.17538970148906, -0.173944378917288, -0.172479772906246, -0.170996178333144, -0.16949389118659, -0.167973208529235, -0.166434428460356, -0.164877850078394, -0.16330377344345, -0.161712499539732, -0.160104330237978, -0.158479568257842, -0.156838517130254, -0.155181481159758, -0.15350876538684, -0.15182067555023, -0.150117518049214, -0.148399599905927, -0.146667228727655, -0.144920712669146, -0.143160360394923, -0.141386481041617, -0.139599384180323, -0.137799379778975, -0.13598677816475, -0.13416188998651, -0.132325026177276, -0.130476497916749, -0.128616616593872, -0.126745693769455, -0.124864041138839, -0.122971970494635, -0.121069793689521, -0.119157822599106, -0.117236369084876, -0.115305744957206, -0.113366261938465, -0.111418231626203, -0.109461965456429, -0.107497774666981, -0.105525970261009, -0.10354686297054, -0.101560763220175, -0.0995679810908789, -0.0975688262839016, -0.0955636080848096, -0.0935526353276489, -0.0915362163592357, -0.0895146590035796, -0.0874882705264461, -0.0854573576000593, -0.0834222262679515, -0.0813831819099627, -0.0793405292073929, -0.0772945721083143, -0.0752456137930435, -0.0731939566397812, -0.0711399021904208, -0.0690837511165313, -0.0670258031855174, -0.0649663572269623, -0.0629057110991536, -0.0608441616558012, -0.0587820047129463, -0.0567195350160669, -0.0546570462073855, -0.0525948307933785, -0.0505331801124961, -0.0484723843030906, -0.0464127322715622, -0.0443545116607216, -0.0422980088183761, -0.0402435087661398, -0.0381912951684738, -0.0361416503019586, -0.034094855024802, -0.0320511887465874, -0.0300109293982621, -0.027974353402375, -0.0259417356435597, -0.023913349439273, -0.0218894665107863, -0.0198703569544381, -0.0178562892131459, -0.0158475300481844, -0.0138443445112315, -0.0118469959166838, -0.00985574581424847, -0.00787085396180851, -0.00589257829857095, -0.0039211749184947, -0.00195689804400607, -3.89804309105148e-17, 0.00194926881186562, 0.00389065993858416, 0.00582392690091762, 0.0077488252182145, 0.00966511243292831, 0.0115725481348301, 0.0134708939849169, 0.0153599137390094, 0.017239373271041, 0.0191090405960304, 0.0209686858927417, 0.0228180815260237, 0.0246570020688309, 0.0264852243239215, 0.02830252734523, 0.0301086924589153, 0.0319035032840775, 0.0336867457531462, 0.0354582081319351, 0.0372176810393623, 0.0389649574668342, 0.0406998327972913, 0.0424221048239138, 0.0441315737684854, 0.0458280422994145, 0.0475113155494088, 0.049181201132805, 0.0508375091625488, 0.0524800522668263, 0.0541086456053435, 0.0557231068852538, 0.0573232563767314, 0.0589089169281887, 0.060479913981139, 0.0620360755846996, 0.0635772324097369, 0.0651032177626514, 0.0666138675988017, 0.0681090205355659, 0.0695885178650405, 0.0710522035663745, 0.0724999243177397, 0.0739315295079337, 0.0753468712476173, 0.076745804380185, 0.0781281864922658, 0.0794938779238577, 0.0808427417780899, 0.0821746439306184, 0.0834894530386487, 0.0847870405495895, 0.0860672807093331, 0.0873300505701672, 0.0885752299983115, 0.0898027016810846, 0.0910123511336974, 0.0922040667056742, 0.0933777395869012, 0.0945332638133014, 0.0956705362721387, 0.0967894567069464, 0.097889927722086, 0.0989718547869307, 0.100035146239678, 0.101079713290791, 0.102105470026065, 0.103112333409321, 0.10410022328474, 0.105069062378805, 0.106018776301895, 0.10694929354949, 0.107860545503024, 0.108752466430351, 0.109624993485858, 0.110478066710204, 0.111311629029689, 0.112125626255263, 0.112920007081167, 0.113694723083207, 0.114449728716672, 0.115184981313879, 0.115900441081365, 0.116596071096714, 0.117271837305028, 0.117927708515032, 0.118563656394835, 0.11917965546732, 0.11977568310519, 0.120351719525657, 0.120907747784777, 0.12144375377144, 0.121959726201002, 0.122455656608578, 0.122931539341984, 0.123387371554333, 0.123823153196295, 0.124238887008005, 0.124634578510639, 0.125010235997651, 0.12536587052567, 0.125701495905068, 0.126017128690187, 0.126312788169247, 0.126588496353911, 0.126844277968537, 0.127080160439097, 0.127296173881772, 0.127492351091231, 0.127668727528591, 0.127825341309056, 0.127962233189245, 0.128079446554211, 0.128177027404141, 0.128255024340757, 0.12831348855341, 0.128352473804869, 0.128372036416808, 0.128372235255002, 0.128353131714222, 0.128314789702835, 0.128257275627122, 0.128180658375298, 0.128085009301257, 0.127970402208022, 0.127836913330931, 0.12768462132053, 0.127513607225201, 0.127323954473516, 0.127115748856324, 0.126889078508564, 0.126644033890829, 0.126380707770656, 0.126099195203563, 0.125799593513838, 0.125482002275067, 0.125146523290419, 0.124793260572687, 0.124422320324079, 0.124033810915779, 0.123627842867266, 0.123204528825403, 0.122763983543293, 0.122306323858913, 0.121831668673518, 0.121340138929832, 0.120831857590019, 0.120306949613437, 0.119765541934187, 0.119207763438452, 0.118633744941635, 0.11804361916529, 0.117437520713869, 0.116815586051258, 0.11617795347714, 0.115524763103159, 0.114856156828908, 0.114172278317735, 0.113473272972373, 0.112759287910395, 0.112030471939505, 0.11128697553266, 0.11052895080303, 0.109756551478799, 0.108969932877818, 0.108169251882095, 0.107354666912147, 0.106526337901207, 0.105684426269286, 0.1048290948971, 0.10396050809987, 0.103078831600987, 0.10218423250555, 0.101276879273788, 0.100356941694359, 0.0994245908575402, 0.0984799991282991, 0.0975233401192677, 0.0965547886636063, 0.0955745207877714, 0.0945827136841869, 0.093579545683824, 0.0925651962286932, 0.0915398458442522, 0.0905036761117328, 0.0894568696403915, 0.0883996100396886, 0.087332081891396, 0.0862544707216416, 0.0851669629728918, 0.0840697459758765, 0.0829630079214605, 0.0818469378324643, 0.08072172553544, 0.0795875616324043, 0.0784446374725324, 0.0772931451238182, 0.076133277344704, 0.0749652275556813, 0.0737891898108702, 0.0726053587695788, 0.0714139296678471, 0.0702150982899781, 0.0690090609400622, 0.0677960144134971, 0.0665761559685061, 0.0653496832976611, 0.0641167944994115, 0.0628776880496255, 0.0616325627731435, 0.0603816178153524, 0.0591250526137801, 0.0578630668697172, 0.0565958605198665, 0.0553236337080273, 0.0540465867568159, 0.0527649201394264, 0.0514788344514361, 0.0501885303826588, 0.0488942086890501, 0.0475960701646665, 0.0462943156136846, 0.0449891458224822, 0.0436807615317862, 0.0423693634088885, 0.041055152019936, 0.0397383278022984, 0.0384190910370136, 0.0370976418213195, 0.0357741800412711, 0.0344489053444501, 0.0331220171127667, 0.0317937144353606, 0.0304641960816025, 0.0291336604742005, 0.0278023056624133, 0.0264703292953753, 0.0251379285955375, 0.0238053003322234, 0.022472640795309, 0.0211401457690256, 0.0198080105058915, 0.0184764297007729, 0.0171455974650813, 0.0158157073011064, 0.0144869520764914, 0.0131595239988496, 0.0118336145905301, 0.0105094146635328, 0.00918711429457542, 0.00786690280031771, 0.00654896871274432, 0.00523349975471038, 0.00392068281565049, 0.00261070392745741, 0.00130374824053069, 3.89804309105148e-17, -0.00130035747787644, -0.00259714182913288, -0.00389017166533406, -0.00517926659663041, -0.00646424725462336, -0.00774493531504139, -0.00902115352022172, -0.0102927257013981, -0.011559476800788, -0.0128212328934806, -0.0140778212091193, -0.0153290701533799, -0.0165748093292398, -0.0178148695580341, -0.0190490829003017, -0.0202772826764123, -0.0214993034869771, -0.0227149812330375, -0.0239241531360324, -0.0251266577575389, -0.0263223350187866, -0.0275110262199412, -0.0286925740591578, -0.0298668226513993, -0.0310336175470184, -0.0321928057501032, -0.0333442357365809, -0.0344877574720809, -0.0356232224295521, -0.0367504836066368, -0.0378693955427944, -0.0389798143361773, -0.0400815976602532, -0.0411746047801769, -0.042258696568905, -0.0433337355230545, -0.0443995857785039, -0.0454561131257331, -0.0465031850249032, -0.0475406706206712, -0.048568440756743, -0.0495863679901577, -0.050594326605306, -0.0515921926276788, -0.0525798438373468, -0.0535571597821676, -0.0545240217907195, -0.0554803129849636, -0.0564259182926277, -0.0573607244593162, -0.0582846200603405, -0.059197495512273, -0.0600992430842198, -0.060989756908813, -0.0618689329929222, -0.0627366692280826, -0.0635928654006408, -0.0644374232016146, -0.0652702462362698, -0.0660912400334097, -0.0669003120543792, -0.06769737170178, -0.0684823303279003, -0.0692551012428543, -0.070015599722433, -0.0707637430156658, -0.0714994503520923, -0.0722226429487429, -0.0729332440168289, -0.0736311787681416, -0.0743163744211595, -0.0749887602068642, -0.0756482673742631, -0.0762948291956212, -0.0769283809713998, -0.077548860034902, -0.0781562057566272, -0.0787503595483313, -0.0793312648667951, -0.0798988672172992, -0.0804531141568081, -0.0809939552968595, -0.0815213423061632, -0.0820352289129067, -0.0825355709067695, -0.0830223261406459, -0.0834954545320758, -0.0839549180643857, -0.0844006807875377, -0.0848327088186899, -0.085250970342466, -0.0856554356109361, -0.0860460769433096, -0.0864228687253389, -0.0867857874084361, -0.0871348115085041, -0.0874699216044798, -0.0877911003365933, -0.0880983324043423, -0.0883916045641824, -0.0886709056269352, -0.0889362264549138, -0.0891875599587677, -0.089424901094047, -0.0896482468574886, -0.0898575962830229, -0.0900529504375048, -0.0902343124161681, -0.0904016873378049, -0.0905550823396727, -0.0906945065721272, -0.090819971192986, -0.0909314893616208, -0.0910290762327822, -0.0911127489501566, -0.0911825266396579, -0.0912384304024544, -0.0912804833077329, -0.0913087103852017, -0.091323138617333, -0.0913237969313477, -0.0913107161909428, -0.0912839291877643, -0.0912434706326259, -0.0911893771464763, -0.0911216872511166, -0.0910404413596686, -0.0909456817667973, -0.0908374526386883, -0.090715800002782, -0.0905807717372673, -0.0904324175603358, -0.0902707890191986, -0.0900959394788682, -0.0899079241107066, -0.089706799880743, -0.0894926255377612, -0.0892654616011604, -0.0890253703485911, -0.0887724158033674, -0.0885066637216593, -0.0882281815794658, -0.0879370385593721, -0.0876333055370918, -0.0873170550677983, -0.0869883613722457, -0.086647300322683, -0.0862939494285625, -0.0859283878220466, -0.0855506962433138, -0.0851609570256666, -0.0847592540804446, -0.0843456728817445, -0.0839203004509491, -0.0834832253410691, -0.0830345376208986, -0.0825743288589889, -0.0821026921074404, -0.0816197218855179, -0.0811255141630901, -0.0806201663438971, -0.0801037772486475, -0.079576447097948, -0.0790382774950699, -0.0784893714085512, -0.0779298331546424, -0.0773597683795934, -0.0767792840417886, -0.0761884883937299, -0.0755874909638717, -0.0749764025383114, -0.0743553351423367, -0.0737244020218331, -0.0730837176245548, -0.072433397581262, -0.0717735586867265, -0.071104318880609, -0.0704257972282118, -0.0697381139011088, -0.0690413901576554, -0.0683357483233826, -0.0676213117712769, -0.0668982049019509, -0.0661665531237038, -0.0654264828324794, -0.0646781213917219, -0.0639215971121318, -0.0631570392313276, -0.0623845778934139, -0.0616043441284607, -0.0608164698318944, -0.0600210877438072, -0.0592183314281844, -0.0584083352520555, -0.0575912343645695, -0.0567671646759993, -0.0559362628366789, -0.0550986662158734, -0.0542545128805882, -0.0534039415743183, -0.052547091695743, -0.0516841032773653, -0.0508151169641035, -0.0499402739918353, -0.0490597161658982, -0.048173585839549, -0.0472820258923866, -0.0463851797087401, -0.0454831911560251, -0.044576204563072, -0.04366436469843, -0.0427478167486482, -0.0418267062965375, -0.0409011792994173, -0.0399713820673501, -0.0390374612413642, -0.038099563771672, -0.0371578368958833, -0.0362124281172195, -0.0352634851827286, -0.0343111560615074, -0.0333555889229312, -0.0323969321148969, -0.0314353341420785, -0.0304709436442022, -0.0295039093743423, -0.0285343801772393, -0.0275625049676471, -0.026588432708708, -0.0256123123903627, -0.0246342930077934, -0.0236545235399083, -0.022673152927866, -0.0216903300536463, -0.0207062037186667, -0.0197209226224509, -0.0187346353413508, -0.0177474903073236, -0.0167596357867697, -0.0157712198594318, -0.01478239039736, -0.0137932950439433, -0.0128040811930132, -0.0118148959680202, -0.0108258862012872, -0.00983719841334123, -0.00884897879232744, -0.00786137317350882, -0.00687452701885143, -0.00588858539670148, -0.00490369296155439, -0.00391999393392034, -0.00293763208028661, -0.00195675069318238, -0.00097749257134609, -3.89804309105148e-17}; xmorph-20140707+nmu2/libmorph/sinc_100.h0000664000000000000000000002000512356304633014345 0ustar /* # Created by Octave 2.1.35, Mon Dec 01 18:04:30 2003 CET */ /* # name: a */ /* # type: matrix */ /* # rows: 1 */ /* # columns: 801 */ #define SINC_TABLE_UNIT 100 const double sinc_table[401]= {1, 0.999835514710549, 0.999342156239841, 0.99852021671216, 0.997370182772503, 0.995892735243561, 0.994088748645851, 0.99195929058138, 0.989505620981308, 0.986729191218188, 0.983631643083466, 0.980214807631024, 0.976480703887656, 0.972431537431458, 0.968069698839238, 0.963397762004116, 0.958418482324625, 0.953134794766684, 0.947549811799943, 0.941666821210065, 0.935489283788639, 0.929020830902483, 0.922265261944196, 0.915226541665921, 0.907908797398351, 0.900316316157106, 0.892453541638706, 0.884325071108419, 0.875935652182375, 0.867290179506406, 0.85839369133414, 0.849251366006968, 0.83986851833857, 0.830250595906759, 0.820403175255464, 0.810331958009755, 0.800042766906871, 0.789541541746258, 0.778834335261721, 0.767927308918813, 0.756826728640657, 0.745538960465465, 0.734070466139025, 0.722427798645526, 0.710617597680085, 0.698646585066434, 0.686521560123211, 0.674249394982377, 0.6618370298633, 0.649291468306057, 0.636619772367581, 0.623829057784251, 0.610926489104585, 0.597919274795693, 0.584814662327179, 0.571619933236173, 0.55834239817721, 0.54498939196066, 0.531568268583432, 0.518086396255662, 0.504551152427105, 0.490969918816946, 0.477350076450732, 0.46369900070812, 0.450024056385115, 0.436332592774483, 0.422631938767966, 0.408929397983926, 0.395232243924033, 0.381547715162551, 0.367883010571774, 0.354245284587123, 0.340641642515368, 0.327079135889415, 0.313564757873059, 0.300105438719035, 0.28670804128369, 0.273379356601509, 0.260126099522722, 0.246954904417116, 0.23387232094716, 0.220884809913472, 0.207998739175597, 0.195220379651008, 0.182555901395167, 0.170011369765432, 0.157592741671504, 0.145305861915045, 0.133156459621044, 0.121150144763385, 0.109292404787052, 0.0975886013292713, 0.0860439670418528, 0.074663602516878, 0.0634524733178203, 0.0524154071180822, 0.0415570909488543, 0.0308820685581081, 0.0203947378824457, 0.0100993486334399, 3.89804309105148e-17, -0.00989936153178752, -0.0195949442399969, -0.0290831131081211, -0.0383603916450963, -0.0474234635830267, -0.056269174451652, -0.0648945330286884, -0.0732967126652822, -0.0814730524859055, -0.0894210584621333, -0.0971384043598312, -0.104622932559392, -0.111872654748752, -0.118885752489029, -0.125660577652711, -0.132195652734431, -0.138489671034476, -0.144541496715246, -0.150350164731019, -0.15591488063144, -0.161235020239274, -0.166310129203052, -0.171139922425335, -0.175724283367423, -0.180063263231421, -0.184157080020685, -0.188006117479743, -0.191610923914895, -0.194972210896789, -0.19809085184634, -0.200967880505466, -0.203604489294199, -0.206002027555812, -0.208161999691685, -0.210086063187714, -0.211776026534172, -0.21323384704096, -0.214461628550329, -0.215461619049163, -0.216236208183045, -0.216787924674355, -0.217119433646754, -0.217233533858445, -0.217133154846693, -0.216821353986135, -0.216301313463477, -0.215576337171236, -0.214649847523232, -0.213525382194609, -0.212206590789194, -0.210697231437065, -0.209001167325253, -0.207122363164521, -0.205064881595245, -0.202832879535416, -0.20043060447387, -0.197862390711832, -0.195132655555944, -0.192245895465937, -0.189206682160164, -0.186019658682197, -0.182689535431762, -0.179221086163261, -0.175619143955167, -0.171888597153584, -0.168034385293288, -0.164061494999539, -0.159974955874013, -0.155779836368142, -0.151481239647201, -0.147084299448455, -0.142594175936666, -0.138016051560273, -0.133355126911531, -0.128616616593872, -0.123805745099775, -0.118927742702351, -0.113987841363889, -0.108991270664537, -0.103943253754293, -0.0988490033314433, -0.0937137176505438, -0.0885425765630253, -0.0833407375934457, -0.0781133320543878, -0.0728654612029533, -0.0676021924417591, -0.0623285555672972, -0.0570495390684723, -0.0517700864780772, -0.0464950927799145, -0.0412294008742211, -0.0359777981039879, -0.0307450128447171, -0.0255357111600912, -0.0203544935259694, -0.0152058916250582, -0.0100943652145438, -0.0050242990688971, -3.89804309105148e-17, 0.00497430604333614, 0.00989447679445378, 0.0147564564046132, 0.0195562780935785, 0.0242900667132577, 0.0289540412226946, 0.0335445170728003, 0.0380579084992811, 0.0424907307223144, 0.0468396020515936, 0.0511012458954563, 0.0552724926728862, 0.0593502816272722, 0.0633316625408847, 0.0672137973491243, 0.070993961653676, 0.0746695461337955, 0.0782380578550412, 0.0816971214748458, 0.0850444803444218, 0.0882779975065707, 0.0913956565890645, 0.0943955625933462, 0.0972759425783948, 0.100035146239678, 0.102671646383214, 0.105184039294834, 0.107571045004853, 0.109831507448409, 0.111964394521844, 0.113968798035567, 0.115843933563941, 0.117589140192803, 0.119203880165324, 0.120687738426985, 0.12204042207054, 0.123261759681905, 0.124351700588006, 0.125310314007672, 0.126137788106776, 0.126834428958855, 0.127400659412558, 0.127837017867315, 0.128144156958704, 0.128322842155059, 0.128373950266942, 0.128298467871141, 0.128097489650961, 0.127772216654606, 0.127323954473516, 0.126754111342617, 0.126064196164438, 0.125255816459177, 0.124330676242786, 0.123290573835253, 0.122137399601265, 0.120873133625516, 0.119499843324958, 0.118019681000325, 0.116434881329332, 0.11474775880396, 0.112960705114296, 0.111076186481413, 0.109096740941846, 0.107024975586194, 0.104863563754458, 0.102615242190723, 0.100282808159829, 0.097869116528684, 0.0953770768149045, 0.0928096502054826, 0.0901698465481856, 0.0874607213184151, 0.0846853725642567, 0.0818469378324643, 0.0789485910781174, 0.0759935395607083, 0.0729850207293968, 0.0699262991001869, 0.06682066312776, 0.0636714220747019, 0.0604819028808473, 0.0572554470354546, 0.0539954074549084, 0.0507051453686376, 0.0473880272159067, 0.0440474215561288, 0.040686695995319, 0.0373092141312847, 0.0339183325201194, 0.030517397666542, 0.0271097430405839, 0.0236986861231046, 0.0202875254825685, 0.016879537885484, 0.0134779754428716, 0.0100860627950723, 0.00670699433718014, 0.00334393148732627, 3.89804309105148e-17, -0.0033217126734571, -0.00661815997509821, -0.00988633877932841, -0.0131232918785855, -0.0163261104138289, -0.0194919362479579, -0.0226179642803572, -0.0257014447008132, -0.0287396851811123, -0.0317300530026924, -0.0346699771187823, -0.0375569501495252, -0.0403885303086549, -0.0431623432603482, -0.0458760839049579, -0.0485275180923861, -0.0511144842619358, -0.0536348950075439, -0.0560867385673706, -0.0584680802367899, -0.0607770637039007, -0.0630119123067464, -0.0651709302115052, -0.067252503510989, -0.0692551012428543, -0.0711772763270134, -0.0730176664217961, -0.0747749946984954, -0.0764480705339993, -0.0780357901212854, -0.0795371369976314, -0.0809511824904647, -0.08227708608085, -0.083514095684688, -0.0846615478517655, -0.085718867882879, -0.0866855698653162, -0.0875612566270574, -0.0883456196101289, -0.0890384386636067, -0.0896395817568447, -0.0901490046135646, -0.0905667502675149, -0.090892948540476, -0.0911278154434479, -0.0912716525019297, -0.0913248460062586, -0.0912878661880414, -0.0911612663237731, -0.0909456817667973, -0.0906418289088228, -0.0902505040722682, -0.0897725823347641, -0.0892090162871969, -0.0885608347267311, -0.0878291412863027, -0.0870151130021222, -0.0861199988207795, -0.0851451180475879, -0.0840918587378508, -0.0829616760327803, -0.0817560904418382, -0.08047668607331, -0.0791251088149652, -0.0777030644666888, -0.0762123168270103, -0.0746546857354852, -0.0730320450729192, -0.0713463207214526, -0.0695994884865519, -0.0677935719829806, -0.0659306404868454, -0.0640128067558373, -0.0620422248198031, -0.0600210877438072, -0.0579516253658522, -0.0558361020114488, -0.0536768141872284, -0.0514760882558104, -0.0492362780941389, -0.0469597627375098, -0.0446489440115156, -0.0423062441541349, -0.0399341034301927, -0.0375349777404201, -0.0351113362273298, -0.0326656588801265, -0.0302004341408553, -0.0277181565139879, -0.0252213241816272, -0.0227124366265057, -0.0201939922649246, -0.0176684860917803, -0.0151384073397846, -0.0126062371549818, -0.0100744462906313, -0.00754549282150247, -0.00502181988060223, -0.00250585342032721, -3.89804309105148e-17}; xmorph-20140707+nmu2/libmorph/relax.h0000664000000000000000000000076012356304633014152 0ustar double smooth_elastic_mesh(MeshT *mesh,int dontoverlap, int keepborder,double orthogonal, double maxx,double maxy); double smooth_mesh_rubber(MeshT *mesh, MeshT *rubber,double rubberish, int i,int j,int label, int dontoverlap,int keepborder, double orthogonal, double maxx,double maxy); double smooth_thin_plate(MeshT *mesh,int keepborder, double maxx,double maxy); double smooth_energy_mesh(int type,MeshT *mesh,int dontoverlap, int keepborder,double orthogonal, double maxx,double maxy); xmorph-20140707+nmu2/libmorph/my_malloc.h0000664000000000000000000000706712356304633015022 0ustar /* my_malloc.h: memory allocation routines with error checking // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // 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, or (at your option) // any later version. // // This file 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 file; see the file LICENSE. If not, write to // the Free Software Foundation, Inc., 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA. If you want to use my memory allocation routines, () Create symbolic links from ~gourlay/src/lib/my_malloc.c and ~gourlay/src/lib/my_malloc.h to the directory where your code is. () Include "my_malloc.h" in each module where you want to use those routines. Also, define the symbol "DEBUG" /before/ including "my_malloc.h". The best way to do this is /not/ to add a #define DEBUG statement, but instead to add the flag -DDEBUG to the CFLAGS variable in the Makefile. Also, when compiling my_malloc.c, you should also define DEBUG. () In place of each allocation routine, such as malloc, calloc, realloc, or free, use the same arguments, but capitalize the name of the routine. E.g. use MALLOC, CALLOC, REALLOC, or FREE. It is not possible to mix stdlib allocation routines with mine. I.e. if you allocate with "malloc", you must free with "free", and if you allocate with MALLOC, you must free with FREE. () Remember to include my_malloc.o in the list of objects you link to for your program. () For examples of using my_malloc have a look at the code in ~gourlay/src/graph/xmorph or ~gourlay/src/math/lattice. The Makefiles in those directories might also be of interest. */ #ifndef _MY_MALLOC_H #define _MY_MALLOC_H #ifdef __cplusplus extern "C" { #endif #include /* GNU C header file for string.h is broken in some versions. */ #if ( defined(__GNUC__) && defined (STRDUP_PROTO_BROKEN) ) extern char *strdup (const char *s); #endif int listAppend(void ** root, int *nmemb, const int size); int listDelete(void ** root, int *nmemb, const int size, const int index_) ; #ifdef DEBUG void memBlockInventory(const int all) ; int memBlockCheckAll(void) ; #endif void * mjg_realloc(void * const ptr, const long nelem, const int elsize, const char * const file, const int line); void mjg_free(void * const ptr, const char * const file, const int line); char * mjg_strdup(const char *s, const char * const file, const int line); #ifdef DEBUG #define CALLOC(nelem,elsize) mjg_realloc(NULL,nelem,elsize,__FILE__,__LINE__) #define MALLOC(size) mjg_realloc(NULL,size,1,__FILE__,__LINE__) #define MY_CALLOC(nelem,type) mjg_realloc(NULL,nelem,sizeof(type),__FILE__,__LINE__) #define REALLOC(ptr,size) mjg_realloc(ptr,(long)(size),1,__FILE__,__LINE__) #define STRDUP(s) mjg_strdup(s,__FILE__,__LINE__) #define FREE(ptr) mjg_free(ptr,__FILE__,__LINE__) #else #define CALLOC calloc #define MALLOC malloc #define MY_CALLOC(nelem,type) calloc(nelem,sizeof(type)) #define REALLOC realloc #define STRDUP strdup #define FREE free #endif #define ALLOCA alloca #ifdef __cplusplus } #endif #endif xmorph-20140707+nmu2/libmorph/spl-array.h0000664000000000000000000000105012356304633014742 0ustar /* spl-array.h: Spline interpolation support routines for matrices // // Written and Copyright (C) 1993-1999 by Michael J. Gourlay // // NO WARRANTEES, EXPRESS OR IMPLIED. */ #ifndef _SPL_ARRAY_H__INCLUDED_ #define _SPL_ARRAY_H__INCLUDED_ #include "spline.h" int hermite3_array2(const double *kx, const double *ky, long nk, double sx_start,double sx_step, double *sy, long ns, int howto_extend/* 0-> constant 1-> linear */ ); extern int hermite3_array (const double *kx, const double *ky, long nk, double *sx, double *sy, long ns); #endif xmorph-20140707+nmu2/libmorph/warp2.c0000664000000000000000000002046712356304633014073 0ustar /* warp.c : Digital Image Warping algorithms // // See George Wolberg's "Digital Image Warping" // IEEE Computer Society Press order number 1944 // ISBN 0-8186-8944-7 // // Copyrights might be held by various authors. See individual routines. // Written and Copyright (C) 1994-1999 by Michael J. Gourlay Written and Copyright (C) 2003 by A Mennucc This file is part of Xmorph. Xmorph 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. Xmorph 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 Xmorph; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include "my_malloc.h" #include "spline.h" #include "spl-array.h" #include "mesh.h" #include "warp.h" #include "warp2.h" #define MAX(x,y) ((x)>(y) ? (x) : (y)) #define MIN(x,y) ((x)<(y) ? (x) : (y)) #ifndef g_assert #include "assert.h" #define g_assert assert #endif #include "resample.h" /* NAME // warp_image: 2-pass mesh-based image warping // // // ARGUMENTS: see warp2.h // // NOTES // // A Mennucc: I have had a striking idea!!! // I have inverted the roles of src & dst! // so the resample_array becomes resample_array_inv // which pulls pixels into dst instead of pushing from src. // // Improvements: mesh lines may now fold over! // and the border of the mesh is now free! // you can warp images of different sizes, and with colors! // the code is smaller, faster, cleaner! // (final score: mathematician 1, physicists 1 // :-) see spl-array.c) // // AUTHOR // This code was originally written by George Wolberg, based on Smythe90. // Modifications and many bug fixes by Michael J. Gourlay and other // authors as noted in the code comments. // // // SEE ALSO // See Douglas B. Smythe "A Two-Pass Mesh Warping Algorithm for // Object Transformation and Image Interpolation", ILM Technical Memo // #1030, Computer Graphics Department, Lucasfilm Ltd., 1990 // // */ void warp_image_versatile (const PIXEL_TYPE *src, int s_width, int s_height, int s_channels, int s_rowstride,int s_xstride, PIXEL_TYPE *dst, int d_width, int d_height, int d_channels, int d_rowstride,int d_xstride, const double *xs, const double *ys, const double *xd, const double *yd, int mesh_width, int mesh_height) { /* "const type *" means "pointer to a constant array of type" // not "constant pointer to type" */ int ai = MAX(MAX(s_height, s_width) , MAX(d_height, d_width) ) + 1; double *ind; int i; int xi, yi; /* specs of intermidiate image */ PIXEL_TYPE *tmp; int c,t_channels = MIN(s_channels, d_channels); int t_rowstride=d_width*t_channels; const double *x1, *y1, *x2, *y2; double *xrow1, *yrow1, *xrow2, *yrow2; double *map1, *map2; double *ts, *ti, *td; ind = MY_CALLOC(ai, double); for(i=0; inx == dstmesh->nx && srcmesh->ny == dstmesh->ny); warp_image_versatile (src, s_width, s_height, s_channels, s_rowstride, s_xstride, dst, d_width, d_height, d_channels, d_rowstride, d_xstride, srcmesh->x, srcmesh->y, dstmesh->x, dstmesh->y, srcmesh->nx,srcmesh->ny); } xmorph-20140707+nmu2/libmorph/relax.c0000664000000000000000000002640712356304633014153 0ustar #include "stdio.h" #include "mesh.h" /* safe get functions; these also define the border condition */ #define MESHGETXSAFE meshGetxExt #define MESHGETYSAFE meshGetyExt #define MESHGETEXT_NOT_SAFE #include "mesh-getext.h" #include "math.h" #include "assert.h" #undef MAX #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #undef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #undef ABS #define ABS(a) (((a) < 0) ? -(a) : (a)) #undef CLAMP #define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) #define SMOOTH_ITERATIONS 10 /********* this routine will smooth out the mesh it will only move points whose label is 0 *************/ /* relaxing step */ /*e#define STEP(CEN,WEST,EST,SOUTH,NORTH) (((NORTH)+(SOUTH)+(EST)+(WEST)) / 4.0)*/ #define STEPY(CEN,WEST,EST,SOUTH,NORTH) (((NORTH)*O+(SOUTH)*O+(EST)+(WEST)) / (2*O+2.0)) #define STEPX(CEN,WEST,EST,SOUTH,NORTH) (((NORTH)+(SOUTH)+(EST)*O+(WEST)*O) / (2*O+2.0)) /* this is now unused */ static double smooth_elastic_mesh_once (MeshT *mesh, int dontoverlap , /* if true, a point cannot enter a neighbouring cell but the algo is far from perfect in this respect*/ int keepborder, /* if true, dont' move border points */ double O,/* orthogonal versus parallel smoothing; 1 is anisotropic, ie laplacian*/ double maxx, double maxy ) { int xi, yi; double x,y,ox,oy; double change=0; #ifdef PRESERVE_VARIANCE struct mesh_variance_s bef, aft; const int anykind=0; bef=mesh_variance(mesh, anykind); #endif /* bail out if mesh was externally deleted (thread safeness) */ if(mesh->nx<=2 || mesh->ny<=2 ) return change; for(xi=0; xi < mesh->nx ; xi++) { for(yi=0; yiny ; yi++) { if( 0 == meshGetLabel(mesh,xi,yi)) { if ( keepborder && xi == 0 ) ox=x=0; else if ( keepborder && xi == mesh->nx -1) ox=x=maxx; else { ox=meshGetx(mesh, xi,yi); x=STEPX(ox, MESHGETXSAFE(mesh, xi+1,yi) , MESHGETXSAFE(mesh, xi-1,yi) , MESHGETXSAFE(mesh, xi,yi+1) , MESHGETXSAFE(mesh, xi,yi-1)) ; if(dontoverlap) { if ( x< MESHGETXSAFE(mesh, xi-1,yi)) x= MESHGETXSAFE(mesh, xi-1,yi); else if(x> MESHGETXSAFE(mesh, xi+1,yi)) x= MESHGETXSAFE(mesh, xi+1,yi); else if ( x< MESHGETXSAFE(mesh, xi-1,yi+1)) x= MESHGETXSAFE(mesh, xi-1,yi+1); else if(x> MESHGETXSAFE(mesh, xi+1,yi-1)) x= MESHGETXSAFE(mesh, xi+1,yi-1); } } if ( keepborder && yi == 0 ) oy=y=0;/* meshGety(mesh, xi,yi); */ if ( keepborder && yi == mesh->ny -1) oy=y=maxy; /* meshGety(mesh, xi,yi); */ else { oy=meshGety(mesh, xi,yi); y=STEPY(oy, MESHGETYSAFE(mesh, xi+1,yi), MESHGETYSAFE(mesh, xi-1,yi), MESHGETYSAFE(mesh, xi,yi+1), MESHGETYSAFE(mesh, xi,yi-1)) ; if(dontoverlap) { if ( y< MESHGETYSAFE(mesh, xi,yi-1)) y= MESHGETYSAFE(mesh, xi,yi-1); else if(y> MESHGETYSAFE(mesh, xi,yi+1)) y= MESHGETYSAFE(mesh, xi,yi+1); else if ( y< MESHGETYSAFE(mesh, xi-1,yi-1)) y= MESHGETYSAFE(mesh, xi-1,yi-1); else if(y> MESHGETYSAFE(mesh, xi+1,yi+1)) y= MESHGETYSAFE(mesh, xi+1,yi+1); } } meshSetNoundo(mesh,xi,yi,x,y); change+=sqrt((x-ox)*(x-ox) + (y-oy)*(y-oy)); } } } #ifdef PRESERVE_VARIANCE aft=mesh_variance(mesh, anykind); mesh_normalize_variance(mesh,anykind,bef,aft); #endif return change; } double smooth_elastic_mesh(MeshT *mesh, /* if true, a point cannot enter a neighbouring cell but the algo is far from perfect in this respect*/ int dontoverlap, int keepborder,/* if true, dont' move border points */ double O, double maxx,double maxy ) { int lp; double change=0; for(lp =SMOOTH_ITERATIONS ; lp ; lp--) change+=smooth_elastic_mesh_once(mesh,dontoverlap,keepborder,O,maxx,maxy); return change; } /****************************** relaxing step with a rubber wrt other mesh labels ***/ /* relaxing step */ #define STEP3DX(CEN,WEST,EST,SOUTH,NORTH,UP) ((2*(UP)+(NORTH)+(SOUTH)+(EST)*O+(WEST)*O) / (2*O+4.0)) #define STEP3DY(CEN,WEST,EST,SOUTH,NORTH,UP) ((2*(UP)+(NORTH)*O+(SOUTH)*O+(EST)+(WEST)) / (2*O+4.0)) static double smooth_mesh_rubber_once(MeshT *mesh, MeshT *rubber, double rubberish, int i,int j,int label, int dontoverlap,int keepborder, double O) { int xi, yi; double x,y,ox,oy; double r=1.0-rubberish; double dx=meshGetx(mesh, i,j)-meshGetx(rubber, i,j), dy=meshGety(mesh, i,j)-meshGety(rubber, i,j); double change=0; #ifdef PRESERVE_VARIANCE struct mesh_variance_s bef, aft; const int anykind=0; bef=mesh_variance(mesh, anykind); #endif for(xi=0; xi < mesh->nx ; xi++) { for(yi=0; yiny ; yi++) { if( label == meshGetLabel(mesh,xi,yi) && (xi != i || yi != j)) { if ( keepborder && ( xi == 0 || xi == mesh->nx -1)) ox=x=meshGetx(mesh, xi,yi); else {ox=meshGetx(rubber, xi,yi); x=rubberish* STEP3DX(ox, MESHGETXSAFE(mesh, xi+1,yi) , MESHGETXSAFE(mesh, xi-1,yi) , MESHGETXSAFE(mesh, xi,yi+1) , MESHGETXSAFE(mesh, xi,yi-1) , meshGetx(rubber, xi,yi)) +r * (dx+meshGetx(rubber, xi,yi)); if(dontoverlap) { if ( x< MESHGETXSAFE(mesh, xi-1,yi)) x= MESHGETXSAFE(mesh, xi-1,yi); else if(x> MESHGETXSAFE(mesh, xi+1,yi)) x= MESHGETXSAFE(mesh, xi+1,yi); else if ( x< MESHGETXSAFE(mesh, xi-1,yi+1)) x= MESHGETXSAFE(mesh, xi-1,yi+1); else if(x> MESHGETXSAFE(mesh, xi+1,yi-1)) x= MESHGETXSAFE(mesh, xi+1,yi-1); } } if ( keepborder && ( yi == 0 || yi == mesh->ny -1)) oy=y=meshGety(mesh, xi,yi); else { oy=meshGety(rubber, xi,yi); y=rubberish* STEP3DY(oy, MESHGETYSAFE(mesh, xi+1,yi), MESHGETYSAFE(mesh, xi-1,yi), MESHGETYSAFE(mesh, xi,yi+1), MESHGETYSAFE(mesh, xi,yi-1), meshGety(rubber, xi,yi)) +r * (dy+meshGety(rubber, xi,yi)); if(dontoverlap) { if ( y< MESHGETYSAFE(mesh, xi,yi-1)) y= MESHGETYSAFE(mesh, xi,yi-1); else if(y> MESHGETYSAFE(mesh, xi,yi+1)) y= MESHGETYSAFE(mesh, xi,yi+1); else if ( y< MESHGETYSAFE(mesh, xi-1,yi-1)) y= MESHGETYSAFE(mesh, xi-1,yi-1); else if(y> MESHGETYSAFE(mesh, xi+1,yi+1)) y= MESHGETYSAFE(mesh, xi+1,yi+1); } } meshSetNoundo(mesh,xi,yi,x,y); change+=sqrt((x-ox)*(x-ox) + (y-oy)*(y-oy)); } } } #ifdef PRESERVE_VARIANCE aft=mesh_variance(mesh, anykind); mesh_normalize_variance(mesh,anykind,bef,aft); #endif return change; } double smooth_mesh_rubber(MeshT *mesh, MeshT *rubber, double rubberish, int i,int j,int label, int dontoverlap,int keepborder, double O) { int lp; double change=0; assert(mesh->nx>=2 && mesh->ny>=2); for(lp =SMOOTH_ITERATIONS ; lp ; lp--) { change+= smooth_mesh_rubber_once(mesh,rubber,rubberish,i,j,label,dontoverlap,keepborder,O); } return change; } /***************************************************/ const static double D2[3][3][3] = {{{ 0, 0, 0},{-1,2,-1},{0, 0, 0}}, {{ 0,-1, 0},{ 0,2,0 },{0,-1, 0}}, {{-1, 0, 1},{ 0,0,0 },{1, 0,-1}}}; /* note that , if mesh is edited while it is smoothed, this will print useless warnings #define SELFTEST */ static double smooth_thin_plate(MeshT *mesh, int keepborder , double maxx, double maxy) { int x1,y1,x2,y2, lx,ly, i,j, k , lp; const int nx=mesh->nx, ny=mesh->ny; double x,y; double ox,oy; double meshx_D2[3][nx+2][ny+2]; double meshy_D2[3][nx+2][ny+2]; #ifdef SELFTEST double ene=0, oldene=0; #endif double change=0, partial_change=0; #ifdef PRESERVE_VARIANCE const int anykind=0; struct mesh_variance_s bef=mesh_variance(mesh, anykind) , aft; #endif #ifdef RECOMPUTE_CHANGE MeshT copymesh; meshInit(©mesh); meshAlloc(©mesh,nx,ny); meshCopy(©mesh,mesh); #endif const double derder_E=16; #if 0 /* the above is the result of this computation */ for(i=0; i <= 2 ; i++) for(j=0; j <= 2 ; j++) for (k=0;k<2;k++) derder_E += D2[k][i][j] * D2[k][i][j]; #endif #define COMPUTE_D2(X1,Y1) \ {for (k=0;k<2;k++) { \ meshx_D2[k][X1][Y1]=0;\ meshy_D2[k][X1][Y1]=0; }\ for (k=0;k<2;k++) { \ for(i=0; i <= 2 ; i++)\ for(j=0; j <= 2 ; j++) {\ double t=D2[k][i][j];if(t) {\ int xxx=X1-i,yyy=Y1-j;\ meshx_D2[k][X1][Y1]+=MESHGETXSAFE(mesh, xxx,yyy)* t;\ meshy_D2[k][X1][Y1]+=MESHGETYSAFE(mesh, xxx,yyy)* t;\ }}}} /* compute D2 */ for(x1=0; x1 < nx+2 ; x1++) for(y1=0; y1 < ny+2 ; y1++) { COMPUTE_D2(x1,y1); #ifdef SELFTEST for (k=0;k<2;k++) ene+=(meshx_D2[k][x1][y1]*meshx_D2[k][x1][y1]+ meshy_D2[k][x1][y1]*meshy_D2[k][x1][y1]); #endif } #ifdef SELFTEST oldene=ene; #endif /* repeat */ for(lp = SMOOTH_ITERATIONS ; lp ; lp--) { partial_change=0; /* bail out if mesh was externally deleted (thread safeness) */ if(mesh->nx<=2 || mesh->ny<=2 ) return change; for(lx=0; lx < nx ; lx++) for(ly=0; ly < ny ; ly++) { if( 0 == meshGetLabel(mesh,lx,ly)) { double derEx=0,derEy=0; x=meshGetx(mesh, lx,ly); y=meshGety(mesh, lx,ly); ox=x; oy=y; for (k=0;k<2;k++) for(x1=0; x1 <= 2 ; x1++) for(y1=0; y1 <= 2 ; y1++) { double t=D2[k][x1][y1];if(t) { derEx+= meshx_D2[k][lx+x1][ly+y1] * t; derEy+= meshy_D2[k][lx+x1][ly+y1] * t; } } derEx *= 2 ; derEy *= 2 ; if(keepborder && lx==0) x=0; else if (keepborder && lx == nx-1) x=maxx; else {x-=derEx/ 4./derder_E; if(keepborder) x=CLAMP(x,0,maxx);/* AVOID CRISIS */ else x=CLAMP(x,-300,maxx+300);/* AVOID CRISIS */ } if(keepborder && ly==0 ) y=0; else if(keepborder && ly == ny-1) y=maxy; else { y-=derEy/ 4./derder_E; if(keepborder) y=CLAMP(y,0,maxy); /* AVOID CRISIS */ else y=CLAMP(y,-300,maxy+300); /* AVOID CRISIS */ } meshSetNoundo(mesh, lx,ly,x,y); /* GAUSS_STYLE_UPDATE */ for(x1=MAX(0,lx-2); x1 < MIN(lx+2,nx+2) ; x1++) for(y1=MAX(0,ly-2); y1 < MIN(ly+2,ny+2) ; y1++) { COMPUTE_D2(x1,y1); } partial_change+=sqrt((x-ox)*(x-ox) + (y-oy)*(y-oy)); } } if(partial_change < 0.1) break; change+=partial_change; } /*********/ #ifdef SELFTEST ene=0; for(x1=0; x1 < nx+2 ; x1++) for(y1=0; y1 < ny+2 ; y1++) { COMPUTE_D2(x1,y1); for (k=0;k<2;k++) ene+=(meshx_D2[k][x1][y1]*meshx_D2[k][x1][y1]+ meshy_D2[k][x1][y1]*meshy_D2[k][x1][y1]); } if(ene>oldene) printf("ERROR mesh energy has gone from %g to %g \n!",oldene, ene); #endif /********/ #ifdef PRESERVE_VARIANCE aft=mesh_variance(mesh, anykind); mesh_normalize_variance(mesh,anykind,bef,aft); #endif #ifdef RECOMPUTE_DISTANCE change=meshDistance(mesh,©mesh,1); meshFreeReally(©mesh); #endif return change; } /***************************************************************************** CHOOSING INTERFACE */ char * smooth_mesh_energy_names[]={"elastic","thin plate",NULL} ; double smooth_energy_mesh(int type,MeshT *mesh,int dontoverlap, int keepborder,double orthogonal, double maxx, double maxy) { if(type==0) return smooth_elastic_mesh(mesh, dontoverlap, keepborder, orthogonal, maxx,maxy); else if(type==1) return smooth_thin_plate(mesh,keepborder,maxx,maxy); else abort(); } xmorph-20140707+nmu2/libmorph/warp.h0000664000000000000000000000121512356304633014004 0ustar /* warp.h : Digital Image Warping algorithms header // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // Provided as is. No warrantees, express or implied. */ #ifndef _WARP__INCLUDED_ #define _WARP__INCLUDED_ #include "braindead_msvc.h" /* this is the C type of a pixel */ #define PIXEL_TYPE unsigned char #define PIXEL_MIN 0 #define PIXEL_MAX 255 /* choose warp engine */ #define warp_image warp_image_inv_new void warp_image_inv_old (const PIXEL_TYPE *in, PIXEL_TYPE *out, int img_width, int img_height, const double *xs, const double *ys, const double *xd, const double *yd, int mesh_width, int mesh_height); #endif xmorph-20140707+nmu2/libmorph/warp.c0000664000000000000000000002647112356304633014012 0ustar /* warp.c : Digital Image Warping algorithms // // See George Wolberg's "Digital Image Warping" // IEEE Computer Society Press order number 1944 // ISBN 0-8186-8944-7 // // Copyrights might be held by various authors. See individual routines. // Written and Copyright (C) 1994-1999 by Michael J. Gourlay This file is part of Xmorph. Xmorph 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. Xmorph 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 Xmorph; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include "my_malloc.h" #include "spline.h" #include "spl-array.h" #include "warp.h" #define MAX(x,y) ((x)>(y) ? (x) : (y)) #include "resample.h" /* --------------------------------------------------------------- */ /* resample_array: Fant's resampling algorithm, specialized to // images with the same dimensions // // Based on "Nonaliasing Real-Time Spatial Transform" by Karl M. Fant. // See IEEE Computer Graphics and Applications v6n1, January 1986. // // NOTE: The original code contained array bounds overruns. I fixed // the code up without taking resampling theory into consideration. I // figured the boundary pixels would be the only things hosed anyway, and // the original code was dumping core. -- MJG 08jun94 // // UPDATE: 20jul94: George Wolberg (himself) gives these array bounds // modifications a thumbs up. */ static void resample_array(const double *F, const PIXEL_TYPE *src, PIXEL_TYPE *dst, int len, int ipo) { int ui, xi; double acc, intensity; double INSFAC, INSEG, OUTSEG; double *inpos; /* forward mapping function */ /* MJG 08jun94 */ inpos = MY_CALLOC(len+2, double); /* precompute input index for each output pixel */ for(ui=xi=0; xi ((len-1)*ipo)) { fprintf(stderr, "resample_array: index out of range: %i\n", ui); } #endif /* use linear interpolation for reconstruction */ intensity = (INSEG * src[ui]) + ((1-INSEG) * src[ui+1]); /* INSEG < OUTSEG: input pixel is entirely consumed before output pixel */ if(INSEG < OUTSEG) { acc += (intensity * INSEG); /* accumulation of weighted contrib */ OUTSEG -= INSEG; /* INSEG portion has been filled */ INSEG = 1.0; /* new input pixel will be available */ ui += ipo; /* index to next input pixel */ } /* INSEG >= OUTSEG: input pixel is not consumed before output pixel */ else { acc += (intensity * OUTSEG); /* accumulate weighted contrib */ /* A short hack to prevent an arithmetic exception on division by zero // in case INSFAC becomes zero (AT 04feb95) -- Added 13sep95 // [It seems that when INSFAC is zero, so is acc -- MJG 13sep95] */ if (INSFAC==0) { INSFAC = 1; } /* End of hack (AT 04feb95) */ dst[xi*ipo] = acc/INSFAC; /* init output w/ normalized accumulator */ acc = 0.0; /* reset accumulator for next output pixel */ INSEG -= OUTSEG; /* OUTSEG portion of input has been used */ xi++; /* index to next output pixel */ INSFAC = inpos[xi+1] - inpos[xi]; /* init spatially varying INSFAC */ OUTSEG = INSFAC; /* init spatially varying SIZFAC */ } } FREE(inpos); } /* --------------------------------------------------------------- */ /* NAME // warp_image: 2-pass mesh-based single-channel image warping // // // ARGUMENTS // in (in) : input image (single channel, 1 byte per pixel) // out (out) : output image (single channel, 1 byte per pixel) // img_width (in) : width dimension, in pixels, of in and out images // img_height (in) : height dimension, in pixels, of in and out images // xs (in) : source mesh x-coordinate values // ys (in) : source mesh y-coordinate values // xd (in) : destination mesh x-coordinate values // yd (in) : destination mesh y-coordinate values // mesh_width (in) : x-dimension of meshes // mesh_height (in): y-dimension of meshes // // // NOTES // Mesh points must not fold over, // and border mesh points must stay on border // // Either this routine or the resample routine is responsible for an // error where the right vertical line and the bottom horizontal line are // entirely black. This is probably due to a descrepency somewhere // between the "nx and ny" of an image, and the last image index in each // direction, which is (nx-1, ny-1). Some day I will track down this bog // and fix it. Meanwhile, remember to crop the final image by 1 pixel in // each direction. (6jun97 MJG) // // A Mennucc: I have had a striking idea!!! // I have inverted the roles of src & dst!!! // so now the resample_array becomes resample_array_inv!!! // which now pulls pixels into dst instead of pushing from src. // So the above notes are probably false now. (nov 03) // // AUTHOR // This code was originally written by George Wolberg, based on Smythe90. // Modifications and many bug fixes by Michael J. Gourlay and other // authors as noted in the code comments. // // // SEE ALSO // See Douglas B. Smythe "A Two-Pass Mesh Warping Algorithm for // Object Transformation and Image Interpolation", ILM Technical Memo // #1030, Computer Graphics Department, Lucasfilm Ltd., 1990 */ void warp_image_inv_old(const PIXEL_TYPE *in, PIXEL_TYPE *out, int img_width, int img_height, const double *xs, const double *ys, const double *xd, const double *yd, int mesh_width, int mesh_height) { /* "const type *" means "pointer to a constant array of type" // not "constant pointer to type" */ int ai; int xi, yi; const PIXEL_TYPE *src; PIXEL_TYPE *dst; PIXEL_TYPE *tmp; const double *x1, *y1, *x2, *y2; double *xrow1, *yrow1, *xrow2, *yrow2; double *map1, *map2; double *indx; double *ts, *ti, *td; /* allocate memory for buffers: // // indx stores indices used to sample splines // xrow1, xrow2, yrow2, yrow2 store column data in row order for spline // map1, map2 store mapping functions computed in row order in spline // // Could use alloca instead to avoid the free's at the end of this // routine. alloca might also be faster. In fact, the original code // might have used alloca. I do not remember why I changed it. */ ai = MAX(img_height, img_width) + 1; indx = MY_CALLOC(ai, double); xrow1 = MY_CALLOC(ai, double); yrow1 = MY_CALLOC(ai, double); xrow2 = MY_CALLOC(ai, double); yrow2 = MY_CALLOC(ai, double); map1 = MY_CALLOC(ai, double); map2 = MY_CALLOC(ai, double); /* First pass (phase one): create tables ts and ti for x-intercepts // of vertical splines in S and I. // tables have mesh_width columns of height img_height */ ts = MY_CALLOC(mesh_width*img_height, double); ti = MY_CALLOC(mesh_width*img_height, double); for(yi=0; yi #define PIXEL_TYPE u16 #define PIXEL_MIN 0 #define PIXEL_MAX 65535 Be aware that there may be no gain in quality in using pixel types with more than 16 bits: the code in libmorph/resample.c uses a table to compute the values of sinc(x) and this table provides at most 10bits precision; if you use more pixels, you may - create a larger table, or - use the "float sinc(float x)" call: comment out the line in the code #define KERNEL_sinc_fast -- I have introduced a new call void warp_image_versatile (const PIXEL_TYPE *src, int s_width, int s_height, int s_channels, int s_rowstride,int s_xstride, PIXEL_TYPE *dst, int d_width, int d_height, int d_channels, int d_rowstride,int d_xstride, const double *xs, const double *ys, const double *xd, const double *yd, int mesh_width, int mesh_height) that can warp images of different sizes, with colors, with any arrangment of data in memory (not only RRRGGGBBB but also RGBRGB.. ); moreover, with the old code, you had to use meshes were the border of the mesh was on the border of the image; with this, you don't (the mesh can even go outside the image). Summarizing: warp_image_versatile can warp any image that is not indexed See warp2.h for the documentation of the parameters. there are other APIs for the same functions, such as void warp_image_a_m (const PIXEL_TYPE *src, int s_width, int s_height, int s_channels, int s_rowstride,int s_xstride, PIXEL_TYPE *dst, int d_width, int d_height, int d_channels, int d_rowstride,int d_xstride, MeshT *srcmesh, MeshT *dstmesh); and moreover... --- warp-gtk.h If you use gtk2.0 or gdk-pixbuf, then you will love this call void warp_image_gdk_m ( GdkPixbuf *src, GdkPixbuf *dst, MeshT *srcmesh, MeshT *dstmesh) that wraps up the previous one (it simply uses the control parameters of the src and dst to fill in the correct values for warp_image_versatile). --- resample.h This new warping code has also many different antialiasing filters; the call void mesh_resample_choose_aa_by_name(char *s); decides which one the warping code will use, in this list (from resample.c) "near_neighbor" , //choose nearest pixel: fastest, looks bad "bilinear", //bilinear: same as with the old libmorph warping code "lanczos", //Lanczos: much better quality, a must for animations //and/or fine grained images; it is though slower, "lanczos4",// even better than before, but no noticeable difference on // most images --- varia in mesh.c mesh.h various routines to access data in the meshes (I like them better than accessing the arrays themselves: it makes for more clean programming) --- mesh labels to any point in the mesh there is an associate label (an integer) this is good for labeling and selecting (and it is used in gtkmorph) for example, the smoothing routines in relax.c do not move selected points ---mesh-getext.h reading data in meshes so that the mesh is implicitely extended infinitely (by mirroring it at the border) --- relax.c this routines smooths meshes, with elastic energy or thin plate spline energy --- Ref counting I have modified the meshes code in libmorph to use reference counting this is good for porting libmorph in python (or any language that needs garbage collecting) or for easier use in GTK . this way, a program should call meshAlloc(this) to alloc a mesh, but call meshUnref(this) to free it. For this reason the function meshFree is deprecated. if a program doesnt use reference counting (xmorph doesnt) and uses meshFree then it should define NDEBUG_LIBMORPH_REF_COUNT or NDEBUG to avoid the warning if a program defines #define LIBMORPH_STRICTLY_REF_COUNT then the function meshFree will abort if the reference counting is not zero ---- xmorph-20140707+nmu2/libmorph/tga.h0000664000000000000000000000313412356304633013610 0ustar /* tga.h: Targa TrueVision image file handling routines // // Copyright (C) 1994-1999 by Michael J. Gourlay // // Provided as is. No warrantees, express or implied. */ #ifndef _TGA_H__INCLUDED_ #define _TGA_H__INCLUDED_ #include #include "RgbaImage.h" typedef struct tga_hdr_ { unsigned char id_len; unsigned char cmap_type; unsigned char img_type; int cmap_index; int cmap_len; unsigned char cmap_size; /* cmap entry size in bits */ int x_off; int y_off; unsigned char pixel_size; unsigned char att_bits; unsigned char reserved; unsigned char origin_bit; /* origin location: 0=lower 1=upper */ unsigned char interleave; int mapped; /* whether image is colormapped (not in file) */ } tga_hdr_t; /* Targe image types */ #define TGA_Null 0 #define TGA_Map 1 #define TGA_RGB 2 #define TGA_Mono 3 #define TGA_RLE_Map 9 #define TGA_RLE_RGB 10 #define TGA_RLE_Mono 11 #define TGA_CompMap 32 #define TGA_CompMap4 33 /* TGA_RLE is not an image type, but just a value that means "RLE" is used */ #define TGA_RLE 8 /* Interleave flag values */ #define TGA_IL_None 0 #define TGA_IL_Two 1 #define TGA_IL_Four 2 #define TARGA_MAGIC 'T' + 256 * 'G' extern RgbaImageT tga_cmap; extern int tgaRead(tga_hdr_t *tgaP, RgbaImageT *imgP, FILE *fio); extern int tgaHeaderRead(tga_hdr_t *tgaP, RgbaImageT *imgP, FILE *fio); extern int tgaWrite(tga_hdr_t *tgaP, RgbaImageT *imgP, FILE *fio); extern int tgaHeaderWrite(tga_hdr_t *tgaP, RgbaImageT *imgP, FILE *fio); #endif /* _TGA_H__INCLUDED_ */ xmorph-20140707+nmu2/libmorph/mesh_t.h0000664000000000000000000000153412356304633014316 0ustar #ifndef _MESH_T_H__INCLUDED_ #define _MESH_T_H__INCLUDED_ #define MESHLABEL_T int #define MESHPOINTSELECTED (-1) typedef struct { long nx; /* number of mesh points in the x-direction */ long ny; /* number of mesh points in the y-direction */ double *x; /* 2D array of mesh point x-values */ double *y; /* 2D array of mesh point y-values */ MESHLABEL_T *label; /* any point may be labelled , for grouping points etc the most important labels are 0 == normal point -1 == selected point */ unsigned int changed; /*if it has been changed since the last saving */ /* the reference count: good for porting libmorph in python (or any language that needs garbage collecting) for easier use in GTK . read README.libmorph */ unsigned int reference_counting; } MeshT; #endif /* _MESH_T_H__INCLUDED_ */ xmorph-20140707+nmu2/libmorph/spl-array.c0000664000000000000000000001212612356304633014743 0ustar /* spl-array.c: Spline interpolation support routines for matrices // // Written and Copyright (C) 1993-1999 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. */ #include #include #include #include #include "my_malloc.h" #include "spline.h" #include "spl-array.h" #include "braindead_msvc.h" /* --------------------------------------------------------------- */ #define NEAR(x1, x2) (((x2)!=0.0) && (((x1)/(x2)) >= 0.999) && (((x1)/(x2))<1.001)) #ifndef FALSE #define FALSE 0 #endif /* --------------------------------------------------------------- */ /* derivative_hack: compute 1st derivative of x,y data (len entries) // // Written and Copyright (C) 1994-1997 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // // Mathematically, it's a hack to prevent overshooting knots, but // maintain smoothness and it works more intuitively. Besides, we all // know that mathematicians are too worried about rigor, and the // physicists end up creating the right math. -- MJG */ /* avoid division by zero */ static inline double NONZERO(double A) { return (A>0.01 ? A : ( A >0 ? 0.01 : ( A > -0.01 ? -0.01 : A))); } static void derivative_hack(const double *x, const double *y, double *yd, int len) { int indx; yd[0] = (y[1]-y[0])/NONZERO(x[1]-x[0]); yd[len-1] = (y[len-1]-y[len-2])/NONZERO(x[len-1]-x[len-2]); for(indx=1; indx<(len-1); indx++) { if( ((y[indx-1] >= y[indx]) && (y[indx+1] >= y[indx])) || ((y[indx-1] <= y[indx]) && (y[indx+1] <= y[indx])) ) { /* There was a change in the sign of yd so force it zero */ /* This will prevent the spline from overshooting this knot */ yd[indx] = 0.0; } else { /* Set slope at this knot to slope between two adjacent knots */ yd[indx] = (y[indx-1]-y[indx+1]) / NONZERO(x[indx-1]-x[indx+1]); } } } /* --------------------------------------------------------------- */ /* hermite3_array : cubic hermite interpolation for an array of points // // Uses derivative_hack to find derivatives. // // // kx, ky (in): arrays of knots // nk (in): number of knots // sx (in): evaluation points array // sy (out): spline values at evaluation pts sx. Must already be allocated. // ns (in): number of evaluation points */ int hermite3_array(const double *kx, const double *ky, long nk, double *sx, double *sy, long ns) { register long xi; double *kyd; if((kyd=MY_CALLOC(nk, double))==NULL) return 1; /* Test bounds. */ /* As of 18jul94, this test was triggering for cases // where the bounds were nearly equal, but slightly out of range, in // which case the spline should work anyway, which is why I let it run // even if the spline abcissas are out of range. */ #ifdef USELESS /* and dangerous , now that border is free */ if((sx[0] < kx[0]) || (sx[ns-1] > kx[nk-1])) { if(!NEAR(sx[ns-1], kx[nk-1])) { fprintf(stderr, "hermite3_array: out of range:\n"); fprintf(stderr, "hermite3_array: eval=%.20g < knot=%.20g | %.20g>%.20g\n", sx[0], kx[0], sx[ns-1], kx[nk-1]); } } #endif /* Find array of derivatives */ derivative_hack(kx, ky, kyd, nk); /* Evaluate the spline */ for(xi=0; xi kx[nk-1]) sy[xi]=ky[nk-1]; else sy[xi]=hermite3_interp(sx[xi], kx, ky, kyd, nk, NULL, FALSE, NULL, NULL); } /* Free the derivatives array */ FREE(kyd); return 0; } int hermite3_array2(const double *kx, const double *ky, long nk, double sx_start,double sx_step, double *sy, long ns, int howto_extend/* 0-> constant 1-> linear */ ) { register long xi=0; double *kyd; if((kyd=MY_CALLOC(nk, double))==NULL) return 1; /* Find array of derivatives */ derivative_hack(kx, ky, kyd, nk); assert(sx_step>=1); /* Evaluate the spline */ for(;sx_start+xi*sx_step kx[ki] && ki=L) J=(2*L-1)-J;} /* border extension of src */ #define BORD(J,L) { if((J)<0) (J)=0; else if ((J)>(L)) (J)=(L); } /* zero extension of src */ #define ZERO(J,L) { if(J<0 || J>L) continue; } /* enforce boundary condition <-> array bounds */ /* #define BC(J,L) REFOLD(J,L) */ #undef MAX #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #undef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #undef ABS #define ABS(a) (((a) < 0) ? -(a) : (a)) #undef CLAMP #define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) #include "stdio.h" #include "math.h" /* void (*resample_array_inv_choices[10])(const double *F, */ /* const PIXEL_TYPE *src, int s_len, int s_stride, */ /* PIXEL_TYPE *dst, int d_len, int d_stride); */ typedef void (* resample_t)(const double *F, const PIXEL_TYPE *src, int s_len, int s_stride, PIXEL_TYPE *dst, int d_len, int d_stride); /*****************************************************************/ /* WARNING this is not ANTIALIASED in any way but is very simple and fast */ static inline void resample_array_inv_near_neighbor (const double *F, const PIXEL_TYPE *src, int s_len, int s_stride, PIXEL_TYPE *dst, int d_len, int d_stride) { int i,p=0,j; for(i=0;i=s_len) v=src[j* s_stride]; else v=src[j* s_stride]*(1-dj) + src[nj* s_stride]*dj; dst[p]=v; p+= d_stride; } } #ifdef SEEMS_UNNEEDED int c; /* I have tested this improvement to the above, and this seems to introduce ripples; I don't want to improve it, use AA if you really want AA*/ if( oj>=j+2) { c=oj-j+1; if(oj>=s_len) oj=s_len-1; while (oj>=j) { v+=src[oj* s_stride]; oj--; } v/=c; }else if ( oj+2<=j) { c=j-oj+1; if(oj<0) oj=0; while (oj<=j) { v+=src[oj* s_stride]; oj++; } v/=c; } else #endif /*********** antialiased using convolutional kernels***************/ #if 256 >= (PIXEL_MAX-PIXEL_MIN) #include "sinc_256.h" #else #include "sinc_1024.h" #endif #ifndef M_PI #define M_PI 3.141 #endif static double sinc(const double x) { if (x<0.0001 && x > -0.0001) return 1; else { double tmp = M_PI * x ; return sin(tmp) / tmp; } } static double sinc_by_table(const double x) { if (x < -4 || x > 4) { double tmp = M_PI * x ; return sin(tmp) / tmp; } else return sinc_table [(int)((ABS(x))*SINC_TABLE_UNIT )]; } static double lanczos(const double x) { if (x < -2 || x > 2) return 0; else return sinc(x); } static double lanczos4(const double x) { if (x < -4 || x > 4) return 0; else return sinc(x); } static double triangle(const double x) { if (x<-1) return 0; else if(x<0) return x+1; else if(x<1) return 1-x; else return 0; } /* this generates the function name */ #define FUN(A) XFUN(A) #define XFUN(A) resample_array_inv_ ## A /************* choice of antialiasing kernel **************/ /* optimizations for the case of any kernel based on sinc suggested by lvalero, oberger 05/05/2004 */ #define KERNEL_sinc_fast /* if the above is undefined, then this will be used instead this also is used in creating the function name*/ #define KERNEL lanczos /* this is the half of the width of the kernel for lanczos4, it must be 4, otherwise 2*/ #define KERNEL_WIDTH 2 /* this creates the function */ #include "resample_snippet.h" /* then another function */ #undef KERNEL #define KERNEL lanczos4 #undef KERNEL_WIDTH #define KERNEL_WIDTH 4 #include "resample_snippet.h" /***********end choice of antialiasing kernel **************/ resample_t resample_choices[10] = { FUN(near_neighbor) , FUN(bilinear), FUN(lanczos),FUN(lanczos4), NULL}; char * resample_array_inv_names[10] = { "near_neighbor" , /* choose nearest pixel: fastest, looks bad */ "bilinear", /* bilinear: same as with the old libmorph warping code */ "lanczos", /* Lanczos: much better quality, a must for animations //and/or fine grained images; it is though slower,*/ "lanczos4",/* even better than before, but no noticeable difference on most images */ NULL}; void (*resample_array_inv)(const double *F, const PIXEL_TYPE *src, int s_len, int s_stride, PIXEL_TYPE *dst, int d_len, int d_stride)= FUN(lanczos); void mesh_resample_choose_aa(int f) { resample_array_inv=resample_choices[f]; } #include /* for strcmp */ void mesh_resample_choose_aa_by_name(char * s) { int f=0; while(resample_choices[f]) { if (0==strcmp (s,resample_array_inv_names[f])) { resample_array_inv=resample_choices[f]; return; } f++; } fprintf(stderr,"\n%s:%d: no choice '%s' for kernel!\n",__FILE__,__LINE__,s); } xmorph-20140707+nmu2/libmorph/mesh-getext.h0000664000000000000000000000611212356304633015266 0ustar #ifndef _MESH_GETEXT_H__INCLUDED_ #define _MESH_GETEXT_H__INCLUDED_ #include "mesh.h" /************ EXTRA MESH GET FUNCTIONS **************/ /******************* * if you define MESH_GET_EXT_NOT_SAFE * then meshGetExt will not be safe for any choice of * xi and yi: it will be safe only in a neighbourhood of the mesh * * but it may be faster */ #ifdef MESHGETEXT_NOT_SAFE #define MESHGETEXT__ONLY_Y__ __meshGetExt__only_y__ static inline double /* __attribute__ weak */ __meshGetExt__only_y__(MeshT *this, int xi, int yi,double *p); #define MESHGETEXT__GETIT__ meshGet #else #define MESHGETEXT__ONLY_Y__ meshGetExt #define MESHGETEXT__GETIT__ meshGetExt #endif static inline double /* __attribute__ weak */ meshGetExt(MeshT *this, int xi, int yi,double *p) { if(xi<0 ) return 2*MESHGETEXT__GETIT__(this,0,yi,p) -MESHGETEXT__ONLY_Y__(this, -xi,yi,p); else if (xi>=this->nx) return 2*MESHGETEXT__GETIT__(this,this->nx-1 ,yi,p) -MESHGETEXT__ONLY_Y__(this, 2*this->nx-xi-2,yi,p); if(yi<0 ) return 2*MESHGETEXT__GETIT__(this,xi,0,p) -MESHGETEXT__GETIT__(this, xi,-yi,p); else if (yi>=this->ny) return 2*MESHGETEXT__GETIT__(this,xi,this->ny-1,p) -MESHGETEXT__GETIT__(this,xi, 2*this->ny-yi-2,p); return meshGet__no_check(this,xi,yi,p) ; } #ifdef MESHGETEXT_NOT_SAFE static inline double /* __attribute__ weak */ __meshGetExt__only_y__(MeshT *this, int xi, int yi,double *p) { if(yi<0 ) return 2*MESHGETEXT__GETIT__(this,xi,0,p) -MESHGETEXT__GETIT__(this, xi,-yi,p); else if (yi>=this->ny) return 2*MESHGETEXT__GETIT__(this,xi,this->ny-1,p) -MESHGETEXT__GETIT__(this,xi, 2*this->ny-yi-2,p); return meshGet__no_check(this,xi,yi,p) ; } #endif static inline double /* __attribute__ weak */ meshGetxExt2(MeshT *this, int xi, int yi) { return meshGetExt(this,xi,yi, this->x); } static inline double /* __attribute__ weak */ meshGetyExt2(MeshT *this, int xi, int yi) { return meshGetExt(this,xi,yi, this->y); } static inline double /* __attribute__ weak */ meshGetxExt(MeshT *this, int xi, int yi) { double *p=this->x; if(xi<0 ) return 2*MESHGETEXT__ONLY_Y__(this,0,yi,p) -MESHGETEXT__ONLY_Y__(this, -xi,yi,p); else if (xi>=this->nx) return 2*MESHGETEXT__ONLY_Y__(this,this->nx-1 ,yi,p) -MESHGETEXT__ONLY_Y__(this, 2*this->nx-xi-2,yi,p); if(yi<0 ) return MESHGETEXT__GETIT__(this, xi,-yi,p); else if (yi>=this->ny) return MESHGETEXT__GETIT__(this,xi, 2*this->ny-yi-2,p); return meshGet__no_check(this,xi,yi,p) ; } static inline double /* __attribute__ weak */ meshGetyExt(MeshT *this, int xi, int yi) { double *p=this->y; if(xi<0 ) return MESHGETEXT__ONLY_Y__(this, -xi,yi,p); else if (xi>=this->nx) return MESHGETEXT__ONLY_Y__(this, 2*this->nx-xi-2,yi,p); if(yi<0 ) return 2*MESHGETEXT__GETIT__(this,xi,0,p) -MESHGETEXT__GETIT__(this, xi,-yi,p); else if (yi>=this->ny) return 2*MESHGETEXT__GETIT__(this,xi,this->ny-1,p) -MESHGETEXT__GETIT__(this,xi, 2*this->ny-yi-2,p); return meshGet__no_check(this,xi,yi,p) ; } #endif // _MESH_GETEXT_H__INCLUDED_ xmorph-20140707+nmu2/libmorph/resample.h0000664000000000000000000000125012356304633014642 0ustar #ifndef _RESAMPLE_INCLUDED_ #define _RESAMPLE_INCLUDED_ #include "warp.h" extern void (*resample_array_inv)(const double *F, const PIXEL_TYPE *src, int s_len, int s_stride, PIXEL_TYPE *dst, int d_len, int d_stride); /* choice of kernel by name */ extern char *resample_array_inv_names[]; /* is null terminated */ void mesh_resample_choose_aa(int f); void mesh_resample_choose_aa_by_name(char *s); /** backward compatible interface, for older code * */ static inline void resample_array_inv_bc (const double *F, const PIXEL_TYPE *src, PIXEL_TYPE *dst, int len, int stride) { resample_array_inv(F,src,len,stride,dst,len,stride); } #endif xmorph-20140707+nmu2/libmorph/mesh-swig.h0000664000000000000000000001137412356304633014745 0ustar /* SWIG: Simplified Wrapper Interface Generator */ #ifdef SWIG %module mesh %{ #include "mesh.h" /* mesh_tcl_result: TCL Result string for mesh functions // // DESCRIPTION // This is a sneaky way to return character string results to TCL while // not having to worry about memory leaks, and while still using SWIG's // wrapping abilities. I.e., I don't have to worry about writing my // own TCL wrapper code and registering it with TCL. // // NOTES // The drawback to this method is potentially that returning a pointer to // a string could cause problems if that pointer is abused, i.e., if the // contents of that string are assumed to remain constant by the TCL code. */ #define MESH_TCL_RESULT_MAX_LEN 2048 static char mesh_tcl_result[MESH_TCL_RESULT_MAX_LEN]; /* NAME // meshLine: return a line of mesh point coordinate pairs as a string // // // ARGUMENTS // this (in): mesh pointer // // line_index (in): index of the row or column, depending on 'direction' // // direction (in): 1 for row (horizontal line), 2 for column (vertical line) // // // DESCRIPTION // meshLine returns a list of coordinate pairs of all of the mesh // points along a line of the given line_index and direction. // // // RETURN VALUE // Returns the address of the result string, which is assumed to be // passed back to the TCL interpretter as a TCL list. // The string used is the global string mesh_tcl_result. Using a // constant address eliminated potential memory leak problems. // // // SEE ALSO // mesh_tcl_result */ //FIXME mennucci: why is this in mesh.h instead of mesh.c? // anyway it is protected by ifdef SWIG char * meshLine(const MeshT *this, const int line_index, const int direction) { int vi; int nv; int str_len = 0; char float_string[64]; int point_index = -10000; if(line_index < 0) { /* line_index is out of range */ return NULL; } if(1 == direction) { nv = this->nx; if(line_index >= this->ny) { /* line_index is out of range */ return NULL; } } else if (2 == direction) { nv = this->ny; if(line_index >= this->nx) { /* line_index is out of range */ return NULL; } } else { /* Invalid value for direction */ return NULL; } /* Empty the result string */ mesh_tcl_result[0] = '\0'; for(vi = 0; vi < nv; vi++) { if(1 == direction) { point_index = line_index * this->nx + vi; } else if (2 == direction) { point_index = vi * this->nx + line_index; } sprintf(float_string, " %.0f %.0f", this->x[point_index], this->y[point_index]); str_len += strlen(float_string); if(str_len >= MESH_TCL_RESULT_MAX_LEN) { fprintf(stderr, "meshLine: mesh_tcl_result length exceeded\n"); return NULL; } strcat(mesh_tcl_result, float_string); } return mesh_tcl_result; } %} #endif /* SWIG */ #ifdef SWIG %addmethods MeshT { MeshT(void) { return meshNew(0, 0); } ~MeshT() { meshDelete(self); } int alloc(int nx, int ny) { return meshAlloc(self, nx, ny); } void free() { meshFree(self); } void print() { meshPrint(self); } void interpolate(const MeshT *m1P, const MeshT *m2P, float tween_param) {meshInterpolate(self, m1P, m2P, tween_param);} void reset(int img_width, int img_height) { meshReset(self, img_width, img_height); } void scale(int img_width, int img_height) { meshScale(self, img_width, img_height); } char *row(int line_index) { return meshLine(self, line_index, 1); } char *col(int line_index) { return meshLine(self, line_index, 2); } int pick(int mouse_x, int mouse_y, int component, float proximity) { return meshPick(self, mouse_x, mouse_y, component, proximity); } void store() { meshStore(self); } void recover() { meshRetrieve(self); } int lineModify(MeshT *other, int mouse_x, int mouse_y, char line_type, char action) { return meshLineMouseModify(self, other, mouse_x, mouse_y, line_type, action); } int read(const char *filename) { return meshRead(self, filename); } int write(const char *filename) { return meshWrite(self, filename); } void match(const MeshT *other) { meshMatch(self, other); } float pointGet(int xi, int yi, int component) { if(0 == component) return self->x[yi * self->nx + xi]; else if(1 == component) return self->y[yi * self->nx + xi]; /* Invalid value for component */ else return -1.0; } void set(int xi, int yi, float new_x, float new_y) { meshSet(self, xi, yi, new_x, new_y); } }; #endif xmorph-20140707+nmu2/libmorph/warp-gtk.h0000664000000000000000000000332512356304633014573 0ustar #ifndef __WARP_GTK_H__ #define __WARP_GTK_H__ #include "warp.h" #ifndef GDK_PIXBUF_MAJOR #error you need to install gtk 2.0 or gdk-pixbuf, and include to use this header #endif //FIXME this test does not work #if PIXEL_MIN != 0 || PIXEL_MAX != 255 #error the library libmorph was compiled with a choice of PIXEL_TYPE that is incompatible with gdk pixbuffers #endif static inline void warp_image_gdk_a ( GdkPixbuf *src, GdkPixbuf *dst, const double *xs, const double *ys, const double *xd, const double *yd, int mesh_width, int mesh_height) { warp_image_versatile (gdk_pixbuf_get_pixels(src), gdk_pixbuf_get_width(src),gdk_pixbuf_get_height(src), gdk_pixbuf_get_n_channels(src),gdk_pixbuf_get_rowstride(src),gdk_pixbuf_get_n_channels(src), gdk_pixbuf_get_pixels(dst), gdk_pixbuf_get_width(dst),gdk_pixbuf_get_height(dst), gdk_pixbuf_get_n_channels(dst),gdk_pixbuf_get_rowstride(dst),gdk_pixbuf_get_n_channels(dst), xs, ys, xd, yd, mesh_width, mesh_height); } static inline void warp_image_gdk_m ( GdkPixbuf *src, GdkPixbuf *dst, MeshT *srcmesh, MeshT *dstmesh) { g_return_if_fail( srcmesh->nx == dstmesh->nx && srcmesh->ny == dstmesh->ny); warp_image_versatile (gdk_pixbuf_get_pixels(src), gdk_pixbuf_get_width(src),gdk_pixbuf_get_height(src), gdk_pixbuf_get_n_channels(src),gdk_pixbuf_get_rowstride(src),gdk_pixbuf_get_n_channels(src), gdk_pixbuf_get_pixels(dst), gdk_pixbuf_get_width(dst),gdk_pixbuf_get_height(dst), gdk_pixbuf_get_n_channels(dst),gdk_pixbuf_get_rowstride(dst),gdk_pixbuf_get_n_channels(dst), srcmesh->x, srcmesh->y, dstmesh->x, dstmesh->y, srcmesh->nx,srcmesh->ny); } #endif // __WARP_GTK_H__ xmorph-20140707+nmu2/libmorph/my_malloc.c0000664000000000000000000006133612356304633015014 0ustar /* my_malloc.c : memory allocation routines with error checking // Written and Copyright (C) 1994-2000 by Michael J. Gourlay 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, or (at your option) any later version. This file 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 file; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include "braindead_msvc.h" /* Apollo w/ Domain/OS SR10.4.1, BSD 4.3 has no "malloc.h". Thanks to PW. // // Windows NT/95 using the cygwin package already includes "malloc.h". // Thanks to Geoff Lawler. */ #if defined(apollo) || defined(__CYGWIN32__) #else #include #endif #include "my_malloc.h" /* timestamp: embed a string in the object for later perusal */ static const char *timestamp = "Copyright (C) Michael J. Gourlay " __DATE__ ; /* NAME // listAppend: append a new element to the end of a reallocated list // // // DESCRIPTION // A list, implemented as an array, is reallocated to have a new // element at the end of the original list. The contents of the // original list is kept intact, but the address of the list elements // might change due to the realloc. // // The newly appended list element is left uninitialized. // // // ARGUMENTS // root (in/out): address of the variable that points to the // beginning of the list. The list is an array of a type whose // size is 'size'. DANGER: The contents of 'root' might change // due to a realloc(). // // nmemb (in/out): address of the variable that holds the number of // elements in the list. The contents 'nmemb' will increment to // include the newly appended list element. // // size (in): size of an element of the list. // // // RETURN VALUE // If the memory allocation for the new list failes, -2 is returned. // Otherwise, the index of the new element (which is the same as the // number of elements in the new list, minus one) is returned. // // // NOTES // The user is responsible for freeing the memory allocated by // listAppend, either by calling listDelete for each element in the // list, or an explicit call to free(). // // This routine uses realloc(). realloc() is DANGEROUS because it can // and will reassign the address of the elements of the array pointed // to by 'root'. That means that if you have something other than // 'root' pointing to any elements in the 'root' array, and you call // listAppend, and the realloc() in listAppend reassigns the addresses, // the other pointers will point at nonsense. Use with care. // // The realloc() in this routine is NOT the mjg_realloc() that does // memory checking. If you create a list with listAppend, then you // should not use mjg_free to eliminate the memory. This is because // listAppend is used by mjg_realloc to do internal book-keeping. // // // SEE ALSO // listDelete() */ int listAppend(void ** root, int *nmemb, const int size) { if((*root = realloc(*root, size * (*nmemb + 1))) == NULL) { fprintf(stderr, "listAppend: bad alloc: %i\n", *nmemb + 1); return -2; } (*nmemb) ++; return *nmemb - 1; } /* NAME // listDelete: delete an element from a list // // // ARGUMENTS // index (in): index of the element to delete // // // RETURN VALUES // If 'index' is an invalid value, -1 is returned. // If the reallocation fails, -2 is returned. // Otherwise, 0 is returned. // // // SEE ALSO // listAppend() */ int listDelete(void ** root, int *nmemb, const int size, const int index) { int remainder = *nmemb - index - 1; if((index < 0) || (index >= *nmemb)) { return -1; } memmove(((char*)(*root) + index*size), ((char*)(*root) + (index+1)*size), remainder * size); if(*nmemb > 1) { if((*root = realloc(*root, size * (*nmemb - 1))) == NULL) { fprintf(stderr, "listDelete: bad alloc: %i\n", *nmemb - 1); return -2; } } else { memset(*root, 0, size); } (*nmemb) --; return 0; } #ifdef DEBUG /* MEM_BLOCK_: tokens for tagging MemBlocks */ #define MEM_BLOCK_HEAD_ACTIVE 0xfeedfaceabad1deall #define MEM_BLOCK_HEAD_INACTIVE 0xdeadbeefabadcafell #define MEM_BLOCK_TAIL_ACTIVE 0xacc01adeabaddeedll #define MEM_BLOCK_TAIL_INACTIVE 0xcafef00dbeedeca1ll struct MemBlock { long long *head; /* Address of the block head */ void *user; /* Address of the beginning of client memory */ long long *tail; /* Address of the block tail */ size_t size; /* Size (in bytes) of the user portion of this chunk */ long nelem; /* number of elements */ int elsize; /* element size (in bytes) */ int line; /* line in file of caller that requested the memory */ char *file; /* file of caller that requested the memory */ }; /* mb_list: list of MemBlocks // NOTE: Not reentrant. */ static struct MemBlock *mb_list = NULL; /* mb_num: size of the mb_list array // NOTE: Not reentrant. */ static int mb_num = 0; static int memBlockAppend(void) { return listAppend((void**)&mb_list, &mb_num, sizeof(struct MemBlock)); } static int memBlockDelete(const int index) { return listDelete((void**)&mb_list, &mb_num, sizeof(struct MemBlock), index); } static void memBlockPrint(const struct MemBlock * const self, FILE *stream) { fprintf(stream, "MemBlock user %p\n", self->user); if ( /* CONSTANTCONDITION */ sizeof(size_t) == sizeof(int) ) fprintf(stream, "MemBlock size %i %x\n", self->size, self->size); else fprintf(stream, "MemBlock nelem %li %lx\n", self->nelem, self->nelem); fprintf(stream, "MemBlock elsize %i %x\n", self->elsize, self->elsize); fprintf(stream, "MemBlock file '%s' line %i\n", self->file, self->line); fprintf(stream, "MemBlock head %p\n", self->head); fprintf(stream, "MemBlock tail %p\n", self->tail); if(self->head != NULL) { fprintf(stream, "MemBlock head[0] %llx ", self->head[0]); if(self->head[0] != MEM_BLOCK_HEAD_ACTIVE) { fprintf(stream, "CORRUPT"); } fprintf(stream, "\n"); if(self->tail != NULL) { fprintf(stream, "MemBlock tail[0] %llx ", self->tail[0]); if(self->tail[0] != MEM_BLOCK_TAIL_ACTIVE) { fprintf(stream, "CORRUPT"); } fprintf(stream, "\n"); } } } /* NAME // memBlockCompare: compare function for qsort // // ARGUMENTS // p1, p2 (in): pointers to MemBlocks // // DESCRIPTION // The qsort function needs a compare function for comparing elements // in an array. memBlockCompare performs the comparison by using the // "user" field of the MemBlock struct. The idea is that if some // chunk of memory is corrupt, then it will be useful to know what is // stored in adjacent memory areas. // // NOTES // One problem with sorting according to address is that the order // that the MemBlock appears in the mb_list array of MemBlocks will // be lost. That information might be useful to determine roughly // when the memory was allocated. // // SEE ALSO // memBlockSort(), qsort() */ static int memBlockCompare(const void *p1, const void *p2) { const struct MemBlock *mb1 = p1; const struct MemBlock *mb2 = p2; const long u1 = (long) mb1->user; /* cast */ const long u2 = (long) mb2->user; /* cast */ if(u1 > u2) return 1; else if(u1 < u2) return -1; return 0; } /* // SEE ALSO // memBlockCompare() */ static void memBlockSort(void) { fprintf(stderr, "\n ---- memBlockSort: sorting by address\n"); qsort(mb_list, mb_num, sizeof(struct MemBlock), memBlockCompare); } /* NAME // memBlockInventory: display list of MemBlocks // // // ARGUMENTS // all(in): flag indicating whether all MemBlocks should be // diplayed, or only the active ones. */ void memBlockInventory(const int all) { int mbi; fprintf(stderr, "memBlockInventory: %i ", all); if(all) { fprintf(stderr, "(reporting all %i blocks)\n", mb_num); } else { fprintf(stderr, "(reporting %i unfreed blocks)\n", mb_num); } for(mbi=0; mbi < mb_num; mbi++) { if(all || mb_list[mbi].head != NULL) { fprintf(stderr, "MemBlock %i:\n", mbi); memBlockPrint(&mb_list[mbi], stderr); fprintf(stderr, "\n"); } } fprintf(stderr, "\n"); } /* NAME // memBlockCheck: check MemBlock for corruption // // // DESCRIPTION // The memory in a MemBlock has tags at the beginning and end of the // allocated memory chunk. If the tags do not have one of a small // set of valid values then the memory chunk is considered to have // been corrupted. This sort of rudimentary checking will discover // most cases of exceeding array boundaries. */ static int memBlockCheck(const struct MemBlock * const self) { if(self->head != NULL) { if( (self->head[0] != MEM_BLOCK_HEAD_ACTIVE) && (self->head[0] != MEM_BLOCK_HEAD_INACTIVE)) { fprintf(stderr, "memBlockCheck: corrupt head\n"); memBlockPrint(self, stderr); fflush(stdout); fflush(stderr); #if DEBUG >= 1 abort(); #else return 1; #endif } if(self->tail != NULL) { if( (self->tail[0] != MEM_BLOCK_TAIL_ACTIVE) && (self->tail[0] != MEM_BLOCK_TAIL_INACTIVE)) { fprintf(stderr, "memBlockCheck: corrupt tail\n"); memBlockPrint(self, stderr); fflush(stdout); fflush(stderr); #if DEBUG >= 1 abort(); #else return 1; #endif } } } return 0; } int memBlockCheckAll(void) { int mbi; int rv = 0; for(mbi=0; mbi < mb_num; mbi++) { rv += memBlockCheck(&mb_list[mbi]); } return rv; } /* NAME // memBlockIndex: Search for pointer in the list of MemBlocks // // // NOTES // Search starting from the end of the list of MemBlocks. // This is because it is possible (perhaps likely) that the same // memory address will be used multiple times between malloc/free // calls, and we want to reference the most recently malloced block // with the given address. */ static int memBlockIndex(const void * const ptr) { int mbi; for(mbi=mb_num-1; mbi >= 0; mbi--) { if(ptr == mb_list[mbi].user) { /* Found pointer in memory table */ return mbi; } } return -1; } static int mem_exit_check_registered = 0; static void memExitCheck(void) { #if DEBUG >= 1 fprintf(stderr, "\n ==== memExitCheck: %s\n", timestamp); #if VERBOSE >= 2 memBlockInventory(1); #if 0 memBlockSort(); memBlockInventory(1); #endif #else memBlockInventory(0); #if 0 memBlockSort(); memBlockInventory(0); #endif #endif #endif } /* TAG_SIZE: size, in bytes, of the head and tail tags // // NOTES // TAG_SIZE must also be the size of a memory block alignment for // heap allocation. Usually, this is the same as the size of a word // for the architeture, but can be the size of a double word for a // 64-bit architecture. Usually, a "long long" here will suffice. */ #define TAG_SIZE sizeof(long long) #else #define TAG_SIZE 0 #endif /* DEBUG */ /* NAME // mjg_realloc: memory allocation with debugging // // // ARGUMENTS // ptr (in/out): address of the user portion of previously allocated memory // // nelem (in): number of elements to allocate // // elsize (in): size of the element, in bytes // // file (in): name of the file from which mjg_realloc was called // // line (in): line number of the file from which mjg_realloc was called // // // DESCRIPTION // mjg_realloc is the workhorse routine for several incarnations of // this memory allocation package. Usually, mjg_realloc would not be // called by the client directly, but instead would be called through // one of several calling macros, such as REALLOC, MY_CALLOC or // CALLOC, which provide programming interfaces more like the system // alloc routines. // // mjg_realloc sets up and performs memory allocation debugging table // entries which can be used to help find array bounds violations and // un-freed memory blocks ("memory leaks"). // // // NOTES // The address "ptr" is searched for in the list of MemBlocks. If it is // found, and if the associated MemBlock is active, then the head of that // MemBlock is used as the actual beginning of the memory chunk. (Note // that it is possible for "ptr" to be found in the list of MemBlocks and // for that MemBlock to be inactive. This probably means that the client, // at one time, used mjg_realloc to allocate a memory chunk, freed it using // mjg_free, then used a system alloc routine which coincidentally created // another memory chunk which happened to start at the same address as // "ptr".) // // If "ptr" is not found in the list of MemBlocks or if "ptr" is found but // the MemBlock is inactive, then "ptr" is used as the actual beginning of // the memory chunk. In this situation, it is probably the case that the // client used the system alloc routines to allocate the memory chunk, and // it using mjg_realloc instead of realloc. I.e., the client is mixing use // of mjg_realloc and system alloc routines, which is a Bad Idea. // // // SEE ALSO // macros: MY_CALLOC, REALLOC, CALLOC, MALLOC, FREE, STRDUP */ void * mjg_realloc(void * const ptr, const long nelem, const int elsize, const char * const file, const int line) { void *mem = ptr; #ifdef DEBUG int mbi = memBlockIndex(ptr); /* Find MemBlock for this chunk */ if(! mem_exit_check_registered) { /* Register memory block checker to be called on exit */ atexit(memExitCheck); mem_exit_check_registered = 1; } fflush(stdout); fflush(stderr); #endif #if VERBOSE >= 2 fprintf(stderr, "mjg_realloc: %p %li %i %s %i\n", ptr, nelem, elsize, file, line); #endif #ifdef DEBUG #ifdef SUNOS malloc_verify(); #endif #if defined(sgi) /* If this is not resolved at link time, try linking with -lmalloc */ mallopt(M_DEBUG, 1); #endif if(memBlockCheckAll()) { fprintf(stderr, "mjg_realloc: ERROR: memBlockCheckAll 1 found errors\n"); } /* See if MemBlock was found for this chunk */ if(mbi >= 0) { /* A MemBlock was found for the chunk with user portion at ptr */ if( (mb_list[mbi].head != NULL) && (mb_list[mbi].head[0] == MEM_BLOCK_HEAD_ACTIVE)) { /* The MemBlock is active so its head is the top of the memory chunk */ mem = mb_list[mbi].head; } } #endif /* DEBUG */ /* Check the validity of the input parameters */ if(nelem < 0) { fprintf(stderr, "mjg_realloc: %s: %i: ERROR: Bad Value: nelem=%li\n", file, line, nelem); #if DEBUG >= 1 fflush(stderr); fflush(stdout); abort(); #endif return NULL; } if(elsize < 0) { fprintf(stderr, "mjg_realloc: %s: %i: ERROR: Bad Value: elsize=%i\n", file, line, elsize); #if DEBUG >= 1 fflush(stderr); fflush(stdout); abort(); #endif return NULL; } if(nelem * elsize <= 0) { fprintf(stderr, "mjg_realloc: %s %i: WARNING: allocating no memory\n", file, line); fprintf(stderr, "mjg_realloc: %s %i: WARNING: nelem=%li elsize=%i\n", file, line, nelem, elsize); fprintf(stderr, "mjg_realloc: %s %i: WARNING: product=%li\n", file, line, nelem * elsize); #if DEBUG >= 1 fprintf(stderr, "mjg_realloc: ready to abort. press return.\n"); getchar(); abort(); #endif } /* Allocate the client memory: // The extra 2 TAG_SIZE elements are for the head and tail tags. // One of the extra TAG_SIZE is for aligment. */ if((mem=realloc(mem, (nelem*elsize)+(3 * TAG_SIZE)))==NULL) { fprintf(stderr, "mjg_realloc: %s %i: Bad Alloc: %li x %i = %li\n", file, line, nelem, elsize, nelem * elsize); } #ifdef DEBUG else { /* Assign the various portions of the memory chunk */ long long *head = mem; char *user = (char *)(&head[1]); long long *tail = (long long*)(&user[nelem * elsize]); /* Refer mem to the user portion of the memory chunk */ mem = user; /* Avoid a bus error by finding an address with proper alignment for the user and tail. This is a big hack and makes some assumptions about word allignment requirements of a machine -- specifically that the word size is smaller than or equal to a "long long integer", and that alignment is an even multiple of the size of a long long. If this causes problems for your architecture, then turn memory debugging off, or comment out the tail reference lines throughout this module. Also, report the error to the authors. */ { unsigned long align = (long)tail; align = ((align + (sizeof(long long)-1)) / sizeof(long long)) * sizeof(long long); #if (VERBOSE >= 2) fprintf(stderr, "tail was=%p align=%li\n", tail, align); #endif tail = (long long *)align; #if (VERBOSE >= 2) fprintf(stderr, "tail is=%p\n", tail); #endif } /* Tag the memory chunk */ head[0] = MEM_BLOCK_HEAD_ACTIVE; tail[0] = MEM_BLOCK_TAIL_ACTIVE; /* Clear new portion of the memory chunk */ if((ptr == NULL) || (mbi >= 0)) { /* By default, clear the entire memory chunk */ char *new = mem; size_t new_size = nelem * elsize; /* If this is really a realloc, only clear new portion */ if(mbi >= 0) { size_t old_size = mb_list[mbi].size; new = &user[old_size]; new_size = nelem * elsize - old_size; } #if (DEBUG >= 3) fprintf(stderr, "mjg_realloc: %s: %i: setting %i bytes at %p\n", file, line, new_size, new); memset(new, 1, new_size); #else memset(new, 0, new_size); #endif } /* If there was no MemBlock associated with this chunk, try to make one */ if(mbi < 0) { mbi = memBlockAppend(); } if(mbi >= 0) { /* Assign the MemBlock members */ mb_list[mbi].head = head; mb_list[mbi].user = user; mb_list[mbi].tail = tail; mb_list[mbi].size = nelem*elsize; mb_list[mbi].nelem = nelem; mb_list[mbi].elsize = elsize; mb_list[mbi].line = line; mb_list[mbi].file = strdup(file); if(mb_list[mbi].file == NULL) { fprintf(stderr,"mjg_realloc: %s: %i: bad interal alloc: file\n",file,line); } } } #ifdef SUNOS malloc_verify(); #endif if(memBlockCheckAll()) { fprintf(stderr, "mjg_realloc: ERROR: memBlockCheckAll 2 found errors\n"); } #endif /* DEBUG */ #if (VERBOSE >= 2) fprintf(stderr, "mjg_realloc:%s:%i:allocated %li at %p\n", file, line, nelem*elsize, mem); #endif return mem; } /* NAME // mjg_free: heap memory deallocation with error checking // // // ARGUMENTS // ptr (in/out): address of the user data area // // file (in): name of the file from which mjg_realloc was called // // line (in): line number of the file from which mjg_realloc was called // // // SEE ALSO // mjg_realloc(), FREE() macro */ /*ARGSUSED*/ void mjg_free(void * const ptr, const char * const file, const int line) { #if VERBOSE >= 2 fprintf(stderr, "mjg_free: %s: %i: %p\n", file, line, ptr); fflush(stderr); #endif #ifdef DEBUG #ifdef SUNOS malloc_verify(); #endif if(memBlockCheckAll()) { fprintf(stderr, "mjg_free: ERROR: memBlockCheckAll found errors\n"); } { int mbi; if((mbi = memBlockIndex(ptr)) >= 0) { /* Check to see whether this block is okay */ if(NULL == mb_list[mbi].head) { fprintf(stderr, "mjg_free: %s: %i: empty block\n", file, line); return; } else { if( (MEM_BLOCK_HEAD_INACTIVE == mb_list[mbi].head[0]) && (MEM_BLOCK_TAIL_INACTIVE == mb_list[mbi].tail[0])) { fprintf(stderr, "mjg_free: block already freed?\n"); } } #if VERBOSE >= 3 printb("mjg_free: %s: %i: found ptr at index %i\n", file, line, mbi); memBlockPrint(&mb_list[mbi], stderr); #endif /* Fill the old memory chunk */ memset(ptr, 0xfe, mb_list[mbi].size); /* Tag this block as inactive */ mb_list[mbi].head[0] = MEM_BLOCK_HEAD_INACTIVE; mb_list[mbi].tail[0] = MEM_BLOCK_TAIL_INACTIVE; } if(mbi < 0) { /* Did not find pointer in the list of MemBlocks */ fprintf(stderr, "mjg_free: WARNING: %s: %i: freeing unknown pointer %p\n", file, line, ptr); #if DEBUG >= 1 fflush(stderr); fflush(stdout); abort(); #endif free(ptr); } else { free(mb_list[mbi].head); mb_list[mbi].head = NULL; #if DEBUG <= 1 /* Note that a DEBUG level of greater than 1 will result in a // record of every allocation done through these routines to // be kept, which could result in extremely slow performance. */ memBlockDelete(mbi); #endif } } #ifdef SUNOS malloc_verify(); #endif #else free(ptr); #endif /* DEBUG */ return; } /* NAME // mjg_strdup: strdup with memory checking // // // SEE ALSO // mjg_realloc(), STRDUP() macro */ char * mjg_strdup(const char *s, const char * const file, const int line) { if(NULL == s) { return NULL; } { char *dup = mjg_realloc(NULL,(long)(strlen(s) + 1), sizeof(char),file,line); if((dup != NULL) && (s != NULL)) { strcpy(dup, s); } else { fprintf(stderr, "mjg_strdup: ERROR: mjg_realloc failed\n"); } return dup; } } #ifdef TEST_MY_MALLOC void test1(void) { #ifdef DEBUG int *ip = MY_CALLOC(3, int); ip[0] = 1; ip[1] = 2; ip[2] = 3; printf("ip = %i %i %i ?= 16843009\n", ip[0], ip[1], ip[2]); FREE(ip); printf("\nfreeing twice; should err: unknown pointer or empty block\n"); FREE(ip); #endif } void test2(void) { #ifdef DEBUG int *ip = MY_CALLOC(3, int); ip[-1] = -1; /* corrupt the head */ ip[0] = 1; ip[1] = 2; ip[2] = 3; printf("should err: corrupt head\n"); FREE(ip); #endif } void test3(void) { #ifdef DEBUG int *ip = MY_CALLOC(3, int); printf("MY_CALLOC and FREE: should be ok\n"); ip[0] = 1; ip[1] = 2; ip[2] = 3; FREE(ip); #endif } void test4(void) { #ifdef DEBUG int *ip = calloc(3, sizeof(int)); printf("Mixing system calloc and mjg_realloc\n"); ip[0] = 1; ip[1] = 2; ip[2] = 3; ip = REALLOC(ip, sizeof(int)*5); memBlockPrint(&mb_list[memBlockIndex(ip)], stderr); ip[3] = 4; ip[4] = 5; /* Should be okay */ FREE(ip); #endif } void test5(void) { #ifdef DEBUG int *ip = MY_CALLOC(3, int); ip[0] = 1; ip[1] = 2; ip[2] = 3; ip[3] = 4; /* corrupt tail */ ip[4] = 4; /* corrupt tail */ printf("should err: corrupt tail\n"); FREE(ip); #endif } void test6(void) { #ifdef DEBUG int *ip = MY_CALLOC(3, int); ip = MY_CALLOC(3, int); FREE(ip); ip = MY_CALLOC(3, int); ip = MY_CALLOC(3, int); ip[0] = 1; ip[1] = 2; ip[2] = 3; printf("Leaving block without freeing memory\n"); printf("should create warning on exit\n"); #endif } void test7(void) { float *fp = MY_CALLOC(3, float); fp[0] = 1.0; fp[1] = 2.0; fp[2] = 3.0; FREE(fp); printf("\nfreeing twice: should err: unknown poiner or empty block\n"); FREE(fp); } void test8(void) { #ifdef DEBUG { float *fp; fp = MY_CALLOC(3, float); fp[-1] = -1; /* corrupt the head */ fp[0] = 1.0; fp[1] = 2.0; fp[2] = 3.0; printf("should err: corrupt head\n"); FREE(fp); printf("\n-=-\n"); fp = MY_CALLOC(3, float); fp[0] = 1.0; fp[1] = 2.0; fp[2] = 3.0; printf("-=-\n"); /* Test realloc */ memBlockPrint(&mb_list[memBlockIndex(fp)], stderr); fp = REALLOC(fp, sizeof(float)*5); printf("---\n"); memBlockPrint(&mb_list[memBlockIndex(fp)], stderr); fp[3] = 4.0; fp[4] = 5.0; /* Should be okay */ FREE(fp); printf("\n"); fp = MY_CALLOC(3, float); fp[0] = 1.0; fp[1] = 2.0; fp[2] = 3.0; fp[3] = 4.0; /* corrupt tail */ printf("should err: corrupt tail\n"); FREE(fp); printf("\n"); fp = MY_CALLOC(3, float); fp[0] = 1.0; fp[1] = 2.0; fp[2] = 3.0; fp[3] = 4.0; /* corrupt tail */ /* Leaving block without freeing memory -- should create warning */ } #endif /* DEBUG */ } int main(int argc, char **argv) { int test_index; if(argc != 2) { fprintf(stderr, "usage: %s test_index\n", argv[0]); return 1; } test_index = atoi(argv[1]); if(1 == test_index) test1(); if(2 == test_index) test2(); if(3 == test_index) test3(); if(4 == test_index) test4(); if(5 == test_index) test5(); if(6 == test_index) test6(); if(7 == test_index) test7(); if(8 == test_index) test8(); #ifdef DEBUG #if VERBOSE >= 2 printf("\n\n\n\n------------"); memBlockInventory(1); printf("------------\n\n\n\n"); #endif printf("\n\n\n\n========\n"); memBlockInventory(0); #endif return 0; } #endif /* TEST_MY_MALLOC */ xmorph-20140707+nmu2/libmorph/Makefile.in0000664000000000000000000006047712356342010014735 0ustar # Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@ # beginning of file Makefile.conf # # GIMP: Adds GIMP plugin functionality to xmorph. # Also define NEED_GIMP=1. If this is defined, then you may run # xmorph both as a standalone application, and by adding it to your # ~/.gimp/plug-ins directory (usually via a symlink). From what I # understand, this will not work for tkmorph. See GIMPLIBS, below. # # REAL: Size of a "REAL" used by spline code. # Correct value is "double". Do not change. # # RGBA_MESH_WARP: flag to tell RgbaImage to include mesh-based warping # methods. Do not change. # # RGBA_TK: flag to tell RgbaImage to include Tk Photo image code. # DO NOT DEFINE for xmorph. Only define for tkmorph. # Also change the "all" target if RGBA_TK is changed. # # RED_GREEN_COLOR_BLIND: uses blue instead of red for color of # 'destination' mesh lines and points. # # STRDUP_PROTO_BROKEN: For some versions of GNU C, the string.h # header file has an incorrect prototype for strdup. If you # experience problems compiling, related to the strdup prototype, # then define STRDUP_PROTO_BROKEN. # For tkmorph: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRGBA_TK # For colorblind: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRED_GREEN_COLOR_BLIND # For GIMP plugin: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DGIMP -DNEED_GIMP=1 # Broken GNU C: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DSTRDUP_PROTO_BROKEN # Most systems: #DEFINES=-DREAL=double -DRGBA_MESH_WARP VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/../Makefile.conf \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in subdir = libmorph ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libmorph_la_LIBADD = am__objects_1 = am_libmorph_la_OBJECTS = my_malloc.lo warp.lo mesh.lo spline.lo tga.lo \ RgbaImage.lo spl-array.lo warp2.lo relax.lo resample.lo \ $(am__objects_1) libmorph_la_OBJECTS = $(am_libmorph_la_OBJECTS) libmorph_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libmorph_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --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 = $(libmorph_la_SOURCES) DIST_SOURCES = $(libmorph_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(pkginclude_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@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ 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@ 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@ CFLAGS_CONF = -DREAL=double -DRGBA_MESH_WARP # # Must have the X libraries: X11, MIT Athena Widgets, X Toolkit, X Misc Utils # # Linux 2.0: must have /usr/X11/lib # or /usr/X11R6/lib explicitly in library search path # # SunOS (pre-Solaris): Might have to use static X libraries because # dynamic X libraries are incomplete. # # Solaris: To link to openwin libraries, add -L/usr/openwin/lib # # IRIX6.2: Need to have -lcvt after -lXt # If you receive an error about an unresolved symbol named # SgCvtCreateConversionContext, you need to include -lcvt. # The cvt library is available in the goldengate.sw.goldengate package # Sun Solaris: #XLIBS=-L/usr/openwin/lib -lXaw -lXmu -lXext -lXt -lX11 # Linux: #XLIBS=-L/usr/X11/lib -lXaw -lXmu -lXext -lXt -lX11 #XLIBS=-L/usr/X11R6/lib -lXaw -lXmu -lXext -lXt -lX11 # SGI IRIX: #XLIBS= -lXaw -lXmu -lXext -lXt -lcvt -lX11 XLIBS = @X_LIBS@ @X_PRE_LIBS@ -lXaw -lXmu -lXext -lXt -lX11 @X_EXTRA_LIBS@ # If you have defined -DGIMP in the DEFINES section, then xmorph will # be built to run both as a standalone application and as a GIMP # plugin. Here, you need to specify the appropriate GIMP libraries. # # Comment out this variable if you have not used -DGIMP. #GIMPLIBS=-L/usr/local/lib -lgimp -lglib #GIMPLIBS=-lgimp -lglib GIMPLIBS = # # Must have the math library (-lm). # # # Linux: Add -ldl if you get link error regarding dlerror, dlopen, or # dlsym # # # FreeBSD: Do not use static libraries, because for some reason they # do not work. # # # SunOS: Use the /usr/lib/debug/malloc.o module if you want to do # memory checking. # Also see the CFLAGS comments about memory checking under SunOS. # # # SGI IRIX: Use -lmalloc to link with their special memory allocation # routines. If you get an error about mallopt being # unresolved, then you will have to link with the libmalloc # shared object. Do this by specifying -lmalloc here. # # -lmalloc_cv has more robust memory checking #NON_GUI_LIBS = -lm #NON_GUI_LIBS = -lm -ldl #NON_GUI_LIBS = -lm /usr/lib/debug/malloc.o #NON_GUI_LIBS = -lm -lmalloc NON_GUI_LIBS = -lm AM_CFLAGS = @CFLAGS@ $(CFLAGS_CONF) #noinst_LIBRARIES = libmorph.a #LIBTOOL support lib_LTLIBRARIES = libmorph.la libmorph_la_LDFLAGS = -version-info 1:0:0 pkginclude_HEADERS = mesh.h mesh_t.h mesh-getext.h RgbaImage.h my_malloc.h spl-array.h spline.h tga.h warp.h warp2.h relax.h resample.h warp-gtk.h libmorph_la_SOURCES = my_malloc.c warp.c \ mesh.c spline.c my_malloc.h tga.c tga.h \ RgbaImage.c spl-array.c warp2.c \ relax.c resample.c braindead_msvc.h sinc_256.h resample_snippet.h \ $(pkginclude_HEADERS) EXTRA_DIST = README.libmorph all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.conf $(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 libmorph/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu libmorph/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; $(srcdir)/../Makefile.conf: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; 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 libmorph.la: $(libmorph_la_OBJECTS) $(libmorph_la_DEPENDENCIES) $(EXTRA_libmorph_la_DEPENDENCIES) $(libmorph_la_LINK) -rpath $(libdir) $(libmorph_la_OBJECTS) $(libmorph_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RgbaImage.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mesh.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/my_malloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/relax.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resample.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spl-array.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spline.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tga.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/warp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/warp2.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(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@ $(am__mv) $(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@ $(am__mv) $(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-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) 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) set x; \ 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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgincludeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS .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-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-pkgincludeHEADERS 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-libLTLIBRARIES uninstall-pkgincludeHEADERS # ### ACGM : the project now ignores this variable # # Read the man page for your linker before sending me email about # problems. # # Apollo w/ Domain/OS, BSD: omit XLIBS #LIBS = $(GIMPLIBS) $(NON_GUI_LIBS) #LIBS = # end of file Makefile.conf # 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: xmorph-20140707+nmu2/libmorph/RgbaImage.c0000664000000000000000000006673612356304633014667 0ustar /* RgbaImage.c : RGBA image handling routines // Written and Copyright (C) 1994-1999 by Michael J. Gourlay This file is part of Xmorph. Xmorph 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. Xmorph 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 Xmorph; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef GIMP # define NEED_GIMP 1 # include # include /* Number of steps in the progress meter. */ extern int prog_step; extern int prog_nsteps; #else # define MAX(x,y) ((x)>(y) ? (x) : (y)) # define MIN(x,y) ((x)<(y) ? (x) : (y)) #endif #include #include #include "my_malloc.h" #include "tga.h" #include "RgbaImage.h" /* Dissolve macros to speed up the GIMP saving function. */ #define GRAY_DISSOLVE(si,di,pel,t) \ (((1.0 - t) * (si->ri[pel] + si->gi[pel] + si->bi[pel]) \ + (t * (di->ri[pel] + di->gi[pel] + di->bi[pel]))) / 3) #define RED_DISSOLVE(si,di,pel,t) \ (((1.0 - t) * si->ri[pel]) + (t * di->ri[pel])) #define GREEN_DISSOLVE(si,di,pel,t) \ (((1.0 - t) * si->gi[pel]) + (t * di->gi[pel])) #define BLUE_DISSOLVE(si,di,pel,t) \ (((1.0 - t) * si->bi[pel]) + (t * di->bi[pel])) #define ALPHA_DISSOLVE(si,di,pel,t) \ (((1.0 - t) * si->ai[pel]) + (t * di->ai[pel])) /* NAME // rgbaImageInit: initialize members of an RgbaImage */ void rgbaImageInit(RgbaImageT *self) { self->nrows = 0; self->ncols = 0; self->compressed = 0; self->pixel_size = 0; self->color_mapped = 0; self->type = 0; self->ri = NULL; self->gi = NULL; self->bi = NULL; self->ai = NULL; } /* NAME // rgbaImageNew: Allocate and initialize an RgbaImageT instance // // // DESCRIPTION // An RgbaImage is an image that stores red, green, blue, and opacity // information as arrays of bytes, where each byte stores a pixel // value. The key feature of the storage scheme is that each channel // is stored as a contiguous array, rather than storing the image // channels data interleaved. The reason why storing image data as // contiguous channels is that some image processing routines are // designed to operate on a single channel only, or on monochrome // images. By storing full-color images as contiguous arrays of single // channels, we can use one-channel image processing routines. In // particular, the warp_image routine expects single channels and that // is what we want to use. */ RgbaImageT * rgbaImageNew(void) { RgbaImageT *rgba_image = MY_CALLOC(1, RgbaImageT); if(NULL == rgba_image) { return NULL; } rgbaImageInit(rgba_image); return rgba_image; } /* NAME // rgbaImageDelete: Delete an RgbaImageT instance // // // NOTES // rgbaImageDelete does NOT free the channel arrays. The channel // arrays should be freed before calling rgbaImageDelete. // // // SEE ALSO // rgbaImageFree, rgbaImageNew, rgbaImageAlloc */ void rgbaImageDelete(RgbaImageT *self) { #if DEBUG >= 1 printf("rgbaImageDelete: %p\n", self); #endif FREE(self); } /* NAME // rgbaImageFree: free memory of the RgbaImage channels. // // // NOTES // Memory for the RgbaImageT instance is not freed here. // // The image channel memory is assumed to be contiguous, so that only // the "ri" channel is actually called with "free". // // // SEE ALSO // rgbaImageAlloc, rgbaImageDelete */ void rgbaImageFree(RgbaImageT *self) { if(self->ri != NULL) { FREE(self->ri); self->ri = NULL; self->gi = NULL; self->bi = NULL; self->ai = NULL; self->nrows = 0; self->ncols = 0; } } /* NAME // rgbaImageAlloc: allocate memory for the RgbaImage channels // // // ARGUMENTS // self (in/out): pointer to RgbaImage. // The ncols,nrows,ri,gi,bi,ai members are set. // // nx (in): image width. ncols is set to this. // // ny (in): image height. nrows is set to this. // // // DESCRIPTION // Use only one allocation to ensure that the image data is // contiguous. This makes it easier to use other image format // schemes which have parameters such as "pitch" which is the address // difference between two vertically adjacent pixels, and "offset[3]" // which has the offsets from the address of a pixel to the addresses // of the bytes containing red, green, and blue components. I.e. // some formats can use either XY interleaving or Z stacking, just by // altering these parameters. // // Only one "alloc" is done for all channels. This is important to // know when freeing the memory. // // // RETURN VALUES // Return -1 if failed, 0 otherwize. // // If any of the image channels are non-NULL on input, a diagnostic // message is displayed. // // SEE ALSO // rgbaImageFree */ int rgbaImageAlloc(RgbaImageT *self, const int nx, const int ny) { /* see whether there was un-freed memory here before */ if( (self->ri != NULL) || (self->gi != NULL) || (self->bi != NULL) || (self->ai != NULL) ) { fprintf(stderr, "rgbaImageAlloc: warning: " "allocating over un-freed rgbaImage\n"); } self->ncols = nx; self->nrows = ny; /* Make sure the image size is not zero */ if((self->ncols * self->nrows) == 0) { fprintf(stderr, "rgbaImageAlloc: warning: zero size\n"); } if((self->ri=MY_CALLOC(self->ncols * self->nrows * 4, unsigned char)) == NULL) { fprintf(stderr, "rgbaImageAlloc: Bad Alloc\n"); return -1; } /* Find the beginning address for each of the image channels */ self->gi = & ( self->ri[self->ncols * self->nrows * 1] ); self->bi = & ( self->ri[self->ncols * self->nrows * 2] ); self->ai = & ( self->ri[self->ncols * self->nrows * 3] ); return 0 ; } /* NAME // rgbaImageDissolve: Dissolve two images // // // ARGUMENTS // self (out): tween image. Arrays allocated here. // // siP (in): "source" image. // // diP (in): "destination" image. // If diP is NULL then it is as if dest_image is black. // // dissolve (in): dissolve parameter // where out = (1-dissolve) * source_image + dissolve * dest_image // e.g. if dissolve==0, out=source_image. If dissolve==1, out=dest_image. // */ int rgbaImageDissolve(RgbaImageT *self, const RgbaImageT *siP, const RgbaImageT *diP, float dissolve) { int nx; /* image x-size */ int xi; /* loop image x-index */ int yi; /* loop image y-index */ int rsi; /* siP image red channel pixel value */ int gsi; /* siP image green channel pixel value */ int bsi; /* siP image blue channel pixel value */ int asi; /* siP image opacity channel pixel values */ int rdi; /* diP image red channel pixel value */ int gdi; /* diP image green channel pixel value */ int bdi; /* diP image blue channel pixel value */ int adi; /* diP image opacity channel pixel value */ /* See whether diP image exists. */ if(diP != NULL) { /* Make sure siP and diP images are the same size */ if((siP->nrows != diP->nrows) || (siP->ncols != diP->ncols)) { fprintf(stderr, "rgbaImageDissolve: input image size mismatch\n"); return -1; } if(siP->compressed || diP->compressed) self->compressed = 1; self->pixel_size = MAX(siP->pixel_size, diP->pixel_size); if(siP->color_mapped && diP->color_mapped) self->color_mapped = 1; } else { if(siP->compressed) self->compressed = 1; self->pixel_size = siP->pixel_size; if(siP->color_mapped) self->color_mapped = 1; } /* Initialize the dissolved image */ /* Note that this "undoes" the above code. // One wonders why I did it this way. */ nx = siP->ncols; self->compressed = self->color_mapped = 0; self->pixel_size = 32; /* Allocate space for dissolved image data */ #if DEBUG >= 2 printf("rgbaImageDissolve: allocating\n"); #endif if(rgbaImageAlloc(self, siP->ncols, siP->nrows)) return -1; /* Dissolve the two images according to the dissolve parameter */ for(yi=0; yi < self->nrows; yi++) { for(xi=0; xi < nx; xi++) { /* Compute contribution from siP image */ rsi = (1.0-dissolve) * siP->ri[yi * nx + xi]; gsi = (1.0-dissolve) * siP->gi[yi * nx + xi]; bsi = (1.0-dissolve) * siP->bi[yi * nx + xi]; asi = (1.0-dissolve) * siP->ai[yi * nx + xi]; /* Compute contribution from diP image */ if((diP!=NULL) && (xincols) && (yi < diP->nrows)) { rdi = dissolve * diP->ri[yi * diP->ncols + xi]; gdi = dissolve * diP->gi[yi * diP->ncols + xi]; bdi = dissolve * diP->bi[yi * diP->ncols + xi]; adi = dissolve * diP->ai[yi * diP->ncols + xi]; } else { /* If there is no diP image, assume a black image instead */ rdi = 0; gdi = 0; bdi = 0; adi = 0; } /* Compute the dissolved image pixel values */ self->ri[yi*nx+xi] = (int)(rsi + rdi + 0.5); self->gi[yi*nx+xi] = (int)(gsi + gdi + 0.5); self->bi[yi*nx+xi] = (int)(bsi + bdi + 0.5); self->ai[yi*nx+xi] = (int)(asi + adi + 0.5); } } return 0; } /* NAME // rgbaImageRead: load image into memory. // // // ARGUMENTS // self (in/out): pointer to RgbaImage // // filename (in): filename // // // DESCRIPTION // Frees old image channel space. // Allocates new image channel space. */ int rgbaImageRead(RgbaImageT *self, const char *filename) { int tga_return; tga_hdr_t tga_hdr; FILE *infP=NULL; /* Open the input file for binary reading */ if(filename!=NULL && (infP=fopen(filename, "rb"))==NULL) { fprintf(stderr, "rgbaImageRead: could not open '%s' for input\n", filename); return -1; } /* Load the image header: // This will set 'self' members such as ncols, nrows, etc. */ /* Targa */ if( (tga_return = tgaHeaderRead(&tga_hdr, self, infP)) ) { fprintf(stderr, "tgaHeaderRead returned %i\n", tga_return); return tga_return; } /* Free the memory for the previous image planes. // This must be done AFTER the load attempt, because if the load // fails, we want to keep the original image. */ { int ncols = self->ncols; /* store geometry set by load_header */ int nrows = self->nrows; /* store geometry set by load_header*/ rgbaImageFree(self); /* this sets ncols = nrows = 0 */ self->ncols = ncols; /* retrieve geometry */ self->nrows = nrows; /* retrieve geometry */ } /* Allocate memory for the new image channels. // Note the unusual use of passing in self->ncols and self->nrows, // even though they are already set to the correct value. This is // because tgaHeaderRead sets those values to the size of the image // about to be read in. */ if(rgbaImageAlloc(self, self->ncols, self->nrows)) return -1; /* Load the new image */ /* Targa */ tgaRead(&tga_hdr, self, infP); /* Close the input file */ fclose(infP); return 0; } /* NAME // rgbaImageWrite: dissolve 2 images and save dissolved image to file // // // ARGUMENTS // filename (in): file name to save image to // // siP (in): "source" image pointer // // diP (in): "destination" image pointer. // If diP is NULL then it is as if dest_image is black. // // dissolve (in): dissolve parameter // where out = (1-dissolve) * source_image + dissolve * dest_image // e.g. if dissolve==0, out=source_image. If dissolve==1, out=dest_image. // // // DESCRIPTION // Dimensions of the output image are the same as the source_image. // // "source" and "destination" do NOT refer to the disk space where the // image is being written. They refer to the starting and finishing // images in the dissolve. */ int rgbaImageWrite(const char *filename, const RgbaImageT *siP, const RgbaImageT *diP, float dissolve) { RgbaImageT img; /* temporary dissolved image */ FILE *outfP=NULL; /* output file pointer */ /* Dissolve the siP and diP images into img */ rgbaImageInit(&img); if(rgbaImageDissolve(&img, siP, diP, dissolve)) { return -1; } /* Open the output image file for binary writing */ if(filename!=NULL && (outfP=fopen(filename, "wb"))==NULL) { fprintf(stderr, "rgbaImageWrite: could not open '%s' for output\n", filename); return -1; } { /* Set the image header */ tga_hdr_t tga_hdr; /* Targa */ tga_hdr.id_len = 0; /* cmap_type depends on the img_type */ tga_hdr.cmap_type = 0; /* img_type comes from the user */ tga_hdr.img_type = TGA_RGB; if(img.compressed) tga_hdr.img_type += TGA_RLE; tga_hdr.cmap_index = 0; /* cmap_len depends on the img_type and pixel_size */ tga_hdr.cmap_len = 0; /* cmap_size depends on the img_type and pixel_size */ tga_hdr.cmap_size = 0; tga_hdr.x_off = 0; tga_hdr.y_off = 0; /* pixel_size depends on the img_type */ tga_hdr.pixel_size = img.pixel_size; tga_hdr.att_bits = 0; tga_hdr.reserved = 0; tga_hdr.origin_bit = 0; tga_hdr.interleave = TGA_IL_None; /* Save the image header */ { int tga_return; /* return values from tgaHeaderWrite */ /* Targa */ if( (tga_return = tgaHeaderWrite(&tga_hdr, &img, outfP)) ) { fprintf(stderr, "tgaHeaderWrite returned %i\n", tga_return); return tga_return; } } /* Save the dissolved image */ /* Targa */ tgaWrite(&tga_hdr, &img, outfP); } /* Free the dissolved image */ rgbaImageFree(&img); /* Close the output image file */ fclose(outfP); return 0; } #ifdef NEED_GIMP /* NAME // rgbaImageUnGIMP: load an image from the GIMP into memory // // // ARGUMENTS // self (in/out): pointer to RgbaImage // // d (in): GIMP drawable // // // DESCRIPTION // This function is only invoked when xmorph is run as a GIMP plugin. // // Frees old image channel space. // Allocates new image channel space. */ int rgbaImageUnGIMP (RgbaImageT *imgP, GDrawable *d) { GPixelRgn pixel_rgn; GDrawableType dtype; guint i, j, pel, npels, bsize, tileheight, colors; guchar *data, *cmap; /* Free the memory for the previous image planes. */ rgbaImageFree(imgP); /* this sets ncols = nrows = 0 */ /* Allocate memory for the new image channels. */ if(rgbaImageAlloc(imgP, d->width, d->height)) return -1; dtype = gimp_drawable_type (d->id); /* Get the color map. */ cmap = gimp_image_get_cmap (gimp_drawable_image_id (d->id), &colors); /* Initialize the pixel region. */ gimp_pixel_rgn_init (&pixel_rgn, d, 0, 0, d->width, d->height, FALSE, FALSE); tileheight = gimp_tile_height (); data = MY_CALLOC (d->width * tileheight * d->bpp, guchar); pel = 0; for (i = 0; i < d->height; i += tileheight) { tileheight = MIN (tileheight, d->height - i); npels = tileheight * d->width; bsize = npels * d->bpp; /* Get the next row of tiles. */ gimp_pixel_rgn_get_rect (&pixel_rgn, data, 0, i, d->width, tileheight); /* Convert all pixels to RGBA. */ switch (dtype) { case RGBA_IMAGE: for (j = 0; j < bsize; j += d->bpp) { imgP->ri[pel] = data[j]; imgP->gi[pel] = data[j + 1]; imgP->bi[pel] = data[j + 2]; imgP->ai[pel] = data[j + 3]; pel ++; } break; case RGB_IMAGE: for (j = 0; j < bsize; j += d->bpp) { imgP->ri[pel] = data[j]; imgP->gi[pel] = data[j + 1]; imgP->bi[pel] = data[j + 2]; pel ++; } break; case GRAYA_IMAGE: for (j = 0; j < bsize; j += d->bpp) { imgP->ri[pel] = imgP->gi[pel] = imgP->bi[pel] = data[j]; imgP->ai[pel] = data[j + 1]; pel ++; } break; case GRAY_IMAGE: for (j = 0; j < bsize; j += d->bpp) { imgP->ri[pel] = imgP->gi[pel] = imgP->bi[pel] = data[j]; pel ++; } break; case INDEXEDA_IMAGE: for (j = 0; j < bsize; j += d->bpp) { if (data[j] < colors) { imgP->ri[pel] = cmap[data[j] * 3]; imgP->gi[pel] = cmap[data[j] * 3 + 1]; imgP->bi[pel] = cmap[data[j] * 3 + 2]; } else imgP->ri[pel] = imgP->gi[pel] = imgP->bi[pel] = 0; imgP->ai[pel] = data[j + 1]; pel ++; } break; case INDEXED_IMAGE: for (j = 0; j < bsize; j += d->bpp) { if (data[j] < colors) { imgP->ri[pel] = cmap[data[j] * 3]; imgP->gi[pel] = cmap[data[j] * 3 + 1]; imgP->bi[pel] = cmap[data[j] * 3 + 2]; } else imgP->ri[pel] = imgP->gi[pel] = imgP->bi[pel] = 0; pel ++; } break; } } if (cmap) g_free (cmap); FREE (data); /* If we had no alpha channel, then set to opaque. */ if (!gimp_drawable_has_alpha (d->id)) memset (imgP->ai, RGBA_IMAGE_OPAQUE, d->height * d->width); return 0; } /* Dissolve and turn an RgbaImage into a new GIMP drawable (save). */ /* NAME // rgbaImageGIMP: dissolve 2 images and save dissolved image to the GIMP // // ARGUMENTS // d (in/out): GIMP drawable to save image to // // siP (in): "source" image pointer // // diP (in): "destination" image pointer. // If diP is NULL then it is as if dest_image is black. // // dissolve (in): dissolve parameter // where out = (1-dissolve) * source_image + dissolve * dest_image // e.g. if dissolve==0, out=source_image. If dissolve==1, out=dest_image. // // // DESCRIPTION // This function is only invoked when xmorph is run as a GIMP plugin. // // Dimensions of the source_image need to match the dimensions of the // GIMP drawable. // // "source" and "destination" do NOT refer to the disk space where the // image is being written. They refer to the starting and finishing // images in the dissolve. */ int rgbaImageGIMP (GDrawable *d, const RgbaImageT *siP, const RgbaImageT *diP, float dissolve) { GPixelRgn pixel_rgn; GDrawableType dtype; guchar *data; guint i, j, pel, npels, bsize, tileheight, bpp; if (d->id == -1) { fprintf (stderr, "rgbaImageGIMP: invalid drawable ID\n"); return -1; } /* See whether diP image exists. */ if (diP != NULL) { /* Make sure siP and diP images are the same size */ if((siP->nrows != diP->nrows) || (siP->ncols != diP->ncols)) { fprintf(stderr, "rgbaImageGIMP: input image size mismatch\n"); return -1; } } else diP = siP; /* Make sure source is the same size as the drawable. */ if ((siP->nrows != d->height) || (siP->ncols != d->width)) { fprintf (stderr, "rgbaImageGIMP: output image size mismatch\n"); return -1; } bpp = gimp_drawable_bpp (d->id); dtype = gimp_drawable_type (d->id); /* Initialize the pixel region. */ gimp_pixel_rgn_init (&pixel_rgn, d, 0, 0, d->width, d->height, TRUE, FALSE); tileheight = gimp_tile_height (); data = MY_CALLOC (d->width * tileheight * bpp, guchar); pel = 0; for (i = 0; i < d->height; i += tileheight) { /* Write out the image in rows of tiles. */ tileheight = MIN (tileheight, d->height - i); npels = tileheight * d->width; bsize = npels * bpp; /* Convert all pixels from RGBA. */ switch (dtype) { case RGBA_IMAGE: for (j = 0; j < bsize; j += bpp) { data[j] = RED_DISSOLVE (siP, diP, pel, dissolve); data[j + 1] = GREEN_DISSOLVE (siP, diP, pel, dissolve); data[j + 2] = BLUE_DISSOLVE (siP, diP, pel, dissolve); data[j + 3] = ALPHA_DISSOLVE (siP, diP, pel, dissolve); pel ++; } break; case RGB_IMAGE: for (j = 0; j < bsize; j += bpp) { data[j] = RED_DISSOLVE (siP, diP, pel, dissolve); data[j + 1] = GREEN_DISSOLVE (siP, diP, pel, dissolve); data[j + 2] = BLUE_DISSOLVE (siP, diP, pel, dissolve); pel ++; } break; case GRAYA_IMAGE: for (j = 0; j < bsize; j += bpp) { data[j] = GRAY_DISSOLVE (siP, diP, pel, dissolve); data[j + 1] = ALPHA_DISSOLVE (siP, diP, pel, dissolve); pel ++; } break; case GRAY_IMAGE: for (j = 0; j < bsize; j += bpp) { data[j] = GRAY_DISSOLVE (siP, diP, pel, dissolve); pel ++; } break; case INDEXEDA_IMAGE: case INDEXED_IMAGE: return -1; } /* Update the progress meter. */ if (prog_nsteps > 0) gimp_progress_update (((float) prog_step + ((float) (i + tileheight) / (float) d->height)) / (float) prog_nsteps); /* Set the next row of tiles. */ gimp_pixel_rgn_set_rect (&pixel_rgn, data, 0, i, d->width, tileheight); } if (prog_nsteps > 0) prog_step ++; FREE (data); return 0; } #endif /* NEED_GIMP */ /* rgbaImageTestCreate: generate a test image // // // ARGUMENTS // self: RgbaImage instance // type: bitfield: which test image pattern to use. // // // DESCRIPTION // Uses the incoming values of ncols and nrows to determine image size. // If ncols or nrows are zero, default values are used instead. // // Memory for the images is allocated and 'self' is set. */ int rgbaImageTestCreate(RgbaImageT *self, int type) { int xi, yi; /* pixel coordinate indices */ unsigned char p; /* pixel value */ int alloc_flag = 0; /* whether to allocate an image */ self->compressed = 1; self->color_mapped = 0; self->pixel_size = 24; self->type = TARGA_MAGIC; /* Test to see whether previous rgba image had any area. // If not, then create a default area. */ if(self->ncols <= 0) { self->ncols = 300; alloc_flag = 1; } if(self->nrows <= 0) { self->nrows = 200; alloc_flag = 1; } /* Another possibility is that the size could have been set before // calling this routine, but no memory had yet been allocated. // In which case, memory ought to be allocated now. // // This might seem unusual-- allocating memory for the first time in // a routine which is not the object constructor. But in a sense, this // is a RgbaImage constructor -- It generates an image, often for // the first time, simply to occupy screen space to indicate that the // image exists. But sometimes, this routine is also used to simply // create a test image to erase a previous image, in which case this // routine does not act like a constructor. */ if((self->ri == NULL) || (self->gi == NULL) || (self->bi == NULL)) { alloc_flag = 1; } if(alloc_flag) { #if DEBUG >= 2 printf("rgbaImageTestCreate: Alloc %i %i\n", self->ncols, self->nrows); #endif if(rgbaImageAlloc(self, self->ncols, self->nrows)) return 1; } /* Create the test pattern */ for(yi=0; yi < self->nrows; yi++) { for(xi=0; xi < self->ncols; xi++) { p = 15 + 240*((float)xi/self->ncols)*((float)yi/self->nrows); if((xi%40>20 && yi%40<20) || (xi%40<20 && yi%40>20)) p=0; if(type & 1) { self->ri[yi*(self->ncols) + xi] = p; } else { self->ri[yi*(self->ncols) + xi] = RGBA_IMAGE_MAXVAL - p; } if(type & 2) { self->gi[yi*(self->ncols) + xi] = p; } else { self->gi[yi*(self->ncols) + xi] = RGBA_IMAGE_MAXVAL - p; } if(type & 4) { self->bi[yi*(self->ncols) + xi] = p; } else { self->bi[yi*(self->ncols) + xi] = RGBA_IMAGE_MAXVAL - p; } self->ai[yi*(self->ncols) + xi] = RGBA_IMAGE_OPAQUE; } } return 0; } /* RGBA_MESH_WARP: // The following code is for warping RgbaImages. The other RgbaImage // code above does not require the use of the mesh code or the warp code, // so the following code is enclosed in an ifdef block */ #ifdef RGBA_MESH_WARP #include "mesh.h" #include "warp.h" int rgbaImageWarp(const RgbaImageT *img_orig, RgbaImageT *img_warp, const MeshT *mesh_src, const MeshT *mesh_dst, float tween_param) { MeshT mesh_tween; meshInit(&mesh_tween); if(meshCompatibilityCheck(mesh_src, mesh_dst)) { fprintf(stderr, "rgbaImageWarp: meshes are incompatible\n"); return 1; } /* Set the tween mesh */ meshAlloc(&mesh_tween, mesh_src->nx, mesh_src->ny); meshInterpolate(&mesh_tween, mesh_src, mesh_dst, tween_param); /* Allocate space for the warp image */ rgbaImageFree(img_warp); if(rgbaImageAlloc(img_warp, img_orig->ncols, img_orig->nrows)) return 1; /* Warp the image, one channel at a time */ /* Warp forward from mesh_src to mesh_tween */ warp_image(img_orig->ri, img_warp->ri, img_orig->ncols, img_orig->nrows, mesh_src->x, mesh_src->y, mesh_tween.x, mesh_tween.y, mesh_tween.nx, mesh_tween.ny); #ifdef NEED_GIMP /* Maybe update the GIMP progress meter. */ if (prog_nsteps > 0) gimp_progress_update (((float) prog_step + 1.0/4.0) / (float) prog_nsteps); #endif /* NEED_GIMP */ warp_image(img_orig->gi, img_warp->gi, img_orig->ncols, img_orig->nrows, mesh_src->x, mesh_src->y, mesh_tween.x, mesh_tween.y, mesh_tween.nx, mesh_tween.ny); #ifdef NEED_GIMP if (prog_nsteps > 0) gimp_progress_update (((float) prog_step + 2.0/4.0) / (float) prog_nsteps); #endif /* NEED_GIMP */ warp_image(img_orig->bi, img_warp->bi, img_orig->ncols, img_orig->nrows, mesh_src->x, mesh_src->y, mesh_tween.x, mesh_tween.y, mesh_tween.nx, mesh_tween.ny); #ifdef NEED_GIMP if (prog_nsteps > 0) gimp_progress_update (((float) prog_step + 3.0/4.0) / (float) prog_nsteps); #endif /* NEED_GIMP */ warp_image(img_orig->ai, img_warp->ai, img_orig->ncols, img_orig->nrows, mesh_src->x, mesh_src->y, mesh_tween.x, mesh_tween.y, mesh_tween.nx, mesh_tween.ny); #ifdef NEED_GIMP if (prog_nsteps > 0) { prog_step ++; gimp_progress_update ((float) prog_step / (float) prog_nsteps); } #endif /* NEED_GIMP */ meshUnref(&mesh_tween); return 0; } #endif /* RGBA_MESH_WARP */ /* RGBA_TK: // The following code is for converting RgbaImages into Tk Photo images. // The other RgbaImage code above does not require the use of Tk, // so the following code is enclosed in an ifdef block. */ #ifdef RGBA_TK #include #include /* NAME // rgbaImageTkPhotoConvert: convert RgbaImageT to a TCL/Tk PhotoImage */ void rgbaImageTkPhotoConvert(RgbaImageT *self, Tk_PhotoHandle photoH) { /* Give the image block to Tk */ Tk_PhotoImageBlock block; block.pixelPtr = self->ri; block.width = self->ncols; block.height = self->nrows; block.pitch = self->ncols; block.pixelSize = sizeof(unsigned char); block.offset[0] = 0; block.offset[1] = self->ncols * self->nrows; block.offset[2] = 2 * block.offset[1]; /* Set the photo image size */ Tk_PhotoSetSize(photoH, block.width, block.height); Tk_PhotoPutBlock(photoH, &block, 0, 0, block.width, block.height); } #endif /* RGBA_TK */ xmorph-20140707+nmu2/libmorph/relax.c-unused0000664000000000000000000000702212356304633015444 0ustar /****************************************************************************/ /* UNUSED CODE UNUSED CODE UNUSED CODE UNUSED CODE UNUSED CODE */ #ifdef UNUSED_CODE #ifdef ENTAGLE_AND_DONT_DISENTANGLE // unworking code { if ( x< MESHGETXSAFE(mesh, lx-1,ly)) x= MESHGETXSAFE(mesh, lx-1,ly); if(x> MESHGETXSAFE(mesh, lx+1,ly)) x= MESHGETXSAFE(mesh, lx+1,ly); /* if ( x< MESHGETXSAFE(mesh, lx-1,ly+1)) */ /* x= MESHGETXSAFE(mesh, lx-1,ly+1); */ /* if(x> MESHGETXSAFE(mesh, lx+1,ly-1)) */ /* x= MESHGETXSAFE(mesh, lx+1,ly-1); */ if ( y< MESHGETYSAFE(mesh, lx,ly-1)) y= MESHGETYSAFE(mesh, lx,ly-1); if(y> MESHGETYSAFE(mesh, lx,ly+1)) y= MESHGETYSAFE(mesh, lx,ly+1); /* if ( y< MESHGETYSAFE(mesh, lx-1,ly-1)) */ /* y= MESHGETYSAFE(mesh, lx-1,ly-1); */ /* if(y> MESHGETYSAFE(mesh, lx+1,ly+1)) */ /* y= MESHGETYSAFE(mesh, lx+1,ly+1); */ } #endif double smooth_thin_plate(MeshT *mesh, int keepborder, double maxx, double maxy) { int lp; double change=0; assert(mesh->nx>=2 && mesh->ny>=2); for(lp =SMOOTH_ITERATIONS ; lp ; lp--) { change+=smooth_thin_plate_once(mesh,keepborder,maxx,maxy); } return change; } static double smooth_thin_plate_once_old(MeshT *mesh, int keepborder , double maxx, double maxy) { int jx,jy,ix,iy,lx,ly; const int nx=mesh->nx, ny=mesh->ny; double x,y; double ox,oy; double meshx_D2[3][nx+2][ny+2]; double meshy_D2[3][nx+2][ny+2]; int k; double ene=0, change=0; #ifdef PRESERVE_VARIANCE const int anykind=0; struct mesh_variance_s bef=mesh_variance(mesh, anykind) , aft; #endif #ifdef RECOMPUTE_CHANGE MeshT copymesh; meshInit(©mesh); meshAlloc(©mesh,nx,ny); meshCopy(©mesh,mesh); #endif for (k=0;k<2;k++) { for(jx=0; jx < nx+2 ; jx++) for(jy=0; jy < ny+2 ; jy++) { meshx_D2[k][jx][jy]=0; meshy_D2[k][jx][jy]=0; for(ix=0; ix <= 2 ; ix++) for(iy=0; iy <= 2 ; iy++) { meshx_D2[k][jx][jy]+= MESHGETXSAFE(mesh, jx-ix,jy-iy)* D2[k][ix][iy]; meshy_D2[k][jx][jy]+= MESHGETYSAFE(mesh, jx-ix,jy-iy)* D2[k][ix][iy]; } ene+=(meshx_D2[k][jx][jy]*meshx_D2[k][jx][jy]+ meshy_D2[k][jx][jy]*meshy_D2[k][jx][jy]); } } //fprintf(stderr,"\r ene %g ",ene/nx/ny); for(lx=0; lx < nx ; lx++) for(ly=0; ly < ny ; ly++) { if( 0 == meshGetLabel(mesh,lx,ly)) { double derEx=0,derEy=0; x=meshGetx(mesh, lx,ly); y=meshGety(mesh, lx,ly); for (k=0;k<2;k++) for(ix=0; ix <= 2 ; ix++) for(iy=0; iy <= 2 ; iy++) { derEx+= meshx_D2[k][lx-ix+2][ly-iy+2] * D2[k][ix][iy]; derEy+= meshy_D2[k][lx-ix+2][ly-iy+2] * D2[k][ix][iy]; } ox=x; oy=y; if(keepborder && lx==0) x=0; else if (keepborder && lx == nx-1) x=maxx;//WE DONT REALLY KNOW x=meshMaxx(mesh); else {x-=derEx/8./nx; if(keepborder) x=CLAMP(x,0,maxx);//AVOID CRISIS else x=CLAMP(x,-300,700);//AVOID CRISIS } if(keepborder && ly==0 ) y=0; else if(keepborder && ly == ny-1) y=maxy;//WE DONT REALLY KNOW y=meshMaxy(mesh); else { y-=derEy/8./ny; if(keepborder) y=CLAMP(y,0,maxy); //AVOID CRISIS else y=CLAMP(y,-300,700); //AVOID CRISIS } meshSetNoundo(mesh, lx,ly,x,y); change+=sqrt((x-ox)*(x-ox) + (y-oy)*(y-oy)); } } #ifdef PRESERVE_VARIANCE aft=mesh_variance(mesh, anykind); mesh_normalize_variance(mesh,anykind,bef,aft); #endif #ifdef RECOMPUTE_DISTANCE change=meshDistance(mesh,©mesh,1); meshFreeReally(©mesh); #endif return change; } #endif xmorph-20140707+nmu2/libmorph/warp2.h0000664000000000000000000000361412356304633014073 0ustar #ifndef __LIBMORPH_WARP2_H__ #define __LIBMORPH_WARP2_H__ #include "mesh_t.h" /* for PIXEL_TYPE */ #include "warp.h" /* warp_image: 2-pass mesh-based image warping */ /* NAME // warp_image_versatile // // ARGUMENTS // src (in) : input image (1 PIXEL_TYPE per pixel) // dst (out) : output image (1 PIXEL_TYPE per pixel) // // for each image, // _width (in) : width dimension, in pixels // _height (in) : height dimension, in pixels // _channels (in): channels // _rowstride: number to add to a ptr PIXELTYPE *, to move down one pixel in the image // _xstride: number to add to a ptr PIXELTYPE *, to move right one pixel in the image // // xs (in) : source mesh x-coordinate values // ys (in) : source mesh y-coordinate values // xd (in) : destination mesh x-coordinate values // yd (in) : destination mesh y-coordinate values // mesh_width (in) : x-dimension of meshes // mesh_height (in): y-dimension of meshes // // // AUTHOR, NOTES: see warp.c */ void warp_image_versatile ( const PIXEL_TYPE *src, int s_width, int s_height, int s_channels, int s_rowstride,int s_xstride, PIXEL_TYPE *dst, int d_width, int d_height, int d_channels, int d_rowstride,int d_xstride, const double *xs, const double *ys, const double *xd, const double *yd, int mesh_width, int mesh_height); void /* old interface to new code*/ warp_image_inv_new(const PIXEL_TYPE *in, PIXEL_TYPE *out, int img_width, int img_height, const double *xs, const double *ys, const double *xd, const double *yd, int mesh_width, int mesh_height); void /* new interface for new code, which accepts meshes*/ warp_image_a_m (const PIXEL_TYPE *src, int s_width, int s_height, int s_channels, int s_rowstride,int s_xstride, PIXEL_TYPE *dst, int d_width, int d_height, int d_channels, int d_rowstride,int d_xstride, MeshT *srcmesh, MeshT *dstmesh); #endif // __LIBMORPH_WARP2__ xmorph-20140707+nmu2/libmorph/mesh.c0000664000000000000000000015034712356304633013775 0ustar /* mesh.c: mesh handling routines // Written and Copyright (C) 1994-1999 by Michael J. Gourlay Modified & Copyright (C) 1999-2002 by Andrea Mennucci This file is part of Xmorph. Xmorph 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. Xmorph 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 Xmorph; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include "my_malloc.h" #include "mesh.h" /* Mesh dimension limits // // The minimum has to do with the necessities of cubic spline fitting. // // The maximum is just a heuristic I figured was about right. // The heuristic is that the number of mesh lines in either direction // should not be more than half the number of pixels in that direction. // More mesh lines than that would probably yield garbled images. // Anyway, humans would not be able to deal with nearly that many // mesh lines because they would be far too dense to keep organized. */ #define MESH_MIN_NX 4 #define MESH_MIN_NY 4 #define MESH_MAX_NX(this) (((this)->x[(this)->nx * (this)->ny - 1])/2) #define MESH_MAX_NY(this) (((this)->y[(this)->nx * (this)->ny - 1])/2) /* mesh_backup: backup copies of meshes for later "undo" operations */ #define NUM_MESH_BACKUPS 2 static MeshT mesh_backup[NUM_MESH_BACKUPS]; static int mesh_backup_index = 0; #define SGN(x) ( ((x)>0) ? (1) : ( ((x)<0) ? (-1) : (0) )) #define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) #ifdef GIMP /* filenames of the current source and destination mesh */ static char *src_mesh_name = NULL; static char *dst_mesh_name = NULL; /* NAME // set_src_mesh_name: set the filename of the current source mesh // // DESCRIPTION // This function provides access to the source mesh name. It is // used by the xmorph GIMP plugin to restore the name of the // source mesh between plugin invocations, so that the user does not // need to supply it over and over again. */ void set_src_mesh_name (char *fname) { int len; len = strlen (fname); if(src_mesh_name) FREE(src_mesh_name); src_mesh_name = MY_CALLOC (len + 1, char); if (src_mesh_name) strcpy (src_mesh_name, fname); } /* NAME // get_src_mesh_name: return the filename of the current source mesh // // DESCRIPTION // This function provides access to the source mesh name. It is // used by the xmorph GIMP plugin to save the name of the // source mesh between plugin invocations, so that the user does not // need to supply it over and over again. */ char * get_src_mesh_name (void) { return src_mesh_name; } /* NAME // set_dst_mesh_name: set the filename of the current destination mesh // // DESCRIPTION // This function provides access to the destination mesh name. It is // used by the xmorph GIMP plugin to restore the name of the // destination mesh between plugin invocations, so that the user does // not need to supply it over and over again. */ void set_dst_mesh_name (char *fname) { int len; len = strlen (fname); if(dst_mesh_name) FREE(dst_mesh_name); dst_mesh_name = MY_CALLOC (len + 1, char); if (dst_mesh_name) strcpy (dst_mesh_name, fname); } /* NAME // get_dst_mesh_name: return the filename of the current destination mesh // // DESCRIPTION // This function provides access to the destination mesh name. It is // used by the xmorph GIMP plugin to save the name of the destination // mesh between plugin invocations, so that the user does not need to // supply it over and over again. */ char * get_dst_mesh_name (void) { return dst_mesh_name; } #endif /* !GIMP */ /* NAME // meshAlloc: allocate memory for internal arrays of a MeshT // // // ARGUMENTS // this (in/out): mesh. this->nx and this->ny are used on input to // determine mesh size. Memory for this->x and this->y are allocated. // this->nx and this->ny are set. // // nx (in): number of mesh-points along x-direction // // ny (in): number of mesh-points along y-direction // // // DESCRIPTION // As each MeshT instance is created, it should be initialized // using this routine, even if the size is zero. // // If the size is non-zero then memory for the mesh arrays is // allocated here. If the size is zero then the mesh arrays are set // to NULL. // // // this routine automatically calls meshRef // NOTES // The elements of the mesh arrays are double precision floating point // values. The reason why double is used is that the image warping // routine, as it is currently implemented, requires double. */ int meshAlloc(MeshT *this, int nx, int ny) { if(nx < 0 || ny < 0) { fprintf(stderr, "meshAlloc: ERROR: negative size: %i %i\n", nx, ny); return 1; } if(nx < MESH_MIN_NX) { fprintf(stderr, "meshAlloc: WARNING: nx=%i was too small. Setting to %i\n", nx, MESH_MIN_NX); nx = MESH_MIN_NX; } if(ny < MESH_MIN_NY) { fprintf(stderr, "meshAlloc: WARNING: ny=%i was too small. Setting to %i\n", ny, MESH_MIN_NY); ny = MESH_MIN_NY; } if((this->x != NULL) || (this->y != NULL) || (this->label != NULL)) { fprintf(stderr, "meshAlloc: warning: allocating over un-freed mesh\n"); #if (DEBUG >= 1) abort(); #endif } /* Set the mesh size */ this->nx = nx; this->ny = ny; if(nx * ny == 0) { /* Set arrays to NULL to indicate that they are not allocated */ this->x = this->y = NULL; return 0; } /* Allocate mesh arrays */ if((this->x=MY_CALLOC(nx * ny, double))==NULL) { fprintf(stderr, "meshAlloc: Bad Alloc\n"); return 1; } this->x[0] = 0.0; /* for alloc debugging */ if((this->y=MY_CALLOC(this->nx * this->ny, double))==NULL) { FREE(this->x); fprintf(stderr, "meshAlloc: Bad Alloc\n"); return 1; } if((this->label=MY_CALLOC(this->nx * this->ny, MESHLABEL_T))==NULL) { FREE(this->x); FREE(this->y); fprintf(stderr, "meshAlloc: Bad Alloc\n"); return 1; } this->y[0] = 0.0; /* for alloc debugging */ #if (DEBUG >= 2) printf("meshAlloc: %p %p\n", this->x, this->y); #endif meshRef(this); return 0; } /* NAME // meshNew: allocate and initialize a MeshT instance and its arrays // // // DESCRIPTION // A Mesh is a 2D array of coordinate values that are used to // indicate the locations of regions of an image. When two meshes are // used together with an image warping algorithm, the meshes indicate // where regions of an image are to be warped. Mesh-based image // warping is the foundation of one way of doing image morphing. // // // SEE ALSO // meshAlloc */ MeshT * meshNew(const int nx, const int ny) { MeshT *mesh = MY_CALLOC(1, MeshT); if(NULL == mesh) { return NULL; } if(nx * ny == 0) { meshInit(mesh); } else { meshAlloc(mesh, nx, ny); } return mesh; } /* NAME // meshFreeReally: free memory of internal arrays of a MeshT // THIS FUNCTION IS NOT TO BE USED IN APPLICATIONS: USE meshUnref // see the file README.libmorph // // ARGUMENTS // this: pointer to mesh // // // NOTES // The memory of the MeshT instance is not freed here. // */ void meshFreeReally(MeshT *this) { #if (DEBUG >= 2) printf("freeing mesh %p %p\n", this->x, this->y); #endif if(this->x != NULL) { FREE(this->x); this->x = NULL; } if(this->y != NULL) { FREE(this->y); this->y = NULL; } if(this->label != NULL) { FREE(this->label); this->label = NULL; } } /* NAME // meshDelete: free MeshT instance // // // ARGUMENTS // this (in/out): pointer to MeshT instance // // // NOTES // Does NOT free internal mesh arrays // //FIXME mennucci: it is confusing, I would eliminate it */ void meshDelete(MeshT *this) { FREE(this); } /* NAME // meshPrint: print some info about a mesh, for debugging */ void meshPrint(const MeshT *this) { printf("size=%li,%li max corner=%g,%g\n", this->nx, this->ny, this->x[this->nx * this->ny - 1], this->y[this->nx * this->ny - 1]); } /* NAME // meshCompatibilityCheck: make sure two meshes are compatible // // // ARGUMENTS // this (in): pointer to this mesh // // other (in): pointer to other mesh // // // DESCRIPTION // Two meshes must be compatible in order to create a "tween" mesh. // // In order for meshes to be compatible, they must have the same // number of points in each direction. // // If both meshes are the "input" meshes for an interpolation, they // should also have the same maximum values, i.e., their corners // should be at the same places. However, this routine will be used // to check for compatibility between input and output meshes, in // which case the output mesh will initially have no mesh point // values set. // // // RETURN VALUES // Return nonzero if meshes do not match. // Return zero if they match. */ int meshCompatibilityCheck(const MeshT *this, const MeshT *other) { if(this->nx != other->nx) { return 1; } else if(this->ny != other->ny) { return 2; } #ifdef MESH_CHECK_CORNERS if(this->x[0] != other->x[0]) { return 3; } else if(this->x[this->nx-1] != other->x[this->nx-1]) { return 4; } else if(this->y[0] != other->y[0]) { return 5; } else if(this->y[this->ny-1] != other->y[this->ny-1]) { return 6; } #endif /* MESH_CHECK_CORNERS */ return 0; } /* NAME // meshChannelLinInterp: linear interpolation between two meshes, channel // // // ARGUMENTS // mi1 (in): a channel of input mesh 1 // // mi2 (in): a channel of input mesh 2 // // nx (in): number of mesh points in x-direction // // ny (in): number of mesh points in y-direction // // mo (out): the respective channel of the output mesh // // t (in): tween parameter: // when 0x, m2P->x, m1P->nx, m1P->ny, tween_param, moP->x); meshChannelLinInterp(m1P->y, m2P->y, m1P->nx, m1P->ny, tween_param, moP->y); } /* NAME // meshCopy: perform deep copy of MeshT members and array contents // // // SEE ALSO // meshStore, meshRetrieve */ void meshCopy(MeshT *this, const MeshT *source) { /* FIXME why? this only generates segfaults! remember to always init meshes!! */ meshFreeReally(this); meshAlloc(this, source->nx, source->ny); memcpy(this->x, source->x, sizeof(double) * this->nx * this->ny); memcpy(this->y, source->y, sizeof(double) * this->nx * this->ny); memcpy(this->label, source->label, sizeof(MESHLABEL_T) * this->nx * this->ny); } /* NAME // meshBackupIndexSet: set index of mesh backup buffer for "undo" operations // // // SEE ALSO // meshStore(), meshRetrieve(), meshBackupIndexGet() */ void meshBackupIndexSet(int backup_index) { if((backup_index < 0) || (backup_index >= NUM_MESH_BACKUPS)) { fprintf(stderr, "meshStore: backup_index=%i out of range\n", backup_index); return; } mesh_backup_index = backup_index; } /* NAME // meshBackupIndexGet: return appropriate value of mesh_backup_index // // // ARGUMENTS // this_or_other (in): flag determing whether to return current // index, or index of "other" mesh. Zero value means return index // for "this". Non-zero value means return index for "other". // // // DESCRIPTION // A problem would arise in situations such as when "meshLineDelete" or // "meshLineAdd" is called from meshLineMouseModify, where the caller will // modify 2 meshes at the same time. Inside meshLineMouseModify, there is // an ambiguity about what convention the user might choose for which // mesh_backup_index corresponds to which mesh. An explicit policy is // therefore established for which mesh_backup_index corresponds with // which mesh. // // The mesh_backup_index policy is the following: If a mesh modification // routine modifies only one mesh and a backup copy of the mesh is kept, // then the backup is stored of that mesh into the location at the current // mesh_backup_index. If a mesh modification routine modifies 2 meshes // then the "this" mesh is stored at the current mesh_backup_index and the // other mesh is stored in an adjacent mesh_backup_index. The value of // the adjacent index is chosen such that, if the current // mesh_backup_index value is even, the adjacent index is the next higher // value of the index, and if the current value of mesh_backup_index is // odd, then the adjacent index is the lower value. For example, if // mesh_backup_index=1 then the adjacent index value is 0. If // mesh_backup_index=0 then the adjacent index value is 1. // // An alternative would be to associate a backup copy with the address of // the original mesh, but this would introduce garbage collection // nightmares. // // // SEE ALSO // meshBackupIndexSet() */ int meshBackupIndexGet(const int this_or_other) { if(this_or_other) { /* Return "this" index value */ return mesh_backup_index; } else { /* Return the "other" index value */ if((mesh_backup_index % 2) == 0) { /* The current mesh_backup_index is even so the other is the next value */ return mesh_backup_index + 1; } else { /* The current mesh_backup_index is odd so the other is the prev value */ return mesh_backup_index - 1; } } } void meshBackupFree(void) { int im; for(im=0; im < NUM_MESH_BACKUPS; im++) { meshFreeReally(&mesh_backup[im]); } } /* NAME // meshStore: store a mesh in a holding buffer for later "undo" // // // NOTES // Recognize that some meshes are temporary and internal anyway, so // that some mesh operations should not result in a backup copy. It // should be the case that such internal temporary meshes make calls // to mesh modification routines which the user would never call, so // there should be no problem with conflicts in backup buffers. // // // SEE ALSO // meshRetrieve(), meshCopy(), meshBackupIndexSet(), // meshBackupIndexGet() */ void meshStore(const MeshT *this) { #if VERBOSE >= 1 printf("meshStore: %p into %i\n", this, mesh_backup_index); #endif meshCopy(&mesh_backup[mesh_backup_index], this); } /* NAME // meshRetrieve: retrieve a mesh from a holding buffer // // // SEE ALSO // meshStore(), meshCopy(), meshBackupIndexSet(), // meshBackupIndexGet() */ void meshRetrieve(MeshT *this) { meshCopy(this, &mesh_backup[mesh_backup_index]); } /* NAME // meshEdgeAssert: make sure that Mesh edge values are on the image edge */ static void meshEdgeAssert(MeshT *this, const int img_width, const int img_height) { int vi; /* Assert top and bottom edge */ for(vi=0; vi < this->nx; vi++) { this->y[ vi] = 0.0; this->y[(this->ny - 1) * this->nx + vi] = (img_height - 1); } /* Assert left and right edge */ for(vi=0; vi < this->ny; vi++) { this->x[vi * this->nx ] = 0.0; this->x[vi * this->nx + (this->nx - 1)] = (img_width - 1); } } /* NAME // meshReset : set image warp mesh to be a regularly spaced mesh // // // ARGUMENTS // this: (in/out) mesh pointer // // img_width: width, in pixels, of the image that goes with this mesh // // img_height: height, in pixels, of the image that goes with this mesh // // // DESCTIPTION // Resets the mesh to a regular rectangular grid. // // Stores a backup copy of the original mesh in the current mesh // backup buffer. // // // SEE ALSO // meshScale, meshStore */ void meshReset(MeshT *this, const int img_width, const int img_height) { int xi, yi; const double mp_dx = (double)(img_width - 1) / (double)(this->nx - 1) ; const double mp_dy = (double)(img_height - 1) / (double)(this->ny - 1) ; if((NULL == this->x) || (NULL == this->y)) { fprintf(stderr, "meshReset: ERR: no mesh arrays. Allocate them.\n"); return; } /* Save a backup of the original mesh for possible "undo" */ meshStore(this); for(yi=0; yi < this->ny; yi++) { for(xi=0; xi < this->nx; xi++) { this->x[yi * this->nx + xi] = (double)((mp_dx * (double)xi )); this->y[yi * this->nx + xi] = (double)((mp_dy * (double)yi )); this->label[yi * this->nx + xi] = 0; } } meshEdgeAssert(this, img_width, img_height); } /* NAME // meshScale: rescale Mesh to fit new image size // // // DESCRIPTION // meshScale rescales Mesh values to fit to the given image size. // This operation is useful only when than using an image which // exactly fits this mesh, except that the image was rescaled for // some reason. // // meshScale will probably be called on a mesh each time a new image // is read which is associated with that mesh. Since reading a new // image usually means that the mesh will also have to be re-read, // the meshScale is a fairly useless operation, except that it allows // the user to recover from accidentally changing the mesh because of // either accidentally changing the wrong image, or changing the // image before having saved the associated mesh. // // Effectively, what meshScale does is to make the actual mesh // coordinate values irrelavent. One approach I had considered // using was to always make the mesh coordinates range from 0.0 to // 1.0 and then use the image width and height as scaling values. // This would make the meshes independent of image size and shape. // Either way requires about the same amount of code and this way // I do not have to rewrite the warp algorithm. // // Calling this routine also stores a backup copy of the original // mesh in the current mesh backup buffer. // // // SEE ALSO // meshStore, meshReset */ void meshScale(MeshT *this, const int img_width, const int img_height) { int xi, yi; double scale_x = 1.0; /* amount to scale x values */ double scale_y = 1.0; /* amount to scale y values */ if((NULL == this->x) || (NULL == this->y)) { fprintf(stderr, "meshReset: ERR: no mesh arrays. Allocate them.\n"); return; } scale_x = img_width / this->x[this->ny * this-> nx - 1]; scale_y = img_height / this->y[this->ny * this-> nx - 1]; /* Save a backup copy of the orignal mesh for possible "undo" */ meshStore(this); for(yi=0; yi < this->ny; yi++) { for(xi=0; xi < this->nx; xi++) { this->x[yi * this->nx + xi] *= scale_x; this->y[yi * this->nx + xi] *= scale_y; } } meshEdgeAssert(this, img_width, img_height); } /******** AM : in latest versions of libmorph, it is not necessay that the border of the mesh be the border of the image. (gtkmorph edits in this way) So the scaling routine above is broken in two different ways :-) */ void meshScaleFreeformat(MeshT *this, const double scale_x , const double scale_y) { int xi, yi; if((NULL == this->x) || (NULL == this->y)) { fprintf(stderr, "meshReset: ERR: no mesh arrays. Allocate them.\n"); return; } for(yi=0; yi < this->ny; yi++) { for(xi=0; xi < this->nx; xi++) { this->x[yi * this->nx + xi] *= scale_x; this->y[yi * this->nx + xi] *= scale_y; } } } /* NAME // meshFunctionalize : set image warp mesh to be functional and bounded // // // ARGUMENTS // this (in/out): mesh pointer // // img_width: width, in pixels, of the image associated with this mesh // // img_height: height, in pixels, of the image associated with this mesh // // // DESCRIPTION // This routine only enforces vertical and horizontal functional lines. // (I.e. lines can cross diagonally.) // // The problem with this routine is that if a point is out of its box, // it is mathematically ambiguous whether that point should be moved, // or whether the adjacent point should be moved. Moving either fixes // the "functionality", but usually there is an intuitive choice which // this algorithm does not see. This algorithm moves both points. // To fix this problem, a heuristic could be employed to place a point // within some weighted average of its neighbors. Another posibility // would be to generate the spline and use the values the spline is // forced to use. The problem with this is that the spline already // expects functional data, so forcing a spline might break the // spline. Yet another possibility is to make a first-pass through // the data to see which points need fixing, by the criteria used in // this routine, along with an additional backwards criterion to ensure // symmetry.. Then, the second pass would weight the changes according to // which points require changes. This would, at least, keep major // crossovers effects localized (such as when a single point crosses // over many points). // // This could be looked at as a bare-bones functionalizer-- one which // simply guarentees that meshes are functional. It is probably the // job of another algorithm to make the mesh look more like what the // user intended, but the user should have done what it intended in the // first place... // // // RETURN VALUE // Return number of changes. // // // SEE ALSO // meshStore */ int meshFunctionalize(MeshT *this, int img_width, int img_height) { register int xi, yi; double mxv, myv; int loop_change; int mesh_change=0; /* Save a backup copy of the orignal mesh for possible "undo" */ meshStore(this); /* Repeat the mesh changes until the mesh stops changing */ /* (but stop trying after a while to avoid long or infinite loops) */ do { loop_change = 0; /* Force top and bottom edges to be at borders */ for(xi=0; xi < this->nx; xi++) { if(this->y[xi] != 0) { this->y[xi] = 0; loop_change++; } if(this->y[(this->ny - 1) * this->nx + xi] != (img_height-1)) { this->y[(this->ny - 1) * this->nx + xi] = img_height-1; loop_change++; } } this->y[0] = 0; for(yi=1; yi < this->ny; yi++) { /* Force left and right edges to be at borders */ if(this->x[yi * this->nx + 0] != 0) { this->x[yi * this->nx + 0] = 0; loop_change++; } if(this->x[yi * this->nx + (this->nx-1)] != (img_width-1)) { this->x[yi * this->nx + (this->nx-1)] = img_width-1; loop_change++; } /* Enforce functionality */ for(xi=1; xi < this->nx; xi++) { /* make current point right of previous point */ if(this->x[yi * this->nx + xi] <= this->x[yi * this->nx + (xi-1)]) { mxv = (this->x[yi* this->nx + xi] + this->x[yi* this->nx + (xi-1)])/2; this->x[yi * this->nx + xi] = mxv + 1; this->x[yi * this->nx + (xi-1)] = mxv - 1; loop_change++; } /* make current point below point in previous row */ if(this->y[yi * this->nx + xi] <= this->y[(yi-1) * this->nx + xi]) { myv = (this->y[yi* this->nx + xi] + this->y[(yi-1)* this->nx + xi])/2; this->y[yi * this->nx + xi] = myv + 1; this->y[(yi-1) * this->nx + xi] = myv - 1 ; loop_change++; } /* make current point inside image boundary */ if(this->x[yi * this->nx + xi] > (img_width - this->nx + xi)) { this->x[yi * this->nx + xi] = img_width - this->nx + xi; loop_change ++; } /* make current point inside image boundary */ if(this->y[yi * this->nx + xi] > (img_height - this->ny + yi)) { this->y[yi * this->nx + xi] = img_height - this->ny + yi; loop_change ++; } } } if(loop_change) mesh_change++; } while ((mesh_change < (this->nx + this->ny)) && loop_change); return mesh_change; } /* NAME // meshPointNearest: find the nearest meshpoint and return square distance // // // ARGUMENTS // this (in): mesh pointer // px: (in) mouse pointer x-coordinate (can be out of range) // py: (in) mouse pointer y-coordinate (can be out of range) // mi: (out) i-index of closest meshpoint // mj: (out) j-index of closest meshpoint // dx: (out) x distance of pointer from nearest meshpoint // dy: (out) y distance of pointer from nearest meshpoint // // // DESCRIPTION // Set the indices of the meshpoint and the x,y distances. // Distances are dx=(px - this->x[]) , dy=(py - this->y[]) // // // RETURN VALUE // Returns square distance between pointer and meshpoint */ long int meshPointNearest(const MeshT *this, int px, int py, int *mi, int *mj, int *dx, int *dy) { int xi, yi; /* loop indices of mesh array */ int m_dx; /* x-distance from mouse to visited mesh point */ int m_dy; /* y-distance from mouse to visited mesh point */ long int m_d; /* square distance from mouse to visited mesh point */ long int m_d_min = 2000000; /* smallest square distance so far */ #ifdef DONT_MOVE_BORDER /* Guarentee p[xy] is in range */ if(px < this->x[0]) { px = this->x[0]; } if(py < this->y[0]) { py = this->y[0]; } if(px > this->x[this->ny * this->nx-1]) { px = this->x[this->nx * this->ny-1]; } if(py > this->y[this->ny * this->nx-1]) { py = this->y[this->nx * this->ny-1]; } #endif /* Scan all mesh points */ for(yi=0; yi < this->ny; yi++) { for(xi=0; xi < this->nx; xi++) { /* Compute distance between current mesh point and mouse */ m_dx = px - this->x[yi * this->nx + xi]; m_dy = py - this->y[yi * this->nx + xi]; m_d = m_dx * m_dx + m_dy * m_dy; /* See if this mesh point is the closest so far */ if(m_d < m_d_min) { m_d_min = m_d; /* Remember the index of this mesh point */ *mi = xi; *mj = yi; if(dx!=NULL) *dx = m_dx; if(dy!=NULL) *dy = m_dy; } } } return m_d_min ; } /* NAME // meshPick: find the nearest mesh point to the mouse and return index // // // ARGUMENTS // this (in): msh pointer // // mouse_x (in): mouse x location relative to the upper-left of the mesh // // mouse_y (in): mouse y location relative to the upper-left of the mesh // // component(in): which index component to return // 0=>i, 1=>j, // 2=>x distance between mouse and meshpoint, (obsolete) // 3=>y distance between mouse and mesh point (obsolete) // // proximity(in): distance mouse must be within to do a pick. // negative values indicate infinite distance. // // // RETURN VALUES // Depends on the value of "component". See the ARGUMENTS section for // details. */ int meshPick(const MeshT *this, int mouse_x, int mouse_y, int component, double proximity) { int mesh_i_index; int mesh_j_index; int distance_x; int distance_y; int distance; meshPointNearest(this, mouse_x, mouse_y, &mesh_i_index, &mesh_j_index, &distance_x, &distance_y); distance = sqrt(distance_x*distance_x + distance_y*distance_y); if((proximity < 0.0) || (distance < proximity)) { if(0 == component) { return mesh_i_index; } else if(1 == component) { return mesh_j_index; #if 0 } else if(2 == component) { return distance_x; } else if(3 == component) { return distance_y; #endif } else { /* Invalid component value */ return -2; } } else { /* mouse is too far from a mesh point to matter */ return -1; } } /* NAME // meshSet: set a mesh point, given indices and values // // // ARGUMENTS // this (in/out): pointer to MeshT // // xi (in): x index of the mesh point to set // // yi (in): y index of the mesh point to set // // new_x (in): new x-coordinate value to set mesh point location // // new_y (in): new y-coordinate value to set mesh point location // // // DESCRIPTION // meshSet is a basic accessor function to set a mesh point location. // Using meshSet is preferable to simply setting the mesh coordinate // explicitly because meshSet is free to perform other operations, // such as saving the original mesh in a holding place in case the // user decides to "undo" the change later. // // Stores a backup copy of the original mesh in the current mesh // backup buffer. // // // SEE ALSO // meshStore */ void meshSet(MeshT *this, int xi, int yi, double new_x, double new_y) { /* Save a backup copy of the orignal mesh for possible "undo" */ meshStore(this); /*mark the fact that this mesh was changed*/ this->changed ++; meshSetNoundo(this,xi,yi,new_x,new_y); } void meshSetLabel(MeshT *this, int xi, int yi, MESHLABEL_T new_label) { this->label[yi * this->nx + xi] = new_label; /*mark the fact that this mesh was changed*/ this->changed ++; } /* NAME // meshLineAdd: add a mesh line // // // ARGUMENTS // this (in/out): mesh pointer // // mi (in): upper left index of the quadrangle enclosing the new line // (i.e. mi is less than the index of the new line in the new mesh.) // For adding vertical lines, mi is the index of the nearby left column. // For adding horizontal lines, mi is the index of the nearby upper row. // // mt (in): relative distance between the surrounding mesh lines // // type (in): 1 for vertical lines or 2 for horizontal lines // // // DESCRIPTION // Allocates memory for the new mesh arrays. // Sets the incoming mesh array pointer to the newly allocated array. // Frees the old mesh arrays. // // Stores a backup copy of the original mesh in the current mesh // backup buffer. // // // NOTES // Adding a mesh line has a subtlety concerning "location" that is // not an issue with deleting mesh lines or picking mesh points. // When adding a mesh line, it is not quite so simple to figure out // where the user is indicating to add the line because in general // the line could be quite curvy and twisted. This algorithm tries // its best, but be careful when reading this routine and providing // its input arguments. // // // RETURN VALUES // Return zero if okay. // // Returns nonzero if fails. // Failure can happen if memory runs out or if a bad value for "type" // is provided, or if mi is out of bounds. // // // SEE ALSO // meshStore, meshLineDelete, meshLineMouseModify */ int meshLineAdd(MeshT *this, const int mi, const double mt, const int type) { int xi, yi; MeshT new; /* place holder for new mesh info */ meshInit(&new); /* Set up the new mesh size */ switch(type) { /* Add vertical */ case 1: /* Add a column */ new.nx = this->nx + 1; new.ny = this->ny; if((mi<-1) || (mi > this->nx)) { fprintf(stderr,"meshLineAdd: bad value: 0>mi=%i>nx=%li\n", mi,this->nx); return -2; } break; /* Add horizontal */ case 2: /* Add a row */ new.nx = this->nx; new.ny = this->ny + 1; if((mi<-1) || (mi > this->ny)) { fprintf(stderr,"meshLineAdd: bad value: 0>mi=%i>ny=%li\n", mi,this->ny); return -3; } break; /* Invalid type */ default: fprintf(stderr, "meshLineAdd: Bad Value: type: %i\n", type); return -1 ; } /* Allocate the new mesh */ if(meshAlloc(&new, new.nx, new.ny)) return 1 ; /* Save a backup copy of the orignal mesh for possible "undo" */ meshStore(this); /* Make the change */ switch(type) { /* --- Add vertical line --- */ case 1: /* Copy the left columns from old into new */ for(yi=0; yi < this->ny; yi++) { for(xi=0; xi <= mi; xi++) { new.x[yi * new.nx + xi] = this->x[yi * this->nx + xi]; new.y[yi * new.nx + xi] = this->y[yi * this->nx + xi]; new.label[yi * new.nx + xi] = this->label[yi * this->nx + xi]; } } /* Copy the right columns from old into new */ for(yi=0; yi < this->ny; yi++) { for(xi=mi+1; xi < this->nx; xi++) { new.x[yi * new.nx + (xi+1)] = this->x[yi * this->nx + xi]; new.y[yi * new.nx + (xi+1)] = this->y[yi * this->nx + xi]; new.label[yi * new.nx + (xi+1)] = this->label[yi * this->nx + xi]; } } /* Add the new column */ { double mx1, mx2, mxv; double my1, my2, myv; int mileft=CLAMP(mi,0,this->nx-1), miright=CLAMP(mi+1,0,this->nx-1); for(yi=0; yi < this->ny; yi++) { /* Place new line between two horizontally adjacent lines */ mx1 = this->x[yi * this->nx + mileft]; mx2 = this->x[yi * this->nx + miright]; mxv = (1.0-mt) * mx1 + mt * mx2; new.x[yi * new.nx + (mi+1)] = mxv; my1 = this->y[yi * this->nx + mileft]; my2 = this->y[yi * this->nx + miright]; myv = (1.0-mt) * my1 + mt * my2; new.y[yi * new.nx + (mi+1)] = myv; } } break; /* --- Add horizontal line --- */ case 2: /* Copy the top rows from old to new */ for(yi=0; yi <= mi; yi++) { for(xi=0; xi< this->nx; xi++) { new.x[yi * new.nx + xi] = this->x[yi * this->nx + xi]; new.y[yi * new.nx + xi] = this->y[yi * this->nx + xi]; new.label[yi * new.nx + xi] = this->label[yi * this->nx + xi]; } } /* Copy the bottom rows from old to new */ for(yi=mi+1; yi < this->ny; yi++) { for(xi=0; xi < this->nx; xi++) { new.x[(yi+1) * new.nx + xi] = this->x[yi * this->nx + xi]; new.y[(yi+1) * new.nx + xi] = this->y[yi * this->nx + xi]; new.label[(yi+1) * new.nx + xi] = this->label[yi * this->nx + xi]; } } /* Add the new row */ { double mx1, mx2, mxv; double my1, my2, myv; int miup=CLAMP(mi,0,this->ny-1), midown=CLAMP(mi+1,0,this->ny-1); for(xi=0; xi < this->nx; xi++) { /* Place new line between two vertically adjacent lines */ mx1 = this->x[(miup) * this->nx + xi]; mx2 = this->x[(midown) * this->nx + xi]; mxv = (1.0-mt) * mx1 + mt * mx2; new.x[(mi+1) * new.nx + xi] = mxv; my1 = this->y[(miup) * this->nx + xi]; my2 = this->y[(midown) * this->nx + xi]; myv = (1.0-mt) * my1 + mt * my2; new.y[(mi+1) * new.nx + xi] = myv; } } break; /* --- Invalid type --- */ default: fprintf(stderr, "meshLineAdd: Bad Value: type: %i\n", type); return -1 ; } meshFreeReally(this); /* Free the old mesh arrays */ /* Point to the new mesh arrays */ this->x = new.x; this->y = new.y; this->nx = new.nx; this->ny = new.ny; this->label= new.label; this->changed++; return 0 ; } /* meshLineDelete: delete a mesh line // // // ARGUMENTS // this: mesh pointer // // mi: index the of a mesh point on the to-be-deleted line // for deleting vertical lines, mi is the index of the column // for deleting horizontal lines, mi is the index of the row // // type: 1 for vertical lines or 2 for horizontal lines // // // DESCRIPTION // Allocate memory for the mesh and set the incoming mesh pointers to // the newly allocated array // // Caller must decrement the appropriate local analogy to nx or ny // // Stores a backup copy of the original mesh in the current mesh // backup buffer. // // // RETURN VALUES // Return nonzero if meshLineDelete fails // // // SEE ALSO // meshStore, meshLineAdd, meshLineMouseModify */ int meshLineDelete(MeshT *this, int mi, int type) { int xi, yi; MeshT new; meshInit(&new); switch(type) { /* Delete vertical */ case 1: /* Delete a column */ new.nx = this->nx - 1; new.ny = this->ny; break; /* Delete horizontal */ case 2: /* Delete a row */ new.nx = this->nx; new.ny = this->ny - 1; break; /* Invalid type */ default: fprintf(stderr, "meshLineDelete: Bad Value: type: %i\n", type); return -1; } if(meshAlloc(&new, new.nx, new.ny)) return 1; switch(type) { /* --- Delete vertical line --- */ case 1: /* Copy the left columns */ for(yi=0; yi < this->ny; yi++) { for(xi=0; xix[yi * this->nx + xi]; new.y[yi * new.nx + xi] = this->y[yi * this->nx + xi]; new.label[yi * new.nx + xi] = this->label[yi * this->nx + xi]; } } /* Copy the right columns */ for(yi=0; yi< this->ny; yi++) { for(xi=mi+1; xi< this->nx; xi++) { new.x[yi * new.nx + (xi-1)] = this->x[yi * this->nx + xi]; new.y[yi * new.nx + (xi-1)] = this->y[yi * this->nx + xi]; new.label[yi * new.nx + (xi-1)] = this->label[yi * this->nx + xi]; } } break; /* --- Delete horizontal line --- */ case 2: /* Copy the top rows */ for(yi=0; yinx; xi++) { new.x[yi * new.nx + xi] = this->x[yi * this->nx + xi]; new.y[yi * new.nx + xi] = this->y[yi * this->nx + xi]; new.label[yi * new.nx + xi] = this->label[yi * this->nx + xi]; } } /* Copy the bottom rows */ for(yi=mi+1; yi< this->ny; yi++) { for(xi=0; xi< this->nx; xi++) { new.x[(yi-1) * new.nx + xi] = this->x[yi * this->nx + xi]; new.y[(yi-1) * new.nx + xi] = this->y[yi * this->nx + xi]; new.label[(yi-1) * new.nx + xi] = this->label[yi * this->nx + xi]; } } break; /* --- --- --- Invalid type --- --- --- */ default: fprintf(stderr, "meshLineDelete: Bad Value: type: %i\n", type); return -1; } /* Save a backup copy of the orignal mesh for possible "undo" */ meshStore(this); /* Free the old mesh arrays */ meshFreeReally(this); /* Point to the new mesh arrays */ this->x = new.x; this->y = new.y; this->nx = new.nx; this->ny = new.ny; this->label = new.label; this->changed++; return 0; } /* NAME // meshLineMouseModify: Modify a mesh line using the mouse // // // ARGUMENTS // this (in/out): pointer to mesh which is being pointed at. // // other (in/out): pointer to other mesh which accompanies "this" // mesh. Ignored if NULL. // // mouse_x (in): x location of the mouse, relative to the mesh origin, // where the mesh origin refers to the upper-left corner of the // mesh, and has coordinate (0,0). // // mouse_y (in): y location of the mouse, relative to the mesh origin, // where the mesh origin refers to the upper-left corner of the // mesh, and has coordinate (0,0). // // line_type (in): 'h' => horizontal , 'v' => vertical // // action (in): 'a' => add , 'd' => delete // // // SEE ALSO // meshLineAdd, meshLineDelete, meshLineStore */ int meshLineMouseModify(MeshT *this, MeshT *other, int mouse_x, int mouse_y, char line_type, char action) { int mi, mj; /* index of the mesh point nearest the mouse */ int mdx, mdy; /* x and y distances between nearest mesh point and mouse */ int md; /* scalar distance between nearest mesh point and mouse */ int mesh_backup_index_original = meshBackupIndexGet(0); #if (DEBUG >= 1) fprintf(stderr, "meshLineMouseModify: %p %p %i %i %c %c\n", this, other, mouse_x, mouse_y, line_type, action); #endif md = sqrt(meshPointNearest(this, mouse_x, mouse_y, &mi, &mj, &mdx, &mdy)); if('a' == action) { /* Add mesh line */ /* Make indices refer to upper left point in surrounding quadrangle */ if( ( SGN(mdx) < 0 ) && ( mi > 0) ) { mi --; } if( ( SGN(mdy) < 0 ) && ( mj > 0) ) { mj --; } /* Test which line_type is being modified, // test whether the number of mesh lines is not too large, // test whether we are sitting away from an existing mesh line. // (We do not want to add another line on top of another one.) */ if('v' == line_type) { if((this->nx < MESH_MAX_NX(this)) && (mdx != 0)) { double mx1 = this->x[mj * this->nx + mi]; double mx2 = this->x[mj * this->nx + (mi+1)]; /* Find a place mid-way in between two surrounding mesh points. // mdx will be negative if the mouse is closer to the mi+1 // mesh point, in which case mxt will also be negative, in which // case, we correct for this later. */ double mxt = mdx / (mx2 - mx1); if(mxt < 0.0) { mxt += 1.0; } /* Add a vertical mesh line at the mid-way place */ meshLineAdd(this, mi, mxt, 1); /* Add vertical mesh line in corresponding place for other mesh */ if(other != NULL) { meshBackupIndexSet(meshBackupIndexGet(1)); meshLineAdd(other, mi, mxt, 1); meshBackupIndexSet(mesh_backup_index_original); } } } else if('h' == line_type) { if((this->ny < MESH_MAX_NY(this)) && (mdy != 0)) { double my1 = this->y[mj * this->nx + mi]; double my2 = this->y[(mj+1) * this->nx + mi]; double myt = mdy / (my2 - my1); if(myt < 0.0) { myt += 1.0; } meshLineAdd(this, mj, myt, 2); if(other != NULL) { meshBackupIndexSet(meshBackupIndexGet(1)); meshLineAdd(other, mj, myt, 2); meshBackupIndexSet(mesh_backup_index_original); } } } else { fprintf(stderr, "meshLineMouseModify: ERROR: invalid line_type '%c'\n", line_type); } } else if ('d' == action) { /* Delete mesh line */ if(md >= MP_PICK_DIST) { /* Mouse is too far from any mesh point to be meaningful */ #if (DEBUG >= 1) fprintf(stderr, "meshLineMouseModify: mouse distance = %i > %i too far for delete\n", md, MP_PICK_DIST); #endif return -1; } /* Test line type for vertical or horizontal, // make sure that we are not trying to delete the left-most mesh line, // make sure that we are not trying to delete the right-most mesh line, // make sure that we are not going to end up with too few mesh lines. */ if('v' == line_type) { if((mi>0) && (mi<(this->nx - 1)) && (this->nx > MESH_MIN_NX)) { meshLineDelete(this, mi, 1); if(other != NULL) { meshLineDelete(other, mi, 1); } } } else if('h' == line_type) { if((mj>0) && (mj<(this->ny - 1)) && (this->ny > MESH_MIN_NY)) { meshLineDelete(this, mj, 2); if(other != NULL) { meshLineDelete(other, mj, 2); } } } else { fprintf(stderr, "meshLineMouseModify: ERROR: invalid line_type '%c'\n", line_type); } } else { fprintf(stderr, "meshLineMouseModify: ERROR: invalid action, '%c'\n", action); return 1; } return 0; } /* NAME // meshRead: Read a mesh from a file // // // ARGUMENTS // this: (in/out) mesh pointer // // filename: (in) mesh file name // // // DESCRIPTION // Frees memory of previous mesh. // Allocates memory for the meshes and sets .nx and .ny members. // // // RETURN VALUES // Returns zero if load succeeds. // Returns nonzero if load fails. // NOTES // If file is too short, it destroyes the old mesh! // // Now it saves integers, otherwise it is affected by the locale // and this is very bad. This format is though backward compatible. // To keep some subpixel precision,the points are multiplied by 10 ! */ int meshRead(MeshT *this, const char *filename) { int b; FILE *fP; /* mesh file pointer */ /* Open mesh file for reading */ if((fP=fopen(filename, "r"))==NULL) { fprintf(stderr, "meshRead: could not read file '%s'\n", filename); return 1; } b=meshRead_stream(this,fP); fclose(fP); return b; } int meshRead_stream(MeshT *this, FILE *fP) { int xi, yi; /* loop mesh indices */ int nx = -1; /* number of mesh points along x, read from file */ int ny = -1; /* number of mesh points along y, read from file */ /*double mesh_point; input buffer for mesh point value */ char magic[2]; /* magic number, for file identification */ char s[250]; /* string for parsing */ /* Read first two characters of mesh file */ if(fread(magic, 1, 2, fP) < 2) { fprintf(stderr, "meshRead: premature EOF in file\n"); return EOF; } /* "M2" as the first two characters indicates an ASCII mesh file */ if(magic[0]=='M' && magic[1]=='2') { /* Read the mesh geometry */ if(fscanf(fP, "%i", &nx)!=1 || (nx < 0)) { fprintf(stderr, "meshRead: missing or bad nx: %i\n", nx); return 2; } if(fscanf(fP, "%i", &ny)!=1 || (ny < 0)) { fprintf(stderr, "meshRead: missing or bad ny: %i\n", ny); return 3; } /* Free the old mesh and allocate memory for the new mesh */ meshFreeReally(this); meshInit(this); if(meshAlloc(this, nx, ny)) { return 6; } /*this reads the newline */ fgets(s, 249, fP); /* Read the mesh point values */ #ifdef TRANSPOSE_MESH for(xi=0; xi < this->nx; xi++) for(yi=0; yi < this->ny; yi++) #else for(yi=0; yi < this->ny; yi++) for(xi=0; xi < this->nx; xi++) #endif { /* this was modified to read files with or without labels */ if(fgets(s, 249, fP) == NULL) { fprintf(stderr, "meshRead: missing line at %i %i\n", xi, yi); /* no: meshFreeReally(this); rather, returns what is */ return 4; } {int a= sscanf(s,"%lf %lf %d", &(this->x[yi * this->nx + xi] ), &(this->y[yi * this->nx + xi] ), &(this->label[yi * this->nx + xi])); this->x[yi * this->nx + xi]/=10.0; this->y[yi * this->nx + xi]/=10.0; if( a<2) { fprintf(stderr, "\ meshRead: only %d args in line at %i %i\n\ line is: '%s'.\n", a,xi, yi,s); /* no: meshFreeReally(this); rather, tries on return 4;*/ } } } } else { fprintf(stderr, "meshRead: file was not a valid mesh file\n"); return 5; } return 0; } /* NAME // meshWrite: save a mesh to file named filename // // // ARGUMENTS // this: (in) mesh pointer // filename: (in) mesh file name // // // RETURN VALUES // Returns zero if load succeeds. // Returns nonzero if load fails. */ int meshWrite(MeshT *this, char *filename) { int b; FILE *fP; if((fP=fopen(filename, "w"))==NULL) { fprintf(stderr, "meshWrite: could not write file '%s'\n", filename); return 1; } b=meshWrite_stream(this,fP); fclose(fP); return b; } int meshWrite_stream(MeshT *this, FILE *fP) { int xi, yi; /* M2 indicates an ASCII mesh file */ fprintf(fP, "M2\n"); /* Write the mesh geometry */ fprintf(fP, "%li %li\n", this->nx, this->ny); /* Write the mesh point values . Now it saves integers, otherwise it is affected by the locale and this is very bad. This format is though backward compatible. NOTE The points are multiplied by 10 !! */ for(yi=0; yi < this->ny; yi++) { for(xi=0; xi < this->nx; xi++) fprintf(fP, "%d %d %d\n", (int) (10.0*this->x[yi * this->nx + xi]), (int)(10.0*this->y[yi * this->nx + xi]), this->label[yi * this->nx + xi]); } /*mark the fact that this mesh was saved*/ this->changed=0; return 0; } /* NAME // meshMatch: Make mesh dimensions match another mesh // // // ARGUMENTS // this: (in/out) mesh to be made to match the other mesh // other: (in) mesh to be matched to // // // DESCRIPTION // If this mesh needs to be resized, then it is also reset. // This should probably be rewritten to simply rescale the other mesh, // instead of destroying it. // // Stores a backup copy of the original mesh in the current mesh // backup buffer. */ void meshMatch(MeshT *this, const MeshT *other) { if((this->nx != other->nx) || (this->ny != other->ny)) { #ifdef DEBUG printf("meshMatch: about to wreck the other mesh. This needs fixing.\n"); #endif /* Save a backup copy of the orignal mesh for possible "undo" */ meshStore(this); meshFreeReally(this); meshAlloc(this, other->nx, other->ny); /* The +1 is because meshReset wants width and height , but the // mesh stores pixel coordinates, which range from 0 to size-1 in // each direction. The +0.5 is to avoid roundoff truncation. */ meshReset(this, other->x[other->nx * other->ny - 1] + 1.5, other->y[other->nx * other->ny - 1] + 1.5); } } /* NAME // meshDistance : // // // DESCTIPTION // computes distance of points with label != nolabel */ static inline double SQR(double A) { return (A)*(A); } double meshDistance(MeshT *this, const MeshT *other, int nolabel) { int xi, yi; double dist=0; if (!this || !other || meshCompatibilityCheck(this, other)) { fprintf(stderr,"Incompatible meshes!! 982749812\n"); return 0; } for(yi=0; yi < this->ny; yi++) { for(xi=0; xi < this->nx; xi++) { if ( this->label[yi * this->nx + xi] != nolabel && other->label[yi * this->nx + xi] != nolabel ) dist+= SQR(this->x[yi * this->nx + xi] - other->x[yi * other->nx + xi] )+ SQR(this->y[yi * this->nx + xi] - other->y[yi * other->nx + xi] ); } } return sqrt(dist); } /*****************************************************************************/ struct mesh_variance_s mesh_variance(MeshT *mesh, const int anylabel) { struct mesh_variance_s v; double x,y; int c=0,xi,yi; v.vx=0; v.vy=0; v.vxy=0; v.mx=0; v.my=0; for(xi=0; xi < mesh->nx ; xi++) { for(yi=0; yiny ; yi++) { if( anylabel || 0 == meshGetLabel(mesh,xi,yi)) { v.mx += (x=meshGetx(mesh, xi,yi)); v.my += (y=meshGety(mesh, xi,yi)); v.vx += x*x; v.vy += y*y; v.vxy += x*y; c++; } } } v.mx /= c; v.my /= c; v.vx /= c; v.vy /= c; v.vxy /= c; v.vx -= v.mx*v.mx; v.vy -= v.my*v.my; v.vxy -= v.mx*v.my; return v; } /* FIXME this is far from perfectly doing what advertised */ void mesh_normalize_variance___(MeshT *mesh,const int anykind, const struct mesh_variance_s bef, const struct mesh_variance_s aft ) { int xi,yi; double x,y, lx= sqrt(bef.vx/aft.vx), ly=sqrt(bef.vy/aft.vy); for(xi=0; xi < mesh->nx ; xi++) { for(yi=0; yiny ; yi++) { if( anykind || 0 == meshGetLabel(mesh,xi,yi)) { x=(meshGetx(mesh, xi,yi)-aft.mx) *lx + bef.mx ; y=(meshGety(mesh, xi,yi)-aft.my) *ly + bef.my; meshSetNoundo(mesh,xi,yi,x,y); } } } } #undef MAX #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #undef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #undef ABS #define ABS(a) (((a) < 0) ? -(a) : (a)) #include "assert.h" /* maximum eigenvalue */ static double __maxl__(const struct mesh_variance_s v) { /* (t-vx) (t-vy) -vxy vxy = tt - t(vx +vy)+ vx vy - vxy vxy */ double b= -v.vx-v.vy, c=v.vx*v.vy - v.vxy * v.vxy , d= b*b -4 *c, l0 = 0.5 * ( -b + sqrt(d)), l1= 0.5 * ( -b - sqrt(d)); assert(d>=0); return MIN(ABS(l1),ABS(l0)); } static inline double __deter__(const struct mesh_variance_s v) { return v.vx*v.vy - v.vxy * v.vxy; } void mesh_normalize_variance(MeshT *mesh,const int anykind, const struct mesh_variance_s bef, const struct mesh_variance_s aft ) { int xi,yi; double x,y, bef_l=__deter__(bef), aft_l= __deter__(aft), lx= sqrt(bef_l/aft_l), ly=lx; for(xi=0; xi < mesh->nx ; xi++) { for(yi=0; yiny ; yi++) { if( anykind || 0 == meshGetLabel(mesh,xi,yi)) { x=meshGetx(mesh, xi,yi) *lx -aft.mx *lx + aft.mx ; y=meshGety(mesh, xi,yi) *ly -aft.my *ly + aft.my; meshSetNoundo(mesh,xi,yi,x,y); } } } } xmorph-20140707+nmu2/libmorph/resample_snippet.h0000664000000000000000000000723712356304633016417 0ustar #ifdef FUN /* this code is not compiled as such, but rather included in other code */ /*TABLE HYPER PRECISION adds TYH bits of precision to table indexes without needing a table that big, and without overusing 'double' variables; does not add any visible difference, but has a small computational cost */ #if (SINC_TABLE_UNIT*KERNEL_WIDTH) < (1<<11) #define TYH 4 #define SINC_TABLE(I) sinc_table[ (I) >> TYH] #elif (SINC_TABLE_UNIT*KERNEL_WIDTH) < (1<<13) #define TYH 2 #define SINC_TABLE(I) sinc_table[ (I) >> TYH] #else #define TYH 0 #define SINC_TABLE(I) sinc_table[I] #endif #if defined(KERNEL_sinc_fast) && ( SINC_TABLE_UNIT < (PIXEL_MAX-PIXEL_MIN) ) #warning the kernel is based on the sinc(); the function sinc is replaced by a table; but the table is not precise enough for your type of pixels /* in this case you may want to interpolate in the table #define MASK ((1<> TYH] * ((I)&MASK) + \ sinc_table[ 1+( (I) >> TYH)]* ((1<= -indexbound) */ if(increment<1) { printf("%s:%s: precision underflow! there is a jump of %f pixels in the mesh; this is too big w.r.t. the size %d of the kernel\n", __FILE__,__FUNCTION__,dx, ((SINC_TABLE_UNIT << TYH))); increment=1; } { j++; index += increment; } #endif #ifndef KERNEL_sinc_fast /* this is the convolution with a generic kernel */ for ( ; j<=lastj ; j++ ) { s=KERNEL( ((double)j-x) / dx ); pj=j; if ( pj<0 ) pj=0; else if( pj>=s_len) pj=s_len-1; v+=s* (double)src[pj* s_stride]; c+=s; } #else /* this is how it is computed very fast for a kernel based on sinc, such as lanczos */ for ( ; index<=0 ; ) { s=SINC_TABLE(-index ); pj=j; if ( pj<0 ) pj=0; else if( pj>=s_len) pj=s_len-1; v+=s* (double)src[pj*s_stride]; c+=s; j++; index+=increment; } for ( ; index <= indexbound ; ) { s=SINC_TABLE(index); pj=j; if ( pj<0 ) pj=0; else if( pj>=s_len) pj=s_len-1; v+=s* (double)src[pj*s_stride]; c+=s; j++; index+=increment; } #endif if(c<0.0001 && c > -0.0001) fprintf(stderr,"%s:%s:%d: too small c=%f\n",__FILE__,__FUNCTION__,__LINE__,c); else v/=c; dst[p]=CLAMP(v,PIXEL_MIN,PIXEL_MAX); p+= d_stride; px=x; } } #endif xmorph-20140707+nmu2/libmorph/resample_lvalero,oberger.c0000664000000000000000000000643412356304633020014 0ustar /************************ extra stuff *************************************/ #ifdef ARTIFACTS /* A Mennucc: this routine that follows was provided by lvalero and oberger; it uses integers for every double variable, and directly accesses the sinc table; so it is very very fast; unfortunately if x and dx are integers, then warping is not precise to the subpixel , and there are visible artifacts I have rewritten resample_array_inv_conv (above) so that it directly accesses the sinc_table , and it uses integers, but so that it is precise to subpixel in my tests I could achieve these results old routine 9.55 sec new routine 3.50 sec lvalero,oberger 2.86 sec note that this routine needs the old style sinc table which is not provided any more */ #include "sinc_table.h" /* this test was provided by lvalero, oberger 05/05/2004 :*/ /*With one image 2048*2048 in 16 bits, Athlon 1.4Ghz + parhelia 128 Mo + 785 Mo RAM we have : for resample_array_inv_conv (optimised) 3s for resample_array_inv_bilin 2.5s for resample_array_inv_noaa_ 1.4s*/ //VERSION OPTIMISEE MODIF lvalero, oberger 05/05/2004 static void resample_array_inv_conv (const double *F, const PIXEL_TYPE *src, int s_len, int s_stride, PIXEL_TYPE *dst, int d_len, int d_stride) { int i, p = 0, j, lastj ; int x, nx, px, dx ; double c, s, v ; int firstj,index_stride,index,increment ; for( i = 0 ; i < d_len ; ++i ) { v=0; c=0; x=(int)F[i]; nx=(int)F[i+1]; px=(int)F[i-1]; //dx=ABS(nx-px)/2.; dx=ABS(nx-px) >> 1 ; if(dx<1) dx=1; //lastj=ceil(x+dx+dx); lastj = x+dx+dx ; // optimisation pour v+=s* (double)src[j*s_stride]; => on economise une multiplication // par defaut, g met floor pour passer en int, mais ce peut etre mauvais //firstj=floor(x-dx-dx); firstj = x-dx-dx; //index_stride = floor(firstj*s_stride) ; index_stride = firstj*s_stride ; // en deroulant la boucle avec j = x-dx-dx on a : // // (x-j)/dx = (x-x+dx+dx)/dx = (2*dx)/dx = 2 <- etape 0 // (x-(j+1))/dx = (x-(x+1)+dx+dx)/dx = 2-(1/dx) <- etape 1 // (x-(j+2))/dx = (x-(x+2)+dx+dx)/dx = 2-(2/dx) <- etape 2 // (x-(j+3))/dx = (x-(x+3)+dx+dx)/dx = 2-(3/dx) <- etape 3 // ... // (x-lastj)/dx = (x-x-dx-dx)/dx = -2 <- etape fin // // Donc on a pour l'etape n : // // ((2 - (n/dx)) + 4)*100 = (2+4)*100 - (n/dx)*100 // = (2+4)*100 - n*(1/dx)*100 // = (2+4)*100 - n*(100/dx) // avec le commentaire precedent, on s'apercoit que la premiere valeur est : //index = (2+4)*100 ; index = 600 ; // et l'increment devient : //increment = floor(100./dx) ;// correspond a (1/dx)*100, mais on racle une multiplication increment = 100/dx ; for ( j = firstj ; j <= lastj ; ++j ) { // avec cette optimisation il convient de changer le test : laisser les operations // comme elle sont ecrites, le compilo fera le calcul //if ( index < ((-2+4)*100) /*|| index > ((2+4)*100)*/ ) if ( index < (200) /*|| index > ((2+4)*100)*/ ) s = 0 ; else s=sinc_table [index]; if ( j>=0 && j -0.0001)) v /=c ; dst[p]=(PIXEL_TYPE)CLAMP(v,0,255); p+= d_stride; } } #endif xmorph-20140707+nmu2/libmorph/RgbaImage.h0000664000000000000000000001112412356304633014651 0ustar /* RgbaImage.h : image handling routines // Written and Copyright (C) 1994-1999 by Michael J. Gourlay This file is part of Xmorph. Xmorph 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. Xmorph 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 Xmorph; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* SWIG: Simplified Wrapper Interface Generator */ #ifdef SWIG %module RgbaImage %{ #include "RgbaImage.h" #include "mesh.h" %} #endif #ifndef _RGBA_IMAGE_H__INCLUDED_ #define _RGBA_IMAGE_H__INCLUDED_ /* BITS_PER_CHANNEL is the number of bits per channel per pixel that // an rgba_image uses to store image data. // This should be the same as the size of the storage class used for // rgba_image channels, i.e. unsigned char. */ #define BITS_PER_CHANNEL 8 /* RGBA_IMAGE_MAXVAL is the maximum value a channel can have for a // single pixel. */ #define RGBA_IMAGE_MAXVAL ((1< #include %addmethods RgbaImageT { RgbaImageT(void) { return rgbaImageNew(); } ~RgbaImageT(void) { rgbaImageDelete(self); } int alloc(int nx, int ny) { return rgbaImageAlloc(self, nx, ny); } void free() { rgbaImageFree(self); } int dissolve(const RgbaImageT *siP, const RgbaImageT *diP, float dissolve) { return rgbaImageDissolve(self, siP, diP, dissolve); } int read(const char *filename) { return rgbaImageRead(self, filename); } int write(const char *filename) { return rgbaImageWrite(filename, self, NULL, 0.0); } int reset(int type) { return rgbaImageTestCreate(self, type); } void toPhoto(char * photo_tag) { /* Convert photo tag into photo handle */ Tk_PhotoHandle photoH = Tk_FindPhoto(photo_tag); rgbaImageTkPhotoConvert(self, photoH); } int warp(const RgbaImageT *img_orig, const MeshT*mesh_src, const MeshT *mesh_dst, float tween_param) { return rgbaImageWarp(img_orig, self, mesh_src, mesh_dst, tween_param); } }; #endif void rgbaImageInit(RgbaImageT *self) ; RgbaImageT * rgbaImageNew(void) ; void rgbaImageDelete(RgbaImageT *self); void rgbaImageFree(RgbaImageT *self); int rgbaImageAlloc(RgbaImageT *self, const int nx, const int ny); int rgbaImageDissolve(RgbaImageT *self, const RgbaImageT *siP, const RgbaImageT *diP, float dissolve); int rgbaImageRead(RgbaImageT *self, const char *filename); int rgbaImageWrite(const char *filename, const RgbaImageT *siP, const RgbaImageT *diP, float dissolve); #ifdef NEED_GIMP #include int rgbaImageUnGIMP (RgbaImageT *self, GDrawable *d); int rgbaImageGIMP (GDrawable *d, const RgbaImageT *siP, const RgbaImageT *diP, float dissolve); #endif int rgbaImageTestCreate(RgbaImageT *self, int type); #ifdef RGBA_MESH_WARP #include "mesh.h" int rgbaImageWarp(const RgbaImageT *img_orig, RgbaImageT *img_warp, const MeshT *mesh_src, const MeshT *mesh_dst, float tween_param); #endif #ifdef RGBA_TK #include #include void rgbaImageTkPhotoConvert(RgbaImageT *self, Tk_PhotoHandle photoH); #endif #endif xmorph-20140707+nmu2/libmorph/spline.c0000664000000000000000000002465212356304633014332 0ustar /* spline.c: cubic spline interpolation // Spring 1993 // Written and Copyright (C) 1993-1999 by Michael J. Gourlay 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, or (at your option) any later version. This file 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 software; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include "spline.h" #include "my_malloc.h" /* --------------------------------------------------------------- */ #define MAX(a,b) ((a)>(b)?(a):(b)) #define MIN(a,b) ((a)<(b)?(a):(b)) #define ABS(a) ((a)>=0?(a):(-(a))) /* --------------------------------------------------------------- */ /* NAME // spline3_setup: set parameters for natural cubic spline // // ARGUMENTS // x (in): knot abcissas // y (in): knot ordinates // n (in): number of knots // c (out): spline parameters // h (out): intervals: h[i] = x[i+1] - x[i] */ void spline3_setup(const REAL *x, const REAL *y, long n, REAL *c, REAL *h) { REAL *u, *v; long i; /* only need u and v to index from 1 to n-1 */ u=MY_CALLOC(n, REAL); v=MY_CALLOC(n, REAL); for(i=0; i0; i--) { c[i]=(v[i]-h[i]*c[i+1])/u[i]; } FREE(u); FREE(v); } /* --------------------------------------------------------------- */ /* NAME // spline3_eval -- evaluate the natural cubic spline // // ARGUMENTS // w (in): argument abcissa: abcissa-value at which spline is evaluated // x (in): array of knot abcissa values, in increasing order // y (in): array of knot ordinate values // n (in): number of knots // c (in): array of parameters from spline3_setup // h (in): array of intervals between x's // s1 (out): spline first derivative // s2 (out): spline second derivative // // DESCRIPTION // Evaluate a spline interpolant at the given abcissa "w". // if s1==NULL then s1 is not evaluated // if s2==NULL then s2 is not evaluated // // RETURN VALUE // spline interpolant value at "w". */ REAL spline3_eval(REAL w, const REAL *x, const REAL *y, long n, const REAL *c, const REAL *h, REAL *s1, REAL *s2) { REAL diff=0.0; REAL b, d; long i; /* find interval of spline to evaluate */ for(i=n-1; (i>=0) && ((diff=(w-x[i]))<0.0); i--) ; /* calculate other spline parameters */ /* here a=y[i] so it is not explicitly named a */ b = (y[i+1]-y[i])/h[i] - h[i]/3.0*(2.0*c[i] + c[i+1]); d = (c[i+1]-c[i])/h[i]; /* evaluate derivatives of spline */ if(s1!=NULL) *s1 = b + diff*(2.0*c[i] + 3.0*d*diff); if(s2!=NULL) *s2 = 2.0*(c[i] + 3.0*d*diff); /* return spline value */ return (y[i] + diff*(b + diff*(c[i] + diff*d))); } /* --------------------------------------------------------------- */ /* NAME // d_parabola -- returns the derivative of a parabola fit through 3 points // // To find this formula: // A parabola is // y = a x^2 + b x + c. (eqn 1) // Write this for 3 points, (x0,y0) (x1,y1), (x2,y2): // y0 = a x0^2 + b x0 + c (eqn 2 i) // y1 = a x1^2 + b x1 + c (eqn 2 ii) // y2 = a x2^2 + b x2 + c (eqn 2 iii) // Solve this system for the constants a, b, c. // Substitute these a, b, c back into (eqn 1). Take the derivative of // (eqn 1). */ REAL d_parabola(REAL x, REAL xp0, REAL xp1, REAL xp2, REAL yp0, REAL yp1, REAL yp2) { REAL dP=( xp0*(yp1-yp2)*(2.0*x - xp0) + xp1*(yp2-yp0)*(2.0*x - xp1) + xp2*(yp0-yp1)*(2.0*x - xp2)) / ((xp0-xp1)*(xp0-xp2)*(xp2-xp1)); return dP; } /* --------------------------------------------------------------- */ /* NAME // hermite3_interp : cubic hermite interpolation // // // ARGUMENTS // w (in): evaluation abcissa // w should be in the range x[0] <= w <= x[n-1] // // x (in): abcissas at knots // abcissas should be ordered such that x[0] < x[1] < ... < x[n-1] // // y (in): ordinates at knots // // d (in/out): derivatives at knots // // n: (in): number of knots // // f: (in): derivative function (or NULL if not available) // // flags (in): bit field: // (flags&1): compute_deriv: // 0 => use d as input, 1 => compute d // NOTE: if compute_deriv == 1 and f == NULL then the // derivatives are estimated using a parabola fit. // (flags&2): periodic: // 0 => non-periodic domain, 1 => periodic domain // NOTE: for periodic domain, the abcissa of the // point outside of the explicitly provided domain // is estimated by using the distance between the // outer 2 points to find the distance to the next // point. // h1 (out): first derivative of spline, NULL=>ignore // // h2 (out): second derivative of spline, NULL=>ignore // // // DESCRIPTION // This interpolant is cubic (i.e. is a third order polynomial) fit // through two knots where the values of the function and the values of // the first derivative of the function are known at the knots. // (Stricly speaking, the values of the derivatives do not need to be // analytically known, since some estimate of the derivative can be // used.) // // // RETURN VALUE // Evaluation of interpolation // // // NOTES // The estimated derivatives can be pretty lousy. // // To derive this formula: // Call the interpolant H(x). Name the values // H(x_i) = y_i H'(x_i) = d_i // H(x_(i+1)) = y_(i+1) H'(x_(i+1)) = d_(i+1) // The interpolant has the form // H(x) = y_i + h_i d_i + h_i^2 A + h_i^2 B (x - x_(i+1)) // where // h_i = x_(i+1) - x_i // The derivative therefore has the form // H'(x) = d_i + 2 A h_i + B (2 h_i (x - x_(i+1)) + h_i^2) // Now substitute in the values at x_(i+1) into H and H', and set them // equal to y_(i+1) and d_(i+1) respectively to get A and B. // // The interpolant is a proper function, where x is the abcissa and // y is the ordinate. However, if data is provided such that // the interpolant is not a function such that each abcissa // has exactly one ordinate (i.e. where some subset of x values // overlap), then the interpolant will give incorrect results. // If this is the case then the data you are trying to interpolate // can not be represented by a proper function, so you will have // to parameterize the data with some third parameter variable // (usually refered to as t), and interpolate x and y with respect // to that third variable. */ REAL hermite3_interp(REAL w, const REAL *x, const REAL *y, REAL *d, long n, REAL (*f)(REAL), int flags, REAL *h1, REAL *h2) { double A, B; double h, h_2; double diff=0.0; double H; long si; int compute_deriv = (flags&1); int periodic = (flags&2); #if (VERBOSE >= 3) printf("hermite3_interp: at %12g\n", w); for(si=0; si < n; si++) { printf("hermite3_interp: [%4li] x = % 12g y = % 12g\n", si, x[si], y[si]); } #endif /* Find interval of spline to evaluate // I.e. find the index such that the evaluation abcissa, w, is to // the right of the abcissa associated with that index. Then, x is // between x[si] and x[si+1]. */ /* MJG 14jul95 -- do not start at si=n-1. See "h =" line below. // MJG 18jul94 -- was reading beyond bounds at last knot. (maybe) */ for(si=n-2; (si>=0) && ((diff=(w-x[si])) < 0.0); si--) ; /* We are sitting at a knot so no interpolation needed */ if(0.0 == diff) { #if (VERBOSE >= 3) printf("hermite3_interp: at knot %li\n", si); #endif return y[si]; } /* h is the interval between knots */ h = x[si+1] - x[si]; h_2 = h*h; #if (VERBOSE >= 3) printf("hermite3_interp: si = %li diff = %12g\n", si, diff); printf("hermite3_interp: h = %12g h^2 = %12g\n", h, h_2); #endif /* either the derivatives were provided or must be found */ if(compute_deriv) { /* must calculate derivatives */ if(f != NULL) { /* calculate the derivative */ d[si]=(*f)(x[si]); d[si+1]=(*f)(x[si+1]); } else { /* approximate derivative using parabola fit */ if(0 == si) { /* at first knot */ d[si+1] = d_parabola(x[si+1], x[si], x[si+1], x[si+2], y[si], y[si+1], y[si+2]); if(!periodic) { d[si] = d_parabola(x[si], x[si], x[si+1], x[si+2], y[si], y[si+1], y[si+2]); } else { /* periodic */ /* estimate left-end abcissa */ REAL xn = 2.0 * x[si] - x[si+1]; d[si] = d_parabola(x[si], xn, x[si], x[si+1], y[n-1], y[si], y[si+1]); } } else if(si >= (n-2)) { /* at last or 2nd to last knot */ d[si] = d_parabola(x[si], x[si-1], x[si], x[si+1], y[si-1], y[si], y[si+1]); if(!periodic) { d[si+1] = d_parabola(x[si+1], x[si-1], x[si], x[si+1], y[si-1], y[si], y[si+1]); } else { /* periodic */ /* estimate right-end abcissa */ REAL xn = 2.0 * x[si+1] - x[si]; d[si+1] = d_parabola(x[si+1], x[si], x[si+1], xn, y[si], y[si+1], y[0]); } } else { /* between first and 2nd to last knot */ d[si] = d_parabola(x[si], x[si-1], x[si], x[si+1], y[si-1], y[si], y[si+1]); d[si+1] = d_parabola(x[si+1], x[si], x[si+1], x[si+2], y[si], y[si+1], y[si+2]); } } } /* calculate interpolant parameters */ A = (y[si+1] - y[si] - h*d[si])/h_2; B = (d[si+1] - d[si] - 2.0*h*A)/h_2; /* evaluate spline derivatives */ if(h1!=NULL) *h1 = d[si] + diff*(2.0*A + B*(diff + 2.0*(w-x[si+1]))); if(h2!=NULL) *h2 = 2.0*A + 2.0*B*(2.0*diff + (w-x[si+1])); /* return the spline evaluation */ H = y[si] + diff*(d[si] + diff*(A + (w-x[si+1])*B)); return H; } xmorph-20140707+nmu2/libmorph/Makefile.am0000664000000000000000000000125712356304633014724 0ustar ## Process this file with automake to produce Makefile.in include ../Makefile.conf AM_CFLAGS = @CFLAGS@ $(CFLAGS_CONF) #noinst_LIBRARIES = libmorph.a #LIBTOOL support lib_LTLIBRARIES = libmorph.la libmorph_la_LDFLAGS = -version-info 1:0:0 pkginclude_HEADERS = mesh.h mesh_t.h mesh-getext.h RgbaImage.h my_malloc.h spl-array.h spline.h tga.h warp.h warp2.h relax.h resample.h warp-gtk.h libmorph_la_SOURCES = my_malloc.c warp.c \ mesh.c spline.c my_malloc.h tga.c tga.h \ RgbaImage.c spl-array.c warp2.c \ relax.c resample.c braindead_msvc.h sinc_256.h resample_snippet.h \ $(pkginclude_HEADERS) EXTRA_DIST = README.libmorph xmorph-20140707+nmu2/libmorph/mesh.h0000664000000000000000000002277412356304633014004 0ustar /* mesh.h -- mesh handling routines header // Written and Copyright (C) 1994-1999 by Michael J. Gourlay This file is part of Xmorph. Xmorph 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. Xmorph 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 Xmorph; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _MESH_H__INCLUDED_ #define _MESH_H__INCLUDED_ #include #include "braindead_msvc.h" #include "mesh_t.h" #define meshUnsaved(m) ((m)->changed >0) #define meshAllocated(m) ((m) && (m)->x && (m)->y && (m)->label ) /* MP_PICK_DIST: farthest you may be from a Mesh point to pick it */ #define MP_PICK_DIST 8 /* NAME // meshInit: initialize MeshT members // // DESCRIPTION // meshInit should be called immediately after a MeshT is // instantiated or defined.. */ inline static void meshInit(MeshT *this) { this->nx = this->ny = 0; this->x = this->y = NULL; this->label = NULL; this->changed=0; this->reference_counting=0; } /* the situation was messy: sometimes the values for the point coordinates were float, but the values in the arrays are double */ int meshAlloc(MeshT *this, int nx, int ny); MeshT * meshNew(const int nx, const int ny); static inline void meshFree(MeshT *this); void meshDelete(MeshT *this); void meshPrint(const MeshT *this); int meshCompatibilityCheck(const MeshT *this, const MeshT *other); void meshInterpolate(MeshT *moP, const MeshT *m1P, const MeshT *m2P, double tween_param); void meshReset(MeshT *this, const int img_width, const int img_height); void meshScale(MeshT *this, const int img_width, const int img_height) ; void meshScaleFreeformat(MeshT *this, const double scale_x , const double scale_y); int meshFunctionalize(MeshT *this, int img_width, int img_height); long int meshPointNearest(const MeshT *this, int px, int py, int *mi, int *mj, int *dx, int *dy); int meshPick(const MeshT *this, int mouse_x, int mouse_y, int component, double proximity); void meshSet(MeshT *this, int xi, int yi, double new_x, double new_y); static inline void meshSetNoundo(MeshT *this, int xi, int yi, double new_x, double new_y); void meshSetLabel(MeshT *this, int xi, int yi, MESHLABEL_T new_label); void meshCopy(MeshT *this, const MeshT *source) ; void meshBackupIndexSet(int backup_index) ; void meshBackupFree(void) ; void meshStore(const MeshT *this) ; void meshRetrieve(MeshT *this) ; int meshLineAdd(MeshT *this, const int mi, const double mt, const int type); int meshLineDelete(MeshT *this, int mi, int type); int meshLineMouseModify(MeshT *this, MeshT *other, int mouse_x, int mouse_y, char line_type, char action); int meshRead(MeshT *this, const char *filename); int meshRead_stream(MeshT *this, FILE *fP); int meshWrite(MeshT *this, char *filename); int meshWrite_stream(MeshT *this, FILE *fP); void meshMatch(MeshT *this, const MeshT *other); double meshDistance(MeshT *this, const MeshT *other, int nolabel); /***************************************************************************** * "get" functions for accessing points in meshes *****************************************************************************/ /* reflect the coordinate in the mesh to have it inside *(this must be a macro) */ #define _MESH_H____reflect_coord_mesh(N,X) { if((X)<0) (X)=-(X);\ (X) =(X) % (2*(N)-2);\ if((X)>=N) (X)=2*(N)-(X)-2; } /* controls if the coordinates in the mesh are inside */ #define _MESH_H__check_coord_mesh_np(THIS,XI,YI) ( \ ((XI) >= (THIS)->nx) || ((XI) < 0) || ((YI) >= (THIS)->ny) || ((YI) < 0)) #ifndef NDEBUG #ifdef g_warning #define _MESH_H__check_coord_mesh_return0(THIS,XI,YI) {\ if(_MESH_H__check_coord_mesh_np(THIS,XI,YI)) {\ g_warning("coord out of mesh, in %s at line %d\n",__FILE__,__LINE__);\ return 0;}} #else /* g_warning */ #define _MESH_H__check_coord_mesh_return0(THIS,XI,YI) {\ if(_MESH_H__check_coord_mesh_np(THIS,XI,YI)) {\ fprintf(stderr,"coords out of mesh, in %s at line %d\n",__FILE__,__LINE__);\ return 0;}} #endif /* g_warning */ #else /* NDEBUG */ #define _MESH_H__check_coord_mesh_return0(THIS,XI,YI) {} #endif /* NDEBUG */ #ifndef _MESH_H__CLAMP___ #define _MESH_H__CLAMP___(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) #endif /********* generic "get" calls ************/ /* inline functions... * when you would need a macro with local variables! */ #define meshGet__no_check(T,X,Y,P) ((P)[(Y) * (T)->nx + (X)]) static inline double /* __attribute__ weak */ meshGet(MeshT *this, int xi, int yi,double *p) { _MESH_H__check_coord_mesh_return0(this,xi,yi); return meshGet__no_check(this, xi, yi,p) ; } static inline double /* __attribute__ weak */ meshGetClamp(MeshT *this, int xi, int yi,double *p) { return meshGet__no_check(this, _MESH_H__CLAMP___(yi,0,this->ny-1), _MESH_H__CLAMP___(xi,0,this->nx-1), p); } static inline double /* __attribute__ weak */ meshGetRefl(MeshT *this, int xi, int yi,double *p) { _MESH_H____reflect_coord_mesh(this->nx,xi); _MESH_H____reflect_coord_mesh(this->ny,yi); return meshGet__no_check(this, xi, yi,p); } /********* "get" x and y calls ************/ static inline double /* __attribute__ weak */ meshGetx(MeshT *this, int xi, int yi) { return meshGet(this,xi,yi, this->x); } static inline double /* __attribute__ weak */ meshGety(MeshT *this, int xi, int yi) { return meshGet(this,xi,yi, this->y); } static inline double /* __attribute__ weak */ meshGetxClamp(MeshT *this, int xi, int yi) { return meshGetClamp(this,xi,yi, this->x); } static inline double /* __attribute__ weak */ meshGetyClamp(MeshT *this, int xi, int yi) { return meshGetClamp(this,xi,yi, this->y); } static inline double /* __attribute__ weak */ meshGetxRefl(MeshT *this, int xi, int yi) { return meshGetRefl(this,xi,yi, this->x); } static inline double /* __attribute__ weak */ meshGetyRefl(MeshT *this, int xi, int yi) { return meshGetRefl(this,xi,yi, this->y); } /*******************************************************************/ /** minimum and maximum values for x,y in the mesh to be inside the mesh **/ static inline double meshMinx(MeshT *mesh) { return meshGet__no_check(mesh,0,0,mesh->x); } static inline double meshMiny(MeshT *mesh) { return meshGet__no_check(mesh,0,0,mesh->y); } static inline double meshMaxx(MeshT *mesh) { return meshGet__no_check(mesh,mesh->nx-1,mesh->ny-1,mesh->x); } static inline double meshMaxy(MeshT *mesh) { return meshGet__no_check(mesh,mesh->nx-1,mesh->ny-1,mesh->y); } static inline MESHLABEL_T /* __attribute__ weak */ meshGetLabel(MeshT *this, int xi, int yi) { _MESH_H__check_coord_mesh_return0(this,xi,yi); return meshGet__no_check(this, xi,yi,this->label); } static inline void /* __attribute__ weak */ meshSetNoundo(MeshT *this, int xi, int yi, double new_x, double new_y) { #ifndef NDEBUG if(_MESH_H__check_coord_mesh_np(this,xi,yi)) { #ifdef g_warning g_warning("set coord out of mesh, in %s at line %d\n",__FILE__,__LINE__); #else fprintf(stderr,"\ set coord out of mesh, in %s at line %d\n",__FILE__,__LINE__); #endif } else #endif { this->x[yi * this->nx + xi] = new_x; this->y[yi * this->nx + xi] = new_y; this->changed ++; } } /* NAME // meshFree: free memory of internal arrays of a MeshT // THIS FUNCTION IS DEPRECATED: USE meshUnref // // ARGUMENTS // this: pointer to mesh // // // NOTES // The memory of the MeshT instance is not freed here. // // mennucci: since this is influenced by NDEBUG and the presence of glib, // I put it in mesh.h, so it is recompiled inside the applications using // libmorph */ void meshFreeReally(MeshT *this); static inline void meshFree(MeshT *this) { #ifndef NDEBUG_LIBMORPH_REF_COUNT #ifndef NDEBUG #ifdef g_warning g_warning("meshFree is not to be used in applications! use meshUnref\n"); #else /*g_warning*/ fprintf(stderr,"meshFree is not to be used in applications! use meshUnref\n"); #endif /*g_warning*/ if(this->reference_counting>0) { #ifdef g_warning g_warning("meshFree: mesh has positive reference counting!\n"); #else /*g_warning*/ fprintf(stderr,"meshFree: mesh has positive reference counting!\n"); #endif /*g_warning*/ #ifdef LIBMORPH_STRICTLY_CHECKS_REFERENCE_COUNTING abort(); #endif } #endif /* NDEBUG*/ #endif /* NDEBUG_LIBMORPH_REF_COUNT*/ meshFreeReally(this); } static inline void meshRef(MeshT *this) { this->reference_counting++; } static inline void meshUnref(MeshT *this) { this->reference_counting--; if(this->reference_counting==0) meshFreeReally(this); } #ifdef GIMP void set_src_mesh_name (char *fname); char *get_src_mesh_name (void); void set_dst_mesh_name (char *fname); char *get_dst_mesh_name (void); #endif struct mesh_variance_s { double vx; double vy;double vxy;double mx;double my;}; struct mesh_variance_s mesh_variance(MeshT *mesh, const int anylabel); void mesh_normalize_variance(MeshT *mesh,const int anylabel, const struct mesh_variance_s bef, const struct mesh_variance_s aft ); #endif /* _MESH_H__INCLUDED_ */ xmorph-20140707+nmu2/libmorph/sinc_1024.h0000664000000000000000000023775712356304633014463 0ustar /* # Created by Octave 2.1.35, Thu May 27 10:43:41 2004 CEST */ /* # name: a */ /* # type: matrix */ /* # rows: 1 */ /* # columns: 4097 */ /* [0,1] is divided in 1024 parts; sinc() is tableized on [0,4]*/ #define SINC_TABLE_UNIT 1024 const double sinc_table[SINC_TABLE_UNIT*4+1]= {1, 0.999998431269366, 0.999993725086325, 0.999985881477455, 0.99997490048705, 0.999960782177126, 0.999943526627415, 0.999923133935365, 0.999899604216142, 0.999872937602627, 0.999843134245415, 0.999810194312818, 0.999774117990856, 0.999734905483263, 0.999692557011483, 0.999647072814669, 0.999598453149679, 0.999546698291078, 0.999491808531133, 0.999433784179813, 0.999372625564787, 0.999308333031421, 0.999240906942773, 0.999170347679597, 0.999096655640336, 0.999019831241118, 0.998939874915757, 0.998856787115748, 0.998770568310265, 0.998681218986156, 0.998588739647942, 0.998493130817811, 0.998394393035618, 0.998292526858879, 0.998187532862766, 0.998079411640106, 0.997968163801375, 0.997853789974697, 0.997736290805834, 0.997615666958189, 0.997491919112793, 0.997365047968309, 0.997235054241022, 0.997101938664836, 0.996965701991267, 0.996826344989441, 0.996683868446088, 0.996538273165536, 0.996389559969702, 0.996237729698097, 0.996082783207807, 0.995924721373498, 0.995763545087404, 0.995599255259324, 0.995431852816613, 0.99526133870418, 0.995087713884477, 0.994910979337497, 0.994731136060763, 0.994548185069325, 0.99436212739575, 0.994172964090118, 0.993980696220014, 0.993785324870519, 0.993586851144206, 0.993385276161128, 0.993180601058817, 0.992972826992269, 0.992761955133942, 0.992547986673745, 0.992330922819032, 0.992110764794591, 0.99188751384264, 0.991661171222814, 0.991431738212159, 0.991199216105126, 0.990963606213557, 0.990724909866678, 0.990483128411092, 0.99023826321077, 0.989990315647039, 0.989739287118574, 0.989485179041389, 0.989227992848828, 0.988967729991555, 0.988704391937544, 0.988437980172067, 0.988168496197689, 0.987895941534253, 0.987620317718873, 0.987341626305923, 0.987059868867024, 0.986775046991037, 0.986487162284051, 0.986196216369372, 0.98590221088751, 0.985605147496174, 0.985305027870254, 0.985001853701814, 0.984695626700078, 0.984386348591423, 0.98407402111936, 0.98375864604453, 0.983440225144688, 0.983118760214691, 0.982794253066486, 0.982466705529102, 0.98213611944863, 0.981802496688219, 0.981465839128056, 0.981126148665359, 0.980783427214362, 0.980437676706299, 0.980088899089399, 0.979737096328866, 0.979382270406866, 0.979024423322519, 0.978663557091879, 0.978299673747928, 0.977932775340552, 0.97756286393654, 0.977189941619558, 0.976814010490142, 0.976435072665684, 0.976053130280415, 0.97566818548539, 0.975280240448478, 0.974889297354343, 0.974495358404433, 0.97409842581696, 0.973698501826893, 0.973295588685934, 0.97288968866251, 0.972480804041755, 0.972068937125493, 0.971654090232225, 0.971236265697115, 0.970815465871969, 0.970391693125224, 0.96996494984193, 0.969535238423734, 0.969102561288865, 0.968666920872117, 0.968228319624832, 0.967786760014884, 0.967342244526665, 0.966894775661064, 0.966444355935451, 0.965990987883666, 0.965534674055993, 0.965075417019149, 0.964613219356264, 0.964148083666867, 0.963680012566865, 0.963209008688525, 0.962735074680461, 0.962258213207611, 0.961778426951224, 0.961295718608837, 0.960810090894261, 0.960321546537559, 0.959830088285033, 0.959335718899201, 0.958838441158778, 0.958338257858663, 0.957835171809913, 0.957329185839731, 0.95682030279144, 0.956308525524472, 0.955793856914342, 0.95527629985263, 0.954755857246965, 0.954232532021004, 0.95370632711441, 0.953177245482834, 0.952645290097896, 0.952110463947164, 0.951572770034136, 0.951032211378215, 0.950488791014694, 0.949942511994734, 0.949393377385341, 0.948841390269351, 0.948286553745403, 0.947728870927921, 0.947168344947096, 0.94660497894886, 0.946038776094868, 0.945469739562477, 0.944897872544722, 0.944323178250298, 0.943745659903536, 0.943165320744382, 0.942582164028377, 0.941996193026632, 0.94140741102581, 0.9408158213281, 0.940221427251198, 0.939624232128283, 0.939024239307995, 0.938421452154413, 0.937815874047032, 0.937207508380742, 0.936596358565802, 0.935982428027821, 0.935365720207732, 0.934746238561769, 0.934123986561448, 0.933498967693537, 0.93287118546004, 0.932240643378168, 0.931607344980317, 0.930971293814047, 0.930332493442053, 0.929690947442146, 0.929046659407228, 0.928399632945265, 0.927749871679267, 0.92709737924726, 0.926442159302265, 0.925784215512272, 0.925123551560215, 0.924460171143947, 0.923794077976217, 0.923125275784645, 0.922453768311696, 0.921779559314653, 0.921102652565598, 0.92042305185138, 0.919740760973594, 0.919055783748554, 0.918368124007266, 0.917677785595408, 0.916984772373297, 0.916289088215866, 0.915590737012642, 0.914889722667714, 0.914186049099711, 0.913479720241772, 0.912770740041525, 0.912059112461055, 0.911344841476883, 0.910627931079934, 0.909908385275515, 0.909186208083284, 0.908461403537227, 0.907733975685628, 0.907003928591045, 0.90627126633028, 0.905535992994353, 0.904798112688475, 0.904057629532019, 0.903314547658495, 0.90256887121552, 0.901820604364793, 0.901069751282063, 0.900316316157106, 0.899560303193693, 0.898801716609564, 0.898040560636401, 0.897276839519795, 0.896510557519223, 0.895741718908018, 0.894970327973338, 0.894196389016141, 0.893419906351152, 0.89264088430684, 0.891859327225383, 0.891075239462644, 0.890288625388137, 0.889499489385005, 0.888707835849981, 0.887913669193369, 0.887116993839006, 0.886317814224239, 0.885516134799889, 0.884711960030229, 0.883905294392946, 0.883096142379118, 0.88228450849318, 0.881470397252895, 0.880653813189325, 0.879834760846798, 0.879013244782882, 0.878189269568351, 0.877362839787154, 0.876533960036388, 0.875702634926265, 0.874868869080083, 0.87403266713419, 0.873194033737962, 0.872352973553764, 0.871509491256922, 0.870663591535692, 0.869815279091229, 0.868964558637555, 0.868111434901528, 0.86725591262281, 0.866397996553837, 0.865537691459782, 0.864675002118533, 0.863809933320652, 0.862942489869346, 0.862072676580439, 0.861200498282333, 0.860325959815981, 0.859449066034854, 0.858569821804907, 0.857688232004546, 0.856804301524599, 0.855918035268281, 0.855029438151162, 0.854138515101133, 0.853245271058374, 0.852349710975324, 0.851451839816643, 0.850551662559182, 0.84964918419195, 0.848744409716079, 0.847837344144793, 0.846927992503372, 0.846016359829122, 0.845102451171337, 0.844186271591271, 0.8432678261621, 0.842347119968888, 0.841424158108558, 0.840498945689852, 0.8395714878333, 0.838641789671189, 0.837709856347523, 0.836775693017993, 0.835839304849939, 0.83490069702232, 0.833959874725679, 0.833016843162103, 0.832071607545196, 0.83112417310004, 0.83017454506316, 0.829222728682492, 0.828268729217346, 0.82731255193837, 0.826354202127519, 0.825393685078017, 0.824431006094321, 0.823466170492088, 0.82249918359814, 0.821530050750425, 0.820558777297987, 0.819585368600925, 0.818609830030362, 0.817632166968405, 0.816652384808115, 0.815670488953466, 0.814686484819308, 0.813700377831341, 0.812712173426065, 0.811721877050757, 0.810729494163423, 0.809735030232774, 0.808738490738177, 0.807739881169631, 0.806739207027721, 0.805736473823586, 0.804731687078882, 0.803724852325746, 0.802715975106757, 0.8017050609749, 0.800692115493534, 0.799677144236345, 0.798660152787321, 0.797641146740705, 0.796620131700964, 0.795597113282749, 0.794572097110859, 0.793545088820204, 0.792516094055767, 0.791485118472566, 0.790452167735619, 0.789417247519903, 0.78838036351032, 0.787341521401655, 0.786300726898545, 0.785257985715433, 0.784213303576537, 0.783166686215809, 0.782118139376898, 0.781067668813109, 0.780015280287371, 0.778960979572194, 0.777904772449632, 0.776846664711244, 0.775786662158059, 0.774724770600534, 0.773660995858516, 0.772595343761206, 0.771527820147119, 0.770458430864043, 0.769387181769006, 0.768314078728232, 0.767239127617103, 0.766162334320125, 0.765083704730881, 0.764003244752001, 0.762920960295116, 0.761836857280821, 0.760750941638639, 0.759663219306976, 0.758573696233089, 0.757482378373039, 0.756389271691657, 0.755294382162505, 0.754197715767832, 0.753099278498538, 0.751999076354134, 0.750897115342702, 0.749793401480856, 0.748687940793701, 0.747580739314795, 0.746471803086106, 0.745361138157977, 0.744248750589082, 0.743134646446389, 0.742018831805117, 0.740901312748699, 0.739782095368738, 0.738661185764971, 0.737538590045229, 0.73641431432539, 0.735288364729348, 0.734160747388967, 0.73303146844404, 0.731900534042252, 0.730767950339138, 0.729633723498042, 0.728497859690076, 0.727360365094082, 0.726221245896587, 0.725080508291768, 0.723938158481404, 0.722794202674842, 0.721648647088953, 0.720501497948091, 0.719352761484052, 0.718202443936035, 0.717050551550597, 0.715897090581617, 0.71474206729025, 0.71358548794489, 0.712427358821126, 0.711267686201702, 0.710106476376474, 0.708943735642371, 0.707779470303354, 0.706613686670371, 0.705446391061318, 0.704277589800999, 0.703107289221081, 0.701935495660055, 0.700762215463193, 0.699587454982507, 0.698411220576707, 0.69723351861116, 0.696054355457848, 0.694873737495324, 0.693691671108674, 0.692508162689471, 0.691323218635737, 0.690136845351899, 0.688949049248746, 0.687759836743388, 0.686569214259217, 0.685377188225859, 0.684183765079135, 0.682988951261021, 0.681792753219599, 0.680595177409025, 0.679396230289475, 0.678195918327113, 0.676994247994042, 0.675791225768264, 0.674586858133639, 0.673381151579838, 0.672174112602306, 0.670965747702215, 0.669756063386426, 0.668545066167442, 0.667332762563366, 0.666119159097861, 0.664904262300107, 0.663688078704755, 0.662470614851888, 0.661251877286975, 0.660031872560832, 0.658810607229574, 0.657588087854579, 0.656364321002438, 0.655139313244916, 0.653913071158911, 0.652685601326405, 0.651456910334427, 0.650227004775005, 0.648995891245128, 0.6477635763467, 0.646530066686494, 0.645295368876116, 0.644059489531956, 0.642822435275148, 0.641584212731523, 0.640344828531571, 0.639104289310395, 0.637862601707665, 0.636619772367581, 0.635375807938825, 0.634130715074516, 0.632884500432174, 0.63163717067367, 0.630388732465183, 0.629139192477162, 0.627888557384275, 0.626636833865371, 0.625384028603436, 0.624130148285545, 0.622875199602825, 0.621619189250407, 0.620362123927383, 0.619104010336764, 0.617844855185433, 0.616584665184108, 0.61532344704729, 0.614061207493226, 0.612797953243861, 0.611533691024797, 0.610268427565248, 0.609002169597997, 0.60773492385935, 0.606466697089098, 0.605197496030464, 0.603927327430068, 0.602656198037879, 0.601384114607171, 0.60011108389448, 0.598837112659561, 0.597562207665341, 0.59628637567788, 0.595009623466323, 0.593731957802857, 0.592453385462668, 0.591173913223897, 0.589893547867595, 0.58861229617768, 0.587330164940891, 0.586047160946749, 0.584763290987507, 0.583478561858109, 0.582192980356147, 0.580906553281814, 0.579619287437862, 0.578331189629558, 0.577042266664639, 0.575752525353269, 0.574461972507992, 0.573170614943694, 0.571878459477552, 0.570585512928995, 0.569291782119656, 0.567997273873331, 0.566701995015933, 0.56540595237545, 0.564109152781898, 0.562811603067278, 0.561513310065533, 0.560214280612503, 0.558914521545881, 0.557614039705167, 0.556312841931627, 0.555010935068248, 0.553708325959691, 0.552405021452251, 0.551101028393809, 0.549796353633792, 0.548491004023124, 0.547184986414186, 0.545878307660769, 0.544570974618032, 0.543262994142455, 0.541954373091799, 0.540645118325057, 0.539335236702415, 0.538024735085201, 0.536713620335848, 0.535401899317846, 0.534089578895698, 0.532776665934876, 0.531463167301777, 0.530149089863682, 0.528834440488703, 0.52751922604575, 0.526203453404478, 0.524887129435248, 0.52357026100908, 0.522252854997612, 0.52093491827305, 0.519616457708132, 0.518297480176077, 0.516977992550543, 0.515658001705584, 0.514337514515607, 0.513016537855323, 0.511695078599707, 0.510373143623953, 0.509050739803431, 0.507727874013639, 0.506404553130163, 0.505080784028631, 0.503756573584671, 0.502431928673864, 0.501106856171701, 0.499781362953539, 0.49845545589456, 0.497129141869721, 0.495802427753714, 0.494475320420923, 0.493147826745377, 0.491819953600707, 0.490491707860103, 0.489163096396269, 0.48783412608138, 0.486504803787037, 0.485175136384223, 0.483845130743262, 0.482514793733771, 0.481184132224619, 0.479853153083881, 0.478521863178796, 0.477190269375722, 0.475858378540095, 0.474526197536379, 0.473193733228029, 0.471860992477444, 0.470527982145922, 0.469194709093621, 0.467861180179508, 0.466527402261323, 0.46519338219553, 0.463859126837277, 0.462524643040347, 0.461189937657121, 0.459855017538531, 0.458519889534016, 0.457184560491479, 0.455849037257243, 0.45451332667601, 0.453177435590814, 0.45184137084298, 0.450505139272079, 0.449168747715885, 0.447832203010332, 0.446495511989472, 0.445158681485428, 0.443821718328353, 0.442484629346387, 0.441147421365612, 0.43981010121001, 0.438472675701421, 0.437135151659497, 0.43579753590166, 0.434459835243059, 0.433122056496526, 0.431784206472535, 0.430446291979157, 0.429108319822017, 0.427770296804251, 0.426432229726464, 0.425094125386686, 0.42375599058033, 0.422417832100147, 0.421079656736185, 0.419741471275747, 0.418403282503344, 0.417065097200656, 0.41572692214649, 0.414388764116733, 0.413050629884311, 0.411712526219149, 0.410374459888124, 0.409036437655027, 0.407698466280515, 0.406360552522073, 0.405022703133969, 0.403684924867213, 0.402347224469512, 0.401009608685231, 0.399672084255347, 0.39833465791741, 0.396997336405498, 0.395660126450176, 0.394323034778453, 0.392986068113739, 0.391649233175807, 0.390312536680744, 0.388975985340914, 0.387639585864915, 0.386303344957536, 0.384967269319715, 0.383631365648495, 0.382295640636988, 0.380960100974326, 0.379624753345624, 0.378289604431936, 0.376954660910214, 0.375619929453265, 0.37428541672971, 0.372951129403943, 0.371617074136089, 0.37028325758196, 0.368949686393017, 0.367616367216327, 0.36628330669452, 0.36495051146575, 0.363617988163652, 0.3622857434173, 0.360953783851167, 0.359622116085084, 0.358290746734199, 0.356959682408931, 0.355628929714936, 0.35429849525306, 0.352968385619303, 0.351638607404772, 0.350309167195645, 0.348980071573129, 0.347651327113417, 0.346322940387647, 0.344994917961865, 0.343667266396981, 0.342339992248728, 0.341013102067623, 0.339686602398925, 0.338360499782596, 0.337034800753259, 0.335709511840156, 0.334384639567112, 0.33306019045249, 0.331736171009154, 0.330412587744426, 0.329089447160047, 0.327766755752137, 0.326444520011154, 0.325122746421855, 0.323801441463255, 0.322480611608587, 0.321160263325261, 0.319840403074827, 0.318521037312933, 0.317202172489284, 0.315883815047604, 0.314565971425598, 0.313248648054907, 0.311931851361074, 0.310615587763502, 0.309299863675411, 0.307984685503807, 0.306670059649433, 0.305355992506736, 0.304042490463827, 0.302729559902438, 0.301417207197887, 0.300105438719035, 0.298794260828253, 0.297483679881373, 0.296173702227661, 0.294864334209768, 0.293555582163696, 0.292247452418758, 0.290939951297541, 0.289633085115863, 0.288326860182739, 0.28702128280034, 0.285716359263955, 0.28441209586195, 0.283108498875736, 0.281805574579724, 0.280503329241289, 0.279201769120731, 0.277900900471241, 0.276600729538857, 0.275301262562429, 0.27400250577358, 0.272704465396668, 0.27140714764875, 0.270110558739543, 0.268814704871382, 0.267519592239191, 0.266225227030437, 0.264931615425098, 0.263638763595621, 0.262346677706889, 0.26105536391618, 0.259764828373131, 0.258475077219701, 0.257186116590133, 0.255897952610918, 0.254610591400756, 0.253324039070522, 0.252038301723225, 0.250753385453974, 0.249469296349939, 0.248186040490318, 0.246903623946297, 0.245622052781012, 0.244341333049516, 0.243061470798741, 0.241782472067463, 0.24050434288626, 0.239227089277483, 0.237950717255215, 0.236675232825238, 0.235400641984993, 0.234126950723547, 0.232854165021556, 0.231582290851228, 0.230311334176289, 0.229041300951948, 0.227772197124857, 0.22650402863308, 0.225236801406053, 0.223970521364554, 0.222705194420662, 0.221440826477724, 0.220177423430321, 0.218914991164232, 0.217653535556396, 0.21639306247488, 0.215133577778845, 0.213875087318506, 0.212617596935103, 0.211361112460861, 0.210105639718959, 0.208851184523496, 0.207597752679449, 0.20634534998265, 0.205093982219741, 0.203843655168146, 0.202594374596033, 0.201346146262284, 0.200098975916457, 0.198852869298751, 0.197607832139978, 0.196363870161522, 0.19512098907531, 0.193879194583775, 0.192638492379827, 0.191398888146813, 0.190160387558486, 0.188922996278975, 0.187686719962747, 0.186451564254575, 0.185217534789505, 0.183984637192824, 0.182752877080024, 0.181522260056772, 0.180292791718875, 0.179064477652248, 0.177837323432881, 0.176611334626806, 0.175386516790065, 0.174162875468676, 0.172940416198603, 0.171719144505721, 0.170499065905785, 0.169280185904398, 0.168062509996977, 0.166846043668724, 0.165630792394591, 0.164416761639249, 0.163203956857058, 0.161992383492031, 0.160782046977808, 0.159572952737618, 0.158365106184254, 0.157158512720035, 0.155953177736781, 0.154749106615776, 0.153546304727741, 0.1523447774328, 0.151144530080453, 0.149945568009537, 0.148747896548207, 0.147551521013893, 0.146356446713277, 0.14516267894226, 0.143970222985932, 0.142779084118541, 0.141589267603463, 0.140400778693171, 0.139213622629205, 0.138027804642142, 0.136843329951568, 0.135660203766044, 0.134478431283079, 0.1332980176891, 0.132118968159421, 0.130941287858213, 0.129764981938479, 0.128590055542018, 0.127416513799399, 0.126244361829934, 0.125073604741643, 0.123904247631232, 0.122736295584056, 0.121569753674097, 0.120404626963932, 0.119240920504703, 0.118078639336094, 0.116917788486293, 0.115758372971974, 0.114600397798259, 0.113443867958698, 0.112288788435235, 0.111135164198182, 0.109983000206192, 0.108832301406228, 0.107683072733538, 0.106535319111626, 0.105389045452225, 0.104244256655268, 0.103100957608862, 0.101959153189259, 0.100818848260833, 0.0996800476760441, 0.0985427562754208, 0.0974069788875273, 0.0962727203289381, 0.0951399854042111, 0.0940087789058607, 0.0928791056143315, 0.0917509702979712, 0.0906243777130041, 0.089499332603505, 0.0883758397013731, 0.0872539037263048, 0.0861335293857684, 0.0850147213749782, 0.0838974843768678, 0.0827818230620645, 0.0816677420888638, 0.080555246103204, 0.0794443397386396, 0.0783350276163167, 0.0772273143449472, 0.0761212045207838, 0.0750167027275947, 0.0739138135366379, 0.0728125415066376, 0.0717128911837576, 0.0706148671015776, 0.0695184737810679, 0.0684237157305657, 0.0673305974457491, 0.0662391234096138, 0.0651492980924482, 0.0640611259518097, 0.0629746114324998, 0.0618897589665404, 0.0608065729731504, 0.0597250578587208, 0.0586452180167916, 0.0575670578280276, 0.056490581660196, 0.0554157938681414, 0.0543426987937633, 0.0532713007659928, 0.0522016041007692, 0.0511336131010169, 0.0500673320566223, 0.0490027652444116, 0.0479399169281272, 0.0468787913584051, 0.0458193927727527, 0.0447617253955263, 0.0437057934379083, 0.0426516010978848, 0.0415991525602245, 0.040548451996455, 0.0394995035648421, 0.0384523114103668, 0.037406879664705, 0.036363212446204, 0.0353213138598623, 0.0342811879973071, 0.033242838936774, 0.0322062707430845, 0.0311714874676255, 0.0301384931483282, 0.0291072918096468, 0.0280778874625376, 0.0270502841044385, 0.0260244857192482, 0.0250004962773053, 0.0239783197353682, 0.0229579600365941, 0.02193942111052, 0.0209227068730408, 0.0199078212263902, 0.0188947680591209, 0.0178835512460839, 0.0168741746484095, 0.015866642113487, 0.0148609574749456, 0.0138571245526345, 0.0128551471526039, 0.0118550290670852, 0.0108567740744729, 0.00986038593930398, 0.00886586841224001, 0.00787322523004837, 0.0068824601155827, 0.00589357677776481, 0.00490657891156587, 0.00392147019798846, 0.00293825430404743, 0.00195693488275221, 0.000977515573088335, 3.89804309105148e-17, -0.000975608225628573, -0.00194930550699091, -0.00292108826137522, -0.00389095292018302, -0.0048588959289461, -0.00582491374734418, -0.00678900284922165, -0.00775115972260569, -0.00871138086972269, -0.00966966280701562, -0.0106260020651603, -0.0115803951890832, -0.0125328387379773, -0.0134833292853186, -0.0144318634188835, -0.0153784377407642, -0.0163230488673855, -0.0172656934295205, -0.0182063680723072, -0.019145069455264, -0.0200817942523061, -0.02101653915176, -0.0219493008563808, -0.0228800760833665, -0.0238088615643736, -0.024735654045533, -0.0256604502874644, -0.0265832470652922, -0.0275040411686595, -0.028422829401744, -0.0293396085832721, -0.0302543755465339, -0.0311671271393973, -0.0320778602243232, -0.0329865716783793, -0.0338932583932542, -0.0347979172752721, -0.0357005452454064, -0.0366011392392938, -0.0374996962072478, -0.0383962131142729, -0.0392906869400777, -0.040183114679089, -0.0410734933404641, -0.0419618199481055, -0.042848091540673, -0.0437323051715968, -0.0446144579090911, -0.0454945468361665, -0.0463725690506428, -0.0472485216651613, -0.0481224018071979, -0.0489942066190753, -0.0498639332579751, -0.0507315788959498, -0.0515971407199358, -0.0524606159317644, -0.053322001748174, -0.0541812954008219, -0.055038494136296, -0.0558935952161265, -0.0567465959167964, -0.057597493529754, -0.0584462853614239, -0.059292968733217, -0.060137540981543, -0.0609799994578203, -0.0618203415284872, -0.0626585645750123, -0.0634946659939051, -0.0643286431967268, -0.0651604936101004, -0.0659902146757205, -0.0668178038503641, -0.0676432586059004, -0.0684665764293003, -0.0692877548226468, -0.0701067913031444, -0.0709236834031286, -0.0717384286700753, -0.0725510246666103, -0.0733614689705188, -0.0741697591747541, -0.0749758928874464, -0.0757798677319127, -0.0765816813466647, -0.0773813313854176, -0.0781788155170991, -0.0789741314258577, -0.079767276811071, -0.0805582493873535, -0.0813470468845657, -0.0821336670478215, -0.0829181076374964, -0.0837003664292345, -0.0844804412139577, -0.0852583297978722, -0.0860340300024757, -0.0868075396645661, -0.0875788566362475, -0.0883479787849381, -0.0891149039933766, -0.0898796301596298, -0.0906421551970991, -0.0914024770345271, -0.0921605936160042, -0.0929165029009756, -0.0936702028642471, -0.0944216914959913, -0.0951709668017544, -0.0959180268024617, -0.0966628695344239, -0.0974054930493422, -0.0981458954143151, -0.0988840747118433, -0.0996200290398352, -0.100353756511612, -0.101085255255915, -0.101814523416908, -0.102541559154182, -0.103266360642765, -0.103988926073122, -0.104709253651159, -0.105427341598233, -0.106143188151152, -0.106856791562181, -0.107568150099046, -0.108277262044937, -0.108984125698515, -0.109688739373913, -0.110391101400742, -0.111091210124093, -0.11178906390454, -0.112484661118149, -0.113178000156471, -0.113869079426558, -0.114557897350956, -0.115244452367712, -0.115928742930377, -0.116610767508009, -0.117290524585176, -0.117968012661956, -0.118643230253942, -0.119316175892246, -0.119986848123496, -0.120655245509842, -0.121321366628959, -0.121985210074046, -0.12264677445383, -0.123306058392566, -0.123963060530039, -0.124617779521568, -0.125270214038004, -0.125920362765732, -0.126568224406676, -0.127213797678294, -0.127857081313584, -0.12849807406108, -0.129136774684858, -0.129773181964535, -0.130407294695266, -0.131039111687749, -0.131668631768223, -0.132295853778469, -0.132920776575808, -0.133543399033105, -0.134163720038766, -0.134781738496738, -0.135397453326508, -0.136010863463105, -0.136621967857097, -0.137230765474593, -0.137837255297237, -0.138441436322215, -0.139043307562245, -0.139642868045584, -0.140240116816022, -0.14083505293288, -0.141427675471014, -0.142017983520807, -0.142605976188172, -0.143191652594545, -0.143775011876892, -0.144356053187697, -0.144934775694965, -0.145511178582221, -0.146085261048506, -0.146657022308371, -0.147226461591882, -0.14779357814461, -0.148358371227634, -0.148920840117534, -0.14948098410639, -0.150038802501779, -0.15059429462677, -0.151147459819924, -0.151698297435288, -0.15224680684239, -0.152792987426239, -0.153336838587322, -0.153878359741595, -0.154417550320481, -0.15495440977087, -0.15548893755511, -0.156021133151005, -0.156550996051808, -0.157078525766222, -0.157603721818389, -0.15812658374789, -0.158647111109737, -0.15916530347437, -0.159681160427652, -0.160194681570863, -0.160705866520694, -0.161214714909245, -0.161721226384014, -0.162225400607897, -0.162727237259181, -0.163226736031533, -0.163723896634003, -0.16421871879101, -0.16471120224234, -0.165201346743141, -0.165689152063911, -0.166174617990498, -0.166657744324089, -0.167138530881208, -0.167616977493702, -0.168093084008741, -0.16856685028881, -0.169038276211696, -0.169507361670489, -0.16997410657357, -0.170438510844605, -0.170900574422534, -0.171360297261572, -0.171817679331191, -0.172272720616119, -0.17272542111633, -0.173175780847036, -0.173623799838679, -0.174069478136923, -0.174512815802644, -0.174953812911925, -0.175392469556045, -0.175828785841468, -0.176262761889841, -0.176694397837979, -0.177123693837859, -0.177550650056608, -0.177975266676499, -0.178397543894938, -0.178817481924453, -0.17923508099269, -0.179650341342397, -0.180063263231421, -0.180473846932692, -0.180882092734218, -0.181288000939071, -0.181691571865379, -0.182092805846317, -0.182491703230094, -0.182888264379944, -0.183282489674116, -0.183674379505861, -0.184063934283426, -0.184451154430037, -0.184836040383892, -0.185218592598151, -0.185598811540921, -0.185976697695247, -0.186352251559102, -0.186725473645373, -0.18709636448185, -0.187464924611216, -0.187831154591033, -0.188195054993733, -0.188556626406601, -0.188915869431771, -0.189272784686204, -0.189627372801686, -0.189979634424806, -0.190329570216952, -0.19067718085429, -0.191022467027761, -0.191365429443059, -0.191706068820624, -0.192044385895628, -0.19238038141796, -0.192714056152214, -0.193045410877677, -0.193374446388314, -0.193701163492754, -0.19402556301428, -0.19434764579081, -0.194667412674888, -0.194984864533667, -0.195300002248898, -0.195612826716912, -0.19592333884861, -0.196231539569446, -0.196537429819414, -0.196841010553032, -0.197142282739329, -0.197441247361832, -0.197737905418545, -0.198032257921943, -0.198324305898949, -0.198614050390924, -0.198901492453649, -0.199186633157312, -0.199469473586492, -0.199750014840143, -0.200028258031578, -0.200304204288456, -0.200577854752762, -0.200849210580797, -0.201118272943154, -0.201385043024712, -0.201649522024612, -0.201911711156244, -0.202171611647229, -0.202429224739407, -0.202684551688813, -0.20293759376567, -0.203188352254363, -0.203436828453428, -0.203683023675534, -0.203926939247466, -0.204168576510105, -0.204407936818417, -0.20464502154143, -0.20487983206222, -0.205112369777892, -0.205342636099562, -0.205570632452343, -0.205796360275322, -0.206019821021548, -0.206241016158008, -0.206459947165614, -0.206676615539183, -0.206891022787417, -0.207103170432889, -0.207313060012022, -0.20752069307507, -0.207726071186099, -0.207929195922974, -0.208130068877332, -0.208328691654569, -0.208525065873818, -0.208719193167935, -0.208911075183471, -0.209100713580663, -0.209288110033407, -0.209473266229243, -0.209656183869333, -0.209836864668443, -0.210015310354924, -0.210191522670691, -0.210365503371202, -0.210537254225442, -0.210706777015898, -0.210874073538545, -0.211039145602819, -0.211201995031603, -0.211362623661203, -0.211521033341329, -0.211677225935072, -0.211831203318888, -0.211982967382574, -0.212132520029248, -0.212279863175328, -0.212424998750512, -0.212567928697755, -0.21270865497325, -0.212847179546406, -0.212983504399827, -0.21311763152929, -0.213249562943723, -0.213379300665186, -0.213506846728847, -0.213632203182962, -0.213755372088849, -0.213876355520874, -0.213995155566421, -0.214111774325874, -0.214226213912596, -0.214338476452904, -0.214448564086046, -0.214556478964184, -0.214662223252365, -0.214765799128502, -0.214867208783352, -0.21496645442049, -0.215063538256291, -0.215158462519901, -0.21525122945322, -0.215341841310875, -0.2154303003602, -0.215516608881209, -0.215600769166575, -0.215682783521609, -0.21576265426423, -0.215840383724949, -0.215915974246839, -0.215989428185516, -0.216060747909112, -0.216129935798254, -0.216196994246038, -0.216261925658005, -0.216324732452118, -0.216385417058737, -0.216443981920596, -0.216500429492776, -0.216554762242683, -0.216606982650025, -0.216657093206782, -0.216705096417187, -0.216750994797698, -0.216794790876974, -0.21683648719585, -0.216876086307314, -0.216913590776479, -0.216949003180558, -0.216982326108843, -0.217013562162674, -0.217042713955419, -0.217069784112443, -0.217094775271088, -0.217117690080644, -0.217138531202324, -0.21715730130924, -0.217174003086374, -0.217188639230556, -0.217201212450434, -0.217211725466452, -0.21722018101082, -0.217226581827493, -0.217230930672137, -0.217233230312111, -0.217233483526436, -0.217231693105768, -0.217227861852376, -0.217221992580109, -0.217214088114374, -0.21720415129211, -0.217192184961755, -0.217178191983227, -0.217162175227893, -0.217144137578539, -0.217124081929349, -0.217102011185875, -0.21707792826501, -0.217051836094958, -0.217023737615213, -0.216993635776524, -0.216961533540874, -0.216927433881448, -0.216891339782607, -0.216853254239861, -0.21681318025984, -0.216771120860267, -0.216727079069928, -0.216681057928649, -0.216633060487262, -0.216583089807579, -0.216531148962367, -0.216477241035314, -0.216421369121006, -0.216363536324895, -0.216303745763272, -0.216242000563239, -0.216178303862679, -0.216112658810229, -0.21604506856525, -0.215975536297797, -0.215904065188594, -0.215830658429001, -0.215755319220989, -0.215678050777106, -0.215598856320452, -0.215517739084649, -0.215434702313811, -0.215349749262515, -0.21526288319577, -0.215174107388991, -0.215083425127968, -0.214990839708834, -0.214896354438039, -0.214799972632318, -0.214701697618665, -0.214601532734295, -0.214499481326625, -0.214395546753234, -0.214289732381841, -0.214182041590269, -0.214072477766419, -0.213961044308238, -0.213847744623688, -0.213732582130717, -0.213615560257231, -0.213496682441058, -0.213375952129921, -0.213253372781409, -0.213128947862942, -0.213002680851745, -0.212874575234814, -0.212744634508886, -0.212612862180411, -0.212479261765516, -0.212343836789979, -0.212206590789194, -0.212067527308144, -0.211926649901366, -0.211783962132924, -0.211639467576372, -0.211493169814731, -0.211345072440447, -0.211195179055372, -0.211043493270721, -0.210890018707048, -0.210734758994214, -0.210577717771349, -0.21041889868683, -0.210258305398242, -0.210095941572347, -0.209931810885057, -0.209765917021398, -0.209598263675477, -0.209428854550457, -0.209257693358515, -0.209084783820817, -0.208910129667487, -0.208733734637568, -0.208555602478994, -0.208375736948562, -0.208194141811889, -0.208010820843391, -0.207825777826242, -0.207639016552348, -0.207450540822309, -0.207260354445391, -0.20706846123949, -0.206874865031101, -0.206679569655287, -0.206482578955643, -0.206283896784265, -0.206083527001715, -0.205881473476993, -0.205677740087499, -0.205472330719004, -0.205265249265613, -0.205056499629735, -0.204846085722049, -0.20463401146147, -0.204420280775119, -0.204204897598285, -0.203987865874395, -0.20376918955498, -0.20354887259964, -0.203326918976015, -0.203103332659745, -0.202878117634444, -0.202651277891658, -0.20242281743084, -0.202192740259312, -0.201961050392228, -0.201727751852548, -0.201492848670998, -0.20125634488604, -0.201018244543837, -0.200778551698216, -0.200537270410639, -0.200294404750166, -0.200049958793424, -0.199803936624569, -0.199556342335254, -0.199307180024595, -0.199056453799136, -0.198804167772818, -0.198550326066938, -0.198294932810122, -0.198037992138288, -0.197779508194608, -0.197519485129482, -0.197257927100493, -0.196994838272383, -0.19673022281701, -0.196464084913319, -0.196196428747305, -0.19592725851198, -0.195656578407335, -0.19538439264031, -0.195110705424756, -0.194835520981402, -0.194558843537819, -0.194280677328385, -0.194001026594253, -0.193719895583311, -0.193437288550153, -0.19315320975604, -0.192867663468866, -0.192580653963125, -0.192292185519871, -0.19200226242669, -0.191710888977659, -0.191418069473313, -0.19112380822061, -0.190828109532897, -0.190530977729872, -0.190232417137551, -0.189932432088231, -0.189631026920458, -0.189328205978986, -0.189023973614749, -0.188718334184817, -0.18841129205237, -0.188102851586655, -0.187793017162954, -0.187481793162547, -0.187169183972679, -0.186855193986521, -0.186539827603139, -0.186223089227452, -0.185904983270203, -0.185585514147918, -0.185264686282874, -0.184942504103062, -0.184618972042152, -0.184294094539453, -0.183967876039885, -0.183640320993937, -0.183311433857632, -0.182981219092495, -0.182649681165512, -0.182316824549096, -0.181982653721056, -0.18164717316455, -0.181310387368062, -0.180972300825355, -0.180632918035442, -0.180292243502547, -0.179950281736071, -0.179607037250553, -0.179262514565634, -0.178916718206026, -0.178569652701471, -0.178221322586704, -0.177871732401421, -0.17752088669024, -0.177168790002666, -0.176815446893054, -0.176460861920573, -0.176105039649171, -0.175747984647535, -0.17538970148906, -0.175030194751808, -0.174669469018474, -0.17430752887635, -0.173944378917288, -0.173580023737663, -0.173214467938336, -0.172847716124622, -0.172479772906246, -0.172110642897315, -0.171740330716276, -0.171368840985878, -0.170996178333144, -0.170622347389324, -0.170247352789867, -0.16987119917438, -0.16949389118659, -0.169115433474314, -0.168735830689415, -0.168355087487771, -0.167973208529235, -0.1675901984776, -0.167206062000562, -0.166820803769683, -0.166434428460356, -0.166046940751765, -0.165658345326853, -0.165268646872281, -0.164877850078394, -0.164485959639184, -0.16409298025225, -0.163698916618769, -0.16330377344345, -0.162907555434504, -0.162510267303604, -0.16211191376585, -0.161712499539732, -0.161312029347091, -0.160910507913087, -0.160507939966156, -0.160104330237978, -0.159699683463441, -0.159294004380598, -0.158887297730638, -0.158479568257842, -0.158070820709554, -0.157661059836136, -0.157250290390937, -0.156838517130254, -0.156425744813296, -0.156011978202146, -0.155597222061726, -0.155181481159758, -0.15476476026673, -0.154347064155855, -0.153928397603038, -0.15350876538684, -0.153088172288435, -0.152666623091581, -0.152244122582577, -0.15182067555023, -0.151396286785816, -0.150970961083046, -0.150544703238023, -0.150117518049214, -0.149689410317406, -0.149260384845672, -0.148830446439334, -0.148399599905927, -0.14796785005516, -0.147535201698882, -0.147101659651042, -0.146667228727655, -0.146231913746765, -0.145795719528404, -0.145358650894563, -0.144920712669146, -0.144481909677943, -0.144042246748583, -0.143601728710507, -0.143160360394923, -0.142718146634775, -0.142275092264703, -0.141831202121009, -0.141386481041617, -0.140940933866037, -0.140494565435333, -0.140047380592077, -0.139599384180323, -0.139150581045561, -0.138700976034686, -0.138250573995961, -0.137799379778975, -0.137347398234613, -0.136894634215018, -0.136441092573549, -0.13598677816475, -0.135531695844313, -0.135075850469039, -0.134619246896801, -0.13416188998651, -0.133703784598078, -0.133244935592379, -0.132785347831215, -0.132325026177276, -0.131863975494111, -0.131402200646081, -0.130939706498331, -0.130476497916749, -0.130012579767931, -0.129547956919144, -0.129082634238291, -0.128616616593872, -0.12814990885495, -0.127682515891113, -0.127214442572438, -0.126745693769455, -0.126276274353109, -0.125806189194727, -0.125335443165978, -0.124864041138839, -0.124391987985557, -0.123919288578615, -0.123445947790694, -0.122971970494635, -0.122497361563407, -0.122022125870069, -0.12154626828773, -0.121069793689521, -0.120592706948549, -0.120115012937868, -0.119636716530443, -0.119157822599106, -0.118678336016531, -0.118198261655189, -0.117717604387316, -0.117236369084876, -0.116754560619526, -0.116272183862578, -0.115789243684966, -0.115305744957206, -0.114821692549364, -0.114337091331016, -0.113851946171219, -0.113366261938465, -0.112880043500656, -0.112393295725058, -0.111906023478275, -0.111418231626203, -0.110929925034005, -0.110441108566067, -0.109951787085964, -0.109461965456429, -0.108971648539309, -0.108480841195539, -0.107989548285099, -0.107497774666981, -0.107005525199155, -0.106512804738529, -0.106019618140918, -0.105525970261009, -0.105031865952319, -0.104537310067169, -0.104042307456639, -0.10354686297054, -0.103050981457376, -0.102554667764307, -0.102057926737116, -0.101560763220175, -0.101063182056404, -0.100565188087243, -0.100066786152613, -0.0995679810908789, -0.0990687777388198, -0.0985691809315895, -0.0980691955026829, -0.0975688262839016, -0.097068078105318, -0.0965669557952404, -0.0960654641801789, -0.0955636080848096, -0.0950613923319401, -0.0945588217424747, -0.09405590113538, -0.0935526353276489, -0.0930490291342675, -0.092545087368179, -0.09204081484025, -0.0915362163592357, -0.0910312967317444, -0.0905260607622044, -0.0900205132528285, -0.0895146590035796, -0.0890085028121365, -0.0885020494738598, -0.0879953037817562, -0.0874882705264461, -0.0869809544961274, -0.0864733604765426, -0.0859654932509441, -0.0854573576000593, -0.0849489583020577, -0.0844403001325162, -0.0839313878643843, -0.0834222262679515, -0.0829128201108122, -0.0824031741578317, -0.0818932931711132, -0.0813831819099627, -0.0808728451308563, -0.0803622875874055, -0.0798515140303238, -0.0793405292073929, -0.0788293378634293, -0.0783179447402497, -0.0778063545766386, -0.0772945721083143, -0.0767826020678945, -0.0762704491848643, -0.0757581181855414, -0.0752456137930435, -0.0747329407272549, -0.0742201037047925, -0.0737071074389734, -0.0731939566397812, -0.0726806560138325, -0.0721672102643445, -0.0716536240911013, -0.0711399021904208, -0.0706260492551223, -0.0701120699744927, -0.0695979690342542, -0.0690837511165313, -0.0685694208998173, -0.0680549830589425, -0.067540442265041, -0.0670258031855174, -0.0665110704840153, -0.0659962488203839, -0.0654813428506451, -0.0649663572269623, -0.0644512965976063, -0.0639361656069241, -0.0634209688953062, -0.0629057110991536, -0.0623903968508463, -0.0618750307787111, -0.0613596175069883, -0.0608441616558012, -0.0603286678411228, -0.0598131406747438, -0.0592975847642412, -0.0587820047129463, -0.0582664051199118, -0.0577507905798815, -0.057235165683257, -0.0567195350160669, -0.0562039031599351, -0.0556882746920483, -0.0551726541851254, -0.0546570462073855, -0.054141455322516, -0.053625886089642, -0.0531103430632945, -0.0525948307933785, -0.052079353825143, -0.0515639166991481, -0.0510485239512354, -0.0505331801124961, -0.0500178897092395, -0.0495026572629629, -0.0489874872903202, -0.0484723843030906, -0.0479573528081482, -0.0474423973074314, -0.0469275222979114, -0.0464127322715622, -0.0458980317153292, -0.0453834251110996, -0.0448689169356712, -0.0443545116607216, -0.0438402137527786, -0.0433260276731896, -0.0428119578780903, -0.0422980088183761, -0.0417841849396707, -0.041270490682296, -0.0407569304812428, -0.0402435087661398, -0.0397302299612244, -0.0392170984853124, -0.0387041187517678, -0.0381912951684738, -0.0376786321378026, -0.0371661340565855, -0.0366538053160837, -0.0361416503019586, -0.0356296733942418, -0.0351178789673066, -0.0346062713898376, -0.034094855024802, -0.0335836342294206, -0.0330726133551372, -0.0325617967475912, -0.0320511887465874, -0.0315407936860669, -0.031030615894079, -0.0305206596927515, -0.0300109293982621, -0.0295014293208096, -0.0289921637645851, -0.0284831370277435, -0.027974353402375, -0.0274658171744757, -0.0269575326239203, -0.0264495040244332, -0.0259417356435597, -0.0254342317426381, -0.024926996576772, -0.0244200343948008, -0.023913349439273, -0.0234069459464169, -0.0229008281461139, -0.0223950002618697, -0.0218894665107863, -0.0213842311035351, -0.0208792982443286, -0.0203746721308922, -0.0198703569544381, -0.0193663568996364, -0.0188626761445879, -0.0183593188607976, -0.0178562892131459, -0.0173535913598627, -0.0168512294524996, -0.0163492076359023, -0.0158475300481844, -0.0153462008207002, -0.014845224078017, -0.0143446039378893, -0.0138443445112315, -0.0133444499020907, -0.0128449242076211, -0.0123457715180564, -0.0118469959166838, -0.0113486014798177, -0.0108505922767725, -0.0103529723698371, -0.00985574581424847, -0.00935891665816486, -0.00886248894264056, -0.00836646670159944, -0.00787085396180851, -0.00737565474285305, -0.00688087305710957, -0.00638651290972109, -0.00589257829857095, -0.00539907321425679, -0.00490600164006581, -0.0044133675519489, -0.0039211749184947, -0.00342942770090519, -0.00293812985296994, -0.00244728532104046, -0.00195689804400607, -0.00146697195326771, -0.000977510972713906, -0.000488519018695433, -3.89804309105148e-17, 0.000488042182171494, 0.000975603634230484, 0.00146268047022541, 0.00194926881186562, 0.00243536478854627, 0.00292096453737315, 0.00340606420318605, 0.00389065993858416, 0.00437474790394927, 0.00485832426747034, 0.005341385205168, 0.00582392690091762, 0.00630594554647368, 0.00678743734149404, 0.00726839849356281, 0.0077488252182145, 0.00822871373895801, 0.00870806028729922, 0.00918686110276553, 0.00966511243292831, 0.0101428105334266, 0.0106199516679908, 0.0110965321084649, 0.0115725481348301, 0.0120479960352281, 0.0125228721059835, 0.0129971726516265, 0.0134708939849169, 0.0139440324268649, 0.0144165843067556, 0.0148885459621703, 0.0153599137390094, 0.0158306839915151, 0.016300853082293, 0.0167704173823349, 0.017239373271041, 0.0177077171362416, 0.0181754453742194, 0.0186425543897314, 0.0191090405960304, 0.0195749004148878, 0.0200401302766138, 0.0205047266200802, 0.0209686858927417, 0.0214320045506569, 0.02189467905851, 0.0223567058896325, 0.0228180815260237, 0.0232788024583722, 0.0237388651860774, 0.0241982662172693, 0.0246570020688309, 0.025115069266418, 0.02557246434448, 0.0260291838462814, 0.0264852243239215, 0.026940582338355, 0.0273952544594132, 0.0278492372658235, 0.02830252734523, 0.0287551212942139, 0.0292070157183131, 0.0296582072320429, 0.0301086924589153, 0.0305584680314591, 0.0310075305912402, 0.0314558767888804, 0.0319035032840775, 0.0323504067456251, 0.0327965838514317, 0.0332420312885398, 0.0336867457531462, 0.0341307239506201, 0.034573962595523, 0.0350164584116272, 0.0354582081319351, 0.0358992084986984, 0.0363394562634361, 0.0367789481869538, 0.0372176810393623, 0.0376556516000961, 0.0380928566579313, 0.0385292930110055, 0.0389649574668342, 0.0393998468423306, 0.0398339579638227, 0.040267287667072, 0.0406998327972913, 0.0411315902091623, 0.0415625567668536, 0.0419927293440389, 0.0424221048239138, 0.0428506800992137, 0.043278452072232, 0.0437054176548359, 0.0441315737684854, 0.0445569173442492, 0.0449814453228227, 0.0454051546545448, 0.0458280422994145, 0.0462501052271081, 0.0466713404169963, 0.0470917448581603, 0.0475113155494088, 0.0479300494992945, 0.0483479437261303, 0.0487649952580062, 0.049181201132805, 0.0495965583982188, 0.0500110641117653, 0.0504247153408032, 0.0508375091625488, 0.0512494426640917, 0.0516605129424101, 0.0520707171043872, 0.0524800522668263, 0.0528885155564664, 0.0532961041099978, 0.0537028150740774, 0.0541086456053435, 0.0545135928704317, 0.0549176540459896, 0.0553208263186914, 0.0557231068852538, 0.05612449295245, 0.0565249817371242, 0.0569245704662076, 0.0573232563767314, 0.0577210367158419, 0.0581179087408155, 0.0585138697190717, 0.0589089169281887, 0.0593030476559163, 0.0596962592001906, 0.0600885488691481, 0.060479913981139, 0.0608703518647413, 0.0612598598587744, 0.0616484353123129, 0.0620360755846996, 0.0624227780455596, 0.062808540074813, 0.0631933590626887, 0.0635772324097369, 0.0639601575268428, 0.0643421318352394, 0.06472315276652, 0.0651032177626514, 0.0654823242759868, 0.0658604697692777, 0.066237651715687, 0.0666138675988017, 0.0669891149126443, 0.0673633911616861, 0.0677366938608586, 0.0681090205355659, 0.0684803687216971, 0.0688507359656375, 0.0692201198242806, 0.0695885178650405, 0.0699559276658626, 0.0703223468152355, 0.070687772912203, 0.0710522035663745, 0.0714156363979374, 0.0717780690376672, 0.0721394991269392, 0.0724999243177397, 0.0728593422726765, 0.0732177506649896, 0.0735751471785629, 0.0739315295079337, 0.0742868953583038, 0.0746412424455504, 0.0749945684962355, 0.0753468712476173, 0.0756981484476593, 0.0760483978550414, 0.0763976172391694, 0.076745804380185, 0.0770929570689756, 0.0774390731071847, 0.0777841503072204, 0.0781281864922658, 0.0784711794962887, 0.07881312716405, 0.0791540273511143, 0.0794938779238577, 0.079832676759478, 0.0801704217460038, 0.0805071107823025, 0.0808427417780899, 0.0811773126539387, 0.0815108213412876, 0.0818432657824489, 0.0821746439306184, 0.0825049537498824, 0.082834193215227, 0.083162360312546, 0.0834894530386487, 0.0838154694012687, 0.0841404074190711, 0.0844642651216605, 0.0847870405495895, 0.0851087317543653, 0.085429336798458, 0.085748853755308, 0.0860672807093331, 0.0863846157559363, 0.0867008570015125, 0.0870160025634559, 0.0873300505701672, 0.0876429991610603, 0.0879548464865691, 0.0882655907081547, 0.0885752299983115, 0.0888837625405743, 0.0891911865295245, 0.0894975001707966, 0.0898027016810846, 0.0901067892881478, 0.0904097612308176, 0.0907116157590032, 0.0910123511336974, 0.0913119656269826, 0.0916104575220368, 0.0919078251131388, 0.0922040667056742, 0.092499180616141, 0.0927931651721542, 0.0930860187124522, 0.0933777395869012, 0.0936683261565006, 0.0939577767933885, 0.0942460898808458, 0.0945332638133014, 0.0948192969963376, 0.0951041878466937, 0.0953879347922712, 0.0956705362721387, 0.0959519907365351, 0.0962322966468751, 0.096511452475753, 0.0967894567069464, 0.0970663078354211, 0.0973420043673342, 0.0976165448200384, 0.097889927722086, 0.0981621516132321, 0.0984332150444381, 0.0987031165778759, 0.0989718547869307, 0.0992394282562045, 0.0995058355815193, 0.0997710753699201, 0.100035146239678, 0.100298046820295, 0.100559775752501, 0.100820331688265, 0.101079713290791, 0.101337919234525, 0.101594948205152, 0.101850798899605, 0.102105470026065, 0.102358960303958, 0.102611268463967, 0.102862393248025, 0.103112333409321, 0.103361087712304, 0.10360865493268, 0.103855033857415, 0.10410022328474, 0.104344222024149, 0.1045870288964, 0.104828642733521, 0.105069062378805, 0.105308286686815, 0.105546314523386, 0.10578314476562, 0.106018776301895, 0.106253208031859, 0.106486438866437, 0.106718467727823, 0.10694929354949, 0.107178915276185, 0.107407331863928, 0.107634542280016, 0.107860545503024, 0.108085340522799, 0.108308926340466, 0.108531301968425, 0.108752466430351, 0.108972418761195, 0.109191158007182, 0.109408683225813, 0.109624993485858, 0.109840087867367, 0.110053965461655, 0.110266625371314, 0.110478066710204, 0.110688288603455, 0.110897290187465, 0.111105070609899, 0.111311629029689, 0.111516964617031, 0.111721076553384, 0.111923964031468, 0.112125626255263, 0.112326062440009, 0.1125252718122, 0.112723253609585, 0.112920007081167, 0.113115531487197, 0.113309826099175, 0.113502890199849, 0.113694723083207, 0.113885324054481, 0.114074692430141, 0.114262827537891, 0.114449728716672, 0.114635395316652, 0.114819826699228, 0.115003022237023, 0.115184981313879, 0.115365703324858, 0.115545187676238, 0.115723433785508, 0.115900441081365, 0.116076209003711, 0.116250737003651, 0.116424024543487, 0.116596071096714, 0.116766876148019, 0.116936439193273, 0.117104759739532, 0.117271837305028, 0.117437671419167, 0.117602261622526, 0.117765607466847, 0.117927708515032, 0.11808856434114, 0.118248174530381, 0.118406538679113, 0.118563656394835, 0.118719527296185, 0.118874151012931, 0.11902752718597, 0.11917965546732, 0.119330535520118, 0.11948016701861, 0.119628549648149, 0.11977568310519, 0.119921567097282, 0.120066201343062, 0.120209585572254, 0.120351719525657, 0.120492602955143, 0.120632235623652, 0.120770617305179, 0.120907747784777, 0.121043626858546, 0.121178254333624, 0.121311630028188, 0.12144375377144, 0.121574625403604, 0.121704244775921, 0.121832611750637, 0.121959726201002, 0.122085588011258, 0.122210197076637, 0.122333553303349, 0.122455656608578, 0.122576506920473, 0.122696104178142, 0.122814448331645, 0.122931539341984, 0.123047377181096, 0.123161961831848, 0.123275293288028, 0.123387371554333, 0.123498196646369, 0.123607768590635, 0.123716087424521, 0.123823153196295, 0.123928965965099, 0.124033525800938, 0.124136832784671, 0.124238887008005, 0.124339688573485, 0.124439237594486, 0.124537534195202, 0.124634578510639, 0.124730370686608, 0.124824910879711, 0.124918199257338, 0.125010235997651, 0.125101021289581, 0.125190555332815, 0.125278838337787, 0.12536587052567, 0.125451652128367, 0.125536183388496, 0.125619464559387, 0.125701495905068, 0.125782277700258, 0.125861810230353, 0.125940093791421, 0.126017128690187, 0.126092915244026, 0.126167453780952, 0.126240744639605, 0.126312788169247, 0.126383584729742, 0.126453134691556, 0.126521438435737, 0.126588496353911, 0.126654308848265, 0.126718876331543, 0.126782199227028, 0.126844277968537, 0.126905113000406, 0.12696470477748, 0.127023053765101, 0.127080160439097, 0.127136025285772, 0.127190648801891, 0.127244031494672, 0.127296173881772, 0.127347076491276, 0.127396739861685, 0.127445164541904, 0.127492351091231, 0.127538300079342, 0.127583012086281, 0.12762648770245, 0.127668727528591, 0.127709732175778, 0.127749502265404, 0.127788038429166, 0.127825341309056, 0.127861411557344, 0.127896249836569, 0.127929856819524, 0.127962233189245, 0.127993379638995, 0.128023296872254, 0.128051985602702, 0.128079446554211, 0.128105680460827, 0.12813068806676, 0.128154470126366, 0.128177027404141, 0.128198360674698, 0.128218470722761, 0.128237358343148, 0.128255024340757, 0.128271469530553, 0.128286694737552, 0.128300700796811, 0.12831348855341, 0.12832505886244, 0.128335412588987, 0.128344550608118, 0.128352473804869, 0.128359183074227, 0.128364679321119, 0.128368963460393, 0.128372036416808, 0.128373899125015, 0.128374552529544, 0.128373997584792, 0.128372235255002, 0.128369266514253, 0.128365092346441, 0.128359713745267, 0.128353131714222, 0.128345347266566, 0.128336361425321, 0.128326175223247, 0.128314789702835, 0.128302205916283, 0.128288424925487, 0.12827344780202, 0.128257275627122, 0.128239909491677, 0.128221350496202, 0.128201599750832, 0.128180658375298, 0.128158527498917, 0.128135208260571, 0.128110701808695, 0.128085009301257, 0.128058131905742, 0.128030070799138, 0.128000827167918, 0.127970402208022, 0.127938797124842, 0.127906013133204, 0.127872051457352, 0.127836913330931, 0.12780059999697, 0.127763112707865, 0.127724452725359, 0.12768462132053, 0.127643619773771, 0.127601449374773, 0.127558111422505, 0.127513607225201, 0.12746793810034, 0.127421105374629, 0.127373110383985, 0.127323954473516, 0.127273638997508, 0.127222165319399, 0.127169534811771, 0.127115748856324, 0.12706080884386, 0.127004716174267, 0.126947472256501, 0.126889078508564, 0.126829536357489, 0.126768847239321, 0.126707012599097, 0.126644033890829, 0.126579912577488, 0.126514650130978, 0.126448248032126, 0.126380707770656, 0.126312030845175, 0.126242218763154, 0.126171273040903, 0.126099195203563, 0.126025986785074, 0.125951649328168, 0.125876184384341, 0.125799593513838, 0.125721878285632, 0.125643040277408, 0.125563081075538, 0.125482002275067, 0.125399805479689, 0.12531649230173, 0.125232064362131, 0.125146523290419, 0.1250598707247, 0.124972108311627, 0.124883237706389, 0.124793260572687, 0.124702178582715, 0.124609993417138, 0.124516706765075, 0.124422320324079, 0.124326835800112, 0.12423025490753, 0.124132579369059, 0.124033810915779, 0.123933951287098, 0.123833002230734, 0.123730965502698, 0.123627842867266, 0.123523636096966, 0.12341834697255, 0.12331197728298, 0.123204528825403, 0.12309600340513, 0.122986402835618, 0.122875728938445, 0.122763983543293, 0.122651168487925, 0.122537285618162, 0.122422336787865, 0.122306323858913, 0.122189248701179, 0.122071113192512, 0.121951919218714, 0.121831668673518, 0.121710363458568, 0.121588005483397, 0.121464596665404, 0.121340138929832, 0.121214634209751, 0.121088084446029, 0.120960491587316, 0.120831857590019, 0.120702184418282, 0.120571474043961, 0.120439728446607, 0.120306949613437, 0.120173139539319, 0.120038300226744, 0.119902433685808, 0.119765541934187, 0.119627626997115, 0.119488690907364, 0.119348735705218, 0.119207763438452, 0.119065776162311, 0.118922775939485, 0.118778764840088, 0.118633744941635, 0.118487718329016, 0.118340687094482, 0.11819265333761, 0.11804361916529, 0.117893586691699, 0.117742558038276, 0.1175905353337, 0.117437520713869, 0.117283516321875, 0.11712852430798, 0.116972546829596, 0.116815586051258, 0.116657644144603, 0.116498723288347, 0.116338825668259, 0.11617795347714, 0.116016108914799, 0.11585329418803, 0.115689511510586, 0.115524763103159, 0.115359051193352, 0.115192378015661, 0.115024745811445, 0.114856156828908, 0.114686613323069, 0.114516117555746, 0.114344671795523, 0.114172278317735, 0.113998939404436, 0.113824657344382, 0.113649434433001, 0.113473272972373, 0.113296175271204, 0.113118143644801, 0.112939180415052, 0.112759287910395, 0.1125784684658, 0.112396724422741, 0.112214058129173, 0.112030471939505, 0.111845968214582, 0.111660549321652, 0.111474217634348, 0.11128697553266, 0.111098825402913, 0.110909769637737, 0.110719810636051, 0.11052895080303, 0.110337192550084, 0.110144538294834, 0.109950990461084, 0.109756551478799, 0.109561223784081, 0.109365009819137, 0.109167912032265, 0.108969932877818, 0.108771074816188, 0.108571340313774, 0.108370731842962, 0.108169251882095, 0.107966902915453, 0.107763687433223, 0.107559607931478, 0.107354666912147, 0.107148866882995, 0.106942210357592, 0.106734699855293, 0.106526337901207, 0.106317127026178, 0.106107069766753, 0.105896168665161, 0.105684426269286, 0.105471845132639, 0.105258427814337, 0.105044176879076, 0.1048290948971, 0.104613184444183, 0.104396448101598, 0.104178888456095, 0.10396050809987, 0.103741309630546, 0.10352129565114, 0.103300468770042, 0.103078831600987, 0.102856386763031, 0.102633136880522, 0.102409084583076, 0.10218423250555, 0.101958583288018, 0.10173213957574, 0.101504904019143, 0.101276879273788, 0.101048068000349, 0.100818472864582, 0.100588096537303, 0.100356941694359, 0.100125011016605, 0.0998923071898725, 0.0996588329049468, 0.0994245908575402, 0.099189583748265, 0.0989538142826076, 0.0987172851709008, 0.0984799991282991, 0.0982419588747508, 0.0980031671349721, 0.0977636266384204, 0.0975233401192677, 0.0972823103163739, 0.0970405399732603, 0.0967980318380831, 0.0965547886636063, 0.0963108132071755, 0.0960661082306906, 0.0958206765005795, 0.0955745207877714, 0.0953276438676696, 0.0950800485201248, 0.0948317375294089, 0.0945827136841869, 0.0943329797774912, 0.0940825386066941, 0.0938313929734811, 0.093579545683824, 0.0933269995479535, 0.0930737573803329, 0.0928198219996306, 0.0925651962286932, 0.0923098828945188, 0.0920538848282295, 0.0917972048650442, 0.0915398458442522, 0.0912818106091857, 0.0910231020071923, 0.0907637228896088, 0.0905036761117328, 0.0902429645327965, 0.0899815910159393, 0.0897195584281804, 0.0894568696403915, 0.08919352752727, 0.0889295349673109, 0.0886648948427805, 0.0883996100396886, 0.0881336834477612, 0.0878671179604134, 0.0875999164747214, 0.087332081891396, 0.087063617114755, 0.0867945250526953, 0.0865248086166662, 0.0862544707216416, 0.0859835142860925, 0.0857119422319598, 0.0854397574846268, 0.0851669629728918, 0.0848935616289403, 0.0846195563883178, 0.0843449501899022, 0.0840697459758765, 0.083793946691701, 0.0835175552860856, 0.0832405747109632, 0.0829630079214605, 0.082684857875872, 0.0824061275356317, 0.0821268198652856, 0.0818469378324643, 0.0815664844078546, 0.081285462565173, 0.0810038752811375, 0.08072172553544, 0.0804390163107184, 0.0801557505925298, 0.0798719313693214, 0.0795875616324043, 0.079302644375925, 0.0790171825968381, 0.0787311792948781, 0.0784446374725324, 0.0781575601350125, 0.0778699502902276, 0.0775818109487562, 0.0772931451238182, 0.0770039558312477, 0.0767142460894643, 0.0764240189194468, 0.076133277344704, 0.0758420243912481, 0.0755502630875661, 0.0752579964645926, 0.0749652275556813, 0.0746719593965782, 0.0743781950253932, 0.0740839374825723, 0.0737891898108702, 0.073493955055322, 0.0731982362632157, 0.0729020364840645, 0.0726053587695788, 0.0723082061736386, 0.0720105817522654, 0.0717124885635944, 0.0714139296678471, 0.0711149081273032, 0.0708154270062728, 0.0705154893710687, 0.0702150982899781, 0.0699142568332356, 0.0696129680729949, 0.0693112350833009, 0.0690090609400622, 0.0687064487210232, 0.0684034015057357, 0.0680999223755321, 0.0677960144134971, 0.0674916807044396, 0.0671869243348656, 0.0668817483929491, 0.0665761559685061, 0.0662701501529655, 0.0659637340393414, 0.0656569107222059, 0.0653496832976611, 0.0650420548633105, 0.0647340285182325, 0.0644256073629517, 0.0641167944994115, 0.0638075930309466, 0.063498006062254, 0.0631880366993667, 0.0628776880496255, 0.0625669632216506, 0.0622558653253145, 0.0619443974717145, 0.0616325627731435, 0.0613203643430643, 0.0610078052960804, 0.0606948887479088, 0.0603816178153524, 0.0600679956162717, 0.0597540252695578, 0.0594397098951044, 0.0591250526137801, 0.0588100565474007, 0.0584947248187016, 0.0581790605513099, 0.0578630668697172, 0.0575467468992516, 0.05723010376605, 0.0569131405970311, 0.0565958605198665, 0.0562782666629546, 0.0559603621553918, 0.0556421501269458, 0.0553236337080273, 0.0550048160296629, 0.0546857002234671, 0.0543662894216153, 0.0540465867568159, 0.0537265953622828, 0.0534063183717082, 0.0530857589192341, 0.0527649201394264, 0.052443805167246, 0.052122417138022, 0.0518007591874244, 0.0514788344514361, 0.0511566460663255, 0.0508341971686199, 0.0505114908950772, 0.0501885303826588, 0.0498653187685027, 0.0495418591898948, 0.0492181547842433, 0.0488942086890501, 0.0485700240418842, 0.0482456039803538, 0.0479209516420795, 0.0475960701646665, 0.047270962685678, 0.0469456323426077, 0.0466200822728522, 0.0462943156136846, 0.0459683355022259, 0.0456421450754196, 0.0453157474700033, 0.0449891458224822, 0.0446623432691012, 0.044335342945819, 0.0440081479882795, 0.0436807615317862, 0.0433531867112742, 0.0430254266612835, 0.0426974845159321, 0.0423693634088885, 0.0420410664733452, 0.0417125968419919, 0.041383957646988, 0.041055152019936, 0.0407261830918547, 0.0403970539931517, 0.0400677678535976, 0.0397383278022984, 0.0394087369676687, 0.0390789984774055, 0.0387491154584603, 0.0384190910370136, 0.0380889283384476, 0.0377586304873194, 0.0374282006073342, 0.0370976418213195, 0.036766957251197, 0.0364361500179573, 0.0361052232416329, 0.0357741800412711, 0.0354430235349085, 0.0351117568395432, 0.0347803830711093, 0.0344489053444501, 0.0341173267732916, 0.0337856504702161, 0.033453879546636, 0.0331220171127667, 0.032790066277601, 0.0324580301488829, 0.0321259118330805, 0.0317937144353606, 0.0314614410595612, 0.0311290948081669, 0.0307966787822816, 0.0304641960816025, 0.0301316498043942, 0.0297990430474626, 0.029466378906128, 0.0291336604742005, 0.0288008908439527, 0.0284680731060943, 0.0281352103497461, 0.0278023056624133, 0.0274693621299608, 0.0271363828365866, 0.0268033708647959, 0.0264703292953753, 0.0261372612073676, 0.0258041696780446, 0.0254710577828829, 0.0251379285955375, 0.0248047851878159, 0.0244716306296532, 0.0241384679890849, 0.0238053003322234, 0.0234721307232309, 0.0231389622242945, 0.0228057978956005, 0.022472640795309, 0.0221394939795282, 0.0218063605022894, 0.0214732434155216, 0.0211401457690256, 0.0208070706104497, 0.0204740209852628, 0.0201409999367311, 0.0198080105058915, 0.0194750557315268, 0.0191421386501407, 0.0188092622959329, 0.0184764297007729, 0.0181436438941763, 0.0178109079032794, 0.0174782247528135, 0.0171455974650813, 0.01681302905993, 0.0164805225547288, 0.0161480809643423, 0.0158157073011064, 0.0154834045748033, 0.0151511757926373, 0.0148190239592088, 0.0144869520764914, 0.0141549631438059, 0.0138230601577963, 0.0134912461124055, 0.0131595239988496, 0.012827896805595, 0.0124963675183328, 0.0121649391199551, 0.0118336145905301, 0.0115023969072782, 0.0111712890445472, 0.0108402939737885, 0.0105094146635328, 0.010178654079366, 0.00984801518390487, 0.00951750093677252, 0.00918711429457542, 0.00885685821087857, 0.00852673563618176, 0.00819674951789557, 0.00786690280031771, 0.00753719842460838, 0.00720763932876758, 0.00687822844761057, 0.00654896871274432, 0.006219863052544, 0.00589091439212857, 0.0055621256533383, 0.00523349975471038, 0.00490503961145567, 0.00457674813543513, 0.00424862823513656, 0.00392068281565049, 0.00359291477864786, 0.00326532702235603, 0.0029379224415356, 0.00261070392745741, 0.00228367436787857, 0.00195683664702044, 0.00163019364554473, 0.00130374824053069, 0.00097750330545201, 0.000651461710154066, 0.000325626320830215, 3.89804309105148e-17, -0.00032541439351427, -0.000650614004610521, -0.000975595981929099, -0.00130035747787644, -0.00162489564864656, -0.00194920765424445, -0.00227329065850847, -0.00259714182913288, -0.00292075833769014, -0.0032441373596541, -0.0035672760744213, -0.00389017166533406, -0.0042128213197026, -0.00453522222882708, -0.00485737158802065, -0.00517926659663041, -0.0055009044580603, -0.00582228237979302, -0.00614339757341203, -0.00646424725462336, -0.00678482864327824, -0.00710513896339395, -0.00742517544317632, -0.00774493531504139, -0.00806441581563692, -0.00838361418586488, -0.00870252767090191, -0.00902115352022172, -0.00933948898761643, -0.00965753133121805, -0.00997527781351976, -0.0102927257013981, -0.010609872266133, -0.0109267147834301, -0.0112432505334418, -0.011559476800788, -0.0118753908745782, -0.0121909900484314, -0.012506271620498, -0.0128212328934806, -0.0131358711746549, -0.0134501837758904, -0.0137641680136718, -0.0140778212091193, -0.0143911406880093, -0.0147041237807954, -0.015016767822629, -0.0153290701533799, -0.0156410281176567, -0.0159526390648271, -0.0162639003490389, -0.0165748093292398, -0.016885363369198, -0.017195559837523, -0.0175053961076846, -0.0178148695580341, -0.018123977571824, -0.0184327175372281, -0.0187410868473618, -0.0190490829003017, -0.0193567030991054, -0.0196639448518318, -0.0199708055715607, -0.0202772826764123, -0.0205833735895675, -0.0208890757392867, -0.0211943865589302, -0.0214993034869771, -0.0218038239670449, -0.0221079454479096, -0.022411665383524, -0.0227149812330375, -0.0230178904608157, -0.023320390536459, -0.0236224789348218, -0.0239241531360324, -0.024225410625511, -0.0245262488939889, -0.0248266654375281, -0.0251266577575389, -0.0254262233608006, -0.025725359759478, -0.0260240644711419, -0.0263223350187866, -0.0266201689308493, -0.0269175637412278, -0.0272145169893, -0.0275110262199412, -0.0278070889835431, -0.028102702836032, -0.0283978653388868, -0.0286925740591578, -0.0289868265694839, -0.0292806204481114, -0.0295739532789117, -0.0298668226513993, -0.0301592261607492, -0.0304511614078163, -0.0307426259991509, -0.0310336175470184, -0.0313241336694155, -0.0316141719900888, -0.031903730138552, -0.0321928057501032, -0.0324813964658423, -0.0327694999326887, -0.0330571138033984, -0.0333442357365809, -0.0336308633967174, -0.0339169944541764, -0.0342026265852322, -0.0344877574720809, -0.0347723848028577, -0.0350565062716542, -0.0353401195785345, -0.0356232224295521, -0.035905812536767, -0.0361878876182619, -0.036469445398159, -0.0367504836066368, -0.0370309999799456, -0.037310992260425, -0.0375904581965193, -0.0378693955427944, -0.0381478020599542, -0.0384256755148555, -0.0387030136805256, -0.0389798143361773, -0.0392560752672252, -0.0395317942653016, -0.0398069691282726, -0.0400815976602532, -0.0403556776716235, -0.0406292069790443, -0.0409021834054724, -0.0411746047801769, -0.0414464689387534, -0.0417177737231405, -0.0419885169816345, -0.042258696568905, -0.0425283103460099, -0.0427973561804108, -0.0430658319459878, -0.0433337355230545, -0.0436010647983732, -0.0438678176651693, -0.0441339920231473, -0.0443995857785039, -0.0446645968439438, -0.0449290231386941, -0.0451928625885188, -0.0454561131257331, -0.0457187726892186, -0.0459808392244367, -0.0462423106834433, -0.0465031850249032, -0.046763460214104, -0.0470231342229709, -0.0472822050300796, -0.0475406706206712, -0.0477985289866657, -0.0480557781266761, -0.0483124160460218, -0.048568440756743, -0.0488238502776137, -0.0490786426341554, -0.049332815858651, -0.0495863679901577, -0.0498392970745213, -0.0500916011643883, -0.0503432783192202, -0.050594326605306, -0.050844744095776, -0.0510945288706139, -0.0513436790166713, -0.0515921926276788, -0.0518400678042604, -0.0520873026539453, -0.0523338952911811, -0.0525798438373468, -0.0528251464207644, -0.0530698011767123, -0.0533138062474374, -0.0535571597821676, -0.0537998599371239, -0.0540419048755334, -0.0542832927676405, -0.0545240217907195, -0.054764090129087, -0.0550034959741129, -0.0552422375242339, -0.0554803129849636, -0.0557177205689056, -0.0559544584957644, -0.0561905249923578, -0.0564259182926277, -0.0566606366376525, -0.0568946782756575, -0.0571280414620272, -0.0573607244593162, -0.0575927255372603, -0.0578240429727885, -0.0580546750500329, -0.0582846200603405, -0.0585138763022841, -0.0587424420816731, -0.0589703157115643, -0.059197495512273, -0.0594239798113832, -0.0596497669437585, -0.0598748552515526, -0.0600992430842198, -0.0603229287985258, -0.0605459107585573, -0.0607681873357329, -0.060989756908813, -0.0612106178639103, -0.0614307685944992, -0.0616502075014269, -0.0618689329929222, -0.062086943484606, -0.062304237399501, -0.0625208131680413, -0.0627366692280826, -0.0629518040249109, -0.0631662160112528, -0.0633799036472843, -0.0635928654006408, -0.0638050997464262, -0.064016605167222, -0.0642273801530967, -0.0644374232016146, -0.0646467328178451, -0.0648553075143716, -0.0650631458113005, -0.0652702462362698, -0.065476607324458, -0.0656822276185927, -0.0658871056689594, -0.0660912400334097, -0.0662946292773706, -0.0664972719738516, -0.066699166703454, -0.0669003120543792, -0.067100706622436, -0.0673003490110501, -0.0674992378312709, -0.06769737170178, -0.0678947492488991, -0.0680913691065981, -0.0682872299165021, -0.0684823303279003, -0.0686766689977523, -0.0688702445906968, -0.0690630557790581, -0.0692551012428543, -0.0694463796698044, -0.0696368897553356, -0.0698266302025901, -0.070015599722433, -0.0702037970334585, -0.0703912208619978, -0.0705778699421253, -0.0707637430156658, -0.0709488388322012, -0.0711331561490771, -0.0713166937314098, -0.0714994503520923, -0.0716814247918015, -0.0718626158390039, -0.0720430222899626, -0.0722226429487429, -0.0724014766272193, -0.0725795221450811, -0.0727567783298385, -0.0729332440168289, -0.0731089180492225, -0.0732837992780283, -0.0734578865621, -0.0736311787681416, -0.0738036747707129, -0.0739753734522353, -0.0741462737029972, -0.0743163744211595, -0.074485674512761, -0.0746541728917233, -0.0748218684798565, -0.0749887602068642, -0.0751548470103484, -0.0753201278358147, -0.0754846016366771, -0.0756482673742631, -0.075811124017818, -0.0759731705445102, -0.0761344059394353, -0.0762948291956212, -0.0764544393140322, -0.0766132353035737, -0.0767712161810961, -0.0769283809713998, -0.0770847287072386, -0.077240258429325, -0.0773949691863327, -0.077548860034902, -0.077701930039643, -0.0778541782731395, -0.0780056038159533, -0.0781562057566272, -0.0783059831916892, -0.0784549352256556, -0.078603060971035, -0.0787503595483313, -0.0788968300860476, -0.0790424717206887, -0.0791872835967649, -0.0793312648667951, -0.0794744146913095, -0.0796167322388534, -0.079758216685989, -0.0798988672172992, -0.0800386830253899, -0.0801776633108929, -0.0803158072824685, -0.0804531141568081, -0.0805895831586366, -0.0807252135207151, -0.0808600044838427, -0.0809939552968595, -0.0811270652166484, -0.0812593335081372, -0.0813907594443008, -0.0815213423061632, -0.0816510813827996, -0.0817799759713378, -0.0819080253769605, -0.0820352289129067, -0.0821615859004733, -0.0822870956690171, -0.0824117575559557, -0.0825355709067695, -0.0826585350750027, -0.0827806494222647, -0.0829019133182313, -0.0830223261406459, -0.0831418872753205, -0.083260596116137, -0.0833784520650475, -0.0834954545320758, -0.083611602935318, -0.0837268967009429, -0.0838413352631932, -0.0839549180643857, -0.0840676445549119, -0.0841795141932385, -0.0842905264459078, -0.0844006807875377, -0.0845099767008224, -0.0846184136765322, -0.0847259912135137, -0.0848327088186899, -0.0849385660070599, -0.0850435623016991, -0.0851476972337588, -0.085250970342466, -0.0853533811751228, -0.0854549292871067, -0.0855556142418692, -0.0856554356109361, -0.0857543929739062, -0.0858524859184511, -0.0859497140403141, -0.0860460769433096, -0.0861415742393222, -0.0862362055483056, -0.0863299704982815, -0.0864228687253389, -0.0865148998736322, -0.0866060635953809, -0.0866963595508674, -0.0867857874084361, -0.086874346844492, -0.0869620375434986, -0.087048859197977, -0.0871348115085041, -0.0872198941837103, -0.0873041069402783, -0.0873874495029411, -0.0874699216044798, -0.0875515229857219, -0.0876322533955391, -0.0877121125908451, -0.0877911003365933, -0.0878692164057748, -0.0879464605794158, -0.0880228326465752, -0.0880983324043423, -0.0881729596578337, -0.0882467142201915, -0.0883195959125798, -0.0883916045641824, -0.0884627400121998, -0.0885330021018464, -0.0886023906863472, -0.0886709056269352, -0.088738546792848, -0.0888053140613247, -0.0888712073176026, -0.0889362264549138, -0.0890003713744823, -0.0890636419855197, -0.0891260382052224, -0.0891875599587677, -0.0892482071793102, -0.089307979807978, -0.0893668777938691, -0.089424901094047, -0.0894820496735378, -0.089538323505325, -0.0895937225703461, -0.0896482468574886, -0.0897018963635854, -0.0897546710934105, -0.0898065710596751, -0.0898575962830229, -0.0899077467920256, -0.0899570226231783, -0.0900054238208953, -0.0900529504375048, -0.0900996025332449, -0.0901453801762581, -0.0901902834425867, -0.0902343124161681, -0.0902774671888293, -0.0903197478602824, -0.090361154538119, -0.0904016873378049, -0.0904413463826756, -0.09048013180393, -0.0905180437406255, -0.0905550823396727, -0.0905912477558293, -0.090626540151695, -0.0906609596977056, -0.0906945065721272, -0.0907271809610508, -0.0907589830583857, -0.0907899130658544, -0.090819971192986, -0.0908491576571104, -0.090877472683352, -0.0909049165046238, -0.0909314893616208, -0.090957191502814, -0.0909820231844437, -0.0910059846705131, -0.0910290762327822, -0.0910512981507606, -0.0910726507117012, -0.0910931342105935, -0.0911127489501566, -0.0911314952408327, -0.0911493734007799, -0.0911663837558652, -0.0911825266396579, -0.0911978023934219, -0.0912122113661089, -0.0912257539143513, -0.0912384304024544, -0.0912502412023896, -0.0912611866937867, -0.0912712672639264, -0.0912804833077329, -0.0912888352277662, -0.0912963234342142, -0.0913029483448857, -0.0913087103852017, -0.0913136099881881, -0.0913176475944676, -0.0913208236522518, -0.091323138617333, -0.0913245929530763, -0.0913251871304113, -0.0913249216278238, -0.0913237969313477, -0.0913218135345563, -0.0913189719385544, -0.0913152726519694, -0.0913107161909428, -0.0913053030791217, -0.0912990338476502, -0.0912919090351606, -0.0912839291877643, -0.0912750948590435, -0.091265406610042, -0.0912548650092561, -0.0912434706326259, -0.0912312240635258, -0.0912181258927556, -0.0912041767185316, -0.0911893771464763, -0.0911737277896103, -0.0911572292683421, -0.0911398822104587, -0.0911216872511166, -0.0911026450328316, -0.0910827562054695, -0.0910620214262363, -0.0910404413596686, -0.0910180166776235, -0.0909947480592689, -0.0909706361910737, -0.0909456817667973, -0.0909198854874803, -0.0908932480614337, -0.0908657702042291, -0.0908374526386883, -0.0908082960948732, -0.0907783013100752, -0.0907474690288049, -0.090715800002782, -0.090683294990924, -0.0906499547593363, -0.0906157800813012, -0.0905807717372673, -0.0905449305148391, -0.0905082572087653, -0.090470752620929, -0.0904324175603358, -0.0903932528431037, -0.0903532592924513, -0.0903124377386872, -0.0902707890191986, -0.0902283139784402, -0.090185013467923, -0.0901408883462025, -0.0900959394788682, -0.0900501677385312, -0.0900035740048135, -0.0899561591643359, -0.0899079241107066, -0.0898588697445097, -0.0898089969732932, -0.0897583067115575, -0.089706799880743, -0.0896544774092193, -0.089601340232272, -0.0895473892920916, -0.0894926255377612, -0.0894370499252443, -0.0893806634173727, -0.0893234669838341, -0.0892654616011604, -0.0892066482527148, -0.0891470279286797, -0.089086601626044, -0.0890253703485911, -0.088963335106886, -0.0889004969182626, -0.0888368568068117, -0.0887724158033674, -0.0887071749454951, -0.0886411352774783, -0.0885742978503059, -0.0885066637216593, -0.0884382339558993, -0.0883690096240531, -0.0882989918038016, -0.0882281815794658, -0.0881565800419939, -0.088084188288948, -0.0880110074244907, -0.0879370385593721, -0.0878622828109163, -0.0877867413030076, -0.0877104151660778, -0.0876333055370918, -0.0875554135595346, -0.0874767403833976, -0.0873972871651645, -0.0873170550677983, -0.0872360452607269, -0.0871542589198293, -0.0870716972274223, -0.0869883613722457, -0.0869042525494493, -0.0868193719605779, -0.086733720813558, -0.086647300322683, -0.0865601117085996, -0.0864721561982933, -0.0863834350250742, -0.0862939494285625, -0.0862037006546743, -0.0861126899556072, -0.0860209185898256, -0.0859283878220466, -0.085835098923225, -0.0857410531705389, -0.085646251847375, -0.0855506962433138, -0.0854543876541151, -0.0853573273817029, -0.0852595167341507, -0.0851609570256666, -0.0850616495765783, -0.0849615957133181, -0.0848607967684081, -0.0847592540804446, -0.0846569689940836, -0.0845539428600249, -0.0844501770349976, -0.0843456728817445, -0.0842404317690067, -0.0841344550715083, -0.0840277441699411, -0.0839203004509491, -0.0838121253071129, -0.0837032201369342, -0.0835935863448205, -0.0834832253410691, -0.0833721385418512, -0.0832603273691972, -0.0831477932509797, -0.0830345376208986, -0.0829205619184649, -0.0828058675889845, -0.0826904560835429, -0.0825743288589889, -0.0824574873779185, -0.0823399331086589, -0.0822216675252525, -0.0821026921074404, -0.0819830083406469, -0.0818626177159624, -0.0817415217301277, -0.0816197218855179, -0.0814972196901249, -0.0813740166575425, -0.0812501143069487, -0.0811255141630901, -0.0810002177562647, -0.0808742266223059, -0.0807475423025655, -0.0806201663438971, -0.0804921002986396, -0.0803633457246003, -0.0802339041850384, -0.0801037772486475, -0.0799729664895395, -0.0798414734872276, -0.079709299826609, -0.079576447097948, -0.0794429168968595, -0.0793087108242912, -0.079173830486507, -0.0790382774950699, -0.0789020534668245, -0.0787651600238802, -0.0786275987935935, -0.0784893714085512, -0.0783504795065528, -0.0782109247305932, -0.0780707087288452, -0.0779298331546424, -0.0777882996664613, -0.0776461099279041, -0.0775032656076812, -0.0773597683795934, -0.0772156199225144, -0.0770708219203729, -0.0769253760621356, -0.0767792840417886, -0.0766325475583205, -0.0764851683157038, -0.0763371480228778, -0.0761884883937299, -0.0760391911470786, -0.075889258006655, -0.0757386907010851, -0.0755874909638717, -0.0754356605333759, -0.0752832011528001, -0.0751301145701689, -0.0749764025383114, -0.0748220668148429, -0.074667109162147, -0.0745115313473567, -0.0743553351423367, -0.0741985223236651, -0.0740410946726147, -0.073883053975135, -0.0737244020218331, -0.0735651406079564, -0.073405271533373, -0.0732447966025541, -0.0730837176245548, -0.0729220364129959, -0.0727597547860451, -0.0725968745663985, -0.072433397581262, -0.0722693256623325, -0.0721046606457792, -0.0719394043722247, -0.0717735586867265, -0.071607125438758, -0.0714401064821898, -0.0712725036752707, -0.071104318880609, -0.0709355539651528, -0.0707662108001724, -0.0705962912612401, -0.0704257972282118, -0.0702547305852078, -0.0700830932205936, -0.069910887026961, -0.0697381139011088, -0.0695647757440239, -0.0693908744608616, -0.0692164119609271, -0.0690413901576554, -0.0688658109685929, -0.0686896763153776, -0.0685129881237197, -0.0683357483233826, -0.0681579588481631, -0.0679796216358724, -0.0678007386283166, -0.0676213117712769, -0.0674413430144906, -0.0672608343116311, -0.0670797876202887, -0.0668982049019509, -0.066716088121983, -0.0665334392496083, -0.0663502602578885, -0.0661665531237038, -0.0659823198277339, -0.0657975623544375, -0.0656122826920333, -0.0654264828324794, -0.0652401647714545, -0.065053330508337, -0.0648659820461862, -0.0646781213917219, -0.0644897505553045, -0.0643008715509154, -0.0641114863961368, -0.0639215971121318, -0.0637312057236246, -0.0635403142588805, -0.0633489247496858, -0.0631570392313276, -0.0629646597425739, -0.0627717883256538, -0.062578427026237, -0.0623845778934139, -0.0621902429796755, -0.0619954243408929, -0.0618001240362975, -0.0616043441284607, -0.0614080866832737, -0.0612113537699272, -0.0610141474608912, -0.0608164698318944, -0.0606183229619046, -0.0604197089331078, -0.060220629830888, -0.0600210877438072, -0.0598210847635841, -0.0596206229850749, -0.0594197045062521, -0.0592183314281844, -0.059016505855016, -0.0588142298939467, -0.0586115056552104, -0.0584083352520555, -0.0582047208007244, -0.0580006644204324, -0.0577961682333473, -0.0575912343645695, -0.0573858649421101, -0.0571800620968719, -0.0569738279626275, -0.0567671646759993, -0.0565600743764389, -0.0563525592062058, -0.0561446213103476, -0.0559362628366789, -0.0557274859357604, -0.0555182927608784, -0.0553086854680244, -0.0550986662158734, -0.0548882371657642, -0.0546774004816781, -0.054466158330218, -0.0542545128805882, -0.0540424663045725, -0.0538300207765147, -0.0536171784732967, -0.0534039415743183, -0.0531903122614759, -0.0529762927191421, -0.0527618851341439, -0.052547091695743, -0.0523319145956142, -0.0521163560278243, -0.0519004181888119, -0.0516841032773653, -0.051467413494603, -0.0512503510439514, -0.0510329181311247, -0.0508151169641035, -0.0505969497531138, -0.0503784187106062, -0.0501595260512345, -0.0499402739918353, -0.0497206647514064, -0.049500700551086, -0.0492803836141314, -0.0490597161658982, -0.0488387004338191, -0.0486173386473831, -0.0483956330381138, -0.048173585839549, -0.0479511992872187, -0.047728475618625, -0.0475054170732203, -0.0472820258923866, -0.0470583043194138, -0.046834254599479, -0.0466098789796251, -0.0463851797087401, -0.0461601590375353, -0.0459348192185245, -0.0457091625060028, -0.0454831911560251, -0.0452569074263854, -0.0450303135765954, -0.0448034118678631, -0.044576204563072, -0.0443486939267592, -0.0441208822250951, -0.0438927717258613, -0.04366436469843, -0.0434356634137427, -0.0432066701442885, -0.0429773871640832, -0.0427478167486482, -0.042517961174989, -0.0422878227215739, -0.0420574036683133, -0.0418267062965375, -0.0415957328889761, -0.0413644857297369, -0.0411329671042841, -0.0409011792994173, -0.0406691246032504, -0.0404368053051897, -0.0402042236959134, -0.0399713820673501, -0.0397382827126572, -0.0395049279262, -0.03927132000353, -0.0390374612413642, -0.0388033539375635, -0.0385690003911113, -0.0383344029020924, -0.038099563771672, -0.0378644853020735, -0.0376291697965583, -0.0373936195594041, -0.0371578368958833, -0.0369218241122424, -0.0366855835156798, -0.0364491174143256, -0.0362124281172195, -0.03597551793429, -0.035738389176333, -0.0355010441549903, -0.0352634851827286, -0.0350257145728184, -0.0347877346393122, -0.034549547697024, -0.0343111560615074, -0.0340725620490343, -0.0338337679765743, -0.0335947761617731, -0.0333555889229312, -0.0331162085789827, -0.0328766374494741, -0.0326368778545429, -0.0323969321148969, -0.0321568025517925, -0.0319164914870136, -0.0316760012428506, -0.0314353341420785, -0.031194492507937, -0.0309534786641079, -0.030712294934695, -0.0304709436442022, -0.0302294271175131, -0.0299877476798685, -0.0297459076568469, -0.0295039093743423, -0.029261755158543, -0.0290194473359115, -0.0287769882331616, -0.0285343801772393, -0.0282916254953001, -0.0280487265146888, -0.0278056855629179, -0.0275625049676471, -0.0273191870566611, -0.0270757341578499, -0.0268321485991869, -0.026588432708708, -0.0263445888144908, -0.0261006192446329, -0.0258565263272316, -0.0256123123903627, -0.0253679797620593, -0.0251235307702909, -0.0248789677429426, -0.0246342930077934, -0.0243895088924964, -0.0241446177245567, -0.0238996218313115, -0.0236545235399083, -0.0234093251772841, -0.0231640290701452, -0.0229186375449455, -0.022673152927866, -0.0224275775447938, -0.0221819137213014, -0.0219361637826254, -0.0216903300536463, -0.0214444148588673, -0.0211984205223934, -0.0209523493679111, -0.0207062037186667, -0.0204599858974465, -0.0202136982265555, -0.0199673430277969, -0.0197209226224509, -0.019474439331255, -0.0192278954743816, -0.0189812933714193, -0.0187346353413508, -0.0184879237025328, -0.0182411607726753, -0.0179943488688207, -0.0177474903073236, -0.0175005874038301, -0.0172536424732569, -0.0170066578297711, -0.0167596357867697, -0.0165125786568583, -0.0162654887518318, -0.0160183683826528, -0.0157712198594318, -0.0155240454914067, -0.0152768475869215, -0.015029628453407, -0.01478239039736, -0.0145351357243226, -0.0142878667388619, -0.0140405857445501, -0.0137932950439433, -0.0135459969385623, -0.0132986937288711, -0.0130513877142578, -0.0128040811930132, -0.0125567764623112, -0.0123094758181885, -0.0120621815555243, -0.0118148959680202, -0.0115676213481798, -0.011320359987289, -0.011073114175395, -0.0108258862012872, -0.0105786783524767, -0.0103314929151758, -0.0100843321742789, -0.00983719841334123, -0.00959009391455991, -0.00934302095875353, -0.00909598182534215, -0.00884897879232744, -0.00860201413627285, -0.00835509013228319, -0.00810820905398552, -0.00786137317350882, -0.00761458476146423, -0.0073678460869254, -0.00712115941740812, -0.00687452701885143, -0.00662795115559727, -0.00638143409037093, -0.00613497808426132, -0.00588858539670148, -0.00564225828544832, -0.00539599900656386, -0.00514980981439506, -0.00490369296155439, -0.00465765069890039, -0.00441168527551758, -0.00416579893869785, -0.00391999393392034, -0.00367427250483216, -0.00342863689322897, -0.00318308933903571, -0.00293763208028661, -0.00269226735310677, -0.00244699739169217, -0.00220182442829058, -0.00195675069318238, -0.00171177841466077, -0.00146690981901337, -0.0012221471305025, -0.00097749257134609, -0.000732948361698573, -0.000488516719631906, -0.000244199861115905, -3.89804309105148e-17}; xmorph-20140707+nmu2/libmorph/tga.c0000664000000000000000000005235512356304633013614 0ustar /* tga.c: Targa TrueVision image file handling routines // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // Provided as is. No warrantees, express or implied. */ #include #include #include #include "my_malloc.h" #include "tga.h" /* Global Targa colormap */ static unsigned char tga_cmap_r[16384]; static unsigned char tga_cmap_g[16384]; static unsigned char tga_cmap_b[16384]; static unsigned char tga_cmap_a[16384]; RgbaImageT tga_cmap = { 0, 0, 0, 0, 0, 0, tga_cmap_r, tga_cmap_g, tga_cmap_b, tga_cmap_a, }; #define CURR_ROW(irow) ((tgaP->origin_bit)?(irow):(imgP->nrows-(irow)-1)) #define ROW_INC \ { \ row_count++; \ if(tgaP->interleave==TGA_IL_Four) { ilace_row += 4 ; } \ else if(tgaP->interleave==TGA_IL_Two) { ilace_row += 2 ; } \ else { ilace_row ++ ; } \ if(ilace_row > imgP->nrows) ilace_row = ++ top_row; \ c_row = CURR_ROW(ilace_row); \ } /* get_byte : get from fio a byte */ #define GET_BYTE(byte, fio) \ {\ int rv;\ (byte)=(unsigned char)(rv=getc(fio));\ if(rv==EOF) {\ fprintf(stderr, "get_byte: EOF/read error\n");\ return EOF ;\ }\ } /* NAME // put_le_word : put into fio a 2-byte little-endian unsigned integer */ int put_le_word(short le_int, FILE *fio) { unsigned char b1, b2; b1 = le_int & 0xff; b2 = (le_int >> 8) & 0xff; /* least significant byte comes first */ if(putc(b1, fio)==EOF) return EOF ; /* most significant byte comes last */ if(putc(b2, fio)==EOF) return EOF ; return 0 ; } /* NAME // get_le_word : get from fio a 2-byte little-endian unsigned integer */ long get_le_word(FILE * fio) { unsigned char b1, b2; /* least significant byte comes first */ GET_BYTE(b1, fio); /* most significant byte comes last */ GET_BYTE(b2, fio); return (b1 + b2*256); } /* NAME // get_block : get from fio an block of n bytes, and store it in buf // // // RETURN VALUES // return EOF if there is a read error, or 0 otherwise // // // NOTES // get_block is nothing but fread with error reporting. // Calls to get_block should probably just be replaced // with fread. */ short get_block(FILE * fio, char *buf, long n) { int rv; if(feof(fio)) return EOF ; rv=fread(buf, 1, (size_t)n, fio); if(rv!=n) { if(rv) { fprintf(stderr, "get_block: EOF/read error reading byte %i/%li\n", rv, n); } return EOF ; } return 0 ; } /* NAME // tgaPixelRead: read a Targa pixel from fio into imgP // // // ARGUMENTS // npixels: the number of literal pixels to read. // size: the size of the pixel in the file, in bits. // mapped: tells whether bits are gray, coded RGB, or cmap index. // // // NOTES // This code is optimized for speed, not readability or compactness // so the redundancy is intentional. */ static int tgaPixelRead(FILE *fio, RgbaImageT *imgP, int npixels, int size, int mapped) { int pcount; switch(size) { case 8: if(get_block(fio, (char*)imgP->ri, npixels)) { fprintf(stderr, "tgaPixelRead: read error\n"); return -1 ; } if(mapped) { for(pcount=0; pcount < npixels; pcount++) { /* cmap indices are stored in ri, so do lookups with r last */ imgP->bi[pcount] = tga_cmap.bi[imgP->ri[pcount]]; imgP->gi[pcount] = tga_cmap.gi[imgP->ri[pcount]]; imgP->ri[pcount] = tga_cmap.ri[imgP->ri[pcount]]; } } else { memcpy(imgP->gi, imgP->ri, npixels); memcpy(imgP->bi, imgP->ri, npixels); } memset(imgP->ai, RGBA_IMAGE_OPAQUE, npixels); break; case 16: case 15: { int ip, jp; int pixel; for(pcount=0; pcount < npixels; pcount++) { GET_BYTE(ip, fio); GET_BYTE(jp, fio); if(mapped) { pixel = ((unsigned int) jp << 8) + ip; imgP->ri[pcount] = tga_cmap.ri[pixel]; imgP->gi[pcount] = tga_cmap.gi[pixel]; imgP->bi[pcount] = tga_cmap.bi[pixel]; } else { /* Unpack color bits (5 each for red, green, blue */ imgP->ri[pcount] = (jp & 0x7c) >> 2; imgP->gi[pcount] = ((jp & 0x03) << 3) + ((ip & 0xe0) >> 5); imgP->bi[pcount] = ip & 0x1f; } imgP->ai[pcount] = RGBA_IMAGE_OPAQUE; } } break; case 32: case 24: { for(pcount=0; pcount < npixels; pcount++) { GET_BYTE(imgP->bi[pcount], fio); GET_BYTE(imgP->gi[pcount], fio); GET_BYTE(imgP->ri[pcount], fio); if(size == 32) { GET_BYTE(imgP->ai[pcount], fio); } else { imgP->ai[pcount] = RGBA_IMAGE_OPAQUE; } } } break; default: fprintf(stderr, "tgaPixelRead: unknown pixel size %i\n", size); return -1 ; /*NOTREACHED*/ break; } return 0 ; } /* NAME // tgaRead: Load a Targa image file from fio into imgP */ int tgaRead(tga_hdr_t *tgaP, RgbaImageT *imgP, FILE *fio) { int col; int rle_count; /* run-length of data */ int c_row; /* current row index being loaded */ int rl_encoded; /* boolean flag */ int row_count; /* total count of rows loaded */ int ilace_row; /* interlaced row counter */ int top_row; /* where to start over for interlaced images */ RgbaImageT timg; if(tgaP->img_type == TGA_RLE_Map || tgaP->img_type == TGA_RLE_RGB || tgaP->img_type == TGA_RLE_Mono) { rl_encoded = 1; } else { rl_encoded = 0; } row_count = ilace_row = top_row = 0; c_row = CURR_ROW(ilace_row); if(rl_encoded) { int nbytes; int rle_compressed; /* whether run is encoded or literal */ int blir; /* bytes left in row */ unsigned char ibyte; unsigned char tri; unsigned char tgi; unsigned char tbi; unsigned char tai; /* Load the temporary image with info from imgP */ timg = *imgP; while(row_count < imgP->nrows) { for(col=0 ; col < imgP->ncols; ) { /* Read in the RLE count */ GET_BYTE(ibyte, fio); if(ibyte & 0x80) { /* run-length encoded pixel */ rle_count = ibyte - 127; rle_compressed = 1; /* Read the repeated byte */ timg.ri = &tri; timg.gi = &tgi; timg.bi = &tbi; timg.ai = &tai; if(tgaPixelRead(fio, &timg, 1, tgaP->pixel_size, tgaP->mapped)) { fprintf(stderr,"tgaRead: read error in rle row %i\n", c_row); return EOF ; } } else { /* stream of unencoded pixels */ rle_count = ibyte + 1; rle_compressed = 0; } blir = imgP->ncols - col; /* Put run data into image memory */ while(rle_count) { if(rle_count <= blir) { /* finish the RLE block */ nbytes = rle_count; } else { /* finish the row */ nbytes = blir; } if(row_count >= imgP->nrows) { fprintf(stderr, "tgaRead: overread image.\n"); col = imgP->ncols; break; } if(rle_compressed) { memset(&imgP->ri[c_row*imgP->ncols+col], timg.ri[0], nbytes); memset(&imgP->gi[c_row*imgP->ncols+col], timg.gi[0], nbytes); memset(&imgP->bi[c_row*imgP->ncols+col], timg.bi[0], nbytes); memset(&imgP->ai[c_row*imgP->ncols+col], timg.ai[0], nbytes); } else { timg.ri = &(imgP->ri[c_row*imgP->ncols+col]); timg.gi = &(imgP->gi[c_row*imgP->ncols+col]); timg.bi = &(imgP->bi[c_row*imgP->ncols+col]); timg.ai = &(imgP->ai[c_row*imgP->ncols+col]); if(tgaPixelRead(fio, &timg,nbytes,tgaP->pixel_size, tgaP->mapped)) { fprintf(stderr, "tgaRead: read err 3 in row %i\n", c_row); return EOF ; } } if(rle_count <= blir) { /* just emptied the RLE block */ col += rle_count; rle_count = 0; } else { /* just emptied a row */ rle_count -= blir; col = 0; blir = imgP->ncols; ROW_INC; } } } /* for col */ ROW_INC; } /* while row_count */ } else { /* Not run-length encoded */ /* load pixel data one row at a time */ while(row_count < imgP->nrows) { timg.ri = &(imgP->ri[c_row*imgP->ncols]); timg.gi = &(imgP->gi[c_row*imgP->ncols]); timg.bi = &(imgP->bi[c_row*imgP->ncols]); timg.ai = &(imgP->ai[c_row*imgP->ncols]); if(tgaPixelRead(fio, &timg,imgP->ncols, tgaP->pixel_size, tgaP->mapped)) { fprintf(stderr, "tgaRead: read error in row %i\n", c_row); return EOF ; } ROW_INC; } } return 0 ; } /* NAME // tgaHeaderRead: load a Targa image header from fio into tgaP and imgP // // // DESCRIPTION // Since Targa files (aka tga files) have no magic number // it is not a simple matter to determine whether a file is a valid // Targa image. Therefore, there are several consistency checks in // this header reading routine to try to determine whether the file // is a valid targa file. // // In the case that the file is not a Targa file, then you could // lseek to the beginning of the file and try to read it as another // type of image. // // Since there is no way to be certain of whether the error is because // this is not a Targa at all, or if it is because the file is simply // a corrupt or unsupported Targa, no error messages are reported // by this routine. Instead, a different value is returned for // every different kind of reason why this routine rejected the // header. The caller routine is responsible for handling this return // value appropriately. // // // RETURN VALUES // If this routine returns nonzero, then either the file is not a // valid targa file, or we don't support this type. // */ int tgaHeaderRead(tga_hdr_t *tgaP, RgbaImageT *imgP, FILE *fio) { unsigned char flags; GET_BYTE(tgaP->id_len, fio); GET_BYTE(tgaP->cmap_type, fio); GET_BYTE(tgaP->img_type, fio); /* Verify that this is among the supported Targa types */ switch(tgaP->img_type) { case TGA_RLE_Map: case TGA_RLE_RGB: case TGA_RLE_Mono: imgP->compressed = 1; break; case TGA_Map: case TGA_RGB: case TGA_Mono: break; default: /* This is not a Targa I can deal with */ /* (or it is not a Targa at all) */ return 1 ; /*NOTREACHED*/ break; } imgP->type = TARGA_MAGIC; /* Load rest of Targa header */ tgaP->cmap_index = get_le_word(fio); tgaP->cmap_len = get_le_word(fio); GET_BYTE(tgaP->cmap_size, fio); tgaP->x_off = get_le_word(fio); tgaP->y_off = get_le_word(fio); imgP->ncols = get_le_word(fio); imgP->nrows = get_le_word(fio); GET_BYTE(tgaP->pixel_size, fio); GET_BYTE(flags, fio); tgaP->att_bits = flags & 0xf; tgaP->reserved = (flags & 0x10) >> 4; tgaP->origin_bit = (flags & 0x20) >> 5; tgaP->interleave = (flags & 0xc0) >> 6; /* Load the ID field */ if(tgaP->id_len) { char *id_field; id_field=MY_CALLOC(tgaP->id_len, char); if(get_block(fio, id_field, tgaP->id_len)) { fprintf(stderr, "tgaHeaderRead: read error in id field\n"); return EOF ; } FREE(id_field); } /* Verify the validity of the colormap or pixel size */ if(tgaP->img_type == TGA_Map || tgaP->img_type == TGA_RLE_Map || tgaP->img_type == TGA_CompMap || tgaP->img_type == TGA_CompMap4 ) { if(tgaP->cmap_type != 1) { /* There was no valid colormap, but one was required */ return 2 ; } imgP->color_mapped = tgaP->mapped = 1; switch(tgaP->cmap_size) { case 8: case 24: case 32: case 15: case 16: break; default: /* invalid colormap entry size */ return 3 ; /*NOTREACHED*/ break; } imgP->pixel_size = tgaP->cmap_size; if(tgaP->pixel_size!=8 && tgaP->pixel_size!=15 && tgaP->pixel_size!=16) { return 7 ; } } else { tgaP->mapped = 0; switch(tgaP->pixel_size) { case 8: case 15: case 16: case 24: case 32: break; default: /* invalid pixel size */ return 4 ; /*NOTREACHED*/ break; } imgP->pixel_size = tgaP->pixel_size; } if(tgaP->cmap_type) { if(tgaP->cmap_index + tgaP->cmap_len > 16384) { /* colormap is invalid length */ return 5 ; } #ifdef CMAP256 if(tgaP->cmap_index + tgaP->cmap_len > 256) { /* colormap will not fit */ return 6 ; } #endif tga_cmap.ri = &tga_cmap_r[tgaP->cmap_index]; tga_cmap.gi = &tga_cmap_g[tgaP->cmap_index]; tga_cmap.bi = &tga_cmap_b[tgaP->cmap_index]; tga_cmap.ai = &tga_cmap_a[tgaP->cmap_index]; tgaPixelRead(fio, &tga_cmap, tgaP->cmap_len, tgaP->cmap_size, 0); } return 0 ; } /* ---------------------------------------------------------------------- */ #define RPIX(row, col) (imgP->ri[(row) * imgP->ncols + (col)]) #define GPIX(row, col) (imgP->gi[(row) * imgP->ncols + (col)]) #define BPIX(row, col) (imgP->bi[(row) * imgP->ncols + (col)]) #define APIX(row, col) (imgP->ai[(row) * imgP->ncols + (col)]) /* tgaPixelWrite: save Targa pixels to fio from imgP // // // ARGUMENTS // fio: pointer to the output image file opened for binary output. // // imgP: used for the image arrays (and imgP->ncols used to index) // // npixels: number of consecutive pixels to write. // // mpsize: size of the pixels in memory, not the size of the // pixels being written. // -- For mpsize 8, use only the red channel. // -- For mpsize 15|16, use the red and green channels. // Use red as the MSB and green as the LSB. // // mapped: tells whether pixel values are gray/coded RGB, or cmap index // if mpsize==8|15|16 then mapped implies that a lookup ought to be // done, and the mapped pixel should be written. // // // [There are two kinds of map: 24/32 bit pixel and 15 bit pixel. // "mpsize" refers to the size of the stored image, not the written // image. To date, mapped saves are not supported, so this issue is moot.] */ static int tgaPixelWrite(FILE *fio, RgbaImageT *imgP, int col, int row, int npixels, int mpsize, int mapped) { register int pcount; switch(mpsize) { case 8: if(mapped) { fprintf(stderr, "tgaPixelWrite: I only do non-mapped 8\n"); return EOF ; } { for(pcount=col; pcount < col+npixels; pcount++) { if(putc(RPIX(row, pcount), fio)==EOF) return EOF ; } } case 15: case 16: if(mapped) { fprintf(stderr, "tgaPixelWrite: I only do non-mapped 15/16\n"); return EOF ; } { for(pcount=col; pcount < col+npixels; pcount++) { if(putc(GPIX(row, pcount), fio)==EOF) return EOF ; if(putc(RPIX(row, pcount), fio)==EOF) return EOF ; } } break; case 32: case 24: if(mapped) { fprintf(stderr, "tgaPixelWrite: 24/32 can't be mapped\n"); } { for(pcount=col; pcount < col+npixels; pcount++) { if(putc(BPIX(row, pcount), fio)==EOF) return EOF ; if(putc(GPIX(row, pcount), fio)==EOF) return EOF ; if(putc(RPIX(row, pcount), fio)==EOF) return EOF ; if(mpsize == 32) { if(putc(APIX(row, pcount), fio)==EOF) return EOF ; } } } break; default: fprintf(stderr, "tgaPixelWrite: bad pixel size %i\n", mpsize); return EOF ; /*NOTREACHED*/ break; } return 0 ; } /* NAME // tgaRunLength: find RLE run length for Targa image file // // // DESCRIPTION // tgaRunLength: find RLE run length at current col, row of img // depth is the number of bits per pixel // // For depth 8 Use only red channel. // For depth 15|16 Use red as the MSB and green as the LSB. // // Only runs along rows; Will not read into next row. // // // RETURN VALUES // If pixel repeat 2 or 3 times, return negative of number of repeats // otherwise Return positive number of distinct pixels until a 2|3+ // // If error, return 0. // // A return value of 0 is indistinguishible from a start-at-end-of-row // occurance, so the caller must check for end-of-row before calling // this routine; */ int tgaRunLength(RgbaImageT *imgP, int col, int row, int depth) { int xi, ri; int run_length; switch(depth) { case 8: case 15: case 16: case 24: case 32: break; default: fprintf(stderr, "tgaRunLength: invalid depth %i\n", depth); return 0 ; } /* Check for a run of (at least 2 or 3, at most 128) identical pixels */ /* Don't look at the first pixel; It's obviously equal to itself. */ for(ri=col+1; rincols && ri-col<128; ri++) { if(RPIX(row, ri) != RPIX(row, col)) break; if(depth>8) { if(GPIX(row, ri) != GPIX(row, col)) break; if(depth>16) { if(BPIX(row, ri) != BPIX(row, col)) break; if(depth==32) { if(APIX(row, ri) != APIX(row, col)) break; } } } } run_length=ri-col; switch(depth) { case 8: if(run_length>=3) return -run_length ; break; case 15: case 16: case 24: case 32: if(run_length>=2) return -run_length ; break; } /* If we've reached this far, we've into a run of distinct pixels. */ /* Look for runs of (at most 128) distinct pixels. */ for(xi=col+1; xincols && xi-col<128; xi+=run_length) { for(ri=xi+1; rincols && ri-xi<3; ri++) { if(RPIX(row, ri) != RPIX(row, xi)) break; if(depth>8) { if(GPIX(row, ri) != GPIX(row, xi)) break; if(depth>16) { if(BPIX(row, ri) != BPIX(row, xi)) break; if(depth==32) { if(APIX(row, ri) != APIX(row, xi)) break; } } } } run_length=ri-xi; switch(depth) { case 8: if(run_length>=3) return (xi-col); break; case 15: case 16: case 24: case 32: if(run_length>=2) return (xi-col); break; } } return (xi-col); } /* NAME // tgaWrite: Save a Targa image file // // // DESCRIPTION // Save a Targa image file into fio from imgP */ int tgaWrite(tga_hdr_t *tgaP, RgbaImageT *imgP, FILE *fio) { int c_row; /* current row index being saved */ int rl_encoded; /* boolean flag */ int row_count; /* total count of rows saved */ int ilace_row; /* interlaced row counter */ int top_row; /* where to start over for interlaced images */ if(tgaP->img_type == TGA_RLE_Map || tgaP->img_type == TGA_RLE_RGB || tgaP->img_type == TGA_RLE_Mono) { rl_encoded = 1; } else { rl_encoded = 0; } row_count = ilace_row = top_row = 0; c_row = CURR_ROW(ilace_row); if(rl_encoded) { int rle_count; /* run-length of data */ int col; /* current column */ while(row_count < imgP->nrows) { for(col=0; col < imgP->ncols; ) { rle_count = tgaRunLength(imgP, col, c_row, tgaP->pixel_size); if(rle_count < 0) { /* Write the repeat count (negative) */ putc(127 - rle_count, fio); /* Write out the pixels */ if(tgaPixelWrite(fio, imgP, col, c_row, 1, tgaP->pixel_size, tgaP->mapped)) { fprintf(stderr, "tgaWrite: write error in row %i\n", c_row); return EOF ; } /* Advance the column counter */ col += -rle_count; } else if(rle_count > 0) { /* Write the distinct count (positive) */ putc(rle_count - 1, fio); /* Write out the pixels */ if(tgaPixelWrite(fio, imgP, col, c_row, rle_count, tgaP->pixel_size, tgaP->mapped)) { fprintf(stderr, "tgaWrite: write error in row %i\n", c_row); return EOF ; } /* Advance the column counter */ col += rle_count; } else { fprintf(stderr, "tgaWrite: bad RLE count %i\n", rle_count); } } ROW_INC; } } else { /* Not run-length encoded */ /* save pixel data one row at a time */ while(row_count < imgP->nrows) { if(tgaPixelWrite(fio, imgP, 0, c_row, imgP->ncols, tgaP->pixel_size, tgaP->mapped)) { fprintf(stderr, "tgaWrite: write error in row %i\n", c_row); return EOF ; } ROW_INC; } } return 0 ; } /* NAME // tgaHeaderWrite: save a Targa image header into fio from tgaP and imgP */ int tgaHeaderWrite(tga_hdr_t *tgaP, RgbaImageT *imgP, FILE *fio) { unsigned char flags; tgaP->id_len = 0; putc(tgaP->id_len, fio); putc(tgaP->cmap_type, fio); putc(tgaP->img_type, fio); /* Save rest of Targa header */ put_le_word(tgaP->cmap_index, fio); put_le_word(tgaP->cmap_len, fio); putc(tgaP->cmap_size, fio); put_le_word(tgaP->x_off, fio); put_le_word(tgaP->y_off, fio); put_le_word(imgP->ncols, fio); put_le_word(imgP->nrows, fio); putc(tgaP->pixel_size, fio); flags = tgaP->att_bits & 0xf; flags |= (tgaP->reserved & 0x1) << 4; flags |= (tgaP->origin_bit & 0x1) << 5; flags |= (tgaP->interleave & 0x3) << 6; putc(flags, fio); if(tgaP->cmap_type) { tgaP->mapped = 1; /* Save the colormap for the Targa file */ tgaPixelWrite(fio, &tga_cmap, 0, 0, tgaP->cmap_len, tgaP->cmap_size, 0); } else { tgaP->mapped = 0; } return 0 ; } xmorph-20140707+nmu2/ABOUT-NLS0000664000000000000000000026713312356325451012313 0ustar 1 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. 1.1 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. Installers may use special options at configuration time for changing the default behaviour. The command: ./configure --disable-nls will _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl' library and will decide to use it. If not, you may have to to use the `--with-libintl-prefix' option to tell `configure' where to look for it. Internationalized packages usually have many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.2 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. If you happen to have the `LC_ALL' or some other `LC_xxx' environment variables set, you should unset them before setting `LANG', otherwise the setting of `LANG' will not have the desired effect. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. 1.3 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.4 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of June 2010. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am an ar as ast az be be@latin bg bn_IN bs ca +--------------------------------------------------+ a2ps | [] [] | aegis | | ant-phone | | anubis | | aspell | [] [] | bash | | bfd | | bibshelf | [] | binutils | | bison | | bison-runtime | [] | bluez-pin | [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] [] | cpio | | cppi | | cpplib | [] | cryptsetup | | dfarc | | dialog | [] [] | dico | | diffutils | [] | dink | | doodle | | e2fsprogs | [] | enscript | [] | exif | | fetchmail | [] | findutils | [] | flex | [] | freedink | | gas | | gawk | [] [] | gcal | [] | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] [] | gettext-tools | [] [] | gip | [] | gjay | | gliv | [] | glunarclock | [] [] | gnubiff | | gnucash | [] | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | | gold | | gpe-aerial | | gpe-beam | | gpe-bluetooth | | gpe-calendar | | gpe-clock | [] | gpe-conf | | gpe-contacts | | gpe-edit | | gpe-filemanager | | gpe-go | | gpe-login | | gpe-ownerinfo | [] | gpe-package | | gpe-sketchbook | | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] | gpe-today | [] | gpe-todo | | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | [] [] | gsasl | | gss | | gst-plugins-bad | [] | gst-plugins-base | [] | gst-plugins-good | [] | gst-plugins-ugly | [] | gstreamer | [] [] [] | gtick | | gtkam | [] | gtkorphan | [] | gtkspell | [] [] [] | gutenprint | | hello | [] | help2man | | hylafax | | idutils | | indent | [] [] | iso_15924 | | iso_3166 | [] [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | | iso_639 | [] [] [] [] | iso_639_3 | | jwhois | | kbd | | keytouch | [] | keytouch-editor | | keytouch-keyboa... | [] | klavaro | [] | latrine | | ld | [] | leafpad | [] [] | libc | [] [] | libexif | () | libextractor | | libgnutls | | libgpewidget | | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | [] | libidn | | lifelines | | liferea | [] [] | lilypond | | linkdr | [] | lordsawar | | lprng | | lynx | [] | m4 | | mailfromd | | mailutils | | make | | man-db | | man-db-manpages | | minicom | | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | | psmisc | | pspp | [] | pwdutils | | radius | [] | recode | [] [] | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] [] | sed | [] [] | sharutils | [] [] | shishi | | skencil | | solfege | | solfege-manual | | soundtracker | | sp | | sysstat | | tar | [] | texinfo | | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] [] | wyslij-po | | xchat | [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] | +--------------------------------------------------+ af am an ar as ast az be be@latin bg bn_IN bs ca 6 0 1 2 3 19 1 10 3 28 3 1 38 crh cs da de el en en_GB en_ZA eo es et eu fa +-------------------------------------------------+ a2ps | [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] () | anubis | [] [] | aspell | [] [] [] [] [] | bash | [] [] [] | bfd | [] | bibshelf | [] [] [] | binutils | [] | bison | [] [] | bison-runtime | [] [] [] [] | bluez-pin | [] [] [] [] [] [] | bombono-dvd | [] | buzztard | [] [] [] | cflow | [] [] | clisp | [] [] [] [] | coreutils | [] [] [] [] | cpio | | cppi | | cpplib | [] [] [] | cryptsetup | [] | dfarc | [] [] [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] | dink | [] [] [] | doodle | [] | e2fsprogs | [] [] [] | enscript | [] [] [] | exif | () [] [] | fetchmail | [] [] () [] [] [] | findutils | [] [] [] | flex | [] [] | freedink | [] [] [] | gas | [] | gawk | [] [] [] | gcal | [] | gcc | [] [] | gettext-examples | [] [] [] [] | gettext-runtime | [] [] [] [] | gettext-tools | [] [] [] | gip | [] [] [] [] | gjay | [] | gliv | [] [] [] | glunarclock | [] [] | gnubiff | () | gnucash | [] () () () () | gnuedu | [] [] | gnulib | [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] | gpe-aerial | [] [] [] [] | gpe-beam | [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] | gpe-conf | [] [] [] | gpe-contacts | [] [] [] | gpe-edit | [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] | gpe-package | [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] [] () [] [] [] | gprof | [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] | grub | [] [] | gsasl | [] | gss | | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] () [] | gtkam | [] [] () [] [] | gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | [] [] [] | hello | [] [] [] [] | help2man | [] | hylafax | [] [] | idutils | [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] () [] [] | iso_3166 | [] [] [] [] () [] [] [] () | iso_3166_2 | () | iso_4217 | [] [] [] () [] [] | iso_639 | [] [] [] [] () [] [] | iso_639_3 | [] | jwhois | [] | kbd | [] [] [] [] [] | keytouch | [] [] | keytouch-editor | [] [] | keytouch-keyboa... | [] | klavaro | [] [] [] [] | latrine | [] () | ld | [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | [] [] | libgphoto2 | [] () | libgphoto2_port | [] () [] | libgsasl | | libiconv | [] [] [] [] [] | libidn | [] [] [] | lifelines | [] () | liferea | [] [] [] [] [] | lilypond | [] [] [] | linkdr | [] [] [] | lordsawar | [] | lprng | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailfromd | | mailutils | [] | make | [] [] [] | man-db | | man-db-manpages | | minicom | [] [] [] [] | mkisofs | | myserver | | nano | [] [] [] | opcodes | [] [] | parted | [] [] | pies | | popt | [] [] [] [] [] | psmisc | [] [] [] | pspp | [] | pwdutils | [] | radius | [] | recode | [] [] [] [] [] [] | rosegarden | () () () | rpm | [] [] [] | rush | | sarg | | screem | | scrollkeeper | [] [] [] [] [] | sed | [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | | skencil | [] () [] | solfege | [] [] [] | solfege-manual | [] [] | soundtracker | [] [] [] | sp | [] | sysstat | [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] | tin | [] [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] | vice | () () | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] | wyslij-po | | xchat | [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] | +-------------------------------------------------+ crh cs da de el en en_GB en_ZA eo es et eu fa 5 64 105 117 18 1 8 0 28 89 18 19 0 fi fr ga gl gu he hi hr hu hy id is it ja ka kn +----------------------------------------------------+ a2ps | [] [] [] [] | aegis | [] [] | ant-phone | [] [] | anubis | [] [] [] [] | aspell | [] [] [] [] | bash | [] [] [] [] | bfd | [] [] [] | bibshelf | [] [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] | buzztard | [] | cflow | [] [] [] | clisp | [] | coreutils | [] [] [] [] [] | cpio | [] [] [] [] | cppi | [] [] | cpplib | [] [] [] | cryptsetup | [] [] [] | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] [] [] [] | dink | [] | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] | freedink | [] [] [] | gas | [] [] | gawk | [] [] [] [] () [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] | gip | [] [] [] [] [] [] | gjay | [] | gliv | [] () | glunarclock | [] [] [] [] | gnubiff | () [] () | gnucash | () () () () () [] | gnuedu | [] [] | gnulib | [] [] [] [] [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] [] | gpe-aerial | [] [] [] | gpe-beam | [] [] [] [] | gpe-bluetooth | [] [] [] [] | gpe-calendar | [] [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] [] [] | gpe-contacts | [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] [] | gpe-go | [] [] [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] [] [] [] | gpe-package | [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] [] [] [] [] [] | gprof | [] [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] [] | grub | [] [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | gtkorphan | [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | gutenprint | [] [] [] [] | hello | [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] [] | indent | [] [] [] [] [] [] [] [] | iso_15924 | [] () [] [] | iso_3166 | [] () [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | () [] [] [] | iso_4217 | [] () [] [] [] [] | iso_639 | [] () [] [] [] [] [] [] [] | iso_639_3 | () [] [] | jwhois | [] [] [] [] [] | kbd | [] [] | keytouch | [] [] [] [] [] [] | keytouch-editor | [] [] [] [] [] | keytouch-keyboa... | [] [] [] [] [] | klavaro | [] [] | latrine | [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | libc | [] [] [] [] [] | libexif | [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] [] | libgphoto2_port | [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] [] | libidn | [] [] [] [] | lifelines | () | liferea | [] [] [] [] | lilypond | [] [] | linkdr | [] [] [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] [] [] | m4 | [] [] [] [] [] [] | mailfromd | | mailutils | [] [] | make | [] [] [] [] [] [] [] [] [] | man-db | [] [] | man-db-manpages | [] | minicom | [] [] [] [] [] | mkisofs | [] [] [] [] | myserver | | nano | [] [] [] [] [] [] | opcodes | [] [] [] [] | parted | [] [] [] [] | pies | | popt | [] [] [] [] [] [] [] [] [] | psmisc | [] [] [] | pspp | | pwdutils | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () () () () | rpm | [] [] | rush | | sarg | [] | screem | [] [] | scrollkeeper | [] [] [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] [] [] [] | shishi | [] | skencil | [] | solfege | [] [] [] [] | solfege-manual | [] [] | soundtracker | [] [] | sp | [] () | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux-ng | [] [] [] [] [] [] | vice | () () () | vmm | [] | vorbis-tools | [] | wastesedge | () () | wdiff | [] | wget | [] [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] | +----------------------------------------------------+ fi fr ga gl gu he hi hr hu hy id is it ja ka kn 105 121 53 20 4 8 3 5 53 2 120 5 84 67 0 4 ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne +-----------------------------------------------+ a2ps | [] | aegis | | ant-phone | | anubis | [] [] | aspell | [] | bash | | bfd | | bibshelf | [] [] | binutils | | bison | [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] | cpio | | cppi | | cpplib | | cryptsetup | | dfarc | [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] | dink | | doodle | | e2fsprogs | | enscript | | exif | [] | fetchmail | | findutils | | flex | | freedink | [] | gas | | gawk | | gcal | | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] | gettext-tools | [] | gip | [] [] | gjay | | gliv | | glunarclock | [] | gnubiff | | gnucash | () () () () | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | [] | gold | | gpe-aerial | [] | gpe-beam | [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-filemanager | [] [] | gpe-go | [] [] [] | gpe-login | [] | gpe-ownerinfo | [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] | gpe-timesheet | [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | | gsasl | | gss | | gst-plugins-bad | [] [] [] [] | gst-plugins-base | [] [] | gst-plugins-good | [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | | gtick | | gtkam | [] | gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | | hello | [] [] [] | help2man | | hylafax | | idutils | | indent | | iso_15924 | [] [] | iso_3166 | [] [] () [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] [] | iso_639 | [] [] | iso_639_3 | [] | jwhois | [] | kbd | | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | klavaro | [] | latrine | [] | ld | | leafpad | [] [] [] | libc | [] | libexif | | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | | libidn | | lifelines | | liferea | | lilypond | | linkdr | | lordsawar | | lprng | | lynx | | m4 | | mailfromd | | mailutils | | make | [] | man-db | | man-db-manpages | | minicom | [] | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | [] [] [] | psmisc | | pspp | | pwdutils | | radius | | recode | | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] | sed | | sharutils | | shishi | | skencil | | solfege | [] | solfege-manual | | soundtracker | | sp | | sysstat | [] | tar | [] | texinfo | [] | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] | wyslij-po | | xchat | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +-----------------------------------------------+ ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne 20 5 10 1 13 48 4 2 2 4 24 10 20 3 1 nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr +---------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] [] | anubis | [] [] [] | aspell | [] [] [] [] [] | bash | [] [] | bfd | [] | bibshelf | [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] () | buzztard | [] [] | cflow | [] | clisp | [] [] | coreutils | [] [] [] [] [] [] | cpio | [] [] [] | cppi | [] | cpplib | [] | cryptsetup | [] | dfarc | [] | dialog | [] [] [] [] | dico | [] | diffutils | [] [] [] [] [] [] | dink | () | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] [] | exif | [] [] [] () [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] [] | freedink | [] [] | gas | | gawk | [] [] [] [] | gcal | | gcc | [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] | gip | [] [] [] [] [] | gjay | | gliv | [] [] [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | [] () | gnucash | [] () () () | gnuedu | [] | gnulib | [] [] [] [] | gnunet | | gnunet-gtk | | gnutls | [] [] | gold | | gpe-aerial | [] [] [] [] [] [] [] | gpe-beam | [] [] [] [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] [] [] [] | gpe-clock | [] [] [] [] [] [] [] [] | gpe-conf | [] [] [] [] [] [] [] | gpe-contacts | [] [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] [] [] [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] [] [] [] [] [] | gpe-su | [] [] [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] [] | gpe-todo | [] [] [] [] [] | gphoto2 | [] [] [] [] [] [] [] [] | gprof | [] [] [] | gpsdrive | [] [] | gramadoir | [] [] | grep | [] [] [] [] | grub | [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] [] [] | gtkorphan | [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | gutenprint | [] [] | hello | [] [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] [] [] [] | iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] | iso_3166_2 | [] [] [] | iso_4217 | [] [] [] [] [] [] [] [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | jwhois | [] [] [] [] | kbd | [] [] [] | keytouch | [] [] [] | keytouch-editor | [] [] [] | keytouch-keyboa... | [] [] [] | klavaro | [] [] | latrine | [] [] | ld | | leafpad | [] [] [] [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] | lifelines | [] [] | liferea | [] [] [] [] [] () () [] | lilypond | [] | linkdr | [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] | m4 | [] [] [] [] [] | mailfromd | [] | mailutils | [] | make | [] [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | | nano | [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | pies | [] | popt | [] [] [] [] | psmisc | [] [] [] | pspp | [] [] | pwdutils | [] | radius | [] [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () | rpm | [] [] [] | rush | [] [] | sarg | | screem | | scrollkeeper | [] [] [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] | skencil | [] [] | solfege | [] [] [] [] | solfege-manual | [] [] [] | soundtracker | [] | sp | | sysstat | [] [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] [] | vice | [] | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr 135 10 4 7 105 1 29 62 47 91 3 54 46 9 37 sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW +---------------------------------------------------+ a2ps | [] [] [] [] [] | 27 aegis | [] | 9 ant-phone | [] [] [] [] | 9 anubis | [] [] [] [] | 15 aspell | [] [] [] | 20 bash | [] [] [] | 12 bfd | [] | 6 bibshelf | [] [] [] | 16 binutils | [] [] | 8 bison | [] [] | 12 bison-runtime | [] [] [] [] [] [] | 29 bluez-pin | [] [] [] [] [] [] [] [] | 37 bombono-dvd | [] | 4 buzztard | [] | 7 cflow | [] [] [] | 9 clisp | | 10 coreutils | [] [] [] [] | 22 cpio | [] [] [] [] [] [] | 13 cppi | [] [] | 5 cpplib | [] [] [] [] [] [] | 14 cryptsetup | [] [] | 7 dfarc | [] | 9 dialog | [] [] [] [] [] [] [] | 30 dico | [] | 2 diffutils | [] [] [] [] [] [] | 30 dink | | 4 doodle | [] [] | 7 e2fsprogs | [] [] [] | 11 enscript | [] [] [] [] | 17 exif | [] [] [] | 16 fetchmail | [] [] [] | 17 findutils | [] [] [] [] [] | 20 flex | [] [] [] [] | 15 freedink | [] | 10 gas | [] | 4 gawk | [] [] [] [] | 18 gcal | [] [] | 5 gcc | [] [] [] | 7 gettext-examples | [] [] [] [] [] [] [] | 34 gettext-runtime | [] [] [] [] [] [] [] | 29 gettext-tools | [] [] [] [] [] [] | 22 gip | [] [] [] [] | 22 gjay | [] | 3 gliv | [] [] [] | 14 glunarclock | [] [] [] [] [] | 19 gnubiff | [] [] | 4 gnucash | () [] () [] () | 10 gnuedu | [] [] | 7 gnulib | [] [] [] [] | 16 gnunet | [] | 1 gnunet-gtk | [] [] [] | 5 gnutls | [] [] [] | 10 gold | [] | 4 gpe-aerial | [] [] [] | 18 gpe-beam | [] [] [] | 19 gpe-bluetooth | [] [] [] | 13 gpe-calendar | [] [] [] [] | 12 gpe-clock | [] [] [] [] [] | 28 gpe-conf | [] [] [] [] | 20 gpe-contacts | [] [] [] | 17 gpe-edit | [] [] [] | 12 gpe-filemanager | [] [] [] [] | 16 gpe-go | [] [] [] [] [] | 25 gpe-login | [] [] [] | 11 gpe-ownerinfo | [] [] [] [] [] | 25 gpe-package | [] [] [] | 13 gpe-sketchbook | [] [] [] | 20 gpe-su | [] [] [] [] [] | 30 gpe-taskmanager | [] [] [] [] [] | 29 gpe-timesheet | [] [] [] [] [] | 25 gpe-today | [] [] [] [] [] [] | 30 gpe-todo | [] [] [] [] | 17 gphoto2 | [] [] [] [] [] | 24 gprof | [] [] [] | 15 gpsdrive | [] [] [] | 11 gramadoir | [] [] [] | 11 grep | [] [] [] | 10 grub | [] [] [] | 14 gsasl | [] [] [] [] | 14 gss | [] [] [] | 11 gst-plugins-bad | [] [] [] [] | 26 gst-plugins-base | [] [] [] [] [] | 24 gst-plugins-good | [] [] [] [] | 24 gst-plugins-ugly | [] [] [] [] [] | 29 gstreamer | [] [] [] [] | 22 gtick | [] [] [] | 13 gtkam | [] [] [] | 20 gtkorphan | [] [] [] | 14 gtkspell | [] [] [] [] [] [] [] [] [] | 45 gutenprint | [] | 10 hello | [] [] [] [] [] [] | 21 help2man | [] [] | 7 hylafax | [] | 5 idutils | [] [] [] [] | 17 indent | [] [] [] [] [] [] | 30 iso_15924 | () [] () [] [] | 16 iso_3166 | [] [] () [] [] () [] [] [] () | 53 iso_3166_2 | () [] () [] | 9 iso_4217 | [] () [] [] () [] [] | 26 iso_639 | [] [] [] () [] () [] [] [] [] | 38 iso_639_3 | [] () | 8 jwhois | [] [] [] [] [] | 16 kbd | [] [] [] [] [] | 15 keytouch | [] [] [] | 16 keytouch-editor | [] [] [] | 14 keytouch-keyboa... | [] [] [] | 14 klavaro | [] | 11 latrine | [] [] [] | 10 ld | [] [] [] [] | 11 leafpad | [] [] [] [] [] [] | 33 libc | [] [] [] [] [] | 21 libexif | [] () | 7 libextractor | [] | 1 libgnutls | [] [] [] | 9 libgpewidget | [] [] [] | 14 libgpg-error | [] [] [] | 9 libgphoto2 | [] [] | 8 libgphoto2_port | [] [] [] [] | 14 libgsasl | [] [] [] | 13 libiconv | [] [] [] [] | 21 libidn | () [] [] | 11 lifelines | [] | 4 liferea | [] [] [] | 21 lilypond | [] | 7 linkdr | [] [] [] [] [] | 17 lordsawar | | 1 lprng | [] | 3 lynx | [] [] [] [] | 17 m4 | [] [] [] [] | 19 mailfromd | [] [] | 3 mailutils | [] | 5 make | [] [] [] [] | 21 man-db | [] [] [] | 8 man-db-manpages | | 4 minicom | [] [] | 16 mkisofs | [] [] | 9 myserver | | 0 nano | [] [] [] [] | 21 opcodes | [] [] [] | 11 parted | [] [] [] [] [] | 15 pies | [] [] | 3 popt | [] [] [] [] [] [] | 27 psmisc | [] [] | 11 pspp | | 4 pwdutils | [] [] | 6 radius | [] [] | 9 recode | [] [] [] [] | 28 rosegarden | () | 0 rpm | [] [] [] | 11 rush | [] [] | 4 sarg | | 1 screem | [] | 3 scrollkeeper | [] [] [] [] [] | 27 sed | [] [] [] [] [] | 30 sharutils | [] [] [] [] [] | 22 shishi | [] | 3 skencil | [] [] | 7 solfege | [] [] [] [] | 16 solfege-manual | [] | 8 soundtracker | [] [] [] | 9 sp | [] | 3 sysstat | [] [] | 15 tar | [] [] [] [] [] [] | 23 texinfo | [] [] [] [] [] | 17 tin | | 4 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux-ng | [] [] [] [] | 20 vice | () () | 1 vmm | [] | 4 vorbis-tools | [] | 6 wastesedge | | 2 wdiff | [] [] | 7 wget | [] [] [] [] [] | 26 wyslij-po | [] [] | 8 xchat | [] [] [] [] [] [] | 36 xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | 63 xkeyboard-config | [] [] [] | 22 +---------------------------------------------------+ 85 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW 178 domains 119 1 3 3 0 10 65 51 155 17 98 7 41 2618 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If June 2010 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://translationproject.org/extra/matrix.html'. 1.5 Using `gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `coordinator@translationproject.org' to make the `.pot' files available to the translation teams. xmorph-20140707+nmu2/Makefile.in0000664000000000000000000007337412356342011013122 0ustar # Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@ # beginning of file Makefile.conf # # GIMP: Adds GIMP plugin functionality to xmorph. # Also define NEED_GIMP=1. If this is defined, then you may run # xmorph both as a standalone application, and by adding it to your # ~/.gimp/plug-ins directory (usually via a symlink). From what I # understand, this will not work for tkmorph. See GIMPLIBS, below. # # REAL: Size of a "REAL" used by spline code. # Correct value is "double". Do not change. # # RGBA_MESH_WARP: flag to tell RgbaImage to include mesh-based warping # methods. Do not change. # # RGBA_TK: flag to tell RgbaImage to include Tk Photo image code. # DO NOT DEFINE for xmorph. Only define for tkmorph. # Also change the "all" target if RGBA_TK is changed. # # RED_GREEN_COLOR_BLIND: uses blue instead of red for color of # 'destination' mesh lines and points. # # STRDUP_PROTO_BROKEN: For some versions of GNU C, the string.h # header file has an incorrect prototype for strdup. If you # experience problems compiling, related to the strdup prototype, # then define STRDUP_PROTO_BROKEN. # For tkmorph: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRGBA_TK # For colorblind: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRED_GREEN_COLOR_BLIND # For GIMP plugin: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DGIMP -DNEED_GIMP=1 # Broken GNU C: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DSTRDUP_PROTO_BROKEN # Most systems: #DEFINES=-DREAL=double -DRGBA_MESH_WARP VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.conf $(srcdir)/Makefile.in \ $(srcdir)/config.h.in $(top_srcdir)/configure ABOUT-NLS \ AUTHORS COPYING ChangeLog INSTALL NEWS TODO compile \ config.guess config.rpath config.sub depcomp install-sh \ ltmain.sh missing subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac 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 = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_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 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = po doc libmorph morph xmorph glade1 gtkmorph glade2 \ tkmorph DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ 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@ 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@ CFLAGS_CONF = -DREAL=double -DRGBA_MESH_WARP # # Must have the X libraries: X11, MIT Athena Widgets, X Toolkit, X Misc Utils # # Linux 2.0: must have /usr/X11/lib # or /usr/X11R6/lib explicitly in library search path # # SunOS (pre-Solaris): Might have to use static X libraries because # dynamic X libraries are incomplete. # # Solaris: To link to openwin libraries, add -L/usr/openwin/lib # # IRIX6.2: Need to have -lcvt after -lXt # If you receive an error about an unresolved symbol named # SgCvtCreateConversionContext, you need to include -lcvt. # The cvt library is available in the goldengate.sw.goldengate package # Sun Solaris: #XLIBS=-L/usr/openwin/lib -lXaw -lXmu -lXext -lXt -lX11 # Linux: #XLIBS=-L/usr/X11/lib -lXaw -lXmu -lXext -lXt -lX11 #XLIBS=-L/usr/X11R6/lib -lXaw -lXmu -lXext -lXt -lX11 # SGI IRIX: #XLIBS= -lXaw -lXmu -lXext -lXt -lcvt -lX11 XLIBS = @X_LIBS@ @X_PRE_LIBS@ -lXaw -lXmu -lXext -lXt -lX11 @X_EXTRA_LIBS@ # If you have defined -DGIMP in the DEFINES section, then xmorph will # be built to run both as a standalone application and as a GIMP # plugin. Here, you need to specify the appropriate GIMP libraries. # # Comment out this variable if you have not used -DGIMP. #GIMPLIBS=-L/usr/local/lib -lgimp -lglib #GIMPLIBS=-lgimp -lglib GIMPLIBS = # # Must have the math library (-lm). # # # Linux: Add -ldl if you get link error regarding dlerror, dlopen, or # dlsym # # # FreeBSD: Do not use static libraries, because for some reason they # do not work. # # # SunOS: Use the /usr/lib/debug/malloc.o module if you want to do # memory checking. # Also see the CFLAGS comments about memory checking under SunOS. # # # SGI IRIX: Use -lmalloc to link with their special memory allocation # routines. If you get an error about mallopt being # unresolved, then you will have to link with the libmalloc # shared object. Do this by specifying -lmalloc here. # # -lmalloc_cv has more robust memory checking #NON_GUI_LIBS = -lm #NON_GUI_LIBS = -lm -ldl #NON_GUI_LIBS = -lm /usr/lib/debug/malloc.o #NON_GUI_LIBS = -lm -lmalloc NON_GUI_LIBS = -lm #all other files that are distributed EXTRA_DIST = config.rpath AUTHORS INSTALL README.html README.old gimp-README TODO HISTORY \ configure config.rpath po/gtkmorph.glade.c po/gtkmorph.glade2.c \ Makefile.conf gtkmorph1.glade gtkmorph2.glade gtkmorph2.gladep # it is copied by some glade autoconf stuff: pixmaps/howmany.xpm \ # it is obsolete: strings.gettext ; now we use po/gtkmorph.glade.c @COND_MORPH_TRUE@SUBDIRS1 = morph @COND_GTK2_FALSE@SUBDIRS4 = glade1 gtkmorph @COND_GTK2_TRUE@SUBDIRS4 = glade2 gtkmorph @COND_TKMORPH_TRUE@SUBDIRS5 = tkmorph SUBDIRS = po doc libmorph $(SUBDIRS1) xmorph $(SUBDIRS3) $(SUBDIRS4) $(SUBDIRS5) ACLOCAL_AMFLAGS = -I m4 all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.conf $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .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; $(srcdir)/Makefile.conf: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 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): @fail= 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; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= 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; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__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) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(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) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(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 \ && cd "$$am__cwd" \ || exit 1 $(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: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h 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: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-data-local install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool clean-local ctags ctags-recursive dist dist-all \ dist-bzip2 dist-gzip dist-hook dist-lzip dist-lzma dist-shar \ dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-generic distclean-hdr 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-data-local 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 # ### ACGM : the project now ignores this variable # # Read the man page for your linker before sending me email about # problems. # # Apollo w/ Domain/OS, BSD: omit XLIBS #LIBS = $(GIMPLIBS) $(NON_GUI_LIBS) #LIBS = # end of file Makefile.conf install-data-local: @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/pixmaps; \ for pixmap in $(srcdir)/pixmaps/* ; do \ if test -f $$pixmap; then \ $(INSTALL_DATA) $$pixmap $(DESTDIR)$(pkgdatadir)/pixmaps; \ fi \ done cd example; for i in * ;\ do $(INSTALL) -d $(DESTDIR)$(pkgdatadir)/example/$$i ;\ for j in $$i/* ;\ do $(INSTALL_DATA) $$j $(DESTDIR)$(pkgdatadir)/example/$$i;\ done;\ done dist-hook: cp -a example pixmaps debian $(distdir)/ cd $(distdir)/. && find . -type d -name .svn -print0 | xargs -0 rm -r clean-local: rm -fr .xvpics */.xvpics example/frame.auto.param example/frame*.ppm # 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: xmorph-20140707+nmu2/glade1/0000775000000000000000000000000012356343462012207 5ustar xmorph-20140707+nmu2/glade1/callbacks.h0000664000000000000000000004554612356304632014311 0ustar #include gboolean on_window_main_delete (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_load_session_activate (GtkMenuItem *menuitem, gpointer user_data); void on_save_session_activate (GtkMenuItem *menuitem, gpointer user_data); void on_add_an_image_activate (GtkMenuItem *menuitem, gpointer user_data); void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_view_images1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_resulting_image_size_activate (GtkMenuItem *menuitem, gpointer user_data); void on_show_morph_factors_activate (GtkMenuItem *menuitem, gpointer user_data); void on_interpolate_meshes1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_morph_images1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_restore_morph_factors1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_restore_start_activate (GtkMenuItem *menuitem, gpointer user_data); void on_restore_end_activate (GtkMenuItem *menuitem, gpointer user_data); void on_store_morph_factors_activate (GtkMenuItem *menuitem, gpointer user_data); void on_store_start_activate (GtkMenuItem *menuitem, gpointer user_data); void on_store_end_activate (GtkMenuItem *menuitem, gpointer user_data); void on_morph_sequence1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_guide_activate (GtkMenuItem *menuitem, gpointer user_data); void on_generic_help_activate (GtkMenuItem *menuitem, gpointer user_data); void on_warp_help_activate (GtkMenuItem *menuitem, gpointer user_data); void on_morph_help_activate (GtkMenuItem *menuitem, gpointer user_data); void on_why_the_beep_1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_loadimage_clicked (GtkButton *button, gpointer user_data); void on_loadmesh_clicked (GtkButton *button, gpointer user_data); void on_savemesh_clicked (GtkButton *button, gpointer user_data); void on_optionmenu_editview_released (GtkButton *button, gpointer user_data); void on_optionmenu_editview_clicked (GtkButton *button, gpointer user_data); void on_settings_clicked (GtkButton *button, gpointer user_data); void on_do_mixing_clicked (GtkButton *button, gpointer user_data); void on_save_image_clicked (GtkButton *button, gpointer user_data); void on_back_to_guide_activate (GtkButton *button, gpointer user_data); void on_color_feature_clicked (GtkButton *button, gpointer user_data); gboolean on_drawingarea_color_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); void on_combo_entry_feature_activate (GtkEditable *editable, gpointer user_data); void on_combo_entry_feature_changed (GtkEditable *editable, gpointer user_data); void on_new_feature_clicked (GtkButton *button, gpointer user_data); void on_rename_feature_clicked (GtkButton *button, gpointer user_data); void on_pack_feature_clicked (GtkButton *button, gpointer user_data); void on_unpack_feature_clicked (GtkButton *button, gpointer user_data); void on_delete_feature_clicked (GtkButton *button, gpointer user_data); void on_tool_edit_clicked (GtkButton *button, gpointer user_data); void on_tool_move_clicked (GtkButton *button, gpointer user_data); void on_tool_stretch_clicked (GtkButton *button, gpointer user_data); void on_tool_select_clicked (GtkButton *button, gpointer user_data); void on_tool_unselect_clicked (GtkButton *button, gpointer user_data); void on_tool_assign_clicked (GtkButton *button, gpointer user_data); void on_viewport3_realize (GtkWidget *widget, gpointer user_data); gboolean on_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data); gboolean on_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); gboolean on_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); void on_drawingarea_realize (GtkWidget *widget, gpointer user_data); gboolean on_drawingarea_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); gboolean on_drawingarea_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data); void on_spinbutton_reswidth_changed (GtkEditable *editable, gpointer user_data); void on_spinbutton_reswidth_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data); void on_spinbutton_resheight_changed (GtkEditable *editable, gpointer user_data); void on_spinbutton_resheight_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data); void on_double_size_clicked (GtkButton *button, gpointer user_data); void on_halve_size_clicked (GtkButton *button, gpointer user_data); void on_resulting_apply_clicked (GtkButton *button, gpointer user_data); void on_ok_button1_realize (GtkWidget *widget, gpointer user_data); void on_ok_button1_clicked (GtkButton *button, gpointer user_data); gboolean on_image_win_1_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_optionmenu_editview_pressed (GtkButton *button, gpointer user_data); void on_do_warp_clicked (GtkButton *button, gpointer user_data); void on_handlebox_factors_show (GtkWidget *widget, gpointer user_data); gboolean on_hscale_mesh_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); gboolean on_hscale_image_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); void on_spinbutton_image_changed (GtkEditable *editable, gpointer user_data); void on_spinbutton_mesh_changed (GtkEditable *editable, gpointer user_data); void on_handleboxsubimage_show (GtkWidget *widget, gpointer user_data); void on_reset_subimage_clicked (GtkButton *button, gpointer user_data); void on_spinbuttonx_changed (GtkEditable *editable, gpointer user_data); void on_spinbuttonx_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data); void on_spinbuttony_changed (GtkEditable *editable, gpointer user_data); void on_spinbuttony_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data); void on_spinbuttonw_changed (GtkEditable *editable, gpointer user_data); void on_spinbuttonw_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data); void on_spinbuttonh_changed (GtkEditable *editable, gpointer user_data); void on_spinbuttonh_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data); void on_subimage_apply_clicked (GtkButton *button, gpointer user_data); gboolean on_dialogwarning_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_labelwarning_show (GtkWidget *widget, gpointer user_data); void on_labelwarning_realize (GtkWidget *widget, gpointer user_data); gboolean on_window_warped_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); gboolean on_drawingarea_warped_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); gboolean on_drawingarea_warped_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data); void on_unselect_point_activate (GtkMenuItem *menuitem, gpointer user_data); void on_select_point_activate (GtkMenuItem *menuitem, gpointer user_data); void on_assign_point_activate (GtkMenuItem *menuitem, gpointer user_data); void on_add_horizontal_line_activate (GtkMenuItem *menuitem, gpointer user_data); void on_add_vertical_line_activate (GtkMenuItem *menuitem, gpointer user_data); void on_del_horizontal_line_activate (GtkMenuItem *menuitem, gpointer user_data); void on_del_vertical_line_activate (GtkMenuItem *menuitem, gpointer user_data); void on_movie_replay_clicked (GtkButton *button, gpointer user_data); void on_movie_ok_clicked (GtkButton *button, gpointer user_data); void on_movie_help_clicked (GtkButton *button, gpointer user_data); gboolean on_guide_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_guide_destroy (GtkObject *object, gpointer user_data); gboolean on_guide_text_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); void on_guide_prev_clicked (GtkButton *button, gpointer user_data); void on_guide_do_it_clicked (GtkButton *button, gpointer user_data); void on_guide_next_clicked (GtkButton *button, gpointer user_data); gboolean on_question_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_yes_clicked (GtkButton *button, gpointer user_data); void on_no_clicked (GtkButton *button, gpointer user_data); void on_ok_button_color_clicked (GtkButton *button, gpointer user_data); void on_mag_zoom_activate (GtkEditable *editable, gpointer user_data); void on_mag_track_toggled (GtkToggleButton *togglebutton, gpointer user_data); gboolean on_mag_drawingarea_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data); gboolean on_mag_drawingarea_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data); void on_mag_unrealize (GtkWidget *widget, gpointer user_data); void on_mag_zoom_changed (GtkEditable *editable, gpointer user_data); void on_show_mag_activate (GtkMenuItem *menuitem, gpointer user_data); void on_mag_spinbutton_activate (GtkEditable *editable, gpointer user_data); void on_mag_spinbutton_changed (GtkEditable *editable, gpointer user_data); void on_mag_track_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_restore_equal_activate (GtkMenuItem *menuitem, gpointer user_data); gboolean on_drawingarea_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data); gboolean on_imageselection1_destroy_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_adjust_all_meshes_activate (GtkMenuItem *menuitem, gpointer user_data); void on_wavelet_equalize_activate (GtkMenuItem *menuitem, gpointer user_data); void on_adjust_activate (GtkMenuItem *menuitem, gpointer user_data); void on_menu_smooth_activate (GtkMenuItem *menuitem, gpointer user_data); xmorph-20140707+nmu2/glade1/support.c0000664000000000000000000001074512356304632014072 0ustar /* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include "support.h" /* This is an internally used function to check if a pixmap file exists. */ static gchar* check_file_exists (const gchar *directory, const gchar *filename); /* This is an internally used function to create pixmaps. */ static GtkWidget* create_dummy_pixmap (GtkWidget *widget); GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name) { GtkWidget *parent, *found_widget; for (;;) { if (GTK_IS_MENU (widget)) parent = gtk_menu_get_attach_widget (GTK_MENU (widget)); else parent = widget->parent; if (parent == NULL) break; widget = parent; } found_widget = (GtkWidget*) gtk_object_get_data (GTK_OBJECT (widget), widget_name); if (!found_widget) g_warning ("Widget not found: %s", widget_name); return found_widget; } /* This is a dummy pixmap we use when a pixmap can't be found. */ static char *dummy_pixmap_xpm[] = { /* columns rows colors chars-per-pixel */ "1 1 1 1", " c None", /* pixels */ " " }; /* This is an internally used function to create pixmaps. */ static GtkWidget* create_dummy_pixmap (GtkWidget *widget) { GdkColormap *colormap; GdkPixmap *gdkpixmap; GdkBitmap *mask; GtkWidget *pixmap; colormap = gtk_widget_get_colormap (widget); gdkpixmap = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &mask, NULL, dummy_pixmap_xpm); if (gdkpixmap == NULL) g_error ("Couldn't create replacement pixmap."); pixmap = gtk_pixmap_new (gdkpixmap, mask); gdk_pixmap_unref (gdkpixmap); gdk_bitmap_unref (mask); return pixmap; } static GList *pixmaps_directories = NULL; /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory (const gchar *directory) { pixmaps_directories = g_list_prepend (pixmaps_directories, g_strdup (directory)); } /* This is an internally used function to create pixmaps. */ GtkWidget* create_pixmap (GtkWidget *widget, const gchar *filename) { gchar *found_filename = NULL; GdkColormap *colormap; GdkPixmap *gdkpixmap; GdkBitmap *mask; GtkWidget *pixmap; GList *elem; if (!filename || !filename[0]) return create_dummy_pixmap (widget); /* We first try any pixmaps directories set by the application. */ elem = pixmaps_directories; while (elem) { found_filename = check_file_exists ((gchar*)elem->data, filename); if (found_filename) break; elem = elem->next; } /* If we haven't found the pixmap, try the source directory. */ if (!found_filename) { found_filename = check_file_exists ("../pixmaps", filename); } if (!found_filename) { g_warning (_("Couldn't find pixmap file: %s"), filename); return create_dummy_pixmap (widget); } colormap = gtk_widget_get_colormap (widget); gdkpixmap = gdk_pixmap_colormap_create_from_xpm (NULL, colormap, &mask, NULL, found_filename); if (gdkpixmap == NULL) { g_warning (_("Error loading pixmap file: %s"), found_filename); g_free (found_filename); return create_dummy_pixmap (widget); } g_free (found_filename); pixmap = gtk_pixmap_new (gdkpixmap, mask); gdk_pixmap_unref (gdkpixmap); gdk_bitmap_unref (mask); return pixmap; } /* This is an internally used function to check if a pixmap file exists. */ static gchar* check_file_exists (const gchar *directory, const gchar *filename) { gchar *full_filename; struct stat s; gint status; full_filename = (gchar*) g_malloc (strlen (directory) + 1 + strlen (filename) + 1); strcpy (full_filename, directory); strcat (full_filename, G_DIR_SEPARATOR_S); strcat (full_filename, filename); status = stat (full_filename, &s); if (status == 0 && S_ISREG (s.st_mode)) return full_filename; g_free (full_filename); return NULL; } xmorph-20140707+nmu2/glade1/interface.h0000664000000000000000000000100212356304632014305 0ustar /* * DO NOT EDIT THIS FILE - it is generated by Glade. */ GtkWidget* create_window_main (void); GtkWidget* create_imageselection1 (void); GtkWidget* create_image_win_1 (void); GtkWidget* create_dialogwarning (void); GtkWidget* create_window_warped (void); GtkWidget* create_menuEditMesh (void); GtkWidget* create_window_movie (void); GtkWidget* create_guide (void); GtkWidget* create_question (void); GtkWidget* create_colorselectiondialog (void); GtkWidget* create_unused (void); GtkWidget* create_mag (void); xmorph-20140707+nmu2/glade1/main.c0000664000000000000000000000327312356304632013300 0ustar /* * Initial main.c file generated by Glade. Edit as required. * Glade will not overwrite this file. */ #ifdef HAVE_CONFIG_H # include #endif #include #include "interface.h" #include "support.h" int main (int argc, char *argv[]) { GtkWidget *window_main; GtkWidget *imageselection1; GtkWidget *image_win_1; GtkWidget *dialogwarning; GtkWidget *window_warped; GtkWidget *window_movie; GtkWidget *guide; GtkWidget *question; GtkWidget *colorselectiondialog; GtkWidget *unused; #ifdef ENABLE_NLS bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); #endif gtk_set_locale (); gtk_init (&argc, &argv); add_pixmap_directory ( DATADIR "/" PACKAGE "/pixmaps"); /* * The following code was added by Glade to create one of each component * (except popup menus), just so that you see something after building * the project. Delete any components that you don't want shown initially. */ window_main = create_window_main (); gtk_widget_show (window_main); imageselection1 = create_imageselection1 (); gtk_widget_show (imageselection1); image_win_1 = create_image_win_1 (); gtk_widget_show (image_win_1); dialogwarning = create_dialogwarning (); gtk_widget_show (dialogwarning); window_warped = create_window_warped (); gtk_widget_show (window_warped); window_movie = create_window_movie (); gtk_widget_show (window_movie); guide = create_guide (); gtk_widget_show (guide); question = create_question (); gtk_widget_show (question); colorselectiondialog = create_colorselectiondialog (); gtk_widget_show (colorselectiondialog); unused = create_unused (); gtk_widget_show (unused); gtk_main (); return 0; } xmorph-20140707+nmu2/glade1/support.h0000664000000000000000000000302612356304632014071 0ustar /* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include /* * Standard gettext macros. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif /* * Public Functions. */ /* * This function returns a widget in a component created by Glade. * Call it with the toplevel widget in the component (i.e. a window/dialog), * or alternatively any widget in the component, and the name of the widget * you want returned. */ GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name); /* get_widget() is deprecated. Use lookup_widget instead. */ #define get_widget lookup_widget /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory (const gchar *directory); /* * Private Functions. */ /* This is used to create the pixmaps in the interface. */ GtkWidget* create_pixmap (GtkWidget *widget, const gchar *filename); xmorph-20140707+nmu2/glade1/Makefile.in0000664000000000000000000004026112356342010014243 0ustar # Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @COND_GTKMORPH_TRUE@noinst_PROGRAMS = gtkmorph$(EXEEXT) subdir = glade1 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_gtkmorph_OBJECTS = main.$(OBJEXT) support.$(OBJEXT) \ interface.$(OBJEXT) callbacks.$(OBJEXT) gtkmorph_OBJECTS = $(am_gtkmorph_OBJECTS) am__DEPENDENCIES_1 = gtkmorph_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --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 = $(gtkmorph_SOURCES) DIST_SOURCES = $(gtkmorph_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac 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@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ 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@ 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@ INCLUDES = AM_CPPFLAGS = $(GTK_CFLAGS) -I../intl -DLOCALEDIR=\"$(localedir)\" -DDATADIR=\"$(datadir)\" gtkmorph_SOURCES = \ main.c \ support.c support.h \ interface.c interface.h \ callbacks.c callbacks.h gtkmorph_LDADD = $(GTK_LIBS) $(INTLLIBS) 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 glade1/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu glade1/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 $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list gtkmorph$(EXEEXT): $(gtkmorph_OBJECTS) $(gtkmorph_DEPENDENCIES) $(EXTRA_gtkmorph_DEPENDENCIES) @rm -f gtkmorph$(EXEEXT) $(LINK) $(gtkmorph_OBJECTS) $(gtkmorph_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/support.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(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@ $(am__mv) $(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@ $(am__mv) $(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) set x; \ 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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS 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-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 # 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: xmorph-20140707+nmu2/glade1/interface.c0000664000000000000000000040703312356304632014316 0ustar /* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include "callbacks.h" #include "interface.h" #include "support.h" GtkWidget* create_window_main (void) { GtkWidget *window_main; GtkWidget *vbox1; GtkWidget *menubar1; GtkWidget *file; GtkWidget *file_menu; GtkAccelGroup *file_menu_accels; GtkWidget *load_session; GtkWidget *save_session; GtkWidget *separatore4; GtkWidget *add_an_image; GtkWidget *separatore9; GtkWidget *quit1; GtkWidget *edit; GtkWidget *edit_menu; GtkAccelGroup *edit_menu_accels; GtkWidget *view_images1; GtkWidget *show_mag; GtkWidget *separator4; GtkWidget *resulting_image_size; GtkWidget *show_morph_factors; GtkWidget *settings_menu; GtkWidget *morph; GtkWidget *morph_menu; GtkAccelGroup *morph_menu_accels; GtkWidget *interpolate_meshes1; GtkWidget *morph_images1; GtkWidget *separatore1; GtkWidget *adjust_all_meshes; GtkWidget *wavelet_equalize; GtkWidget *separator12; GtkWidget *restore_morph_factors1; GtkWidget *restore_morph_factors1_menu; GtkAccelGroup *restore_morph_factors1_menu_accels; GtkWidget *startr; GtkWidget *endr; GtkWidget *equalr; GtkWidget *store_morph_factors; GtkWidget *store_morph_factors_menu; GtkAccelGroup *store_morph_factors_menu_accels; GtkWidget *starts; GtkWidget *ende; GtkWidget *morph_sequence1; GtkWidget *separator3; GtkWidget *help; GtkWidget *help_menu; GtkAccelGroup *help_menu_accels; GtkWidget *guide; GtkWidget *separator2; GtkWidget *help_sub; GtkWidget *help_sub_menu; GtkAccelGroup *help_sub_menu_accels; GtkWidget *generic_help; GtkWidget *warp_help; GtkWidget *morph_help1; GtkWidget *separator11; GtkWidget *why_the_beep_1; GtkWidget *vbox3; GtkWidget *hbox3; GtkWidget *load_image; GtkWidget *load_mesh; GtkWidget *save_mesh; GtkWidget *optionmenu_editview; GtkWidget *optionmenu_editview_menu; GtkWidget *glade_menuitem; GtkWidget *settings_button; GtkWidget *button_interp_meshes; GtkWidget *do_mixing; GtkWidget *button_do_morph; GtkWidget *save_image; GtkWidget *back_to_guide; GtkWidget *handlebox_tools; GtkWidget *vbox7; GtkWidget *hbox_feature; GtkWidget *color_feature; GtkWidget *drawingarea_color; GtkWidget *combo_feature; GtkWidget *combo_entry_feature; GtkWidget *new_feature; GtkWidget *rename_feature; GtkWidget *pack_feature; GtkWidget *unpack_feature; GtkWidget *delete_feature; GtkWidget *toolbar; GtkWidget *tmp_toolbar_icon; GtkWidget *tool_edit; GtkWidget *tool_move; GtkWidget *tool_stretch; GtkWidget *label20; GtkWidget *tool_select; GtkWidget *tool_unselect; GtkWidget *tool_assign; GtkWidget *scrolledwindow_image; GtkWidget *viewport4; GtkWidget *image_frame; GtkWidget *drawingarea2; GtkWidget *handlebox_res_size; GtkWidget *frame3; GtkWidget *hbox4; GtkWidget *label16; GtkObject *spinbutton_reswidth_adj; GtkWidget *spinbutton_reswidth; GtkWidget *label17; GtkObject *spinbutton_resheight_adj; GtkWidget *spinbutton_resheight; GtkWidget *double_size; GtkWidget *halve_size; GtkWidget *resulting_apply; GtkAccelGroup *accel_group; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); accel_group = gtk_accel_group_new (); window_main = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (window_main, "window_main"); gtk_object_set_data (GTK_OBJECT (window_main), "window_main", window_main); gtk_window_set_title (GTK_WINDOW (window_main), _("gtkmorph")); gtk_window_set_wmclass (GTK_WINDOW (window_main), "gtkmorph", "gtkmorph"); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox1, "vbox1"); gtk_widget_ref (vbox1); gtk_object_set_data_full (GTK_OBJECT (window_main), "vbox1", vbox1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (window_main), vbox1); menubar1 = gtk_menu_bar_new (); gtk_widget_set_name (menubar1, "menubar1"); gtk_widget_ref (menubar1); gtk_object_set_data_full (GTK_OBJECT (window_main), "menubar1", menubar1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (menubar1); gtk_box_pack_start (GTK_BOX (vbox1), menubar1, FALSE, FALSE, 0); file = gtk_menu_item_new_with_label (_("File")); gtk_widget_set_name (file, "file"); gtk_widget_ref (file); gtk_object_set_data_full (GTK_OBJECT (window_main), "file", file, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (file); gtk_container_add (GTK_CONTAINER (menubar1), file); gtk_tooltips_set_tip (tooltips, file, _("File menu"), NULL); file_menu = gtk_menu_new (); gtk_widget_set_name (file_menu, "file_menu"); gtk_widget_ref (file_menu); gtk_object_set_data_full (GTK_OBJECT (window_main), "file_menu", file_menu, (GtkDestroyNotify) gtk_widget_unref); gtk_menu_item_set_submenu (GTK_MENU_ITEM (file), file_menu); file_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (file_menu)); load_session = gtk_menu_item_new_with_label (_("load session")); gtk_widget_set_name (load_session, "load_session"); gtk_widget_ref (load_session); gtk_object_set_data_full (GTK_OBJECT (window_main), "load_session", load_session, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (load_session); gtk_container_add (GTK_CONTAINER (file_menu), load_session); save_session = gtk_menu_item_new_with_label (_("save session")); gtk_widget_set_name (save_session, "save_session"); gtk_widget_ref (save_session); gtk_object_set_data_full (GTK_OBJECT (window_main), "save_session", save_session, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (save_session); gtk_container_add (GTK_CONTAINER (file_menu), save_session); separatore4 = gtk_menu_item_new (); gtk_widget_set_name (separatore4, "separatore4"); gtk_widget_ref (separatore4); gtk_object_set_data_full (GTK_OBJECT (window_main), "separatore4", separatore4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (separatore4); gtk_container_add (GTK_CONTAINER (file_menu), separatore4); gtk_widget_set_sensitive (separatore4, FALSE); add_an_image = gtk_menu_item_new_with_label (_("add an image")); gtk_widget_set_name (add_an_image, "add_an_image"); gtk_widget_ref (add_an_image); gtk_object_set_data_full (GTK_OBJECT (window_main), "add_an_image", add_an_image, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (add_an_image); gtk_container_add (GTK_CONTAINER (file_menu), add_an_image); separatore9 = gtk_menu_item_new (); gtk_widget_set_name (separatore9, "separatore9"); gtk_widget_ref (separatore9); gtk_object_set_data_full (GTK_OBJECT (window_main), "separatore9", separatore9, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (separatore9); gtk_container_add (GTK_CONTAINER (file_menu), separatore9); gtk_widget_set_sensitive (separatore9, FALSE); quit1 = gtk_menu_item_new_with_label (_("Quit")); gtk_widget_set_name (quit1, "quit1"); gtk_widget_ref (quit1); gtk_object_set_data_full (GTK_OBJECT (window_main), "quit1", quit1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (quit1); gtk_container_add (GTK_CONTAINER (file_menu), quit1); gtk_widget_add_accelerator (quit1, "activate", accel_group, GDK_q, GDK_MOD1_MASK, GTK_ACCEL_VISIBLE); edit = gtk_menu_item_new_with_label (_("Edit")); gtk_widget_set_name (edit, "edit"); gtk_widget_ref (edit); gtk_object_set_data_full (GTK_OBJECT (window_main), "edit", edit, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (edit); gtk_container_add (GTK_CONTAINER (menubar1), edit); edit_menu = gtk_menu_new (); gtk_widget_set_name (edit_menu, "edit_menu"); gtk_widget_ref (edit_menu); gtk_object_set_data_full (GTK_OBJECT (window_main), "edit_menu", edit_menu, (GtkDestroyNotify) gtk_widget_unref); gtk_menu_item_set_submenu (GTK_MENU_ITEM (edit), edit_menu); edit_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (edit_menu)); view_images1 = gtk_menu_item_new_with_label (_("show all images")); gtk_widget_set_name (view_images1, "view_images1"); gtk_widget_ref (view_images1); gtk_object_set_data_full (GTK_OBJECT (window_main), "view_images1", view_images1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (view_images1); gtk_container_add (GTK_CONTAINER (edit_menu), view_images1); show_mag = gtk_menu_item_new_with_label (_("show mag")); gtk_widget_set_name (show_mag, "show_mag"); gtk_widget_ref (show_mag); gtk_object_set_data_full (GTK_OBJECT (window_main), "show_mag", show_mag, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (show_mag); gtk_container_add (GTK_CONTAINER (edit_menu), show_mag); separator4 = gtk_menu_item_new (); gtk_widget_set_name (separator4, "separator4"); gtk_widget_ref (separator4); gtk_object_set_data_full (GTK_OBJECT (window_main), "separator4", separator4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (separator4); gtk_container_add (GTK_CONTAINER (edit_menu), separator4); gtk_widget_set_sensitive (separator4, FALSE); resulting_image_size = gtk_menu_item_new_with_label (_("resulting image size...")); gtk_widget_set_name (resulting_image_size, "resulting_image_size"); gtk_widget_ref (resulting_image_size); gtk_object_set_data_full (GTK_OBJECT (window_main), "resulting_image_size", resulting_image_size, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (resulting_image_size); gtk_container_add (GTK_CONTAINER (edit_menu), resulting_image_size); show_morph_factors = gtk_menu_item_new_with_label (_("show morph factors")); gtk_widget_set_name (show_morph_factors, "show_morph_factors"); gtk_widget_ref (show_morph_factors); gtk_object_set_data_full (GTK_OBJECT (window_main), "show_morph_factors", show_morph_factors, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (show_morph_factors); gtk_container_add (GTK_CONTAINER (edit_menu), show_morph_factors); settings_menu = gtk_menu_item_new_with_label (_("Settings")); gtk_widget_set_name (settings_menu, "settings_menu"); gtk_widget_ref (settings_menu); gtk_object_set_data_full (GTK_OBJECT (window_main), "settings_menu", settings_menu, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (settings_menu); gtk_container_add (GTK_CONTAINER (menubar1), settings_menu); morph = gtk_menu_item_new_with_label (_("Morph")); gtk_widget_set_name (morph, "morph"); gtk_widget_ref (morph); gtk_object_set_data_full (GTK_OBJECT (window_main), "morph", morph, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (morph); gtk_container_add (GTK_CONTAINER (menubar1), morph); morph_menu = gtk_menu_new (); gtk_widget_set_name (morph_menu, "morph_menu"); gtk_widget_ref (morph_menu); gtk_object_set_data_full (GTK_OBJECT (window_main), "morph_menu", morph_menu, (GtkDestroyNotify) gtk_widget_unref); gtk_menu_item_set_submenu (GTK_MENU_ITEM (morph), morph_menu); morph_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (morph_menu)); interpolate_meshes1 = gtk_menu_item_new_with_label (_("interpolate meshes")); gtk_widget_set_name (interpolate_meshes1, "interpolate_meshes1"); gtk_widget_ref (interpolate_meshes1); gtk_object_set_data_full (GTK_OBJECT (window_main), "interpolate_meshes1", interpolate_meshes1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (interpolate_meshes1); gtk_container_add (GTK_CONTAINER (morph_menu), interpolate_meshes1); gtk_tooltips_set_tip (tooltips, interpolate_meshes1, _("the mesh of the resulting image is set to an interpolation of the input images' meshes, weighted by the ``mesh factors''"), NULL); morph_images1 = gtk_menu_item_new_with_label (_("morph images")); gtk_widget_set_name (morph_images1, "morph_images1"); gtk_widget_ref (morph_images1); gtk_object_set_data_full (GTK_OBJECT (window_main), "morph_images1", morph_images1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (morph_images1); gtk_container_add (GTK_CONTAINER (morph_menu), morph_images1); gtk_tooltips_set_tip (tooltips, morph_images1, _("the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button"), NULL); gtk_widget_add_accelerator (morph_images1, "activate", accel_group, GDK_j, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); separatore1 = gtk_menu_item_new (); gtk_widget_set_name (separatore1, "separatore1"); gtk_widget_ref (separatore1); gtk_object_set_data_full (GTK_OBJECT (window_main), "separatore1", separatore1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (separatore1); gtk_container_add (GTK_CONTAINER (morph_menu), separatore1); gtk_widget_set_sensitive (separatore1, FALSE); adjust_all_meshes = gtk_menu_item_new_with_label (_("adjust all meshes")); gtk_widget_set_name (adjust_all_meshes, "adjust_all_meshes"); gtk_widget_ref (adjust_all_meshes); gtk_object_set_data_full (GTK_OBJECT (window_main), "adjust_all_meshes", adjust_all_meshes, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (adjust_all_meshes); gtk_container_add (GTK_CONTAINER (morph_menu), adjust_all_meshes); gtk_tooltips_set_tip (tooltips, adjust_all_meshes, _("adjust points of meshes confronting original images and the morph"), NULL); wavelet_equalize = gtk_menu_item_new_with_label (_("wavelet equalize")); gtk_widget_set_name (wavelet_equalize, "wavelet_equalize"); gtk_widget_ref (wavelet_equalize); gtk_object_set_data_full (GTK_OBJECT (window_main), "wavelet_equalize", wavelet_equalize, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (wavelet_equalize); gtk_container_add (GTK_CONTAINER (morph_menu), wavelet_equalize); gtk_tooltips_set_tip (tooltips, wavelet_equalize, _("equalize input images so that the subband of wavelet transform have the same energies"), NULL); separator12 = gtk_menu_item_new (); gtk_widget_set_name (separator12, "separator12"); gtk_widget_ref (separator12); gtk_object_set_data_full (GTK_OBJECT (window_main), "separator12", separator12, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (separator12); gtk_container_add (GTK_CONTAINER (morph_menu), separator12); gtk_widget_set_sensitive (separator12, FALSE); restore_morph_factors1 = gtk_menu_item_new_with_label (_("restore morph coefficients...")); gtk_widget_set_name (restore_morph_factors1, "restore_morph_factors1"); gtk_widget_ref (restore_morph_factors1); gtk_object_set_data_full (GTK_OBJECT (window_main), "restore_morph_factors1", restore_morph_factors1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (restore_morph_factors1); gtk_container_add (GTK_CONTAINER (morph_menu), restore_morph_factors1); restore_morph_factors1_menu = gtk_menu_new (); gtk_widget_set_name (restore_morph_factors1_menu, "restore_morph_factors1_menu"); gtk_widget_ref (restore_morph_factors1_menu); gtk_object_set_data_full (GTK_OBJECT (window_main), "restore_morph_factors1_menu", restore_morph_factors1_menu, (GtkDestroyNotify) gtk_widget_unref); gtk_menu_item_set_submenu (GTK_MENU_ITEM (restore_morph_factors1), restore_morph_factors1_menu); restore_morph_factors1_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (restore_morph_factors1_menu)); startr = gtk_menu_item_new_with_label (_("start")); gtk_widget_set_name (startr, "startr"); gtk_widget_ref (startr); gtk_object_set_data_full (GTK_OBJECT (window_main), "startr", startr, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (startr); gtk_container_add (GTK_CONTAINER (restore_morph_factors1_menu), startr); endr = gtk_menu_item_new_with_label (_("end")); gtk_widget_set_name (endr, "endr"); gtk_widget_ref (endr); gtk_object_set_data_full (GTK_OBJECT (window_main), "endr", endr, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (endr); gtk_container_add (GTK_CONTAINER (restore_morph_factors1_menu), endr); equalr = gtk_menu_item_new_with_label (_("equal")); gtk_widget_set_name (equalr, "equalr"); gtk_widget_ref (equalr); gtk_object_set_data_full (GTK_OBJECT (window_main), "equalr", equalr, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (equalr); gtk_container_add (GTK_CONTAINER (restore_morph_factors1_menu), equalr); store_morph_factors = gtk_menu_item_new_with_label (_("store morph coefficients...")); gtk_widget_set_name (store_morph_factors, "store_morph_factors"); gtk_widget_ref (store_morph_factors); gtk_object_set_data_full (GTK_OBJECT (window_main), "store_morph_factors", store_morph_factors, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (store_morph_factors); gtk_container_add (GTK_CONTAINER (morph_menu), store_morph_factors); gtk_tooltips_set_tip (tooltips, store_morph_factors, _("stores internally the state of all mesh and image-blending factors (to make morph sequences)"), NULL); store_morph_factors_menu = gtk_menu_new (); gtk_widget_set_name (store_morph_factors_menu, "store_morph_factors_menu"); gtk_widget_ref (store_morph_factors_menu); gtk_object_set_data_full (GTK_OBJECT (window_main), "store_morph_factors_menu", store_morph_factors_menu, (GtkDestroyNotify) gtk_widget_unref); gtk_menu_item_set_submenu (GTK_MENU_ITEM (store_morph_factors), store_morph_factors_menu); store_morph_factors_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (store_morph_factors_menu)); starts = gtk_menu_item_new_with_label (_("start")); gtk_widget_set_name (starts, "starts"); gtk_widget_ref (starts); gtk_object_set_data_full (GTK_OBJECT (window_main), "starts", starts, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (starts); gtk_container_add (GTK_CONTAINER (store_morph_factors_menu), starts); ende = gtk_menu_item_new_with_label (_("end")); gtk_widget_set_name (ende, "ende"); gtk_widget_ref (ende); gtk_object_set_data_full (GTK_OBJECT (window_main), "ende", ende, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ende); gtk_container_add (GTK_CONTAINER (store_morph_factors_menu), ende); morph_sequence1 = gtk_menu_item_new_with_label (_("morph sequence")); gtk_widget_set_name (morph_sequence1, "morph_sequence1"); gtk_widget_ref (morph_sequence1); gtk_object_set_data_full (GTK_OBJECT (window_main), "morph_sequence1", morph_sequence1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (morph_sequence1); gtk_container_add (GTK_CONTAINER (morph_menu), morph_sequence1); gtk_tooltips_set_tip (tooltips, morph_sequence1, _("create and save many morphs, equally spaced between the morph start and the morph end (that you have already stored with the above menu)"), NULL); separator3 = gtk_menu_item_new (); gtk_widget_set_name (separator3, "separator3"); gtk_widget_ref (separator3); gtk_object_set_data_full (GTK_OBJECT (window_main), "separator3", separator3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (separator3); gtk_container_add (GTK_CONTAINER (menubar1), separator3); gtk_widget_set_sensitive (separator3, FALSE); help = gtk_menu_item_new_with_label (_("Help")); gtk_widget_set_name (help, "help"); gtk_widget_ref (help); gtk_object_set_data_full (GTK_OBJECT (window_main), "help", help, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (help); gtk_container_add (GTK_CONTAINER (menubar1), help); help_menu = gtk_menu_new (); gtk_widget_set_name (help_menu, "help_menu"); gtk_widget_ref (help_menu); gtk_object_set_data_full (GTK_OBJECT (window_main), "help_menu", help_menu, (GtkDestroyNotify) gtk_widget_unref); gtk_menu_item_set_submenu (GTK_MENU_ITEM (help), help_menu); help_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (help_menu)); guide = gtk_menu_item_new_with_label (_("guide...")); gtk_widget_set_name (guide, "guide"); gtk_widget_ref (guide); gtk_object_set_data_full (GTK_OBJECT (window_main), "guide", guide, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (guide); gtk_container_add (GTK_CONTAINER (help_menu), guide); separator2 = gtk_menu_item_new (); gtk_widget_set_name (separator2, "separator2"); gtk_widget_ref (separator2); gtk_object_set_data_full (GTK_OBJECT (window_main), "separator2", separator2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (separator2); gtk_container_add (GTK_CONTAINER (help_menu), separator2); gtk_widget_set_sensitive (separator2, FALSE); help_sub = gtk_menu_item_new_with_label (_("help...")); gtk_widget_set_name (help_sub, "help_sub"); gtk_widget_ref (help_sub); gtk_object_set_data_full (GTK_OBJECT (window_main), "help_sub", help_sub, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (help_sub); gtk_container_add (GTK_CONTAINER (help_menu), help_sub); help_sub_menu = gtk_menu_new (); gtk_widget_set_name (help_sub_menu, "help_sub_menu"); gtk_widget_ref (help_sub_menu); gtk_object_set_data_full (GTK_OBJECT (window_main), "help_sub_menu", help_sub_menu, (GtkDestroyNotify) gtk_widget_unref); gtk_menu_item_set_submenu (GTK_MENU_ITEM (help_sub), help_sub_menu); help_sub_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (help_sub_menu)); generic_help = gtk_menu_item_new_with_label (_("generic help")); gtk_widget_set_name (generic_help, "generic_help"); gtk_widget_ref (generic_help); gtk_object_set_data_full (GTK_OBJECT (window_main), "generic_help", generic_help, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (generic_help); gtk_container_add (GTK_CONTAINER (help_sub_menu), generic_help); warp_help = gtk_menu_item_new_with_label (_("warp help")); gtk_widget_set_name (warp_help, "warp_help"); gtk_widget_ref (warp_help); gtk_object_set_data_full (GTK_OBJECT (window_main), "warp_help", warp_help, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (warp_help); gtk_container_add (GTK_CONTAINER (help_sub_menu), warp_help); morph_help1 = gtk_menu_item_new_with_label (_("morph help")); gtk_widget_set_name (morph_help1, "morph_help1"); gtk_widget_ref (morph_help1); gtk_object_set_data_full (GTK_OBJECT (window_main), "morph_help1", morph_help1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (morph_help1); gtk_container_add (GTK_CONTAINER (help_sub_menu), morph_help1); separator11 = gtk_menu_item_new (); gtk_widget_set_name (separator11, "separator11"); gtk_widget_ref (separator11); gtk_object_set_data_full (GTK_OBJECT (window_main), "separator11", separator11, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (separator11); gtk_container_add (GTK_CONTAINER (help_menu), separator11); gtk_widget_set_sensitive (separator11, FALSE); why_the_beep_1 = gtk_menu_item_new_with_label (_("why the beep?")); gtk_widget_set_name (why_the_beep_1, "why_the_beep_1"); gtk_widget_ref (why_the_beep_1); gtk_object_set_data_full (GTK_OBJECT (window_main), "why_the_beep_1", why_the_beep_1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (why_the_beep_1); gtk_container_add (GTK_CONTAINER (help_menu), why_the_beep_1); vbox3 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox3, "vbox3"); gtk_widget_ref (vbox3); gtk_object_set_data_full (GTK_OBJECT (window_main), "vbox3", vbox3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox3); gtk_box_pack_start (GTK_BOX (vbox1), vbox3, TRUE, TRUE, 0); hbox3 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox3, "hbox3"); gtk_widget_ref (hbox3); gtk_object_set_data_full (GTK_OBJECT (window_main), "hbox3", hbox3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox3); gtk_box_pack_start (GTK_BOX (vbox3), hbox3, FALSE, FALSE, 0); load_image = gtk_button_new_with_label (_("load\nimage")); gtk_widget_set_name (load_image, "load_image"); gtk_widget_ref (load_image); gtk_object_set_data_full (GTK_OBJECT (window_main), "load_image", load_image, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (load_image); gtk_box_pack_start (GTK_BOX (hbox3), load_image, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (load_image), 3); gtk_tooltips_set_tip (tooltips, load_image, _("load the image. This image may not be warped or morphed, but it may help in setting the resulting mesh"), NULL); load_mesh = gtk_button_new_with_label (_("load\nmesh")); gtk_widget_set_name (load_mesh, "load_mesh"); gtk_widget_ref (load_mesh); gtk_object_set_data_full (GTK_OBJECT (window_main), "load_mesh", load_mesh, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (load_mesh); gtk_box_pack_start (GTK_BOX (hbox3), load_mesh, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (load_mesh), 3); save_mesh = gtk_button_new_with_label (_("save\nmesh")); gtk_widget_set_name (save_mesh, "save_mesh"); gtk_widget_ref (save_mesh); gtk_object_set_data_full (GTK_OBJECT (window_main), "save_mesh", save_mesh, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (save_mesh); gtk_box_pack_start (GTK_BOX (hbox3), save_mesh, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (save_mesh), 3); optionmenu_editview = gtk_option_menu_new (); gtk_widget_set_name (optionmenu_editview, "optionmenu_editview"); gtk_widget_ref (optionmenu_editview); gtk_object_set_data_full (GTK_OBJECT (window_main), "optionmenu_editview", optionmenu_editview, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (optionmenu_editview); gtk_box_pack_start (GTK_BOX (hbox3), optionmenu_editview, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (optionmenu_editview), 3); gtk_tooltips_set_tip (tooltips, optionmenu_editview, _("``edit template'': view the loaded image and edit the mesh on it. \\n ``view morphed'': view the result of morphing. ``v.morph&mesh'' as above but with the mesh. ``edit eyes points'' sets the reference position of the eyes"), NULL); optionmenu_editview_menu = gtk_menu_new (); glade_menuitem = gtk_menu_item_new_with_label (_("edit template")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (optionmenu_editview_menu), glade_menuitem); glade_menuitem = gtk_menu_item_new_with_label (_("view morph")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (optionmenu_editview_menu), glade_menuitem); glade_menuitem = gtk_menu_item_new_with_label (_("v morph&meshes")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (optionmenu_editview_menu), glade_menuitem); glade_menuitem = gtk_menu_item_new_with_label (_("edit eyes points")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (optionmenu_editview_menu), glade_menuitem); gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu_editview), optionmenu_editview_menu); settings_button = gtk_button_new_with_label (_("settings")); gtk_widget_set_name (settings_button, "settings_button"); gtk_widget_ref (settings_button); gtk_object_set_data_full (GTK_OBJECT (window_main), "settings_button", settings_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (settings_button); gtk_box_pack_start (GTK_BOX (hbox3), settings_button, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (settings_button), 3); button_interp_meshes = gtk_button_new_with_label (_("interpol.\nmeshes")); gtk_widget_set_name (button_interp_meshes, "button_interp_meshes"); gtk_widget_ref (button_interp_meshes); gtk_object_set_data_full (GTK_OBJECT (window_main), "button_interp_meshes", button_interp_meshes, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (button_interp_meshes); gtk_box_pack_start (GTK_BOX (hbox3), button_interp_meshes, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (button_interp_meshes), 3); gtk_tooltips_set_tip (tooltips, button_interp_meshes, _("set this mesh to be an interpolation of all other meshes, using ``mesh factors'' as weights"), NULL); do_mixing = gtk_button_new_with_label (_("do\nblending")); gtk_widget_set_name (do_mixing, "do_mixing"); gtk_widget_ref (do_mixing); gtk_object_set_data_full (GTK_OBJECT (window_main), "do_mixing", do_mixing, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (do_mixing); gtk_box_pack_start (GTK_BOX (hbox3), do_mixing, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (do_mixing), 3); gtk_tooltips_set_tip (tooltips, do_mixing, _("mix all the warped images in the ``resulting image'' using ``image blending factors'' as weights"), NULL); button_do_morph = gtk_button_new_with_label (_("do\nmorph")); gtk_widget_set_name (button_do_morph, "button_do_morph"); gtk_widget_ref (button_do_morph); gtk_object_set_data_full (GTK_OBJECT (window_main), "button_do_morph", button_do_morph, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (button_do_morph); gtk_box_pack_start (GTK_BOX (hbox3), button_do_morph, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (button_do_morph), 3); gtk_tooltips_set_tip (tooltips, button_do_morph, _("the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button."), NULL); save_image = gtk_button_new_with_label (_("save\nimage")); gtk_widget_set_name (save_image, "save_image"); gtk_widget_ref (save_image); gtk_object_set_data_full (GTK_OBJECT (window_main), "save_image", save_image, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (save_image); gtk_box_pack_start (GTK_BOX (hbox3), save_image, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (save_image), 3); gtk_tooltips_set_tip (tooltips, save_image, _("it saves whatever image is currently shown in the window"), NULL); back_to_guide = gtk_button_new_with_label (_("guide")); gtk_widget_set_name (back_to_guide, "back_to_guide"); gtk_widget_ref (back_to_guide); gtk_object_set_data_full (GTK_OBJECT (window_main), "back_to_guide", back_to_guide, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (back_to_guide); gtk_box_pack_start (GTK_BOX (hbox3), back_to_guide, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (back_to_guide), 3); gtk_tooltips_set_tip (tooltips, back_to_guide, _("back to guide"), NULL); handlebox_tools = gtk_handle_box_new (); gtk_widget_set_name (handlebox_tools, "handlebox_tools"); gtk_widget_ref (handlebox_tools); gtk_object_set_data_full (GTK_OBJECT (window_main), "handlebox_tools", handlebox_tools, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (handlebox_tools); gtk_box_pack_start (GTK_BOX (vbox3), handlebox_tools, FALSE, TRUE, 0); vbox7 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox7, "vbox7"); gtk_widget_ref (vbox7); gtk_object_set_data_full (GTK_OBJECT (window_main), "vbox7", vbox7, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox7); gtk_container_add (GTK_CONTAINER (handlebox_tools), vbox7); hbox_feature = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox_feature, "hbox_feature"); gtk_widget_ref (hbox_feature); gtk_object_set_data_full (GTK_OBJECT (window_main), "hbox_feature", hbox_feature, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox_feature); gtk_box_pack_start (GTK_BOX (vbox7), hbox_feature, FALSE, FALSE, 0); color_feature = gtk_button_new (); gtk_widget_set_name (color_feature, "color_feature"); gtk_widget_ref (color_feature); gtk_object_set_data_full (GTK_OBJECT (window_main), "color_feature", color_feature, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (color_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), color_feature, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (color_feature), 2); drawingarea_color = gtk_drawing_area_new (); gtk_widget_set_name (drawingarea_color, "drawingarea_color"); gtk_widget_ref (drawingarea_color); gtk_object_set_data_full (GTK_OBJECT (window_main), "drawingarea_color", drawingarea_color, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (drawingarea_color); gtk_container_add (GTK_CONTAINER (color_feature), drawingarea_color); gtk_widget_set_usize (drawingarea_color, 25, -2); combo_feature = gtk_combo_new (); gtk_widget_set_name (combo_feature, "combo_feature"); gtk_widget_ref (combo_feature); gtk_object_set_data_full (GTK_OBJECT (window_main), "combo_feature", combo_feature, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (combo_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), combo_feature, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (combo_feature), 2); combo_entry_feature = GTK_COMBO (combo_feature)->entry; gtk_widget_set_name (combo_entry_feature, "combo_entry_feature"); gtk_widget_ref (combo_entry_feature); gtk_object_set_data_full (GTK_OBJECT (window_main), "combo_entry_feature", combo_entry_feature, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (combo_entry_feature); new_feature = gtk_button_new_with_label (_("new")); gtk_widget_set_name (new_feature, "new_feature"); gtk_widget_ref (new_feature); gtk_object_set_data_full (GTK_OBJECT (window_main), "new_feature", new_feature, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (new_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), new_feature, FALSE, FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (new_feature), 2); gtk_tooltips_set_tip (tooltips, new_feature, _("add new feature to the end of list"), NULL); rename_feature = gtk_button_new_with_label (_("rename")); gtk_widget_set_name (rename_feature, "rename_feature"); gtk_widget_ref (rename_feature); gtk_object_set_data_full (GTK_OBJECT (window_main), "rename_feature", rename_feature, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (rename_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), rename_feature, FALSE, FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (rename_feature), 2); pack_feature = gtk_button_new_with_label (_("pack")); gtk_widget_set_name (pack_feature, "pack_feature"); gtk_widget_ref (pack_feature); gtk_object_set_data_full (GTK_OBJECT (window_main), "pack_feature", pack_feature, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (pack_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), pack_feature, FALSE, FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (pack_feature), 2); gtk_tooltips_set_tip (tooltips, pack_feature, _("pack the selected points in this feature"), NULL); unpack_feature = gtk_button_new_with_label (_("unpack")); gtk_widget_set_name (unpack_feature, "unpack_feature"); gtk_widget_ref (unpack_feature); gtk_object_set_data_full (GTK_OBJECT (window_main), "unpack_feature", unpack_feature, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (unpack_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), unpack_feature, FALSE, FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (unpack_feature), 2); gtk_tooltips_set_tip (tooltips, unpack_feature, _("unpack this feature and transforms all points of it to selected points"), NULL); delete_feature = gtk_button_new_with_label (_("delete")); gtk_widget_set_name (delete_feature, "delete_feature"); gtk_widget_ref (delete_feature); gtk_object_set_data_full (GTK_OBJECT (window_main), "delete_feature", delete_feature, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (delete_feature); gtk_box_pack_start (GTK_BOX (hbox_feature), delete_feature, FALSE, FALSE, 2); gtk_container_set_border_width (GTK_CONTAINER (delete_feature), 2); gtk_tooltips_set_tip (tooltips, delete_feature, _("delete last feature"), NULL); toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); gtk_widget_set_name (toolbar, "toolbar"); gtk_widget_ref (toolbar); gtk_object_set_data_full (GTK_OBJECT (window_main), "toolbar", toolbar, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (toolbar); gtk_box_pack_start (GTK_BOX (vbox7), toolbar, FALSE, FALSE, 0); tmp_toolbar_icon = create_pixmap (window_main, "cursor_left.xpm"); tool_edit = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_CHILD_RADIOBUTTON, NULL, _("edit"), _("move single point"), NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_set_name (tool_edit, "tool_edit"); gtk_widget_ref (tool_edit); gtk_object_set_data_full (GTK_OBJECT (window_main), "tool_edit", tool_edit, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tool_edit); gtk_container_set_border_width (GTK_CONTAINER (tool_edit), 2); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tool_edit), TRUE); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (tool_edit), FALSE); tmp_toolbar_icon = create_pixmap (window_main, "hand01.xpm"); tool_move = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_CHILD_RADIOBUTTON, tool_edit, _("move"), _("move whole feature"), NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_set_name (tool_move, "tool_move"); gtk_widget_ref (tool_move); gtk_object_set_data_full (GTK_OBJECT (window_main), "tool_move", tool_move, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tool_move); gtk_container_set_border_width (GTK_CONTAINER (tool_move), 2); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (tool_move), FALSE); tmp_toolbar_icon = create_pixmap (window_main, "transform.xpm"); tool_stretch = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_CHILD_RADIOBUTTON, tool_edit, _("stretch"), _("stretch whole feature"), NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_set_name (tool_stretch, "tool_stretch"); gtk_widget_ref (tool_stretch); gtk_object_set_data_full (GTK_OBJECT (window_main), "tool_stretch", tool_stretch, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tool_stretch); gtk_container_set_border_width (GTK_CONTAINER (tool_stretch), 2); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (tool_stretch), FALSE); label20 = gtk_label_new (_("-")); gtk_widget_set_name (label20, "label20"); gtk_widget_ref (label20); gtk_object_set_data_full (GTK_OBJECT (window_main), "label20", label20, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label20); gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar), label20, NULL, NULL); tmp_toolbar_icon = create_pixmap (window_main, "pencil_y.xpm"); tool_select = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_CHILD_RADIOBUTTON, tool_edit, _("select"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_set_name (tool_select, "tool_select"); gtk_widget_ref (tool_select); gtk_object_set_data_full (GTK_OBJECT (window_main), "tool_select", tool_select, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tool_select); gtk_container_set_border_width (GTK_CONTAINER (tool_select), 2); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (tool_select), FALSE); tmp_toolbar_icon = create_pixmap (window_main, "eraser.xpm"); tool_unselect = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_CHILD_RADIOBUTTON, tool_edit, _("unselect"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_set_name (tool_unselect, "tool_unselect"); gtk_widget_ref (tool_unselect); gtk_object_set_data_full (GTK_OBJECT (window_main), "tool_unselect", tool_unselect, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tool_unselect); gtk_container_set_border_width (GTK_CONTAINER (tool_unselect), 2); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (tool_unselect), FALSE); tmp_toolbar_icon = create_pixmap (window_main, "pencil.xpm"); tool_assign = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_CHILD_RADIOBUTTON, tool_edit, _("assign"), _("assign point to feature"), NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_set_name (tool_assign, "tool_assign"); gtk_widget_ref (tool_assign); gtk_object_set_data_full (GTK_OBJECT (window_main), "tool_assign", tool_assign, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tool_assign); gtk_container_set_border_width (GTK_CONTAINER (tool_assign), 2); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (tool_assign), FALSE); scrolledwindow_image = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow_image, "scrolledwindow_image"); gtk_widget_ref (scrolledwindow_image); gtk_object_set_data_full (GTK_OBJECT (window_main), "scrolledwindow_image", scrolledwindow_image, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (scrolledwindow_image); gtk_box_pack_start (GTK_BOX (vbox3), scrolledwindow_image, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow_image), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport4 = gtk_viewport_new (NULL, NULL); gtk_widget_set_name (viewport4, "viewport4"); gtk_widget_ref (viewport4); gtk_object_set_data_full (GTK_OBJECT (window_main), "viewport4", viewport4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (viewport4); gtk_container_add (GTK_CONTAINER (scrolledwindow_image), viewport4); gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport4), GTK_SHADOW_ETCHED_OUT); image_frame = gtk_frame_new (_("error")); gtk_widget_set_name (image_frame, "image_frame"); gtk_widget_ref (image_frame); gtk_object_set_data_full (GTK_OBJECT (window_main), "image_frame", image_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (image_frame); gtk_container_add (GTK_CONTAINER (viewport4), image_frame); drawingarea2 = gtk_drawing_area_new (); gtk_widget_set_name (drawingarea2, "drawingarea2"); gtk_widget_ref (drawingarea2); gtk_object_set_data_full (GTK_OBJECT (window_main), "drawingarea2", drawingarea2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (drawingarea2); gtk_container_add (GTK_CONTAINER (image_frame), drawingarea2); gtk_widget_set_events (drawingarea2, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); handlebox_res_size = gtk_handle_box_new (); gtk_widget_set_name (handlebox_res_size, "handlebox_res_size"); gtk_widget_ref (handlebox_res_size); gtk_object_set_data_full (GTK_OBJECT (window_main), "handlebox_res_size", handlebox_res_size, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (handlebox_res_size); gtk_box_pack_start (GTK_BOX (vbox3), handlebox_res_size, FALSE, FALSE, 0); frame3 = gtk_frame_new (_("resulting image size")); gtk_widget_set_name (frame3, "frame3"); gtk_widget_ref (frame3); gtk_object_set_data_full (GTK_OBJECT (window_main), "frame3", frame3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (frame3); gtk_container_add (GTK_CONTAINER (handlebox_res_size), frame3); gtk_frame_set_label_align (GTK_FRAME (frame3), 0.02, 0.5); gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_ETCHED_OUT); hbox4 = gtk_hbox_new (TRUE, 0); gtk_widget_set_name (hbox4, "hbox4"); gtk_widget_ref (hbox4); gtk_object_set_data_full (GTK_OBJECT (window_main), "hbox4", hbox4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox4); gtk_container_add (GTK_CONTAINER (frame3), hbox4); label16 = gtk_label_new (_("width")); gtk_widget_set_name (label16, "label16"); gtk_widget_ref (label16); gtk_object_set_data_full (GTK_OBJECT (window_main), "label16", label16, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label16); gtk_box_pack_start (GTK_BOX (hbox4), label16, TRUE, TRUE, 0); gtk_misc_set_alignment (GTK_MISC (label16), 0.7, 0.5); spinbutton_reswidth_adj = gtk_adjustment_new (400, 16, 4000, 1, 10, 10); spinbutton_reswidth = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_reswidth_adj), 1, 0); gtk_widget_set_name (spinbutton_reswidth, "spinbutton_reswidth"); gtk_widget_ref (spinbutton_reswidth); gtk_object_set_data_full (GTK_OBJECT (window_main), "spinbutton_reswidth", spinbutton_reswidth, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (spinbutton_reswidth); gtk_box_pack_start (GTK_BOX (hbox4), spinbutton_reswidth, TRUE, TRUE, 1); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_reswidth), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbutton_reswidth), GTK_UPDATE_IF_VALID); label17 = gtk_label_new (_("height")); gtk_widget_set_name (label17, "label17"); gtk_widget_ref (label17); gtk_object_set_data_full (GTK_OBJECT (window_main), "label17", label17, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label17); gtk_box_pack_start (GTK_BOX (hbox4), label17, FALSE, TRUE, 0); gtk_misc_set_alignment (GTK_MISC (label17), 0.7, 0.5); spinbutton_resheight_adj = gtk_adjustment_new (300, 16, 4000, 1, 50, 50); spinbutton_resheight = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_resheight_adj), 1, 0); gtk_widget_set_name (spinbutton_resheight, "spinbutton_resheight"); gtk_widget_ref (spinbutton_resheight); gtk_object_set_data_full (GTK_OBJECT (window_main), "spinbutton_resheight", spinbutton_resheight, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (spinbutton_resheight); gtk_box_pack_start (GTK_BOX (hbox4), spinbutton_resheight, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_resheight), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbutton_resheight), GTK_UPDATE_IF_VALID); double_size = gtk_button_new_with_label (_("x2")); gtk_widget_set_name (double_size, "double_size"); gtk_widget_ref (double_size); gtk_object_set_data_full (GTK_OBJECT (window_main), "double_size", double_size, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (double_size); gtk_box_pack_start (GTK_BOX (hbox4), double_size, FALSE, FALSE, 1); gtk_container_set_border_width (GTK_CONTAINER (double_size), 2); halve_size = gtk_button_new_with_label (_("/2")); gtk_widget_set_name (halve_size, "halve_size"); gtk_widget_ref (halve_size); gtk_object_set_data_full (GTK_OBJECT (window_main), "halve_size", halve_size, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (halve_size); gtk_box_pack_start (GTK_BOX (hbox4), halve_size, FALSE, FALSE, 1); gtk_container_set_border_width (GTK_CONTAINER (halve_size), 2); resulting_apply = gtk_button_new_with_label (_("apply")); gtk_widget_set_name (resulting_apply, "resulting_apply"); gtk_widget_ref (resulting_apply); gtk_object_set_data_full (GTK_OBJECT (window_main), "resulting_apply", resulting_apply, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (resulting_apply); gtk_box_pack_start (GTK_BOX (hbox4), resulting_apply, FALSE, FALSE, 6); gtk_container_set_border_width (GTK_CONTAINER (resulting_apply), 2); gtk_signal_connect (GTK_OBJECT (window_main), "delete_event", GTK_SIGNAL_FUNC (on_window_main_delete), NULL); gtk_signal_connect (GTK_OBJECT (load_session), "activate", GTK_SIGNAL_FUNC (on_load_session_activate), NULL); gtk_signal_connect (GTK_OBJECT (save_session), "activate", GTK_SIGNAL_FUNC (on_save_session_activate), NULL); gtk_signal_connect (GTK_OBJECT (add_an_image), "activate", GTK_SIGNAL_FUNC (on_add_an_image_activate), NULL); gtk_signal_connect (GTK_OBJECT (quit1), "activate", GTK_SIGNAL_FUNC (on_quit1_activate), NULL); gtk_signal_connect (GTK_OBJECT (view_images1), "activate", GTK_SIGNAL_FUNC (on_view_images1_activate), NULL); gtk_signal_connect (GTK_OBJECT (show_mag), "activate", GTK_SIGNAL_FUNC (on_show_mag_activate), NULL); gtk_signal_connect (GTK_OBJECT (resulting_image_size), "activate", GTK_SIGNAL_FUNC (on_resulting_image_size_activate), NULL); gtk_signal_connect (GTK_OBJECT (show_morph_factors), "activate", GTK_SIGNAL_FUNC (on_show_morph_factors_activate), NULL); gtk_signal_connect (GTK_OBJECT (interpolate_meshes1), "activate", GTK_SIGNAL_FUNC (on_interpolate_meshes1_activate), NULL); gtk_signal_connect (GTK_OBJECT (morph_images1), "activate", GTK_SIGNAL_FUNC (on_morph_images1_activate), NULL); gtk_signal_connect (GTK_OBJECT (adjust_all_meshes), "activate", GTK_SIGNAL_FUNC (on_adjust_all_meshes_activate), NULL); gtk_signal_connect (GTK_OBJECT (wavelet_equalize), "activate", GTK_SIGNAL_FUNC (on_wavelet_equalize_activate), NULL); gtk_signal_connect (GTK_OBJECT (restore_morph_factors1), "activate", GTK_SIGNAL_FUNC (on_restore_morph_factors1_activate), NULL); gtk_signal_connect (GTK_OBJECT (startr), "activate", GTK_SIGNAL_FUNC (on_restore_start_activate), NULL); gtk_signal_connect (GTK_OBJECT (endr), "activate", GTK_SIGNAL_FUNC (on_restore_end_activate), NULL); gtk_signal_connect (GTK_OBJECT (equalr), "activate", GTK_SIGNAL_FUNC (on_restore_equal_activate), NULL); gtk_signal_connect (GTK_OBJECT (store_morph_factors), "activate", GTK_SIGNAL_FUNC (on_store_morph_factors_activate), NULL); gtk_signal_connect (GTK_OBJECT (starts), "activate", GTK_SIGNAL_FUNC (on_store_start_activate), NULL); gtk_signal_connect (GTK_OBJECT (ende), "activate", GTK_SIGNAL_FUNC (on_store_end_activate), NULL); gtk_signal_connect (GTK_OBJECT (morph_sequence1), "activate", GTK_SIGNAL_FUNC (on_morph_sequence1_activate), NULL); gtk_signal_connect (GTK_OBJECT (guide), "activate", GTK_SIGNAL_FUNC (on_guide_activate), NULL); gtk_signal_connect (GTK_OBJECT (generic_help), "activate", GTK_SIGNAL_FUNC (on_generic_help_activate), NULL); gtk_signal_connect (GTK_OBJECT (warp_help), "activate", GTK_SIGNAL_FUNC (on_warp_help_activate), NULL); gtk_signal_connect (GTK_OBJECT (morph_help1), "activate", GTK_SIGNAL_FUNC (on_morph_help_activate), NULL); gtk_signal_connect (GTK_OBJECT (why_the_beep_1), "activate", GTK_SIGNAL_FUNC (on_why_the_beep_1_activate), NULL); gtk_signal_connect (GTK_OBJECT (load_image), "clicked", GTK_SIGNAL_FUNC (on_loadimage_clicked), NULL); gtk_signal_connect (GTK_OBJECT (load_mesh), "clicked", GTK_SIGNAL_FUNC (on_loadmesh_clicked), NULL); gtk_signal_connect (GTK_OBJECT (save_mesh), "clicked", GTK_SIGNAL_FUNC (on_savemesh_clicked), NULL); gtk_signal_connect (GTK_OBJECT (optionmenu_editview), "released", GTK_SIGNAL_FUNC (on_optionmenu_editview_released), optionmenu_editview_menu); gtk_signal_connect (GTK_OBJECT (optionmenu_editview), "clicked", GTK_SIGNAL_FUNC (on_optionmenu_editview_clicked), NULL); gtk_signal_connect (GTK_OBJECT (settings_button), "clicked", GTK_SIGNAL_FUNC (on_settings_clicked), NULL); gtk_signal_connect (GTK_OBJECT (button_interp_meshes), "clicked", GTK_SIGNAL_FUNC (on_interpolate_meshes1_activate), NULL); gtk_signal_connect (GTK_OBJECT (do_mixing), "clicked", GTK_SIGNAL_FUNC (on_do_mixing_clicked), NULL); gtk_signal_connect (GTK_OBJECT (button_do_morph), "clicked", GTK_SIGNAL_FUNC (on_morph_images1_activate), NULL); gtk_signal_connect (GTK_OBJECT (save_image), "clicked", GTK_SIGNAL_FUNC (on_save_image_clicked), NULL); gtk_signal_connect (GTK_OBJECT (back_to_guide), "clicked", GTK_SIGNAL_FUNC (on_back_to_guide_activate), NULL); gtk_signal_connect (GTK_OBJECT (color_feature), "clicked", GTK_SIGNAL_FUNC (on_color_feature_clicked), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea_color), "expose_event", GTK_SIGNAL_FUNC (on_drawingarea_color_expose_event), NULL); gtk_signal_connect (GTK_OBJECT (combo_entry_feature), "activate", GTK_SIGNAL_FUNC (on_combo_entry_feature_activate), NULL); gtk_signal_connect (GTK_OBJECT (combo_entry_feature), "changed", GTK_SIGNAL_FUNC (on_combo_entry_feature_changed), NULL); gtk_signal_connect (GTK_OBJECT (new_feature), "clicked", GTK_SIGNAL_FUNC (on_new_feature_clicked), NULL); gtk_signal_connect (GTK_OBJECT (rename_feature), "clicked", GTK_SIGNAL_FUNC (on_rename_feature_clicked), NULL); gtk_signal_connect (GTK_OBJECT (pack_feature), "clicked", GTK_SIGNAL_FUNC (on_pack_feature_clicked), NULL); gtk_signal_connect (GTK_OBJECT (unpack_feature), "clicked", GTK_SIGNAL_FUNC (on_unpack_feature_clicked), NULL); gtk_signal_connect (GTK_OBJECT (delete_feature), "clicked", GTK_SIGNAL_FUNC (on_delete_feature_clicked), NULL); gtk_signal_connect (GTK_OBJECT (tool_edit), "clicked", GTK_SIGNAL_FUNC (on_tool_edit_clicked), NULL); gtk_signal_connect (GTK_OBJECT (tool_move), "clicked", GTK_SIGNAL_FUNC (on_tool_move_clicked), NULL); gtk_signal_connect (GTK_OBJECT (tool_stretch), "clicked", GTK_SIGNAL_FUNC (on_tool_stretch_clicked), NULL); gtk_signal_connect (GTK_OBJECT (tool_select), "clicked", GTK_SIGNAL_FUNC (on_tool_select_clicked), NULL); gtk_signal_connect (GTK_OBJECT (tool_unselect), "clicked", GTK_SIGNAL_FUNC (on_tool_unselect_clicked), NULL); gtk_signal_connect (GTK_OBJECT (tool_assign), "clicked", GTK_SIGNAL_FUNC (on_tool_assign_clicked), NULL); gtk_signal_connect (GTK_OBJECT (viewport4), "realize", GTK_SIGNAL_FUNC (on_viewport3_realize), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea2), "motion_notify_event", GTK_SIGNAL_FUNC (on_motion_notify_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea2), "button_press_event", GTK_SIGNAL_FUNC (on_button_press_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea2), "expose_event", GTK_SIGNAL_FUNC (on_expose_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea2), "realize", GTK_SIGNAL_FUNC (on_drawingarea_realize), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea2), "button_release_event", GTK_SIGNAL_FUNC (on_drawingarea_button_release_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea2), "configure_event", GTK_SIGNAL_FUNC (on_drawingarea_configure_event), NULL); gtk_signal_connect (GTK_OBJECT (spinbutton_reswidth), "changed", GTK_SIGNAL_FUNC (on_spinbutton_reswidth_changed), NULL); gtk_signal_connect (GTK_OBJECT (spinbutton_resheight), "changed", GTK_SIGNAL_FUNC (on_spinbutton_resheight_changed), NULL); gtk_signal_connect (GTK_OBJECT (double_size), "clicked", GTK_SIGNAL_FUNC (on_double_size_clicked), NULL); gtk_signal_connect (GTK_OBJECT (halve_size), "clicked", GTK_SIGNAL_FUNC (on_halve_size_clicked), NULL); gtk_signal_connect (GTK_OBJECT (resulting_apply), "clicked", GTK_SIGNAL_FUNC (on_resulting_apply_clicked), NULL); gtk_object_set_data (GTK_OBJECT (window_main), "tooltips", tooltips); gtk_window_add_accel_group (GTK_WINDOW (window_main), accel_group); return window_main; } GtkWidget* create_imageselection1 (void) { GtkWidget *imageselection1; GtkWidget *ok_button1; GtkWidget *cancel_button1; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); imageselection1 = gtk_file_selection_new (_("error!")); gtk_widget_set_name (imageselection1, "imageselection1"); gtk_object_set_data (GTK_OBJECT (imageselection1), "imageselection1", imageselection1); gtk_container_set_border_width (GTK_CONTAINER (imageselection1), 10); GTK_WINDOW (imageselection1)->type = GTK_WINDOW_DIALOG; gtk_window_set_wmclass (GTK_WINDOW (imageselection1), "gtkmorph", "gtkmorph"); ok_button1 = GTK_FILE_SELECTION (imageselection1)->ok_button; gtk_widget_set_name (ok_button1, "ok_button1"); gtk_object_set_data (GTK_OBJECT (imageselection1), "ok_button1", ok_button1); gtk_widget_show (ok_button1); GTK_WIDGET_SET_FLAGS (ok_button1, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, ok_button1, _("load the selected image"), NULL); cancel_button1 = GTK_FILE_SELECTION (imageselection1)->cancel_button; gtk_widget_set_name (cancel_button1, "cancel_button1"); gtk_object_set_data (GTK_OBJECT (imageselection1), "cancel_button1", cancel_button1); gtk_widget_show (cancel_button1); GTK_WIDGET_SET_FLAGS (cancel_button1, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (imageselection1), "destroy_event", GTK_SIGNAL_FUNC (on_imageselection1_destroy_event), NULL); gtk_signal_connect (GTK_OBJECT (ok_button1), "realize", GTK_SIGNAL_FUNC (on_ok_button1_realize), NULL); gtk_signal_connect (GTK_OBJECT (ok_button1), "clicked", GTK_SIGNAL_FUNC (on_ok_button1_clicked), NULL); gtk_signal_connect_object (GTK_OBJECT (cancel_button1), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (imageselection1)); gtk_object_set_data (GTK_OBJECT (imageselection1), "tooltips", tooltips); return imageselection1; } GtkWidget* create_image_win_1 (void) { GtkWidget *image_win_1; GtkWidget *vbox2; GtkWidget *hbox1; GtkWidget *load_image; GtkWidget *load_mesh; GtkWidget *save_mesh; GtkWidget *optionmenu_editview; GtkWidget *optionmenu_editview_menu; GtkWidget *glade_menuitem; GtkWidget *settings_button; GtkWidget *do_warp; GtkWidget *save_image; GtkWidget *back_to_guide; GtkWidget *scrolledwindow_image; GtkWidget *viewport3; GtkWidget *image_frame; GtkWidget *drawingarea1; GtkWidget *handlebox_factors; GtkWidget *frame5; GtkWidget *table2; GtkWidget *label6; GtkWidget *label7; GtkWidget *hscale_mesh; GtkWidget *hscale_image; GtkObject *spinbutton_image_adj; GtkWidget *spinbutton_image; GtkObject *spinbutton_mesh_adj; GtkWidget *spinbutton_mesh; GtkWidget *handleboxsubimage; GtkWidget *frame1; GtkWidget *hbox2; GtkWidget *eyessubimage; GtkWidget *eventbox1; GtkWidget *label8; GtkObject *spinbuttonx_adj; GtkWidget *spinbuttonx; GtkWidget *eventbox2; GtkWidget *label9; GtkObject *spinbuttony_adj; GtkWidget *spinbuttony; GtkWidget *label10; GtkObject *spinbuttonw_adj; GtkWidget *spinbuttonw; GtkWidget *label11; GtkObject *spinbuttonh_adj; GtkWidget *spinbuttonh; GtkWidget *subimage_apply; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); image_win_1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (image_win_1, "image_win_1"); gtk_object_set_data (GTK_OBJECT (image_win_1), "image_win_1", image_win_1); gtk_window_set_title (GTK_WINDOW (image_win_1), _("error!")); gtk_window_set_wmclass (GTK_WINDOW (image_win_1), "gtkmorph", "gtkmorph"); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox2, "vbox2"); gtk_widget_ref (vbox2); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "vbox2", vbox2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox2); gtk_container_add (GTK_CONTAINER (image_win_1), vbox2); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox1, "hbox1"); gtk_widget_ref (hbox1); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "hbox1", hbox1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0); load_image = gtk_button_new_with_label (_("load\nimage")); gtk_widget_set_name (load_image, "load_image"); gtk_widget_ref (load_image); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "load_image", load_image, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (load_image); gtk_box_pack_start (GTK_BOX (hbox1), load_image, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (load_image), 4); load_mesh = gtk_button_new_with_label (_("load\nmesh")); gtk_widget_set_name (load_mesh, "load_mesh"); gtk_widget_ref (load_mesh); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "load_mesh", load_mesh, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (load_mesh); gtk_box_pack_start (GTK_BOX (hbox1), load_mesh, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (load_mesh), 4); save_mesh = gtk_button_new_with_label (_("save\nmesh")); gtk_widget_set_name (save_mesh, "save_mesh"); gtk_widget_ref (save_mesh); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "save_mesh", save_mesh, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (save_mesh); gtk_box_pack_start (GTK_BOX (hbox1), save_mesh, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (save_mesh), 4); optionmenu_editview = gtk_option_menu_new (); gtk_widget_set_name (optionmenu_editview, "optionmenu_editview"); gtk_widget_ref (optionmenu_editview); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "optionmenu_editview", optionmenu_editview, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (optionmenu_editview); gtk_box_pack_start (GTK_BOX (hbox1), optionmenu_editview, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (optionmenu_editview), 3); gtk_tooltips_set_tip (tooltips, optionmenu_editview, _("``edit mesh'': view the loaded image and edit the mesh on it. ``view warp'': view the result of warping the loaded image from this mesh to the resulting mesh. ``v. warp&meshes'' as before but with both meshes on. ``choose subimage'' choose which subimage of the loaded image you wish to use. You can also use the 'settings' button to change these settings more finely."), NULL); optionmenu_editview_menu = gtk_menu_new (); glade_menuitem = gtk_menu_item_new_with_label (_("edit mesh")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (optionmenu_editview_menu), glade_menuitem); glade_menuitem = gtk_menu_item_new_with_label (_("view warp")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (optionmenu_editview_menu), glade_menuitem); glade_menuitem = gtk_menu_item_new_with_label (_("v. warp&meshes")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (optionmenu_editview_menu), glade_menuitem); glade_menuitem = gtk_menu_item_new_with_label (_("choose subimage")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (optionmenu_editview_menu), glade_menuitem); gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu_editview), optionmenu_editview_menu); settings_button = gtk_button_new_with_label (_("settings")); gtk_widget_set_name (settings_button, "settings_button"); gtk_widget_ref (settings_button); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "settings_button", settings_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (settings_button); gtk_box_pack_start (GTK_BOX (hbox1), settings_button, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (settings_button), 4); do_warp = gtk_button_new_with_label (_("do\nwarp")); gtk_widget_set_name (do_warp, "do_warp"); gtk_widget_ref (do_warp); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "do_warp", do_warp, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (do_warp); gtk_box_pack_start (GTK_BOX (hbox1), do_warp, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (do_warp), 4); gtk_tooltips_set_tip (tooltips, do_warp, _("warp this image from this mesh to the resulting mesh, and show the result in this window or an accessory window"), NULL); save_image = gtk_button_new_with_label (_("save\nimage")); gtk_widget_set_name (save_image, "save_image"); gtk_widget_ref (save_image); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "save_image", save_image, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (save_image); gtk_box_pack_start (GTK_BOX (hbox1), save_image, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (save_image), 4); gtk_tooltips_set_tip (tooltips, save_image, _("it saves whatever image is currently shown in the window"), NULL); back_to_guide = gtk_button_new_with_label (_("guide")); gtk_widget_set_name (back_to_guide, "back_to_guide"); gtk_widget_ref (back_to_guide); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "back_to_guide", back_to_guide, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (back_to_guide); gtk_box_pack_start (GTK_BOX (hbox1), back_to_guide, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (back_to_guide), 4); gtk_tooltips_set_tip (tooltips, back_to_guide, _("back to guide"), NULL); scrolledwindow_image = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow_image, "scrolledwindow_image"); gtk_widget_ref (scrolledwindow_image); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "scrolledwindow_image", scrolledwindow_image, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (scrolledwindow_image); gtk_box_pack_start (GTK_BOX (vbox2), scrolledwindow_image, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow_image), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport3 = gtk_viewport_new (NULL, NULL); gtk_widget_set_name (viewport3, "viewport3"); gtk_widget_ref (viewport3); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "viewport3", viewport3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (viewport3); gtk_container_add (GTK_CONTAINER (scrolledwindow_image), viewport3); gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport3), GTK_SHADOW_ETCHED_OUT); image_frame = gtk_frame_new (_("error")); gtk_widget_set_name (image_frame, "image_frame"); gtk_widget_ref (image_frame); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "image_frame", image_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (image_frame); gtk_container_add (GTK_CONTAINER (viewport3), image_frame); drawingarea1 = gtk_drawing_area_new (); gtk_widget_set_name (drawingarea1, "drawingarea1"); gtk_widget_ref (drawingarea1); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "drawingarea1", drawingarea1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (drawingarea1); gtk_container_add (GTK_CONTAINER (image_frame), drawingarea1); GTK_WIDGET_SET_FLAGS (drawingarea1, GTK_CAN_FOCUS); gtk_widget_set_events (drawingarea1, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK); gtk_widget_set_extension_events (drawingarea1, GDK_EXTENSION_EVENTS_ALL); handlebox_factors = gtk_handle_box_new (); gtk_widget_set_name (handlebox_factors, "handlebox_factors"); gtk_widget_ref (handlebox_factors); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "handlebox_factors", handlebox_factors, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (handlebox_factors); gtk_box_pack_start (GTK_BOX (vbox2), handlebox_factors, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, handlebox_factors, _("these coefficents decide how much this image/mesh will influence the final morph"), NULL); frame5 = gtk_frame_new (_("coefficients")); gtk_widget_set_name (frame5, "frame5"); gtk_widget_ref (frame5); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "frame5", frame5, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (frame5); gtk_container_add (GTK_CONTAINER (handlebox_factors), frame5); table2 = gtk_table_new (2, 3, FALSE); gtk_widget_set_name (table2, "table2"); gtk_widget_ref (table2); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "table2", table2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (table2); gtk_container_add (GTK_CONTAINER (frame5), table2); gtk_container_set_border_width (GTK_CONTAINER (table2), 5); gtk_table_set_row_spacings (GTK_TABLE (table2), 5); gtk_table_set_col_spacings (GTK_TABLE (table2), 6); label6 = gtk_label_new (_("image\nblending")); gtk_widget_set_name (label6, "label6"); gtk_widget_ref (label6); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "label6", label6, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label6); gtk_table_attach (GTK_TABLE (table2), label6, 0, 1, 1, 2, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); label7 = gtk_label_new (_("mesh\ninterp.")); gtk_widget_set_name (label7, "label7"); gtk_widget_ref (label7); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "label7", label7, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label7); gtk_table_attach (GTK_TABLE (table2), label7, 0, 1, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); hscale_mesh = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (20, -100, 200, 1, 10, 10))); gtk_widget_set_name (hscale_mesh, "hscale_mesh"); gtk_widget_ref (hscale_mesh); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "hscale_mesh", hscale_mesh, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hscale_mesh); gtk_table_attach (GTK_TABLE (table2), hscale_mesh, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_scale_set_value_pos (GTK_SCALE (hscale_mesh), GTK_POS_BOTTOM); gtk_scale_set_digits (GTK_SCALE (hscale_mesh), 0); gtk_range_set_update_policy (GTK_RANGE (hscale_mesh), GTK_UPDATE_DELAYED); hscale_image = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (20, -100, 200, 1, 10, 10))); gtk_widget_set_name (hscale_image, "hscale_image"); gtk_widget_ref (hscale_image); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "hscale_image", hscale_image, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hscale_image); gtk_table_attach (GTK_TABLE (table2), hscale_image, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_scale_set_value_pos (GTK_SCALE (hscale_image), GTK_POS_BOTTOM); gtk_scale_set_digits (GTK_SCALE (hscale_image), 0); gtk_range_set_update_policy (GTK_RANGE (hscale_image), GTK_UPDATE_DELAYED); spinbutton_image_adj = gtk_adjustment_new (20, -100, 200, 1, 10, 10); spinbutton_image = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_image_adj), 1, 0); gtk_widget_set_name (spinbutton_image, "spinbutton_image"); gtk_widget_ref (spinbutton_image); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "spinbutton_image", spinbutton_image, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (spinbutton_image); gtk_table_attach (GTK_TABLE (table2), spinbutton_image, 2, 3, 1, 2, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, spinbutton_image, _("when you morph the images, or you ``do mixing'', this factor will measure how much this image will show in the mixing in the resulting image"), NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_image), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbutton_image), GTK_UPDATE_IF_VALID); spinbutton_mesh_adj = gtk_adjustment_new (20, -100, 200, 1, 10, 10); spinbutton_mesh = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_mesh_adj), 1, 0); gtk_widget_set_name (spinbutton_mesh, "spinbutton_mesh"); gtk_widget_ref (spinbutton_mesh); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "spinbutton_mesh", spinbutton_mesh, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (spinbutton_mesh); gtk_table_attach (GTK_TABLE (table2), spinbutton_mesh, 2, 3, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, spinbutton_mesh, _("when you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's mesh"), NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_mesh), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinbutton_mesh), GTK_UPDATE_IF_VALID); handleboxsubimage = gtk_handle_box_new (); gtk_widget_set_name (handleboxsubimage, "handleboxsubimage"); gtk_widget_ref (handleboxsubimage); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "handleboxsubimage", handleboxsubimage, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (handleboxsubimage); gtk_box_pack_start (GTK_BOX (vbox2), handleboxsubimage, FALSE, FALSE, 0); frame1 = gtk_frame_new (_("subimage position")); gtk_widget_set_name (frame1, "frame1"); gtk_widget_ref (frame1); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "frame1", frame1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (frame1); gtk_container_add (GTK_CONTAINER (handleboxsubimage), frame1); hbox2 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox2, "hbox2"); gtk_widget_ref (hbox2); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "hbox2", hbox2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox2); gtk_container_add (GTK_CONTAINER (frame1), hbox2); eyessubimage = gtk_button_new_with_label (_("reset")); gtk_widget_set_name (eyessubimage, "eyessubimage"); gtk_widget_ref (eyessubimage); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "eyessubimage", eyessubimage, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (eyessubimage); gtk_box_pack_start (GTK_BOX (hbox2), eyessubimage, FALSE, FALSE, 1); gtk_tooltips_set_tip (tooltips, eyessubimage, _("infer the subimage from the eyes position"), NULL); eventbox1 = gtk_event_box_new (); gtk_widget_set_name (eventbox1, "eventbox1"); gtk_widget_ref (eventbox1); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "eventbox1", eventbox1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (eventbox1); gtk_box_pack_start (GTK_BOX (hbox2), eventbox1, TRUE, TRUE, 2); gtk_tooltips_set_tip (tooltips, eventbox1, _("x coordinate of center"), NULL); label8 = gtk_label_new (_("c x")); gtk_widget_set_name (label8, "label8"); gtk_widget_ref (label8); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "label8", label8, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label8); gtk_container_add (GTK_CONTAINER (eventbox1), label8); gtk_misc_set_alignment (GTK_MISC (label8), 0.75, 0.5); spinbuttonx_adj = gtk_adjustment_new (0, -800, 800, 1, 10, 10); spinbuttonx = gtk_spin_button_new (GTK_ADJUSTMENT (spinbuttonx_adj), 1, 0); gtk_widget_set_name (spinbuttonx, "spinbuttonx"); gtk_widget_ref (spinbuttonx); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "spinbuttonx", spinbuttonx, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (spinbuttonx); gtk_box_pack_start (GTK_BOX (hbox2), spinbuttonx, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbuttonx), TRUE); eventbox2 = gtk_event_box_new (); gtk_widget_set_name (eventbox2, "eventbox2"); gtk_widget_ref (eventbox2); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "eventbox2", eventbox2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (eventbox2); gtk_box_pack_start (GTK_BOX (hbox2), eventbox2, TRUE, TRUE, 2); gtk_tooltips_set_tip (tooltips, eventbox2, _("y coordinate of center"), NULL); label9 = gtk_label_new (_("c y")); gtk_widget_set_name (label9, "label9"); gtk_widget_ref (label9); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "label9", label9, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label9); gtk_container_add (GTK_CONTAINER (eventbox2), label9); gtk_misc_set_alignment (GTK_MISC (label9), 0.75, 0.5); spinbuttony_adj = gtk_adjustment_new (0, -800, 800, 1, 10, 10); spinbuttony = gtk_spin_button_new (GTK_ADJUSTMENT (spinbuttony_adj), 1, 0); gtk_widget_set_name (spinbuttony, "spinbuttony"); gtk_widget_ref (spinbuttony); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "spinbuttony", spinbuttony, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (spinbuttony); gtk_box_pack_start (GTK_BOX (hbox2), spinbuttony, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbuttony), TRUE); label10 = gtk_label_new (_("width")); gtk_widget_set_name (label10, "label10"); gtk_widget_ref (label10); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "label10", label10, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label10); gtk_box_pack_start (GTK_BOX (hbox2), label10, TRUE, FALSE, 0); spinbuttonw_adj = gtk_adjustment_new (400, 8, 1600, 1, 100, 100); spinbuttonw = gtk_spin_button_new (GTK_ADJUSTMENT (spinbuttonw_adj), 1, 0); gtk_widget_set_name (spinbuttonw, "spinbuttonw"); gtk_widget_ref (spinbuttonw); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "spinbuttonw", spinbuttonw, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (spinbuttonw); gtk_box_pack_start (GTK_BOX (hbox2), spinbuttonw, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbuttonw), TRUE); label11 = gtk_label_new (_("height")); gtk_widget_set_name (label11, "label11"); gtk_widget_ref (label11); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "label11", label11, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label11); gtk_box_pack_start (GTK_BOX (hbox2), label11, TRUE, FALSE, 0); spinbuttonh_adj = gtk_adjustment_new (300, 8, 1600, 1, 100, 100); spinbuttonh = gtk_spin_button_new (GTK_ADJUSTMENT (spinbuttonh_adj), 1, 0); gtk_widget_set_name (spinbuttonh, "spinbuttonh"); gtk_widget_ref (spinbuttonh); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "spinbuttonh", spinbuttonh, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (spinbuttonh); gtk_box_pack_start (GTK_BOX (hbox2), spinbuttonh, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbuttonh), TRUE); subimage_apply = gtk_button_new_with_label (_("apply")); gtk_widget_set_name (subimage_apply, "subimage_apply"); gtk_widget_ref (subimage_apply); gtk_object_set_data_full (GTK_OBJECT (image_win_1), "subimage_apply", subimage_apply, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (subimage_apply); gtk_box_pack_start (GTK_BOX (hbox2), subimage_apply, FALSE, FALSE, 7); gtk_container_set_border_width (GTK_CONTAINER (subimage_apply), 1); gtk_signal_connect (GTK_OBJECT (image_win_1), "delete_event", GTK_SIGNAL_FUNC (on_image_win_1_delete_event), NULL); gtk_signal_connect (GTK_OBJECT (load_image), "clicked", GTK_SIGNAL_FUNC (on_loadimage_clicked), NULL); gtk_signal_connect (GTK_OBJECT (load_mesh), "clicked", GTK_SIGNAL_FUNC (on_loadmesh_clicked), NULL); gtk_signal_connect (GTK_OBJECT (save_mesh), "clicked", GTK_SIGNAL_FUNC (on_savemesh_clicked), NULL); gtk_signal_connect (GTK_OBJECT (optionmenu_editview), "released", GTK_SIGNAL_FUNC (on_optionmenu_editview_released), NULL); gtk_signal_connect (GTK_OBJECT (optionmenu_editview), "pressed", GTK_SIGNAL_FUNC (on_optionmenu_editview_pressed), NULL); gtk_signal_connect (GTK_OBJECT (settings_button), "clicked", GTK_SIGNAL_FUNC (on_settings_clicked), NULL); gtk_signal_connect (GTK_OBJECT (do_warp), "clicked", GTK_SIGNAL_FUNC (on_do_warp_clicked), NULL); gtk_signal_connect (GTK_OBJECT (save_image), "clicked", GTK_SIGNAL_FUNC (on_save_image_clicked), NULL); gtk_signal_connect (GTK_OBJECT (back_to_guide), "clicked", GTK_SIGNAL_FUNC (on_back_to_guide_activate), NULL); gtk_signal_connect (GTK_OBJECT (viewport3), "realize", GTK_SIGNAL_FUNC (on_viewport3_realize), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea1), "motion_notify_event", GTK_SIGNAL_FUNC (on_motion_notify_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea1), "button_press_event", GTK_SIGNAL_FUNC (on_button_press_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea1), "expose_event", GTK_SIGNAL_FUNC (on_expose_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea1), "realize", GTK_SIGNAL_FUNC (on_drawingarea_realize), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea1), "button_release_event", GTK_SIGNAL_FUNC (on_drawingarea_button_release_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea1), "configure_event", GTK_SIGNAL_FUNC (on_drawingarea_configure_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea1), "key_press_event", GTK_SIGNAL_FUNC (on_drawingarea_key_press_event), NULL); gtk_signal_connect_after (GTK_OBJECT (handlebox_factors), "show", GTK_SIGNAL_FUNC (on_handlebox_factors_show), NULL); gtk_signal_connect (GTK_OBJECT (hscale_mesh), "button_release_event", GTK_SIGNAL_FUNC (on_hscale_mesh_button_release_event), spinbutton_mesh); gtk_signal_connect (GTK_OBJECT (hscale_image), "button_release_event", GTK_SIGNAL_FUNC (on_hscale_image_button_release_event), spinbutton_image); gtk_signal_connect (GTK_OBJECT (spinbutton_image), "changed", GTK_SIGNAL_FUNC (on_spinbutton_image_changed), hscale_image); gtk_signal_connect (GTK_OBJECT (spinbutton_mesh), "changed", GTK_SIGNAL_FUNC (on_spinbutton_mesh_changed), hscale_mesh); gtk_signal_connect_after (GTK_OBJECT (handleboxsubimage), "show", GTK_SIGNAL_FUNC (on_handleboxsubimage_show), NULL); gtk_signal_connect (GTK_OBJECT (eyessubimage), "clicked", GTK_SIGNAL_FUNC (on_reset_subimage_clicked), NULL); gtk_signal_connect (GTK_OBJECT (spinbuttonx), "changed", GTK_SIGNAL_FUNC (on_spinbuttonx_changed), NULL); gtk_signal_connect (GTK_OBJECT (spinbuttony), "changed", GTK_SIGNAL_FUNC (on_spinbuttony_changed), NULL); gtk_signal_connect (GTK_OBJECT (spinbuttonw), "changed", GTK_SIGNAL_FUNC (on_spinbuttonw_changed), NULL); gtk_signal_connect (GTK_OBJECT (spinbuttonh), "changed", GTK_SIGNAL_FUNC (on_spinbuttonh_changed), NULL); gtk_signal_connect (GTK_OBJECT (subimage_apply), "clicked", GTK_SIGNAL_FUNC (on_subimage_apply_clicked), NULL); gtk_object_set_data (GTK_OBJECT (image_win_1), "tooltips", tooltips); return image_win_1; } GtkWidget* create_dialogwarning (void) { GtkWidget *dialogwarning; GtkWidget *dialog_vbox1; GtkWidget *labelwarning; GtkWidget *dialog_action_area1; GtkWidget *ok; dialogwarning = gtk_dialog_new (); gtk_widget_set_name (dialogwarning, "dialogwarning"); gtk_object_set_data (GTK_OBJECT (dialogwarning), "dialogwarning", dialogwarning); gtk_window_set_title (GTK_WINDOW (dialogwarning), _("warning")); GTK_WINDOW (dialogwarning)->type = GTK_WINDOW_DIALOG; gtk_window_set_position (GTK_WINDOW (dialogwarning), GTK_WIN_POS_MOUSE); gtk_window_set_policy (GTK_WINDOW (dialogwarning), TRUE, TRUE, FALSE); gtk_window_set_wmclass (GTK_WINDOW (dialogwarning), "xmorph-gtk", "xmorph-gtk"); dialog_vbox1 = GTK_DIALOG (dialogwarning)->vbox; gtk_widget_set_name (dialog_vbox1, "dialog_vbox1"); gtk_object_set_data (GTK_OBJECT (dialogwarning), "dialog_vbox1", dialog_vbox1); gtk_widget_show (dialog_vbox1); labelwarning = gtk_label_new (_("warning!")); gtk_widget_set_name (labelwarning, "labelwarning"); gtk_widget_ref (labelwarning); gtk_object_set_data_full (GTK_OBJECT (dialogwarning), "labelwarning", labelwarning, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (labelwarning); gtk_box_pack_start (GTK_BOX (dialog_vbox1), labelwarning, TRUE, TRUE, 0); gtk_label_set_justify (GTK_LABEL (labelwarning), GTK_JUSTIFY_LEFT); gtk_label_set_line_wrap (GTK_LABEL (labelwarning), TRUE); dialog_action_area1 = GTK_DIALOG (dialogwarning)->action_area; gtk_widget_set_name (dialog_action_area1, "dialog_action_area1"); gtk_object_set_data (GTK_OBJECT (dialogwarning), "dialog_action_area1", dialog_action_area1); gtk_widget_show (dialog_action_area1); gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area1), 10); ok = gtk_button_new_with_label (_("ok")); gtk_widget_set_name (ok, "ok"); gtk_widget_ref (ok); gtk_object_set_data_full (GTK_OBJECT (dialogwarning), "ok", ok, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ok); gtk_box_pack_start (GTK_BOX (dialog_action_area1), ok, FALSE, TRUE, 6); gtk_container_set_border_width (GTK_CONTAINER (ok), 2); GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (dialogwarning), "delete_event", GTK_SIGNAL_FUNC (on_dialogwarning_delete_event), NULL); gtk_signal_connect (GTK_OBJECT (labelwarning), "show", GTK_SIGNAL_FUNC (on_labelwarning_show), NULL); gtk_signal_connect (GTK_OBJECT (labelwarning), "realize", GTK_SIGNAL_FUNC (on_labelwarning_realize), NULL); gtk_signal_connect_object (GTK_OBJECT (ok), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (dialogwarning)); gtk_widget_grab_focus (ok); gtk_widget_grab_default (ok); return dialogwarning; } GtkWidget* create_window_warped (void) { GtkWidget *window_warped; GtkWidget *scrolledwindow6; GtkWidget *viewport5; GtkWidget *drawingarea_warped; window_warped = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (window_warped, "window_warped"); gtk_object_set_data (GTK_OBJECT (window_warped), "window_warped", window_warped); gtk_window_set_title (GTK_WINDOW (window_warped), _("warped image")); gtk_window_set_default_size (GTK_WINDOW (window_warped), 200, 200); scrolledwindow6 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow6, "scrolledwindow6"); gtk_widget_ref (scrolledwindow6); gtk_object_set_data_full (GTK_OBJECT (window_warped), "scrolledwindow6", scrolledwindow6, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (scrolledwindow6); gtk_container_add (GTK_CONTAINER (window_warped), scrolledwindow6); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow6), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport5 = gtk_viewport_new (NULL, NULL); gtk_widget_set_name (viewport5, "viewport5"); gtk_widget_ref (viewport5); gtk_object_set_data_full (GTK_OBJECT (window_warped), "viewport5", viewport5, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (viewport5); gtk_container_add (GTK_CONTAINER (scrolledwindow6), viewport5); drawingarea_warped = gtk_drawing_area_new (); gtk_widget_set_name (drawingarea_warped, "drawingarea_warped"); gtk_widget_ref (drawingarea_warped); gtk_object_set_data_full (GTK_OBJECT (window_warped), "drawingarea_warped", drawingarea_warped, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (drawingarea_warped); gtk_container_add (GTK_CONTAINER (viewport5), drawingarea_warped); gtk_signal_connect (GTK_OBJECT (window_warped), "delete_event", GTK_SIGNAL_FUNC (on_window_warped_delete_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea_warped), "expose_event", GTK_SIGNAL_FUNC (on_drawingarea_warped_expose_event), NULL); gtk_signal_connect (GTK_OBJECT (drawingarea_warped), "configure_event", GTK_SIGNAL_FUNC (on_drawingarea_warped_configure_event), NULL); return window_warped; } GtkWidget* create_menuEditMesh (void) { GtkWidget *menuEditMesh; GtkAccelGroup *menuEditMesh_accels; GtkWidget *unselect_point; GtkWidget *select_point; GtkWidget *assign_point; GtkWidget *adjust; GtkWidget *separator5; GtkWidget *add_horizontal_line; GtkWidget *add_vertical_line; GtkWidget *del_horizontal_line; GtkWidget *del_vertical_line; GtkWidget *separator13; GtkWidget *smooth; GtkAccelGroup *accel_group; accel_group = gtk_accel_group_new (); menuEditMesh = gtk_menu_new (); gtk_widget_set_name (menuEditMesh, "menuEditMesh"); gtk_object_set_data (GTK_OBJECT (menuEditMesh), "menuEditMesh", menuEditMesh); menuEditMesh_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (menuEditMesh)); unselect_point = gtk_menu_item_new_with_label (_("unselect point")); gtk_widget_set_name (unselect_point, "unselect_point"); gtk_widget_ref (unselect_point); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "unselect_point", unselect_point, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (unselect_point); gtk_container_add (GTK_CONTAINER (menuEditMesh), unselect_point); select_point = gtk_menu_item_new_with_label (_("select point")); gtk_widget_set_name (select_point, "select_point"); gtk_widget_ref (select_point); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "select_point", select_point, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (select_point); gtk_container_add (GTK_CONTAINER (menuEditMesh), select_point); assign_point = gtk_menu_item_new_with_label (_("assign point")); gtk_widget_set_name (assign_point, "assign_point"); gtk_widget_ref (assign_point); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "assign_point", assign_point, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (assign_point); gtk_container_add (GTK_CONTAINER (menuEditMesh), assign_point); adjust = gtk_menu_item_new_with_label (_("adjust")); gtk_widget_set_name (adjust, "adjust"); gtk_widget_ref (adjust); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "adjust", adjust, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (adjust); gtk_container_add (GTK_CONTAINER (menuEditMesh), adjust); separator5 = gtk_menu_item_new (); gtk_widget_set_name (separator5, "separator5"); gtk_widget_ref (separator5); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "separator5", separator5, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (separator5); gtk_container_add (GTK_CONTAINER (menuEditMesh), separator5); gtk_widget_set_sensitive (separator5, FALSE); add_horizontal_line = gtk_menu_item_new_with_label (_("add horizontal line")); gtk_widget_set_name (add_horizontal_line, "add_horizontal_line"); gtk_widget_ref (add_horizontal_line); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "add_horizontal_line", add_horizontal_line, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (add_horizontal_line); gtk_container_add (GTK_CONTAINER (menuEditMesh), add_horizontal_line); gtk_widget_add_accelerator (add_horizontal_line, "activate", accel_group, GDK_H, 0, GTK_ACCEL_VISIBLE); add_vertical_line = gtk_menu_item_new_with_label (_("add vertical line")); gtk_widget_set_name (add_vertical_line, "add_vertical_line"); gtk_widget_ref (add_vertical_line); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "add_vertical_line", add_vertical_line, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (add_vertical_line); gtk_container_add (GTK_CONTAINER (menuEditMesh), add_vertical_line); gtk_widget_add_accelerator (add_vertical_line, "activate", accel_group, GDK_V, 0, GTK_ACCEL_VISIBLE); del_horizontal_line = gtk_menu_item_new_with_label (_("del horizontal line")); gtk_widget_set_name (del_horizontal_line, "del_horizontal_line"); gtk_widget_ref (del_horizontal_line); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "del_horizontal_line", del_horizontal_line, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (del_horizontal_line); gtk_container_add (GTK_CONTAINER (menuEditMesh), del_horizontal_line); gtk_widget_add_accelerator (del_horizontal_line, "activate", accel_group, GDK_H, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); del_vertical_line = gtk_menu_item_new_with_label (_("del vertical line")); gtk_widget_set_name (del_vertical_line, "del_vertical_line"); gtk_widget_ref (del_vertical_line); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "del_vertical_line", del_vertical_line, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (del_vertical_line); gtk_container_add (GTK_CONTAINER (menuEditMesh), del_vertical_line); gtk_widget_add_accelerator (del_vertical_line, "activate", accel_group, GDK_V, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); separator13 = gtk_menu_item_new (); gtk_widget_set_name (separator13, "separator13"); gtk_widget_ref (separator13); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "separator13", separator13, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (separator13); gtk_container_add (GTK_CONTAINER (menuEditMesh), separator13); gtk_widget_set_sensitive (separator13, FALSE); smooth = gtk_menu_item_new_with_label (_("smooth")); gtk_widget_set_name (smooth, "smooth"); gtk_widget_ref (smooth); gtk_object_set_data_full (GTK_OBJECT (menuEditMesh), "smooth", smooth, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (smooth); gtk_container_add (GTK_CONTAINER (menuEditMesh), smooth); gtk_signal_connect (GTK_OBJECT (unselect_point), "activate", GTK_SIGNAL_FUNC (on_unselect_point_activate), NULL); gtk_signal_connect (GTK_OBJECT (select_point), "activate", GTK_SIGNAL_FUNC (on_select_point_activate), NULL); gtk_signal_connect (GTK_OBJECT (assign_point), "activate", GTK_SIGNAL_FUNC (on_assign_point_activate), NULL); gtk_signal_connect (GTK_OBJECT (adjust), "activate", GTK_SIGNAL_FUNC (on_adjust_activate), NULL); gtk_signal_connect (GTK_OBJECT (add_horizontal_line), "activate", GTK_SIGNAL_FUNC (on_add_horizontal_line_activate), NULL); gtk_signal_connect (GTK_OBJECT (add_vertical_line), "activate", GTK_SIGNAL_FUNC (on_add_vertical_line_activate), NULL); gtk_signal_connect (GTK_OBJECT (del_horizontal_line), "activate", GTK_SIGNAL_FUNC (on_del_horizontal_line_activate), NULL); gtk_signal_connect (GTK_OBJECT (del_vertical_line), "activate", GTK_SIGNAL_FUNC (on_del_vertical_line_activate), NULL); gtk_signal_connect (GTK_OBJECT (smooth), "activate", GTK_SIGNAL_FUNC (on_menu_smooth_activate), NULL); gtk_menu_set_accel_group (GTK_MENU (menuEditMesh), accel_group); return menuEditMesh; } GtkWidget* create_window_movie (void) { GtkWidget *window_movie; GtkWidget *vbox4; GtkWidget *hbox5; GtkWidget *eventbox4; GtkWidget *label19; GtkObject *spinbutton_n_files_adj; GtkWidget *spinbutton_n_files; GtkWidget *hbox6; GtkWidget *eventbox3; GtkWidget *label18; GtkObject *spinbutton_first_file_adj; GtkWidget *spinbutton_first_file; GtkWidget *hbox7; GtkWidget *labelfile; GtkWidget *file_base_name; GtkWidget *frame4; GtkWidget *table5; GtkWidget *animated_gif; GtkWidget *animate; GtkWidget *replay; GtkWidget *animated_mpeg; GtkWidget *pixmap2; GtkWidget *hseparator1; GtkWidget *hbox8; GtkWidget *ok; GtkWidget *cancel; GtkWidget *help; GtkAccelGroup *accel_group; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); accel_group = gtk_accel_group_new (); window_movie = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (window_movie, "window_movie"); gtk_object_set_data (GTK_OBJECT (window_movie), "window_movie", window_movie); gtk_window_set_title (GTK_WINDOW (window_movie), _("gtkmorph movie")); vbox4 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox4, "vbox4"); gtk_widget_ref (vbox4); gtk_object_set_data_full (GTK_OBJECT (window_movie), "vbox4", vbox4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox4); gtk_container_add (GTK_CONTAINER (window_movie), vbox4); hbox5 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox5, "hbox5"); gtk_widget_ref (hbox5); gtk_object_set_data_full (GTK_OBJECT (window_movie), "hbox5", hbox5, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox5); gtk_box_pack_start (GTK_BOX (vbox4), hbox5, TRUE, TRUE, 0); eventbox4 = gtk_event_box_new (); gtk_widget_set_name (eventbox4, "eventbox4"); gtk_widget_ref (eventbox4); gtk_object_set_data_full (GTK_OBJECT (window_movie), "eventbox4", eventbox4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (eventbox4); gtk_box_pack_start (GTK_BOX (hbox5), eventbox4, FALSE, FALSE, 4); gtk_tooltips_set_tip (tooltips, eventbox4, _("how many frames will be saved; each will be saved in a file"), NULL); label19 = gtk_label_new (_("how many frames")); gtk_widget_set_name (label19, "label19"); gtk_widget_ref (label19); gtk_object_set_data_full (GTK_OBJECT (window_movie), "label19", label19, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label19); gtk_container_add (GTK_CONTAINER (eventbox4), label19); gtk_misc_set_alignment (GTK_MISC (label19), 0, 0.5); spinbutton_n_files_adj = gtk_adjustment_new (10, 2, 100, 1, 10, 10); spinbutton_n_files = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_n_files_adj), 1, 0); gtk_widget_set_name (spinbutton_n_files, "spinbutton_n_files"); gtk_widget_ref (spinbutton_n_files); gtk_object_set_data_full (GTK_OBJECT (window_movie), "spinbutton_n_files", spinbutton_n_files, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (spinbutton_n_files); gtk_box_pack_start (GTK_BOX (hbox5), spinbutton_n_files, FALSE, TRUE, 3); gtk_widget_set_usize (spinbutton_n_files, 60, -2); hbox6 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox6, "hbox6"); gtk_widget_ref (hbox6); gtk_object_set_data_full (GTK_OBJECT (window_movie), "hbox6", hbox6, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox6); gtk_box_pack_start (GTK_BOX (vbox4), hbox6, TRUE, TRUE, 5); eventbox3 = gtk_event_box_new (); gtk_widget_set_name (eventbox3, "eventbox3"); gtk_widget_ref (eventbox3); gtk_object_set_data_full (GTK_OBJECT (window_movie), "eventbox3", eventbox3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (eventbox3); gtk_box_pack_start (GTK_BOX (hbox6), eventbox3, FALSE, FALSE, 4); gtk_tooltips_set_tip (tooltips, eventbox3, _("the files of the frames will be numbered sequentially starting from this number"), NULL); label18 = gtk_label_new (_("number of first file")); gtk_widget_set_name (label18, "label18"); gtk_widget_ref (label18); gtk_object_set_data_full (GTK_OBJECT (window_movie), "label18", label18, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label18); gtk_container_add (GTK_CONTAINER (eventbox3), label18); gtk_misc_set_alignment (GTK_MISC (label18), 0, 0.5); spinbutton_first_file_adj = gtk_adjustment_new (1, -100, 100, 1, 10, 10); spinbutton_first_file = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_first_file_adj), 1, 0); gtk_widget_set_name (spinbutton_first_file, "spinbutton_first_file"); gtk_widget_ref (spinbutton_first_file); gtk_object_set_data_full (GTK_OBJECT (window_movie), "spinbutton_first_file", spinbutton_first_file, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (spinbutton_first_file); gtk_box_pack_start (GTK_BOX (hbox6), spinbutton_first_file, FALSE, FALSE, 4); gtk_widget_set_usize (spinbutton_first_file, 60, -2); hbox7 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox7, "hbox7"); gtk_widget_ref (hbox7); gtk_object_set_data_full (GTK_OBJECT (window_movie), "hbox7", hbox7, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox7); gtk_box_pack_start (GTK_BOX (vbox4), hbox7, TRUE, TRUE, 4); labelfile = gtk_label_new (_("file base name")); gtk_widget_set_name (labelfile, "labelfile"); gtk_widget_ref (labelfile); gtk_object_set_data_full (GTK_OBJECT (window_movie), "labelfile", labelfile, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (labelfile); gtk_box_pack_start (GTK_BOX (hbox7), labelfile, FALSE, FALSE, 4); gtk_misc_set_alignment (GTK_MISC (labelfile), 0, 0.5); file_base_name = gtk_entry_new (); gtk_widget_set_name (file_base_name, "file_base_name"); gtk_widget_ref (file_base_name); gtk_object_set_data_full (GTK_OBJECT (window_movie), "file_base_name", file_base_name, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (file_base_name); gtk_box_pack_start (GTK_BOX (hbox7), file_base_name, TRUE, TRUE, 3); gtk_entry_set_text (GTK_ENTRY (file_base_name), _("frame")); frame4 = gtk_frame_new (_("animations")); gtk_widget_set_name (frame4, "frame4"); gtk_widget_ref (frame4); gtk_object_set_data_full (GTK_OBJECT (window_movie), "frame4", frame4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (frame4); gtk_box_pack_start (GTK_BOX (vbox4), frame4, TRUE, TRUE, 2); table5 = gtk_table_new (3, 2, TRUE); gtk_widget_set_name (table5, "table5"); gtk_widget_ref (table5); gtk_object_set_data_full (GTK_OBJECT (window_movie), "table5", table5, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (table5); gtk_container_add (GTK_CONTAINER (frame4), table5); animated_gif = gtk_check_button_new_with_label (_("create animated gif")); gtk_widget_set_name (animated_gif, "animated_gif"); gtk_widget_ref (animated_gif); gtk_object_set_data_full (GTK_OBJECT (window_movie), "animated_gif", animated_gif, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (animated_gif); gtk_table_attach (GTK_TABLE (table5), animated_gif, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, animated_gif, _("creates an animated gif (needs 'convert' from imagemagick) and plays it (needs 'animate' from imagemagick)"), NULL); animate = gtk_check_button_new_with_label (_("animate sequence")); gtk_widget_set_name (animate, "animate"); gtk_widget_ref (animate); gtk_object_set_data_full (GTK_OBJECT (window_movie), "animate", animate, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (animate); gtk_table_attach (GTK_TABLE (table5), animate, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, animate, _("show animated sequence after saving it all (needs 'animate' command from imagemagick)"), NULL); replay = gtk_button_new_with_label (_("replay")); gtk_widget_set_name (replay, "replay"); gtk_widget_ref (replay); gtk_object_set_data_full (GTK_OBJECT (window_movie), "replay", replay, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (replay); gtk_table_attach (GTK_TABLE (table5), replay, 1, 2, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_container_set_border_width (GTK_CONTAINER (replay), 2); GTK_WIDGET_SET_FLAGS (replay, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, replay, _("resaves and replays animations"), NULL); animated_mpeg = gtk_check_button_new_with_label (_("creates mpeg")); gtk_widget_set_name (animated_mpeg, "animated_mpeg"); gtk_widget_ref (animated_mpeg); gtk_object_set_data_full (GTK_OBJECT (window_movie), "animated_mpeg", animated_mpeg, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (animated_mpeg); gtk_table_attach (GTK_TABLE (table5), animated_mpeg, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, animated_mpeg, _("creates an mpeg file and plays it; will use a parameter file (see help) (needs 'mpeg_encode' and 'mpeg_play')"), NULL); pixmap2 = create_pixmap (window_movie, "howmany.xpm"); gtk_widget_set_name (pixmap2, "pixmap2"); gtk_widget_ref (pixmap2); gtk_object_set_data_full (GTK_OBJECT (window_movie), "pixmap2", pixmap2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (pixmap2); gtk_table_attach (GTK_TABLE (table5), pixmap2, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); hseparator1 = gtk_hseparator_new (); gtk_widget_set_name (hseparator1, "hseparator1"); gtk_widget_ref (hseparator1); gtk_object_set_data_full (GTK_OBJECT (window_movie), "hseparator1", hseparator1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hseparator1); gtk_table_attach (GTK_TABLE (table5), hseparator1, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); hbox8 = gtk_hbox_new (TRUE, 2); gtk_widget_set_name (hbox8, "hbox8"); gtk_widget_ref (hbox8); gtk_object_set_data_full (GTK_OBJECT (window_movie), "hbox8", hbox8, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox8); gtk_box_pack_start (GTK_BOX (vbox4), hbox8, TRUE, TRUE, 6); ok = gtk_button_new_with_label (_(" ok ")); gtk_widget_set_name (ok, "ok"); gtk_widget_ref (ok); gtk_object_set_data_full (GTK_OBJECT (window_movie), "ok", ok, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ok); gtk_box_pack_start (GTK_BOX (hbox8), ok, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (ok), 2); GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, ok, _("creates and saves all morphs, builds animations"), NULL); gtk_widget_add_accelerator (ok, "clicked", accel_group, GDK_Return, 0, GTK_ACCEL_VISIBLE); cancel = gtk_button_new_with_label (_("cancel")); gtk_widget_set_name (cancel, "cancel"); gtk_widget_ref (cancel); gtk_object_set_data_full (GTK_OBJECT (window_movie), "cancel", cancel, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (cancel); gtk_box_pack_start (GTK_BOX (hbox8), cancel, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (cancel), 2); GTK_WIDGET_SET_FLAGS (cancel, GTK_CAN_DEFAULT); gtk_widget_add_accelerator (cancel, "clicked", accel_group, GDK_Escape, 0, GTK_ACCEL_VISIBLE); help = gtk_button_new_with_label (_("help")); gtk_widget_set_name (help, "help"); gtk_widget_ref (help); gtk_object_set_data_full (GTK_OBJECT (window_movie), "help", help, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (help); gtk_box_pack_start (GTK_BOX (hbox8), help, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (help), 2); GTK_WIDGET_SET_FLAGS (help, GTK_CAN_DEFAULT); gtk_widget_add_accelerator (help, "clicked", accel_group, GDK_Help, 0, GTK_ACCEL_VISIBLE); gtk_signal_connect (GTK_OBJECT (replay), "clicked", GTK_SIGNAL_FUNC (on_movie_replay_clicked), NULL); gtk_signal_connect (GTK_OBJECT (ok), "clicked", GTK_SIGNAL_FUNC (on_movie_ok_clicked), NULL); gtk_signal_connect_object (GTK_OBJECT (cancel), "clicked", GTK_SIGNAL_FUNC (gtk_widget_hide), GTK_OBJECT (window_movie)); gtk_signal_connect (GTK_OBJECT (help), "clicked", GTK_SIGNAL_FUNC (on_movie_help_clicked), NULL); gtk_object_set_data (GTK_OBJECT (window_movie), "tooltips", tooltips); gtk_window_add_accel_group (GTK_WINDOW (window_movie), accel_group); return window_movie; } GtkWidget* create_guide (void) { GtkWidget *guide; GtkWidget *vbox5; GtkWidget *guide_pixmap; GtkWidget *scrolledwindow7; GtkWidget *text; GtkWidget *hbox9; GtkWidget *prev; GtkWidget *do_it; GtkWidget *next; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); guide = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (guide, "guide"); gtk_object_set_data (GTK_OBJECT (guide), "guide", guide); gtk_window_set_title (GTK_WINDOW (guide), _("gtkmorph guide")); vbox5 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox5, "vbox5"); gtk_widget_ref (vbox5); gtk_object_set_data_full (GTK_OBJECT (guide), "vbox5", vbox5, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox5); gtk_container_add (GTK_CONTAINER (guide), vbox5); guide_pixmap = create_pixmap (guide, "example.xpm"); gtk_widget_set_name (guide_pixmap, "guide_pixmap"); gtk_widget_ref (guide_pixmap); gtk_object_set_data_full (GTK_OBJECT (guide), "guide_pixmap", guide_pixmap, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (guide_pixmap); gtk_box_pack_start (GTK_BOX (vbox5), guide_pixmap, FALSE, TRUE, 0); scrolledwindow7 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow7, "scrolledwindow7"); gtk_widget_ref (scrolledwindow7); gtk_object_set_data_full (GTK_OBJECT (guide), "scrolledwindow7", scrolledwindow7, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (scrolledwindow7); gtk_box_pack_start (GTK_BOX (vbox5), scrolledwindow7, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow7), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); text = gtk_text_new (NULL, NULL); gtk_widget_set_name (text, "text"); gtk_widget_ref (text); gtk_object_set_data_full (GTK_OBJECT (guide), "text", text, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (text); gtk_container_add (GTK_CONTAINER (scrolledwindow7), text); hbox9 = gtk_hbox_new (TRUE, 0); gtk_widget_set_name (hbox9, "hbox9"); gtk_widget_ref (hbox9); gtk_object_set_data_full (GTK_OBJECT (guide), "hbox9", hbox9, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox9); gtk_box_pack_start (GTK_BOX (vbox5), hbox9, FALSE, TRUE, 0); prev = gtk_button_new_with_label (_("prev")); gtk_widget_set_name (prev, "prev"); gtk_widget_ref (prev); gtk_object_set_data_full (GTK_OBJECT (guide), "prev", prev, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (prev); gtk_box_pack_start (GTK_BOX (hbox9), prev, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (prev), 2); gtk_tooltips_set_tip (tooltips, prev, _("go back to previous guide pane"), NULL); do_it = gtk_button_new_with_label (_("do it")); gtk_widget_set_name (do_it, "do_it"); gtk_widget_ref (do_it); gtk_object_set_data_full (GTK_OBJECT (guide), "do_it", do_it, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (do_it); gtk_box_pack_start (GTK_BOX (hbox9), do_it, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (do_it), 2); gtk_tooltips_set_tip (tooltips, do_it, _("do what is proposed in this pane"), NULL); next = gtk_button_new_with_label (_("next")); gtk_widget_set_name (next, "next"); gtk_widget_ref (next); gtk_object_set_data_full (GTK_OBJECT (guide), "next", next, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (next); gtk_box_pack_start (GTK_BOX (hbox9), next, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (next), 2); gtk_tooltips_set_tip (tooltips, next, _("skip this and go to next guide pane"), NULL); gtk_signal_connect (GTK_OBJECT (guide), "delete_event", GTK_SIGNAL_FUNC (on_guide_delete_event), NULL); gtk_signal_connect (GTK_OBJECT (guide), "destroy", GTK_SIGNAL_FUNC (on_guide_destroy), NULL); gtk_signal_connect (GTK_OBJECT (text), "expose_event", GTK_SIGNAL_FUNC (on_guide_text_expose_event), NULL); gtk_signal_connect (GTK_OBJECT (prev), "clicked", GTK_SIGNAL_FUNC (on_guide_prev_clicked), NULL); gtk_signal_connect (GTK_OBJECT (do_it), "clicked", GTK_SIGNAL_FUNC (on_guide_do_it_clicked), NULL); gtk_signal_connect (GTK_OBJECT (next), "clicked", GTK_SIGNAL_FUNC (on_guide_next_clicked), NULL); gtk_object_set_data (GTK_OBJECT (guide), "tooltips", tooltips); return guide; } GtkWidget* create_question (void) { GtkWidget *question; GtkWidget *dialog_vbox2; GtkWidget *questionlabel; GtkWidget *dialog_action_area2; GtkWidget *hbox10; GtkWidget *yes; GtkWidget *no; question = gtk_dialog_new (); gtk_widget_set_name (question, "question"); gtk_object_set_data (GTK_OBJECT (question), "question", question); gtk_window_set_title (GTK_WINDOW (question), _("question")); gtk_window_set_policy (GTK_WINDOW (question), TRUE, TRUE, FALSE); dialog_vbox2 = GTK_DIALOG (question)->vbox; gtk_widget_set_name (dialog_vbox2, "dialog_vbox2"); gtk_object_set_data (GTK_OBJECT (question), "dialog_vbox2", dialog_vbox2); gtk_widget_show (dialog_vbox2); questionlabel = gtk_label_new (_("question?")); gtk_widget_set_name (questionlabel, "questionlabel"); gtk_widget_ref (questionlabel); gtk_object_set_data_full (GTK_OBJECT (question), "questionlabel", questionlabel, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (questionlabel); gtk_box_pack_start (GTK_BOX (dialog_vbox2), questionlabel, TRUE, TRUE, 0); gtk_label_set_justify (GTK_LABEL (questionlabel), GTK_JUSTIFY_LEFT); gtk_label_set_line_wrap (GTK_LABEL (questionlabel), TRUE); dialog_action_area2 = GTK_DIALOG (question)->action_area; gtk_widget_set_name (dialog_action_area2, "dialog_action_area2"); gtk_object_set_data (GTK_OBJECT (question), "dialog_action_area2", dialog_action_area2); gtk_widget_show (dialog_action_area2); gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area2), 10); hbox10 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox10, "hbox10"); gtk_widget_ref (hbox10); gtk_object_set_data_full (GTK_OBJECT (question), "hbox10", hbox10, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hbox10); gtk_box_pack_start (GTK_BOX (dialog_action_area2), hbox10, TRUE, TRUE, 0); yes = gtk_button_new_with_label (_("Yes")); gtk_widget_set_name (yes, "yes"); gtk_widget_ref (yes); gtk_object_set_data_full (GTK_OBJECT (question), "yes", yes, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (yes); gtk_box_pack_start (GTK_BOX (hbox10), yes, TRUE, FALSE, 0); no = gtk_button_new_with_label (_("No")); gtk_widget_set_name (no, "no"); gtk_widget_ref (no); gtk_object_set_data_full (GTK_OBJECT (question), "no", no, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (no); gtk_box_pack_start (GTK_BOX (hbox10), no, TRUE, FALSE, 2); gtk_signal_connect (GTK_OBJECT (question), "delete_event", GTK_SIGNAL_FUNC (on_question_delete_event), NULL); gtk_signal_connect (GTK_OBJECT (yes), "clicked", GTK_SIGNAL_FUNC (on_yes_clicked), NULL); gtk_signal_connect (GTK_OBJECT (no), "clicked", GTK_SIGNAL_FUNC (on_no_clicked), NULL); return question; } GtkWidget* create_colorselectiondialog (void) { GtkWidget *colorselectiondialog; GtkWidget *ok_button_color; GtkWidget *cancel_button_csd; GtkWidget *help_button1; colorselectiondialog = gtk_color_selection_dialog_new (_("Select Color")); gtk_widget_set_name (colorselectiondialog, "colorselectiondialog"); gtk_object_set_data (GTK_OBJECT (colorselectiondialog), "colorselectiondialog", colorselectiondialog); gtk_container_set_border_width (GTK_CONTAINER (colorselectiondialog), 10); ok_button_color = GTK_COLOR_SELECTION_DIALOG (colorselectiondialog)->ok_button; gtk_widget_set_name (ok_button_color, "ok_button_color"); gtk_object_set_data (GTK_OBJECT (colorselectiondialog), "ok_button_color", ok_button_color); gtk_widget_show (ok_button_color); GTK_WIDGET_SET_FLAGS (ok_button_color, GTK_CAN_DEFAULT); cancel_button_csd = GTK_COLOR_SELECTION_DIALOG (colorselectiondialog)->cancel_button; gtk_widget_set_name (cancel_button_csd, "cancel_button_csd"); gtk_object_set_data (GTK_OBJECT (colorselectiondialog), "cancel_button_csd", cancel_button_csd); gtk_widget_show (cancel_button_csd); GTK_WIDGET_SET_FLAGS (cancel_button_csd, GTK_CAN_DEFAULT); help_button1 = GTK_COLOR_SELECTION_DIALOG (colorselectiondialog)->help_button; gtk_widget_set_name (help_button1, "help_button1"); gtk_object_set_data (GTK_OBJECT (colorselectiondialog), "help_button1", help_button1); gtk_widget_show (help_button1); GTK_WIDGET_SET_FLAGS (help_button1, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (ok_button_color), "clicked", GTK_SIGNAL_FUNC (on_ok_button_color_clicked), NULL); gtk_signal_connect_object (GTK_OBJECT (cancel_button_csd), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (colorselectiondialog)); return colorselectiondialog; } GtkWidget* create_unused (void) { GtkWidget *unused; GtkWidget *vbox6; GtkWidget *handlebox_tools; GtkWidget *toolbar_image_tools; GtkWidget *tmp_toolbar_icon; GtkWidget *tool_edit; GtkWidget *tool_move; GtkWidget *tool_stretch; unused = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (unused, "unused"); gtk_object_set_data (GTK_OBJECT (unused), "unused", unused); gtk_window_set_title (GTK_WINDOW (unused), _("window1")); vbox6 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox6, "vbox6"); gtk_widget_ref (vbox6); gtk_object_set_data_full (GTK_OBJECT (unused), "vbox6", vbox6, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox6); gtk_container_add (GTK_CONTAINER (unused), vbox6); handlebox_tools = gtk_handle_box_new (); gtk_widget_set_name (handlebox_tools, "handlebox_tools"); gtk_widget_ref (handlebox_tools); gtk_object_set_data_full (GTK_OBJECT (unused), "handlebox_tools", handlebox_tools, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (handlebox_tools); gtk_box_pack_start (GTK_BOX (vbox6), handlebox_tools, TRUE, TRUE, 0); gtk_handle_box_set_snap_edge (GTK_HANDLE_BOX (handlebox_tools), GTK_POS_BOTTOM); toolbar_image_tools = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); gtk_widget_set_name (toolbar_image_tools, "toolbar_image_tools"); gtk_widget_ref (toolbar_image_tools); gtk_object_set_data_full (GTK_OBJECT (unused), "toolbar_image_tools", toolbar_image_tools, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (toolbar_image_tools); gtk_container_add (GTK_CONTAINER (handlebox_tools), toolbar_image_tools); tmp_toolbar_icon = create_pixmap (unused, "cursor_left.xpm"); tool_edit = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar_image_tools), GTK_TOOLBAR_CHILD_RADIOBUTTON, NULL, _("edit"), _("move single point"), NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_set_name (tool_edit, "tool_edit"); gtk_widget_ref (tool_edit); gtk_object_set_data_full (GTK_OBJECT (unused), "tool_edit", tool_edit, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tool_edit); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (tool_edit), FALSE); tmp_toolbar_icon = create_pixmap (unused, "hand01.xpm"); tool_move = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar_image_tools), GTK_TOOLBAR_CHILD_RADIOBUTTON, tool_edit, _("move"), _("move whole feature"), NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_set_name (tool_move, "tool_move"); gtk_widget_ref (tool_move); gtk_object_set_data_full (GTK_OBJECT (unused), "tool_move", tool_move, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tool_move); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tool_move), TRUE); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (tool_move), FALSE); tmp_toolbar_icon = create_pixmap (unused, "transform.xpm"); tool_stretch = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar_image_tools), GTK_TOOLBAR_CHILD_RADIOBUTTON, tool_edit, _("stretch"), _("stretch whole feature"), NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_set_name (tool_stretch, "tool_stretch"); gtk_widget_ref (tool_stretch); gtk_object_set_data_full (GTK_OBJECT (unused), "tool_stretch", tool_stretch, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tool_stretch); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (tool_stretch), FALSE); gtk_signal_connect (GTK_OBJECT (tool_edit), "clicked", GTK_SIGNAL_FUNC (on_tool_edit_clicked), NULL); gtk_signal_connect (GTK_OBJECT (tool_move), "clicked", GTK_SIGNAL_FUNC (on_tool_move_clicked), NULL); gtk_signal_connect (GTK_OBJECT (tool_stretch), "clicked", GTK_SIGNAL_FUNC (on_tool_stretch_clicked), NULL); return unused; } GtkWidget* create_mag (void) { GtkWidget *mag; GtkWidget *mag_vbox; GtkWidget *mag_hbox; GtkWidget *mag_label; GtkObject *mag_spinbutton_adj; GtkWidget *mag_spinbutton; GtkWidget *mag_track; GtkWidget *mag_drawingarea; mag = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (mag, "mag"); gtk_object_set_data (GTK_OBJECT (mag), "mag", mag); gtk_window_set_title (GTK_WINDOW (mag), _("gtkmorph mag")); mag_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (mag_vbox, "mag_vbox"); gtk_widget_ref (mag_vbox); gtk_object_set_data_full (GTK_OBJECT (mag), "mag_vbox", mag_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (mag_vbox); gtk_container_add (GTK_CONTAINER (mag), mag_vbox); mag_hbox = gtk_hbox_new (FALSE, 4); gtk_widget_set_name (mag_hbox, "mag_hbox"); gtk_widget_ref (mag_hbox); gtk_object_set_data_full (GTK_OBJECT (mag), "mag_hbox", mag_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (mag_hbox); gtk_box_pack_start (GTK_BOX (mag_vbox), mag_hbox, FALSE, TRUE, 0); mag_label = gtk_label_new (_("1")); gtk_widget_set_name (mag_label, "mag_label"); gtk_widget_ref (mag_label); gtk_object_set_data_full (GTK_OBJECT (mag), "mag_label", mag_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (mag_label); gtk_box_pack_start (GTK_BOX (mag_hbox), mag_label, TRUE, TRUE, 1); mag_spinbutton_adj = gtk_adjustment_new (300, 50, 1000, 10, 50, 50); mag_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (mag_spinbutton_adj), 1, 0); gtk_widget_set_name (mag_spinbutton, "mag_spinbutton"); gtk_widget_ref (mag_spinbutton); gtk_object_set_data_full (GTK_OBJECT (mag), "mag_spinbutton", mag_spinbutton, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (mag_spinbutton); gtk_box_pack_start (GTK_BOX (mag_hbox), mag_spinbutton, TRUE, TRUE, 1); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (mag_spinbutton), TRUE); mag_track = gtk_check_button_new_with_label (_("track")); gtk_widget_set_name (mag_track, "mag_track"); gtk_widget_ref (mag_track); gtk_object_set_data_full (GTK_OBJECT (mag), "mag_track", mag_track, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (mag_track); gtk_box_pack_start (GTK_BOX (mag_hbox), mag_track, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mag_track), TRUE); mag_drawingarea = gtk_drawing_area_new (); gtk_widget_set_name (mag_drawingarea, "mag_drawingarea"); gtk_widget_ref (mag_drawingarea); gtk_object_set_data_full (GTK_OBJECT (mag), "mag_drawingarea", mag_drawingarea, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (mag_drawingarea); gtk_box_pack_start (GTK_BOX (mag_vbox), mag_drawingarea, TRUE, TRUE, 0); gtk_widget_set_usize (mag_drawingarea, 180, 180); gtk_signal_connect (GTK_OBJECT (mag), "unrealize", GTK_SIGNAL_FUNC (on_mag_unrealize), NULL); gtk_signal_connect (GTK_OBJECT (mag_spinbutton), "activate", GTK_SIGNAL_FUNC (on_mag_spinbutton_activate), NULL); gtk_signal_connect (GTK_OBJECT (mag_spinbutton), "changed", GTK_SIGNAL_FUNC (on_mag_spinbutton_changed), NULL); gtk_signal_connect (GTK_OBJECT (mag_track), "toggled", GTK_SIGNAL_FUNC (on_mag_track_toggled), NULL); gtk_signal_connect (GTK_OBJECT (mag_drawingarea), "expose_event", GTK_SIGNAL_FUNC (on_mag_drawingarea_expose_event), NULL); gtk_signal_connect (GTK_OBJECT (mag_drawingarea), "configure_event", GTK_SIGNAL_FUNC (on_mag_drawingarea_configure_event), NULL); return mag; } xmorph-20140707+nmu2/glade1/callbacks.c0000664000000000000000000004740312356304632014276 0ustar #ifdef HAVE_CONFIG_H # include #endif #include #include "callbacks.h" #include "interface.h" #include "support.h" gboolean on_window_main_delete (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_load_session_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_save_session_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_add_an_image_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_view_images1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_resulting_image_size_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_show_morph_factors_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_interpolate_meshes1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_morph_images1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_restore_morph_factors1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_restore_start_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_restore_end_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_store_morph_factors_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_store_start_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_store_end_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_morph_sequence1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_guide_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_generic_help_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_warp_help_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_morph_help_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_why_the_beep_1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_loadimage_clicked (GtkButton *button, gpointer user_data) { } void on_loadmesh_clicked (GtkButton *button, gpointer user_data) { } void on_savemesh_clicked (GtkButton *button, gpointer user_data) { } void on_optionmenu_editview_released (GtkButton *button, gpointer user_data) { } void on_optionmenu_editview_clicked (GtkButton *button, gpointer user_data) { } void on_settings_clicked (GtkButton *button, gpointer user_data) { } void on_do_mixing_clicked (GtkButton *button, gpointer user_data) { } void on_save_image_clicked (GtkButton *button, gpointer user_data) { } void on_back_to_guide_activate (GtkButton *button, gpointer user_data) { } void on_color_feature_clicked (GtkButton *button, gpointer user_data) { } gboolean on_drawingarea_color_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_combo_entry_feature_activate (GtkEditable *editable, gpointer user_data) { } void on_combo_entry_feature_changed (GtkEditable *editable, gpointer user_data) { } void on_new_feature_clicked (GtkButton *button, gpointer user_data) { } void on_rename_feature_clicked (GtkButton *button, gpointer user_data) { } void on_pack_feature_clicked (GtkButton *button, gpointer user_data) { } void on_unpack_feature_clicked (GtkButton *button, gpointer user_data) { } void on_delete_feature_clicked (GtkButton *button, gpointer user_data) { } void on_tool_edit_clicked (GtkButton *button, gpointer user_data) { } void on_tool_move_clicked (GtkButton *button, gpointer user_data) { } void on_tool_stretch_clicked (GtkButton *button, gpointer user_data) { } void on_tool_select_clicked (GtkButton *button, gpointer user_data) { } void on_tool_unselect_clicked (GtkButton *button, gpointer user_data) { } void on_tool_assign_clicked (GtkButton *button, gpointer user_data) { } void on_viewport3_realize (GtkWidget *widget, gpointer user_data) { } gboolean on_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data) { return FALSE; } gboolean on_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { return FALSE; } gboolean on_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_drawingarea_realize (GtkWidget *widget, gpointer user_data) { } gboolean on_drawingarea_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { return FALSE; } gboolean on_drawingarea_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { return FALSE; } void on_spinbutton_reswidth_changed (GtkEditable *editable, gpointer user_data) { } void on_spinbutton_reswidth_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data) { } void on_spinbutton_resheight_changed (GtkEditable *editable, gpointer user_data) { } void on_spinbutton_resheight_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data) { } void on_double_size_clicked (GtkButton *button, gpointer user_data) { } void on_halve_size_clicked (GtkButton *button, gpointer user_data) { } void on_resulting_apply_clicked (GtkButton *button, gpointer user_data) { } void on_ok_button1_realize (GtkWidget *widget, gpointer user_data) { } void on_ok_button1_clicked (GtkButton *button, gpointer user_data) { } gboolean on_image_win_1_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_optionmenu_editview_pressed (GtkButton *button, gpointer user_data) { } void on_do_warp_clicked (GtkButton *button, gpointer user_data) { } void on_handlebox_factors_show (GtkWidget *widget, gpointer user_data) { } gboolean on_hscale_mesh_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { return FALSE; } gboolean on_hscale_image_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { return FALSE; } void on_spinbutton_image_changed (GtkEditable *editable, gpointer user_data) { } void on_spinbutton_mesh_changed (GtkEditable *editable, gpointer user_data) { } void on_handleboxsubimage_show (GtkWidget *widget, gpointer user_data) { } void on_reset_subimage_clicked (GtkButton *button, gpointer user_data) { } void on_spinbuttonx_changed (GtkEditable *editable, gpointer user_data) { } void on_spinbuttonx_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data) { } void on_spinbuttony_changed (GtkEditable *editable, gpointer user_data) { } void on_spinbuttony_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data) { } void on_spinbuttonw_changed (GtkEditable *editable, gpointer user_data) { } void on_spinbuttonw_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data) { } void on_spinbuttonh_changed (GtkEditable *editable, gpointer user_data) { } void on_spinbuttonh_draw (GtkWidget *widget, GdkRectangle *area, gpointer user_data) { } void on_subimage_apply_clicked (GtkButton *button, gpointer user_data) { } gboolean on_dialogwarning_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_labelwarning_show (GtkWidget *widget, gpointer user_data) { } void on_labelwarning_realize (GtkWidget *widget, gpointer user_data) { } gboolean on_window_warped_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } gboolean on_drawingarea_warped_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } gboolean on_drawingarea_warped_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { return FALSE; } void on_unselect_point_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_select_point_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_assign_point_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_add_horizontal_line_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_add_vertical_line_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_del_horizontal_line_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_del_vertical_line_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_movie_replay_clicked (GtkButton *button, gpointer user_data) { } void on_movie_ok_clicked (GtkButton *button, gpointer user_data) { } void on_movie_help_clicked (GtkButton *button, gpointer user_data) { } gboolean on_guide_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_guide_destroy (GtkObject *object, gpointer user_data) { } gboolean on_guide_text_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } void on_guide_prev_clicked (GtkButton *button, gpointer user_data) { } void on_guide_do_it_clicked (GtkButton *button, gpointer user_data) { } void on_guide_next_clicked (GtkButton *button, gpointer user_data) { } gboolean on_question_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_yes_clicked (GtkButton *button, gpointer user_data) { } void on_no_clicked (GtkButton *button, gpointer user_data) { } void on_ok_button_color_clicked (GtkButton *button, gpointer user_data) { } void on_mag_zoom_activate (GtkEditable *editable, gpointer user_data) { } gboolean on_mag_drawingarea_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { return FALSE; } gboolean on_mag_drawingarea_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { return FALSE; } void on_mag_unrealize (GtkWidget *widget, gpointer user_data) { } void on_mag_zoom_changed (GtkEditable *editable, gpointer user_data) { } void on_show_mag_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_mag_spinbutton_activate (GtkEditable *editable, gpointer user_data) { } void on_mag_spinbutton_changed (GtkEditable *editable, gpointer user_data) { } void on_mag_track_toggled (GtkToggleButton *togglebutton, gpointer user_data) { } void on_restore_equal_activate (GtkMenuItem *menuitem, gpointer user_data) { } gboolean on_drawingarea_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { return FALSE; } gboolean on_imageselection1_destroy_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } void on_adjust_all_meshes_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_wavelet_equalize_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_adjust_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_menu_smooth_activate (GtkMenuItem *menuitem, gpointer user_data) { } xmorph-20140707+nmu2/glade1/Makefile.am0000664000000000000000000000055412356304632014243 0ustar ## Process this file with automake to produce Makefile.in INCLUDES = if COND_GTKMORPH noinst_PROGRAMS = gtkmorph endif AM_CPPFLAGS = $(GTK_CFLAGS) -I../intl -DLOCALEDIR=\"$(localedir)\" -DDATADIR=\"$(datadir)\" gtkmorph_SOURCES = \ main.c \ support.c support.h \ interface.c interface.h \ callbacks.c callbacks.h gtkmorph_LDADD = $(GTK_LIBS) $(INTLLIBS) xmorph-20140707+nmu2/HISTORY0000664000000000000000000003340412356304633012137 0ustar xmorph: Digital Image Warp ("morph") graphical user interface Written and Copyright (C) 1994-1997 by Michael J. Gourlay Provided as is. No warrantees, express or implied. ------------------ Modifications are often marked by a timestamp and the programmers' initials. MJG refers to Michael J. Gourlay. AT refers to Andy Thaler WA refers to Warwick Allison MH refers to Mike Hoefelein PW refers to Paul Walker Thanks to Geoff Lawler for the Windows NT/95 cygwin port. Other help from ellenberger@tle.enet.dec.com Huge help from Dave Beazley, author of SWIG, for wrapper code generation help (non-specific to tkmorph). Gordon Matzigkeit added the GIMP plugin functionality. ------------------ 20jul99: added #include in my_malloc.h for when DEBUG is not defined 15jul99: separated out libmorph as a stand-alone library. wrote "morph" command line interface version. 19apr98: GG added a missing meshInit in warp_sequence that was causing memory problems on some machines. 17apr98: Added red-green color-blindness changes for GUI 23sep97: Added GIMP plugin functionality, enabled with -DGIMP in the Makefile. 19jul97: No longer rebuild entire "wish" executable. Uses DLL and DSO instead. Renamed "main.tk" to "tkmorph" and changed executable from "tkmorph" to "wish4.2". 14jul97: Received binary executable for xmorph on Windows NT/95 under cygwin. 09jul97: Added meshSet and changed diw_map to use it. Added meshCopy, meshStore, meshRecover, meshBackupIndexSet and other associated "undo" routines and incorporated them into each mesh modifying routine that a user would call during mesh editting. 08jul97: Added meshLineMouseModify to mesh.c and changed diw_map.c to use it. 02jul97: Removed mesh_diw.[ch] since it contained only a call to meshReset. Incorporated use of meshScale when loading images of a size different from the previous size. early June 1997: incorporated TCL/Tk and SWIG code into main xmorph code. separate tkmorph code is now obsolete. New code requires SWIG 1.1b4 or later 18apr97: Added Apollo Domain/OS changes, due to PW. Changed the name of the my_malloc macros to remove the MY_ prefix. 06dec96: Added -DREAL=double to Makefile for spline.c 24nov96: Added meshInitialize to initialize new mesh members, intended primarily to set the mesh arrays to NULL so that the revised meshAlloc routine didn't try to free invalid memory addresses. Added meshMatch to match geometries of two meshes, intended for use in loading new meshes to make sure both meshes are the same size, in a compact routine. Changed meshAlloc to free old space before allocating new space. This required changes elsewhere to make sure that previously unallocated mesh arrays were explicitly set to NULL. This could cause weird memory bugs later if I didn't catch all of the meshAllocs. 13nov96: Added a check to make sure that the start and finish images are the same size in the case that they are provided as command line arguments. Reported by Rick Walker 02oct96: Fixed the meshLoad routine to read in longs instead of ints for nx,ny. Thanks to George C. Hawkins for pointing it out. The bug was introduced in mid August when the mesh data structure was rewritten. nx and ny used to be regular ints. Now they are longs. I forgot why I bothered to change their type, and I wonder what other things depend on them being regular ints instead of longs. Fixed a bunch of tiny little warning-level bugs, such as including needed include files, providing strong prototypes for callback member in the mjg_dialog, fixing a compiler macro in one of the mesh_.h files, etc. Included a copy of the tkmorph stuff so that people can see what I'm up to, in case they want to contribute or something. However, it's not production code. 10sep96: fixed init_diw_stuff in diw_map.c where color allocation used to only be done for PseudoColor. It is now also done for all visual classes. The effect was that the mesh lines were being drawn in black for TrueColor visuals. 30aug96: Created mesh_diw.[ch] and moved reset_meshes routine from mesh.[ch] to mesh_diw.[ch]. Renamed many of the mesh routine names to use another function name convention. Rewrote the entire mesh part of the code to use a "meshT" user defined data type. Many dozens of lines of code throughout many modules were modified. I should have done this to begin with, but I didn't originally, because I wanted to have the source and dst meshes have identical number of points, which I decided was best by just having a single member for the size of both meshes. However, the TCL version will be easier to handle, and the code is more elegant, with a "meshT" data type. This more than likely introduced bugs into the code, particularly regarding any code that modifies or uses the "number of points" members, and in particular, of the "dst" meshes. 09aug96: image.c and image.h renamed to rgba_image.[ch]. The routines in rgba_image.c were renamed to use a different routine naming convention. For example, load_img was renamed loadImageRGBA, etc. 26jul96: Moved reset_images, orig_image, and dither_image into the new module image_diw because they are special purpose code used only by xmorph, whereas the other image.c code is general purpose. 12jul96: Fixed the dithering routine to make use of the dithiering error accumulator. Looks better now. The images used to dither sort of okay before, but it was really stupid of me not to expect better results out of this dithering technique. I guess I figured that the technique wasn't any better than the results i was getting before. Ends up, it was just buggy code. Added support for StaticGray visual class with 1-bit depth. To do this, I had to add a section to the dither_image routine to handle StaticGray. The dithering routine I cooked up for the color images didn't translate well for only 1-bit because the error diffusion of the color scheme is very unsophisticated because it relies on the assumption that there won't be enough quantization at any given pixel to make a harsh error. Well, with 1-bit depth, the quantization error is almost always drastic, so I had to implement something more like a full-blown Floyd Steinberg error diffusion algorithm. Mine is still simpler than full-blown FS, but it looks about as good on a flying horse. 28jun96: Changed the way colormaps are allocated so that now it is a trivial matter to change the number of bits ber channel used to represent a color in the dithering colormap. The primary changes were in diw_map.c and diw_map.h, although some changes were in image.c in dither_image. Note that there are some limitations on the maximum number of bits per channel useable due to the BITS_PER_CHANNEL in dither_image, so 16-bit visuals might not be able to make full use of their huge colormaps. Since I don't have such a machine, I wouldn't be able to test it easily. It might be as simple as changing BITS_PER_CHANNEL to 16 and cranking up the ???_NUM_BITS values to something like 3 or 4 bits each (perhaps RGB-443). This would yeild VERY nice looking images (almost at TrueColor quality) and the dithering would probably be just as fast as it is now. I'm stoked. 30may96: MH Fixed a subtle but important bug in warp.c line 189: /* scan convert vertical splines of S and I */ hermite3_array(yrow1, xrow1, mesh_height, indx, map1, img_height); hermite3_array(yrow1, xrow2, mesh_height, indx, map2, img_height); ^^^^^ The report comes from Mike Hoefelein The effect was to make the warped image conform exactly to the mesh. Before, there was a descrepency between the mesh location and the image. This should have been obvious earlier by simply warping the checkerboard test image, but I had ignored it until Mike pointed it out to me. 14nov95: Fixed a hideous memory allocation bug. TrueColor works for TrueColor default visual. TrueColor does not work for nondefault TrueColor, because Xt does not support such a use of Visual Class. This ends up being a rather subtle and difficult issue, which has been discussed at length by people who want to use TrueColor visuals on displays that have another kind of default visual class but which can support TrueColor. See the X Authority Web site. 14sep95: Removed TrueColor support for nondefault TrueColor machines, but left hooks in. I can't figure out why it doesn't work. 13sep95: Made some modifications due to reports by xmorph users. In particular, there were more divide-by-zero events happening in the warping code. Much of this was due to Wolberg. I've found several errors in Wolberg's original code, and he's been made aware of these changes. One good thing about these changes is that they (in Wolberg's opinion) sufficiently change the code such that there isn't a copyright problem using the code. Wolberg has granted permission to me to use the code in any case. Added my_free to spl-array in hermite3_array (memory leak). Changed free() to my_free in various routines. Changed xi loop bound in reample_array in warp.c to (len-1) WA contributed these changes: added TrueColor support (changed xbm_gray and dither_image) I have to admit that I don't fully understand these changes yet because I haven't looked into TrueColor visuals because I haven't hacked them. If there is a problem with the TrueColor code then let me know, but I might not be able to help. -- MJG fixed memory leak in sequence.c to free a temporary mesh. changed box to paned widget to allow scrolling 14jul94: Modified spline routines to fit my personal library better. Moved some routines from spline.c to spl-array.c Miniscule formatting changes in my_malloc.c. Nov94: Changed my email address to Colorado address in documentation files. Released at MIT. 22jul94: More diddling with the tga routines. Colormap and pixel stuff. 21jul94: removed load_tga_cmap_entry, and changed the way targa cmaps are stored. Added ppmtotga, tgatoppm, cjpeg, djpeg to the man page. release 5 (xmorph-20jul94) 20jul94: Fixed load_tga_image: first row of upside-down images was wrong. Removed (or changed) references to tga.h where inappopriate. Added automatic image compression in save_img if loaded image was compressed. Also checks pixel_size. Added fields to the rgba_image_t for compression, cmaps, pixel size. Added RLE compression to Targa save routines. Added a bounds check in load_tga_image for corrupt Targas. Added more labels to the scrollbars to be more clear. Alligned scrollbar region. Added a missing "#include " in xmorph.c Added a missing "\n\" in help_menu.c Alpha version: these releases come all too often. 19jul94: Ximage array allocation fixed in diw_map.c (factor of 4 deal). Fourth release (xmorph-19jul94.2): unannounced Ximage array indexing fixed in dither_image. Third release (xmorph-19jul94.1): unannounced Modified spline code to continue (not abort) when spline abcissa out of range. Second release (xmorph-18jul94): unannounced Tue Jul 19 02:57:37 EDT 1994 This release was not quite ready, but I was being flooded with reports that xdiw had vanished, and I needed to put something up to keep the email flux down. xmorph-18jul94: Removed spline code from warp.c. Incorporated use of general purpose hermite spline routines I wrote in 1993. Fixed bug in hermite spline routine (for point at last knot). Changed the name from xdiw to xmorph. xdiw-15jul94: Changed the module organization of the rgba_image_t definition. Separated tga-24.c and (new file) tga-write.c Added size-8 write to save_tga_pixel (untested) [Approaching a common tga library for xdiw and showtime] xdiw-08jul94: Added authorship and release date info in internal "About..." page. Made README more like what the X Consortium wants for contrib. Separated application and widget code in diw_map.c and xdiw.c. Wrote a short man page for xdiw. First release (xdiw-07jul94): announced Thu Jul 7 16:36:58 EDT 1994: It's at a stage I'd call "alpha release" if I were into that sort of jargon, which means this program will probably dump core a lot. Please report such incidents, along with any solutions, back to me. I've used it to morph images of Wendy and myself, with significant success. I put the images onto video and it looks really nice. I've never seen any other morphing program at all, so I'm sure my idea of a GUI differs greatly from the "professional" commercial packages, but according to one guy I showed this to, my way is better. If you disagree, please tell me what I can do to make my program more usable. I already have a lot of ideas about how to make it better-- features to add, etc., but at the moment it's pretty usable (enough so that I've decided to release it.) It's self documenting, and I've compiled and run the program on SunOS machines, Solaris machines, SGI's, and HPUX, although on the HP it's slower than molasses. It _flies_ on the Reality Engine. I'm trying to figure out how to get this widely distributed. As far as I know, it's the only publically available image morphing program, for X or any other platform. If any of you know of another publically available morphing program, please let me know so I can kill myself. I also wrote a program that rapidly displays the images generated by Xdiw (for X or MSDOS), for those of you who don't have a high speed JPEG CoDec like I do :) xmorph-20140707+nmu2/m4/0000775000000000000000000000000012356343462011372 5ustar xmorph-20140707+nmu2/m4/progtest.m40000664000000000000000000000557312356325452013514 0ustar # progtest.m4 serial 6 (gettext-0.18) dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) xmorph-20140707+nmu2/m4/lib-link.m40000664000000000000000000010020212356325452013327 0ustar # lib-link.m4 serial 21 (gettext-0.18) dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.54]) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[translit([$1],[./-], [___])]) pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes popdef([NAME]) popdef([Name]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. The missing-message dnl defaults to 'no' and may contain additional hints for the user. dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[translit([$1],[./-], [___])]) pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, dnl because these -l options might require -L options that are present in dnl LIBS. -l options benefit only from the -L options listed before it. dnl Otherwise, add it to the front of LIBS, because it may be a static dnl library that depends on another static library that is present in LIBS. dnl Static libraries benefit only from the static libraries listed after dnl it. case " $LIB[]NAME" in *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; *) LIBS="$LIB[]NAME $LIBS" ;; esac AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) popdef([NAME]) popdef([Name]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE([rpath], [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_FROMPACKAGE(name, package) dnl declares that libname comes from the given package. The configure file dnl will then not have a --with-libname-prefix option but a dnl --with-package-prefix option. Several libraries can come from the same dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar dnl macro call that searches for libname. AC_DEFUN([AC_LIB_FROMPACKAGE], [ pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) define([acl_frompackage_]NAME, [$2]) popdef([NAME]) pushdef([PACK],[$2]) pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) define([acl_libsinpackage_]PACKUP, m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1]) popdef([PACKUP]) popdef([PACK]) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) dnl Autoconf >= 2.61 supports dots in --with options. pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH(P_A_C_K[-prefix], [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been dnl computed. So it has to be reset here. HAVE_LIB[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi popdef([P_A_C_K]) popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) popdef([NAME]) ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) xmorph-20140707+nmu2/m4/gettext.m40000664000000000000000000003513212356325452013323 0ustar # gettext.m4 serial 63 (gettext-0.18) dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST([DATADIRNAME]) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST([INSTOBJEXT]) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST([GENCAT]) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST([INTLOBJS]) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) xmorph-20140707+nmu2/m4/ltoptions.m40000664000000000000000000003007312356342002013657 0ustar # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 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 7 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 ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=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], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) xmorph-20140707+nmu2/m4/iconv.m40000664000000000000000000001653712356325452012765 0ustar # iconv.m4 serial 11 (gettext-0.18.1) dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi AC_TRY_RUN([ #include #include int main () { /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static const char input[] = "\263"; char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) return 1; } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) return 1; return 0; }], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to dnl avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". dnl This is tricky because of the way 'aclocal' is implemented: dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. dnl Otherwise aclocal's initial scan pass would miss the macro definition. dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. dnl Otherwise aclocal would emit many "Use of uninitialized value $1" dnl warnings. m4_define([gl_iconv_AC_DEFUN], m4_version_prereq([2.64], [[AC_DEFUN_ONCE( [$1], [$2])]], [[AC_DEFUN( [$1], [$2])]])) gl_iconv_AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL([am_cv_proto_iconv], [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([ $am_cv_proto_iconv]) AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], [Define as const if the declaration of iconv() needs const.]) fi ]) xmorph-20140707+nmu2/m4/lib-prefix.m40000664000000000000000000002042212356325452013674 0ustar # lib-prefix.m4 serial 7 (gettext-0.18) dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates dnl - a variable acl_libdirstem, containing the basename of the libdir, either dnl "lib" or "lib64" or "lib/64", dnl - a variable acl_libdirstem2, as a secondary possible value for dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or dnl "lib/amd64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. dnl On glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine dnl the compiler's default mode by looking at the compiler's library search dnl path. If at least one of its elements ends in /lib64 or points to a dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. dnl Otherwise we use the default, namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment dnl . dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the dnl symlink is missing, so we set acl_libdirstem2 too. AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], [AC_EGREP_CPP([sixtyfour bits], [ #ifdef _LP64 sixtyfour bits #endif ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) ]) if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" ]) xmorph-20140707+nmu2/m4/po.m40000664000000000000000000004461612356325452012264 0ustar # po.m4 serial 17 (gettext-0.18) dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$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) ])# 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 '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS 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)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 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" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$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" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$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([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "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 '$LINENO' "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 ;; *-*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*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test 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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test 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; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; 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 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $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 $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "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:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_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 m4_require([_LT_CHECK_SHELL_FEATURES])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 case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` 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; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$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=`func_echo_all "$lib" | $SED '\''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 # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "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' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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;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' ;; netbsdelf*-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 shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$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([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [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 m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$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 # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) 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_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file 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. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$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};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /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 lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\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_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$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 # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$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)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$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 ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$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 | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$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' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$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 | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms 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_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { 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*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$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 ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = 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 *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$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.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (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 ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$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=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "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* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "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 $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_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 # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { 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 _LT_TAGVAR(link_all_deplibs, $1)=no 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([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; 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([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # 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. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $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 && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$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 $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) 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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$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_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report 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_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "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 AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_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_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$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 $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$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([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; 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([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # 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*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (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 ;; esac ;; 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 ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $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; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $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; func_echo_all "$list"' ;; *) 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 $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; 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=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$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 $pic_flag -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 $pic_flag -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 -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $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 -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We 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(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_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 CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$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 CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; 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* | sunCC*) # 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_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_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 lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$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" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_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 lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$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 CFLAGS=$lt_save_CFLAGS 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_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "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_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $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%"$_lt_dummy"}, \ = c,a/b,b/c, \ && 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_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # 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}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS xmorph-20140707+nmu2/m4/nls.m40000664000000000000000000000231512356325452012430 0ustar # nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) xmorph-20140707+nmu2/m4/lib-ld.m40000664000000000000000000000660312356325452013003 0ustar # lib-ld.m4 serial 4 (gettext-0.18) dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], [# I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi 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 GCC]) 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. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path 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([acl_cv_path_LD], [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT([$LD]) else AC_MSG_RESULT([no]) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) xmorph-20140707+nmu2/m4/ltsugar.m40000664000000000000000000001042412356342002013303 0ustar # 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 ]) xmorph-20140707+nmu2/example/0000775000000000000000000000000012356343462012505 5ustar xmorph-20140707+nmu2/example/AD_freeborder/0000775000000000000000000000000012356343462015170 5ustar xmorph-20140707+nmu2/example/AD_freeborder/README0000664000000000000000000000004612356304631016043 0ustar simply run gtkmorph gtkmorph.session xmorph-20140707+nmu2/example/AD_freeborder/gtkmorph.session0000664000000000000000000000072212356304631020424 0ustar image1.png 1 image1.png.mesh 1.000000 1.000000 image2.png 1 image2.png.mesh 0.000000 0.000000 300 400 xmorph-20140707+nmu2/example/AD_freeborder/image1.png.meshtmp0000664000000000000000000001345212356304631020515 0ustar M2 16 16 540 0 -1 380 0 -1 130 0 -1 250 0 -1 1670 3760 -1 870 3440 -1 740 3050 -1 1230 0 -1 610 2790 -1 -2147483648 -2147483648 0 1840 0 -1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2640 0 -1 -2147483648 -2147483648 0 2140 1010 -1 2860 2230 -1 2820 2320 -1 637 970 2 842 920 2 -2147483648 -2147483648 0 1194 835 2 -2147483648 -2147483648 0 1630 864 2 1795 889 2 1960 932 2 2134 997 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 337 1360 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2264 1405 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2314 1634 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 250 1868 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 642 1874 4 854 1768 4 1070 1744 4 1239 1753 4 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1770 1764 5 1950 1759 5 2134 1794 5 2249 1859 5 2295 1884 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 760 2070 4 882 2045 4 1045 2030 4 1190 2040 4 -2147483648 -2147483648 -1 -2147483648 -2147483648 0 1715 2065 5 1875 2035 5 2088 2105 5 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 2190 -1 -2147483648 -2147483648 0 135 2495 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1428 2324 3 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2335 2365 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 150 2705 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1250 2613 3 1415 2610 3 1660 2576 3 1849 2610 3 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2355 2596 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 980 2970 1 -2147483648 -2147483648 0 1390 2960 1 1665 2996 1 1800 2990 1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2359 2973 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 382 3180 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1400 3230 1 1650 3230 1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2254 3228 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2125 3446 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 784 3613 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 420 3910 -1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1419 3876 2 1630 3840 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2168 3980 -1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 3980 -1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 727 3990 -1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1630 3990 -1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 3990 -1 232 329 1 10 231 308 93.400000 148.600000 139.600000 148.600000 116.500000 256.400000 /home/debdev/xmorph/xmorph-current/example/AD_freeborder/image1.png xmorph-20140707+nmu2/example/AD_freeborder/image1.png.mesh0000664000000000000000000000515712356304631017777 0ustar M2 13 16 110 530 2 373 502 0 615 439 0 831 360 0 1030 283 0 1230 230 2 1431 217 0 1639 247 0 1840 320 2 1992 436 0 2120 562 0 2226 664 0 2320 710 2 124 758 0 382 748 0 622 715 0 835 655 0 1025 591 0 1217 550 0 1425 544 0 1633 573 0 1819 623 0 1981 697 0 2124 783 0 2225 844 0 2304 867 0 156 972 0 402 973 0 637 970 2 842 920 2 1017 864 0 1194 835 2 1416 832 0 1630 864 2 1795 889 2 1960 932 2 2134 997 2 2219 1026 0 2278 1035 0 197 1161 0 419 1159 0 634 1150 0 833 1119 0 1019 1082 0 1210 1057 0 1418 1052 0 1619 1068 0 1797 1093 0 1963 1131 0 2108 1177 0 2201 1206 0 2258 1213 0 237 1329 0 431 1323 0 628 1306 0 827 1282 0 1026 1254 0 1226 1233 0 1426 1226 0 1620 1233 0 1803 1255 0 1966 1292 0 2098 1341 0 2196 1388 0 2264 1405 2 265 1492 0 437 1486 0 623 1465 0 827 1433 0 1036 1403 0 1239 1387 0 1431 1384 0 1619 1388 0 1804 1401 0 1971 1431 0 2106 1485 0 2214 1563 0 2314 1634 2 273 1666 0 441 1669 0 621 1649 0 835 1589 0 1053 1554 0 1247 1549 0 1426 1559 0 1608 1563 0 1795 1560 0 1973 1575 0 2124 1621 0 2234 1697 0 2310 1741 0 250 1868 2 456 1886 0 642 1874 4 854 1768 4 1070 1744 4 1239 1753 4 1412 1778 0 1591 1782 0 1770 1764 5 1950 1759 5 2134 1794 5 2249 1859 5 2295 1884 2 186 2173 0 481 2143 0 760 2070 4 882 2045 4 1045 2030 4 1190 2040 4 1404 2045 0 1586 2043 0 1730 2050 5 1875 2035 5 2088 2105 5 2227 2107 0 2310 2108 0 135 2495 2 446 2434 0 701 2367 0 869 2335 0 1028 2307 0 1212 2292 0 1428 2324 3 1609 2313 0 1775 2318 0 1922 2340 0 2080 2370 0 2218 2367 0 2335 2365 2 150 2705 2 401 2681 0 624 2657 0 810 2646 0 992 2617 0 1210 2540 3 1410 2560 3 1630 2600 3 1849 2610 3 1984 2642 0 2105 2653 0 2229 2637 0 2355 2596 2 165 2874 0 373 2881 0 569 2905 0 751 2944 0 930 2980 1 1162 2929 0 1390 2960 1 1640 2970 1 1860 2970 1 2010 2947 0 2130 2940 0 2244 2949 0 2359 2973 2 179 3032 0 362 3058 0 544 3123 0 730 3194 0 926 3238 0 1150 3230 0 1390 3210 1 1650 3220 1 1848 3229 0 2006 3216 0 2135 3210 0 2254 3228 2 2361 3240 0 191 3195 0 363 3247 0 542 3341 0 734 3424 0 941 3472 0 1164 3483 0 1398 3471 0 1629 3465 0 1826 3462 0 1988 3453 0 2125 3446 2 2249 3458 0 2363 3464 0 200 3410 2 369 3498 0 549 3589 0 746 3656 0 959 3699 0 1181 3721 0 1403 3717 0 1614 3702 0 1806 3688 0 1973 3676 0 2117 3669 0 2245 3670 0 2364 3671 0 202 3848 0 371 3853 0 552 3866 0 752 3888 0 970 3920 2 1190 3960 2 1405 3955 0 1610 3930 2 1799 3909 0 1967 3893 0 2113 3882 0 2243 3875 0 2364 3872 0 232 329 1 10 231 308 93.400000 148.600000 139.600000 148.600000 116.500000 256.400000 /home/debdev/xmorph/xmorph-current/example/AD_freeborder/image1.png xmorph-20140707+nmu2/example/AD_freeborder/image1.png0000777000000000000000000000000012356304631021377 2../AD/image1.pngustar xmorph-20140707+nmu2/example/AD_freeborder/image2.png.mesh0000664000000000000000000000515412356304631017775 0ustar M2 13 16 180 400 2 433 370 0 671 300 0 878 210 0 1046 116 0 1190 40 2 1408 -1 0 1622 9 0 1820 90 2 2002 257 0 2157 451 0 2287 615 0 2400 690 2 190 665 0 437 649 0 674 601 0 890 522 0 1075 451 0 1248 409 0 1434 404 0 1629 433 0 1827 487 0 2005 577 0 2162 706 0 2287 809 0 2393 849 0 215 915 0 448 910 0 680 890 2 917 812 2 1120 764 0 1320 750 2 1477 769 0 1645 817 2 1845 842 2 2005 862 2 2173 959 2 2285 1014 0 2380 1033 0 249 1138 0 466 1133 0 688 1113 0 914 1073 0 1131 1044 0 1332 1041 0 1506 1062 0 1675 1095 0 1849 1118 0 2010 1140 0 2156 1183 0 2273 1217 0 2371 1230 0 287 1337 0 479 1331 0 684 1314 0 900 1295 0 1120 1282 0 1328 1282 0 1516 1298 0 1688 1321 0 1851 1345 0 2005 1369 0 2144 1392 0 2265 1414 0 2373 1429 2 321 1524 0 481 1518 0 666 1501 0 881 1485 0 1108 1479 0 1321 1485 0 1510 1499 0 1681 1519 0 1843 1541 0 1997 1560 0 2139 1576 0 2269 1592 0 2394 1605 2 347 1706 0 479 1700 0 642 1681 0 876 1648 0 1103 1645 0 1313 1672 0 1489 1688 0 1655 1704 0 1820 1720 0 1986 1724 0 2141 1733 0 2278 1758 0 2392 1766 0 357 1888 2 499 1878 0 640 1860 4 910 1800 4 1100 1800 4 1290 1860 4 1453 1886 0 1620 1898 0 1790 1898 5 1965 1864 5 2144 1868 5 2289 1939 5 2384 1938 2 348 2073 0 563 2051 0 800 2000 4 945 1998 4 1095 1998 4 1200 2020 4 1409 2121 0 1599 2135 0 1765 2055 5 1930 1990 5 2130 2030 5 2274 2122 0 2386 2157 0 322 2284 2 563 2263 0 779 2231 0 926 2232 0 1052 2258 0 1192 2324 0 1404 2440 3 1604 2470 0 1777 2366 0 1942 2286 0 2107 2302 0 2250 2372 0 2380 2420 2 288 2518 2 523 2488 0 721 2476 0 875 2502 0 1008 2557 0 1160 2630 3 1360 2730 3 1620 2840 3 1800 2680 3 1955 2602 0 2091 2608 0 2219 2659 0 2344 2691 2 284 2679 0 490 2683 0 673 2715 0 828 2782 0 970 2870 1 1133 2943 0 1320 2990 1 1590 2980 1 1820 2923 1 1950 2902 0 2064 2907 0 2183 2947 0 2309 3003 2 302 2830 0 482 2865 0 650 2952 0 805 3055 0 960 3150 0 1134 3229 0 1340 3290 1 1560 3300 1 1758 3229 0 1899 3190 0 2016 3178 0 2144 3183 2 2281 3204 0 327 2986 0 496 3068 0 655 3210 0 801 3320 0 953 3399 0 1130 3463 0 1330 3508 0 1526 3516 0 1700 3485 0 1840 3451 0 1960 3433 2 2109 3422 0 2262 3421 0 350 3200 2 517 3343 0 677 3503 2 802 3563 0 938 3609 0 1111 3652 0 1312 3683 0 1507 3696 0 1669 3691 0 1809 3678 0 1944 3667 0 2093 3659 0 2250 3656 0 357 3729 0 524 3732 0 676 3743 0 799 3761 0 921 3787 2 1090 3820 2 1304 3843 0 1510 3860 2 1662 3873 0 1800 3884 0 1940 3891 0 2089 3896 0 2246 3897 0 226 321 12 28 207 276 94.800000 152.200000 136.200000 152.200000 115.500000 248.800000 /home/debdev/xmorph/xmorph-current/example/AD_freeborder/image2.png xmorph-20140707+nmu2/example/AD_freeborder/image2.png0000777000000000000000000000000012356304631021401 2../AD/image2.pngustar xmorph-20140707+nmu2/example/AD_freeborder/image2.png.meshtmp0000664000000000000000000001767412356304631020530 0ustar M2 19 19 -1031 0 -1 2270 0 -1 -2147483648 0 0 -2147483648 0 0 -2147483648 0 0 -2147483648 0 0 435 0 -1 -2147483648 0 0 -2147483648 0 0 -2147483648 0 0 1316 0 -1 -2147483648 0 0 -2147483648 0 0 1847 0 -1 -2147483648 0 0 -2147483648 0 0 -2147483648 0 0 -2147483648 0 0 2820 0 -1 0 -2147483648 0 2180 950 -1 2970 2210 -1 1990 2180 -1 2010 2160 -1 1370 3970 -1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 687 937 2 917 812 2 -2147483648 -2147483648 0 1320 760 2 -2147483648 -2147483648 0 1645 817 2 1845 842 2 2006 862 2 2173 959 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 457 1365 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2373 1429 2 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2394 1606 2 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 358 1888 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 700 1870 4 910 1800 4 1100 1800 4 1290 1860 4 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1790 1898 5 1965 1864 5 2144 1868 5 2289 1939 5 2384 1938 2 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 800 2000 4 945 1998 4 1095 1998 4 1200 2020 4 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1765 2055 5 1930 1990 5 2130 2030 5 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 2177 -1 0 -2147483648 0 -2147483648 -2147483648 0 323 2284 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1404 2440 3 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2380 2420 2 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 288 2518 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1160 2630 3 1345 2796 3 1620 2840 3 1826 2711 3 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2344 2691 2 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 965 2893 1 -2147483648 -2147483648 0 1359 3000 1 1596 3008 1 1821 2923 1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2309 3003 2 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 398 3106 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1338 3316 1 1580 3320 1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2144 3183 2 -2147483648 -2147483648 0 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1960 3433 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 677 3503 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 -2147483648 0 0 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -83 3980 -1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 -2147483648 -2147483648 0 1310 3870 2 1510 3860 2 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2270 3860 -1 -2147483648 -2147483648 0 -2147483648 -2147483648 0 2990 3917 -1 0 3990 0 -2147483648 3990 0 -2147483648 3990 0 -2147483648 3990 0 -2147483648 3990 0 -2147483648 3990 0 270 3990 -1 -2147483648 3990 0 -2147483648 3990 0 -2147483648 3990 0 -2147483648 3990 0 -2147483648 3990 0 1390 3990 -1 -2147483648 3990 0 -2147483648 3990 0 -2147483648 3990 0 -2147483648 3990 0 -2147483648 3990 0 2990 3990 -1 226 321 12 28 207 276 94.800000 152.200000 136.200000 152.200000 115.500000 248.800000 image2.png xmorph-20140707+nmu2/example/AD/0000775000000000000000000000000012356343462012771 5ustar xmorph-20140707+nmu2/example/AD/README0000664000000000000000000000004612356304632013645 0ustar simply run gtkmorph gtkmorph.session xmorph-20140707+nmu2/example/AD/gtkmorph.session0000664000000000000000000000072212356304632016226 0ustar 300 400 image1.png 1 image1.png.mesh 0.500000 0.500000 image2.png 1 image2.png.mesh 0.500000 0.500000 xmorph-20140707+nmu2/example/AD/image1.png.mesh0000664000000000000000000001055612356304632015600 0ustar M2 19 19 0 0 0 154 0 0 313 0 0 477 0 0 647 0 0 827 0 0 1014 0 0 1205 0 0 1398 0 0 1589 0 0 1778 0 0 1960 0 0 2130 0 0 2295 0 0 2449 0 0 2593 0 0 2728 0 0 2860 0 0 2990 0 0 0 263 0 154 263 0 311 263 0 476 258 0 647 253 0 827 243 0 1014 233 0 1205 228 0 1399 228 0 1590 233 0 1780 243 0 1960 253 0 2130 261 0 2294 265 0 2445 265 0 2586 261 0 2723 258 0 2856 255 0 2990 253 0 0 520 0 150 520 0 308 517 0 472 515 0 645 502 0 825 482 0 1012 462 0 1205 447 0 1400 447 0 1595 457 0 1785 477 0 1965 501 0 2130 517 0 2285 527 0 2430 525 0 2568 517 0 2706 511 0 2846 507 0 2990 506 0 0 760 0 150 760 0 306 760 0 467 759 0 642 745 0 830 710 0 1012 674 0 1200 650 0 1405 652 0 1609 670 0 1790 695 0 1965 730 0 2133 767 0 2273 777 0 2404 772 0 2535 764 0 2681 757 0 2833 754 0 2990 752 0 0 980 0 154 980 0 308 982 0 467 980 0 637 975 2 857 929 2 1015 869 0 1197 837 2 1414 837 0 1635 860 2 1795 882 2 1964 939 2 2133 997 2 2245 1004 0 2360 999 0 2495 995 0 2650 994 0 2816 992 0 2990 992 0 0 1177 0 159 1179 0 320 1180 0 482 1170 0 652 1144 0 837 1099 0 1022 1050 0 1215 1015 0 1424 1007 0 1628 1025 0 1804 1057 0 1960 1107 0 2099 1164 0 2203 1194 0 2305 1205 0 2450 1217 0 2623 1222 0 2803 1220 0 2990 1220 0 0 1345 0 168 1353 0 337 1363 2 496 1340 0 660 1305 0 839 1262 0 1030 1217 0 1230 1184 0 1434 1170 0 1629 1180 0 1808 1210 0 1960 1257 0 2083 1314 0 2178 1370 0 2265 1408 2 2425 1430 0 2606 1438 0 2793 1435 0 2990 1434 0 0 1500 0 186 1505 0 352 1515 0 502 1505 0 659 1470 0 840 1425 0 1040 1380 0 1242 1350 0 1435 1340 0 1625 1345 0 1805 1363 0 1965 1398 0 2090 1455 0 2199 1540 0 2314 1630 2 2435 1635 0 2598 1635 0 2788 1635 0 2990 1638 0 0 1660 0 216 1665 0 377 1685 0 506 1690 0 645 1658 0 842 1590 0 1055 1545 0 1247 1533 0 1428 1538 0 1610 1540 0 1798 1540 0 1970 1555 0 2115 1604 0 2225 1683 0 2315 1753 0 2435 1795 0 2598 1819 0 2786 1833 0 2990 1835 0 0 1878 0 256 1868 2 396 1895 0 521 1900 0 640 1870 4 850 1760 4 1077 1740 4 1239 1753 4 1410 1770 0 1588 1778 0 1770 1764 5 1950 1755 5 2139 1790 5 2249 1859 5 2290 1883 2 2434 1950 0 2603 1999 0 2791 2025 0 2990 2035 0 0 2184 0 191 2180 0 372 2160 0 557 2125 0 767 2070 4 880 2028 4 1047 2015 4 1195 2040 4 1400 2040 0 1578 2045 0 1718 2060 5 1870 2038 5 2089 2108 5 2225 2105 0 2323 2114 0 2455 2148 0 2618 2190 0 2798 2225 0 2990 2235 0 0 2490 0 130 2490 2 341 2439 0 551 2385 0 739 2343 0 882 2320 0 1040 2314 0 1225 2320 0 1425 2320 3 1615 2300 0 1775 2319 0 1913 2345 0 2065 2375 0 2205 2368 0 2338 2360 2 2479 2378 0 2636 2410 0 2808 2435 0 2990 2445 0 0 2720 0 153 2708 2 337 2688 0 531 2661 0 700 2643 0 852 2638 0 1025 2633 0 1255 2611 3 1410 2615 3 1660 2578 3 1845 2610 3 1954 2653 0 2074 2663 0 2210 2643 0 2350 2591 2 2500 2631 0 2655 2651 0 2818 2661 0 2990 2665 0 0 2941 0 176 2938 0 357 2936 0 527 2931 0 685 2930 0 825 2941 0 970 2968 1 1185 2941 0 1395 2960 1 1668 2990 1 1800 2998 1 1955 2963 0 2093 2953 0 2225 2956 0 2350 2976 2 2513 2930 0 2670 2905 0 2828 2893 0 2990 2891 0 0 3166 0 195 3170 0 387 3183 2 547 3180 0 700 3188 0 840 3205 0 992 3223 0 1180 3228 0 1409 3233 1 1658 3238 1 1810 3246 0 1964 3231 0 2110 3221 0 2250 3223 2 2385 3226 0 2530 3191 0 2683 3153 0 2836 3128 0 2990 3121 0 0 3383 0 203 3386 0 397 3395 0 577 3401 0 739 3413 0 882 3431 0 1034 3453 0 1209 3470 0 1414 3473 0 1625 3470 0 1810 3466 0 1975 3456 0 2120 3448 2 2270 3446 0 2410 3436 0 2553 3413 0 2696 3381 0 2843 3358 0 2990 3351 0 0 3591 0 208 3593 0 412 3598 0 605 3603 0 780 3618 2 925 3631 0 1070 3655 0 1232 3678 0 1420 3691 0 1624 3683 0 1815 3666 0 1984 3653 0 2140 3643 0 2285 3638 0 2430 3628 0 2570 3613 0 2708 3593 0 2848 3578 0 2990 3571 0 0 3793 0 213 3793 0 421 3795 0 617 3798 0 795 3803 0 947 3813 0 1092 3830 0 1245 3851 0 1419 3876 2 1630 3860 2 1820 3840 0 1990 3826 0 2149 3821 0 2298 3816 0 2440 3811 0 2580 3803 0 2716 3795 0 2853 3786 0 2990 3783 0 0 3990 0 215 3990 0 422 3990 0 620 3990 0 797 3990 0 954 3990 0 1100 3990 0 1252 3990 0 1425 3990 0 1633 3990 0 1820 3990 0 1993 3990 0 2150 3990 0 2300 3990 0 2444 3990 0 2583 3990 0 2720 3990 0 2855 3990 0 2990 3990 0 232 329 1 10 231 308 77.230000 148.600000 155.770000 148.600000 116.500000 256.400000 image1.png 300 400 mouth outline nose right eye left eye xmorph-20140707+nmu2/example/AD/image1.png0000664000000000000000000023747712356304632014662 0ustar ‰PNG  IHDRèIüöÐbKGDùC» pHYs  ÒÝ~ütIMEÓ ò8rý IDATxœì½i“d×q%x|¹÷½ˆÈ¥TU( @€[”Z9cc6?H?SÝ-Í´Y›F£­5jPˆ…TUf¼w¯/óáF&@4)¸ uË‘ñnÄóç×ýøqà_o¼ñÆS:îëOå¸×øÆã»OÉd¯qß?þñŸ=í%\ã_×{ô5¾1¸6Ök|pvvïå—¿õ´Wqk<ÎÎÎsóäênQ)*Oq=Oˆý¯À]S]ÿNw§Ç»Ï?²ÝLOòª_ûœ{wnþæËz2œýû­À_ûÚÏã;/?ÿ…GÞxåþ¯Üÿ²ïóÝ'xɃ翊:ù~ôïà(_5®­ö—â¥çïþ?x €ª|ÿµßíÁw¾õü÷^ý¬óç_{ñìγ;7þÃëÆ«ýñ/ýG|îÞíßzÕ¿ßt¾~áþŸýÙÿÓúÏOe)_7læi¿¬Wwßz烷Þù€™gdDdáBÛ»·NLENv›g§ß{åì'ï}zõß³gn¼÷á'O¾€©–ßö3üjüÝßýÝïïÍ¿ðçïüàßÿ/ÿå/ŸÖR¾>øÁ¾üÆk/~Þj^ýÖ³ãÆ3·¶''óññ¼ô>yñÙÛ7¶S¾±ôo½‹@šŸÝ<º{c'DÿÛ÷_^[ÀLžýWú³ÏüÒeü}ïwüÁþá3‡ñ‡øæûoÿÏS\Ê×*úÿ½õ.€—^¼û/Ÿ½óÞÏ_}ùÙçîÞÚLåù³›÷ÏnÍ…Ísí.Âïô)€o½pw·)"2Uáû÷n‰gˆÖîñÜ3§.ÖýÒ_8»ý­ûÏœÝ>}÷gŸ ¢gïÜüäÑùSþØß(B…7ßüÎ_ÿõß<Ý¥üö Bægw<—™¿à·<÷'ï|ðo¿ð£½wçdRúÓ?z…‰`&&R!w¿XúÇŸ^<8»ñ¿ÿàÕf~¼)­µiš"3©Jf‚ˆªœÀù¾ÍSùùà SÕ©è~]G¹}rûtûÖ¯[Õ5>¾ÿ¹ýÙŸüÍßüýÓ^Éï¯û†$læºÛL#ÅQ9ì-ú+×—îß½wçæv3½üâÙéÉöõoß¿wçæ<)³Ì“Γvs>ß7÷ÌLìÝŠ *mjk-"®Þ-†Ñ`B-rãxsÅõî6•™þúþeܽwëˆùW–3®ñK¡o¿ýÓ·ßþéÓ^Æ/Ǜ߾ÿ7ÿôö“?¿´ÏßÍHŠŠŠœÝ½åï¾ÿÑÅ/>ç ÇG›ã£Í›Ç›ªSUÌõäh&¤;TVU„<Ò<q¼­»Þ»Î“E’JZ:22˜¹YÔÂAHÈ2©&áÍ?x1">_u{óÛ÷·…›å/]ÕW†7^ýo¿QéÚ׺ÞóÊýg¾û­»?Ü/kÿüãßûƒÏÜ<=9Þžm繞_,§Ç»W^zv»©g·o¼p÷ÖÝ[§7oMµóTËÏ>~xr¼}îÎÛ·NËÓ£¢: }ªåO¾÷rQ™Šžn§"¢"\”{¸õ¦Zˆ0W5³¹ @}]y²›Ü= "é±°™E¦9ˆÂÜJQ™D ÕZ¤u_›Ý¹uòèb¹y²ÛÎÕ#~òîÇþã/í—öÇßy‘™™hiý—}1¿{l·ÛO?ýô×?ïkƒ¯ãõò g1Õ’À<—©êÅÒ•ñ×÷S-üÝÌ£ªˆ0€Œ$&eºxøiQU)eªö½[o§È|¼ï‘YŠ´žËÚæ*$t¾ouÒ›'sSUwæ¢%Z73¡`U÷äô0¯µ¦yï‰ ¨ º"U53…¸ŠF‚ÌFð Ì €Õâý/m„ ·Ž·öîâòî¿û²ÖîÞÿù£·?øøó_ 3Ý¿wë_ÞýhÜýƒo?¿¶þ“9DÆ_ˆïÿÝã‹<îW†çÎnÍS]ÖöÓ÷>þ¿"B„KU®“Ö"Ę‹üÉ›ßúÉO?záìVQÉH"|H¤˜˜î&fg0²NÊšÝ;m6˜¡ÊNDÂÂÄá°ˆÄH0‘èm­¤mõݤÌ$"É´õŽ p ”@‚2“3#,3§0ˆÜÁÏL€™™¹¨°òíÓ]d¾ÿñ#UÙÍÅ"<ÀÙ퓇çûÇû%"_|öö½Û'µˆ0mþßÿþ6€?zøðáÅøÆ^ùÖ³½ù¿þôƒßÆvÏÎî½÷Þû¿ùë¿Z<5ýq¼ÝÌEu÷ì­þëß¿õùÿF„*—"S&LEvãhªî*s‚9¡Ìeæf&g€áÌL„eé"ÂÌãm¥JRe&&)âéf&"™Y’È$¢X{©3D(23#‚™ $»D5™" d:ÀÝ-ƒˆ”˜˜ˆÈ"AŠTBQ™§¦i£ô‘üé÷_±ôR3yæë¯<[TÞýðáéÑFŠ8`î¢òÂsÏÍ÷oØn¦W^:Ûmê£óõ[/žýóOÞ»uzüñ§~ƒ32ÕúÛÒ¯O3TxðÜí;·Žç¢Ûª«Åã}ð/ï}ü­ûÏìW»yºQ!sëÝ„9#ЍªF„»3 }ÜŽsoÑY8 ˆH·h½"”ÂE‰‰Ò3$“²Lˆ0k"äÞE„A”‘î–F`"ÊLà°/»WVëø8µI 2é–H‚›‰öî R{‚’<‰‚Ä #Z»H€Âðð ˤ”´ôÆ‚073VÀ‰Œ b¦qì™îÃjÇU7öˆ¾®”YD¬L“µÎI\XE2™½µ”Ré½+1„™ˆ3Ÿ—R6uê‘afªZ+·fÝ¢uÿðçž¹AÂ<•¢"æÿ®œîï&Æ=Úmž½wkžt7—RD…"’U(=Í€ 1!ÈÈLÕÃ5c b\ì÷n6o6½5i½`àpšë."̲öÖ{Uå"™0ëI˜çMÑZ·›ý~}ôè‘»("<œ™3ÓÝ…E‹¦ÂœÀÁÿ±XÌ3"ê48<¬7ËPUÏpw9Þ?|Dî¾æI ²»5¥ÖD‚¨”bš¦IXö˾7;Þ ÉÅÅÅ4ÍÌäî™h­e&3×ZŠpš¦©÷î"‚LDŽ}&Üç:‘™e„•RD¤÷d)¥”r¾Ú;ïÚºívS&Z÷>~¸~UdðW‰ß6ƽ{çæóÏß¹÷ÌÉT¤2ÏEª°F*R‰4® "bŽõª"jfËÚFÉtä[™~°Úƒ„AÁ ±“†‡°´e­Z™e~ívˆ&­õð@š“"²¹9ËÞH!-AâIÎàˆGdk ƒä94aøÂýº¸û4O®EYÄ܉9€ÖÍ=ºÙØâÍ<" êÈæ&µŒ–¾ôÖÜ,ÂÉ„ÌX–½››{ë]˜Í-Çê‰HØ3̄̎»‡ØižK‚˜Ù=Ÿ/ÓTnœî~þég™Æ­Çû_Q;üfá·2Ü›7Onß>ÞÌE˜„H"¤ e*8dúÌDDLÄã”W{ý¸ÝÍœ "V-½g"/Mm¼Z¡ƒ†bVaE"=G–ˆ)É»»#‰Z7"BD#,+é½TJaižIÂ¥jlÒ3"™…‚#8DÀA`éf‘Á nFÌ*Ò­1+ˆÍC´°ªy$È=˜…ˆÝÃ3¥Gvw)jákožÑÌ<L`¶ðÖz­º.k"=¢›ñ•ˆ "L‡(ò2:RDåWŠŒÏ;¾©ª2Wmæëe鑈îÜ>}t¾ÿmÎû׿•á¾øâÝy*œ˜g‹R‚ʬ”DILÝ Ã×F$:ì Àpº™iîÄ’—Ôyk #‰ù\,ËDù Ñ8C–áÍú¨xY„–²ö¾_ö­PäŠå·™YUAUhÔù0¼øpüHŠp€àîƒ1‘Þ»™‘01K)±´……‡/ÔZ„?ûJ¯BbĈD{ïãcŽ/™‰¨µÖÖu³ÛôÞA ñ_f"ŽL&‘aБ#}ÌñB"Œ˜AD˜I„‹J-â "DæÉÑæÃÌn7ÿþk/ÌÓôÑ'¿ ×ûõÁon¸^¸ûâ³§“ÒvÖÂÄéUi® óî jÖ‡í]åþWÕ` "¢u‰{˜yD®khìéîqåw-)ˆ ’"–¹†÷°”Íì@÷pd$º9ÀyIšeD^¹m"6óuiŠ$7r#wrg ½îîFL w7Ub‘ˆ°pGv· ,ë:ì]k‰s#b“È8æð²Lœ‰Þ-#7›¨¸¹uSQë=Ük©È$个ÜÌÍKU`fQq7Q5÷ˆQë½÷™½µÌÀaûÊRt1nFˆÍ$*"ÂHÔ¢/œÝŠÄã‹@÷xåùÛÿã7ô”ð¥ w3Ofþò‹g·Ž7Û"mÙ‡™0##¯œh˜HÔzlæ•—u÷á„Ü}ìtÝœ¹ºGx")<‹V3w‹ÏvpP3Of ÂêÖÝ=sÚmYµLS øøñÕšš§)#¬›› Ì"Ò½‹jÊRkm½ ˸žôÞm|f#cˆˆW•á9öwÛNe7ëñnê=þþŸßÛLõþÙÍþèñù²vó¥»oÿìIU5o¼þúÏ>üzú—3Ügnß|ù¥çßûࣻwN7›¢…<’˜AìýÚIŠ”iYÓCZOè&¸”ÍIY-ö˲´žÄ…Á ±2›»¹"̈ðDÔR%I³N‡’E‰‰˜Ý°®¶.žÆBS[zI‰Þ K-…ÚŠˆÌ`JBkKa.Z¦RçRç)ᙞUJZÀCˆÃÑ–BBÍ©‡:v2qT!dû½šsŽÙ@ ÊÌ.JEhSy£LÖÚŹ/ Ü8¢21’•éÂP!Êð„ñÔ©´]¬îIIÁÎ`ëHÑ©–ÒÜ"‘ .ªSuDR((±x碎¡LúÌíã;7ŽnžÌÿü¯xt¾ñ›ß~îíÏÕƒþ |ݬ_–ǽu㸭íù³;77§;í½a"aOoái=™ÁÄ£8Aƒ½9ìÜŸ«Œ0.r¤é‡7€È`tJ"e¶¦µ”Rˆ8<‰¨”rq¾¸J °È*n9„Ù½ ÛŠPU —¢Ó4i)š18ã«óŠzévÙÐÎf2Qž9ª_I¢«­Ú‘é„îqW'ªEЦy zoD°‘¹3)$ìÑ3Ãz/$ª)ÌHex€¨Lš™ÝV¨\ícnÖZcFfRòØÍ<3“2)€QÖ)D±ÝLû€GÌåKœý×_ýkÕ_ù%<îfžv›é“‡ïŸÝ¸}T8 Ná9L³5Šd"ʨ"™Ö{ïÈw7\˜ˆ{½gº# (#Ã)°†u¤3Zx_ežÊ¤¢”)$*æŽDPfRtê-ZnnžÊ¢R é…©2sf-5#p™ŽÜh¤eÓ4}V±#v÷ÌIdÄá*Áç‚VIbb&æqõ1˺_‘™-Zª”ª˜{É€E$‰€9 Ë$ª…ÃÑAY”AؼqqqÎ8¨Ì˜Y7Ñptï½™[dB˜Ã==b¢Q¡y¼·éž_¬¯=xæìöé¿>™ÓýðkætŸÔpßxõÅ÷~öñÚú ÏÝ~æxR™{룬o6óÌæ ˆHf‰‡_FCÓÑ ‚2b„!$-‘é€gv÷8x#× ¦€’D¤Ù\'„ ÌÊ(„r‰œ[¢´#>Ù$æÄt,z¤eµpÉøà—ÌÌ¥”át™YJi­µÞGˆ ¢ÈÈL–ƒÖ,2´Ô%HK‘*¥–jk#¦ÈŒLƒ%ÑZ!lkkÃj{†ED&1³Èñ¼awÎP¥ªfL¹çi·Î„wïa¢AѸ@¥T€™KFŒk‰¯hµføèR@òퟙ«<ïæO~úEeé/Å믿þõ1ß'Ú,^záìöÍM&JÑ['3"réÑzzp&I &Ö„xºg n$Ò0\®uóCÁÌ“<Õ€ájmø¿¤$ “ žA)I”4i=‹4^‰ÎˆrØ6‡z†8ÌóÀa*…/#²7O$óUä·|®zŒAýˆ9–Á a±DDILÌ=ÃÜ%"3k3=3#s5‹u‰îª:M‰ÂÃÓÜC™›ùØ…j­EÄÓ{Ub‘ÍäÞɉY µ§åçqfÍåàpƒÜƒ`7sf1Ì­ÓÍÍÓí«îþ÷Ÿ|à‘ ÔËÆ¤_‹o^¨ðòKw…èôäè¥çnÎ…#b¿¬ÝÓò„''‰'‰N,¥Y(ˆ˜3z§Ì80 qàMAÝÌ ¸:ýrÆ¥×µ Oe®¢9—ª,Lœ‘ÉD*âfÎaBæµ C„E…¢\ç*E‚‘Œž¾ïëbËÔº Ïúyù.÷_$lÝzfßvE_ |U5ˆ="LÃ:€€ªŒpà $ÐÛG`•á¹™îá‰da"B3%Ò£bžª03e.ÌB$Ì1z>˜d¦¨fŒòðA—£Â“tu+ÃÝ}»wófÒ³;ÇóÄ‹M“üÓ¿|ô„æòõ¡~ážœ}ÿ{¯Ô*Eùx[¼¯Ö×¶.žðÌHD’gšÅØ äž âÈh½y$X’$@ ‘RÛºvóÄÃ$8Á>Š• Èdb"v³"¢, ªuªÓ¬¥˜¹›GÓÍ" ÷tO3#‰²–$†DZ„!“9™!¢µ ‹‘ B(3¥3›»( @ëÚ#«¢Ã²ë4‹˜EK‚À< Ó"á”RXk!¦DZou®Z's÷p»¼™»Yz0Q‘ƒ”Cˆj-ÈŒQ.Q d†O¥ª³€KŒŒ–Äæž "†Ü"3S”“É3-3ˆ"È¢%2…Ù=•ùbßç¹xÐ'—Íÿ6¾&V‹ÛpïÞ»ýêk2cÔ` £5ªu°¬—‰Ë(\’¸f"<ÅD‚e¨µ2 iÞzd7kæ›K@,ž‡¤'2=ST#³”ÂÂÄ<ïvuÚH)~¯½GÂct€HX¤Ô‰„Y5ØqÜ‘ÿ +“¨è<ÍÊ(E™)(ˆ`™¨Seó®ªÊî­u÷aóä^§jÞÍ™E¸[WaD1"L¬„ 3‡ÛÉn[¦ÚÛjÖÃM„ KºO¥Ì¥P„&6µ*qÑrhì-¥†;3—iªµx³HQQõdGd˜ØÍGe™£ÕK‹ KôH°×0M“2·Õ_¬sÑãm ¢ z÷ƒ'ætßxýg?{šæû½ï}ïÏÿüÏ¥á~û•ž½w‹’Š(y‚œ(¬uªfž@&.«Ž|Ùu}7Ýc]—"<Ì)*©Š»]:GDfÈæ^ŠôŠPjÕ$Hr赑Aˆˆî6(wF«è¬I£â Ïñ¦i1ºÈ8££«÷Gt73=ÈÍ„…@–±š5·@bðΫ¬ë*"¤ân^„ø0C$3Sµ¨™ÈQD±ÀD벺E*‹€±Ûl'-až‘ó4-*’EudÂ4ÊÔªâ ˆŠ¨®n"%3Ã=3™N‘‘áIÙmîFY‰(#¦ªÊP’¥õÝ\ª’ˆˆ…ŸÔé>=«}饗¾ûÝï¾úê«üñ¯LÎîÞ>pq¾7áÊ<†¸ “˜3HU3¸‘£Þ"™»;PÁ„CãUÒ¡Áí³Še&`W\®á jÈÄ Ø’}o†ÈŒà¡lƒ33ƒ)ið—j01&˜Ü¼÷nÄÑÖR*.‹«ZëÈäpI u™s€@ÒÈäàÞÍ»TaFk-#úêS)E‹»§%¥; ‰Ñ .Ü}\¥’软 ž ¯­Šîæ™)hÒÒz7©…™¡zvx™&L#,ÖK§A\+KD82€±CyèÍdæÈ4sašTwSQö„Hî¶zz²yrzã×ÿöoŸB¢öÖ[o½õÖ[ñ_Å*¼øü½è=Ýwo”‘I—É“õ¾_œuT(2k­ÌÜ»÷>š\ˆ@ ]˜eœóýþÜÌÌbl¯`vw³€‰‡ñ/ž@7ÇÚXXT=#‰Â­¯kQe Ý…¡*EXaÞÝmMO¸»ª”Rr¥ d É€œ¦Iµ€àˆ R”YZr23Eeì"ŒÑGé…©ÄI6X¼iš¶›²ìæÍ\'ÊÌîîã*:°xŸ}Ï>2ŒŒ9L âÂ,|ÿæÑ«÷ùÀÓÿù—uï©þÊ/xÜ7¾óâó÷nÞ¿»Ó4J—¢Ek'kën‘ˆð0W™ÐQH$)»S¤/çëÅ……9z‹Œ2iÜk©ËÚÌÒš11A³G4KK"”¢”Ü[‡p­SfòTΗe5sN.‘y{´´^ç"ÂHßlŠY'ŽHX¦&ÊešwÕúªE6ÛimËE[å`÷p#J‘Ö£[˜‡Y˜…GÔiV™`¾èËãÇdÁ¶Ì•T¹€8<¹Ôžpá.¼"ÈZ2¦”©%õ$ɰÊR;Ñ-‰fªGM‘$ߝ䨔)šÍ:ß8>&°¦:Õíü¨-ïM+oO¶lT–”}ÇÅb̪R ºÄ:è4 IDAT~E´Š)Û]%8SÂM(‹rš C’)™‚ÄnžàO3kû%<‹ÈÈòîpðÐi‡ÄÀDë²ÀLán­3Ó\JD4oK[9䵦D8eR&g H‹ŠÊ¨‰0"ªˆ2ŠH)E…iî–)¥hÕÑ&_¦Ik¡¢A¸Xööûµ-DððumÍ:%IaÎp·N&Ê7ËÌZdmíñã‡@Ÿ-Ë""¢š£!Ê#‰¦:‰hQ7‹UÝnæu]—å¢N•˜×uKáÈlfo¿ÿÉU1è×â‡úÔ†ƒáÞ¹}ão¾:UikkKO?°žL¬ûý*¬›…[䇱C$+Ëè.#Q©Ó$*Ž„"·›m-µµ¶¿¸ðLG&à„æÖÂ;2RÌIDÂ|(D<TXªha)ÂAÑ1—Ê´ 0‘dpdšSZ(%¹³e2h*ÓTêåN€HYæÍ4Šm#ĉðpã1§5ï­‘$tëæ®EJ-@N¥ âIco¨ úŠI…9ˆZ„̤L""Ê­ešJ­D4Æ3‘raomuÐãÇŸ-»Ývž6Âä½ö:Ê$ Â#A"m]±ÛnoÜ<%Æ?û@K™æIU-RU×Ö©\(IE‡!#»ÝŽ˜ÖÖš7Q‘¢iA í\3ó|ßßÿðá“[Ï;ï¼sïÞ½§âz•ˆnœý‡7^99Úö¾¬çC$UJºïÁªÒAI<ê¢4”(££ë*º³ŒÆUká Œæ*‹ aÉÌè«Ë(û*V¾Z1!‰0[ïU؉\XÜ:2=<‰2Ø2< ÈeY ¥Š ]ª› "ޏdî`fÐRDZÄ¢Ù×6Í0D“£^9¢çA;‘¡ƒ€d0æd68¨ˆˆ€‚“‡ÀÚ"Í­‡ƒeÔ\‚¦ýc+r."SÑDîû"¥²6Ö»ªŽSóøüaDPÅ,"¥\IF$Z6u:_–!p$âq:F'ð~ÿ¸”¢½÷¹NµV!U@'u«tÙ4õ„xÿý§3nLnžÿðÞØÎ%"ÒlY.€T•RÔ¬[oîf£; | ˆ:Ήª¨óèZ‹Dæ¡‹Ÿ³Î“˺vë`áí*W dEDU4ú®²Q‘äâÄÆÓeë .ë4£wo”ÝK)j3R.c)e©¬Ð ¢. dN¬É„C¤Y0,43 ’ IR˜™‡#ôLó>ëqP2(‰À—Â4zÑ2bTž™iS«Ô’™â˪o$²¹a(EÄ=)‰$D XÇöAáÞa¢$BÄäAC6;_Þ#>£/³K)!žf”©Ä,,"ì‘n–B"I€°Œ/¿÷ÞÚª*µÖ¾îÛÚ‡Ê"ZËÕ±bŒ¼ÔòÎx”$¨P$DøöÝã‹'8ö—õW÷îÝû*ã]í½[ïf÷ˆ`åîíÐ…K9ºûIHˆÈ2lÄR„ðP-™¹, E£¼J°˜ˆÖÚº®™ ªË²=áUµB˜'È c~m€`Œ»`!P23£ÃAð!¹MËL‹¨Zµ”ý~/*‘öYzdŠt˜Ÿ#Ä£ôb­Ã1B¾ªŠjï}µ>úÆÖ¬7ë"—Æ^AA….Ë¥¨ÈXvú¨#fÕ2•JDNÍ-J°…G„˜˜Ë¡üaf† ¡L ÄÌ ÷dN¢£ àà}¸”ðá)DEõ ºì½—R™™˜Ý]TŒvQéî"bñY´†8HÍŒ%‡Ó™Š¸ïô ;#¾â,M^~þ¶÷î½¹¹»³pï}i= ¢J,Ì"Ì"Ê"9ÊçªNh½ Ë(ÏZï‡ ÷²ä[K)E/öçkk a‚xÄ(©ˆŠ ªp'! ‹ W"¸KæD4‰lU+ó†!2º57ópëë<×"Ò×}­%ݽ·ª¢ÂÊTTŠˆ…¸)QaV"ÎX÷Ed»™·›y;OS)‘ÎÂzx'$1]åéAHas¥ KÕRE ˜™•©-ÌB\ka!ªSU ‰àÃOñ\µfŒ®‡Íf3F„˜>$D„!ŒéÐÀ7B^e–"Zjñð˜…UˆÅ=æyR(÷>RÉ}ëRK2­½IQÙóØ=­(fCŽ™éDÉ̃ºŸ ÏUNŽ6ïþìK»úÿäŸ~E?„£Ñͯ&Îâ ßADÁ$¬"²ßïP2yFô–Uƒ×df¿,玚ä4MC® 3T•ÖsmMDUµˆRæðXK[3‰˜E$Ç'Õô`$Gˆ@9áFÂټÉ8“ZÏÄVŠ$-­§5."Âé.¤…9H…ÇødTf&²ÌÆ|´ÝœžžŽòì¾­X<…‹ÜÌ¢–RÊD>GDì÷{"ªZÆGËK±¦ˆTïëº9‹Èº®­µuÝ*·œZ™é@K%ÌTЬeS*EëŸ=Æé¶FDE Szø¨ËXx GIyw|d»;ÌÆ÷Ü{Á@kûeYnÜ8ዽ!<ÜÎP•yª#N ËÁm™Är8›DR´ž/`ž¿Üo²þÕÿõeƒr‚>*õÈîÈñK á‡YFƒ½"æf&ʪŠÄ~¿¿ŠŒG°;¶¡ˆpÏÏEoŸÍ¼?Äy‡æDÁ˜û"`sD™„#XÈ aŠÈì „dfMÊ„€T•=3m·­u¬+"¢,P⢊ÌéRºZE‰ˆ"·›Ín»Ým·"2–ÍÛ™õÞ‘ !9Ú–¦s‰tä¤e·Û‰ˆ¹/½EÄ4ÍÞ©/+Eª°Š’ÊÅÅE)….û‡UU„ØÜÒUháI´²ѶN…ˆÞ[Ñ”$)Z,1[ÐÝÖD‰œ§Ãdö`JðpU•§zˆZ›·›µµ1Þt˜µ%¢~Ùª4¡IJ"l>†Çñ4™Çù¾ï6_úÇ„ÏE“¾(k<”o™A03à O"+±ˆÀ<"´ï¶, 3W9|WùÙHéF1bÌ/¸Ò+büDBÅÌÉy•= á«» (‰X”3¥¯«'‘*3KF€„ySêøñ…YÊy4wY‘*B «2%JD¥01Qm¹Nu„—”I¢4—yH ‰Êh D›yÞ{ÏØl6ó<«êÚZKGÔBÙý?¢äŒèmsr|u•23À°dOµJ’ ½€+I31¤hÔÛ˜À"ªì«Ä—„‘Ñ#»…U™y ³”«’]èG·o60Ú²åønóФ"q>EÙy˜ÙoüƒÏ/¾óÚkÿÿð››ä“A^¾wb­ c.ÅÖUÃ6Eª°¯+‰pFð4­n=ò¢û§Ë¾¹“eŽÆ‡nÖ¬Y„…QÝL:Õ`Ó§û5u2Òæè‘ Õ:'Ø1FTL"„])ªì½yƒQRÖ*U i@ÒEo¬Z§É3.–}¸Ñ›7 & 'fk6éF£lë‘rÙN»iš3Q§yÞnFh>Ík:jA)«÷æN"¬Ê,¢º™æ©Vef0€:ÐÓ¦žœìv»YBY•'áBIÞaVDFIvÐ,µha™KrØÝ¼¹uzÚ¬E´Ö.¶»)Ó2ûîhÞí¦:)à,9ÍZŠ3k·GZgóðÈy³›ç »E‘¢,ôÿÓö¦¿’\×àÙùªŠE“"-Ñ2d£%50Ÿ {¾5Ðú`€Œ=3=ð¸á¥-x“-K&Ūz/3#î=Ë|8ɧmD‰T  ”ˆ÷²22Oœ{–ß⸨³»†©¢ŽÞO§ n×ëeYãašsÞG×ëÅt”V€… ÝÐÑ­33C “™"ˆIþ¿úÇþÑ’ ÓTõËéñúÙ—¥^~•‹?ù𜺅HìHÀRJ²¸Àrø:ÆÐ®áQDJa‚tçfÈD£7«µ&·ÔryzòðpHÚaf8‡pÂ(……©IÁsKx 3-óŒŒ$D©G«cŒ~]Z9ÍÍG¿].ó4¿zõª¶†\, › 1„ñòåÃé|ª­"Ff,fbæRJk“=MSe.D9|=tFO±F$¬¥°P­eYæÚšˆâ²,îÂìn\1<¥æ"¹0K<îù´Î)Ÿ«a6SùðƒN§SjñµV™(ÂùPuèÛ6¶ ‰j)áÞÕ¼ìÈߤø‚0q.ôÂT;@´"ëzswa~ýÞ{¦:ƨµŽÞ-|Y–4„Ë6.<\M²ú:à™¼k‘_¿|ºnw‡À/µyýÙŸýé¿þëï¶K£<Þ=P-Èœ<€H€8¬äãz(b  50óDjƒy‚µ =ƺ­›v\Q ¡ î…¸pÎ;ƒ jR]Ý ‚iî¦fC­ !#$¬¶°d?ND»Ü!!Kió©µBÌ8MužÛé4OSu׬[j­"RE ‡ D¾,cz€8 ’ʪÛv»öõnBÀHÁ nCµ3‘`PP 4)S©­Xh©\*ÝÌFNÏ 'ˆÂT…¡0Mµ!Aqè fdA¬µd}%¡}¸¦ã‹HrÝrÜëj6svŽˆµB¬¥L¥úP¢šœ×}îžz(pÔŠP…ÿè“»¨úó?ÿ‹?þøkÏ_}IvÇ©…íî€aDˆ¹I‡+S "X ó,7ùâYàîðgCBLæBl‘>%T… ƒˆE$Ô†v² BHò%b­"g§ÒÚÔZÛ:}CŒ´™k¢Ûõ0¤@­Ôꌈ—Ë%Óm.ZkäÖ‡Š#@˜ Gˆ^ù>œó±m®šò6æ™ÆÜ K©¥tW!rDBªR¦R‰Hû¸±, 3­ã„ˆp /Ì®@Ù݈Èó¡ª\<€p˜ ™ê¶ÝP¸H#á7 CðÂè‰öpO’Uhl×Û4M¥MoÞ¾‘ àÝ»wó'~ƒ)7\ŠlÛ †TœP1Èœ‚…½1±ˆô>àz¹ÒË—/…hÝ6D°¡áîC÷ÉW­Ì¬£'«.}‡ðFéjk×ß(˜ž#Ën·õÏþôOþü/þ¯¯5\¿¸øÛ¿ÿq¢a6ÌjR‘ ÷‘PÕ1vñk3ÀVk‘fiš§cdµwìl½Ý±Õê6r~IDLBˆÑZM”Q Õ<šcl« žæ)7áfÃtŒÞ]¥¾™¥NèáS›NËb6¦ÊUbT†÷ß{y»=]¯Oó2Og3í}Œ¡î.\qÛ6DŠp íÚçór:/,l:ƺšpcÀ©”¹µ¥µRež§Öj@Œ¾ÞY–y*Uœx܆¤‡eY¦6×nuª£o$´œOŸ~ö¨£CÄé´D¸™žN šª0‘ €&bLò=$2ÓE‘™Õ]2cê«3#ÞçyâÑ{­Y4Çù|ˆ·oßB€›åF-ÍBTU&ÊAÊ}dYk½núÿúéÿÁ7ÆÐµ—/æmû5qü½ï|4Ìï²ýÿúo?úÝ¡uù»ø DÔÞµ÷Y ¹HLbøº]#¬Af’"ŽéQ+ë°uh@¨{ ”V¯ëz]¯\X mc3€ËM±4`j]• ™ á$ŠL-†‚) 'À:µ@îf!˜Å‰ P´V˜c„÷VxžJ)ˆa•벜ux(6™ZYNË¡¬×õéñ)‹Žp‡=ÔÜFE~yz˜ë¦öôt!b–R[›æ¥´F"mšéîI€áAHS–i™JÓ®×Þo¦ÎÔN 0#q©Í=„$Ôa¸N\(õM¤ª}ŒóùüòåËm©*Eù¹µ‰9LÁœ™]×ޯ׭¶¹Íg–¦Ûº^¯SmSm6”‘˜`™'„8)¼õuªòæÍOK«ó<_žžˆxŒšZCy;Àµ–6φLa`\¥´ï¿wšgùø£ôÉû󃟗ö«`7¾ÿòrÛ>ýüéõËóÓå #K„èãwâùÃßú½³›#"#2³›‡ûºmY­«YÎbá ?ªêÖG ;ÌqÜS?tŒi²`îh€YŠ0%`÷„ð»gÁ!pE9O?ˆØeAv<ƒ°dð b­ui­f$í[ŒóÔ–iv·ÐNàV‹,Ëtš§R$\Õ0Ì”0æe²ž2§»øH^YùMÓt?.s–Œ¬P’‘sÐLá—Ë%G¤Y¶f }ÍüÅu]×ÞÝ}j­µæfÛ¶…{)û„G½ÌË\ZMÅsÀ„Ên§Jˆáf£Ó>£AH€¿i®Žóä—2zcœÎgf~||Œ€Ý>àŽï‰ßg¥Bœ'™*ó¡¤öo¾ÿ­^ýÃù¨Ë"rìðû¼úì™hã{ßýîïb@&¡ƒ˜00… öë~{w)wHÕåÕ±‹Ø†sªÔeÃâ£Uƒ –= )=K\( ‰BL‘;~c§˜Y¤åSÄu ÀÀIx*f}Ü|tÂhe:MÓ<ÕÛÓ–ØÞ»Á4MS«§71zïµàíÖÕ‚R5F$òùO'è"ÿ‡œGBàΘ½û—äº{]×<[K)ó<ß÷Þ¹«µ–RöHz2™K—’Ú¹€eæ|ZTµÎS€‰ ÅP&D¨Ý´›q!(ÅÝ©LuÛöe‡ˆÔZs‘¶õ ¶mKüø½Ãί”H¦Vk«,‘0js§ëî^™o« õÓ,·_]*¬‡ÕÛÇŸ¡¿~ýòkØýJóY÷‘x‹ã»ÄC3¿˜ÜÄ,"ÚPúk!¦x b¢ð´ëx¶4zæ±£V“³`ªI( €ädž`p0wµ4 @s×>ê¼0 #x¸Y߯E¨0Wá*T‰T$4Já|ó¹M® "f"¼\.·Ûmš¦R$3h&Î{º:€‰LÈÖŸY÷@úœ˜mÛVk½3Å3÷Þ—e¹§["*,ûÈ–<„xnSxøP-»GÐ.ø »ãþé!°&ú£ˆ{P8Dð€±J=o¶Öš@rf÷Ôgi­¥S1ÅñÆÒ„ð~kphDtÝìºêFÿÛûÇ_C¯_=üôððéúóÁýçþ;éϤ0 ¡z€§®y 1säçÄèX°"º"šº;‚£‚3fF;pRzÞB–"wøïz{Ü#€õ¡fZKa"þBƒ°wÃ`ª¿|Föâ¼<ßM¼8ÏŸ¿½ b-’9^Í~È/ <úØTpÛ68ÎÇÌXõx.‡ªª‚0‚Zº$À!¤DHꮽ×Z'©ÌäjŸ#–¶™½ŠHFäPÛLSǵÔÇ·ND­TdDBpUDÈáezy~ "4wÕVêT¦$W†­·Ëʨ§¹LuÇmÁÂ}µmÛ²NÍ:~Ÿ›-ËRJyzzÊiTÎï‘绀¦eé¶mªúððÐZƒôÇ\׬—æyÎÊ8·Öúðð°HóÑûfÆ,¼L³›kĺ®)*ZZmÓd®ßÌ|(d)ÂÄS#bWÝÆ¸êuS/¥XÄõ¶æT›¹Øý)Dc,ÓL‡­š™Íó|»Ýò¦J)‚ä€fˆ„nnªX8±Ì§¹<,¥ú¯ÿó wOý/ÿö‡Ÿ|ü{}Øóÿñîéïþá‡÷xÊÔýŸ¾½k…üÝ?ý>þèï=pùÛßzm„ƒØEñÓº¥§Cp‘Ó4MµV¡Ê ¤Y¯…©"#·êÝtì0³¹š"r©)Õ&RÚ4›*ÖÚDDÕ—åÔêfs«¥–ïCƒAØ0 pÙCêp)4´Ñká‡Ó²,Ëï¿÷õ¶ ó<ÏF(­A×áê¦a\ ;Ä0åZæÓÒ·+s:è†êˆð; rž§<3‹0ÓÑJ-aa¦ ^<œK-î–$‹m[C•¶ÛÍ{q:Û„æË¼(‚6BB Bf)…‘¦ÚÀãv¹.mjÌhî} {ArU7kµfJ-RŠZcž[)S‘)Z«nZ‹ô~ƒPóScJ-RŠ»ßFaaøðò fÌafJ¦}] A Ÿ+Ÿ«<Þôߺþð'O€rZÚw>ùàÅ©¾÷êL Ÿ¿»¾yw€ßù­ß·€×¯±¹mýíãþýÇ?ùz£vý‡PÕuÛ©÷ÝIC®–$o–š¦ÖÕ×uëÍÝ5öÖí~¤æÿÝÉ ùz®ÝÜlx„µV˜HÂ݆›ƒ!"ÚÒ_Òˆ¦ÖÐl¸»0QÉåí]Ž¢¤IJ#jBw)õ1M"BB­VSÝÖµÖšVå·ëµµ–ÖÃ5ÙÞæ¥rRzƒ¸dè¼{÷.Ó-<ó>ADB‘ô'‹–²SÛ‰" ‘Òîܓ茈BîaÆÌ­FÌt˜EHtØSæGº£½'‚™„IØÞnpN šÌÛu„+”ZÇýØ;Ä!ûä$ê†æœšnÌH2ö/¼˜ëÍâ㩼<7UP³Adušþñ‡{*ýþáO7Ë<½T^ªÑþå'ðýï}÷¯ÿæë„Œ‰Ñ^Ëöѯ·[-#`W×¢c© ª[ö(Ìb@âÑyƒˆÀ_Èo¹;x @Î|‰˜Ãxwà 7/"E8"€ÂÁ†ûæj‘™ûãck“-¥Lµ@DJ@¹C)ež¦V²å‚ÐÆœmVŽ«Ü½ÖŠˆ½÷§§§Œìûì)ÿþôô¤ªù‹Izɬ–/âîÚGAfUµ°ÚZþ:Ç8)0ýJ_L4Ù˜„Ý}Äî°w'8%vâàÛ”;ýæþú/õüñwC²ZX„P(õƒ†z#‘@kÄ|QÕD¤Ž>¶m7aÝåí½C 9À0Ó°*éé«FkœBUböb©py|Ê55!îÜ'ø/òŸ¼÷ q¦½¥yïÅ„?ø€½üZ/þÖG/Æ}ô1†¹ŸæE‡f=ÔZ"‹0÷u]¸°ÔuØuݶtˆC¦”3 8œtQˆ ¸@B ¦èëŠÌÒñf#À|ŒÍl`DbGtë/_¼ÈñL+¥0ÓþÍÁ lŽ×U-œ)‘ÙByúî Aº3#"A°Û¡Sä©Âé E¦"–"áFî“âöòåy™B¬ëªºOej`à´Û¢»»Sê613"¹›öŽBhš°\¦iÓ>F_oÙí1ìH±ˆè·NÓœ¦""’(*!v܇;yèoÛvoæÀÃ̈ÅÜÒŽg¸Ñ–/¥D ñ$r 1 !×B±çTs„©XA7wâpe©9KÎ !yŒÜÛ,–@B „lª…°!!‘eQWŠDL·Ûv»­žZ)%ˆ#‚Â݃‘Â6ž SzNµìñh}®bºÞ|Œ‚ЊœZD¡Äû›­=Çõ¶m¥îÇ"2üáǯüÙãÓmûzg ‚æäA€îÖH­wlcߟÒ0ßúZÉ’GEˆ™jseˆÁ „àLùì;#œ– €¢”¯'€á.Ä¥$V7",ó<,Õ*hhÅŠˆ_L…ÃÁ½¶c WKñîü·~¾“sÒÅüþ)Ä! šC±Þ{D´REdþ"î{ï½ç˜Åú轑mhgSªÜ‰ˆÈ6:¤â/3‡)>»²ÒȽӇê\ÔˆîºÐ‰ƒÃ èþ¤¶4EæÞoáÊŒÁ`¥³X·µ”âÛ¶¦Â4&„š™Ý\{® Ø„Ì Á‹°kÿøÕ.ªP˜“8‚£÷|ÔOˆ€ÁD©ÿ.Âôî²þø³Ç‡ÓôtÛ>ùæÇ_gàr: ¹Ä€yØ]¯W³¼y“Ú2¶c˜ ;¸[6¥rnhó#&@§pb †ÀðôišÆV¤´©E8©‡ºN¥3è.åúø,% œvjyø»ìçr~»Ã£©…‘\Ô µ¥ÝT‘™¹²ưpÑ]-8wÝäá6ÔÌ KaYõffB\E¤Ö1ÆM{òwÞ½{÷êÕ«‡‡‡±n@ÝŒq@Ë=vn1î!ã¾Ðb!VUˆ/¦žEȘ o›» .vì,àhèXº“od–*Y;‘(LM°"0¦!A~ÈW®µšGJ`â˜Ð+˰ÍÇÔ"‰É}lL@(¦Ý¶«HÙÁ!…lîn¦¹¾É‘œŽ•rBÎø“7·¿úÁ¿ÀÓm€ÿóÿþ¾®¨þ½E¨HÍ-€´F¥Àív3Û«CÂ8MU(ÀøhÂU˜"ÆT¥BP÷¡@!…ÝÑHˆ‰©'ÄDb ¥83 #S€PÛ¶@bâŽs›„ÜÑUÙ½-…Ý7@Åp¦¨„Â$ŒanS™¤Œ­·R[-EDXL-})‹”y^ ½wûÖ‹Háòôîñá|žæyŒL,Rju?½|AE.·k wµ@¸^®—Çk¨/Óòòáe‘ªêfÑÕ‰ÒÀ,݆³ë"DS©5im g‘ÆÒÆðnÄÛPCî×Ñ_¼~YçZkÕÑM;a0±/‚¦ÝMk¡ZK¢yÌ}¨õ1ư>‚P0˜qbl¡8ºº©[´6I)k×uë„R¡€vx5¿ðU©2 ]·­ÔÆ¥x€;LmšÚBÀU SQW y™¨H×ÞÕVÕ®¡ŽÀ5¸5kï\ÛãFÿðoŸ?]·ÓÜÆ±¡øþ÷¾ûé§_n¿ùú”v\À"µ6sïÛæfЙeY JH2âôúä½â´d\…äÄ@ˆ(U¼óxMOrDöe,3okؽûZ«{‘ÀÉŽ'‚ˆóéÌHä‘ã*f$¨¹Î­‰x]¯ˆ4ÏK›&‘Â"DÜÚ$"ÌBÄP[©)2ÐÐq:"ÂÂÍL‡ÖR^½zª("·Ûír¹2ó‹/rm–•öu!"„<ßõ+‡Ä9d*âRÂ=¶±@kËŽyw×1æibâÂEž ÛL­Ñ³ <")µ4$lÓ ct3/¥Œ¾ S©-ñ ðôî©Ô©–ZP80€à2º@‘Uµ‡ÉÒÃÔ´L Œ@¼­«ƒ·evÀUµL-̉HRåĬw…&f‘]7‘«Èr: çÿìi—Ûr8_WÔ€H-p°Ï¥ˆ™% ÇÍ"²e‰p»K”q#÷ð°ûž“R*vg:3dI±˜ÂÂÄV&ÆHD`nn6Æð å|ÂLˆ%åM-<Õ?½‘«EÚz å>–™%gôµ>^!ˆ×±« !1 mj÷•}™ffÖ­á6:¥ Œi~nF"cÝ:RrnOضmš¦—/_Þ!GþÌQpÇ[ña@ùAYá0–Zb€™Æ®^ż«þhË&Q˜^4  •ì}Z‘Ä*-Ë‚ˆÂèÀY¯“›0N¥a˜Š×âæBScPºê&Ð “d $ôÅèWUHoóMz02‘0pº®·RväA~{t¹mÿãŸBˆ x~}ÿûßûë¿þ›¯!pï l~â}ÛòïY`e‚Üápî¹Ã܆-¥÷°¼ ĆDî$Há6tâ”Î\‚ˆÖWJ®%lë¦Ö#8åË÷Á¸»«¦\ó—q룔µ :†#RfüE.R¦ö2ÕǸ^¯Ù‡e[™pæÌˆDÔok€³2»OO³¦\úøããc–ÑórÎîcÄå(ÅBx·~ÈoÝ#ÞÑgù_D„…n·Û½ß:xc¶Ù¤–oì ÁµCÓ— QÇvE¸{c˜!3¸koµÎ¥Ö*#bU§N?9p’Ê]{ï]¦ Žá¸?jÁR‚ðÝå©I™¦©oÖcp Dl¥hÂe5Ÿ#Dêˆø'ßÿƒ¿øïÿô‹÷µD-HnóCÙ¶mçâ&'m?zήÕÒf,Ž-<æ¹Ï‚àQYJ¸S¤±U‘Vk«Gï°ˆcçÒI©Õ¬´š_•-ÄÉ`ebhÌ£v`)UÓC&¥•ÌÍñ8—Úf¤ÝÅÝS5Ãk©µÖuÛº¤_Ú¾ëbÆ (¥šÙz¹råišrO‘à2øÛSo¥fæfÊÒ9êÏ)=–ØI³2OxŒ±Ò2ÍÚo+˜·V+q•r>¦©iaÞÃÃÍ5¿‘ê@O7®µ.m*ÉI7Gˆ’³"ˆÒ9_cš¦ù|N9½ÜÝKÀˆH/_pf˜(ìRJ¦Þ;2Q¦³Ÿé'tÇOí熈 Õ1Z­D´m[00`þC‘²=pl°rœóÿØåÚ=ó}†l~Äfmj×ë-Â…¸÷nºï±QwJ¦Íiš)àr¹èÖ)àÅ‹‰•Kõ¾`¦1Z-cŒ®–[µÈYÐgŸ¿¹\.çÓéÅ‹Ž1ŸD¬TS}˜æþÓÏÕ¯UÚ\§Ï/+aWdB¿>>•RN§€­ŸÛì½p+×—)Éj&Lóivà·—þ¿ÿ¿ÿkcÎý7`ºÿÊÀ•ʽÛ6®Dl½ÞxØ¡©Ø5OóÔZf€È¹%K[„åéî×5ùåi6Yá1·t(`NcĤÂ#â<ϰc´K¹÷@€´Wá{·7ÆcP@b/zï·Û:tC¤e9‰È»×‰iÜÖÁ¥®ëªª©…˜hÆ8Áºp½^Ü,ù¡"RDŠHbÎ÷e#íÂü¥äì9oä>‚(¥,ËRkÍärÛ¶œ’><<0óår±lš‰²#d¤l›Ùåry÷ö-!NÓTj-Óä9³0KC?‡ª×ë˜ÆßM8,¥ìŠŸÄL¢¦¹©.­JЀËå’ol]×;ÿ,99 ‘©ÈLTQJ•‚ˆÈ@©M«ŽüLîkwÏê9æEÖy;§Ó©÷þæÍ›§§§Þûõzm­=<
ÙSïÝ̳ͼ^3)Þ`÷!L.É0`š¦”MÌ „G’‰éPcþB~Yç<ôSòÕò•ïgHk-)@?ýéO?ûì3wÏasïÝ3ßÕEEä|>××õ.„ª€yR¸ •ÂR^=œUýr»ªG™f@°pb–ë¶Zx)%Ôlë]Ò²‘™ñˆ`"õÎñÏÿþËU ?ùèýw—Ûço&¿þýßÿà«D-ð'¼æP·ž»Tð®®æÄH¾»-ScË€Û÷"²LsA‚v !n¥NÓT¦&"èé~GªªÃZ+Ë2g}‘$ßPód frš— aI¤l¶ðq ]2ÿeƒŸ“£ ÜÌ:ctDdÀ0J½Ñ ¢‡Óéå‹§Ó)yfR+»×Ú²@‘Â,c¤ ÃÜÇ–eY–eš¦, ÷ JÄ#¶Û­¶Ö¦iW6B@B ¦œW„š¥\>„¸p4…pl†Í,åØÝ¢÷ ¾zŽð²àIt2Óùá¡Öz:NçsêÃî¢bnáf}Û¡Õˆ½mè¶uw(RÐÕ¦Ötèè£&)•-ÉÜ‘…¤$Dbòp`õøðõ‹o~øŠ™à«…·×_ZB|E¯áhA!r1°+6§€5•ŠI‚Cf!0ï`{ažB!U ˜€PÖ¯ÌÌÄwfÚ½Ð1åC #Ü}ŸYæÏ×Z—eÉTļ“óÛ‚#éB*î3OÓôøøx½^‰(ù3£wg@Ø3%R™Z[–¥µ–DÅÖšUf> yµÖ Í;'o$g­µºùA ÝV‘¹%ˆ‹“É&–ê€(Œ>ë>ß½¿NÞ]Ö¢RÚóE>¢¥”÷Þ{¯µ¶®kFùã㣪.Ë„}ôóÃCN˜<˜ÈTÂÕ°0©M¥N¥ S7 0ë°»öÁjû˜ |¸"¦lÀóµË½¯¨…‹Ðw¾ùz¨öîö×?øRrw_q"&kï¥eRo—Û¶LÓR§ÍPØ»2…B!@D"ë#Íé€ AÀ9œ ‡p´Æ£óè·ðYGWD¨¦fc*už¦V* 'Qè|>g­éû€Ö¦\Ø&çE„[kó¼|úé§×ëÍÌÏç³0EB§˜Ò»¼ˆ ájªc "1I™Ì­”BˆÃŒ<ˆ ‰I–y±jˆ¨éFvÄqê’gÇæ•Y3½2ذÖZîxwwd Ä@Fbf65 JÞ(‚§r"r¸#‚ìtK¼óŸóQLïù÷Þ{ë½µ D}ô"¥HUÕmô K±^ªæ€u™êÖñQ¼[ò «ÔõÚ×Þ‰hD8˜ZÁb6(‚kíC{ê¡SD} —[·Û:^ž&B ‡¿ý‡}ùàû*]þ衺* #Ls-‰7­D)0HaLX˜]dž8œâ4ïs&rwpK5»*T9—j`Ö™pY¦1¶¬2 ,•:§©.óijSI÷}E´/ð Ô OË阿”¹ïªü¥äruš¦lmf®Ì™÷ÃÚ,‚…‘Ù€˜#`¨î†¦R*!1q6.ÏÓd6dw …Lœ·ÛJÄ„T¤´Ú(075> <0И¥Ëa’@vÊ’ìNþHµ ¬˜Sb?ö³‹™…iŸ ¸9"e é›ࡎNÈ4ÔÕlS§RK›4âÖû:6$6‡"uxl®@dN`»! a)°W œâñèæÂÒ»ßÖ1ׂÃü“o¼ú·ÿxû%­)¿R©ÀÇupzSÑéüÀDfÖ{O "BeA€QÀ†fù»{Ñ×Dwiìý@á"[_s 0ÆÞçäKD¦¹Ö2•Ò²­öCÖü¾ô¿wf÷íÿýÊÃzY–üE¸Ý®xÇìl­}••›U")RòÕü—‚H˜Ì…=ågšÌI7~Øçæ3²Ç·íMU9&znÞuH-Ä» î<Û4+Þë€,RªS™u?vöÌš5.ÝÏŠç×®e‡mjH ·0HIóˆÛz»]oR›™©Y "&{ÔÀÕ#0´k6†­Û6F’ˆ‰ÐMÃ-ÂutÓÑÏs{˜ë·?~ÿÍÓíËì#>óæ· Ü?ùÏßÎà ÀÝ<(BM·¾©[½NDLˆêáÎ}ë@$µªŽ©µRJjæÞ…ù°FVJ¦´Œ¶½~`JŒï=ð0s¼§ÛZë}Ôµçé=¤ \:´’îAßj%Š$ æ÷—½012!£G•’FØÂ²Sïs¶œ„Æ\À3žE6ø9$9Nªz»Ý8-5æ`˜ŽãBu ÕR‹AxDÖ+" Q¤ŒWHù4bΪ÷PÄq·£8"2<5Ö2fï¥Ñ~FÑÞM5'L³cU!IÏÀ¡ffá6ÆÖ»rifáɻĒûÂá­47]™+1›¹šÙÐ1´ok‚€"ÄL½¯C7=†‡yAøÃo¼úÖ7^kÀ»_giýÑGßxzú·h2Æ‘NèH„µŠ%Â@õ¡>J¤8 ¤U“»ßîÂ-™•ù ³çAÙZ1l^æULÓ$ÂïÞ½‘)ëU2Ëóá%"fÛ¾Ÿ¹ˆf–Çh6øt¯žU‡¹ŽÂ&ÅBÇH@€Rä¨ùöþ=ÿ ÔR 9"……HÉ"> <"œˆ‰ Sï^$fo·Ûr:ÅqàNÞŒC)gô1Æ`¯ölÇ›£(B"Æ=ôï_Ï/ûlnÏZX8ÕÏC9Ÿ|BŒÀpL·R ômw\#`&rt$Ú)¨ ÏðÃU*”ij0pŒIôT»Ý¸°n9•t´>WTﺧù_~ÅVâùÕjýM£ø“ú°µûõ6ÖÆóÛ-n#€ç®¨#+Q#n lNЬÈ#ë±<]ˆ0€ÂCëT¹P@ˆ°‡G„”Â"amšˆI²•F.³ëÏ=xè¡WG{õ‡µHAâ½y#EîÁj’)Ü#<°Xô‰œ(<ˆ‚ tÍåêéˆu0Ú é q%ém]s`‘@‚q[Mõ|:ÕR2jS§bèP3‡ˆ´ÚdaDW 3‚ãå¢DˆÉ‘Ô"5N‘ÇÐð @ Ï »+ÄÖWS3E¦äØ Wuóðó´‘kt@D¥ñæ†\¥4*e¨ë°ËÓ;×ÁÌf:µÊ·ëµU)"i;@]‰¤…]‘ÊR®ÛæÁÒnópD™¸ÍÄõÍå1„æç¾Ùx{¿¶`xûö70¯ü"p?~ïl†ª±mc[ÇÓõv[סÝ̶m£›{•B´r#L£Da73Sfšj§©ˆ˜jfÔÚ ¾…&(KÃ\Ê?g€Žæ6ñEæ¡,?ŽyÂ} rß`íîÔÐÄ»^¤1 ""ÝõM$+Ÿ|å{ÿ䇎j^™Û̆»ï/”à ÕÞ»©"€0—RÖË5{µûÖrMÏø<|dÐ3¢Ä=Yî熇¸y–¶9UC” vïìÜ ±CDŠ2ìvªœS_ÄýæÃ“º|Ÿœ`D“03QÕuÝnëêäùE0¤ "b‘R¤ˆ°GŒÞÝL Íi@«MUÃsS Yìýþ7^·Z·>¾¼û— Üo¾~IÈ´u½ÞúfÝÜ#üPˆ!9”êlß}A ¦’07‘mÝÂmªujuª•‰…é4Íó<·ÒŒŒ \xæ#á9ez2‚ƒÖ›,ê45¿‡lFjV3"Â-;‘ÜÔîü<IîÕˆgQq!ÁÑŒ?Úüï>:F&ÅZŠ ]o·Ñ{‚ŒïïûDÏÝ8v¿G?䣳4º£uï]fìÛ²0÷ÈcêqîÞŒº…;¥À:x˜ïÄzHQ>¾GÝ•>8˜ý¸"ÂEÜ}]·uÛÔ<3 wàQ"-„ù´œNËé–YLUˆ‹€À½tƇóy[×m]až§Þ·Zí½Ïó¤ê}Ø—7bÿ’—±º‡šsfp 7S&Î1ï>UÈ €¸WŸ‚”³G(ÄœòXå ¯.aY³ ,u‡(EµST&€™[©¥¼ÓàéàÿLT= Á‘;÷q)Ý•¢ÍW¿·ç;…ëHÉ{I ?+|vÿûýÇàîDÄëõÚ{Ïz7÷|‰¥¼Ãóçïñ ?+u¿âÙ)/™ŽÛ9jÜŸ™!„y²Y‰Hˆƒ¾”?^v껾³÷öû:€ð¥”­ëÏÜgz—ÚG.ÃwàGÒÒÍ0 § !`Zbž«;úˆ~òù¯ñIý-ˆhâ`à¨áÈ@¦j…(ݽÕJÇ@ÀÜ"Q ÄD”Y$ÛpÉ>ÞÜÜL#°Ít 2»Ü›°ûÔMÍŒ±J©¥ìÈ©>¶ ÷ñ$< ܼž¸"<ÆÏ<ÙÙØ¹{6û9C ¢$ à³Ç=qÞl7ŒCɈinSÒ3pãX"Üs™9£ü§óæ°ù+“Ÿ \8æ^ùÆ]Oûg7ü 0åŒKxîk )r¤Œìê²Æ€„†®ÛpOè”cÄ>[Lê>Rs–ˆZ¤Ö4ˆ IDAT­™ïu ¾sÍã”àYÜçûLQ¹1Æ2‰ýeòç®ß‚ˆÆ¿ÿÁA€R 0d(̵µp»m+!š[×áæLDHªZ¤€ÇØ6¢"òðp^ZËújÙmowðJˆ$ ð<…9õ}àUY²–*,»ø2ö#šñ˜‚Ýg (‡çu"A‰ŽŸg)"áÏi:&S÷20€ö&»x@DHËŒ"%¹“ÛètøA$êü¹ÌKDîrzqÏÁÏßÀ”€A¾;¥D«Ä{ð"†xä¨9ít¤¹yª-1e[ îáî¾ nˆê™;dí[ïÃ"Ô ð€à’ˆ)nÑ{'Äl×\m—’GDDfšÛ$Džp™{"‚™ŸžžNs­õÓÏŸž ,|õ‹ÿà[Üúz¹]ͧ‰mô/"6FDÔZÇÖÐ܇ªº·ÖYÍ ”BÌÒÊiYNËÿÇÚ»,I’%WbG×ÌÜ="³ªºÝf$"Ó!…›ùnÈw¡¿‚ î)\qÁo —äG \sA …‚Œ 803hÔ#+32ÃÝìÞ«ª\è5 ϬºQ]&)Y‘^nfj÷ª=zÎEKQ™§‰Uu*A˜¦B·®*Ë2—©L"Ö{¸ ]æeYˆIT—eÕ bUâô „•ˆÈ#t‚‘#Ì#öÞ338Ñ”>?LgF)É,ï\¤{ïÞ³ŸB«5é §\x˜Ìji£/AqXºæ”"—IŠ”éñr.¬}«"‡²,Ó¬¬ÞÃÝZmuÛZY~Á”‰|¤¨"ÈkS0ƒ¢[˜ ç,*¹E:hvC7(ˆÍánæÎ24Ô¸ `¦{s3÷î‘ „pA¸u/A¸»Ìsw¯Ûêæs)‹*º÷µ¢Û¢å´œZݶõöúñR”{ÝÂ{Q.JAÞ­-§¢“ÜêM&)Ót»mE4ºÃ}f9—Rˆ¾8O¤åo¾ý!èÁßuèv[·Ûjn\Ї`ݼõÜÁAfaá¹áŠHz‹¸dÌ+pîuíîÁwûñÿæ^;˜ ¢BÐi’¿2u&Ö8Š' i²žï­ÙOÜ5fxí½þ,´5/öùì;õQH‘‡Ccýø q·áæ‘{e.Õ™þNÓäŠcHE0Œ™o"UL$ƒ5zw‰‰ˆ¥ö¥EÀÃN”ûFƒ=²ŸæqjGÂs¤Ä{·ŸûþbG)¹LJ4¶øä’oµ²è Œ¶VŠæÈIDlm;N3L|Þ{÷n"$Bó\¦iªõÓßižÖZC.ί<´ß¶¨]‰æ"ÔzÏ“Îü:U  nfæNb¬ûÐÑB$ªÓ²,ÖZ]oGsë8X¹D”¥CîD¬ÂE92IªöÌœ=´QѸÐ9±„cëÌ{€†5äàãÇ^Ãr-†ô…¥!^âLq㑸=pì÷G”ß§Ô{”Œ×“³‹àœÑ0;xߢZ8»¼º7Dö¤Õ²‹Š¥ÇðÜÇ­ÄûßÎÌáFˆ p܇)ú˜g‘<»£+ù²Ç©€qš'•y6³ëz›çyšJë¾m©\.™ôÝ›ïÀЩèTzï·í†½v<.Nï=ÑÏ0g!ž¦©[?ÿò5_¿}oæ—ó|Ûê[@•XæYEEd½®7„Q·æî<©ƒÌ ‰U´0KoæaÄÂ¥H)¹ÙiY˜‹N„@ìÝõˆT•2¸`Ì¥i ¦¬ƒ³$ÏâtÜªŠ td±Y)Ó ©…Æj,L2ëy!:vÒ÷‘ÅFg ·Ò‘Bˆìª ÝIaø²½ô¡øyÄÐ^ÏNíôóZ[BÐa–úiDG/צ!iÔøá‘¿:´Ø—C! æpN ¸åùuºÉî?0ø9™‚쟓òÈ)ìÔù˜9ö4Á#º…çi¾~øp½]Ý,ZšT'mÖ®·ÛV·érÞZm½BU^½~µÞnÊÀj¤·¦Â§Súq1™u"Ìs¹5ûêÍ‹wßoypšõ[«·Vƒ(·É¬TÕº[ÓäúÙ@BÉ3'ÚA­™Yh™ƒ©æÈÍ‘eî˜Ñ=³wËêQe&Ó]£á(Òq—k ñx1öåããX›óÆœú‘šï3Ï[*‰ëÒ'ðŒì>ÇÍßÎw˜Ýñyî]¥Zkûôïn„±KïßÎìtïpœï”‹ãõ Fªÿ²G‘HaV"~Ü?Þáxe¤F0òpk§óœ'[Šº{vþÒ­òVok«¤D´֮Ûjfói)¥¢Õš·u ãäÌ8ZEû~eó¤øñŽ!þ_{³p¨ õLÎ{„#©û©—Ï,{V9#W@s³õJ¢Bc,rÂÄê­–všÈýÏ­-îZYq' ‡ƒã¾&w9\ÜGà¿wÙFŸéøÕŸ<$ŸÄÍËó¶¿íñn÷G>ê´³ìQŸãMòiŒ\ãwÒ0€ÀˆHâÈ?æÍ£0%'QÂ÷öر[+ûAI~©ÿ>9;`èªG·eš}çc Í]•I¥{xD60!lîµÖµnÙÄî –4óñ8`pX´p·jff½È¯á˜ÿâ¿øÍW~úº¸›S°pYfsjÕzëeŸùVÕ2¶º9;)_]>¬·­WˆŸ—R”„|œ&¥•¥,ŒÂ¤·º-§±zŒzx^NZ&Õ‰XÍ#5ŸÊ”£;˲ônª%ë©lWZŽW¦¤ðÖgVI¯@ª[C¤“ ˜…XD%ÇM@’ MÕ·­&<ê–UËÀ†Æ½›GòDZ3ÜÝRÓ83ÚpAP82ÁÁHޤ0Sj/!hÐ âi‰]FMˆ…9^ÜŽä31B’b7'¨–™h0 T5 ïÍz„‰r·Î*‰Jä“„dÍWkžšùðn•jíÎüîýs–i©¬óvku³/_Æ­£ûV7†x·©LÛVK™¯k»nÕI©ÌƲ><_‹N—åRtöˆ¶µëóUXJ)Ræç[<Ïß¼ý;Œÿ IιÖLż[XÞÈM‰ …{o“*¹3bÖ¢D}[ÉM “jaæÃy<î`RD'1³uÝŽéê¼£²›þeÝ&ûòƒ=Ð;á­ãHVáÁˆCÙà õqz€:ƒŠèqRÇ;P²¿TX•tö܈-ÕoMâîþädRé™è'5rü‰±¡Ûî×Ð?¶=6ì;õýV@w…ãýª¼?/ñÉy,®Øé¡ÜqØ*Fd+‹Ž?;$ÇîñòOÈØ£xW¨ˆˆtùÌ9¥ÖÚ_|¡ªëÓM‹q̬â nÔÍÑz¿míz[Ÿ·‰ÔZ_ok½ÞR?%@eš¿y®_~qúÃô¹üºu÷7<89‡”-æ­&H”¤;&Àû)žV9½5²PÐD9Ÿjð DšCÝgió<'åû>uTåÇ>Óûýî¸+tw[óAÒå3E"FÝ‘^Ö…›ɶfvÂøsdôѯtp8Ø‚Ž¿ó•ãïûÀ:à¡ûýIßå¯|ýþïß wéÁ‘y¿—ö1÷säˆ@“Œv5I$­l¤sI‚ÙÞËç˜#dNÞæ2Íf @Ív·µžì XëÖ:<ƒ bæÛÖÜbžOŽH¡1~x?BàŠGtkÛ&áó’[µ…„+Bl¡AЈ¨•ÂÁÄHš- pS…¹÷€Ñårê½???;´´¿É_à÷OÖ!Üe«ØI*}÷2¬OŽœPˆˆ|B>yó»ó¦à@Æk¦éApB¢{ŸÄßýÇßG*y|Ã÷ ÄãM>YYã{U×ñõ÷¿áþÈJh_ øxóO–€ï€Øë`"zá Z'ÙhH•4"JUÌeY¦‰òòÒÞ¸¦;ÅÕƒžZ݃ÉÜ×Þ‚˜ô4•… nøî݆`ÝH¿å!ÿèw?ë}Lg{óyš§RNˬ½V„ME…)¼#¼¨z:*ZP„”œÌ”c™¦ež“Is~:͵¶m]“RÃûbyô±Ò&ˆƒD–d—ïGLIåt{«vâ q,ïÖfí…È~# ȈñûI„1³®ÁKàÒuýÝ“œc GI7T¸I†¦4Q²ê9^¦aV1Ên³pÏIg4wby÷îýûççËÃ#íæ+„°ÞæÓ)˜ÖÖ^=ZXí=ˆ¶V×ZpxXÕ P1F33øåry®±œ¦­Åwï×uíÓÔ<Þ¾¿þö›Þˆ#¹œ§RD—i:/'ŽèÂ<•nŒIÙ õH¤›Ê\©/™Üa3ËÙ²Ûív¨Ì;†éä 1ü@¾îï÷ñÏ^9òÝ{NLV×ççõv {‰Œ{0ËÃÍ-Fö©­Ñ2hÓÞïÍ‚†ƒ¢%-\¦`qâ`èS>ä'«òqyü1žÄw¼¸ÃïðxÛû7ç]¹ÿßÀñÞaÙ›> 0‚LLÜÇšcîIXgfDì×ÖÝý'?ùÉù|^וwÍ€Ó«‡µW(SÑ‚ò­Õ§"å´”Ó"s¡"MèiÛž{¢TÊ<)…¡çk]·¶mýí»!jÈ?ûƒŸakõùk{˜Î?ùâó|€…¥ÖÚ-§Ï…DY´Gtn½·*Œp{x|œN'BtZÎórâðÈžÕR†Ò{:ÖΪ޻È=¬/S™DüŽàwܹOê3""PÜAªÄ” 0ež ®"Õñã‰ög!Z2DOø‰wïÑ{„3gñÊ<©Âó2e,J„F€°¨:Ð#R:Ê™<‡Q$±*²§Å,³Etws/R` 0ç\'$%i’ÀœhQIÆÒï9Ù#€G°¨'¨§)hO«9Ï.,ÂzÛN½WõÚ™µnýzk½ÕÖüñá•–9µw‚0«²ÖëZ¯7v°ƒ,nÏ7%šµÌZ”8ðE©PôºrÐgŸ}¶™×Z "<\¦jöÝÓ»JD.aiA”jéꖀDZ|f'ìXGLâxi|Bb>¦~ÿ8–´ûJè¾Öùd#þt ÜØ] †¦¿<$”Ÿ²1|ôNALG6BE(€üCwO¯»ßû«Ïâþ\xoû@)öOK/Í?í ûWÉÃ8{¿—¾·_½¤.;#gd3"¨ÝNN.š#€I"gƒWkÒ™<ˆ‚<8"\²´ç”›ˆÚ/`%³ÚìR¸ÖúêáôûiÑ« ¡O·ësmU(xnR9ÖVoÛv¹œA” ‹=ú̘t Öºm±VU?/–L<˜9àLÃÒÃ@©#{( ‰`$-=þ¾À=.÷1}R¸ïI4SInüä}ŽïàäGr›Yq¤a]~´!çÑ}÷±ãÝNÇ1“‡‡{t37 8öæÅÇNùŸ¿ë¼ÏŒóßHÀuËÄ_“äˆQ>ü’;̳I€»IÞ]~ÇA/Ÿ/—‹L˜;˜dRäºÕ[»±ZÊÒ{¢Ún`c¹ˆÅyš§iZæ™™{ë=<‚U„—åLL}­nó4«Šâw~z©î·±Â|躭ÕÍYňn[Ûž?ôÞO§SŽÙåzZæ&Τ(Òœ>¬õr^ iwÔÖÍ"UuDNDåÌcrés—Oœ%DóExÜÉμT3¾Ï;GâtW;7û-Iõ'añ+Klñð¤‡{ªÓQ&‘ ÆNP–2„c8 Gϲî TîÆ«;)âØdöàûô¸ïɽl¶ÛOu%%ƒž\¼o"€ÃÈMÃ&G§q¿v!cnaÌÁUQ³V[OeQQUÜ‚A*žz$–.!ƒõpOò‰•àçå䄈8ñî)¢5ëórþ7õÃõÂî-:57gƒ“¹ß¶mÌŸ”ÒZóÞ‡]Që‘›>@³èfÍ,Äê@3oþ2‘âÞÝ®¬½pWˆÈÎöB“ÜojŸÙ'·ö“h¾Ïb÷·ÊËzÿm~7ö³ÿ̓š³—7ÌDr1 w‹ HöJ.WóÁŠÝ6’R(ÌY.Û©÷[3ð+÷“sgz—šç/z‰þŠÞ/]ž ï2#™Ýpî#®B÷óûpΉ(„‰IÂ\H8È,ˆ,¼÷n˜È„œ’´CæˆpqïááV–Ûv¡âVJÉFݬÄ̵{ÌüýËðæÄ¤‚Ã)ŒR,h>-c“M¾ÅÈ&9Tz»­Í< îÉvNC27wï;&ã{|1 Þ#øþZ›ÇÄq ì)™ÈˤúGˆéZ=Žû÷9Þ9SUÿø•ãë#•?p¥ûoø${>Nåþ3ß`æ$³}ÔI9Îý>ûÿ;²‰_}}D⎈ÑVvGÄGý¹ïùS (q!°»8&–IT²îu‹VÙCƒ´Y7†1ŒÂT¤Ã¼ºõlÇÕÓÜÂ{xs‘–2G¯mÖùÕù¡Ý¶ÿôŸÿño~šÏ¡ .ì•‚¼SD¼~¸ˆèû÷·u‰±0³‘túð¼žNç¹{D¯Jš¼h½Æ‰D Yïááa*RT{ë|ædõf–×û·ð>hðq"{ÿzÜUfÉsoá@EÎÚàHȇ<œƒ„Õƒš5 æ h©ùµSl=ý¼hxi™ub®fÄP‹p©xóê7s#¢¢ÓÄŠ¬î"FúI-"E½²dˆ œ¼ˆ@8'G‚8pH9™;y8<ÂÆ›Q0e_ÌÝS_„p¿SE‰ÌY¸µî™a¨}-­v Dø©èy^Þ?½íëU9‚ sYͬ±St„ä§&aè°Ñ”BÉ Îp'g²å2×­ý»o?¬[ÿýÏüª¶Ñ \ „¡̊ˆÍXs Ö­QaÖ@H™DÖ™QÙMÜ. Ó,4qä;™9µ®"á®"S)[7Ú±ÛpÏÇ#RÑ1£6¡ÌhïksÞ§ƒ¾ßq×í6zÈBBîøªBLn¦PŠI "’}Z½îÚ9¢Ê©žd–ÔI!#!7OäË‘tZr£îF©÷BÉ>DÚ—•8 Á}ÛŸÙ&2"§<3ÝYwcfõ>ž^4wÛçÆã—zš{AY…q*0 ÕÖ| •»ƒ)Hƒ•Ô£vf*EÍܬ.¥gYoµKð´u`éÚÕ&!ˆˆŽ¾‚¢õ~½]AþjzXÎskíf¶uÛº¡ÌÑú?þÙOþúo[S_M…ó1¤ßZ{¾­j½·fÁĤDaæ=b,H§yQÕº­fwM¼Üdz!)"îNwˆlŠw0óQøçzà;û¶~ϵ=þW¾yÜ‘ /òExDÁ¤ÇäÔu¤((W)C’f\X0ž 2š0„­÷Þݬ70%QÓör8FÄ€Læ´3é¡»4˜¹ßåèôÑèŽsŒ`À)>—˜É.Ÿ ¶p€àdŽæ–¹˜D–á¿7D¬ï/—s!pª&„×ÚR51Ï"¥LÆåÞ¦ÆÚAáæ‘†ÏeL$½[)§óëÞ{TsD¯µ”„y* ·è6ϳ‡[DRôB°H±p\¯7f:fæöÙ©\·úê¡ô‘1þ¶»97h#†S8!˜Àîèá©_'"Db–ô¦T¢|Én½Œ5è¾Æâ]w f^»]c G¬â¥¾“V abñUÕvLÅИ·!æl­!¢¹™yj5OGR3#¸0?<<ØÖ¯×k¦i w˜/e’Ë(k­µÖ‡‡"úî›oþóŸ?œÎß]×õ¶.óÛ¶¥‰` êg>òûœGÇÈÛŽçX’SŒ—è£\6ÁŽÄž3ÐýågÇ檼sð³8®AÌ"µ¹9ƒ ±@DzïO9u7¯­±Þûíöœ’Œ"$"§ÓIôàŠxTÕz¸í3§Ì¢¸Ýn˺.ËĽ÷e9=<>>=½Ñ¢eâZÍ#@"Â"Ö#g‚|'Á톘Ù\äá4­§ÇóR˜?ÏFßWë=ÖœÇµð„–‰Øº@Af>II6¢«êíº©Á,9R/üW³ÑQuwÚu›wÌe`é™ÅfˆËžcPþnf3cu÷Új.“áØ‹›!©cæ1Äv,­VšG˜æe™'·þîÝ»m½ŠÈ<—4Ý5-—Óùññ±÷þþýû"ÊÌË4'JèîëºSº¶GFÞi^ð>ËŽ½Xä½a†Ìˆ¾7µ’?ž~.€tÀ™!"ò“¨ªƒ,Ð-Ì©;Yp¦& b)B’+ôÖÚV·-ÂÒ8']zïËép'³¨jƒˆê¡<¤é)`9ŸÞ?ižÏ—æÏÏiçËR@dÞ̃ˆ»“…X ¹Ì™jFÄ2ée™æ"¨íïàùÓ?ýÅŸýÙ¯7ÒÚš™õ@aÑy±vÅ}U1®1è.¶ŽìwÓÏGÚdfΈ !:Hß#$ŒU6â¾8;¾ÓÑzÛZÝzãQÆH00† IDATS1 À‚|4ñ“pžD¶Ö`., uy|üÙÏ~F·oß•ƒý1cæCUÀårÉ/N§ÝŸß)Ùðäëû|{:~×E ™Ñ5;¾9Ÿáãy>j»#²i-Ýj϶vkµ6‡G Ž¡:½›Ê6³š¦ÉzsÇÞ$Ò“JNr.’î®?3çÔhDÜnk™âz½v‹—iX~7ý Žˆfn"lŽüC„`òüPxp@[ýûb¿IÔ"GÈðBhÆðÚ%Š ŒijõÔöAZ¡ÛΛñQ´!—È÷NyQ8e€Ç]g"ëw¡ï¹ÀDÀ­›ÕZk«Í p%&¢ÖZm œìAö Áˆ äH¸,àA–ÖZx¿œ—Ï>µÕ۲̓–RJNî KŽ[YëDtšxDø<Ï䃠sIÕZÝ-½Š™ÁµVfÖÝñ*Y9£1žêB†AŒ›èQu]•|Å>F…y7Û÷÷î­!Ä™ÒEè™’Û˜­OX‡ìd‰;xw2ÿ…ïz[ÀB‡ºBVî­µœx‘×fîNóLDÌÔ{ïÃéœâeFÜ<ÌŒ9džX„Já0ü«¿üÛß$4MàN3˜· ‚÷-?9 ŽD´èÔ¨EÀ=Ǫ̀w~zD$§¾îKiƳ#´ïúdÙëº[ƼˆX_T¼8¢wÛ¶íV·t” âa÷K"\$ mµEÝNËlÒ‰H…@¤ÂÂR·M ×ZN ÿÎOÝ¡¥œN—Lm™9=„Õîø´a™Ý–eYÚÖB™™yKÚÍÑX|)ÎØ­^SEçxªcÇňšˆÌ_¶£¼tó<#GU—ezÐ_yëÃ-ÌáÂâÊ(R­ýª‘Œ…yäʽ7ŒŽwBˆ#v§¢­µu]X¨ýÉÌ®kµ ºÝnÏÏÏ ñ´3¡a$zÀÝaˆè݉‚AeÊø!!ü(3gzª0‚Ns ^×ét¾œO½÷ÏϧËß="Uƒ¼Ù2r;& o<˜ Àƒ„…¤q÷€r uò2˜Yà1Z®Þ“›fNA eÒ¼mÛm[oû”%Me9?d2•y~ ¢¡ƒ¶ ‹²/S·UÏSJðN¿J€È¤§ÙZ?M3€ó©NcÉaÃÖšGñD_"bï˜öyž·­÷Þ ÌΗ)vC&fJx™™y'¥ç0ÜtZܽYOàÉ-Zkͺ[kšõÞýt¹X³¶m½{ìž›GNbf—¥¼~¸Dw"n­u÷åÒýÍž‚NExÀöÀí) ¾mÛööI§E¤Ì§ÙkßêfÄËÃ¥‡=ß®Ì|Kˆ†HÐuâõù]­µÕU˜šu ìä~«m*ìÝRz×õöjYºƒE>´_A­ü!ë4Ð;Ž0QšgE˜¹œÀ,ðîT©ÆBî]ˆƒÆ0]Þ'IÛï=UH–(3À­»§yÜAzÊï‹€[ E¸t–« €±­`kóó8˜#BXÂѺ«ê1J”3ž’3€°8ˆù%#ÌƒèØ ^òo">Ê_ig è~ìÛwPŒG(¥ô­& ãÍ[N!âd ÁÁïNB‘™Ðnpl¼wdT’+(³“”IhïÂô¡²ƒ`NtcŽp Ò#joÖzÀzk‰‡Ò™ªJín^kMHífîLxtïyï>‰’[ôî©“ÉŽð—L‘®JîD41½z˜Ehû‘DÉUrÈn'cX•æåv»YïBÌU­[“µVs|Y™‰µ®›»BZ²n1 •¤ s­ r÷aÙ•Ö>|÷ÏÌ,öº H þ½õ“ÜÖƒÀzb6@P±—!Øqw7?ìˆ;3©—Àõ]Oò>¿LæàÈüöJ”÷NÞµ™ÈÞÇ÷Gï=ËôãIàñžwò$’½Ù]ijüôK—'¿­°rö®Ý]K9  ÕZ…ìû/ÝÖ » ИhÈÑ߈^3Gä2$¤¢µaïTÍiTááf)Nƒ£ààø§»#MÇÙ{ë¯=žJDÜÖ‰ÖX¦ÉÝÍ;ƒNešX)‚ýb™‹Õ&9x*$B½yaQ á¦*©b…HsoïæÂ"#¢¡=œs%fÌÄYZÀóõÑOo­Ý¶u¨K¨l²ôO&Ô`ºÌ Dé[Æ|H ÇIìYÅö)Âà÷å§|ÄJ¤ÎùžŽ%fìLÛ¥û–Icñgæ­Í§ŽˆÒ‡lš&3ënYi9^²Û»LDâwGÆëÁ(’Ý;3ËE´0a¤­½—"¢*‚ô °1"A½÷u]·m3³Â"Ë%vþš™m͆ ¢Iu.ÓV{ߪG8HT ”XyäŒ Âzë„m½å©·Þzc*6Ï'­U[´´¶Í…šÑÿù/ÿòÇ \.ÚëP^Z¦)½tÌ£›ç Ì"rMí¾"ªÓ¤§ó<­Û&LJK)˜[ #h7i"dìÝ­[Cþ£@;ÌbÛÒЗea‘2RO&Žì[vz˜YXö=”‰˜Ê \Q¼M:ÿXÂaH8,w“ˆH|@EȽ.§³3õÞ“b[DU5šM¥,Ó¼Ìe»]Cp:—¢Ì@R“™4[‹ÇU¾ÃÅîîܾ«‚,'ØöVs‚/$D"ªDÞó?Æ»á9ßAÅG,¿%v ÿøû“òÇr6ËÂe·•< …ñ†ËÖ FKûñuì2""R²‹Í3SIžØ!>F@yI 0Ë™<Q-„¡N±'Ö€<Æ}æÝC%;m/·ïP^:°”LÝö[0Ì<Ó画Ÿ¼>ûch‚èª`4m¹€‰;–erĵWâðÖI…-ºÈ©”]öÞc)Ó4)ïÊל—R"#-¸‹ÝrñÄsë½UsÃùt¨êÈsU ‹ùfPb'$²{x¡%Üv¯%&D@²Î \ ûm{Fë{”;â>ÐG¤Æ œ°g ý~ÃF'oG9""Þ¿0oܬ›_ˆc¹ç ~æ¾3 (";y/|ù£¿ø’$0‹Hzf"Q"bßÅ’þãîCœÊ‡±Ôαwüsê»bM)%výÄÈåg'Ÿ7uDÃÈí"UHÄÑZ¿Ýnû³Ûºe¬×ZÉ#«lçâ¤øsDd ˜]è#å”Ü‚¨‡‘Dx°Ó>fKI_ÞWÜóçûsÏ´yp̲–‰ˆÐ3 ƒIïÕøxOd3=hÊzš#½”NɆæÿwD¶†³<0;xìÖ­wc¡¢Zv£®ˆp·Ø= 2‚…¹õ>@=ĤB*é¼’O3Q¾›½Su-Ë¢Ö£Iæ8÷ŠC8 ûäÆNe<¢öxå¨kÇÉ/òÇšMw`3€ x †¥PбҎßíÖ{¯½œfM·y¤uZdžžŠ¡xcÉŸÞë¼¼Ü-Ù<ôeGQÆàðÖçiz||¬kí­Í{ëçršOËô hrfÁ4ÄìXéÉe""ïÖ¢ªªp0È[óÖóƒQ)Ê&–¡ôm¢à }ß\Ƀ÷¢*U`pLŸÓQÅo›ãpaPvLœ°Õš<ÝfÖÜ«Qw°êi™©”,òž>| Šeš;¦e‚RŠ4r=úV‰¨yé1M"‘nÔ,T$H¬sÑ`"SVŽ”B’1Np§/Ò®Ïnî½wOW]Kf‚G77‡!9bë¥Ö—b÷´¯ÜßÜݶÆ(Wέ›ˆ”¢{^¡Ä”ô\Û•òS°{fóPQU•Ñ›§QôÁšäÚ»ªšùu[Ë2g»[-'5U'¯ ëµrhç˜ÊôùëÏê\‰¨ì-ËLJåóÇåŸÿÇôùÕ›wÿ`Û35DmàR ÍS¯[)«2pË” •çiJ•Ã/ÓL&*¢DÁÌéê°kN{ËN{Û·_º‡ÉÆ ÎDvv¶HJÓ $Jš{Ü€¹™çççëz³$‰0;ɇíÖ!äña]k­ëõÃõÇ·ß½áˆ×¯_ ó$üåç_lÏ4†çµˆ0È÷Vd˜S€¦‰Á[53Ð$La–£ÃÁD""r")8BíÜ|^ó ÷å0ÜÝÜÌáîæÑZ7‡SŠÿ!*<êøÁ´]?VS÷ÁN( ¸Q´½ÏªØZ«MË|z˜ 1ÌK<ŸôÌÄ8sse ¤¤Gº~kwffUˆ9o•IêjR4"Öu»\ú±úÑ¥LªJÁá&"n óir³îÒe’[s;ç¹zí‹ãAÊY•¼MÊdÄÖÑZ#4žuÒóâ¾ÝZ#.$¢Dè+¢ðp*sPš#œ<Ò£8"à¦DbæŒí¨¹­æ=0rt‘[ÛnÏן}þÅz}GŸ&mtÓ¢mlz¾¨°ô¶n뺨FÙnk½ÖeYX‹CtÛüÃõÝ<—yž…´y#z”ÏAØc“ QhžN="&ºööx¾0Á®PRï1M¥šÉ\>lÕ¢å¹ZYN¶Õº>~>}všZÛ´LÏÖYiYÊõÚÒ qÝêE‹E4xæ“ü'ÿìžž·ùÌ··õv½ýÑðå¿ÿ‡Ë,è± öÞ)Õk#ÀûTÝZkÌ#½ òt=$f DÎà噊×/ÐãöyT<Ç7X—Â`”¢ÙŠ´:ÇKj1²Å0dŽÛ[­µ¶f±µ:/ñáúôþýû·ï¯Ïîï¾þꋇ ;}óÕ·ï·0óËëÏÞ~÷<ùø“ŸüŽ“þÉ?ý§óïÿöÍW_oÛ›u^^ÏÓ$°ƒ«À€l$dA0÷0'ŠT*MâÀØ‹=÷ŽãóÞ¯¨B‚¤;‚›f!"Újm[Uâ>(Ó²œ=ªª’Y›´°–Þ½÷>—‹žõúÞ‚, Õ+š5sæ”§Ûš3!øÜ¶òïçKÌ̵Ux(q®„9£UkÍî´»'ÝL@Àþá!²Ía-:Ï<·jqè#³s3;+rM’èÛ¶}ñÙã›·ÿ°lA™9³ìÉR!÷žÀ¶ÞÚ¶ž.¨ Üœ$hn"$eLçÇáÝìIY>ЍÝMß#ùúCœö=hpŒ° ôGD@«·pÀÖêõ¶nfáa„æíí»w_}óíº®¿üå×Reሯ¾þöþøÿËÿü¿àóëÿö¿ûïþ¨òøåÛÚ_ÓãòùïϯþO¦ËÃãõù©ÝÖwëµ+X$.ÓŸ×j1Mú{¯Nïß?Õf½µóRÿñïýä‡nî½wÑ©s˜GoV+à¢, .bfÎF€…ou]Ê´œæÄÒC!ûÊRX°ë&Ç]q;Ž6¿x=ñX•»µ…ø¨A OWyôÖ=º›Õf×V¿}÷ô|½ê4ù»¿÷´Ökm­µ÷^+ÅïüÉþgÿõõÓòÇÿÍÿð?þÛï¾Å¼|ñêRÏ;Ÿ»Èt¾¼"ž.‹mµ„¿óuoݶ>Ÿ¤Låtšhó>“DP 4OrIgœ"·da‹AÀÉ%Jš#,{„à4óð€Ã»Q…õΪç¹0³…}÷þééùjîÿæëo,Ø[?-Ëg¯^?<~þçñWpÌóÌèóT~úù«­Þ 0MüÙ«Ë+‚ÝìDùÔs"á¿u]3=õ æÑ{WâRøºDd*µvÕÉz+L&q3¯½ÍË"*ïo7ën§y)îDöÙ5 &q~’"\fúå×ߺûr:¿½¾QÕÿãÿþÿþAQ @±7Ösãn[MeÓÖ*(Š0Q°hÀ<†1ùmÛ|Û c—ËY">/{€Ž•(#t_qiÌ⥙GO­8i >Æ—ÝÌ“›â>±½×ºõ¯¿úúyÛæùô“/~úå—_¾}ótýåßbš§oŸÖ?ÿWÿò_üïÿÛù³ÿ½êëϬuŠöùëW‹ªr¡0”9"‚‹’ÏÂ×§÷Þ~ût}.,çÓ2kavK£] §Y˜€@®¤€Q3“§Åó>4Š1—¶kI¿ô¡¿›aA¬÷ÞUè´L ÁVk ž—…ÊüÁâ—ß|w:–25·GYþðÿäOñýë¿ú_¶Ún­µ¾–ºž.§ä{mOïoä²ÌEKÉí-WÇCàõþö3Ñ4MJ¬ÒE„݃ˆ™Ì, NN=-*, ¸„P8쨪½UÊ‚}?²µ”Ìé£(ˆ¹p„ݪ×f*B$ᘦŠ 3ËHº]Ÿ—©€¸µ6Ïs‘œ1멘bÑÖ-}vÎ!r¤³I$9ŒÄ°/ºy”œe‘ˆàô¹ص÷ÈÌØC”D3³Z[ë=‚ûºÝžnÏOïË4¿^.¯æó ½ÈôÅùÕ×ß|u†üî#¯oÞý¯ÿÓÿüýºýþë×í¶ž)~~Z>‘D=K!·j¾®×Ëi–mã2Yëµ7Z©I||`âO³rfx·ô6;àÞ)]|D¢Ýñ§ò‚¾Ãðps¶Þ·uDÏóB[ßZ·åáõòø8_^­`&.<-ÒÌĪS‘©À{ë½zwb/ò»¿ó»èöüöÛÛíÆvÅãÃŒš–²»§Rwne¥”²3î ‹I4 €z7rWÑœª²–ó†.`±»¥€·ÎDó|jëÍÖV&It¼µ–;Í‘dçëfíÚÜÜÚÐZˆkŸöÞk­X–B"[QT^?^rÿùºz7€Ü ۭ¦âÒ2VI×§4%PŒÁFˆv†Ë(ÆLªy½hIF^Dd£±81“ø>üáú¾µ¶Ö­7s‹z½µõúùår¹<\.ç©ÖúæÍk•>ÿÿĽë³$Éuö;̪î;wf± € H‘”¶L[¤!p8Âÿ¸CþJɲ¥AR& “"A€ b3sowUæ9ÇNfuÏì‚X,¹bb·çNß¬Ìóø=JyùêryÂÖ¿y~ñû¿û{ÕóŸí¹¼ù ƒ~ë_ÿ­‡õä- —½]žŸ­o½õ°ýíÓ³omaчG‰¸¬')L`™ÁäÈ"®w„ž$ÑATR÷!"]qÂÃÍ¢[ò'FÀÍZ€AdÞ뢢dŸ~ò™?øÆãù¡®ËyY?zù’YÐvvó}ÿë?ÿËø»hl]ØjUýÖGýÎoÿ–íí‹üôÇ?~în×Ëý¼®¤Ô̓£C´í»ˆÃ3w.¥#ºí.!†÷ªÒvHiV¢è˜zw waW‘Å©·Þ/æf§e]ˆ@|íÛ®T@ÛÞ®—kéz:­ä¡L }oÛv¹l]‚û¶½~ýüáÿþ;ýU&n{¾Z–ØX]»¢R—óùáÔ¶ë¾]û¾.ÂÜ­õÍ¢£¬uÕ…ƒ)ÊB!Nû[""8ˆ)ˆáÀ(Ò­·à…$ˆFG—£ÏÀ@âqR 1HÔ©;¨Yw3U}||8­k]ˆ(ºo×Ë©Ð7?zùõ·mËNõIãw¿ù2ž¿ž[ÊË—5üòÙgvmÍ"`áì!îÞ.b¡Œ…ÔÅ„Ÿû…¡Rd=Þ{D˜58T*C(("œ‘Í´‰¥ Gâë=ÂB88¬S¸ºHŠ-P-*ÌÞ{xl×Hm»¼ýéÇàOdþ¯ó›Ì¼]®o^¿QV»<ý䓟˜F°p<œ—oí¥ô)¾öòè£×¯_úñ'oŸãa==<<œN'ïÖÙ5˜¶>EAdîZÐÍ©Hôî¾Ö¢P7eÞ÷¤Gˆƒzw «$J,…°*Ï—‹0¯§©$, ‰'(¼5Û÷JÜZ+Ò¿ùõ¾ûý_¼Š (™K€Ã%\Y–Rk­µ(3’꙽r"J­ÖÞ="ФwÝÏÃ9)ƒ7wßI×0šÇÄLE<" ÔÌÛÞš¹÷Öö½µˆ–RŠHòÅk­û>Åj,g<Ør´9FÁòñ!_·Ö„ÑÃVv&âTÜCÀL…‰Cµê²,Km”,åÌ#lƒ 2ÌE“8ÑߎŒÉ'{‚™ÒxVÊ(õÙðÄ {³,¬Ý­{|ðê…™-ÔU‘’‚q’¯=žó®×ýÍ'oS$àÓ7¯ÚÓ3 ÷Þ·ÖÜ]€^¾"ÛžŸŸ/Ïo÷íEQö"i#N˜Ý%—D Hžæˆ¥7¨»3q:2S°¸G°8Qtwãe Ñ`¡nÑsö³3è¤@xwk™·D m×€½x8=_¾¢žžNëqµ¨i¸o™®±3iÛ÷àD(U×d€y§°¬§£¿Àɹ…“@ž`G]ìÛˆ"ÑKygED&Z©§@MvÞ—ÓP"t¶·¹[)ÉCU "^ݺ™©h zïn>d9p/µHøp{lMx¢,Rv§®uÈŒÒLµ½mÛ– «0»r%’!è÷ óû=((07ÆèõxZ QÀZLÂZ ¯^>œ²:Ý{À½m{ßö]¸0ËÞ[R ¤”Rê™N*m×Ì¢™RLXò–%ñ+N$ Æ>ðq›ÁG?9¥Hr&ï—Ë“ws3„Ѣ⩻!ÂõáœÑtÛ­§ §0`ˆe™€¹¸ðhô§"çæ.2¼ƒàh¸õ¸ÄÆÜ˜™J­Zºõë¶yDZ»õé‰2À—`h±£q”M¤lð!„³‡m™²UÁ¢nÜÍb÷Ô>£”PKÀ…˜'è4Q¦»m-UÀÊÝúzZ®Û¶žO©lBÂ/&øpåÓò<==íû®ªÑûÛן-E—eÉ… aDhmï½qÛv7gæZ«vGÖì[xE0ØzçBBL€ªD7 X˜wÑÝT òpD Û.{œ ,U‰$ÜK‘ÇLJÖSˆ6~Æäü''n]K)ÈoUëÞ[k[ S‰mÛLDT©”Ââ¶]vª Q…Nfα@Á>æöÞ¬ýüëûl-R©3Ñlšy¬ª¬b=zïæÁª¬YdÑį‘(€H¯žŽæÕZOkm­=?[­¥”²)÷Þ{£Ó²¶ÞÉPxu°{$ãmYŒO” df®È—ü0žVP÷rãÄÝý“!Šˆ»7¸…Sjû‰3Â}8”-ÒÃ=Å`º;ãÄŒ@Oˆ“˜ Á rpáÝv‘¯¾öòÍ›7ffˆRKêãúö|>¯ªœ¢óÉ øì³OÎçóÛ#n­KvÎbÈžTŒp‡»©=zÄÁ*ú¼ï?YY«b}÷Lþˆ›Y\¯ÊÌ™nPaU´ëFˆRÊÕâw~óÿùÁWñƒÐmk­Ù蟙=_¶`ºw뫞Z]ˆdÑr…Ûn"¥ÈúâÕyÛ^7’z>7ìaTŠr°†²çRÔ#àÆ (¨®, BB²ÅS<ÙïÌ*¥äˆo[çKLW{–(6-EUi°6Ø@ºre†e´ bYVí{k{¤oF^ûnD¦JÔ¬Eº6y¨–Z«Téh×·oÜ]Ó¸±÷d1BäÎÌ»õRŠJAXßM+D5±¨À ïØ¢’tÆh´ŠôÞ·}#¢æ¦LòütñÕ»ˆÉÕ]U8&æ…K%AŠåS-Ù{zûš…(MÑ…"ÌÝyMß V†™UÒõÅ#³"Ø< ¬‰Ãá²[)Ý»w/¢U˶µBêÝ_žÖ¶ÛŽa£@¸ˆ„@V5³½oL´”ÚȬÑÊÕš1U&b³(•œ<˜¥yVª$EôÿøßýjË-ýû7ŸqêԂܬ_®k]¼™uï´µTÝ[[ŠôðÖzë´2¯¥ q9TÇyD®4$—‹ð*|ï˜Ýüð;9)KªãˆiZâˆ^ÛF@yƒ)uÇEÄ ÍÍ·Ëåúœ(—ŒU'e’”ÅݵHDüºo`£Èlä¢2h»@;Ý$œÐ’ƒ€›í¯2‰Êìö pcæéÀFHгÏ?ÉB+:œM=SPÙ×ZÛn)ê‘£}Ùà$¢¶ï*îÓ9žzu`gæ€/ËbfB)öA<’*b 3Ãh·¶ïÝÝTùááôæ©í{c)>Œ|œœˆÜ&å³ñáá—hD¤’Á@Dk ‘Ê\„²(uY×ó÷?~ëC% ñ‹Ï^½nû±U‡9]Ûe§UëRj Àýé驼<‘[c•²–‡ºf³ÁÜÉû}Q, XÙ>³H¹zº“ÕððÌÍsgÕÙݱwijFôâå ŸeàˆˆT²!Jor´´çj-ü|TÄ&ø:÷œE”ˆD%Ë Ý…I% ˜aaЍ0ø[#‚öÃyçªzæ³<›j™ L~1RÏÐc¨¢(¹CfJmNk­Le»|˜sÖf“(‰Fy!©}âò.¦[ð‰áÝ:f<£n¢¨µÏ’ާùHVŸ=ûÁæ-X^¾zñÙ›×Ï{Zý MŽAqÈC0hzDänLE5Ý8`â0¢Ê¬,«ª.õßü§ï}2¥ï¾Â¬ kpxäIus•šü§¢µ–uß.×ë5Å6”Љ aUY×µ)·4¦ÅìîÞŠ?wÙ˜à;žÞ9¾*³|$ã÷¯#;«aéÆÚïüˆuÔ‰#ÄÂC™ÐfNhw \Çë ‘™ùçºÖÌ&ƒ¼°ÐôZÔ£ñTŽ»uhFà®’päÔs‰‘b@Ë“ê, ‘ƒOžïÂÞîS§,¥hR3"¬÷¢¥m{$êåðUpÄ 8y¤Ù%ùû©ñ$¤¤Yî °@„Tuï}]ׇ‡‡ÝŸ Þû.R(nžÄ›ô9¤€¹»ÉZ‘¹G@tD ¸áŸ¾Ý>ù¥uaóʈD¸yç'x÷¾÷ÓZª 7/ ˆC™”½ÑÝéŽ)y›msî¾—–ÝOÜ\h…ØÃ ”¤ÈÜF'a{L}sË$i´0Vîw´Ã0ÚóG`>bç„ «2sq­‰ÿûTÅMÕ{—tç rM 7 s0… fé ˆà49’ù£ìPLØF°°¤æsBÉæ‚ØBwó`ßl[—¡Ðx¨ºg¸˜lpaV3»´ÆûNÌçóY)¸;GhðYä$w̉›¿''ƒˆÜ„îí,‹à9Q²ü18°‰+döyLùœ¿;ÁƒôçÓ 7%3­Š{ŠßóôS@^l0e¬IÖà¡AD¤4XÞv·Ôkáñ„Ì9GCΞÔZw~÷¹,NO ¼ëãö¥¦DˆÍ¼iº`›>¯D¤ª­µl¸däCî "æ¼kEï&ª\ƒHhºÇ 2ŸaÐ=F¦0û 'fV•u]˜É,êZ½5ƒsürho€‹¨“«CF™8D¥” V-çKýäiÿþO>ýåg-‘³f=iPW" V´ #¢0 AàEøTuùð´>ˆžDOR«”E«rU]–š†Ü ¤<ùˆ¦2œÌæ‚@Ä“åË faeQç#ñ$Ä…¤ã²²f9ãÙp£ˆÄ£o×kôްíòÜ­©J¸õèÝZ·S7´z+UE.sx˜Q =šIŸK 'XX”YÈÉ……bòçcÆ)–ƧBM˜yÊh%a$#ç7š´òü &ˆ0EŒ5 $8€R`¤bJ zo9ÈÉrfE#ïèÎâHà#U=Y ¯ÞÙŒ‰4‚8[-¬Þñüöz½làÒ ×}wÑtu¥¸,ÎK 3UN{X.jáN‘þæ­0ÎKY Ÿ–Z–õÿâûßúúã7¾ñð·ßÿx©åþƒÿj©õ“ÏÞ~µ‰«©.3B7-ÃVWˆCX%ˆˆaÑ$ˆ‚œ˜’ÂOS4Fðô¹2í\}þ‰¯¿ oDZrÁÆýûi–|eiì¤Y2HúP$U:=Ò1vð IJ" Èù-3>(Ç2¿”󜎑¼÷rÉ/SU'ÏÛ1T ‡äñ´±df^´Må?YR ©Šöîÿì[2“õQbúôõå+‹*PÍf|Gœ& “Y™@aÞÍV)Dn@(•Eƒ2i¸ãvUÔˆð‘*¤]ìíË>߆ïüõþ¸‹&o…º3M™ê8î¨$ÄBDÁ€‚˜’¦AæAFðèy ÞÍò\.°¸»–‘[ݶ4ã×{YÜû‹úüAwR¡sý‚7ØnëÜ„×KÒ†Ó &ÀˆlÆäÉE.ØGä>Æjpò’ܨû0} é>O{r‰™Æ€rûðpâìå~5¦o%3 !(\€ VÎËZK}»uö«}÷ï~ `ÛÛ_üõþÉ™ùs]RC ;+½wï"Ù¨'$u–à,`f”¢Ëy½2JHÄ’ Ô \˜%™[v{î_S¶¸[_ãnfÜOPÉò;W&š8™!31+e-3D `23>0î>ÑAeˆŒXc’…òK•Ë!Ç$,os»?§÷fíNß1'f©©S Ý'/oݶG×:LF*u[õYDr@̬µŽjÁ”ÖaíÞL´EBÅ4gwx€;…2H”×RV•S]œKy}ÙÿÝŸþÍ/1Wß9ôt>3swÛ÷gwqg¦D……õ¥H%Z˜TäT¥*µ–ùÎÈuÀ·©82´cÉ¥Œï8g"’U™ùÏïW!ŽÂŠSDâ(ÍjÃáÂ̬õ 3“Z8²aM¹"1οȳ»=†g“Ï…–f 9Ì\Já)œOF6mjø‹L¿pâ΂à¸Ìœ¸Dƒ `ëÍÝ—º Cù€w3땘e’ËÃg}-œˆÂ}H†÷ÛÏQÄ|ò-Ÿ1P’’-œ"Ø#Dǘߊ{t,œN§Óéüæís¢¥Ayß=ˆaLy¶Y´ÑB')R×¥.K<Â"¾óÝïÿòóõ8´S ¬yïð`B¡Ä¦B³´H)ÄJ´ˆ,¬ééÊ6¥0‘½ƒ©4Š[€»¾Ä¸©ñ¹íþóDZʾ÷þ÷BfNGìˆ P‘0˜ÝÝw çŒÒn­)ºCÜ$ "ÇÈ—ØLEœ9|1ÛE“öÙ `½QÒîÂ0ë­w‹¡ƒïÊ2–."dÊŽfiþKLC¡ãZ-WŸ_9 )ˆ—¼p01W¦4¼h­Ua-<ÞOD"„`à$r(ñ"b £înŠjñÙÏÎ)Âr”·“–3:ÙŽ>RµLÌÌ,™#¥ 9K¥˜ÏìtìæNõŸ}ûë÷÷ÿøUçä—:ôT•™$ f°öP«"T¨¨¬LnáäQbˆ1 )îÆˆîrdÜm‘1±°ÄÈ<¡Jc£ôÜné~¦ŠÈ°LwøÝBÄ܈Yõ—%™A,h&Fó b¶‚ÆKzó„›¼™eZÞÚnfiדMîL|0>m<ŠÇ“S#ÕgÌ3Ÿ¤˜˜¦J9‰ð)=…®"k)ûvÙ¶Ë©ªêJ¡ÈÒ5'uñtûq·¸St`¦„ ‹³“ŠÇˆ©A¢š–0Ï|P˜S-á8ò–R˜¸›2䥺œôfÆ‘-öqæ^‹œ—ò­¯¿ü/0qŦ³äRµ°+¡0+“‡Q³ÝCO‹ûP›™Ïã ÷óI¡¹Ï´ùÈ®#Ò‚@£t q·ÄÎèõ Úª<\yïúVt;‘1˜HøXähžJ†·G.ÝiòaÂ|Î"ÂZn”º,,`N@Bùðn³÷È;ïr›¸15cæå¯#Uv‰ˆp‚[»0æ–ãJÉ‘NT•ÀáAN e޹‚€†#Šüس:°yÕ 0²ÓòNr vrù`vk¤ïîAïèpŽTU˜kew[×ò‡¿ÿ»ÿù{?~ótùÙsï—:˜Œ 0e¼8¯1uˆiìx­ÙNL&°Z MÛ©ÊcÅÅœgÇëãÎ9š@ NäŸ÷ÎæþNßnùçÀ¹§$S0AÂÁ··užò!qB®ùì9ÞÿC}X8Žè}뙃*C©^”ÞÍwëÍýU1Ï{×Ec­»³0§ésŠ[JnÝá4XÅ“‹† &%H€ ávÎþ5ðèãòïO‰²t·U!"ÙÇyãMŠ˜ˆ0QÌ‚Oê^®èÇç¹ ^a¤yuzq®ÿüw¾y>}Ei°Ÿ{(Á™b©*"Ä‘}B*Ъáî˜!ù ÊØ#vŽÎóìqWf?†`\ó€;Ž(õÀ"E0³Ï0à˜=™d$ôÄïòî±Â¡Àn=å+²’(PÒ#ß?=grÙ€Y¡ñ¯ãÞÎ*f¦ÚaáaÞÛ‘–’-Ò”òKÀÀy Üw–Øü`\Έ€GÎÍܹˆ)…O2æÄÙâ•V²î~½^U•R>â®»pV±‰Y²ƒ ›ÆÐU‹g`äNÙéMZ0 ÈnýÌA•Ë&Q#„eö»»2Õ:ºWÉÖÝ·uY#b)²y¾l¿ñ¯}ë¯þøWÁ3»?äŸ?ÔÄÛþ@rW‘µÔ‡‡Ó²,Í: =œO*ap_×åñtÚŸŸÎ¥p¸Š$Ä=‚ps€K©LÒ ‡k.<˜õ@òóˆ@YðÑH©ƒYD‡n{ i  ‘RM£².Z´Ô•)‡”×åŒ(K=3«w0bn{–(–ÅwBjDÎâÄNlÉTe†âZáØ÷~éU–B¢ªE¤H©Ã”8ݼ,%…p3: |¥ÔŒò ^Uîa7FЋÉ\nn³‹²g¬Y—º¬`ÖZ¥&—¢ ‘$Å&D æû3}B€œ=Ó¿eÙ{÷Y¶ ¤ª?Âæ¹š{G@‹ }úôüw?úñNÂðÛ):TØ|O?JV– E+šíÏWê°Ö)è´”ËÖ>üàÅéþÉŸïW;kè¨:uKêËùáüêÕ«ÓÃúúí›dº%yTD K)E˜9|¹.šxz£FôᦠâT”»!ޏp€ksåœñ+ÅPÕ˜jÎw‡Y:&ð$«Œw¿«"ª:&)Q¶pÓ‚ªím¤ù£Œã×÷øñlú»«×)¤Ÿo’ŽÑ18ù‡-+ H%Ë‹ÁL‘èÀ/÷ì$Gxk@O=‰”öÈ‹r÷Ëå’Ê )9Ÿ5¾Â³R‹­ù} tÀKŽØ”†,î1tþÞ(ÏHæ.ߘTבÚF$p'Q9=œa±ï;ѺrM tïýƒÇåy“?úõ‹OËŸh™{PD,Ër:>øàƒõ¼<]žk­"ä--ÓGòWIOœ¸4{üÝ"éãýÂïã)#€™ÅøÏ※“ ª$¢d î<36ŸÅ¹Á±Ö¢µ:ú]­ˆLÖÌÝEdxK§îckŸ-jF&Ö±¾Ò¸ÛG€”nóQ8ž„dÑA Ž)BñîÉQ¤FÌ­`—}D̹˜žiÒqx%܇gG¹Þ-éäãEtwróÄrâº{8Π{0MÀAõ‘ñæsè˜Ú©œmÈᢶ3!ÜWDΓü°,ý:=-ë‹/R¯àñåcY €mÛŠ–nDI#!·Dc)¥$|;aDÌÜ©˜KeOË]4ñã‰÷¸»Ã#ÒMˆ>³Œ¥.G¿˜µh„Ñö·¹‚²*‰0s-R—e©'–f­í="J)±ï{ºËçªéÙf¸[PýÎ=f_÷þ'ÇDOØ€„ˆdÈDá‘ü¤¦8“õæœexJTòhSw w¢Ð r)¥–šK›S¼~Úþï_Wç½Cþ·ù/^>>2QQ}|ñøÍßü 0yˆ¶}3ë*B@omÔ¿µÍ ýt:•RÌ#'&Ké IDAT®ˆrÚÏ{·R·2êe4«€wèÂÝPÞ²=áÑ*&a&”Z @t·ºTR-µÈRJ©"Rj5³Övsïfî½g‰E‚¨·–¾u÷9rÖÏyz:çÄݶH´ªežŒÌœE¶ü#Â=F$ 9q»˜´bvÄéÅÃúðÂEÌ'ÇE”YvŠƒ¸n׬C'sø÷ƒ#Ìa· ˜ÞCÛÍ‘ :ôÙãHçN•]Aº¢¤Ùxh}òÙ›ÿø§¤i±0øö” ³DaNÝ ¡­RÖÓãã QafbxÄ·¾ùê‡?ùì‹àq¿ì¡~ø¡™].—RJ­uY]êu/[ÛUUpð6@¹îÒ#g``³}r?ˆGq°b˜S/¬P:“{¢®\Ï䮚›¢‡Û,aQÖ‰†½÷|O³ÎŒf}1‹i-‹qò†€Üõfqç½*’ªŠj ‚ÂÃMð(¥pÕ'ù1Çç½aÍ)’§PJyõꕳø…®ûæÂŒ´" Ýçócf¤z&ŽhûósóWhö;ŽCVKÂ>J¤?º°¹ÐÞ½“ÒŠ&[“,Î:r`ÈÙ ‘HÉš`%ЪåTe &¦¢òú³íÕcü_ÿ—õGÿößÿÜ·é‹óÃÓÓ”e­‹™­g)üãŸüDU™Õöæ°Õ‘^à æÐZs÷ a D³àÌa§¼Ì±×Þ†&f:‚»½/ë¯ÇÜ:E1kÿÀÔK ´™‡‘oÛ¶ï{˜÷Þ=Œf`}´aSÖüût×»>dùÌ}¿^B0´á‘ON*B¤l˰(LtcV—o5µˆ*ËË——¾s«ñ)X¤0È£'ª ÙÞáـلa3¥™˜9(ènâÞ¯¾c[ˆÈÞÌ1ž· øh3q Nd0Hx°Dó©Flp:ÚŒ‹ÎËš.±•DUËZ*€ŒkE@„?ýË_˜ ù·ßûR¿¢û~|=/­5QúèÅ+3{úä³ßþàƒ¿ýÞßxìëÚÕ#¡aáRY*ÈjV8Y­EŠD ûhÄDÄ “E*øàñü Ä™Någî­}üÉÇÄ7gÐŒ—rϳÚ[ ÑÅÄÚºY–EFHS!óØ‹Žãñ Nñ¦lLù…£9ž­ö®€˜µ žA!̬…EøÃÃi}qÐ-̬¦'S)§µæU(¡;ýð_ÿ>~ùâôpZÿæ?þÒ³ôýãÿà¿ûΟ|)~¥†™®öÞŸ®—õᬵâúì>’½Qf†õ¡Ç´‡#™ŒØVânî7˜¸›ª,þ3 wÀ*Ÿ“w±wËÄËF!9Þû˜dúH1F•,E'Uaä@t«\òôÍ4³m۲ij®ë¶m—Ë%Å;TõãÏ>}~~~zzà­÷Çít:=>>Út¯ÍÊÀv¹³*"2eæ`òðæÖÜšuwwºE«1ÜÙ'0#‹ÉìøÜ|½ÿü£[‡a×5þ;FŽrxL ÒgNDpäÃuÑÔÛ«@ÆëëºZÐÛ§M…«J}ötù«ïýÀO>n?Áë/3í~ÖññÇ_ÖóLóž"­÷´0ÑZÊR™™îˆ€D4 C­³é‚‘§óÄËÚ†‰•¾[qï†õV6‡’Âzz'û?ŽŒøþc‚ñ<âz½zÜ@¸ë,ä{r=P—šr³y 0ŒÇ·ÔZ·mÛ¶ÍÌRüþz½^¯W"Z–eY–W/ÖÓÃzzýúõõéÙ¤ÍèÂça­E=˨S€l`µ"Zï{k÷ãsœÿÜîn-åC¿ç˜¾GÖ›Ì,8¾ ô¹;îp4>Í"SäÉ€r'C@Ä QU©B[ËÖþì»ßÿþ›ß>-å~uïÿà‡_òš §Ü¶Ü}7Û¬¡¬²]/J 0 "‡9YÀÓÎÛºgs\J…”& dÉ5áÔG'—º\öŽd(#¯Û­šSó½Ût ô˜7ìX,K˜¾Õ3´72K s™<×Zjѳ”Ó«¹Yxwï“«“eÔ‘äÒ›3)‹0ˆX´œëò°¬çºzxÞß¾~óøêå²,c®_.æmÊ7±Š3õpkîî×}kaA`•°!Uvì<ùu¹ö'n=ÂŽ0ãxA³”‘)1ÏU6Ž]FK"Fq὇ç]ó@0«OˆG=ºqÄy=‰0\ù´(€?û•ŠÓüB‡&¶ß˜J)ÌÜÚöôü¼V>ŸV3»^¯¡¥–’ü@†1¹˜%rGJb…cR¢‡/ß”Ún›fï=&x7"À`’[Kâg3ÑžÅTæ±ÌØ­’Ctó:¾÷XŠòÖæ2©ET'¾)"éffnͺEt·#ªQÕóù|½^ÓŸðЯˆðXJ"#ÖÇÇRk³~½^{øëׯ“ä]k™[ÛwË@…@àæ¶í{k­¹s©b-R‘÷ˆ€yˆ"k>¥9D÷@õxUšï}o¯++¬ûóvy¡gt®ì›m¥B´¾s𢠸ADà@tK¿Q•”rIyŒÙIw³$#„G-…R Óvb½[ïÇÖéݘÙÃzïÖzk=ʽmYeÒ}ßs®ëéáü¢ÖjdR ‰d?ðV`²æû6*¥”ÔÝpe=±/þ¼]³&eá—íJD§eõ±¯Hu%³ÞÉzB.D-vç°"ÌÌžõ2C:ŸÑ¢KmÎ&âÍûe{||\ËRûóS)¥FXе@ѱ¨T™Ïxˆ&„›YKtoµ„ðÞ÷}Ƚ{„.„­Y t]ümïYênA/Ï/ß<í¥®o¯=ðÿg-M#¤†÷ äÃýâá! ‡1í-o´‚ˆªE²X‰Õ¾ñó¯Â)œ; õ?›Þóùcì’ï6ÙF×}üw:_¶pwͬYw„UÕõt*Kå¹8 LB†˜­õÞ½uB2ó‚†2ÚÑ*¥$†fè3@4œPŸ(à[_ ãŠh4AÝü`ÖÅ`nfñx­KQeÀ"˜p^ €k§»ñ+9þ§ÿñ_þÇ?þÓ/ùfe&.Ìîtݶ½»w£€½|YKQ–k7!F »ºï×H¤(n†°À-¡`”wäwƒ~ŸKÑçÚëD·–úÜìng½µã¯Gý‹î ^£ÃÄdÝZoaæ½·½5U­K]×µÖ3cAÌJp“>Ù®W­ëÊÌ 2óî‰Ôˆàfnfì­»%QøˆˆòôêD”µd­‰7#ïëõš@¹4˜ÙˆÓ#˜ˆNK9ºhÇe"Ñþsè˜$È1vÑ¥„àYÄàö'ÖÓù'C)Ê òd†v÷‡;"”ù¼¬ç3—pvÑÍŸ®·Ûñ«:~ò¿€0ž¾x8«¦G®×KyÞ÷¾Áàs€H-&‹}ÛJYœÈÅ‚ ·L0|]ׂ̆·ë];ÌâÎ}D{ü„¦P3îˆ"9·ŽÅ,åøÌüëð5‘A²¸Lß÷e]ÖuUUñpëæ,€G¶J)=¨E®×ëÞ[ƦÁC;U’\/iF‰lÌ&úâ&³ÏY]ADÔY¸m۾ﻮrTâÜ}ß÷ëõz+N§“ˆÇ¢Å†‘òλcî$41HDp¦£Á;67Nî4*$|Œ§¦(!˜»7ƒ"]@éKð8ؽ‡dkÞÝ?ysýÓÿ÷ûÿíïýæ7¾öðGÿñ¯þ‰Ìä:~ð¥K ôTË(2aaÑžfˆ,‹–uYÖe ÄÄ)º14á1Öæ˜õpä„“¤åTÈc’ý¬˜áxÛ‘MßFÌ®ýýÜ™ðå‘Èïá„Ýún=ƒÔå|ZÖ5?' EDhÛÎï]@¬È"s1D(릉aóè µfî¬R2¹4Ïîî*«c7ˆñ°ev•«,&€æF“k¡ª&šû=X&FQìæíQ¦}qŒ‰K˜Z& oðt?'Y.¢… ÎNd[{$b~Wv ›3]$Œ¿boÆÌÊü°½:/Eð+:þð~ÿ;òÿ|ù÷rcºˆŸe©«FPk-gsæ³ÊCMaH "MfÒÁñ×ûeõ~ÍÀݲq?MAïÞªÏ×ÂpW?òèûϹM_·æ¶m€RJBoF7x7Ÿëߨ!¤âyD7þûœmf–Ê ÏÛ5"** ;¢·®¡ÞÆ $¥L]þn7+SW9KiÇ š’ÇîûÎ3KÅžÆr\û!h—êùÃ5‡èÀ€,|Ø_g)F;#½7ƒØÜzxG‘ä}Ñ Óûæ:°7»ìý´®EþÕÿ{çµ|±hÀW:~úñ/V Vh fJö3‹Ö¥›Q—Žîa¥ŠYs/Ri ¯â‚¥–Ñ03paÖRÌzbj‚$)òHwt4Ü-“ùõœ<Ç‘8wÎý*†Ô ™Âï}1]F#—ƽõn=<–º”RUÕº%  ì åi ÐÝa]L/— óøWab»í×¾mM}“ˆØ·ýúô,"Ñ­ïmh2ŸŒdpׇc TD™‰ ˆê¥¨€ªwÛúÎ, tk,éRDpÛžßÊéäÝ{kEݺ…Ucpª3 [š˜Ìø6B˜;åëæ,/„;ƃ…ˆ*DÀ¬………y°Ä4°÷€ûÄ4…Ç©®˜yë©;óãÃr¹\ˆè£ÿñ“_ª[–Ç/'ЗN¨EïÞI¢wÓ*/εêÞ{a˜™3AÅ•B¸µîr󀨋÷î<èN=ÄF´Ç{¨EaŠ8ÜÞF}ôÖãÆƒ–ÉœÐöÿ1÷®?–Y~ØyEDæ½UÝMÉÙõÈ»‚˰ ­ YÿáüÁ°?ð 2 ù¡µ •ÆËáp8C²›]U73#ÎÃNfvqvµ|Îì‰Fõíî[YyOFœÇïïªÞ‰ N N B# ‡uë«iMC¿–‹'/">|ïþãeûQø_ýóÿò_ýŸÿú;ýqë”fÈÀPÉÔvž[Òëìɇ)Äè=Ð|haÞ§_C 0!F„{ãdóo·$5£ÚÕñÃS]™ö'%<Ý(έu§ÄÀ¡ žÊ7‘ÃÊ€ Lx¡ƒ.…AANóM/†ˆ¥$B‚èjÌ”ì#AÖµ…g@wí‰ sðT[º-7@@Þž=ÔF÷諺Ý<…Ã¥fA"wP7ps6tlÂ8e <ÂÝT¨ëÈRŸ5µÌ·mcæðš*Dĵíêˆt²qv1gÎÑ21ñÞ=p?Æâ9â&dw÷0Ë–esÌüötÛŒ¸`¢O"Bxîï½õã~ûùwÂI˜‚G ¸KªÖ  223×Òµðd=P„wÅB©ò®}Ø!>ìî¡Inž7¨ä,t§NDgx—'Æ£!Ê¿w0cqß »–ðéCó,7$dÀY*øÖà ÌR&:Q­D$ÄìîÃuŒÑZ3³e[Bm˜k@Hdèëöt»EÀÖ7b’"Hèák_¯×k½RšéJ€H\“?BÈÌBt¹\†ÓÿûÃ|ör}×Ê ²Ýêîèn–¼Vz6ª=-àà{Dn“ˆà¡ªžÝr@8´8ýàï}ÐlŽÂN!Ü‹C;(`—u¶Ïfîˆq( a v¦Ò13ªÇ'æuïì‚ 1#€†c8¸¥ø#䯌 „æÄL‚@L]‡…!Ä¡ºl7 dàBù7¹Pi2¬ßÖ§®›…8K)äÑ¿ 5çRUSËS5Ì-YOàêäPˆ+Kaöuùuþ6}÷nG‡¾Þ|^Qä×™%#¢yÒ9@>W hø8¤~v"¨·R¦Z[áK›®u‚cã8›¤­µ_|özë?t„öçþ_%ÈE,°oƒH(FŽãÍM—>l\Út£Çû˵KÙÖõz™QÈmCD¸0 g ZJ­Õ °"“*µ…D4Ä„ÎlÛ–÷—˜çir÷ÞáÊ‚–mÈD? ¦Ž2&/@u¨ê¶Þn·[k­Ií½gEíI•t?YÜ®gí§ºi-\È !\ÚÃã›p@ h,ÛÖu±»v?¶í®N0´1 •jठpõÅ‹R§X+…å¶nÈÜZãBA6T»ª™“Eß¶ÌL@ië[¿­PÀF-EuUAÂ൫d:2µv»=EÄ«W¯Ò×ïp#‹­¯ûo…TÕÌ™ •yçèÅ· Ä©`à(2…›F² ¹Ê6¶‡Û›Ë}ó\Ìô§µîs\¯—ýñ›Ï_?üÀ¨€_þò;o· À¹ñgK1h¸« âRaS]Ýr×2„aB¶m‡^K8…›…™ —ÒŽw~§ Óœ¬f-OCuß›Ýóî?ê¨Ø£6{ø´!‡Ù ¢­¯ ^ñþ&',ûžwìF¹šz€FGDk"RjmË­§“Tx8C€cÊϳ ¦Aª”Ržn+.š{=ˆ±0 3©™m#rš·3ÅntE€fÆD"2M1C^*ï.™·eQ³’Û'í=«žÿ%o€š¢àÎ?FD?ôrÎu¦¾k”#ÓÍbw4w[·5?ŽÖÚõz€RË%U`˜»ùÿð¿ÿå÷ˆ¶¿u}<¹*{fùàá€äˆ@ÈÂà Uœ0˜08{ í…X¤º{jÂd=—¦¾\ÄBŒrFgD< $0e ž³PüºêãµnD’ï0†%»xY–#Ä€ßq»=樉_ÉÆ‹”R3š%Þd—/ž¦2M—ˆÔU'dAN¥:Ž”7LõB–Ô®fdi뺪{¶{¨µ6µv?]àfk¨¡‡öAD€.‘N¬ÎHÄd»ARü†)ú;£ÙÔ:Ûhmjf†D]Gæ`È”ÕóPÍEDˆDMˆSOéè˜=oP2'0â˜ù¡Ù¾)\¯WFikW¢ó‹/?þÕéYkMÁ¼ïºÄ©Ä€‘ f*Â"bÛéLŒÎÀúð:¿8ñÎgôœ9ë±ÏícÛü#<·ç×q€]Xx^eD¤í_8&–<÷éÞ»1s€« ;Û«'æ%R@j¾´“ÉHUáh“MÓ4ÏWfNI†TÀ ÀH:Å1t=2w70IÕœ¼à#g•„z¦‘t˜›kJïAbh°'É'",yíx8¬ï AáS‚˜Í}¨ ìyVú‡Û9cƒÙñîcÚÀϰ ùêߘڞŸr)Ejy»è0ÿŸÿÅÏ¿GxýÝkšÚº~ÏVš 5`HAA°ĺæ§Íˆ„…Ì ³‰¤—ïÞÉʪ_˜ŠÓpÓgL›3OÜÂóéWþöÜzÏž=A(‘šœtm'fÀСëºáårw~6ÏÑù†¹Ç9ÅéÀ !_.wÓ4…ã¶.îA¼ûC‘tpL•‰ÀÃÌ0ÐÅ$"º\.µ”RˆÑ#Ü9@ÐÂÃc'írLÚ¦dg*¥R ÄŽE`B3O)0Æ–pS`J™¿áŽä–Ðrˆ¯Ë¸çïü™nH*­ÚßHJuR‘…Iø;À©¿åú!Q òùë7¯î/Ó$Œ¬ªS­äàC±rqÛPÙ¡\‘Bˆ[k–ª«D¸Û¬[&aÑ{WsFRUcÉ*;?ÚÜù2aØóÚ#ÍÅcΔêng4@bžUÍÝ8ÇcoNض-ª½µ ÀÏ=5Ã7qƒùuîÇæŽH,⻊5àíi è}ä#• &jž`¯Êl¼;µ(!•KeÙ‰¢ú»ìŸ#MµÑ©Ú¢«ªöîî»Dì{µ Wõ!þó?ûO†úë·O·í·_þPpB­õ‡D-pWs #t ç”æSU#ÜÜìv»yhiÅÃÂÁ/S+"¦"*Wje*\Âpª7k¥FìÏîîÀm&"I<Ì»,¥@cYW™/—ì¸Äëu5¦$ÈH ëºn·u[·¾n½§.ìÛ‡'w¼ÞÝqªïí Íìôz„™D]çv m6Â4újEfWtŽ­N­ÈQq›ˆJ H„­½ hÐ¥NS½Ìe~y÷òƒW?™J#¢*E„ê\Jž˜ PëT‹ Ž®>‚`¸n6 ¢‡+‰LMÖåÖ·•Š0!¡™ãýýÝ‹û;"Tµ)åwdbÇñ%HBŒÑ62*-ñOp¤ € æ#‚¸:¦‘wZS©! {„Å_~úúÿúËOþêÓ/>ùìõW˺×oŸ~`ÔÂQÕü%_~ù%šmûðÕû¯^ÜMÈ";ôÒH!×Ñ™ ­w$(RéO:wP€wãJÜ1Y{5yžê³n{žCû×Y:û~@»‚B wÛr«ÂéPŠ` ší˜Àا¯=“8( ˆ¸mÛi{týlï/$¾Í!hÇG “"9°n̉KÝ TäôWë­'˜Á"tX„` ƒð±)zTÞ늜›ÀnKIC"átÚÊÛ•éÎYZøŽœÜ&i‡¡¹¤ìvr,ÿGDH 0Õn><ôÿñ{úÅ{/.¯ßÞ~öÓ÷~ñéP™ý£ŸýG¿üä‡NÛXÐÖ¥wµa>Ô«ìs©lt'ÊdŒñöí[Dd3‡€p'DærôшÝC¤ˆ ࣔwú‡fv¸üù²,p½^é/%v¯Yï´Þ%ÇqÐWÖu½Ýn˲ÌóœiC>Dl昂+Dœô˜dÁQ8š¹s?Œmá Š+M”{¹¶?o{0 ×0ØåÌRÏ Üˆ ‹3ôÀ„`‹ôYMP>æàá®À,¥Tfqü¢ÖVkKÅs"2‡SŸÞ¤nË ÛF¦Â",ÙoØ©%#tH¾ƒíz¬vÞa3ÛzßF`¹ÞÍ?û¦Þ° IDATèå/ýž~Cô·?B÷W¸Íð›¯_?,×öÅú'¼˜Û<ÏÌÄ’Ú÷±õa"ìjv™/Њ ©ê¶ hµeh&d]·RJJÆA§Nl+d K‡ùrægRµ;<«Üa¯föJ›„RnÄçVaŒn£c‘±:UÈqpªÖ›§`¡@Àrë–<9³LñÎ2NU³×¶pyÙÀ„’izÒ*),=K˜,B¤ÔRˆÈ†»Õ1Æh­ìÚÉ®³rö% £ÌL ;ºM 0të!(‚”rÚ‘Ò0ð¶*1ÕZ{¿åt3vøòqâ r39 ¸9‚̾Š˜‡ålQÝÕCÁòM,s4'‚ZðÕ‹–´ /ß<þð€ûxš¿uI©-†.˲zT¦_}úéÛ©^¯×yžçy>â%ÅÒC‰F '7HiŒ£ 3cÛÏIĈ˜¦©”²,Kï}Y–—/_æÍÍÄ)ò¼’…g»sI:ÍYFž0ÎSu¦!ŠP-ì"éFªnf:< ÉÌìññÑ̪ó³yÔZ;¿)%ŒŸžÞ˜chîÊpŽ)½ó;–u 3ä±®jëÖEÊŽòQ3×gJñ‘ýLg$*RJl£«ªrªêtV0d(BB¥€0"¦LÛº­H@·e¹ÔƇ9™Eä³'‡jöˆ=\sžàËô p 't@Ï~¿ç¡C·16"jR'àÛú£¿žæo]’9 ¢ #3š™ªaÓ)  ªDˆÙ(&âuí}[h€w-ÕŒ€1FîšÌ<ÆHÝ—ä*&¯+ßó¬£ã ¢á78û5ôu¶7¼“#ÞóãÖÚÓÓ“»gØ!ë0’=!96TC݇ª.ËFD­p«Å†ž#:D¼\.ùO¦izñâÅ4MB `O¶«o03§mBPŽ-(ç"†›Ye")$¦{¢å@œª±¾ÏˆÈ÷;évM'æ2ˆ õ«9Ý9mW û0…£ÈõúÄ9œŒ¾H TÓßÝÖߨKžð}ÇwžuÙÏ~åºÿí_ý?J´Á÷“ýÍE ÁEX˜ÌF)%{±Òj§:Oej(lÃ"[‰Ë¶Ž¡f»‰ˆÂDåf&…XÐÝ—õvþQþiñóÀ}.lƒ×êÀ1àA€4‡Ó0e„V$˲Vdª%™ªç¾­ãéqy||Ì>õ¿v*/ÑõzÍ+9¿ãù8@"Hæëåîþžk B"©uW§sÓC©®´&µ’p޲2Sî:†úP73O®…& ,õgI"È ‰¤0  Û™¶ïÒÍó†DìúÞ{Nk÷‰7¼ëÅž-ówumœ*~ï÷\9nÌÜ `ÿ)ˆ€Roçáé;‹3ÿ‡ÖŸý³ÿüGy`Yb¨µ©õy~Ù ·’NÂÂÞyl*•kßúˆM 2­ƒ¬Á¥“ÞÖBˆ¥%¨7"Däþþ>;‘9`Ûm#ŽBnÉÛ¶åºcÁö\™¨p#&¤¨¥ ݺ—Š·u)¥’ ‚h¶ žÍD4ÁînUÊ\ "\æWüä7Ÿþúáéa–R ».“ˆ»¡ßæö^©:l-W¼jÇîF?ýðC,\¿üâu_‡ànˆ‰âOýx¢§åц2!‘˜a˜y C ¹ µ`›D¼\¯Û²¼yóz]:q)Ñw:¹Ž#ˆY‚a\î¦"ÞÝŒÀZ!AP@¸­·Z¸J1Ó"W)f®¥´¥oÈ\dô‰–Ûê!N³õÍÝ!…EŒÆ¦Úír½þßÿöãmõåëo+ÆøK¾¾á1 ±0 1#1!2búÅ™*¤\R 5Õ©¶¹¶*òøðhªS©à‰)eËìv𦻻»ˆÈm/±°Äþuµ¶ÜT²E‹v3Öw F¾¾—θ?ÕÍê4y`¸E8¦ ÓT«´ÒÇX—›êË»÷­Ô¿Fzó–/­òôôôt[ïäºú /ÄT¡ÜÝÝ1n¥”ëõJÄæ¾-=¯‰ë\Ûen­­·e]–0ˆÏóÛž:ØLTJ×!¥F [¶ ÒWÂ]åÕ«Wþô£_ÿú××ûº¬›ª–ÂE$ ‚™«¤Z¥•j0ˆdŒÑ»BÄܦ̚^Üßg‰™AÇ= ÷íÓqßq-",ÜÑv—ÈÓ)ÿyößü³?ýÍ—ÿî?Ô›÷îzùå/´g@2eÌv=g "Iꤵ9$-Ç#"ˆ)у sI ?wFÊÖÍI˜¬w<€³ëºNÓt"JÏÔ_ÂŒ`>@'y}ϵw¦ó|>!‹ˆ%" Â" cÉÊ…g,ÃÞ¾}ó“õƒ—/_|°|`fñâîîÖ7Å0ˆa6ÌJ2¸iÌ[Ú¨bi¢Ö{î~¯ó‹Ëåînª•§»)uFžÞ¾yóæz½¾zù’ˆyÓÈŸ¯î~­óË—/벬}“ZrZ.­2Y–•%ïgÊ‚œ0*±Eáê†ÝÕM"«8°JþŒ÷†Háïúâç¯YN€)F˜k€º›'s„¥QiÄe®p7·ÇïËÒ™çéñéǤUŠ2DÄôNÍøˆ=7zް€¤—à¡j¡n1µ&µâ†ôUŒˆyžÍìéé)÷Q>@$™*ä-sDLÁ²¼¸øú²cÀ‘+§ü̇™žï97ÖZ)@UÁÞæ°ˆÔ¨€6¶þæ‹/›”ZëÝÝ] ”©•©•­‘úΘƒì9\¯WrW"‘*¾Áª›™½œß+­‘°!P-…<°wh塯/?úཟ~HDm¾>-7âR^¿~ýô ªó‹»û÷_ùWyªná$<†3zlc ó„éâF˜ä( 0U.¥Õ2ºox½Þ§xúÞ®àw™îé³wÞLÛAg»Üˆ{*m¨›SÚ€î;RäMÿèýûÇO¾OàÖZ—åGh?_ÉÉÞ÷9a˜k›§Öj),GjOÜj­¥¨*¸À~u7ï[D8#NÕUµƒE€KkiÅ‘—PÆ8¨vO P<Î}9ƒ803'žÁw¬Ân…’êŸîº®«ªši­-L¹ O<§ð㉠€ˆ\§Úm¼}úÍö‰sJCàããc•òòþ^ûÖokE58p·Ó4¡°A$2»Í¥›xÐtß°¡ ”Æó|é½›Ii/æ»^ί®r?×"<0oÓôê~ -—IzìRÝ춮˶ݞ–ËtQUW'Tw3aA‚H#J ®„E*É(+€áQ˜y„1qnAY½‚½Ì‹PM¨§…™ûU÷ÈÆüÐÑÝÔà DDf¤ú'}?õ"òý€‹÷Ú™³¶Z˜¹P¶ÿ¼¶&lÏA¹µ`Òˆ1º„‹HÁÖmXX!ÐðZ x¤RìårÉâ}]×§§§išò•óžÂÑ Ëž{êónC„?Üiš–å)›A»^¢k¢Tk)ÅÝuëB£ƒ"ò€*míc«C8‡ŽõåË—Smoo7]·Á¨Š8_.ªºm™w$p7iåŽï#‚„A _^܉ÈgŸ}6|´Ö^üäÕÝû/‰ÈIøÍí-ÕÙÔ°ð?ýÈO=Œe]ÑûŽaúöáÁ†E×BE˜ch!N?4,R¤"•JÓ}k"2 x˜ö§§Ç1órƒÒZËQåÐ}(zäXdïT@ÂŒÜÝÔÜ,Õ#7ík†pš.‚ß›î…äßÿêsû.f‘Eä÷D^ç/ZJ¦ áTé~ò¾q+RK 8b¡ÈãÖGÀXͺ› PîæãŒ­Vºn+3·Ë•X)ÂÝ,½å»l|mMJQë*"9¨Ë ÖJÄ"E¤1cÊ™òij‡Ä2Ôz×uí,u]»»—Â×Ë„L\ «Da(„Ù‰˜¡nÌQ pÄxÚúㆣÇXt]õévÛ–m}{‹e”Õ 6'ç"uíºlcº¾ 6—z¹^_ônë:ˆŠj•1|jáÚ»µz½Ôyy\"à7_|9_®/Þ{ïíããW_½}¼-Œì]^Å›Óc¯›ÍÈ…˜£4ö`ã&õÒÊT¥ÈenóÌn›[Ї‡¯J‘Ëež/3Kñ.üâîŽ!ýÿ 'eÊBî]ÇÚÇÒûmè6Ô¤¶§e©óu¾¾¸õþvÙoC˜§§Ç½0ÐÖW'û'ò“ü³ñÍÛoNXçyÚ~{m.Iˆm"6NÌøYå:“È|QDÜ4g©'1ú8ÐýhbF r=í³–:Ë/3ë[ï}-eï‘ÑaŸ&Ì;*BÉœ Ü.Psæp篹Î+Ï™ñx+ °PÈ‚IXh>a™;Þmë0¬«>8ôe­ó„8Õů׭ÿÓÿì¿xï'ŠÈÇŒA¦ê„ÜÊ4ÕYDÀ“ŸáŒá“pA ·è›Íˆ´õµw½Ýlëµ§H4c–qÊy0‰H)ïäØÞµSüÝðüÑ#íŽÍüœÈ#Ò—(O-ƒNUÉ19O¿R9€FNõÜžž¶®Í꯭ʷçþ>òÚçK„Y»†9#]/—R áÞú>oÄó4to„pJùº…ª™‡° í‚^Šû2ϦÖÚówNfØm¹éèf‘°8]ŽBUÍ¢ì0Å=܇†èÇU™Y’Ù‰y÷{ØéÿÈ»M ²x1ãîfn. OË9~*T{ 1Ò Ã\ÔׯWx,SÝt`K/¾§íý’˺®Ÿþâ“<‘/—Ëãã#t'c^–%ÌWí¶¸;>­ë2ú篿ü坯²‚ûÚGß6Ù¨^ç ‰yžAÏQ°T™æ¹µ&¥ !#E¼¡Ã!1˜ÑYJ)µ¦_g€»‡¹"ö1nÛ–Jkë6îë‘BŒD‚¡}Ý–²rï›PUùø×_ýåÇß`õ½ 9ß!pÓô†1*Ëuº´ÖÐ-ËÏsÇÍk*h»y+ÙÛ›RdéH HÈàfaµÑ‰rúèññ1°[Öº<¸;˜¯Ë]ÇcÛZm`™@¦®K8Ä^K½ÎÌÌ"mš¸B1ìö"|Bïó¸HÒ›™!02Ç0CÝ]É<žn[z? ÚKám¨ùàƒWO©.ü‚%HøçŸ¼ýù·hèþ¾£Ò¼̹Pö :ÄyjŸ-0<¹MA耩)T¸p*Ç»B"¤²¾9ßÓ®éyâ‹HòjTv;u"¢DKfû!(KÏ<’ÎVšœlØg:ÙðÉ¿“%â‰pµn~Z~¤ìSxB‘÷ÎÌi$!“ˆ¡»÷¡hÛJë"„c]Öu}£»ÇI^[>cc}""0oAHs›˜ÈÌŠ00©[!62ŠØå@¨Vafª«œr¦)`Fï= „S 9UûÑÝ{ï=ÅžÁÌÇ<·/ÞöûKýÿÏ_ÿч/ÿù-—˜öVèî2µJµ Ç ‚²‹…D€˜þI"(e˜ºíÂÝAhPÛ„Lë¶õ­CD‰"…4-@=lëjÞ{wS<Ä[mŒB,­]R߀¹ÌucV¤c•FxZDQ˜ &@ˆË\ç©Mí‚ 9h‚|f<žñ4 (°c°»WçHr¬¥3v@1G„›çîVjK)؛߄¥Vf¾=ÝŠ&RÕ<,Ì,ÜYÄ*cŒÿs@AD,P8œ˜¼+‘0\Í-•¹jåÖˆR,SáŽ8(mŒ(Ü B!‚‹ J¡R5 Ô ˆÛº-[æ[î6ÔúPUªžç¢àF®>¬0—"B ÿêÓÇ¿øù¯ïæ¿þí·BüìgôÉ'¿þ½Eì¾ÄFŸæë‹ûËÜ„1Ì:2#%SÔÓTÐÐEŠ´ùÒúè[Ø= ,ùøDä·eYו™“*L¥ƒ@ ÑÑ—õÉÌœ² ŸçK©Dd®€(…OÏÜ’!YÇèèÄTje} W‚äÇŠÔÒÒâËîGVBâ”ÿ àµޣ¹ªê²9¸aÐ;ÝÞƒ#BÂä+ ad–Z0ÑYcÐi_Z$/;Ý]¤ ±¨HX˜!7,ajf%‚}(K! Úxj( "±ƒÅc@#a )ÄÒ{­uw,ÁR‹ ¢¯=0yíCÑR{x e`w)eXz_ÒÔf–Òn#þâç¿€o?éç鵓3"Ú}âàÙïYgì)Z6J)—6mËš#Ä3‘À¤@öeˆ »RJJày¨eÇÀ³oHœÏpPPòÊ27Ø‹åÀaªj)ÈÌèffCOŠ—šÁ _âüÎÏ_—É@"`–dY@݇|›Çî )©È €è &`JKõôZ’TÿŒtK «’;†áq_SÖu¿&bŒ8ÚsÂ\ 3Ã3ÄðÙ?‰zþãŸÂÎï7³RJVÎ@ˆDÉì3w86Ý=•ÂÔ-l/Ç ‰‹Ü,þ—¿ø«ïLÓÔ~¯-°çK˜9k<5#<‹Ú]Ø¡IéÔ ³›Yᯠöô(gØE!܆žñYw›YêQ`Šf¶‰LÃÍ4,Šp)ŽGª’-õ)&»Ð$ìä¶A$|hŸô)›OËNóÊæ " ºZ¤ÁU&ðº¾ÒÈøˆÌ!Í,ˆ³-b汓؄òò4U!"P3´ÝbÄ=Ò¨P#< ` ¥2‰P-\ÄNƒØ³â<º.t ±{¶kö¯OQhÚ5zÍlÓ±l{ÉŸï°,k¸Ÿ>Ñë·ëw’Íóô‹ZišæyÞÝä˜ 1)•ñ#!ÈÁÔth´WNç¬aï­Èê¦ >ƒÈMÓp9U¦iš¦&R¤”¡J‡ èÖ{ˆˆ…¥Ò.ÛŸûŽZøº™Ž1F?,»Ì"̈:bÚ÷ÔCgäÜQv%Œ”·Gd¦,ÀQ³Å  v{XìþªAfèŠ înªÞG¨‚BxìIH‚YˆÅÍÐÌ‚gèî‘°Þœ­#P+ÄDUòÜpø*`tlÃGWèà'g…§Ù0EÇU{˜°Ít˜®Û–÷6"LmdÖgnëè÷õUˆüö«ï@CŸç9 °°%‰ö¿\.—Ë¼Û ¦0èÃÀ¶¾>=µRº§µ™ŸµíŽñÀCÑcYnƒ qhD„eã†EæëÝ<_ò$||È­:»DT=bY×uÛà™v0w57Íã>ɱkl9xX™ï*zx\?=N$L[Š}äPí¦”ðwwðÀF>4yY¥÷á­îé³mqÊ E¨³Cîàºö½-¥ª\÷ðŽ0WL³‘´DÞÈ@Ô8˜ÉöF9ÒIoŽ $& z7ÞÛ?Âc=wc8ºm™y›»íŽŠˆ$¬}l½·*šV™€Èµ<Žøâó7üÌØ«ã?9øÃG-œ9n­µµ1òl GÝD Ï ÕÝu(—ÖãXùFg—7ƒ ÇaÛÔj¦fæ@‰;tÊÌ̘iݶeYf÷RJþózÌØü˜Uî¢Ð‘ð‡Ý¿!€³œ¼ëäÖšYšˆ0s°2°Ò?ž_ü9Ïc–ýOuSFgTÃãP>3Fb´YŒ ”Â3–ºçŽa΀Žäàiøã°7•!ÄHäÀ»àysã]ªr°pˆ ìü\žwÜóÎä†âÙpPµÃaŽz7ï^)p+"sŽÜ+ýüW¯ï¯­TþàýûÏ¿|€¿#jàµÀô“öÓ>|ùòŠL1‘ö wH¡„¸mëº-·¾.}s³™7…ˆZ݇«†vÛÌG {)àààO·¥µ©µ)¦)Gš´,7&˜.mŒíáñí¶­µ•»»+1D:³›+@ˆpÊnߟ–ÛãÔê¥M}]ž¾újb‰1`4\Ì¡÷Ÿ¼ú‚úÒ¨Jc`×®•k¡‚AÌA !D…%%â&"Ab@  'èŠÂØJG”Â,$Re äBµ‹¤™Oz 0‚P!:AȈ ,9ˆ&dâVx.&h4Õ‘aˆ ¹/"™E±‰@» ŒuÛ–uô>µöòþE69˜ùñ¶˜#I*±- ¨‚i! 7ÛÖF6`[X­2ÏÂï¿zùü›Oþä×Cí“ϾÙ{ìg?û㇇¶þ]—4äÈŒQè¬|nó™>óEd r„ËåÒÚôÕm0Ógož~ó-D›ï®—‹µû]—L\*²²CI.â~_÷Ô*ÅDÀl¦ÙgyýåevÅ·oo­µ‰%½¨9@@DÁÜL!{æûYÆÌµÖ1FäýMßgD"W[žn¹[$e(SRJffŒ‡‡w¯ÂÌ|™&ªëm³ñÕÓÃuš=Úf:ÜÎFÛ!ÛŸÆTÚoA6ŽZS÷Â<0Àw?[$Ì1¹EúV :XáN„°»#8"úèûÝ3õ€ËtÞô¤HxRª ÁÞ²ð¯ë÷äŠSÕ:å˜ú¶™ZDääqL¿án3Ï…´ß ×ð>FÎlwã7ˆ³G–! çá™?Q~.c ™¦Ëª°©ÿò7_}›qÃýýÝßK†p®K˜ö7ùjž`p(`º{×-‰ÑZsÚBÏ–`˜ƒäè*ßìôš‹v¨‡8„«&î67aÄV %ï ‘šRDÄ4Mµî6PšðÜîà«ÏߤÛJ*Í[8…ç–ïN[ˆß=‚³/qlr9j{^}¦ÁBd.‡Ø 8"8ø>kF‚ÜÈÁ"²šCÄ÷ØËMtš&Hv¿Ú4M÷÷÷ºvÕ%Ì„°J ÓMGïýr¹´ÖÖu]nO—ËåþåËùýyY–åÍ›`!&ff0W¨µ¢ƒ«ò4YÍWÅŒ˜„Z+fʈRd[¶IJ÷XÖE±Qï½MS¸mk'¢@xýð˜båM‰˜­÷tþI1ï§ÇÇRZ¶ZSž"=¶6 RX$Q/£0ºk9ýn¤“€3®ªAXkÕaë±w¦ÊTç±n½÷£ËŽ IDATê2L»ª2ººõåi}zt÷H§Däûë‹ÖÚǯoÿòß}³èÁr¨ûw¯}ëÉÓG¸Dì¥ý¬‘”™„p÷œa¡ˆ°¡™‡íÄÝk Ÿì¡DTˆ‰ÈÑ9{®^kEBª"\gzÃ÷TŒùúþû)˜÷´÷"ùD2ä§•ã:?”øOV#‹NáØûp@Úáëê¥xç㙆3§ü¢ª"&mÉýìŒ.ÛÚ×™Á}3¯ÄŠ®™á0å†Gièæ#M|Íð"#B¦½¦F!¸wplÙù~g‰ˆˆæz»uwó1ºšÝn7Dœ.³+šKqWÔÇödð&\|ÝFD0b4³<:>{óÍs²?ðP÷ï^r¦üI•ãî!ÙÛL6 b™Š€pddöb·¡îŽÏb¯|pë=…Ï, ᜠäp«µftrÑ"Ë/"º^¯µÖT¬GD9TùψÌÀ–¾,K×þ¼”ÁÃ>7Å«ù5nž—t¶ñónä‹)뢪ON5ŽtÛ¶ÄT b¸s©ÑÇcôPØuÃO¢‡©øL¶c¿9É—Ž`âóõã‰ò3™1³l ¦ÇÌí¶˜ïìÜdî8†ƒS†ç€T@F߀‰jmFÆ"Ÿ~µüê›Úÿ ¢™DÒoÖÍ”ƒÓZžYÈ=yÛV·”¥D&d‹wÌâÑÍÂ( ›šƒ!À¶®{(’/Š%Q‚ugMÕZïïï—ǧԼI±ÇTc@aâ8 ƒ|•nÇHs¯ ˜9=Ýs.xn¨çž}¾â‡•Õ¸g@§Â\<#¬ë:_.Röô±÷nÂ9ÃÃÅ Ì…¸÷ŽÌìæC‡Ù€g¸»ÃHL˜˜¹0ðÐÍ=æ‰sk×C}:/{Û¶m::€nëÍŠ¨ùíé±”Úæ ·MƒHúèÚ•ÀFµ0wbDD–:Í"ò‹/ŸÞ| ¹æPQ ‚D¥”Ôisµ¤- G˜GžÐÈ¥n[Üí}qÜ33`͆ÀÐml‘²¯ÄjªTÊu¾ ¢ª†;"å· " Ð>Æù)Šø¾UoÛv»ÝzïézœÁ!Hóýæ™C'œ Zk{ôNfR…™!"9B§½Y•²Ÿ"˜RhÇzžQd8ž_/º$z. ÁLRK)±mÛ²,·Ûmª30 Ž­7)wóEUo·[‚+ "Ìû¶33µ4#3³,à˜Pæ¹AÄe:F´Þ™u!!³Ž ÌÔ¬›BìR“}SíN0ǰ¡»÷üÝÜ™¶¾P!"BA*øÛ§å“/¾q»ýÙÿô“O?ûñ£ï,9w—ˆ bbsÀ@"7 ð"öRk9q´©âÔ&šiY–T:"$wÛó³ˆÃøª¥´qF=/¡½~»ÝTu[×,5¦Ö2g53ß¶ÍÕò·é‚v"rsÊ!ãm:mp Svá³.)Sg«ŸEÿô0Ãgº¿×ëû¶%)G*…XD„h]V"º¿¿ÿâ‹/öo§"‚}7ÊœŸIžøDl­þ.Gvå{2°ÿ¤®ªÝÌé ô)¡„CÄHássí£»{žvˆµÊ<×i\úû/ç \fú[[ „ø-j!7{•ÀLˆ©¶ˆ‘ÍPp7’ÂR¸¶rõùi{ûzÝÔ’  𠸽÷‡b‘0`˜¢53œ¦‰‘<Õqz¿ÝnD”Ê_ÙBZ—%_,ÈOOÃõ0A?tmU5ñP'-cú]àœùt‚ýžÇÄ™Dž•œ?cbFDîހ‡õt»eÔ–R¦6A"WÜI·n¥V)IƒÉý‰ÚT6$ uw0¥(…ÐÂÃÑ Ý(˜¸Væ5/ S ß ¶<³&ϰ»©Ž1¨6)å¶t'(ÂÐ5s¢ÂjêaLˆR9À¤ò|þúóÇ"t7× …ÿôO?2óß¡žßß]›}ñ?ÿÿÑ‹ë¥Tqre-ÒÙ³UO @î€@6ƒÂàöx›ët)¥‚E˜…©k˜ nÛØ¶^§iëªÃÀcnuôžŠ¢} iuÝ êÔRçX˜l[ tÜÞ¾Š¸ŽY$ÆXŸžÖ‡·ëÃöÀ½»š×:Iiî¦æÄäa˜WŠ€UŠ€´ZZiBLÂ")Í^‰Š kè±ÙBV?gâëîH¨:–å&Âï½z5O“›mË‚U#Ð<†^J#€mY^¼¸Ÿ¦¶¬‹¹¥/Òuº”"®®jót©¥!³ÌóEZs€m ’"µ²š“‹¢š@}[o½¯ :÷§e[ú0ÀËõªjo¾ºLÓ›` õÎèËÖU·¾Ú¶²¹„—ˆ0¿»¾™ÿÛÿõ/?ùíÛ··ñï¹w?ýøå×1¸}øÁë7?š¢í»øÏþôg÷w×}¯Å˜JË-žÑEð³fu²sh’ºaá=|é‚ aW%!„@sgÌ™S¾Ä)z×{€©Mîq»-rLÑ–eÝÖÍsl[ ±$ìaŒ±®ëÖW5•RÆCu¨E1G ‹L­& éí~0 ˆ˜iè0ÝéÍ¥:ißÏýsGß'̇†dÊýæÄß̲uáªëº´Ö>øàƒRŠêHÕ^Î\ âr¹ôÞ_¿~ÍÌÓ͵NÅ,•=Ê<'bô0À]ƒËW;‹}üŽwq:`ÏCåw,AhâchëÚšµî%Ù<êч2I%Q l]Õ¢w Hš’# Nuú÷ñ¶Ñ𳌶ó<}Úc?g 3SξÞHÏ/¢ðãö¿R wvÊ>øžlªîÁ„‘æ¹F‹¤¦ÃàêÛÏî6ëfî} HËáÚtXøs&wªv?È­“md"ʆ(í8ɦÀyÕ©ÔišÔDÍŠHºk˜9)à8v?µ zfø¿}PŸ+¾tõWähõiš–yv)Ó4Íóœ»m×b¯7|{Ÿ–07ëýý}núL @ßõ曨’;ùÂöaC=Yê6l:̃X ÍɃՠ•¡àÁ¼®Ù™+SG„LR£.åºJ‘_1¯ôSX’CaFŒ<¡©ÅU!ÏgÜúùâG$ÚFÛZë½;DÆô„°»º«QB¬PàéñÉ ¦Z‡êP•«Æäf\j?F„9HŽwmÛÎ[Ó€TÙÖ¶æD¡9¸âÂcb @dÉÛ™a -ö|5A(¥,ËÂB ªÂ5?¹Gs·Ý:ù»?/–àzíN‡ÃÝéÄŒXvZ«Ù@ÄZåJâ!Š(Y/g«"k ¾^vö+µÝ¦*ÒtE}­ÛÈ™òmxW7`"9_.ÙEGæ6¬zýtŽˆ‚x^N§¶)ZhDHe®RJýh³ŸïFxx¸ýúWêý–3x¸"!ðmTæù5”o‘ÞKgë´©¹&¶)B -Pˆ»ë“¢¤nävÁ€¬n3ì)Ìë´PvEvR*KÙ.+ # …;V>-÷æ£mãéé‰"ŽÇ»ãñøÑG¯xÇç°Gø°>V!DÂLÚ!ÂeY¦Zc?Úö’èr¹J9¯a*·Æ^¾4ùÈ.3?K|Ï"zxx˜§iŒ sL5&e×ËðŠäSáÝÝݫׯÇwwwÓ2ßœÝpÕÌlš&H«3¡ 2aëè­áЇ¹ÙÚ[€h”³*æayzódmPP±Ð4ÍÇ»ã¥ÛŸ}ëýŸ³î»øþùW»«Ta)(2 sAdwÈ?"€"°wmmH™š{°|üæÍyÛÊ4%À¦Ôêa}tfªSYæ"Ö«[ñ¸_æc­ðpw*D…Š ¹îú©Ö*’·áP„U‡™.˼æ>šˆ,‡»óÓ¶ÅZižCäÍzÙFÆiªLèc0ì÷gf`Ž€Rê¡ÔREš€*ð<I;ÁÖûpãZê4wUb¶=žŒÆ!IÛ+1‹ŽÉÏ#` ȘR"`JâˆH f‡]sîÃŒE¤V‹p5k¦Ye÷Pƒ0ˆ`¾ôRªY¸Ù躮!ÍÓ<ƪ®æ¦æœüF.fŽ"Hå|ÙÌãåý)BÃýþîn>žþòýÿÓ_ÿ@vúó²Ìçóg0=ö[ûhkþ#"2Owxjò9˜Ëw›É “ &C`„ÂLFHà†êˆ´ƒ&ˆ»jW ` B"„ˆÀ½ú¥µmH¨n[omtd:·m„£p– ­µ§§§q UCô°@¶¶á•f^ŠÔ*™Y›ed¦±» K¸ï]b"âüË­‘±Û‰#\ ̹\g*Gy —RÒ¶¼ßDà³~G®¬2öäW"šJq÷1†š½åë\óÞF왦…5Âã6ö“ ÛP0' §>ö<9,ĈÐZ‹°ZeYæïþèÕ÷~ø "?oMÝŸ¿ÞšlÌ ˆðÖcâ· ù¦1!X¨ÏS-ÂÓ4!Ä<Õyªá¦Ì¡àBìîNÓT£†¸b8al®Ûz¾Õ$yÕîà‡å°¹öî#l´õuoiÇÉÚ±›ž×K†"b†WŒm[Ó„^k99ï>ÏSj^´cá<Rf‚$Ë"ݬa{ Ì#ÌUÉ)0Ü2Z,÷÷÷òŸ¿wþEC ÿâÿèëßüÖ¯s§ý#¯gÈïßg§ãºwoV|Î2ŽhyaZæÉÌæyFˆó<ÕZ"Üö~)Ë`Â, ½ÝÏ—@fF"³49Fø‘ö®Ýáx‘ËåRk•R.ëÅá Âf¢J:†%›2s“nª šåi„G`f Yîf¼ŽäÆeæ}”ryˆ n×ô¯å7³–d,p‘ˆHR™y^¼xX#ñÕ0:—걫%iúb$@RÏçs_AÚž ’ㆠ™Ž êBè´Ó³ÍMÍŠfænÆÌ„Qçétøö?þ…»>ú¼6~ÖúÄ(˜D $¡+œ=-´€€9¼ ñ0¹p©ˆ0“2!¢0BÉá("vw룯›»#0³) >LSKÞ÷TÔm»ó>é…\JcôŽ­p¡“” , ‘œ¸âëD$M6)'¥O Y¹ ²ÁõHÛÖÞÎ+"2—`AA0kKl…©9s)%,&’Šìîwó¡ô­YèÄ2¶3Jâ@wÇp @3Ó«'=‘±©»Ý~‹|¤µ»è„ªª»z€xm€™iéØDDôÀ+½±÷žÒ¯…?—Ì –.ĸ–¾fî”Å@.ëê‘Iô”/ÚhMUkx¨Q@ÖÁ¡ UF‰€Bp03DBˆîffèfúb™îN÷Ñ/e3øã?úƒo~ë/»ì×°„rrÕÐ’àV  ÈÚ¯1…„ŒL0WÙ˜ÂÔÝkD`¦Z‹ª©Y8MÚ›° Q¸21©ê°AR,`ÛZk]D#B]<çã«ÔÂÅÀ¤]Ïáª(²—¬ à ®]‡ˆš‘*ö£[)„!œagÓßbåöøhËa6+R™Ü‘xf3j-ÈLD<øÍºm—5Auž'"öÀÌk­kßzïµ7ìÚ°R„÷ÞÐ÷é# h£3í\ÿ"â–DhW7¿¶ˆÕ d×o÷l¬%Hˆ€ÂŒ ‚»“ˆïÜ;@"ˆð_m¡#"Ìw¼xÚôÝ ™ˆ¥o[¦°†ÇÐn"p:NÓ4½>ÿ²) µÖÏ êñ«,ÙIŽèéJ€Ý¨WÆóvh.æÂQkŽ‹@&!IÞ¾Tuw‡0"8ŸÏV*úˆ¡k€IálhÌ“—õÒR~¿Y´à *Í¿´Ö¨HV™0¦‰™S [æ"¶u€©Ô‹­R †«ZɳªµÆN"Òt\¶³«˜/"[ïPA×¡Ú Qï=k¥ÓÝòôô4†1‘j½÷Ñõx<í¾ÀÑ»]=“D„L\ĺã­]LDc I2M–Ñ7xìˆßD'!cx7ϱléå&V‡@`‹uëÉ·Ì2ÃLÝ DhYŽË²|ýo~ø•ë³…zü*KœÐ )S.òu|NYû¹+gÊK1IÊ¥æ{ fî~YßHeÜ"„Ùß¼yƒˆ+ºå £ Ý6 ¾MNE éàÞT’caêác½l7º[0I-Sªiê¤Çì¯:ì´Í*%¶uÝ´/uBdë{•»ÛèÐZ#ˆ"rÙVf:eªþ®æ½õnf>- D$\Û6•ŠˆIDÍ9 { È€XJÙ¶-ããš’]ôÛdÁŽÝøRp á$$ä;¢y§¡cßý0ÌI9J§y®Ót˜ËÏï`ž§ßÐ] ‚oïÌàÇYÞ?¹ƒÃsD‘K©àÀá {,u ’DøÚJòÓ@ĵNfæmëDÉÙ¬éJÌ%fÓßÖm[×5"îîï‰eÚûŸÚÕ,öyÃ?þ˜3/¢ EBG@B,ŒD$‰rQˆËùñræÊ÷§;³pˆu´>DãÓåÇeB¦µµÃa>œŽ¹ë¤—AuÂmÛ,=$D¬­wfž„ëøð—R>ÿKÒ]D€9 ñŒ9+~œÏjfÂ@ÄÙägÍ#3 'H¯C‡íéÈt8{ï Ê¡hîA ζw=4ièdàŽHÌÈLË›§utM2än' º´W¸P­$衽¹ÚÝÝÝ4-Dt>?µ¶dÓaž¦) b„†™zh`8@¢7#–æ:.ë«Åÿê÷߃+,óÏ'sÝš7yú2ºEÆï"ìšr—ÁçêjCk­Edïñ¤ÈÅ$µÕnÀæ¸uíêˆL(€lÚÍÔ#ã‚{W"J)t×ãíjiM1‘˜H¸Œ6Þ¼y=Æڇ˧ZE )XŠ wwusÜCFÓ4ÍÓ4†Ž®×›B»ÙvY’iÝL”1F3í:zïj†„jÖZËÞﺮkoËáàç§óÇ—Z˜Á|®Õ¯(mØá",„„­5Å(SmjëèžY7Ä\K ³­m9mV¦jî„8ͳHyóæµš-ÇCö¶OGwßFwÐ:W`4ïC;3™{w5èm3>F'Â:ÕRËÐñtyzs~ÂB=t¸;‚ÔJRØ"Ê0ŸçƒïÍÖóY‡Ò<-9€aªLän­5 ²óg¾µ ™Ü}Û6&¤Ñ60=Í3Œ¡ëjCµÈ|š–#Ö ej/¾ðÅ_øBfg—Rÿð?~ûÚÛ`ʶYàÞûuˆñ·»§`IDATúûÄŠˆmÒ3Ê{f!d‚DšÍ®i\$eŒa6ˆ1˜qÕÎŒµ0bŽskmC MPÜwb:1„š‡«9³xìxtž—ªàAB,Ä™vÉ=Èë;’ø•N-Ö´.lÛ†\n‘¶p-£ÍÌÄ9®ƒ4µÌ9¼žýätâ¦ù!¥Y¤qûü6 ®i©H˜šê 27'Æî@Pw JùŒÃ$,Ü‚bÇ™1™ƒ:X g«ŒëŽ¢2“R€˜ßùâ—Þ¼~õÕßûÊ×ÿ웟ÖúlÿOÿÝ?$GtÂ@†["ß®D]+‡q´»Ã8(iO>„Û[ws! ›*d–‚{aÞÖ‹a"žju³13¡¡‡«åô0fA¦©V÷L°±yªS­\o)BˆaiwŒ@$裛i\S°öŸÙÑ;!ÙáN…¸·nó4ež«ˆˆÔœé½ÝÀo4+¥Üßß_´·¶‹ ]GR•^?>¶1Ô "Ph/ºòná÷ÖûP5 ð6ÀÜÔm8p8q ·aÃш£,,ešf"v³©”e>„;OÓôͯã³ÚOŸÚâ@Y{&&öD£yõ9š‚ž;5h¿=÷&2$ À­÷Âäî£7w¸¿£ˆW¯^µÖ¦"}]GÛŽó¬æ­…ÜKÕËz™¦é0/»@$…`m«µÑ¶y^„Á(d®R¦ˆè¤û¤`àˆ0sV3ÙƒÆ<ˆØ}díÁ<úp5ë=YBXíuª¨½—‡yéêÏ[ß9þÇv‚vîîîž>jªºm½µæîS]òü¾!K¦i.¥CÀ¸®tØ´Í[sDvä€=yµÝ|ëÁ@D¥D7ÁNŒ" tY»”q”ÊÖ›JIîÐ×ÿ¿?ýLvÒ§¼DˆÐÑ`˜c^ì"ë€È$ž„ê{á> rLEDÊ«„‚eMö)ön…¥ùÃ1œ Nw‡Ëú¤}ƒ°Þ7³±,s¸1F),kXØpÍpÐPÕa²QAÒ4 ŒpØëßÁâÚZ[×ffµVDÀÍF ï®="ÐÉ!†™zVB<åL“P …ª½3óßÿý‡Ÿånú—‚p3€0„€0~_·¯|ÏhÍx: ¢|Ç­¸»N‚@•rãÈæÀ‡iö¡á.Ä ÅÕ´W›–:•jCUõ0/½÷¦[NÚ€@¸ ÓTd5uw)R„·Ö»ºknp<Ü… GŠDxÄ-»Û6ZßÐ !B €ÐN–voº³ ·mˬSÃg™q~z²¡ Æ€æ™Â£Øtm¶ufVdéÞ<â-š×ÌÇØ èp0õÚct°-ÜÃJ uÂp„®nˆÀ¥.Ó\+‹ÔòððÐ[S3‘ú—þ[^ÚÞ– †0ÅTÈ{'‚pP*HAƼܳ6Üv!"À>’–ç â$âª(R »YæÙârYË\Qõòø8Ú†H²cBDX„E^½~íî3@D`D` €ZLS‘…×ÖE†/fµªàîžB3†[@4 m…±¯í« !†»c¤á½ëPæ¯ÏDdCm¨Wƒˆ©V¸Bž‰YÍÎç§œXðaœ JßAû¦Ã|´PÄ©0ÆÓ¶š+MËla][8h€!¡öÞÔuÐ Þ ‚ºŽ,ÇZVé°ðéP^¼¸×1ªðÃÝÑ "þÙ×Wv-H`  ª^C0¨” ¶ÄN‡ÃU ººüá*BijÈ‹‚ÂÙs@ä2‘(˜™ztu&.Âe:,óÖ33•§‡Þ»EXP-uÛ¶14µým]{k‡Ó±‰p O;ÄPmæBa`…kuW@TUuçi™0¼o,lHȤè¾i·ˆBènPK©"a½µišÔ¬^j%&5õˆÖöŠyžÕÜ|ϰ°Àðð®=6P5Pí\«Z:άN²“ ÌXs¬Q,MvÕ«™æe©‡eSíÚ¾4óÝ¡͈ˆ`_x÷å·þâÛÿé›ÿù³ÜJŸîJ® "1ã.ѵ£ˆæN×[°Ô~,‹þ™ïñ=6‡Úu pŒ´˜@¢ iуµK·£ÈËoÞ¼i­ Éݸ\.B „i7bFÜzëÛš‰afCµ¸‹”¼;\{‹ `¤ìíªj¥<׋:jfì LfŒ™ÂA€rQë”|Òd4¹»G"Â5Á6úy½¸{™ªªED)¥ÖªnyŸ»õ¶õLˆØZK [ÚÉ#"ñë×Û5VUæÃ]ÕùÜ7ñÀ—óôå¯~õ|Y?øàƒeY^¼x×yãmÛþÏ?ù÷ŸîÎùŒ×ž‘Ø¥Â²Ž†ˆŽà;7 Žd±«Ù€gÈ–ŸüÖqÍ#b»Ö…Ôˆ¤L•Ì ü ªž;àáå»ež~ðƒ ÑîR%*¥ØžJî€ ¥°)l£{ìŒèˆPµÃa"ˆ­÷¦­÷a†¦Âá Ièa puu‡Ø± fFè(˜žž1†^õàœ-Mÿ€…ç<óP€:Ì ­ó@f1Þ{ÕZ‡yÊÌcXïÊÌ`€ŒdÝ4 ÉÜ»‚š“Ìóèf‡»ã—Þûòãù¬aµÖ‡‡‡üð˜ÙŸþÙ7~ˬ¿pñ¿þ—_Ã+Í%"ú詌óΕ!„[â8í4ôS°YŽA,H Wò§{š¨Ôˆ`ÖâxÌ秇‡—ÓTÕ”‰Ÿžž.— òr: ¡A˜;YVâf—mªeª fùÒ­µ,`FïxÕ÷§Z§Rœ¦Ê‚‘‹°c£ÌÍc 3 œ—¥«ž×ÕØê4¥Î"Ôl¨njŽDE€©éîqÞ¶µ÷ ´/FÏ; õŽˆª¶]ÖˆØÙdáÑÖ¦CQ&@îÍ\#œøpÿ S¹{ñò÷¿öÏ¿øå/±ˆ¤¼øî»ïÞß߯ëúoÿ·÷YlžÏríÔÛBHV­ÎÓ¶m]‡X‘Ü )øBdv8ýxIWfÓm§¦ë‘’†G@ ײ®êeªÇåT'CöW¯e™—»ÓÖ¶µmfV§i ½¿¿'¢ËåÒ[›ýPæéHøæÍ›o•Z×Þ0Åã$!öfQ+1‹ˆ0cZaÀÕ8›%Ã}^$su`)¦d9­Ï;÷ nÊ×'!pµªÜ,&{ͳ Iú¼Ýleöâð+ú¥õlfÂ3—R™yY–1F_·fX!F˜°öÑ¥Ò‰˜¤÷@W¸m¨u+"Ó<ê$½§òøÌ"¤©ö¡D„Ì“#´pF`€ÓáȨl[GÔ1FRôR¾€»¥žŒáæêî„…90{Éæn Šqã-»GÊÞÓ²‡÷~ï÷²{<͇¯|å+—u557 ‚w¾ø…ùx€?ù¿?¥ò9[òx¹ÐñT™ ¤Î¨c ‹lñRüøŸŸ*"ij¤»[k4[¿Ä×¼ûœ[ *Ñ)…ýDõ[nÕ nó Jâm[Á±ºik}žçižu¨¹£H”hd€€ÐL]d™&)m3Ì8vD´[ ßuH)AÞÍ‘È8J®½×y[ëµ »ohf"$ò68Ã̸”ŠàcŒP¿ÿäîÚMÍc°D€S]-wm­Óñx÷ðððÎËw…ëziO/ßygYŽ àz|<žNþ›FªûG\2ÔÏë…™a¯R%øù+® S·¯wg ®µ©»çôa–N” Ÿ%£OÓ4z¿œ/ùO)Su÷`á¢#ùŠîŽP€`'ÊÌìpb 0Ó«6Ç…™ K²Wg]3W5q¹q1€„)i4,ŒLn#˜8Ü=݉„àíL^vþòCxû$¸ûÆÝ«ífæûˆ>„Cmtë"R—åx<ïîîæù0/‡mÛ.—K)õp<‰ÔRpÛ¶­7µ_Ÿó[¼d>Ǻn ¦R‰)€¹¹YÞU¥$Iv$äOz~‚L oñОöSĽˆ Ò2Àu·/¡+s³”2ÏËÓãSî),Ö¥Naîl鯭ÄàábƒU ‚@ˆê>;‰û„ë“Ý„Ãá0Æ>ökvI*1™# ¡1â"äHä…Ò‘n„ë ›¢‘Y ‚‚C¸C8î·¿» ÇNŠ–Ãt:ï_¾x÷å‹—‡ÃqZD\·~¹¬Ä²çÎÓ¶=~÷oþöSÚ&Ÿ¿%ÿÍ?ù'?üÁ.—G2eη”8‡d’·ðüO–¹»-áÙºI`Ïe²ç§/ìJFDiŒˆ<\3;Ñ̇!^.—ãñx:^¿zµËjÌàcø°eše (€SHkMÔ—i1Ux2„F‚ÄRÌÁ˜˜X˜Y …–l4àuèÜ®9jYŸ°#0hv¦ ÞT• ­m-u™¸š)ïhÚZc*7çîc cfU'ôì˜ï/ÑÊ·;'‰a +§zÿððâîTýp8M³¯[#³h­éýËIÇùÝ\rxùÞW§‡W}øÁ´î/!r`í>:…1´.4‘T†0x–8 ×f/]ÎÙôZæN ¦DEQu˜öðe4â`7¦r7ZëøÎ¿ô¸n—ÇG?ЫóGÄÛ8OÓô0-ñøúCZ„ýÒžD óÜ=°N:@ð$ÌTˆ¢µuôsÔªè:LÁ!(ˆ?ÈøOSƘ™É·1ÆJÔ£Îóì—>"(‰%œ GØè=ÆÝq!’§õÂ"9ßÕÖ­ «•bÃ…s ØrDÍ"¨²á©×ó›°R¬ÛÓñáˆÖ¶×Zëtœ£9Þ¿øþßÿð~.ïï¿|ÆÛç³[òòå˧RZ[ÛñÍGo=ö¸#at3+üVîÝ‹ŸøFÏ71\àÈXöë³ouB^ý#ÂãX‰ä-j@PDj­Ã%¯Üôz`#"‡ÑUUD–eÁŒ Â·ez¶ ܽžÂ>3£YÄr@¸Yz ˆ‰Lûc)¥Œk.¬™Ef™k "z(¸_ìwww9’CA YÃi*afnjšÓç¡À2Ís!~÷åý4Í˲LÓ´®ë©Ö ¥Úë¥"I½¿¿ÿøã­;ãs¾äx:¹ûzwo€}ë½]8Á˜D*ªö6,™žÀ–&ÇŸ\Ï \ºÆ:óýš_–ªY gj¡`„$à×\J Õ|¿Ý§óE§iÒÝö‚8ÈÞ}÷ÝÑíÍ›7î^k©“»“îêræd °§Š˜ÆÛ¥Ä{í{B#Ì K)¥êÖ ÒQÎÌŠ! ˜ˆ A˜y^"æê»IãšM@œS%·_¿ÜÜÃᎠs©µÖû» ‡»‡ûÇK€/^¤Ä²C ðþxúwÿöÿ46ÈçuÉ«§3 =¼óÎátWëôæƒmoÞ<>½.§ib„°€ D‚ˆŒMùi;žao |<—β €^O§:—L ØI{"¢f±ˆ.:¶Óòrkë弦v‘¶îÃáôÌÀÔMvØ7¦‚Qkݵ–R8•TDd&‰·_)ežkžÍ9ýîq&fÅpf^N‹ã”Ùç°Ÿ \Š@Êjæðâ£õÇ˹õ9]bE˜@¦R–Ræy.¥,ÇS)åt:•>]ÓÜ·m½\ÎDÈ,wÇ»$ŒüÎ.Y[?˲¨êp_–ùéÃWþ¯¯_75B‘‚°ã?ˆÐ>y[pSžÿÓ¼¦ˆÛ ̳çH)<ÕÌÁƒÉ„ˆ(6ÌEêÖ&ÂEê¶m)òç·º»»3³§§§ÜÌ®–î´ :B>¿L×u…< \U5‚áz<ä×NÓ„îc(#¡! ‹×*îî‰ÿ)ÌÇã|i˜¹H~ÿ§mݶmgŠe›c ff¡‘…Eb”GB0/ËÌeªõþxXŽ$Y–¥÷¾®ëË—ïR)ßÿþ÷k­ó<×Zb]/ÖÏ þ·ßýÝ•@yë™§iªó¢/ß!ÁŽñôêƒÊ|¨%âªXE+?ý¸ýÉÇq[Ø ‰+~í¹>˜˜Ü H‰pÄ`¦¹–ᣔ"\ ‰2àîL|8±÷HŒäî ±£Bq÷%ìáÑ ªYè׋{^Æ•YDÀÈÁ@ˆ}vL’2 # ¥Mþ6ÈND߆ˆ ¤a€}ø MHvÔÜLª”ÂÂÄ‚$ÄAÄDó<§Gâôð€ˆiÓ¹»;-Ë᛭뺹ýÎkž/"âóùòôô„ˆËáËáôÎ;_˜æCë:†fŠï[I ‘~Z…{ë‡}âÁçψ[‹õmÿì €<‰)O@ÊžVV)^ŠÈ<Ïó<ßZ©ÙÎHº ^ÔxEJæ¸Øí˜¿}ŸŒ(ƒ= @n=‘ü!]…E®z3gˆK¸ï>4 °išv@Sïm "Ê‹xþšÌœiëºö¾ERØÐ†ó\Ka"WóÃa>Y×¾~ýúÍ›7/_¾Läù ŒÞ¿÷½ïýãn…߬%Dr<Þ1~øÃŽÇÃáÝSß.ã+ÿì¿åJ¯ôw¯Î绹Z9"JæôìÉMpÛ¾‰ .qKo€ÞǸ -îϯBŒ„f¾ê0')ËìŒs‘4׉òºmàýt÷òpz1¶–5ëT‹™õˆÂ@¢ªîêµ QmcÖ®fà6ŒÄ™ƒ¢.¸—×è`T'Ö­B‚Afv:Þ%&‚XXh3…ˆ1áþúõk 8Îdñ&FÕ™\"ÂlOdÇBS™Â…î_ÜËTé8Ÿ__–épd}¼z|}8NË\™¶Ëå1×é4/õ§yE~§ÿ›ÿåßìYŠÌfJŒÇåÀ…Ýü½/¿w<ú­5u`Lc¸AzwT]£ýö³”p¯ðvv}â$¾—ûmbæƒ2Å•vs¸„¹‰!¦€PXòšÄÏiš„–Ã\kL ²”išîîîNww"²m›yˆš%À>• 1Þ“JDw°>ÐC2 ¹Öê$L¨niâ¬"Ú»›M¥NµªªÑ[oT&EÑbOÅ*S!¦eYæÃ¼§ÓI©Ó¤îdžêaYއ×Oç¶:B™'@l[“RîïïÿÃøÓ¿úö_&;æs²ävefwƒ "a*Hµ¾øÂèý¿ý·?üáÄòb9Q©çóùpZv—í )˜áõÆ ÓUsûÏnÈç–†ìVìN†"û#™#AûÇ€|ç`@r7èz#•*3×ZtŒ¼¸R²’vˆk­‡ÃAªÀØ@lۖѾÀœm¿Ì«²D¢PG´·ñ¼^¨pÍ96$Z «*a!Z¦UF[‰@„湺» OÎ$”i¿q43bæ2I­È"`9ë<­m í§Ói¾;¾~ýúÒ6`z¸¿³e`’òÉ,Ûßµµ‡@R·ˆ·mCÄÂ"e^·^jy÷½¯’È0ÝÏçaRCæ%2ã÷fHˆ —‹ˆøœ‡×çÜÄÝç.“…çÍ쀜x&Bˆ}H˜™AâjØX{‡gR±»ß*×ü<¤ˆUuY–—ˆèuÛug9Y:¯ëš¨ñœa´=Õ"‡Û4Ïéø1³Ã4Í¥^Ú³C™2$bŒ±,Kôé-~Ý1R¼ ØT¤”RJÉ^; ×Z—y~Z/ëº2ó´LÇã1 ‡Ãa®Óº®Û¶ýù·~“’ÎkOOÏ·ˆ´Û-æi:·õÒÿÿò®mGr"†Ú®rU*Ìô\BìâsàÏ$öCV€ÄE‹X–ÞžítªReóà¤gàñÄ"ðDQä¸NÛ爀£ûgÆ!½üþÇ—?ýðêp|ÿþV@P…-ÃPP6µ€m·æðÊ­nwÍB"rÖß7á1B›¦•‹¼ˆwv¯r!¬ª¦ÿŒOY¶­s‡íèUÎV‘ì–—%ç<ôBï™.ï³þ¢µ¶¢Ðš¸Š¢žTµ¨¹ê9×Ê¡9G¨èZÎe>Ò0X¤Öë«íp¨•—ºhsW/e)%+ºÔ÷ý®gîœsÎGBL]ÏÄi?Œ±U­Ó¼ß GQ•¥’©‰¶úW¦:ÿ‡ðj4Ðþú¶Ö:çÙyö7KOoÛÏžÝÝÞÝÜî¿{ñâ×Ãáúª÷«êÝ k/bHæð ðÇÉK¦?Iíâ–ÚÞÆ A·šmbºþ DÆ4£½~ýš»I™D£QÚænçV*£j­pΪZk!‚”âS$cD³‹‘k­¥fåà܆¦°ëºãáP¦sJ EòÃiqš§)ƈڤ–*ÒjÙ ©ëÓ4Q)eÇýÕÍþ——?3©¢ÀSJÎ{Ú–óœ÷ÌaÜ uÎýn‡±”òêÍoiGïý›Ãa™æýxõÞÝý7ßþgõCÿf¸Ï>ÿ´¶Bä¥.ÇéRâO§É“ëBŒ¤Jk-v©K»SÎçéx|ËÜ9ŽÐˆ‘A…˜•´ASTç ‚š½âŠk½]󛀰4Ð* f¬g†a8XTQD‰¿,ÆYŸÖy¯Hbtì‘;tБcç‘kMr.óy^Ê‚€]à ¶¥sèb8v)ÚÉ£äù˜†M³Ì¾ƒë!(u)u)9#ûñzßc©U‘BìºÔW×ó9[ šÈ‰ÈÐÞûRJefŽ1¦Ý\êÛ9_ßÞM¥výðÑÇŸ¸˜(tÇé\›rèæ¹Ô*ÒÉ‹âñát*KSxþõów9ï8¼ z­‹xÇÎAΙ¶íšœÅÕZAÑûÀ1ÞÜÝŸ§Ó›¥•Öp.Á;“çF»Qm&{öôK%¶x:º°Tx¤zd­Í+ëh‰®MLáÁ«£o•4Å”R® LäËhÔ6lp>ŸmnS ¼ˆèлH]ê{1×l ‡ãƒáfvÞ3 JQUhâŠSE„=Û|ŒnriJëМŠXº ˆˆgöÎ!* "¯«—5õ»²´ÚÊR³hM)Îólý6ï‰Ù5Y¾úò‹&9þÍñ;ßðÏiŸUDRIEND®B`‚xmorph-20140707+nmu2/example/AD/image2.png.mesh0000664000000000000000000001055212356304632015575 0ustar M2 19 19 0 0 0 155 0 0 319 0 0 493 0 0 679 0 0 872 0 0 1069 0 0 1269 0 0 1467 0 0 1658 0 0 1840 0 0 2013 0 0 2176 0 0 2330 0 0 2474 0 0 2611 0 0 2740 0 0 2866 0 0 2990 0 0 0 267 0 156 266 0 318 260 0 493 248 0 679 231 0 873 214 0 1072 199 0 1272 190 0 1469 189 0 1659 196 0 1840 209 0 2013 225 0 2175 239 0 2329 251 0 2472 259 0 2608 262 0 2737 261 0 2864 260 0 2990 259 0 0 526 0 158 524 0 320 516 0 493 496 0 679 464 0 878 426 0 1082 394 0 1282 379 0 1475 381 0 1660 396 0 1840 419 0 2013 448 0 2175 478 0 2325 503 0 2465 516 0 2598 520 0 2729 518 0 2859 515 0 2990 514 0 0 769 0 166 767 0 331 760 0 499 741 0 680 700 0 886 633 0 1097 584 0 1299 566 0 1481 578 0 1658 603 0 1840 628 0 2012 662 0 2174 717 0 2318 753 0 2451 768 0 2582 770 0 2715 766 0 2852 761 0 2990 759 0 0 991 0 183 990 0 358 984 0 522 970 0 687 937 2 900 830 2 1114 780 0 1320 760 2 1487 783 0 1650 820 2 1845 842 2 2005 862 2 2173 959 2 2302 994 0 2428 1007 0 2560 1008 0 2700 1002 0 2844 996 0 2990 993 0 0 1195 0 209 1192 0 403 1183 0 570 1163 0 734 1119 0 921 1050 0 1120 1001 0 1314 981 0 1491 994 0 1662 1024 0 1837 1056 0 1999 1098 0 2147 1162 0 2275 1206 0 2397 1227 0 2537 1230 0 2686 1224 0 2837 1218 0 2990 1216 0 0 1380 0 235 1376 0 457 1365 2 614 1340 0 768 1302 0 936 1259 0 1120 1223 0 1309 1205 0 1491 1212 0 1666 1237 0 1833 1272 0 1990 1316 0 2131 1360 0 2256 1399 0 2373 1429 2 2523 1434 0 2677 1433 0 2832 1431 0 2990 1431 0 0 1551 0 253 1548 0 466 1538 0 624 1518 0 770 1487 0 935 1455 0 1120 1431 0 1309 1424 0 1487 1432 0 1658 1454 0 1824 1485 0 1984 1518 0 2129 1547 0 2262 1577 0 2394 1605 2 2526 1619 0 2673 1632 0 2829 1641 0 2990 1645 0 0 1717 0 293 1715 0 490 1710 0 617 1699 0 738 1677 0 919 1634 0 1120 1620 0 1309 1641 0 1475 1652 0 1639 1671 0 1809 1695 0 1983 1699 0 2138 1717 0 2275 1749 0 2394 1768 0 2525 1798 0 2671 1830 0 2828 1854 0 2990 1862 0 0 1890 0 357 1888 2 527 1884 0 622 1878 0 700 1870 4 910 1800 4 1120 1790 4 1290 1860 4 1447 1872 0 1616 1884 0 1790 1898 5 1980 1850 5 2144 1868 5 2289 1939 5 2384 1938 2 2520 1990 0 2670 2041 0 2827 2074 0 2990 2086 0 0 2077 0 328 2076 0 534 2070 0 664 2051 0 790 2010 4 920 1990 4 1095 1998 4 1200 2020 4 1410 2109 0 1609 2118 0 1790 2030 5 1940 1990 5 2130 2030 5 2272 2112 0 2391 2167 0 2521 2222 0 2667 2271 0 2826 2303 0 2990 2315 0 0 2284 0 322 2284 2 527 2281 0 674 2268 0 798 2247 0 910 2243 0 1039 2263 0 1188 2324 0 1404 2440 3 1613 2455 0 1781 2366 0 1939 2291 0 2101 2293 0 2245 2350 0 2380 2420 2 2513 2475 0 2662 2515 0 2823 2539 0 2990 2546 0 0 2521 0 288 2518 2 493 2528 0 648 2528 0 769 2526 0 876 2538 0 996 2568 0 1160 2630 3 1360 2810 3 1630 2820 3 1780 2710 3 1940 2612 0 2079 2596 0 2210 2636 0 2344 2691 2 2492 2739 0 2651 2763 0 2818 2773 0 2990 2776 0 0 2798 0 239 2803 0 443 2813 0 604 2808 0 731 2810 0 841 2839 0 960 2900 1 1141 2954 0 1359 3000 1 1595 3008 1 1820 2920 1 1941 2899 0 2053 2897 0 2175 2933 0 2309 3003 2 2468 3004 0 2638 3002 0 2813 3000 0 2990 3000 0 0 3078 0 205 3087 0 397 3106 2 561 3077 0 700 3072 0 827 3107 0 965 3174 0 1136 3248 0 1338 3316 1 1580 3320 1 1770 3232 0 1899 3188 0 2011 3176 0 2144 3183 2 2289 3220 0 2452 3229 0 2627 3224 0 2807 3218 0 2990 3216 0 0 3337 0 184 3337 0 363 3330 0 530 3305 0 683 3298 0 826 3339 0 975 3410 0 1144 3485 0 1335 3536 0 1538 3537 0 1711 3493 0 1845 3452 0 1960 3433 2 2112 3420 0 2273 3424 0 2442 3428 0 2620 3427 0 2803 3423 0 2990 3422 0 0 3569 0 172 3563 0 344 3545 0 513 3519 0 677 3503 2 827 3551 0 982 3617 0 1147 3678 0 1325 3715 0 1509 3713 0 1671 3692 0 1812 3665 0 1947 3643 0 2099 3628 0 2263 3620 0 2435 3619 0 2615 3619 0 2801 3618 0 2990 3618 0 0 3783 0 167 3778 0 334 3764 0 502 3749 0 667 3745 0 826 3769 0 983 3807 0 1143 3844 0 1310 3870 2 1500 3860 2 1655 3850 0 1799 3837 0 1944 3824 0 2095 3814 0 2258 3808 0 2431 3805 0 2612 3805 0 2799 3805 0 2990 3806 0 0 3990 0 165 3990 0 331 3990 0 499 3990 0 664 3990 0 825 3990 0 983 3989 0 1142 3989 0 1310 3989 0 1490 3989 0 1649 3989 0 1796 3990 0 1943 3990 0 2095 3990 0 2257 3990 0 2430 3990 0 2611 3990 0 2799 3990 0 2990 3990 0 226 321 12 28 207 276 80.310000 152.200000 150.690000 152.200000 115.500000 248.800000 image2.png 300 400 mouth outline nose right eye left eye xmorph-20140707+nmu2/example/AD/image2.png0000664000000000000000000023760212356304632014651 0ustar ‰PNG  IHDRâAåätbKGDùC» pHYs  ÒÝ~ütIMEÓ öª¢ IDATxœì½[¥Iv¶ö%"¾ïœÌʺt÷ôsãÅ3°(š†aØ2à?æg?øÉ?À€†a@¶zl 2 L™6%š¦Œ!9]·<狈}ñCœlÂaÎ¥†]=ÓY…DU"ÏwÙ±c_ÖZAÿõõ_&‰ÿþþ£ðÿÑ_¼ÉL|cߨWjßúì“ßÿ½ýþßùáýý”·øÇÿäŸþýÿîxûöÝ7>ú} öãÿÅÿøx™cþ§ÿÉxw>1€ù¿ÿÿÍû¾ñÑoìã±/ÿÓ?ûçÿó?ûç×£ã¿øÏÿ³?ø÷~ˆ¾ê ûˆŒˆ¾y ‰©ê¾ÿýÿëÿö‡ÿò>ò8J"™¿ÔKÝ÷íûßÿîù¼_ÞǸ^®ïÞ½¿\®á$@ùƒúÕ33ûWÿúOõÿðŽ£Õó×¢úüáþ³O_<~¹^¿øâíåÒÇœf˜)"c|úíßþþßû{ÿAÝʛׯüã?ÿöíÑŸiï/>ÝÌlúãå8Žñ‹Ö7öÓ›þ«ý§_õ5üõFDßýηøÃï?»ß#¼Ñ6®L¤ª¸{ ³ªþÙÿó“?þã3§ý"Ÿxww~¸?¿}ý“Þû»·o/ï‹Èó¶ñYçó‡ŒÈÈ1Ž¿üâýŸþÙŸ1?Ô~c£Éó#ÜÈZ«ÿñôðïÿH$_¿}óþòxÇÑq=Ò<‘éîð~¹ÜJF¾¿ôŸû^JÑïþæçÏîÚãÛwÇûG?†?;ßm­‰ˆMŸGÏ›³ª¸ûµ˜øýý4&á³Þ¶öû÷ßùüó¯_ñÅ_þäÍë×Çå2Ž>û ÷BÄäÎrO !¦ÈS-„¼v‹ø™ïHU?yõp×úõ¢$ˆH­uß÷R‹ªÚ´Ù'%(óîtÚ·6úèÓ>§÷+iòU_À¿mµ–þîw_>ß_ñÅ»×oŽË5úˆaÞgN“$Í´>lZD˜'@¢Zk‘»½¶Ú‡Ÿe÷ß¶úé'Ï_½¸£p%¾;Ÿk­µVVn§ýÙó‡WŸ~’Çñ†ØïNõùÃyßÊykŽ>Üã—ö0¾±›}\nÊÌÿî~ðéó»7ùÅõÝû3¦ ±0#“AÌR·½»%‘–JÌDÄÌD”™"²U½?·ûs‹HóXÑî¯í-•¢wŸ¾zþòÅýóó¾×ÂDçý´~a)ETS¥»½~ÿ¶_߈°–RjÛö³Ö¶íûVk) 2ügáߨOoúU_À_ýî÷ã{Ÿ½|ý“ŸôË%<˜ˆ<Ę˜‹4V–VjkR€ˆÌ9Ý="V9UU0Ÿ{ÓßþÍWcÌin@ï6æœëc˜è|~ñüátÚÎm{ÿöíq½†QUÝÛá!"Täz\’I„·mo$!,ítÊÉhÛøÖ§¯ÎÛöîñr¹öcŒ÷×aþsdߨÿ¿}DnºoõÙ³öã?ÿq?záBHxBÀ*$¢ª¥Õ¶oæ“Q‰©h9ßß»û4;ŽHGzFî&ÂD Ä©”»½F„G$RKAÌ{eA\¯½ý¸¢µMK+z>?<×ËõѯùìÙ3Rf‘V[DÆæa‘­5i—tߪ9½ºßIhN»öñ—oÞ¿¿ŒcL³ø&yý ö±¸)Îí:ÜYU´THT"ˆ$ ëÌœ È,ÂûùÀÌ’ÈŒ@ÐvÚ#™ì3‚“2!iucâËåòæýûˆ}áåÃs'¡{óú‹Ëõòâ“W/žõÑ9|²E×뜓Ã+!ö&’*¨³g¸G8$ëÝvªr½ï/ýÝu^‡ÍŒHd²ðVkkÕ<Þ½üƉJûXÜ´½;Õn£ˆJ)´¾aa&Íp3³݉™¤$¡A— ›Yd”R""Ç•rÌ94ÇÞÌ]lĉ³º%CÌacÎqw­i•i6§Í9¦M ·ZOÛf6lö4 À-àƒ|ú$…™á&Œ­jaXc„вv÷éËçcÌë1ûèæsFµ•óùîþþ|>Ÿ»ù?ý_þÅG;[ù¨ìc)¡ž?œ_½º¿\Ñ"¢ $àæÎÌB@ÜÒ™ÁEµhd¸»™ED+µh%P20Ã=3ÜÙœ™‰Ì•dô9»­Y–Õý´O›^[5¡ÂµÕÌÈ aÎÌ £ 9³Š"#æ¤Èô@f"§Í’%€²µV1W-§­Ýoõî¼?;mÏïï^¼x¨EUõù‹‡ýðw¾xýæýûËWýø?vû(ÜT„?}õ¬jé×ÙJÖчG˜ÍËõZ„s·‰±xúyߊð<Žãýãq½QÕÈðˆ@š;EÂ<¦#’ •DÀÃç˜ÎD J¢Œt˜ÉÍÆ­6Ž Gâèƒb§m¿»»câd9æ  l;—r“j… 'ò8®Qk+Z©¥¶mkûN*A fsÏŒï~ç[çóùõ›wf¿ÐíWÛ> 7=ŸÚ³»-"o{Ý™`Ä 7«ZXtD΀%Ê`äq½^.}z¤Z’ˆ˜@ gFF0+ÿcм™Mó19’"9LRDT‹Š›Ùûy×V1ݯ£?‡… Ï "*¥´mï®×î>=¸T^¿ìf¾ – Ëd©U÷ÂAdésÎq½úèÏNíóo}r=ÆqüüS´_mûêÝT„_=?ÕZ‘Ù´©–< &–Œ1Ç3#2WÀL³È³ºGŸÓÝ“@" †æáHË 7³Ìt3xH<2s†o{yõüyQ}ûæµj9Î" ðèö4Vµˆé>=fäõz¼}ÿþèýèÃÜû°ãèî6®æ 0‘23‘™#3IÌE„"棳»Ûp›sŒÓV÷·¾·µv¹c~ƒø·í+vS&º;•ûÓFôaFkË6w‹›Sz¬ Ê ñˆÞ»¨2«hÉ„¹Ÿ, B ‰93fútŸ¥¹›Û ªA˜.ä„ض¶•‘Ç¥ݶí¤ÚÃŽ>ÍsŽiGŸÓ¼Ñ¯} swsÚLO!†‡]‰)Ì¢‰Ha΄"ç°p‡Çƒ€ûóéÛŸúâÙ¹Õ2Ìæ˜ßÄÕ/í«tS"œZyqÞˆ^.WˆHTU 3‰ªˆdxffFD0eÂ-‰‹{j©$JL‘©¥XX?@dÆè¶6wòð`æ$ò÷È̈dbáâ–Çuöc ×¢›H™Ã.×cNËÀ4{¼G·Þmôiæá°é6ŒA6çq9€L Ü)Ðû p sƒ»2)víÑgzÀSˆÝìz½Ž>8ŽˆO^>ÿü³W$|ÃÜ¿ÂôñØWæ¦Ü·O^Ýïçmu ÊV·ÓÎ$¥”Zk­¥Ö `ô!Â¥f^¸h$Z;3€K-]GW•ŽLÒƒÉîé!ÄEEVË7“@¡Z¹†eæÖ縇Ýïöû‡Ó‹çç.×þÍXë+sÓçïüæKbҢĀ™¹{xd¦?môsŒÑ{Qݶ¦ªá€@R ±:á»úôt7£ÊL€›»ù4wÏÈtaÓ#<‚™3 E `2ƒ2E¨¨dÄœý8®ˆŒ1GD(32Ù‘>Ç$3G33óJ|YÄÝ-<‘Àú“E´µvÞ÷RKdF†‡ƒ¸îMj `š9¥EXFÝš–2dz{ÕmÛ1Í~­ÃêWà¦ÌôÉ«ûï~çÕ¶Õ1æbE¤›ã˜ÓÜ}Îifîffn³ÕºŸöRŠ›O VåÖ.n–>m†;E(Q!NOa椅¢òHÏ4÷1æ´HP&˜e-èÖ§ÊHgdaa·y=®‰$‰ÂBi&L*3oµZÄ—ß ¢@N·…wY”LÌí˜cz@¥í§dcý˜acŽdd„±eš¹™°¶VA4íçÁ(þjØß¶›Ö"ßýΫï}çeÓ"$H(‹²VQ%q÷0÷H[uÅ*õaéIÄýÚ3“ãÚ}t²©Ud+EˆcNšsxd‚‚Å<‡Y­8êž±ü7€$G b=ºé™DÄýÓÌ"," dæŠku-8UD¬ëŒˆ9ç“›NÀ™6Ç4ëcŽ˜=l¦‡°*S:#´ò19g·¡,6͆¹ùœ6¦÷1¨¥ÔºÆñkسúÛsS"´*?øÍ—¿ûÝO[m ‹9fºsB™8]3YÂ,¬"k3aev›>g„Ûᎊ)J©ÌUKUE†G ŸæaVíæP&ˆ E¢2÷Ã,˜ šÄ ZŽ éÓ3‚) –nX£'è´VK)üdçóùö(EVº¢ÄõTe¦Op-\Ѝ‚©´FLO3bˆ–~ôãèJ¢¬>}N3ïcDf‚€Pe-„_COý[rSfº?µïþìÕý."*Š2+¬-xFdd’1 !™©¨ÕXµH†0‹ˆ ‚D`&b$¥Eb˜u›R «\Çè‹EC7_8jf0{Þ*(ˆ9ÃHDd`ý Qd ˜™…˜ÓÖšªÒ-6ç—‹ÈBÖRZj»öqéƒUµ”¤dæmk§óyßwÕÂD>Í"ÜYŽ£Sƒ…™Dœ‰ažDLlî!Jª¼m¥m5þkÓø¥»)Õ"Ÿ½8ýàÛ{+–næ`SzÜ ¢‰[Ù´Ê âO^˜Ëégd![ÑVËÖJºA„À””«ÜYÎwôžHæ ˜ á‘IÂiîÉ`ab޵\˜N+ÅêwrDf$3ˆH„•ˆ„hÛš¬H¬]>#„Y‰˜2Ãm &MМ3ÂE¤µÊÄæÆÌ­µLª¥Ýï"ãr¹X8“Øp"b°Š‚˜˜ÃÃ"´V¹{d²0©È~ª¯^>\¯}Î_ Oý%º)µÈ«»öýÏž}ö°3sR1‡û³÷îî™éÓl̹úæ.LEkËu›é¤˜I˜™‰…Xr ºDL@)ÅF¢Ì˜½«hÙ÷™~‡#¸HdL¸e$+N¦fádJe)ÌJ ‹ ¨JbâV[Õ"ETXI‘1g¸…MyclñÉL - ‹·}ór½Ža"……Þ½g#„@eÍL!apfš9µ¨ÍéfEU™­Ïp¯¥œZmM/×n¿,—_–›nUãåÝ÷>yøüŹª0-6 KQEbÎ9çc&Sä-ˆz&ˆDxkå|>­MXV !*¥0“‡$€XÉ«»#@,ˆÈ#Ý#2ÛÝÉà݆ŗ5‰°$„¨²TâF\˜”I@…X‰ )Â…‰ð"¼m-¦#AD£c˜>#“˜¶};O÷ÏîÛÖ„¨)EkŽcL€Ü£Ùûxÿx9Fj&ÒSX2YWÂTDÒ=<©ÌJÀ‚4(©²žZ½þð±>¼›Šð§ûo¾:þòÙÝi ±°¨²‘­Ve1w3j±d®¾!‰EdkußöpÏÌÖ*×ëE rX'""^Mr&ÉDD ºõ›öX-X€9rÁN‘ ¨p!.Ì•XʬÌE…2 Ó‘~¤J/ åZJf2¨ÕR[cš›Gôq<5¡ ªÛÞöÓ©nMŠ* %˜™hÝÇmî…ˆŒ …ç˜=ö‰L¶ˆjÕµ,U¥¶ÊÌ(3"” D0Q2‘ -2̵cêvÓ»sûþ·_|úü´ÕJªZjf³Š01á®E‰ØÂÝ<×8ˆ‰EÁ”DLÂ"…•£OaiµŽqÌ9™%3=ŒÀD@BHVšèž &°¯l’8"3!¬Óg.O".DB, Î,"E á69¥jiu„¡¨#!,*”TKiª'd+¥µzy¼˜3{ø^HDÚÞTuNŸÓcÞÚ±,ª%"Âf/*a‘R¹ ‰˜‘ND¥h­€mÛv§ÊL(Ì;g —ÂÂAĵU0ÿ‚j³}H7Ýš~÷Û/N{!QiU·æ™‹¤§›‰L77÷L8‰‚`QaUÙ·F w›sÌ9ÍmŒžeX ¦Lb""‰È9=ÜÍæEBX ,ªDtôƒ‰ˆP¥VmÊkGåvw¢¢Y˜÷ªÛv:ß³œïÎ¥T-¬”±ânSÝZF¸™«ÖÖX9È[—…=âz—ËåzÇå˜}8¸ÜÝ?Hi” ¢UE™ˆ iÓTE„͆‡‹23ÕóùôêÕ‹W¯^ˆ0 iÕcô3˜"#˜SˆT—RjåùQŠƒüâö!I&ÏÎÛ¾U‘*T“9"J© f"Xf@kD‚µ‘RÑP¤¹…»& +!%Â2#8ÂçSDVßÇÝ&p8<ÓF/Å2iNgbG¸»haÖ„)ƒ4f ajLdfÓ2RI3À¶ïIH–vÚJR4®ÁR©#S“¶Öj+îvŒCU,@)Õà W]¯¹¦ óŒÑiN=3³Õ:z¿× °z+_""KQfa:·Ïž=»QÞOͼȣºI@áÈ¢ëèÉ¢RdoR›T¡/Þ<þê }Èhúì~¸ÛD¢$’Ä Fä´ˆ™>#2á}Œa3ªRJ Ê P2À‰Èº%[‹5_JÉÌ9 ¸EЈÈð›J^‚E‚p’¸*š%PÚÎZ"ã°>Ã’’„Uë‹,H _¯Ç›·oÃ3<çèˆPâ"Â#‰ÓÃÌ͘›Ñù´o[c¦Õ«÷ÎÞÝæ°9ˆ3AÓç~:ÕVE$Ü‘î*RªH­EŠ€!*",* "–HxRŸqL³TòHŸ_¶‘)¼†[æÁ¤¥TXå´o­–RJQMsJÚJ!I2XTZe‚2±»R¶RÜ][5àêñîè—>…˜,È£’4UòÈðV ñj”P"!b?IúŠ,4„¥ÖÂÄnsÎILžÉ¢I˜æIä.e¦Ñ9©_¯ïÞ¼½¾}îH¤UV%@…|tF*ÃÜ’¸V}ùòåÿü'êå~åö!£é«çÏN§F”È0›6g¸R…(p^ÿç¡Ä‰ðtË 7ÒÜŽÙ á€e:oí2qŒ—éðˆ=# É`å Ïpe¢ #¤S¦¯Á½²dkíþ´7Ñ*º•’–EJÓBQBÌ !>*C3U83X¥í{ï߇µäMôTk¡ n¥¨ˆÏ)‰BÜD(QD˜‰×FïNÀR§Ú¶íų‡Ó^G?†y©ÍÌ÷Ö¶Öxu!XNµJ;µmo›@¸¼¯¢E´ÕZK%"RåûûÓ¶ÖUÒçœßþü[Ÿ¼zùgÿæÇðý~…ö!Ýô³W϶"k§[|#d0‘ @EÉ Éµ=¦Ïy=®6G¤1‘u{|{<¾½=Žn+÷ãXîÈLæL¹´[s&š°!“ Bò´ÏÊÊbW^QEöÖ DaE‚3ŠÊ¶5fJdRFF¦0ÍÌ­¶š‘¢ZJ–Ëå",¥d6–ªÚjeæÌ¨¥ì­ExŒ!@QætWÕ…:L³¨”RNmÛZÛö¦ª¥Ve{a®ªLÈp&¨°ª K˜ÞûqDÂŒ(—¾Ë‚!2©J"IY«–²yÄåxüíßþÞ'Ÿ~ú'òÀWüUÙsSaþô“gEYˆ(#|ÁŒ fZ|¦¢ÊDðd^ckNf.U·Út•ó ¼!DG˜¥{ºÏ12CUÝMkY#~d* ŒªÂ&(3“¬Itæn=TelUiÎB´-ÊußëÖ´Ö`̰@$efˆJF.ôt-…™O§Sx<>>¶RUÕ̶Rk)Z‹¨°r«uÛš›ù˜bÊœn) O˜YXx]6RU™¡ÂÂBÈ£‰0d´RŠ*Èff‘ÄŽ5}"Ï0w0‰*(§Mó˜Ìõt÷ððâ!—Ë#3ÿÞïý _˜úÁÜô´•çwÛb ñ¢"‘ÈH–™™$Îj,ËdN-¨²ïû³»»óùÔCKÁÊ$"Àül[›s$R˜„Ðj@37‘S)›–B”Ê¢ªL¢"*ÒjU)" "£06åºÍÃl»»{xù¢N¶ÐŸÀ°AŒmß‘HV±1‰éîþî“//×Ëè½µ™±Ÿöàt«ªUÕ9çÚ>&¹QPÕÈôH"”²"#Åm`ká6g’™TY8U)ÂÜG"‰iøôðd!—VµÕÓù´ïÛBÃÔÚji½Ïr‡'™f6£»{ïÇw¾ý­¿øË7_oÅŠæ¦÷U9 ‹0«Š¨²*J“¶î#ÁµYÒÑRSJˆÐVÊVk+ªªÄlˆz’ X¹TåB)Ë&¥²–“Ö»¶Ê"=µý¼íE‹0ßß?«µ´ÖTËB€xLKN¨ö°nÎ¥ìçó1Çë7o.‘ásp¦=æBz<<{öüùóÖê»7oÝLŠÎ9p¢‘°È9çr\÷¸^.ÓfÊÌ¥(‹ÚÕ¶úüáA‹"}5D˜˜Æ<áéI§-¦Íi.ÌLw"ÿjjÚ§Y+;aðÖ8”(ªÂÌ"­µºï¢eoMKiû^k­¥ÔÖJk¥VfYXR€ ðŒ`D"’#sN[9ß#lI¤çt äâXè“W¯îÎçˆxýþÝ1úÌt ‰23§M›ÃÆXgGÌÞca ™ˆDTdõJÑÓ©åRG·éëƒcŽ˜fÓ3˜•¸%<Ý›„ëcƒoàÚˆ!‘ ,¥¨ècŒa™œIn>ÇM«ðw~ðƒ?þXYøiìøéý¹}úü¼m­j%¢$ZpÍiv“³0OŠÄ“ôRaedšÛt_œËLšaŽÔ­BØÃ9Á EZkEUTÎçó¶mD¤EE¤”Â*Ää‘¢ –@nÆ-àÓ<D4ç<.—Ù»»‡™ÏÜt HEüz­Ê/_½ÜO{ïÞ¿?ŽƒÄ‹‘B9mÎÞÀⲺ‰pQVBº;ª…EJ)*ÌÌ ³§SQÂÃ-Ü{­÷»9ûoµòj$2$JBkW!"wsw(AÂkJwέòÑÌ"ü87¿¿?GÐë7o?ÈëþÛ·0,­E¾õònßê…›‡»ÒÝç1ÜÃÝWtEBEj-EŠÍ‘+ظÏL³13-Ò‘sºjIâ“@…‰2’˜…%" `R!]¨hÌ9.ïÄ}Z$S„GˆÆDI0Qä‚cOJfaNd>FÌiD×ë 9çår™sj)$|köû Ÿ*|Ú6UQ \T%ö@"<’„”UD@iý·aedG0IÛïýtŒîÇõqú$€E”ìóðܼÕR[©£_=À,Óãq\3Ò„´! !òL3{÷þÝÿõgºíµÖò5£~7}¸kç­"–Ó<#cÍ0Í&’Š–mÛ2Â-‹jQ%!mŒXǵ¶1»Edf³$&: æAycB²/&§p ÷}o­U• Ìð>:ÖÞ׈ƘžX%e¢E¬ó0@ ðq\c$Ì—Ø3ÜÝÝ rÎ1§õÞ—›òÓ:b]„ïîÎçm#€3‚a6Ó3AÉ$ÎÔÇ޲5N‚y›äûi³ð4¨‚)YGzö£Ïa>#}õ:¼÷­m*š ›Ó-ª° µµM8ʵô—à‚»ƒ „$Xx:àŒÈ%³ßDȬ 5“|óŸuØsˆræl[))Û¾íçSfÇá·³B€L(ž`Â)O^ôezrJ0GæaƉ%ÚG axyåMϲUbésÀ$ÌKC )“Zm”BX뙢$ BæˆX€|p&Ó¾ïYkmû6g¬)ÆÓàJ˜yii-]ë %°ú_&¦KhŒ1ç¼ùt’'ˆòš’0gæ‚GâkEœúÙÜT„?ÿüÅÃC;ú ÀçØ¶‚Fïˆ/Å•°VÿM8·þÎzv·š¡@`¢as\{+ækˆµúÙ†Ìpæ­×]šÖbfA)*‰ÌDmXÜòzfwsD—ã°ä…¥DR|‘­— êây"2V – Ê:¹×̦yÀ´èSRª–:Ýçåºh€«]0úP'bdUefÕRHá°s:e©¥ÑZ¨fF$Zê~º[y‹DQÕµÂoú+zúžX@ܲ£õ«ÜýV? ßßÇè}ŒHR)æ÷¼•’ë0‹Ð:àý—âS¿û*}fúÎw>}x¾­"`9b¥Dš3¨pbñä¿<`d‘’A- Ì @O"BJÌ6fº1fD«ÍéOäe€ éKv¤hi­±¨¨Šs<^®f NÏi1-Ì#âÆuöi> + ‘$àët’ÀRu-Ê @¢UDƒØ|‘šhùÜÒÒ!¦ˆœKÛ/Ã=!ÌMÊ^êiÛŠ”»íÜTŸ‚lLïsŒÌ,µîÛ^êÖ§}°H‚J©™Xƒ°>ÇZÏxÂöY}É ¦dG‹†@¾áÂ,rS àüóÕe`^Kt¡eñõáLÿ´nJ„oöüÓOïDZ0fœH÷µ_ órÙ9 D Å~íÃZÊP¬JOM%É\D¯—«ª¬&ëÓŽŒVš)E(±EDU7Õê‘BR®G_ãÏ9Ç´9#¦ÏÛ.ÉÂ¹Ê ¡>—›.= ÄzßI„ˆ—†Y §‡E€¨hÑRTWøÏ9FD@ d"©Eµj­¥e†§Yγ°a3m;•REË’C[|’¸e4Í#små_ú%žv!¼öé̇òÅlf2$sM<€{ûïé#4}é°ÎäD.ÅwbJÀÆ×fßÿi7ý‡ûóï|ÿ³÷—+ÌÉ—RÌ ëc;g„{ئ©ªù  ¦Å§#¢ˆ´9#³jVŠ ”* Ѹ1Š˜9Ö¹7­m¼ÆÖÄIb>D!”çí†R}ì6ú`a•jÜ}Lf ­>€¥cB‘qÛóFCB”ÄŽXî‘ ·%,™©¬áž Ê`a"fJaÉd_³õ Œ˜ói°pD®††G$QÛ÷¶ŸÜýr¹à©B"b]›|F¨ê¶í…/Þ½óH †°$ž+Åò "J¦9("W7`I¶›?©h¬…ú”àf‹l{›}Žþõhõÿ´ÑôG¿õ­°y\K7>à.,Êœ7 òÌ\MôŒÃƵw)Ê"7á;`eZ±òsø»¬8J­¶§1Ò:ÊÄ$Ek)*"Bð93|IK-¤báÇœïfaó03ÏœæÉœy“›82צS3ò¦>}Ó3#¢$¬RŠV!¥5ž7[ˆæ¢ZU—(’Œ¥2Ùû¸ö~}Ló€%"1-Ãs˜iGïK3Õ=TKÞ¶«Û¬KN-`—DJiMKe‘u^/1Ï1})æ:ÚzQ™ˆW¥™@$Ö1-K²:žÎk]Ù–›1¥À‘a–_‹VÿOM?yqΜoÞ]cš¬îûÒuX½Ð§5Xe“§ò\… °4ÍLX–î„ù˜*ý8Z­áÎëQûÌ a©*ÄD”Ë/GxŸcÌY3¸»»ðxôa^÷‘×1Ü=E–Œ­hM¢Û[ÌÛ«Æ’0_÷&€EcÅâʼ‰^a±E=ÃQˆŠêV‹0e¦2RJE+ˆæœsN˜–”PIfdbÎpï²Àx‹M ¶‘²J®¶‡Ï",ªs2‰5Ú¶øíõ„lì³»™³Ç¢®üèK-lQP¦¤aF¬Œ[•¾2É —Êq| <õovSfúÖ«ýz½¦ÇB*­'¢U*=Þxñ~ˆ‘§¶yñŒ¤DÓBž˜ÎDKWŸŽÍµ¥™^ªjáã`ba–>AœÄZjÙ7)Õ#ÆaÝc˜;fdréD4Ö™¥R,-—$°ÄÊ3#V"LÈõ•+ ¥[,ZGJ¬©)nÐD”‰ŒZBè`d-Eµj­%ÝK¤œöŽH³ÅFÆBÓe"‚’"Í,„ÂDI†¹Gï%;A¥)³j0T„@‘™Ì‰pb•¢ ÄœO(^ÉDf-eIM1ñuôÌ$Qâ躵_@bF’EP[1ÿ$©ó¦ÿÙË{å˜c¬ƒŽÂ«ý.‚¥™¿=bÝ’6æVªŠ*˜#7­acR¦›%åàð‚¬daFD‹‰qôùvl)±m›n;‰Xæµ÷1gÜ´ŸIˆãio‹\uÕg·óBÖä!  Äô[×ö–U<©’ßZOnº4ªÈʨ*÷w'%jµÖ¢Hg¢½Õv:;ɘqôy\‡{ –M‹€Ü<#H´ê¶H&.e‰[ déÓ ,ÄÌÄ·®D)¥”UÎicÎH²• 3«…ey4`#>—Ê‘ÂBDö$ € O#10sD2Qcz$h½DÿØêßMEøå³­IÆ’ w‰ÕêSÕ¥a’ u¿(g„œ*ËiÛÍüry\r3ŒŠÈY§{"˜Dˆ#ý6.GÎiÏéQ’Á)5€:dÁ™Ãž•‹”me…‹›ERz½g„ÍL³ÁDµêXòàI™üe±:£«³äôoÜð(+¸ -aup:m÷wçÙ;3 S0Eb0|{]d½ì33¡ ¡ˆ( ""E@œ”IÉZŒàKQ×të(SÏÌk3„EHJ)>=cç}kóÿeîÝz$I’s±Ï.î‘YÕ3³ËÃPÔt$Q"úÿ?Dô.^wfº+3ÂÝ.z°Èš!µ¤ôÂÙ ,½½]ÝYY–îfŸ}—ù<D󛊠˜Ûã<˜Y•Uú&ùöñá &PwÊ eõXQ@œLÚuÖæSÿe:”‡à6FWÍ̯_¿ò`Òë«„¹àúçy%Këk.aVj ¤Š£õ¾+Úéª&‚ ­õ@ö1Î9ÁÄ$B 1§xZ×ÈÌù8AÄTõãxFG˜Ùœ3ÒÓȈ0weÊ1´Ï®bä,ÃÅ×ój°q±æ~ù5•w0ÆÖ»$¨,ûžÇáz<í&òŒE B2ZïIH „¡­5ÏÇcÍ¥ª£ Ÿæ51ž‡›9 LœL¢éÒN”C%U"Ú]BMMÍ–™ÛZ§¨¶Eªêc´v”H8CÊôý2}©Ï¡¶d²Ç£±ÜïÛ·o¾|”¯L‰ð¶ »¥‹%2BEµI$ÌÝ݉ٓ2‰¥' ­mûmßA šÇ²Œ¢¯'ÁÓ=œ®®6‚]„}]7¯»e‚ˆYšydÔdCéæçjš™Ï¹jó6¶él<‹Aµž‰Ìòª"¼p ~•&Ef™ÈLðEc%ЧmƒóN‹Ã¤Ù—•x&‘Q#ËÌÌ„„‰ÁafÖÖ´é2C­P0$ò²Î\AA̯Íg‚‚9(æqŽ1ÈÉÜ õ™âJa-Žs9Ÿ¦»%‹S€RA‚W˜Á:]’åÉ%‚p d¸[±A„…FÞnÛ<ç¾u_öüsŧþ½2Uæ÷!™á¶,gFhkÝ"‘psŠÔÖ‰™ìÚ—4‘±ïb@@aa¹vGÇqpÙ’EÀƒùÕ™YÌ–ô1+<%Ü—ysVåÏ󤇓ÓÅÒÈ´Ò¿ƒ<Ó3}<‰9¯&³ÒuqIÿpaì™YMmub¤»+ó&¢œ`a‘Ò¦zÆZ–"˜fQæÔphµëªªZ†Ò›^KX÷d²txPB FzQýLIt¸íÛ^â-d^Ÿ%·WÁ_£¸—“†;˜’°ÌÒCUݬiËððõéàU÷ˆPª¾è„{»Gæ—/7ûñÛŸ§™ÿ¿7Bí›þÅ÷›ƒÎ¤™t¦œíã<ŽÚ#÷ÞU„Xê½+¶DÑRÑçq”=IdöÞûhnM[z*Z>¼ žk%8ÝaN”NˆÈÜ÷]šæe _fµ·ê| iÉd¢ê–=°–e¡…D ²Y˜)¢«èeÄLû¶¥2GkDäîj*,B,`ž‘ÏeçòÃìyÎã¨9åUq+RøSdFعÒ#ÍÁ‘AHäºÚå '+#˜(_ za©5)®ÍžQÙ·½nž{eTW™©@Ìæ^’‰êØ6—¡¶g:]4Ø‹|ÃLÕ̶1XÕÂDxNû3ìQÿÍ2%Âû}ÜîLkÛè‚—•^ÃÇ\¶Ö*.ií< øøøxžÇ\¥ôuQÙ·-<2\™(ŒId¤å5éç9+‚¸|¥° û­˜ós­âˆ€ðÚ&f1ˆ#3#̓X¯ã–¯êd«X‚MËÑ'©¯Z:ºòò¨µ–ñ\ë1ç²°„´N¬…Ï»‘Trƒ3ÈæòµÂŒÒ(Ã9\"”ˆ˜¦@EX(ÀiUØÚk¡ÑU{kñyd¾x}î.Ì,<ÆÖTUõþöÞÇVïR•q­Þ‘ëÈ%´ÞÇs-e È Àˆ—ƒ<”Y%žå$„™ÙŸÝ®ÿß,Ó¦üÃûFé\ eï-#ˆ ,>9f J .<"Úöýv»1™ûy9®M˜‰„p›ñ:*˜aŠðó8ÙTˆ¹Lj]A ™0³ã<óuÆÅÍj(33=#^Œ5ªª«½8@¢NM|®4k¢bæQ4Ó« Ðd^§Ù9/rBuÏáY_ªª½© 8=ÖŒXD Î2ºª¥ZåEdq½ÎzfeVy'…Ÿ|BbŸàX©_ÊWš‰Tñöý»%J·î ”åe^ ÜÚ%5QqÁûEÉ(/X¢drddgŠuúŸÛúo–éû}|wŒÌÈÞ´‰öÖ!”Ü£xÕÝ3KÕ(½½½ßîw},BBà"NyqVü3*ëG €”™á^¾ææî颪MHxlÛÇãɬ5ÔjûÙ¨U·IATŒOQŇ¾0¨ D»x-™Må×%þÙ§¾¢àå^ÇDIªð¢Ä'³sú,|+ &aR}1d©ttyÑòUX„¯ÕBuMe2QýÒe‰x‹«Rë#Ééë|ª$sJÓ±í%._s¹_[ f¹h“¸®øKaø:•?U_åsQa‚Y ÝÕ…›ùúóªÓ?^¦*ü»ûvß´±PâívkMT¥·Vˆ{ ´Jå(&ÜF#"iºï›È%#>ç)L£w^sFX7Â#²Lz¨Þ_*}¹5aáç|𙍲…qï›H[fž)Úˆ¸JQY‘”LàZnÓu’Õ/P.¸@µ@—pý_tݹË3×µ)Ì˽Â#k YÃW„õÆ¢Ô„» G¸U Žp '“exF½€¢“dæh£·.,*ÊÌB¼mÛ6Fï#3í‚ÒH*´_þ†&LÕŸˆHë#<ˆɶVz¤»Í¹æZç‘sÎNFæœs~²"_¡×¾ôóÛOPBÀlÙ [Û›öÊ4þ êïÿçóGÊ”ˆ¾Ûûoƒ‘D½÷ÞÍÍÝ·}óŒ÷[ N›Ò1·^¦ÔZMßn·0ûøö³™»››¹/ G/]Që¯æK€Ñ”€@2sk­ä£"Ðñ\½Ýúv£ÞÏê k9P*‰i"I  ÄLWSJ”— 3ÁÜâÒøƒ´ÌHT/0_¤81eYrÛ3­cQ¾îŒÊô !SoÒ„ÜÌ3’)8²’«kN¯Ï9Ü•E˜›vW+‘ôîD©š"§Ùif‘ÌÉœª²m{ßz æ4s‹¶ˆ¤@‘T´Ö:ó8Of‰ˆzXaÓÖt ¤òec¡B”.ŒºÁ„JÚzi #RU™è8æŸàÿGÊô}¿ßßöQ“Dï…Ì}yX²[ø=ó\MŠ+¤éQv¸±ÖhÊ”nË"çí«d™¸ˆ¤eÎÆH„ c³5Ù¶Ñ{ˆ5=óÕ0H¬×ß FY Í=¼6“¸Ta™Bܤ5‘"–2‘¨€5UƒhfWüx” ÇÌêB1Ç›h‰vÌclÛœ+6!Nøóø`æe³"pIB‘qž3Aau f–pÏå ´ê8Ú”TÁDÌ+Š2|rL†7F&EÙù2áéH”IòÊ»ÏÏôQVvOuÆ(‰n}ƒM{¿¿"‚‰ÒCYîÛžV;Qé¥KHDe:”•’€¢Ã wýU ºØu$‹Ë]Îéż$"÷H`Û¶5Ïb–!®Ã§~ÜõÖÛ'Y²ç„<¤E F#JB1-ø±¦U±3_LÍtF¢zGâºé™è~¿UÈS>Žc>ÏŒ¼þÌëæÞûè½ |êü+ÉÝ3‚2•¥õÖ¥…0—5iáÕjm*Ñ €ˆTîõo‰\(˜~U¯‘ JV¦Æ©ä”Δ"×—\4só mí\k™=çzÏd‹+#…DT ŽÈD/þbcZ¸GöÖÊÊ=Â3ÒÝ M™ùx<ÿöù›¿û‡üSh=ú¿þÍ_ÿõ_ýç÷/÷sεl- ómì­ÖÑ­µLP-MÖª@­ˆevÚʾõëüº"QwÜ%*aV ¿´¼ª­6ÌD`–e*¯í4ˆ™Fkiñê“^’"FÚaÇØo)të“2•XˆˆÉ®®”.¾¸ G^^þi+ÂK_UƒT¾þ*3c¦Ñ{ƒåJ™Àl yÔΆQÓ¨tiZwzAôªsÒ+*"Êà祧k)znu¶†0vÇ\ùR8–”êóH»~A”‰çqþøóÏBÜ[ÆX¶À²-™O7ƒ1-ƒGÝþ,[æÞ¥| ó<¾!‡¬+’‘Ì”™ÌPÿá¿þ—ÿãÿü¿Î9ÿ$Zþíÿôßì÷7‹øéë XÄ6ö*mÛÞ¶ýÇv› ¦ RJN(˜ø/¾ÿ]fœëÈåDùx<ܽ÷QC‚ˆ¶ÖçœsY.$¸¢ÌÞîwÀ0;OÊd¦Œ%!f‘¦íýýmÍk,ÎÌå½w7Z±iæé±õNLnN,DÊD$‰¢šdE$‹/§QúÖ[‚{Ó¦¾Ä}>¾v¡ßÿýrûˆœiˆ0€¤)ÒÚ±fIh®ãH”ÝL/x‹Ë¸u5šdfÍ¢P(©d-áUv"œ˜Åš5ÔPõzêg&"îN‰} ‘6Ÿ§€t×1Ʀc>—cz¢5]¶à®ÊÏÈ[¶ªô¥ØjÕ~˜Y-FÓÆœá aÛ;S|ùòöÿø§L™’ÿýûï2éXó§¯ßŽ5×4U­hämloïï3üÇŸO›)ÄÂþR Ýöû—/_n·]U¿}|ûé§[kD´m[¸¯å½÷mÛ_½ jº¨dcôÛ~cÁ·Ÿ~^sŠ65&n­B¡nû6FD„!S*ŒH…[Ó²Ì åVKölÌ»¶®²o­ ¶1nû¶þ<7&Dùû>:çûm •ÆØz½Upãï~÷ûßýîwqmí åî$BMH„U¢š ^’xꪶ¢¾;UmýZ,…;%6–]uSUD£Ü»Ž®½]=в4Ѳ‹¡¸¶˜ñ 5Å' qÁi—tBD˜d[®\ÏÉA%aÃÓ`§ÄT_±3W–!ë}4³rXù\ÌŠ\^ÇÂôjªRD´µÓ΄üá?ý ËTëÞYsÅšüøhk޶+))µÞ×Z_þyçrkmÛ˜Å×áÛ¾1êÝÐZ»Ýnf– qUºn¥çqÖp­5§íˈú=<&^Ýaq2Jž,,਽|µÌhM"“¥“šˆG–½‚ºJ×& ÓæZ™füJ»‘Dé–|ˆm&ÜZSVѹg˜ëÐû~Ûûøà21#w §‚rž9´yevQò,n^t31+³dÂV¸¯j$,ÚˆÈl©ðÅ ]Ž@€]@WM«Õ©jöéWb˜‹œ™‰yÌ åŸæóŸÏ—œ$ #ãëë8<®¿áµv÷âëÐÕLC”×q¢æ|$%ê­ûÃ?ÿáËù ™ýiÊ´;ÜVÎy'8s0»/–ÞÆØ÷}®õõÛÇœ+j”™iÁIûØïûMDÌ–™õÖE°mÛóù|<ž™ ”µ2sŒ!ÚÌ£ÂÍãñ<ŠVQ«g"Η%jäfd¸S&³@2½|œ¹ø¼->¡K"¤³H&ó¦­÷†æI‘îXÓ3µø, "áË¿rp×â¶àœV”¥¦@@£µh™©I¦¨ˆˆeX5 ™‰Ò]2ßU¶¦"<ç\–AY&B¦ÚJ:— xX:XÐXa‘Æ¡—/nføèšÁé@cÝ·ÑÇvÛöûýY*øü8ÎÇqˆˆßo·_ÓºÆw·á"rQ D"2z¯ )3’`soJmµ‰X$‰–Ù9§Txk#=ܽZR£ëZ73+Ô® ¢äˆŒ5‹Q…È0/û,0M_F¡£ÛF?ýœéµed”)…ƒˆSy¥•1Õ…¨­5Éãéç¹Úؘ1§ik¯¥æ\DôÿÝßSÈŸðÞW/)H¤…g¦‡/_Múifžeè±D†È¦ª,æÖ´ÁŽÖ¸mí#l©D ‹×ž HÉá+§«"Cå—ùW^x@f¸¾Ä€’{QœˆÚÅ8‡–sR¢·Æ5 ·Þµµúa(ÒÑZë86½¦heAŠ…{oíýýmÛ·}—Þ/.;€DD4áѹ÷öx<’Œ˜´õ‚FïK—rAþÜG#Ћ­³ÈuYaÂ8Mµ÷–‰¢ÞŽÞÝLDúèNBç4£Z+Ï5# ã<Ï53Ó#U°Á"kIÜ·mÜj㜑k­u½ Ý.ëS_‹‰Tõûm<ŸÏsÁÂÚÎÌp÷(Ë4çÃ"þtÀjú|N‹²!0#ˆ˜¸1C•,Šô„{@õÃß›Ûq”F™÷·»YÌŒÞYôããc®Õ{ë}¤Äå±õÛ–©=g¸cæ% jÜZ¦˜ µ}ÛðÓÇ·XÕÂÓf¡?ž>mQ‘Á#mÙZnH.n>.×¢ÁÌP‹Ä ['Ò{×d¢DÄ\+Fïûm¯]³Œ†%Ú¶mÞÆý~ãòõ]ëxcŒ}ßA4׬’=æ/3;Î%ák×ö~cæKÏ¥ÐÐÖZï=#Ü—²0‹hæ`Ù,þÓZK¸1z Bx,Neà¼÷Þ?O±¶z ªÒ¦^&¯<¶±©Š™Ef—˾}û†ˆùýýK¾|ÓÍÌÃ/Úr€iÞˆÈÂúúóãx’‡FêBtu8]?žk{"2sdr¢ÚzÄ‚ÖA„ð¹Ì<å2াÿøà²¨.¦'ˆœ‰zï äfó<7m»¶Ùô8¦ÿÆ•ªBrجs® {bâ0J³¬xÁµ†¹@uÊð˜]*­iSΈ QÕò`RÑÞ‰df¦$N@èä Bš³0ã2rbΈH"ÎÔï÷ïÇÌ/§e†•s¦ï·î ¹©üóÇÏòA"Ô”·ÖŒ0¬º 2ŸGÕÖ«v-ËijDà\,G¥˜sUì[¹o¨ôÖZf¸ûóyì_~½Ñüfç#[0Ѷ ³õx>‹ãw»ïçüéûïÞüéëoW¦õÓÍLmšÈe¶ÖZiâ2#8b¿·ÞÌ-–qä­ïîo 9éaÊJCZ»ß°Ç`÷XHgÔšåŸË+E"+f­E|¹Í?žE’p†kï·}„9´)Ó– EroÛÖo“ÛyÌéë]åwÿé/˜èïÿîÛùøh’·1ò¶»3?ÎÕ÷[ëãå^ü[•iD¬9µ·ð´Šöʈ 3!mkÿî÷¿Ÿçñøùˆ ­Ý–Ñãc4pK;ÀhÛˆ¦It®y†Ïpw›6W×"ôźVÀ=ZkanËEëê¥ÞÚ}½õ­·½ åá£tRg©5I¸qÂ2ŠaŠH˜‹*³°ò¶muKJiZ‘R@UIµÊÏ]¹ˆ\ôÀRõEvmò:øKuÌ™ÉBè9RDKêÞšÖ¯=C™ˆÅ,SÀH!ðÖ‰(‘þ:ƒ—{mŒç¹(‘áÙX’[é´µ#0áx~(½óïÛãë03ÄŠmß—éZF¤Úo)­9ÑÇñ$‘ÖÛ|&"Üs®…i£±ÌiBÚ$ÎÓÜ=ÔŸÇѶ1öÛ6Ïã矙äý¶åwïŸþqGœšvÕï¾|9ŽÓ>žq¢šù› ú´ºÒ.²æ9ç47W˦ÏÛ¾?¾~Øœ âˆ5×<§­õï­iŒB´ÂK ¶ÜÍm…[8£¢ž.åq&1—s/2³µF35Ñ¡ýÞu0o*·mS‘ºL=Öè½icÊ"}Æ _æMTˆ[o´‘ª–¹_ë-"`Q`x¥TöÞ)®}T ,µÌ4GµÕõZóZ¤—žŠH^ûvùð—ADø‚Ú!)Ì­ß·mžÇÅQ9çd¤»eæZl¶è•í$¢É^fᯤZÉűH"öðbä”+Ô¥¥ôÖ»°j;…Ÿ3ŸG m½wfÔ2ðŒ3Áh¸Ýn­¤Ù*Ì\LóÓV$b–KEmÊ’ˆBK0MÅEBR¼¸rLeÕFÂr)j5Ž’wJïÍÝ-²ÄWÎ93E’— +¨Šè,•{!IYdj\£zÁ½° à×Ç ·6JËÄðÖ7Õ¡}›”þ_9ƒ÷.Ç#nLÚ´ å(á« ê°…Lò ‘"ži+,“áºErë̺Öúøøx¿ï¿ûá{¡øöõg[sÛo~—ûãœñ5éå¶ý•éZ!m_–FºHÝ2•Ó“"nÛÀÎÃײy„û¶mM [¬ÒÃ×úGˆA™)ÅÈ/!2˜®‹4UTT†´óÌÁšÄÄX©¾m}omßG/“© ݶ½0#XˆDU*Û cDìéÎ4Ý2ÃÃ3£5Ý÷­µ¾Æ>D„"ÝŒë¢é"ÊÂĉð:À„D®(Hb\”¢ËÑ&’U—Âô"B¿X­$e웑«"!™bFæÁ̯˜†+¶(Íëƒ(#ÍÍ·}ÏLD-t O¤AÝÌ—’hmˆˆ²$UjP"½wž“zÓØwÑVñÏMµ—€Ö×ÇÇÇÖÆ`E$T´qÐø8Ÿ‘@æÏÏç>¶6¶çsýÃ?ü“æw[¿Ú÷9gÛÆûÛ„ÿðí§újûm5§:ׄ47W¢"O¢ì%,‹ÆLóxf„2%˜)™“6¸‹"CÈ3–q‚<ˆ…ˆã3q™yÛ¶Þ;Öy²È +"¡Ì¸ÂŸZ¿ßïÊânén/³Kª!ª ŽLn-<ÂÐ(Yˆ¹1©0·VÍdÈ6*Ú3hí Òµ5U€Ên¨xeY"r)©™XE/>gáçfF@oR^Y˜Ku“š°2tu5Ì–‹rtqøkœX*­OÒÄ=T%3cy„gF]XÖÌhÍ<ž7•…è̶ùis)ÄmôZ>oÛFÌ Ú·íXëIÜ›ž¦¶Ö¸Ý5×r·ÞZW Ï$á–™;¯Çq|{ â{ûØöÇãÃæÔ¦Òôívûxçó¹Öo;B­ôF D][cu²Œ sG"¼|êʸP.ã9)Ú‹•ÎÍ,[ÇqˆÇ­õÇã¡"åW"‹&1«öaÂL¤t'a!Vpéuуšh fÇ*ó.ºPÒlÄ$ ˆ…Ç2d6ÀYæÛÖ F˜svâË ”ò¥W*ø‰¹T_IÄå†tÖEÏÕ01A `­Š`½DKxù@]hñÅ—ÉO‹Â ³¦(uÝ=嫚 $µ2ÏaNNîýÊ(ëJRü‡Š˜¶Êš¯·V¤ªp+óraòä5¤^†˜žÉr¹]¿:]’‹hÚDtkz~<øI:,‰8L) ©2#D.Ì5§ªÞn·Þ¾âqäo+ŒVÏèÌ,ÉÕ%"r™%X~α×\‘.¤ jÚH" ^kíc·eLúͼ©4‘,b¢Ñ‹œV&3é¶Ò#™(,$i“ö¶·mk—Ç32¢"'Šæ§×ï¦$š(˜,ñ¹L2‰¸ #ª“ Â…¤Ö;^ßáŠÜ-vbÉ«ãóo+= 2à…ùâ%P&¢ªÎëN–êÒòº¥‰âŠ¢(Ï1b¦ÏÎÌ2‡K†'˜¹Útê˜eaä ¬âB!€Öô‚Û.Ï`ºöf¯©Nˆ(Ìë;í­Ÿn—†Š‡›{DÆ·o·}¿©ÌŒðBM.5 žæ…x˜¶çóñüø–oûíwß·–¯ùóo¹Ú—¿øÝY˜sç\a"Ò¦*²@+éiñôpÑÆ˜výà‘±æb-˰9gÓ‚–zYݾßî£÷Ìði À-ÎÉJ¤ Áò6Æw÷û_Þßo·&|¿m­‹*Kã G† 5‘½Þ»0›{dJ Z*úò/#d}Tˆ`6Ã]?=ö¯š¡Ñ{k­k+£F®¯B6aajÄ*¬Ì×Q˯…„¨¦ºW&J¥>“”rµœ‡/õÁõÕ/Ùj±¯òúcµá©…sq\^0Šy廄ƒð~¿gæóùüé§ŸæZ÷ûýýý}Ûo©ìê h½ÂK[ë̦cß¶$Ñۅ혻…³j1RÇ­µ2e3·0ï­7U颙ñøø@Ò¾íÚ@ç<žÇo‡Iiº¯ã`iæ)#=Ñu2fÂ==òy˜‰DD…„yóù|6bUEFØä޶щxfdXfó<È]’€h ­‹oÛ¶ûÛíûß}÷þ~¢ûmÛ¶q=ÌÕ€šfà’[ÛU”UÖZ™ž&fm‰\sÊešàe.sZíK»êÞ[SMwâd"Áˤ¤*çŸøUHʺ-…^¾åçørû#@®N4k%ÉLò/##CˆEø2ÃPþŒ@Œ|ü¥9IŽòºßïsÎó<לû¶÷å»ý~KâðâXQé|ÁQˆâX¹ˆ£uÞ÷Þ~óµõn+\ºÚBXÌy¶mèèçqjomôŠ}Cäù<âfІ̦úÝÛû³µy®yžºï¿|÷<úñï»2eð2CM pRTuM¦È¸Þ8ºâÇUÛÞGSÄ][z»¿¹;3øÚf‡29Ñ<wpa®kÍ„²±+3A•ÃëÚ´i½HT>’A—’ý¥V#æˆè*”‰+ô0®øᦠ¤›7–V’m|õ¢¯Ë×ùJ’ª¶ôåŽ0ãJ³¸<¼pÍë¹nôê T¢pfÍL¿à0ªA-_ö'D—¡øåíS2("BB˜ˆTˆ3ãy<ŸÏçqDt»íc U5¯Ú†À3ƒA]hÆåPÒDMmy”ßouGÌÜXXî¤Ì¤éfé* ºÞØOnÿ5éUP¥Pï#‰W<nöõ°ïã7ªP€&$ÂEØ}E¤ˆŠTˆH‰ ”å禤ÐßÔƒ„·±½Ýn[×·û Û_¿=cšáË^^d€„;‡ï¤*" U¾íÛÞÛPÝǸMIP¹Ìéäsa ÷Ïo3³ræ@2 #É#³i[k1©°†SzpV‚·^¦7Tòs¾@Óêg«Ö(ÀÛ/ùsqV•¨ürý¥FËÍäWŒ…:aÿøSSUýºNk¾] —•ãP©xàãñíããë<žûh_î;ŤÅCØÃ¦Ö¶ˆ8Ž£TxLÈÚâzZ\VÉnÖÆÐ6Î9ŸóØî·$,ä1çM52çZ¢—É 1'癩Äí~ûv>‡ö~{ë­dz¶wÿaùÇ]vŀǚ`ÖŠMG–ñe™‘¾æa®pædm­÷Ñ´”$3é$ùfqzžsÕÀ¡½“Y m2®|gQâF¸õþ6¶Ñtý‡··]u­ÙUƒ$‘Žr9FÁ¦Å«À"LéfYÒ2^¶ö½µÞz±™`µæ)#æö¹hº”jôrÖ¥ p”•Ïg ‰Äõ„¼dž×Áû¯Êî_=u¦âe ÊÌ/ îåˆöeQŵÁEtÀNx®õõããÇ?ü3#øîËí¶Us1×*ή ÛØçœ_¿~Í̾5É@EŸMóµæ\@¥W|¿º à:^•%j'ñ2¾LÄ«»ÈÚÞ‘e¯xêpóó<¿{{c\ê ’È¤Ú"?7bz½ñë·ÅÍø¢ÚRïýx|äyHâ]‰…9¢©¬—èÒ–ŸçÙZ»ßoçã<ÏúªB¯Ô€ßìÑ$>æªUaYѺGFë"¤¯EDÂÌ*CiÓ°Œ]Ð…Î9 F¦5çš‹‰à¡Ìè½èyuÉ ³á!mc”ŽŠí£ìëE ¤Á³»IDÂA¿øÒ|–J&}¶˜x™Šefï…Ý.r×ËÖá%Å˪äóD¼šT¤+‹¦Ö&ð³ÿe-þëJ­ßýõ+|ý÷«Ž/œ‰é3&­øw‘‚ 6ÄÕ¿V’‘ðˆeë8ïû­Ø±ùú¶[%JR‰Í¨€ý¬å='©Ê>6fJO `šxn É¢?Ô°(L¬Ú+',Qšª9çqoï÷¡ŸÏ'3—%Öo}š:ÑŠÈå½wË×ZB„´Ñû6Ú""îæ^N‹,MX幦›³p2mHJ”TŽÒ{×öx<ÎóPÕ¦ÊD£÷}Œ&œnB`‚—-=¦­Ú`~ÄÄ ëçRw7^6åY!3Uº£âZî­¹Š×²o»^öc”e!ýºûA^IÏTvù2[ûåàü,ÊÏ*ü,Zú•ÅÃÿûyõ©”áàLŠ$wE ˆL® îúæîç\ç9ל'y|yûÒGp¿ÝHd™×«73ÆÞ©žLS„ö9sÚ­õg,!òËø£³²-¯Þ@µÑív||¸)G ƒEy­õíÛ··÷····ÞûóùüøxÈ‹–þT‘ôQUF²Gs·ÞÃÒ¡Â1ZD–ßVýHÒýŠ "¸ûñ<|Yë£R³–Èq—ÏQ™E ÌÜÇöv¿ÅŸCû•E¥i ‚JBeš…ÛèƒÃw¡ <γõ/ITÙî+Ü×"@UzBUáÞT‰ÙÓÝI5k8<¸XˆžLRxN9¾ûúuŒ¶mã‡ï¿ûéÇüçúèÛø§(máªR §º§ê ’Ìœk0×.‹%‚êZ‹"+˜ ˆX¹W8WÔŽ·Ö¨’ÂUN__2Ìíòé—¸¾ôïRÿªºFmâ5÷ÐgaÐÕ5Óëæ¢êÃ)D½˜ŠdâË) øüÿËþônøc5úydþúX}½ž ŠÊ}¿V¦È:î^^:ŸÎ{ÿò_3'xe—¹§­…DøZ¾Ö~Û¶ÿ‡¹7[’$9–ÅÔÈ¥ª{f°Ï¡PÈþÿ7‘—‹\8ÀLOWe„»-|0¨ì®ðP(l 4z©ÊÌÊ´07SSS]×ácY–·Lf¸a¼Ü.‰Oîu][S›w¹÷Þ{ù“×ûÌ€$’hì^Ò®™Þ·Ä"š™ëzùõׯ½÷ÏŸ>Q†?Þ®òû ³Á—¦ïïïžÁô}ý(÷·ÌD¸ôñX˜3+oíÑ{íÅ£1a‰¤4—²~ax*¹™×RQcŒÑÖ&Mf™–©$c ÷(Eæu]y:"Ui.å‡,h3Oœ²b¢â22 jHSÁœ>»Ûð1½–QU•½ZÓ ôQ¤ÖÑ<¡B@ð çó”?(+)óø'*Gšû"„ßÔÓÆÒtÌë3Ëu-,Â=ÌÌÍÓKM#yš›G[´­ K jwÁ§…dÎøÖb@js³y2½ä¡«úT¸G¤gôIõ.~URFlYVsÛöw¾è¢ðËÒ¾>z½x½]¯¿þúëûû×òJøn—Ž1jŽ=§Üº›,çÜ›¶ÛzÇöõ]DÆÞUõz¹°¨GFúe]Ù÷­>%"Üî·ˆ€‡ª K𷥕š2±H!DEóÅ$˜XPª; rw'R˜Oœ`8Dáˆ*ˆ+SÎ=§‡—#9óñ{ž6_ˤ‰‹{R!^³xªáf­4€²»¨TI3ךt3¦ßÂUtè3V-4ƨNyY×>zU a‘áéæ}ô¯o_‡í÷Ï/÷Ïw"Ïc'PÁMnyÇ#"Öu]Ö K‹â0˜•¶~dܯ×`N*}cÖŒ\—KÙhR¸G´Ež ÷1l1EA’Äe— ,×ë]¥}íoáß·ÓŸ”ˆ,âî‹–FŸ -,ÊÄnƒ-/‹ÞÛú>{wP‹”X…™Iïc{›¹‰7YT„9Íû¶Sb‘’¨Q)buD•H'~ÄY‹$àu2—lÝØöÔ&Ó©IkÃqFÃÁzb!’'i$ʳûšô&̹Q5|¥ÑL`3T“Å¢ýÏí"¢â°Ì(äšìSë^LTÅ%%M¬Õç ø™¡ë¥V˜öÞgÕÛSUJcßß½ïfÖZ{¹ß¯×k}WQC"“3;Ø,ÝÝ oY—%@*’Ë2k¡·Ûm€ºÙ>Æí~áÄü©¿¬/Fb€»›¢c˜÷Ñ#­ÖfÞ÷=‰ƒ(@ TÍ|]oã:¶ÊGß-L‰*Ç+aŽˆ1FSÑTfbH»¬ëíÅ’·aIÉÂ@€È¼WÒ5$ B™ws}ÆÜæ i?Ó$<&úU‹¦é­m©%€<ŠÝó#?¨úµòYþ k¤É¦*‚U-ƒøùÔ>qBrŽ4X¥”ÚϯznùqâuR•ÓS9'ZIÓ¾®–jŽzô¬ܽ¦î¾ïû¾ïëzêFiF IDAT’<,MJ±›™_^^Zk÷——úâgy”b°@ U½NN  ø›ÓåþÓúòÃû—_@t½^µÉضõÒ‚Œ$!P™Ù‡r Nlf9,–eÙz}ýäîcØCD›4àû õ¨ˆºÖw*ŒÌ¦²´F NDà‹°R…Ñl—€õ)+¼$Ë1U™§!«®Åœ€Š®«QC!”£d-¶6e&ÀÝK…œÞå¬ ÿ^g«¢¨6†1k~Ç ÂÜX,œÒnk’2¹ç¬—u¹4°w³á[Ry£QöàD´®kD1º{ƺœÀíå¿~ýº\–å²~{.ŠÛºqzŒK{”÷™$| ¤ó:qçéô:à*ωpaLTÎzM$Õ¨–›ˆÀ 3«yöY'¦·å‘³O4êÛÌJIeê€@qE·ˆFdRY%³NWÎÊñôŽmÛÖ{ß·^Õ63ßn·õr¹Ü®³NÀGãEç ƒIÐ*æÞËË‹¶æUiN)ŠÁD*²,:†=d>[!*It½-Øú’a#A,º=¶}·12’"UäÂJÑ÷DZØèî–cXkK„½ïßuËD§…“ˆ´e!æV}nåmMšl}{<ûÞ33"ËíjxdRk ɲ÷q_¹I½+˜Y™ërýéÇýý=ÞßiœÙ˜,‚“±’‡‚Óˆ”1(1ó9FüöªäÔŠ$efz½©¨E4aæqdÇÈ0P‚%öÜ£jJåƒÿ¤LÏq)‡Ù>@ÓÉѯbuž„3²ЩÛzÀŸa‡Tm@¬ë ,ÏÙãü„ÍÌÌ´Õâ×Ô8á¥""ÝŒP¾Àê™;¹´U ÷ȰޗÖ^oW÷nAöxGJ’q™“zŒ‚,MƒÀLNÌÄ?…5|¯í 0iR:Ž9VIt“üfœÑòÓËfå|cß‚2§:óùí\ÂiÇÓñ˜‡í}\ÕÈÏuû:ÙŸèRõœ˜ŸwZÉ„…ˆØ4¤ˆàç;$ƒ‰2Ò* æmYœ‰Ãá9#CE0 ³ÉÌ}Hï½–¥¶mk­•× U³h†\//nïËô,X•¸”.÷}w‹’ðFU½ß×'RKœ˜‰Ù#Ü,3ALLû¾ïc”æsˆ¤*DJÒFðc ‰àvûe÷»²1B2UXUÜvQ!÷xßzï—Ë5#áÁJeHl‰då¤RèÎÔ<‰˜ÈbÚDë(8 Ä3Ûá)L?SE‹[UÅ×¹ÆÄÕM¢fGª®ª‰vÅÙyÎüæ‰ÎgN«xº»Îwü…8o-*1a©5n¯‚ä,rŽ›09 ­˜hQ±…&÷9_ax¢6óÝö}6Hx Ú÷]õI-ª¼¾üP½cUò‹–"±SéAú½wcK/Vl¾=¾·Ê©šYÉyJÌ5"-[´úœ¾¾½{Àƒ@)à ÄJrem££ï`Šô½çËý¦”Jy¹ß˜+’IÜ=’¤µ€G€àÀÉMˆ)Ò(aC'ÍŽ…yŒQu[å’óyŽ“ædõL3!}›ðI›K"Ò ÓV@ª8Î$~Ž>>8ÅÏ÷ù¯y\õnž“ÛYà†ó·1  Ì™J—¹ê¸©òdWã5Šñs4@™‡;#€LÊ\¥‘´Q‘…£&‚²cÃ,2½sâÝÓƒÆÛ®Ì ¾^¤‹ ˜Gƒ"ˆÑ˜÷póΤÂ1†ˆPr¸#óËÛã»h]JÉL›º÷$¢nÉ=Æ”§cêkÁÒ¤Q4X 8rßI$ª5IÃ@¼ÝT¸5rhëí5†£-v¸5Òãž,BÌš sBÊÏùAÝMõ Ž“jÎO!uÆÄ™Ygv‰ˆ˜'GÑ«Jávæ\îÁŽþšøŽÌ7aY¢8N}1ƒøHðóe) "@‰]¸góà!kó̲ª•5p¸ÙˆHåc,—ë…HÞ÷íKz†¥SZÌE+j* ÔþTF,­}ç€Î3È#=E5#·}¿\oª g™¢)”Ôd]”8ÓvfNÏôL€„D»å6‚£;½of­µ+©&çrYLÌÓ”™KÍ¿w Ôy’fVì]&Ž©ûXDƈ,þK½ô{NØç7ž-MÝâƒÜ}˜-òÛÙ7=õd'pQC–:4êYªÇŠÉ¹ýŒq¢Îî„ã.MÀ«H¯E$mW38¸/BÙ”›¨/Ä« “˜1E0ÕâPÌÓ="€¥ÍÃÜ |÷K¯Ôà±›÷€/ ©õz%©-{/Ewb†J µb˜±‹B«”„;º‡‡˰ØÞˆE²¾\¯-Ü÷}aJsPÎΨ¹Šœ2å÷ão”>YVr¦Ìý;¦Òô#‡6aĹ5p±g´ŸýüÍ¡Ñpò˜Î<ú\ø˜âåejCd”¬œ ´yø‚HDäϯ°"òÌÖçߟ¬¢åŒÑógcÌ‹$aIN¤ƒùú•‹ 5—pŠºš”奀£àªëÚ.mmªHRf©Y0™=Èâyx¤qˆˆ^6Nÿºïy)1¹gÒ´÷îm]´é0Û÷}ï»{4'Ô‚°¸G$†cijA &]| Jp„ù£µÆý± ò‡>·ÞoËâcdøe¹Xøè»ÈR‰ÊÝ™P=r}æÎ Ë²Ô't¸g«Ôý]gb×li)ç²ò QÄŠ•ƒ¹‚§âG‰yFÀY0ä©g$(X-Uàðáý5ûùÌ,'aDzÇ™Nçmp¾éϤmŸËüOñoâøìꪂ©ÓÁg6 "*JxXg %P¦õÍ‚˜¨33P¢©¹­ME”3³÷zA—u}ŒáÄ(rŒlB"$`þA¾Û¥ÃÍÌÌ­­—¶,}{`n½wî%‘ƒ"Ò¶NÝ2‰…u½Þï/cô}Û¶Ç&­K„kZšG&¼£©4½ßo6öíåz½.í}ì6+Nrw0ƒ¤ò%O-‰ DýS}0µíÐV-·»ôA=†:‰ c‚ð±>  Óœ§$ñz|ðyø|¶/Eøeª;FÀ”HóaãöêqfE!\²å\»üU2s>c_OøëY0ù5ŸK^<¯ŽÁràÔö™åI…)âõŠMp/àp[U »í`UfKwKÓUÛ²®Éì™Ã ÌfA,ÚVìF(]Šco ij¼y*ú¿ç¥>-\‰Ë~H¤™1,ÜLRµýuYFa]‰š¬Šüt½~ÍØæž'€hž™ÁSûˆ†;¥YÀÊ Êî6# }BD€Èlš¹+O8†\–uV¥¥Fržô3Úp´çG”ò«üÆžg$ÿæ÷ÈàR Oµ»E,­Uî% R8fÄ,Ê‚™h$8`Úü¶´¨'ªD[NÉ@:|g8>ŸõgšÿøAbÑf½›¨á_É{ŒÌ`€3݃„3s˜9ñíÓMkÿªZÊÑ*Œ fâ æDݵƒÂäVök(FÛw¾´Ú…Öš¶FÝÊïÐ3†ÛÑ{má·Ç×—ëê6-æUäñxçéF%ê’#JÊ–’Þë¢tA4èua™›•%&S T×ÂĪMH‰’ A…êδwœÎ¿=I1ƒà8ÁÏBðÀ؉PÙú)Ûõ(£g1 (µ¬çº·RÚ¬OfñpÖ²š7É™ÝéØv o¾•KA„z{+6ú$ù8dgÄ ‡‡çôEù¸7ULà))Ija£ñÈ"4yF‚<S 8ËÙ¾Š”º½ó<êÏH­¡4þ®Õ‹(‰Ì̘fI «Œ¡>ò~ù ñņõÞUÕ‘*Áý±ýü—¿\–‹2I“ϯ/J0$#”’œÁ˜ªUûÇL=(Üð;Ç(ݶÝ2v‡Z"‰“c8’„’¬Ä„³ œ¨Oq/Y슆³l" !ÉbÃï[„¿¾ÞA´»Ãq½\“U×ÅÇ$¦$ÜŒ˜ ÂŒ¤t8ƒò Íì Â)?£¸Œ'-øCnƒIÊŽà©Ü[+úy–˜g,Ö=0{»œË'õkDÌ{œ1=«ßÔ""|Û·Þ‡Ï}}¢Ft»¬¯÷ûËõúr¿ê”ÄÞûûcóÌaÞ)—F*ÃlÑJ¼,-Óùò]9Ñ”ˆ„’U3@Gt†ø>P:½9™Š%m”9¡Ý’é<‹“³$Åä_€ûø›cÜU?/„"áÃ@,L fU€SÊ·´5Ug1Ñe]EäÓõõååeÑ&[¥á$viÝ1”ÜJˆó@îæþE"ã[råwº˜ì eJEqø+4ëœMPt¢aNî¿T¶ÏSÊcm¾Ñ6†©PdÉÑú>6Šíý¶¶…™lôÞ-•¿õ¨øgF",“ˆ’&ôÔÓ3ÕÌLz¢€à@£*EQñG6Jh²âzÞ{’É%ÈOY{x G¢,ÔèhÕ *²)• ê±üçSåjžBŒˆôÀ¨Õ`ÕMžšÖ"láµ8ž%CQ-Üøz@D@‘e3ûø`uåA! .ëÚV%¤¿~úDÄ—ËzY//÷û²hfZ°´1rÖÝkI“©ô™"ÒTÝÇu]9Sòaû~—ÎS)ÄNÁ3(çÞ2A®’­§2œ@×õÊI1 „Òðȹ×IOhz=Äüÿ¤CkéFS¬¦bKU›6ßjÕÁyÚéw BMw˜OëóYL'cèà€ 3K=}.ñÕÔ×ldÖZÀˆR!Í*LAÕ>WØõ#OôÔAΗÁÌÌq¯Ó¢˜wçMEIî>^ï7ëŸ_ÛûûýzUIâ$bnÄ#A”Œ ƒÄJp÷œVfF† ß×¶ì¸f˜ff»ydit„{ˆREe•Z„@VŒ%xJÉ×í{N&êqæ'‡:“HʽW,‰`$‘hKЯ¿¾õÞ/—µ&1D}Äe97ë? ýã±óÛ À3b¢ªéóEÚÞmц굯uøŒ:U©6œf>þ@ÔÏ_ŸIzgT)(búƒži•Öw0Ñ@€è¸½æKj=c¾³AÃI"?Ò'ð÷‡ìÁª)‚X…ÄÃóØfa¢_Û:Z·>VÑËÒ8ÀeQ%g‹ð>ÌË Ê’ëšè q&œÊ\ýq}œÿßÃîÿí¥÷1’ˆÛ”5»@|,û–zcÁÜ`vò”8˜ $MAX€Êæ>¤ô0”A óÒ.Z†ûcß”øPcL™a’…<ÿüË£ÿI~ʦDhªBµJ"BÖú)èq‚£/ ¥;XÆ<÷M<œÀÎ:/z"Õ{D¥Ö$2¬¦!%‰šqÌèë„!“TÈÈ`GPVU3\3¿=Ž ü£ÛÃÑÅ ,)R~ÑUð© ­­][3î]õÖÖú¾‹jÞ™YZ!)lé#Ý‘D4Â÷a˜f¸{ÂÖõÒ} '¦2<ÿ®×§Û:7ÔD˜Kõ’&LDž$?ê-c!¥ïdiÇŠèöa>t‘Ì0¤ Ñð‘D ‘J"¤˜Çù\Sm™9Ì[Ógxˆæ=gFŒ˜Í ‰ªcQJUáMd9×÷>ÒP•mű.Õé˜?Ïñã͉9Ýçƒ!ðñà ,ËâžÛ¾ÌYM7É܇®ùT}¶™Éºd9v”ÚLMÍŠQuwJ”½¥fÙý ÓÇÀGÈNæ¸'‰hf®‡ÎÉ ótè·ùé‰N¾j,ҽ㘾žÌ&&zæéqX‡C@ ’ÜOk‰â”Y…ŽèüMÖòÈ ²õ,x_j9 "˜þ1ž $Aˆ‘1iùQ¨Ðý²\—õ²®ëº.MeŽˆÀ|ÐÔæÇ1'I3ï&Î~¼âð€ ,”Wžˆœ¥ ˆ¬5þp/áS:lq 4–§¸ª{ÆMëq–e© zÅ¢L'³) R±C,%  0sƒ˜ª÷ÿè:s$3×þ~%ìRûéeT"j¸ªtaDd8å„çI%“ì¶Þ2ù†Äׯo_~ù¹Sõé#²’Éar~“õÒ„Æ$ῼýú”(DÈìÛUe\ÖåzYüáóe]n—ëÛÛû—_ß:™±½û²´Â“‹—`î¡’¥cH’‚°äÄàj…Œy¾µõõr¹¬—eY–ei­•LŸg:€óh+Í®ozîú×Ây¦=ã°pšô :rÛ´`˜õç˜u>ÞÔ}*J v}“aÈOù$ ãž•(q²íäyÂ~œìóSŸYІ̪+Üý¼¾ù±â,…—)0ˆ¿1±‡3ɲ®Ýìr¹óèöõ×/f}]×××(#T²iJO›ÐŽ%¬Šf”{Ìû÷=ñÏKUd]šÊ–æ¿]¯×ëå§ÏŸÿðûŸ®—õv¹¼¿?þöó/_ÞÞF÷ôˆ÷Í"–`F†W1›Y§€4Éiº, ÃÅÁ‚LÑÝu]+>ëso$Â)çó:û§ ù°¤«l:#&A(ë‘`98Ç]2¨ÊáˆK@ ™¦På Ð!ð9§/èkT9Ÿæ(D)žcñˆÈ˜DO¬ççà\zÉø˜9ÕoxjfÇHƒ1å6&Ÿgk…¾0³ ¨è¥­;ï«¶&ú»ñûëöxCzù»ftaWžII“`"Îts!üÃÒãû\úùå•ÿíßÙÿϯ¿|y½^þý¿ÿýï~üïþø‡?¿2*òãÿðûŸ¿þúË/_Þÿôç,¢j*dÊ)µ›’ %CšyWС ǤªáÛÚ^n÷OŸ^ï·Ûeik[Öum"sóÌX9Ǹ¨Åöp͉.D%D$Á+S²²°Óï2çqž‚kÿ '1Ê’æÐÀ‘éÆOûIEW åÉãf˜á&®`Ët>‹K:wy¬GQI бKñúá8èÏgL2ÏZ\žBîçgF4O‰º˜È÷rÝ£¹^z  aPQ¹¶ÑËäÑ?¿~Ò" Á°ÈnáP×Ë{òW÷T\nD‹š[X(‹Š"ÝüŸ“Jèm¹ð-ÿÖÚNô?ÿOÿãÿoüé‡ÏŸ^ïë² Ê‘Ñ.ëúzyýü‰q¢¿þí«Y(³´ÕZ3Ï·}ÿ9{å03'–Æ"Zì¼@(@ªº®×ëåz¿½Ü¯—ei÷ËEš²H©@š"9ߌ:Ò)FÌ“‡QÎ$4íB‰À &ŽC!bæ·ƒâ›Y¨ÁlÊé REDé„· X»EXWÕÖZ ÛkbwfÖ<ôyθ<ãƒe€|ºøI8smpžjUˆ'ޗȇ:Ãô|¢¹Æ8ϪÇgÒ-33ëÚ$“y¹\·½÷ñžD/?üΊ< ­÷¾;±®A›{"¡Œµ5œA™¥ÉòbßéÒÊ”x¹]ÿðÇßÿð»®ëZ}]µÝB4,5–ÖÖš”\å¿~ùõÝÜåÒœiëcýõõÚ͉ [D=œkzL"€€«ükËr¹^×¥,TUq”¤EnΚ‚3•¬×ŠÔ'Tdð©Å.ðœpðEN´~Î@âòpP<Øâj¤'XšZ•i"3Kk%IùL§?'dgo~¾›g‘€o ÊÿVTÂ¥/ò ž‘]ÏO|þ³ ¿e'×+ùÍv2mYÌb‘BíºŠmŒV£ é<² êe½]µ…j5µiÛŽˆ&ÿ„-¨º4#ÒãÒ–?þôÓ?ýp¹^ÀÔÝXH’Çnëå¾®œhÿôúnBò—¿üío?ÿš—eÑ…vpcô@riÜKùÊÅ4B"Q-C’Ûz¹]® òØWÄüxàH¨ÊÑËã˜ìðA4 ¢D8 âhÍíÊs§ì˜úòù9o…Ô Ê%]#†«6’îîÂ4—Q3…§àJ•¤gP>g8UÍ,îÜG8â© @%N€Àqˆü¦g¯­•8džÁ¬ç™Ü·¹ù¬tóù¹j`—žiÚ¢›^C m­õÃùMDH@SÙúÞD”psaÖUšjšu¯õˆÂzI] ~}¹ÿÿöï¿ÿáÇ‹Òèû>¬T×<òñ¾¯·ëýþr¿]Ó3?}Fb]Ñüòx ÎEøõõ¾›“Špëfc’¬ì‹æ ‘ÖÖn×õ¶^n÷{[×êw -¤³Á?hàyO¿a Ez0MRf%$D‰d·¨aÕ< DœóA YÉCŒ’¥Á† {íT$ºÛ¹)pf/ü}¸Ô@Ž9‰cš>)]V IDATGF‚E‰¨ípÏ“JvFp!\'€pêõoEþ¦x˜Åª $‹ôÈÂýr x­D×à@U­&ó°L3îuC×ÊE"œ€&XTÃ}]VFt!JÈ—Ç?¯6%!¾_.?}þôã§O£s3$<¶}Ã2ri‹½¾¼ óz]Á‘þóÛ>˜ù§ëëpzŒžImÿúõåå#à΀P^Öõ‡Ï¯mi@’0I³¤›YÒ}¼u'¿z,;8HD›iÎ÷C“+±ôáõ Á ¤gèÔ¯)+”$aKdFùïÄë{&"Ï$$˜É¦CÕ!™ö4"ªŠvÚš´ 1Õ’B€„8Âr¶å‘9ÅùY4ŽÖªóñ´}þÞ ö Àˆá̵ôG󨑉‚ªF¯A‚01Q$ët‚5oMÃæü >í…9ÃXë—e>bøÒ–·Ž¿üêoÝwûç…i„p½,?þðÃu½ô½¬è¸%áXTÍýýë›-ãr»ßo7‡®Ë{g@[[®÷ ‘}f~[à—Æûû0'f­3ŇÝÇdÕ°/Ïnà©,{k]¤öœ´(æ¸ôPürsÌA¾Ww…š%FéBrfa¦Ä',8T¨sZ™GfÔ×s<¥ÏB ”LÅeŽ¥Zl‚0 Ð|Î5À?Œ[ÌV§ªÞʣϣ¦8¾`–@$•,\éÍD¦Ï*m–‘LÛ±nWMÆC½£¯âL£ÉözƦs“å$Ô­¯m!àûÓÏÿõ¯_ÿÿоÿô¥ˆ¦Ûr{½]™%|ÇâÌ @E2a6F/˲¼¿oûnÛ£÷½KÒõFŠhí{‡"•Ý`ZaäBp7Z—v¹®"DŪ]µðÓ<éyªî|¨Þå¹kqž¿:‘úŒ’þ¨ÿ%á*eZxÑO¸¦CÌJ ‚eÌ9n)­dR1Sɘ¬—yddÀØ”s:D…OF³O€ÌŒ™Ú™æá‡ºIDôÞÏ0óa$ê{À¸ªÂcœaÇ•E Öó‹6²³vù2S£œšˆ´;M¹©enï»\Tǹzþ¯ÿû_¿³xùëR¥¼-ËOŸ_×µÑ12Z´™Ù>†»K[n·û¾ï–ñØ6'bÕ·}ûúxO&]0†E8"˲,½3/ºÄé¾m2›êírUP‘€…I(3œùËýz>ø¹•”7Œ-)jcÎŒE¢l@ÜkEDÉ$j¤¯¢Èr·&ÕÖ$ $aU!Bx¸‡™p5j½µ…P™¶3—žô$i>ظ©Ê”@&føU”‚-€¢SGŸ?âèe KDE–ª¬|™^JÞY8?¡-õh°¨„ K Qã„IJ˰”"Ô™áAÚ2A$”ŽLi-§òþ¿¼=ú?AÕì^ê6ô²¾Þï—Ö(’aÑVõÊ e¾© ‹ÈÛ¯_þã/±ð}ß+ýî‡!üxlÛ¾ƒID”øåvÈÜÜ‚}'„ U˜(D”™U¸ñÁ¶;è¡BdD%\«îs• ”ñ¨>3вÌüíýqΙ-"G3K¹ Ôra&ƒVÖÖšŠ€a#TUµ!2Òzï—ËRr,ĸ =CHø0E6sØ«‰9 ›½ÿL«¡"õ5ýÌYSP‰ÄS AÂT.©ÆT %óGö$ЍՕ Xd¥öHJP̈ÌÒ§!"7ï}§ƒŸ5Ü5RT#¬ÛΠˆ0·$0ѾVñÈ>LšFÒèÖÚ""Û¶ýùçí_'Fhº3óõrs«â=GÆ2q­D_õæ›ÝÞ¾¾÷m¿¬kÜr)#Í@¦±¬+"±´…™ÍÄh0S6aaRëÃU‘ÉH**+ c’äc´IÄ"‘Ab|Ðæ=KnòžÛÖÍ}ÛqÔ^‘6,ÌŒEnš™6 a¾¨.­ àÒ©Ô¦3<Ü÷¾1 /­í£—⪋»‹ðä¸$DgùQ]ù¤ž$Jv3D(ÓzW’(ð'‹fZc娲‘<'©Šà~˜%§·@HJÏÚ¦¨Ö,a>zyr¥yu¢£÷ÛõBQ‹®>Ê÷Ç«Âæa¶,ÅHœc6ÏT]2ôÍû—÷¡EíB-ë"­A¨ûÞc,Äe•å_ªÚG_®WQùüòºoû£±\Úúéåe˜mûNµ¡vt\~SÌ™2DÑ "‚p)•º{’”[q™r} Á3“TàYìº)…*lµÛaå¶–ùþþîæ§T2áæÎBž[ˆÊæÃÃÁ ]–‹ªô}¨²NÖ #3CEzkÓ#ÐH³ÜmÚ¸-"98 MUT3<Ü)áYu§(Í9Õ+EºäIÌ ¬žÝcþT„ÀÌiÒÌÛ’(A\XSÙQ:âmÛ-r?䛣÷{ïá¶4Í”1Æ0/Œ¬ê|÷dV@@,ÚÀ°( Xå/ïÿõèó¥/¯¯÷ûýr½D ¶ÉTÃ_GÎ}]f!bâuáßýø“›¿¿¿!B™eYô¾=„¥Ì­Dj²eî‹zD¢&D¹¨.*"Â"TtçB€JŸ™‘VuÀ1 :&¦ ¸Ùð(i¸arïÝܽšúâlS£Isÿúu³$aõÈnæo»7eB²s³Á"s“›!Lâ¼Û°0fR– Úè™o·Ëív[dF°ÖîŠpô>VÕÆRŠZˆh˜¨RNõd«‘Ƕ¢HȈ´aˆ…0Õ›å,#¢ÊPñˆÇãÑ{@ˆJŸcŒê- óò¬¥jÊÈaö¾uÃÒCµAXÕ‰èýñX–å}û¾üüÿÄ¥÷Ûýz½ÝïwxøpanÚ"Ó·ôŒZZ_š®m  _¼ÿôù‡·÷÷ÿå¿ü—}ÿ+3ÿþw¿ûùë¯ûò¥!G$€°Q1¦×EÛ…˜[“¦Ú„дµš÷Ï­>Pü™ô,Y­£5<3ÌfCméVù½’8f7“2Äž”HG Y1‡£cw!UYÚ™¹÷‡ s"è–€[Ï Q.‹¾oªº.+ Fþó_>}zýá‡Ï÷Ûíåå1˜HˆEIE›*ް˜«Ìl>² ®W-I P©hÄ:ŠÈaÞ#ÍĎܶ-"Ê"âv½­ëº}}s÷E‹äTÈ­)QF,mñÈrݼ¿Üþü×ÿË2BœUX8z·po*ÅØ+™…EŠ0O$LBsK—&L4ªA¥ƒòvb‘yǺ0 gó£ï›‡5‘~¹0qZ2#Lré/—Ëõz}ˆðcY¢´LØÉµŽûÄ!ÿ$tˆñL]¢i⓵š«j “(Áû0÷pÊ&32¢ï}Œ1ú)ªÃbëûì ‰zlžåÏ 6ËhŠˆ···Ún_pÍ„›»› ³ÞKÍÍ3Àq¿¿zrD¸ù¾–oÿB—¶¶¬ËÚD§d³»wŸŠˆžÉ`XØöØÍl¹(1ÒÜF}%MW{³¤l*ÅUgf–¹ /2=˜‰kÃ3#‘娥¦?[ ÔÜ/¶›¹ácr³oÍô@kKk-Oµ0.¥È¢á;"0Œ} É ëÝÍ2ÀH£ÌœŠÙ}„û/í~»©jQÑè×ë*r»ÝÞÞ¾öÞ‘¹mÛ² sx8|ô~rFX¾!A?3j¢D*‹y sСâ0Ü÷}/ɱǶÞ{Y©lû¾Û(zAÙ#îc¸[ábÌ|»ÝórI7U}<eVvhÀO»Èn1, e÷Ê8ê‘þÝ]Jþ3×Üëpw)syVôÑ͆ªŠ2(B0b@hë›Us'ð§×O?ÿòe{·©ÿÅmiŒp$1@aêý²^(ÁL‹ˆò‰ï@*: ð (’=ËR-2¬<½Í*wùäw´,)IJ^n·{òˆ“ ª<85Õ\ZÖA&ªË:Üû6Ü#S˜ï­»$ËzíÛ.-¯ÒÂ#lì±ïÈØw!¼Þî˲ºˆøúõkk¢ª÷Ë•™ËJ“ø6|b4OyÓèh–ÞcnÃJ•R=ÜÂÍcïãËÛ×¾÷}83{ľwÐeñìÕkFÆ03³Ç¶…µÖ^__?]/"Ë×/_lßqYÚ¾m F‚¨šN·(þë.Ô˜È=ܬFRGÒù׺”6¬¿o1Œ ’ ÷ô“ '"¥æŽŽC±öz½þñ}üòå­{m>™è6)tÈà¶mšt»]*ÌLIµxWåsLîýùÜÝÌÃ=zû™SwÂç®:³^.]@Ã\D ¥ei×ëj¾‡Y’“6Q Ïæ~ÿá"r³ñØ>__| 36(ÃÌ–¥õÞÃÝlôÞµIß÷í°;mËBD§Ëè!ÿ˜‹yÂPVBå¯MSÇ #“X3sïÝPS˜ áfþ¾oí±ïãË×÷ëå`™=¶9ílÚXÝÝFgëVBj&m_GG¹\kkË?ôÞûÛ¶ÙÉñ ¸BšÙØ;‹ QkÚæ ÷/w),|Q¡’%K«ó*`b„Íω™ÇØK‘ô$õD„ÙènI€ÎÑûØ7QmÔ–%US•Îf:®£_ú†‘‰²š¦PLF–[aDfª¶¶4Q%bm«j‹Gjc–\©—Í·aQE‹‡{L„GMR­˜S˜ „uQ.¦ ªŽu©gé½Óð$.XMµü›'ÃãT³I’8bÊH.å8(ª!$™é³œ[)žéîåØÑÇc0ѶïeÉÂÌ6Œ2U…¼KÓ )‡\/ír$ï<Žø‚ü‚…×Ëmïý×/¿Œ}ÃQô J›Õs„U>¸Þ¿Ô¥y(#ÅqḚ̀1ˆHUË£‰FxEp„apyÐÔHºx!yT³þIW¨ˆf„®Ù8çj ™;@y.é‘û7ìwŠ’CåÆ,¢5'¡Ü#2SDK«Œ—ËâÑÆÈÚ±¿ïµ 0—û‘.kÓæûè½÷Ñ÷+ |›¯!ˆˆkëƒrY]ÕÝÊâ=9”Ö´‚T?ôá'¦l>]ÕÖ wbI¢äæ$òaæÖÇècl}ï½ïÃHµo»õ^“Ì>úº®„U.kqƒÚ²¸®·ƒmˆËeÕÖˆhÛcôD1‹[ïóÙˆsâ Fò1­®ØwÂÿçK Þ 0•ÝmºÛ0VžÆ#GXl}îûè}ü²ï}Œa–UitxE8í_w"FÕšÃõy*q™jdfZʵ^:¿aøÎ‘R8"E`ÉdE)Ÿeé­$¥ïÝÝÍÍÍÆÞ-(뉕+›jkëõVÔkøÞ{ß7¸S 6—³=·}߯¦MsŠê@˜WeŠN‘VšÍL ‘éA’”É=BœÍ•®Ì/ÌÜ©)JƇ‰Þû¶mûÞ÷¾­“Y }c‹ ³¶k"ï÷û²®ëzYÖET?þ˲hÓÖyBÏ«˜Û0‹piížIDf½÷þöõ½î¥þiž>Ò•ô¶êûã_¯Ï4çnT¤© ³;Ác¹®—Ë¥z"®Ÿ ã±íÛþöØÜìúrÿÝO?]ï»Å_zÿÕ+ñ­µÞ­*8ëíõ^r&2žf‰L9§ç”Scqw1ˆEYˆ©pEf%iíÂ,ÅXg}2oo¿Ž}›öJæÙ˜iYX„yòŽíí±õÞ…µ¦¯î¾=Þ>ß/z]ʧ*ÝšPß·±?Òà >ÉPOª)¼0 qf bJÊ€ð‡ƒê‘–ê‰â`T1s"ÉJ¢änfŽð#Ý áMµ©® m—âØ{¸¶v¿ßX/*»¢Úì³èa™Ä̧1Š%–ËUÃ{ïî¾\nLÔ÷Myçÿ›¹7é±,ÉÒþ3˜Ý7xxdDdfeuõÌÑÒ† J @HÿC€¸â@@ÐNÒ¯‘´ í(B$(졦ÌÈÜý½{í Z»Ï½¨n©W]qQHTxx¼Ñ®Ù9ßùè§|H3ÒÃ=®×•EΧӺ®ß?=þ—ãßt©Çtp%b$ÊŸ2˺™…92A™nîæÈl,ýÐîÎçá ˧Ãò@[†dšÆ°Œ"ÌÂ,n%3O“ùÛ+x¹F#S{O ǰáe‚TT)/fr g¹ž›,yyxX¯aV‘¶,-˜6mÛ†ÙããejÞEUÕ-h‡Å“~øôù¾ûIçì-­)CµåÉRr€ºgŒˆ;QÐR0ùü3q½lT)qËô¹ñš3s© Ê,¢$Ờz)<­Öje ˜Dª­Ø6˲ÜÝÝ¡÷……¯Û¶®k!ÿO—KI‰(svl™)"}9x¦ïî§*Â" Z·m³acl¢_†n~y—>]/O×ãe½.íÎ#Ì¥’,­–ãùDD×ëµ¾æØÕŬÒöÜ(“…§Ò~e¦û³ZZDÊï $u„TÌͲ,ÄBÀåz%áDh­#iÛÆ6Ã2ƒ…¥Ë²,¢ÚµE†Ž®%–¶®OëÕãRpd•«/uW_Ô¥›mvµuÄ2*q` Ö‡¯ˇ¥;"…¦ïÍq9‘»¹oÂ8ÛÓ*p‹r”â¥õ¥K«X0BÀB$5-̦ÈQ9(C¤dD¢¢"ÃŒˆj¢STfaëØØ,ÆfDhM“h³íóÓåóã“EH;Frx;ßÝŸ‡O?¾¿øú÷ÿþŸý£üŸýóÿùùþÇׇãr\Îwwßþñ6¦‡Ï>þðëëå­wCY‰àäåÏè™é&,È –È`PV”E‹¨‚¨±B”ˆ©äf¦*@«Ä søž.bfv]ÇõºÖWò‚TŸÄ@MŽ>|üxY¯î‘ë¶µÞ{ïItݶåxÒÖºHSé­ÁÌ>'²÷v8–ÃBˆÃaÉP3ci½wocÔ·™ÏáÓ¿ÃÕø7^ór0«jÙ{»HŸÀÆd• S…•#R˜‡Óýý}¤_Æ%2¨ÑùõÉcýáãǾµ)ˆXø|ZTÈm£é.ò5ÓÌÙ¾¥2¢ì æîîcŒ¦¢¼;f8ÜÓ6Ú6†‡;Ü(ŒÜ)b[ýòôøxY-q÷æ«»ÓùÍ×?uЯ~ùËƧ3oÛÓûÿÉ?þÏÿ‹úO?>\þ‡ÿé|ûæõpÄ7?ýîíëן?ýø›óáû_üâãß3Si¡*¨:‘Nˆ–ËC¤ 'amœ„`æ f"anûºmΔ•º\%Š™{øNÛ3[×kÄ'©Ö ¿ÈS×1/O«ûötýÕ_ýâ»oòóŸÿü_þoÿÊòág¿ÿûOëú›¿2O8ƒÕEõXºmb«gÊ&ÔZµ wT!{¹^#Ñ–^š^¹Åz~Q—„T`3×X¼„¿”@±=1;XÊ´“Gw_m›þ"¢Ò–¤å)&“X^^&tS’<ƒ¥4#ÈöÊŒ³23)=Ò ìa"Ëp«Šc¤DX‘T¹]·Ëe»¬Û0C_ޝÎï¾ýÉý»wkЯ?|¿^lëéôy]ÿÝŸÿÅ÷ßþ÷ÿâý¯ß¾I¢ÈhÇžŒËºzÄát|õêÕ¸^Ò œeî1±gq–™Ì]Möxß}R_’©ˆjÖ_¾DˆšK¹UüUï½m™©*Õh‚årÝ6‹~<·û×ÃÖ‡‡Oçó]€úø_þ“òGú÷þí?ûgÿîÏÿœOç&íh §[úX·u½<]‰Uui¨Ô<ÔK%<#Ö"¢Úzïë:„˜E6ö¥«¶þÒ.Í„»{¸G­¦àÛv]·Ö´57s><#…8 ,Üzó5>>]G?ç»WïÞŽÏŸ_¿ýZD?zzõÕ›ðŸþ£7ßý”g9ÞQ;(é ôí×÷*™ÛöéÇ?üæ7Ÿ?»Ù7oß.*;yÀsa €b4Šrº70µEE‹þðâ›ù².5÷OŸ½ŸÇó²˜;O·43FDæ¶Ù…—ôÃñüúÞÇËe]·1Œ€¦‚ ÊhÂaƒ‘P&e(C«ÚÁšêžöj}ßMA¤­¾D дAõÑ”jTk#Ê12¶á[Ä6y:ii¤9ÇC¸u=—¯¿ý6’.—Uô'öÿðþý»Ÿß¼{cðéþîôõO¾9Ü$8>=p2Ý¿y{ê˯ÿê¯.Ÿ>©0>|úЗö“Ÿüä÷~úÝ»·o–¦—‡O¾]PíéóŸâº606{º>©êÝ«óÝÝëÍ|]×ÇÇÏÃ,fTC-¿gÑæÍ+¥>Æ$½¬WC¤jxŒJȯ—ëx¼*èþþîÕéüððp¹®#ÒŽ§ãét<žN÷çóÿþ¯»>­Ÿ?ÿôg?ýó¿ü‹ÿ‹¿øéï}ww>¿ÿá‡õúøîÍýáp¼»;lÛUˆ–ÖÞÜ¿~ÕûötÉ*ñÇ|ç¥ 3ºÊéÐA©*Dý…$ú‹º´z3óa p†3A„6âÙNÏ¢A‰¦_ ù`ÖÆÒ›4Ñ)@Û]wvwæÝð¶<ó@T2â):¦Ø»(¢r¥ÄÍ:ÂSŠ[Œ™¨VõnJSafG‹tP™0‹6¹‡ûš#>Fž¾zóöÕ«“ð/óÃãÓç~<ÞŸÎMèÕÝé»7ïÞ½ºÇe»¬OŸ~|ÿôñãöðxýôy\WxŒuUÞuî”›m¢ÚYzïô‚Æ@»n;3‘Y4qŠN2aúþÎoMSxFHd# A¹Ùz¹>|þ¬}IIÛÖõrýï}D;}õöÕ«ñôøýo~y=´¿÷'|Û:ÖOŸ>nc=–wß|݇ëåb×§±^›¨OC˜"™€p÷œ5³z¦=?±‰ªª™ÃG²|¡‡¾€8aëfcXDÒsâ’”<²(îA6ÁêˆÐI™\÷mŒulk¸ ‘‡çƒAL` ê‡Gî+ ®Bªª#SFz¸Ð´óMPÓÖ´°ðŠàuO·ôH"!Vbá€y¨ ¶]¯?þ°,Ç…ùÕá ,ýx¸;Ÿîý|:¼jÖí—¿ü+Îíñããreq]sŒŒ‚t!á»ESÈëX'¥{g"WÙ„¤°KJ#)´´Ôžˆ "‘™’31™Pf]Z³mŒue¢4wϧ‡G8ñ㇇ÃÝ£EÛùx´õJyÚžìzavu÷jQýôþ>¹]·ëÚ[£¦m•°á>˜À"1S£¸b’ŠôJ‘ŒDX“…Hxº\¾LDJIØ".O§Ãr+%†YƒùáØ@Ï¡ƒ³“‰ä=ÉÌÜ<ÒúÒlÛ¶õšQ1Å3$„ Hg`!j´ Þ¹<žo”Ì›ŸtufÔ[¹Ê H„9#S³½ÈØÂ­:2 ¦dWPïí K‰ŸiÄåý÷6ÆÓÅ€#á¡@2ƒH»ê¢zè¢báÛ°‡§‚ Ô”ÇÛ" įûdqó›q霵rÑ !…Ûƒ2s¸R•ƒ)ÓËáõýëÍÜ"cøu|""ظ\IÛâ÷^õ°´œŽ«»g[Žm‰÷l½˜oK÷.,Â!ä~Ìèu[0SÃgx ¸ÈY¡Ìt!NN3»><âï<öéos)7%ÌØÌ®cH¦»³Ð°Ñ£‹>Ö˜y R²“ÜågèË…é“ÛSæPN‘ðd.˜tJTÀ\gŒeÊDm$§#3’ˆdz= g,€}ôÔÚi™†ÈdM‘Í3 D.éžQ롵ƭ×"±1„²/zÿêÄ×Õ"1z$­¶¦­çCã”ts÷ËÓSfhSdx:£”R•›ôŒˆëõ²Ù &Vá[É}“Ðð¾,jìÉÌð¨Ô¼×OUÏ:c g·¦|~uwwÿªDˆ“-]{ãÞI‹üÑý~Þ¿?¶ÝžthJÛ d?ß´u»†1  Œ IDAT=q^·5„¨©,ûˆ"³@QåÞSØm˜Û؆›ï"ô/èªÑØ3ÖuU™„»á¾Ú8õ¾Ç¹ jMfÎ*/EB4Uƒ`cøó„z2‡¹y”i”G¦$„§3ÍͳtLD(X¼~r#E{õʃ#Îpø ©œîv DRziÛ”Åh!$#TéîØNGMR2OÏ2U*eû˜™n†)±D¤(-K7÷ëu53ƒ"E¤µÎ·¤žÿ~ Ì¡ë Bmqå“R¸÷Þ‰ØÚ…°v$n &QAE=-ÝÓy4ÊF¼09œ54U²¯5ƒ`RÕk±¤ RÕs?2#AAàôy:)ö…[å—v©#kÖâÈë¶šªj•@(JÓPK‚ !±1.×k?zS"Ša”šQ„wwY~v†Â,C¹ìH‘<ål¨¢“òEZ±L/‰òf×íóme@ÎÛ¶äL§õØ-ó&׉ÊyÊ=Y%A—m¬ëz½n™©,Diëìªüù&’ˆ@x8—q€¥5¾V¨Út‚2ˆK˨bÃëÖv³m{²ÇǶôåxî½1Æu¬ëõééñz½¶¦½Uµ1÷ÞY´älÄRu3¨””{pG‚w3üI/%*uñ Qhùôlªíi'RÂevË–åyV¨+KŒŒ[¬LU%„í#†ˆ‰|Vˆ Ñ´@—¦­7V}|zzº\ÜC‰—¦Ó…8'Í3™¸U²rÎþ¿‰’Lw‰ï&~w{ñDÆL6Ï£4¢äJ+¤[’F®›ïÊr D ‰2Ѩ˜Ê “ዃǾGìžÔ3'q²A´GZ!Kéïáe£dñe-Tгz÷›Y£‰2Ó0Ëõz´)8 wªŽ àz]-æIÛ˜s¿œñW¡½Rr•¨Ô’)S™·–wèm7ª,)+‰»ä­((×hÌT›©nÉH¦‚h¢ÂއÃg~ÈÍ{ãSï…å:S×ÿû½}¡´ŸñõóÒ:ƒÀ{/•;P’;U¥&Y<áôð)@åúS=íçk$ŒiœÌB¢Ègg{Ę̂›„ëFªàîˆ43$K_:G8º—¶0P¦¹?H¦ÜcÊ"‚é–¼“·ñÄíƒ`¦^Gq¦¯×M¨÷…hW]± kTJVfŽYiòÕr¾Þ˜B`Äœå4·bp™ê·òš£`æÅÔŠÎÒE—ÅqR²@έº?~iˋқC$™Ê‹-.×WÂ2ƨ3«õ¦­±Ð6Öǧ§ÈÆpöÁ—”5<€¹$ dšÍÄo'èÕ5G[3g~†)©¥©ºiá0@|£ù°0ÍtxpOjÍ"")3ÔøA²ŠÆòëi^Y~¨Uv•¶¥Å%YFX¤ÇØqwìËÒ""@D:×ÙÎþ*.ìtŠ0»›¹TË7õq˜å O¡Gxã²Zµõz 7Õ”DˆàÃ×udDÛ+¥Â†‡ ¦R®Zúô"¢ŠPU­[¶€Cï˜*möOÎ:§X Já`Ðår=ßñ7¯Ž?>mö%¨jîÌÄÄîž@WµŒmlJ‚0›ÙÓãSWÍÈaƒ˜Tåp\ìÑNÇe]/×Õ¶Íž¶6ðÞ?â¾]vøë6ÔʯŸ(ÿMé„Ì0ÃŒ"fì$>\7ñ¤í¥Ã3+2Üã̇pfÄ`,.òyô6=‰Z#¢Ö»Ž ÂÇ»3„±­ãéÁÆØ¶-ãÆŸ¬ç:Õw ãŨ‚žˆ±Ïñ1ÇW´#}̉jDžu*·«ÐÓœ±ÐÂÌÓº®žˆ™`ˆ$=·/!Pácd„ƒjKRû¡gƒ’¸‰,M‹ î¶QY+’ä¬Aj/r‹É›í’³âF<à HeÔ0½ˆÉ”‰׬G,J.}‰’jŠ¡: ™:O2S…3ZúÁšr‘0˜Çp°´®6¼(4#–`¢ôB6‘PäXÕ싾yuÐ/Œ'¥ÃLD(çJ2­b=¦‹³G\ÖkÛÑûÖZ?,ÔÖÎwwËñððôôþÇ÷øñ³¹mÛV÷}Dª²GLðUfÎSîrêyÄge`¸Ýî™é1ÿ˜øj­³—Ë´X, öŒÚ±P^9¼†‚%¤R!mR\‰å‘œJ1‹†L7£ I0óAµ»…§ZRvEE&DµwÀž8š79‘gº§"…8"|Xy;âÖBÑ<ˆ¦Œ1sN¤Í†D@•™ªFÐ.Û˜*jâ$PîF@EשC&22C"™0™ÁÌÌQºKF Ø) ‹BÍé¾t=ô;Ì}ük/½„5BJ[Hë6,Y¤Ô&€ˆ¶¥‹* ³pgj‡…U<‚˜¯ÎwúÕéútÙ®BYM4]¯×̼u†J¸…Y5ea¢,ÒÆóŽ»Ïqæµ÷T;ê.»2oÓ¹ySÁ;iP[o"2é4ÖÞ™[€H Lä6jÞB˜¥Gd†°°*íƒÅÒè(4„S±ð Â)ËKa¦²n%BdëMEø9èqóžË!fÉL„(gˆT<InÀD*•Mj~ʤ`m:g׈ªW§pRådBŽánÎÄÊT}<ù'eÃL¨©/2އ~:>m6üËòŽÔp 7xJëÄš„0k­«*'AE ÷eQUs[i D¶­ËaY×uݶ€?>>dfSY”›€Æà¦iÛ†Ò e¦@¹ç¼ÌøÚZ¦æ³`ÅN–£ÛFU´½«Dv¡16[#fXÙ+S9%‚D*²Žu¸ W5àäž‘ *Ì­z}™¸Tî:‰œ&ë@„ðÜ#‘eÈ[D%&Ÿ ³¤çÈq ’dbUcÜFÁ„[` æÆÌ,¬RÕ,:mŒØŒTQBõÛ<¶>1kuë™ ( erzÙr–ÇY1K•Êá&L‰ִiSíbÈo>ÕzS‰rsáÝñJD,Ò¿¤ùS]ZþL ARx8(‰Çóéî¼>>šûãeÍ·RžGåH‚$ÁF-Ó˺®fFÌ¢J<C+ ¶f…•}ЛҞD?÷0”)Geíšs§¥g2Wq™Énv@³2‹Ê¦™ÃUÀ~ì qEEÞ®Ûá[Ë¥äJô|Kpaë™eeÕâùßb,Ç© éêÓ^œÃžÁ·ÕɼÃï"nðð‹ê|ž D³À•ML( N02 Iš š£/Ô#— é^3æ:+bÎïç½’»Ìžç)¼®_Ü¥\ÆŒô\m€[ëíþõW_½}ût}¼þú¿zs>µ·_ m9¶Ë¶‚I¥§°™]¯×ËÓ“› ©YhcD†H@]´GÄõz°,½ÐPîÝÂ=-—©6sÎâ·Ý“2ËCJh§XÏñ+ž!ZR"w×ivN¥!äÖh_ëe»š™Âòrkfµøn;‰ta{×W„¾2!cIH!5‰0v±Àœ‘LÈ3‚PxIU¢³Þû}Üî€ Ì g¤ÜiHmùŒ‘”DjËÕÛÒ¯Ú èQî7mÅ>@žoûfuAÏwEѽU{F–A,2”ÑTN]¤@Ö/éÒ$ òÀrXî¿zóõ7?¹»;EDZüÕ¿ù·¿øÕ¯M‡¤¼n,ã°,'ïË£öƒ.§C®ÛØl{ï½,#¼ Ý=‚§4³Ä’c¶í5À;“¨èZÛ VæVÙh3ê,  +“‰T›L mx­¿Þ;7ŽÙbß¾¸¼ô¼·»=^d'—â:2ë\#hW"$BÍÅYWe¨ ˃DîÏ”¥vt÷9­GREöp&XY¹õVû8ª:ßw»yM–ïèÁ­.œ”kõrñ`BHT{Â,D9Ýè] Üõ®"_C*‰bŽA$˲¼º¿?Nm9œï^Áâüúþ/õ›WwgwÓ¦­5"0¸©›;URN¨¤xUÅç¿¿;U-øü´LØ;!LrÚÔHåMXµ×‡Åà)6öYŽäÚB²PK™›Y¡<"Ì‚r´K*7lìµfíp7r½¦ ‡BcÖ¢ûš|ßø“nô™˜ŠŒÂ{g?@É|BTõÐ{©3-7ð :~Á½=çä2ß¶ÏÌœúœÛ¸µ×ˆÜœ%XŸvµÌûš ª¢³ÊWavfŠ`ð0ËÌâö#ñÕù°¨¬_Xž‰F„‡9ƒ˜ÙÍfÂ0 "¯^¿:½{ó«?þù‡¼?-¯šti½wmºùæe‡›“š›;_S†ÊûŠ™ÓgìÕUÓT]I&Ü‘·tH‘szĤ¡”n8²lØP,ùË{e™Ì2G[5?œiáU5NÞç\¢ªš a! ¬jQtdìIãµôPè#v¶É¬îP¼ÖýGî–IDÊBóÝ‚vcÃ8RA2ÿ°ïŽ·r9wÉÔ­&yùW˜^Û´SHoÏ0á-Ôÿ©îR9I$™›9à“Ñ•”EŒÍçÊ»ŸA÷]M?]¾,èT31FfÒéx>œÏo¿~÷ÕÛ¯î¶=³ÎgaÕë¶u¥ƒûr8èÒIDº:põ±…Œêß Ï¦J"LPm ¾—h`f e°›*´ÄE­OsOfH%E qEzQŠ˜IX´`K I²H¥D,\ë¯þJT” @„•+)v`mQDT!ÞsÏ£,FÔbE `çѿψ‹QTÉmQÎ-1Ê>bj*즎¬Ûõrã¬ìžêòç“§+¿µ”sþ¼êÍŒJ#¥$vdµ­žŽ„»•Ö&2£:¾¤¹á†â3E‚‡ecœšþ­¾¿õ¥œJ¢oß}ýîÛ¯ÛÒϯîÚÒ2“EE…@§Óñxš{º í÷Ãí•<Ÿ'·ó}çùe н$»)@,Db{ÞÛ†ç‹þ2ç0 ¨@ Lp±K9²Ìò ÕVþ•0÷ÖÙõËbñPÿÉÏþ³Ÿýl9>|ú¢a&*$L"œÙZWQqÓd\mãUX˜”¸ÉáxìÇ¥°CI#NáL„ЖÞÝë VÆ~®9<"‚|ú½ªØ¼/6<ƒb"GÀmìOQB ¤,S²Ÿû÷] ˆåÅœ{Ãëa1ͦj/UùE ÒÕÛ­Ù*n^ºå^΢H€O;‚VˆÒ¾°ò¦›§5fínfUïm\FÌ3çëò$MÝŒgöYFýaŸqÌþlÏP™dªQ.X&W‚ˆ“Ë;žaáL”;Ù’™7ÜõÖ~9—~ýí7úó?}ûîëŸin”´jBC,|ÿúµööt¹ÜŽ]ÉÜ×±ñÊÜ¥S¯£.“Æð\×Ö»ô6ÜæÐ’ëKªh¬pwß{³‰ò®Ž¸-&ŠŠûð¬/œ˜ö$&"ÚÏ[¼œ•ïHù3m…˜Ø¿ÐÛ½6þZ¸Ó ?ž5õ‘îÛÕyLk"¶¼M 0©}ÌÏ€èäáéåë¼í‘·ÆLÔŠ¦Úú"ÚnÔó-úÛÕí¡ê.zÙ¤˜8© sóf─?“Î)£QxÛÌ9Ëñ‹’—Ô¥ÿàþÃóýýǧÇ_ÿð=5‘È(µ˜‰Ð[£Ì±ŽŒ`]„a—ÒÔƒ‘MÛ‰·Ë÷m¤êôJ)šJ2‹Ù¸^ ÑeZ’ƒå¶˜æ.2©Ða0¤@IŠT¬'âªK3¦¤nâ‘@Üšåjá+¯‘w‰Òº®ž^'50óÃg­\6ãµX3,ÌÜ,bŒ1çÝ·U•óL*ŒocÏ: ²JÆÚ§Lsñ²Cª½‚ |€1³GzX&X6ªZÿ}¾Pù¸3 Àmç»ñÈÀŒ:üA@"À@© ÌŽDXVnO›y˜‡ ³áÞCD/Û—E6 ?ûÃ?üůýýû y>ê§Ë¡­MD·ބB‰jÚÌllþøø´+£ˆô¾ „j®3b˜eDUp…B×wif6¦×f=)ëså>¿ub"Ö©­âI˜ÏˆäjÚëû›Õí~Å~ŠÕCmÛv3e8€J¯(=¼Ø^0îjWŒm[×uÅî¶.ªÈâqÔ‘ŠšçÛìöúo»Ým}£D¹ sç]C#Df¦ÙZÞ*‡Ûñ]þΪϛýGˆÛ ³ÿêsÕ dz£ªm™àé%ý¥g€PÞ©@’¿4Y)ýøððéááñééîþ‰ŒP°¦[O7Õ&̇Ãa»\sÇbªÄ2sÏ5­5ª[Ÿpk5ÉU‡QJ5åÂÛ[kc ìµ²ç]@’Y%gÞNmÚ7?š'ÏÂmaÕéwkYö¢Ìíý¶kzî‘y[Í·ê³þIýò¶]K´~û¤f-HD5!­sßì9Kiçn¨†šš˜pc‘$cb4iˆuD†ˆdx¡ÎõŽÌì· t¢ªec¦$àFˆÙ½ï–ÀnÐ ² ŒbC—û»Ó…ªž¡[Q æ "zúR¿øå¯®×­sk¡=5àD(€f~뢇ÓñáááéryuwÐZ#âH€ÙÍÖuS°Á/—NiKY±¶&­?®±èá”y­¶c†›ííÏnÄìä„ÉTÞa¹ñ¼x®‚ÝsO‰‰Ìm3ŸzRhùD?k`hv+I±ï^õÇ"‰òn‚Ò[¿‰ònåoµµLç+A•w”DÜä¹!32f%”Aá•Ï"b߉ëe˜ÍíöŒ™I$D±gsˆøæ{1²×â@ ÈŠ\;%Õ!D€8Š©›t{SY¬4’a_Þ¡ÿ—ù˾,çãAE´5@«Ï fd¬>çÓý韼ÿñÇu˜ÙlE[£öXéF¢ ˜11fPUªy)r˜™ûñx’~ž!ݶK©¿ÂÐb7ô›Øi)ˆ‡™YªêäNÔ·1{ìnñ}“3)‚iQèA¼ð tO¿-‚[çt; ÌÅQ_`8‹4mSùþ[cOfNæMÍHåH"H^¥ƒ³-š‰iEÈDœ’…Óthá óUåÚ ª&®ÚºÞAôU§¥¬(Žå‚µOJÜP¹Ôäå-Á*Èð´b¢E |Y"m3G„{f“ö¶,Çãßõü[\š k_´·ÖZÔ'JLK[‹¼ùúÝéÕÝç?lfu»Ê˜¨·ÆÂ›]‰Y»0¤¬µ[ki›G’êai‡ëe¨foMHšt*½Û ħbYZ¯v 7tÅÈÃòdõRÒÔ,<áÎLÂ{Uà~KœëÒ-óyâ·{ççIÇã±÷.*·Ê¸åYƒª$æék”åÏX¼m",…WN‚d2¡FjRÂûšÿ'OÊ)':³"ïÙ=ÇØÜ£µÖZE©Ä¡èV¨LâiìÇEÄŽ„d&Œ˜Œ¤ˆQû'^@›ÖŽ õ/Û ‡Ãát>·ÞÁœûÍ] B[é ô¾ÜßßoO—ÚˆŒ™‰¸ n OçœSj&qŸ â57Jb·Ø¶€2"\ÊKÚ`&*QÛnôË™9ÆP™J`¹Ï„ÏÌI±¼5 ÍÌ ä}ê=÷ÊÛnê6F„ßà¦[ã•;¦;WjxëMzK®$é™)€^@]„9…ª0ˆ‰nGfq —zÞ†™)ƒžÓ2Ê«Rƒ™³6zš–³yê½·€Ã=…&‚”I÷¼¦°yO‰0K¸Á}ËÌCÃt]GmÞUú/lš_—.§£öV\ª¡“¹0±!¾,?ùÉO.9F«` 8ˆ3â°ô¾,×m­ÏTTÛÒZ ¦²€S˜(C ]‰ác[©7îÇšïßASQªÐÎr%‚ÈlOj¦Œbž$,ä¥")ízõâQ© 1ÃêjM¯è•1ÂÇ3~)€¨Öþî#|„{ÄAK]-9!nù*ðªaXìuvŸ&™¤±bάˆP9ÅõÞ’”›»ƒÀÂ%›- .i’0Ü7·Íí."Úš_¯!ªÕõ¨ˆù,fæí4+"§tFhµ—¶Á½+20jÀT6öu½jk­µO_ž €.ÇCŲãX˜kœÔDh¬æ›ª¾}ûö׿úõ‡ï³Ù`j<;]Ü&á‚Ì›ªQx¦‹”£Nô.ËB*ÉJÁâDî‘Ä’Q‘ÖÜ<3á9}ÂÊ1¬"sfleù„¸ŒN޳ gòΞ=÷dЈ6*š‘ò£}þ0"K"—¢e¹Sj"ÂÍø”è„U/åf¨m'ñÖ3 IDAT82ܤªœHbqJxHY·¥GA½…ˆän«A»e3w)2éôL«ã½î±1<¢÷Þ3IL’AØEú^Ÿ³ÌS>3c Œ«{ ·ŒHD"“D›En%Å@$aƒEzïï¿ÿø;X†ÿ—ªˆ2+åB¬ŽÌ•š¨18‰ùx>OÇ÷™î‘Z³Á,ôqlÛ­¡b4gp¦{¶¦€E$ ‰4⓲(ÀÛ¶1·ÖZ­È1†–Á‚»Ý«Q¤“=,@ŠÉýMLIofP@nÂððá£Òu]«£//‘›„僬3Z$Ý“ùö "ã僣Š?`ºTî»)ƒ%0mL@T䘌y??ó }Y~Ì׳¿5Ê,~!²f6ÌÀÔY"’(›H&Õˆ¨±Dæ¾H«•ª #ŽZ¦U’»»Y˜‡×Ƀ¬§xÿñ3}yŽÑÚ&­HÛå’÷š. £9çWw$|ƒÍ3н^³¾)ðÄЈ.,CxXŽÇêò݃I‘òÄÑÆÌý6Ƭë6àÉIc«Ïœ\ˆA¸Õˆ5agÔ±éé‘@¦o±mc3«Hs'¢r^/æß0æ^ãffq…@”ëm¨hMŒê]ßpYÜÈ9“OêQkyqf­B­râÅŠÇ>‹Â Ž3ï’ñª"n—‡×®/,)®éØ"}Cu Ú‘†,^`ÞWE2t[ ™™#b37w÷æ›1÷eÙ¶íÃçÏ_Ú KïîÞÊ}œ&KgdTëÊ̱pR¹óU?ÖëÓ¡;›Õॷv8š¶ˆáM§8_D„Ä"Zïy£Ço#™Á²lj…cW¡´Ö’&Ó^ž±}Ê¢WRRÌó±Xó,2‰Ë`" ‚ùiæ£8%cŒõºšYzx¸0kkÚ•åïP{&2½Z‡ˆšè“¹Q®ÛF¢8ù4)€µ˜2K¢›yDN–t3«°*¤ÂmRnÔæÉ‘·µ»C÷U±d¸‘5èÔ=H@ûñ(f>,6ü‚ZkÌàY&Ϩªöˆ‹j\{#I9¯$€é*µÓ²æ+R£Ø ˆ¤Hɰ°±mÌÒ„A,"eœÍÄeÅA‰±Ùº® x–1Ý_>ë†*äkp˜ó-!”DÉ¥0´ØÖä@¨Dš/Žw`~s…:—ƒR9vD˜´7 F8#UäîÕ+KrÑKÒ™Z ‹BBb‚̨ƒŒ™(Ý,#j—jÚx2íŽà‘e¸W…‘—«Ê‹‰v½ іñ£Ù€½;‘¨à‡ðŒÈR›WSR9*¥£BJÜ&´“‡6Fp„bxVgff^w¦À™8'WkƲä>£œU¯ï·âmjp+ßkïD)·"ëHöðaæ>ˆ`îÐÜ.Ékqïì¾(Œp2  Ðî©’-ZêKR>¦€ÇNpÎuŒÀnQü"íYªÍø»]«K[kTΠL“ñ[ [TÇ)« ëX×ûóWµ©EÙ&ïxÝË·}BŒl­!nDq°kŸÊ¤Ê©±%ôÆ¡Ìu™f&;ÚÝ1w?d9&ËΔÇÎ õô1lÛe½m ±,sL€ª°ƒ¬%ôPâÂÝ«YÞLìÄ+Ã×qI`D%4P€´•c–‰$*ï!Ÿ¿r"-S£aƒÀØ’A™x 3v¥¸#‡û0óð ëÍrtˆ¦—ø›˜˜“$öð͆GW†GÐM03¥LÂΰðm5Ÿ ÓH÷4÷ÉŒ²zÙBÄÂföE¹ïÞ.Í]L7›¼ð.2!·¾ÆLÔz?ŸO_ýÍãçfæêºý7¤×\ˆˆNÇ##¼¢i·-Ÿ“P’Ú…xIît8ÝÁ:%‡Y£Ù¸!«ÕR§éžœåt¹^†[îœf‘I0w0#1ÜvèÊЈ˜·Æ­R¬1#š¤z#‡ëõãÓÓ¡·¾,‡ÃAÍê@oM¤¢ÑŠ€‰Ë—шÚÒ§Sk²­«ñ8ÜÜ-Ó‘Nâa[DdÂ"+2“<¬^ºG¸[‰jdRXÆtm©Ð¹BÙØø@G"2·:yæÐ¡ "³ O‹]Šà9ܶÃÂ}lcl#3Eµj¤_~züÝ­Æ¿ñÒôÃ÷Smž‰=lr²5}óöíŸýÙôýŸÿÇ?üæ²]ïçp'¢¥7NŒðDÅÅvfîMa>Ü[ïª-IœXú²ÂSL;_¤·`Û6ˆFIJ,xÑ^d:kËð1@Á²DÏ'©»›e’G]®~نɡ1qµScؤº¦—5M)1(ɧ±í¦Z 'Ìz:‚ÀŒ*G£`_{Š]~„KJ)a¦qrç$âny“‘è[7üp8ÞÞÞ~x÷&Zƒë8ÞÔˆˆ<•¦ÝN´7ËögxäÈžBšÒ¶41³êwtýˆPÕ’·òœÍ­Ú"“oøtÿ÷¬ÆÔ-"‚[kæžû»÷D*„m°Z„®]iÉ<´õRƒèáÍ­¹÷p Ï™{3Uÿoÿå¿ùÁvâ\’$=ÈOD­ÕÝK*¢ŠªÍÜk)\ 3Áî°ùê“»»ï¿ù¦kE¢7_ " tˆn†fæè¹€‘)9­+¥2¦Tƒ„ 6‰`6gDÄ–”4÷ ¹NÌÁƒ˜¬]Q™Çã·wïSª£îÍ:bIfI×g€«3bM$I$–e&æqÜÔ Š £¯f" ¸pE–Â,¸™JAà R'®À‚¨„µÖZ†_çKÚöÓ¤lºZïÚWwg3m=–¾.ëÂÌEŠ6'bíš¾R‡hÚ$£nÝ„k!¤"âD E¹«4³`6aR5&bâ͇œ#:@oÚµ·e]>ܽ]楷¡ @j6¯+àîås355ba¦u]À{­µ,ëºv…$W¹™5Ф5o3¸„0­êFH„பÖz»¬„”©¿}ÿðÃîÅ?°d¿ß«jïÍLM•ˆ²­èDTj…)‚U¬7 ÃãñøÉgŸ~ûõ×o¿z‚9K¼-0¢dßÓcæJ ê8ÒÕ´MùÖ¥Héá^K¡äüF²D˜T…L÷¬¸™ýI« ›6 (ÃÊ5,,ˆ®M-ïRvÓ`fÝZ×–G‡€ðÞ­÷náÑz#dŒˆ5º…£š®½#±‡·Ö‘›×*@®æn> ­­#b)‚‚ÀUˆÈU!@Ãí—y¾,ó<Ï…8ÅþéúG"$†À ÐnV˜Ù´UÂem+—ºõæ„Ýò½öLʦ * ÐÝ1‚<0{êa nêìø7¿yýÃîÅ?°dGjÝL‰ª9,k;LS×È(,æêîã0„):FÆãñxs{óöë¯Í0‚icH1åEÒ7 е×Wm›ˆ¤îÎ= íy Eºþ;ß&¯ÂTSló‡­/¿M_të»0—Z2K.ÈÙÃì«5gFÙûXK•º®©µT‡°prƒ Þ7»_@tmEjxs#MÛi€yäàƒšöXÙ]¶–º»™U¾¹½1³à+Ó=UÕµ¯ó2ŸæË–fK,"`žÊm5Ó,a·øæ("b¬w׎µ2’lF Œ\‚Ÿ®¡©˜B@T#ô-Š)bâ¥.¼´Þ#â)íǹäñtFÀê}Í“·µÕÝ3M - µ6Ô °yz¦iBŒOþ³×_þ¾Ï˪µr~"Ô;0 Ê& B#@ *µäƳm$ WæD!"Ü „ !Ì<p &ÍDDó"¿®Py‹xX€›)Jab@”í°Ë;ð8 ý­Ízl"› ”½~‚ˆp$Âðî¡a¸™£e*£TA¢ÖÚz¾³Vb¨,UU•hM5e ›·Rw_Z[ÚÚ×y]מ<ÍZ‡:0¢švSwCйw‘Â¥Ö7-¥°È0N­­KïŽãˆáDŽáˆ@iåå«ì+1¼y‡b¦8i˜{¨››‡B€0JD„~_Ðøã[ÒU«”R*`Ìó¼ÌóX¿/êÁ€È‰Žˆ€çA"òê“Ožôâý›·ÚÏî^†ªLØCC³í·Ô®nèÔ´×a€v•Zͬ·%1¡®Ú@ѯŸ@mp83.m6·0E·œüR ™ ÐÕ¬µnÃ0¼úü³µµîA½ mo— ÚÆ¢…0wâ!\ýJqÂn¶ö¶¥ 0¥Ú„)+Í' "ú•[›¯$ò¥“H¶Ã¾/ÖÌDø&ÈSoj½wó(ÂÃ0T®ùJ -ÙRÈñ=Õ¡šEÆ.F’DD-u™—Ýn„šê·­›f6 Ã8Žæ~9Ÿ=âÉÙ×{w÷Lq«Ÿ»-«/ º2¡”­PPU)2 nh5ý´›—Y¨£m„­­‹$‘apEŠ·ÙÔ°\-.[ŽÅ¶Ss¶eáêÞ\»i÷M7ŽA™é¯ÿ·¿ýAöß¹äáááp8Ü@¨™…K) ={ƒ@HÌ,Œó<Ëñˆhá¥Ê$üÙ'Ÿϧs&cä,~Ë5„ˆˆ,-ÀrîÏ$"ÙBBÞÄù@©É•Hä-àiÛ"Gæo1ƒ©]GSpÅÚ<ÍW·¹@ …s ¤Ö×Þmmº¬™÷A8 mò¯Êœ’?ó­ÏJ„PÊ` 1ÓÊ5ò^m™¹Y03OÓ$"燇eYvûý8Ž©æyò5ä¢0w£4r) fn ÈìÄRR,‘_—+C[ÕÔ,<È‚#È <Ìź–+ÔƒˆÖÞòØIB[2‘rÚ„ÄAš!/Ð[w5!eøavß½¤ŽÃn¿S3wcSU5ðPj]GI×6ãe‡RJD˜Û~Ú}òÙ§çóÃéñÛ7ß¶Þ{êÒ‡‡¨áÜLó‰—R¾”¿ùUèdy mÉ/è„aƈDæÎHˆïo…ümq< )“–ˆ¥xQ’ûÇËÝÝ»:ÔÛãqÜí«À^œÃYÊ$ ‚j-¥b¬ Á¼Ö„¸@²0zW@¦RJ¾Èºº²€ðê¶Û2Áœ:‚ì„‹ KÂá($1á¦êèîÖZ’«ÀÁˆ%%½‚ˆÄ᪌ˆ€ ÀˆÙ”5w‹-]ÏVõ4mêÜ€eYÚÚ¼»uR¦2þp;ðZÒÍ.ëJÌC)‡Ýn]–ù|Ñ€,\ú2‹ÄXI¯ŠÝôUšùåræ—¯^ž.ç¯^¿~ûþ}wBÀñd8@"ܲà7œAaHŠÈº¬kk¥Å@u ÉÜTSwW„ ÓP˜!…¡Dpݦù ªµæHÚÌJÔ±ÊÀ»êóeþòËßûÏKþ‡B}eïSv»Jœ=2E ¤(¥&b’uYÓĵÖ<¦SHL9‰5³ÛÛ›RGSm½ 2!rEFA©²›vH€Ww—\±½ˆˆ9̧ÙÂ.ËÜ»ðßïk-R†m*Ÿyª¥3,Äà]²0³A„šš{3MDt_[:×Ö{ï^km׸îtþ»—>®ëJD»Ã~wœDqWko-‰¸oÜÄo5U€&Û%‰Ñ¯ªÿNWäfÙþËÛцeø1/‘R#¢«F€™].—yž "–e‰Zëù|ÎIfï]„’yÞ¯~öù³ßõöÃÃoÿu&&éËeFFT³"¬™w°´æu†Bœ3zWsÎk; ažæù8P³T›áK„¥féfij 7*’ +.€Ò‹Ï$î8I}ùì¹ }Ù¿ž—y¨Ck­…ŸÖe¬R‡…·‹ ³‡…†:`5/ÄeÆÁ#Š]‘™j_¼xADæÖ×Þ—%?9¥Ô´‘¸û—’W(o½G¦¢›»6ë½gL¡™=Þ=ž§2ìn·Óa$šj)¥ u`BKfž»'V˜Пl-®fá¶åïl4+‹Ð¼Ï™¹»”â½-ëbj<èGÿ4…€u]×µ1“\EI¥Èápxxxh­µªj9ÛbéA,Õ×50–e™¦ýíó—/?ùüýûùÍoIj «Ã¢:ŽcS“bM»…ƒ©š ñy™‰hG¡–AݯÛt{Ya¤W3›ÿhL¡FÌÃ(Ül3¨ÄÕ— J’ÐS²™î<†R?ùèe(žN§eO‚—û¹^<{v|v@…Ý~:S©çÓcë *µµi c T“ÂuT‰E¤”ó… ñ@te=[>ÔÜÓ`j檹9e™["™…@ïþöþCX z_(<{~óêÕ+¨Xk†*ED(ÂKaDè½Db €À"(þøã7ß¾¹yöl]–¡’9cvïݹ{ï áÞ#H@psK#.äål º17íîÉ«z"õ¹{0…û†¹òDó8ËnýÕ €ÄŒÂh›OËÝ`H “Ú4 ‚ôN;S˜Çããìê¯>zÅ,àÆÂ2 C k¦ëã£;qPD8ƒºuÓ¦½@¸z[Ó‡ EÄÕ‰<ÛœÉõ÷ޏáÕK)R˜ Ö±,½7íûqϵìNûùñ‚…Hm:N‡Û㸢” T«ƒݶ¨jÈ€@øÎëCjªªî†®=Òó<ç5QõÀÿîúõ¸ÿ˜%kkm]Ôl¬¤Ùí¦”ÝX?ÿôãÇÓÃéññ°Û¯mM(sê#E ™¹9¨ú8N/?~õÙïÿùßüÍýãi¿›aíZDVíU ]ÁR p)Y¡öÞ#œG)î¾Z àðê[ýª/É}iîLp8l)Λšû)¯9ÍL–°p7 R ¢šêXq*%úàVç°f‹­}—N@T_`fdŽ¾Ì µ`¨$¢­kf%¦†ˆÑûÂë27 Šq7t3šnö¥H¿\Ø´N;yÑúïN¿ 3 {v{³{vð­¿Š,›û'߆Tc~w¦ yK€‡mâµ^fBpSó-ìÙÜ[ïŽËyQ3f† ?ú뀬ë:ÏË8ŒûãÍeY/+Œ¦ÄÀœ¦)K#¢e^Ãaš¦Zjk RYÚ:ŽûO?û|mý‹?û‹ów¿ùú«/#àùñ ”wÏ: ëºæ”™kFp7E‘ÂÂ1ðHD~}‹]¿‹|Î2"\UåWÍ?¤QŽ9»T‚„œ¶MõˆE*‚ óaÀ÷§“Â%Ö~ÿö}€K-¿zi8ÓÜ—‡Ó£™_¾¸=à2ÏwîÆÝXKuõ*UWuµÞû²^±P„R‹V3µPÕñxdb13u;ÜÞDøƒöËéQZ{6ML’úЛýîÅíÍPHi‡ Bùéw‹p„Ít`\ ð6ëڻ鲮"ko­kníyíçyQ5 ‹>7†Ððþاbfûýaš& êªÏ¤ÀÓãeJ­<‚‘̬”®Ä²ZspÆÛÛgÃ8ÊXB[[ÖÞú‡÷î777,\†Aêà§Ë¼îG)¥«~ýõ·skb^†zîzž›ÈJþx¾Ðe¹Ù>}þb7 ¨^‹Ô¡ÖZ’y–`¬B$ÕÓ4fDb5{š‘š¦i´!’©¹™«Ù²võ¸,+£‘soö¼~ûƒîÀ?jI&Œí÷ûLq&"q3+õ0”ñþî±5ME^DK–›¦Äæ–^Çî!µÜÞÞüìgŸ?{vó»‡÷ß¼ýúçŸ|×-â[짇)ëQU}J#I¾ON±;„›W€hé˜j&&&3w7"~brçT1Ƕ\JR&¾ß¼ÞìC-]×ôUêäû£ åÃÞÖþá›·¶ö:ÔnJjÖu~8‡i°ö¥O/<”ŽDXv#‹Ä=Ê4îŸßfÞ¹Bw`  eíoß¾½\f¼yñ<¹(óå2xðË|;íã®1Ñ0 "Œ„qµv{ö˜¶ôWË~ç0 9kÈ©3Z€zÊ(¡õ–4ëiж¬ëššÔ7—ßÜ]~˜­÷ÿfI’f#"£J)ÙÞ[×þðð¸ÆZ‡u] €¹˜F99yj*ȪÞÍUŸö­–W¯>zõÙ'>¼;?Ü_–ùx]БÐÕ… außí4Ža‘FêPw5;Ÿ.x:îßß?ÞßëÒ©ÔaÆó‡»óýý裛›©ÔZ 6,(IìºÆ?ÉèºÒñ¢ª]#‰¾ó²ž¡Øç4 IDAT.5%æÖššyÄâBŒ@ÌKs)å¤öåÃ2ÿø!þï‹ÿëÿæ¿BDw?ŸÏîžzÿæ›oZë¥Ô^|Ä,×¥ ]b™4.bî‚Ì,0ÒÒºGt³‡ÓéññÜ»©êšˆ(5³°n"¥›­½ÏË2MSÝíßœÖ7çå'P™&N"ç¢ù†¡Öz¹Ÿ³WF}מ?ÂÖÛÈ#­­I)fÆeã?«wbÞþË¿¼xPëïÞ¼}<Ÿˆèöæ@×Ç<‰ô܇a`fÕffUêˆY D8¤š¤÷R)¹Ž]3ÓòÁ¿éDE˜yÇ|TØùÃP ×™3{W$÷0êºÚ¥@ìv ”Þ °Ì6÷Ö‡iÜ »@¬R‘§azxwÿ€w@¸¶uÜïHdµ¦—öÛ_ÿýqØ #‹LuDÄ~ºœÞÞù¼„7%”ç/_)ëãå&µÛ4í>Ú+‰£¹"ËXd(ŽÂWÄ÷~ø}Á„»wËø G&7Cïº,+™E[É©KàÍþ°(|¸´!|ïߺ$“–e1÷:TË¢Í0Æýž®Ÿ×Tu¤€’¿÷®å¼NJQUOu†HEÚðüÅóÏ?ÿüãO^ÍçË<ÏC-Ó5_6y‹P„Hu³µ5!ÁlÆCæçKô#!†%Ö&…%|Å*¥Š/ÛZË×I„˜IÇ„­Ð–Å yB &’qr¢ kóÞ‘‘¸HBAXÊ8Mx>Îç3­m-ÃÀ‚Á´¹[ç6—:Ô2#D·‡ûû¶Imª­©P=ì±\Úãë·{Q›DÀ¬§w ¶AÓŒ]qUÿä7þ¤vè½;x3UëAy’ô–Ú1³ìîGb̰Švûß}õîòS8îsÉÜWç±2Ôi·óðµ5U%$ÊGi)eš&h­eט9kYD²È]ň˜ÜçÛgÏ>ýüóÏþóßþæ7Û¤®p .­»@tÕZk¶3™"ÖÖ”¬RIÀ%6‰Õ¢¡9 2 ’‡ãU!úݨÚýI*ïî™áSpUd&$ìŽ@E0©Ö¥@øzž x6”Jq!NÃ~o½Ž£ ›Ã°ß«*ôÞU…¹G»,Nx¼½¹½ùx7Ô»÷ï/çÇF‹™B#3ÅXê®çÓÉÎsím‰YÆZ!„,¥¢g O(É+~?¿A 7 %p ï×€VDì½_.‘ÂÌf B['âqQÊ7÷þSy–ð?ûÏþÓT¤ív;"lk[—%<öÓ´ÇÞÚããã8Ž»Ýnÿ<–™·•°‡'¦õ„ÀD»qBdzww>±ÐnÍC¤ˆ7 @÷¨I•±0 &`¤ìk3[DOXˆjŠV“¶‹µ– B1ÿNÃÕúny£'Ibÿ†ºÇTód˜ã˜ö—Ha¸0’•R#í‡Íôá|æ¡>û裾,½|>Œ• ½øüãÛW/ŽÏoo^<;ûÛãts3‹™“P)T*“Tv÷eî—µvSÊq§¡£b„’±ÖÝ@L„ ©Rw0s b$&5ï]Um]Ûãããù2ç¬Ä=ò r>Ÿjj­½wUcæ€@âÛ^¼9-¿þêMüt¶©ì§]QÅË<ÏçKkm¬C­•‰Öu½¿¿gæW¯^¥\÷t:ãxպú®ÃPEh(D¨¶hÊLÏŽ7•åÓO?ÍSøõë×jjf¾ö‰Z ÍîÝÕXJ©€ØÔ‚ Ò§‡Hêj®ƒxYHbÕÌ cµfk«¥¨v7KHD†ºm! ááˆѺ•R"C{!HdØMÚ5æÅ»â ^ˆÓ´j+~>Upÿúr®Ãøü0 EºñnwÇ#1uÓyY:†öem½ìö··ƒµÞæùÃò®_.v¹º{ø £Ü a¡‘Mgæ æi7ôäv,($˯ëáä½[Wk½»ùÒÚÓõEUs^ "···ùÅ0 ww¿þ×ÿûéñ¢êqˆiÇ:º:¸ 2 ‡…™qe$)ž¾Ó0 wdrÁ_´y„ Ø¢fS³¹e…Iµo— ˆôsBFXkÁ¥t[ÝC„Ë€<vÐæÅ»^(,ys&Ø9„`ka÷ç»óJEb±ŽÄ,dmÕÇó‰sæfI¤&âRÅ!é鈲ÅëÈ0 »‰‡BBŽ ®ÊšÀ Š~8xx€]•adæëÚžBŽéfq¾Ìã°_ÖFR€ðæÙ~‡õ»×çùÝrÿ>K>|xëÖYЧ±C,óºô–˜íãñ§Óùt:}ôüÅó/3ÖÛjfµV"ZÖÖ{ÇQ$u»¥”a¨Ë²ˆÈ~¿Ÿ/—÷ï>üþw_~øpÏÀ•ŠÜRåÒµ¡G!‰ŒeÆ"ÍÕÆRYD@—‹r„”­wW f.5ïp×`hL/T-‚×$U°`@qNSk!´X'¾&ÑgæD Â…™‘°ãêæÚ-%ÙÄá„ãá Äóy¦¦ÇÝ~â‚׉Î(ÕtžÇJ¤N8ÀH´ex I‘Œ¿²@d*,´šc¡Õ"ÓP‡ LK_!©…ñµ;Ì9ÿƒ«×Ì×uima$ ')$áÝìñr9ÎÏ_H ·u­E>zþü·oþî«oà÷ïµ$¬.‘¥@²nMµõff52¢›õuyv{»?¾XÎgdÔž'ðU_g¦ªD›DµKIT«:"üéŸ|ñö¯Þ=œÎß~õ¥C³ÙÆÊ OJ[½›+4íDT¬P’¦˜¨ˆ„z`D 0[o‘ÈÒˆ@¤¶.S­„Ò­i‡Yà>t)R¹v²®¬P@d–JuòrÕÍTà #¤ÔaÜu*—ÇU)HX†ZÂ@>~ñ‚EÔÌÍÑÄ{ "Buón@HÁNH¹G‡Š9@Jóéj`ÚºÔK8 „›Úår™Ûšíˆn*$€lfk×ym«ö‡Ç»Z+!Ç%âoÿáëaºó³äxsÆ]¾¿‘ôYk{@­UDÖuÍž¢™§G*®@¨œç6ͯEŠº—˼ŒÃ R³T’"¯>ûô_üéýûw½w5ë½Q©ž”¨Í`é Ì ¼«„¹Œu)óå’{Ì‘Å̰ ¢ö–é!½«åÇÌ]¾ú´âŠfÈ„ˆ¬j0AX†Ö4 ÈÕ܃J)ÓnWD€ÉÃMÈÃI¸n3¼ZvÇ£¹-ë ks"ñpŒpЄžy–‘A•¹° µLñÔšÀuk"8BœûÒ7¨dÜ…ö~:ŸÏçó¼,õÛTƒKwóµwuÀµ5s=TåoÿáÍ»û#°üYü_ü—ÿy–@HeY[ëº,ëÚ;—2M»Ýnw¹œSì-Â)„¢®Š›t,<ˆ:@Þ%éˆX6‹…AÀÍíí‹/.—óëׯ×ÖT{ÂË!ë,áÔò`€ zS!dtæ©VDpÕP…fÂÞ/µFxë=¡|]µ­«»'22s¶äÑ먖‘žJÛtj`†3 ³ “¢ºK©Ó~¿;ÊPPØ1<«ÈP››#Žûi<î ‡AàPêx8ÈP×Þºö@THÜr0‘Ôá0ÕÝ0N“ 53pÝÙ50IjúÇ9õh½Ï˼¶ÖMçuÛÚM›‡A9ÏëÚUÍ‚ xhVÿÛß¼™×)³üß¹PZ×èf± ãäÖÒ×]ËÀ"î¶ù<…Å>Ü=Ô"¥ÈXíÍ#„EJÑÖ¢µ6 5±hfµÈ8ŽˆøhRËŸÿÅ_ÌËåáþþ÷¿ûòr>סŽ\¡ ¸žÎîÑC+”p bžÛ‚TX­%Ú2I$»év¶@ÀœÜ&˜!/ø™ª˜íˆ•™™G‹Í6ÍÌLÌæHL!Ri*¬wŽî°.ëÃã#ŒÓtû숽s)O‘wªBC¦0’Z˜ Óƒí€)§%!r¢báé8Ä 4V.Å·’Ó)žÀ pËc¡÷¾\.2TaQ³µ­é¾´µµuµÞ´33cœçy¾\|c²ùŠÈçyùÝ—?Î\²?r‰™.—@fbÉŽFáÂ\ò]rwU‘RjÖì—‹Mã°{9㸮 „;3§ÓÆÝ"Ø79ä?˜âºË2†á“O?ýÕ¯~u>Þ|ýͺ®Riænp8î—“™wí]ÉÍ =‡™9‰xŠWâ­a”4 €pëiCE´ä©g†ªP÷לó$Î Ì̘5ÀÖ¬D w£uuwㆄ®zYÎÝZ ?ù®6“LB¯®Ëˆps×pU³€"’Õ¦8`H%*ä„`ªÁL€ )ì‚- U¹„hj"ä]{æ4ík[—ÖQjAÄ@ìM»y€3‘WA*ê¶š¾{\Œõ]üOÿ£z÷pˆ‡ã!?ËûýþxØÕ*žŠw‘L ¸\Îá~ss‡ Rš”ùÁ¾Å÷À¨äPg{õáñqÇÌÔU¥dÚÕR@-ínFé`Þ"È®À„GBIem :-ºÓßr˳æÉl©t¢ÙZR3ƒDDî›h±d™“¡‡¹…™yäcÓsd³yK@S]æÕp]Ð:^ÙlJÛÕ^x,2M($›‡dû)n}O‡=²àº¬i&›—¥µ–bý®ºöÆÂ¥TlŽËj«jë™ó–(,­Ã·ïÏþk•þ£ÅÿÉ?ûwS†áæxØM#q¢•±«¦Pº­kš•K)ý*Þï&Ø`}©Å WJ/ "ÙÂ'r興ÔÚªª‚p˜vÇÃ> îîîî#·:’kxÉ©›Gxz§RäšÛ1 6yÞÖ+%ÍäÈ„\Hÿ&B#ikˆX‡Ê”&¾xºGeóžˆÀÃÓØïîžþe"”Â5 Ê""AfÞÇq¬µ@@¨£¹­M—kCm®Fh‚΃ð8”ý(ÓPv#ÅÜ"v½¯Ö;"c„g¨@XNî-zïçù2_.Ú;’;Pq]æ¦m53`GêÍèþq½?­?å] òêã̼”ZK17"rÏ }yÒógq™j©ÔM·Ö§q,RzoîFDiH'La¿CëÃ0zP>äÐono—eé­ Óî—¿ú«çÏ?ÂÀñÏÿÇÇÇs8"p[Úñæf?í°5!0pÚl»½'l.X(»y àUÓ'¡ææ¾Œªy(3§õ¯-»ÞùÌÍ H‚D ªj£Ô|ò²PñâÁˆ@LTHBÝÁ}±î®ŽŽ“€#¡4s`âÌ„¥–¼36·¥¯Þz!¬"’lëÍ`™éãæÝqÕèà‹­=Ð"<)%€­õ¶ªG„r‘‰8ÓM›HSÿñãwþð’ÞûVðù†Á1÷Þ5­Q±=G{ò±"7¢0öÞÛ²Šð8jnaˆ$U=©/]„òÉefD\뀈¦ ˆ»ÝîÓÏ>ÿÓ?ûó/¿üêËøû˺ÜÂZ,KéªÊ€Î?Óá®DÜìOëj£°ˆä¥“‚–e&Ä¡ÖR ÉPAûJLÌBH(aú×tÁÀ€@m ˜„ ³ÅÖ´8‡S;¡nªYBèhHÈ£tUïæÀÌ"A!‘ì ÃMÚ«û ©Ý` iPsEPs5  @Šë.‹fq÷Õµ ¥G§R<Èrì WÅMâªÿÃo­ÿ?—¤ÿ ´gý½zxMˆ¬¥üc±£÷ÞÝèr~W¥<þ<܇aPdÁõ–cf9½|šùçÈêr™Óÿ1ív?ÿùŸüå/ùþíÛ¶6ˆˆµ·Úª©'5?{FfŽžy%^Já`W‡Ì>Etˆ4ïÓ–Z qÝÓ¥b®…)¼kãD,=#»]̓hY€j7UD*€¨ó¹Ö:òùÉépÊôSDpÀp d@§ìzʆÞŠ]HöJ„ªf΋-¦‰Ì̯ÇÇöQzZÝ}cks©C†yíÄR( ")E(˜tÍ,Ì~ÒK¦iRÕÓéñr™-¼ô;$—+9X"2ŸÎÖµµ†µV!ˆ»óùå‹XÄÜÖÞ=œˆ·ôQï½3S)B[ÚSæ8Ê0Nóår¹ÌC­/_½úå?ù'¦úw¿þõe^Ì• úX1óø¨ÈØ×†™\•S€œCÖ:@@€gê¨#ºYo ˆêP¥ *m5SÀ`'Õt›:"d²:eÐD hGbr÷ùr€Ê"HWƒgú: «¹ s6 ”6,º»»…I)Œ”fÙ¬†Ý=ÕˆhêM;‹Daa¶ ݾ…¶™™ÚUÕÍ»»aW_–~^µÁúÑǯ¸Ô‡×ßön"E¸ªP¨…†@ˆ†ÿ¶1ÇOhÉÓT‰™‡2ŒÓNJÝO{ÈëâétBB Db¾¦òÙ0Ž@¸´1J&½æ$ó¤Á¿£•ˆˆYWU§É<îï»ÎÇÃþ‹/þäæfúùÏ^þý×ï^¿}~{ãÊŽ¥C|Ïß„8 #"¤ iYzÂíWUfƈHMïL8  ‚©5ÕªªëšéôލæÐ7#Æ•øçf@ÌáÞU—eæa2Ÿ=Ÿ~ûÛßžÖ:EvÛ7 ª¬WäÝדH·fNĤ÷Bc €þ\uéÚƒS·ÀOJ&ÇwÿªæX>…¨ׄ2t3ôîºä«ÒVÍ–m!â< Mµ© )ÝÎÝñ DĬ›A`Ž!ˆt½º]$g‹ZŠáö·ÙÀ-‹Ìã9ÕÊÖCHS#¹ÔÖþú/ÿòñÍ“™»©‹4é­÷)iœþ÷j^c à~?.[“-ÄÏÿí¿ý¯‰h𦔒ÔÖ¶m=/fRŠ)…bJ)% ܶ­¶z»ãCœ—õtºŒiz÷öƒªÅüÁâÌÜñ†ü73@ËÑ)!Pjí¢È8ÄûûÇÝá.§üíw—yA0„[üƒv‘:NI¤ö^UÅWö`·x:@ ÌLØZ#Äqœ¤wérJÌW—jz¯´uŠÖ5‰˜8ÄèÊÖ¥!s0€Þû¶•ZkiÕïè~£$¿·z³¹T‘ÞJ`š†NÓ8NiH1% 1“¹+Áº,Ë곪óócˆ7Š~wҾÒë-œé6‰_S äv؈V Š)#¡vUÑý~ç„Ì.}¹œ/½Ö©vBÐ[êužñO×g²®ƒÈ„!D‘Þ[Sí*¢WÞ²Ç÷:mÐCáÇ™¹Ì,¥ä"”BŠid/§KëšœŽ:¨zÀ„fÒ{s†ÝL®õF†"D°«ÄÔ »H)­J±¸6Ùjã”~ñË_ý‹ÿì_¾yû–˜ò0œÎçuÛ–uýøÝGBÇtQ3B†¤hXnkcF­µÿè0Tþïþû›S†–m+¥ÖZ= g]×/_¾|ùòųàÁ€˜|¿D½õÜívÒež—ãñ˜‡ÌÌÁ?<5!f5PîÄx]WŠDg  ¢¨ä”Z­­µaSLL¼›ö_>š¦ÑͲñíEt¦€šÌ€·½"`)! )Zïþ?™Càˆtݱ¥n‚8‹™]¸i¢`€ê~ØjÁ}_5¦>÷øÄª¦JH„˜Bd"u!fBtdIìªvü÷Œ´ìºg2S431«­o¥”ÚÖÚºáÚ»½yûîçöËú¾¶{ïµ1Übì*iC7B쵊ÊeUBÏLBäàû°+Î¥·#MDni莕!0‘ûݘZãëƒ!* @Œ,ôšú""À×÷ôuåãû$~u»¾MZ?¼mügMAÄ´«¿©ÚEj©B*ioyœ”H™CNRŒ‡aØï÷Ÿ?Î9ßµÖóùœ‡\Û•Ššqm• »)§À9òñ¼”Қ肇àå|2“˜ÒÇóçyÙÖ²m… vûÃ~·§ÀÃ8RàmÛìfeèƒdJ [;bȦXj%"÷„yÝr‰ˆ»PÅ@fèPvŒ8`„B©eˆaG?PŸžžÇß¼ÿðí·ÿ0pPsM¢gˆj—(†°Ô HŠàŒ§ÖÂU`òläoM€ˆ˜ºøÜrU„‰Rˆ R"PU$vG´ÒªŠÀí÷ñµðvî×ÿµ(½^(Æÿ~Îêõ©xýq1/SwгfÜ0”ŽJ! Ó4M)r2˜ÕZïïï‡Ãår!"?/cŒž˜º, Ž×m+µ„œc ))€š²ÊÃÝ4$.µu‘ß~wú#ÕÞÿ‡WØJY¶5æÀóº´Ö}*†á°?ÑsN©JWÂmÛÖe6Q€«…~ˆ‘ˆ›CŠQž/oÇql½¯ÛÇ”ºt@T“Þ›®Ë~ÈŒÀzR"Š)çu[_èɦýþ—¿úåËùy/¢Ú€Ê\' HÆOU[óñÑ4­â ¼B$6De»‘¡Ì ®zkkM|ó@$†XU»i$ÆÀøÒo¾ïªšòÕtC®>•¦ªÞß|€ÀLÅWz£÷¿â¢n¥€ØX`«uîµ3I1e ?ûùÏ¾ùæ§ÓÝÝ0 ¾Õ[èuJ‰™çy^–eš¦qÇq,¥øvžg8ÜßíîË²ŠˆöZ £†„OÃîÇQ¦ˆøøæ‚ž/g0L) 4¨*{D925‚Òúr™M:# BLÑyeྡªPEÖZ2šu3—X¸ñ1aëm­¸‹ñv¶0‡qTïz­¢4M‡ÖT z-_ýì§]·ßüæï?}ü¾ÌK†Þõ4/CŠcÎè¨×èiï »)¨¸(*b À€hè1ÌÌD,"Hœb2°Ö[mBd„CP€Zʺmίu_7»:ˆ{J9xSk}½¾õy«¼î¢<öƒ1 ‡ÀD­w"ê­»±Ž!’˜Ö¦­kU ñé͇¿þë>ì§qÚC Úßík­¥”Zkaš&§V¹³§ÛÌ|üøÑLSJVko2/eœöyØ·pëÒ9p[»ï ÿô_AÅB¸º1¦˜ü½œ/ϧ³?ôÃ0´óù|¹œã"›:”ö»ÝV*ÜL‹œCm`/§£›Oãx £W€Ø{ßJB`$±Rú‡!p¯Ö‰(¾¿¿_×´m+"þêWµßßýÝßþú~ó÷—yÞ #Åxe6ñu4süƒÏ„/0¯ š—•™#ØmôzÎù#äì¼eM½ÞÔþËÞª¯>¼¿{¸f`p®‚$j­nã ¾yö/Ûfã˜A´”f¢Zš% 9‡Þ‚¹âd LB¨"‡Ý"Íóæ°2xO£ªË<_Îçóù4¥H|u8ò÷ë6^ÿ*"óù w÷÷ûÉ|;àu@Ò»¶Þ›¤©¶*RÔ †ÇAM[mM„ü—`½÷é_Ñ7V¶ò›¿ÿ»­T@c¤\Íž †+~ÙE‰PÁ‚£b ÈÖĤ«*y†¢rËóZÍŽµù?Ð=Þœ9î%òzk€ª]CTüÝÔ+O7pˆ1Û¶ÕÖ÷cf ò\ÆÞUˆ¨õÞ»£Š€AïÝTH̶R»Ø8ŽyÈÝ Æ8L“?sWç¿‹ BÓi.€Ï÷wyΧ"†ÐÙ®*½·8äs 1…Ø\¤ ?†ù Bï‚Õ#Z\ÿî9¢W¾Oku™gé}óaÿUN‘ˆRJ†ÔZ?NjWüoÈÙÜ{kÄì›cœâü½œL´–2pP$ðË9›©h-f–SH9#ѺÌ1ŽBÐ./Û6Œ»Ÿý⟵&½ËË—Ïó|~9Ô,†ÀÄLÌ’ª‰8«:‚©¶ÒºÂ €ª&˜ÿzG‡Èv[Ç«:M– ƸÛí®4÷~=SÐTMT)w C‘’7î‰Ç¯‡øR×”ö®ÝŒÁ7 ¡uíjÓÚ¥7å˜Þ¿ûpÿxw/‚b$"ïA»ôÚ:q’º®[õØ‚Þûår)¥¨‡0޼¬¥”"f¥”aœÇÄqÌY– *‰8ÿ£åñ§ò nQ6¦4o½Ôj†!Sˆë²Tw‰ 4îï)ÆHîÁGÔEjmà["‘:MSLq[טyK¯­,Ëì(AoU*¸sJ`6¯+ÇÈL]ÍbJ!Fb -véM;!…vwwk)Û¶!ñ»÷ïKÙrNßý_>:Ï)¤À©##“t2 hÝõƺªšJÑTÀÕ÷F*H,¢NÚï½ÿ—ð97@ì­†Ýt¸™kd’k#^¶[ŠƒßøŽÅª ÙÕñ‘ HT´‹ª( &‘^këf1ãÝá›?ÿó·¿øùÃWÖuk­-—y¿¿rP³eYrÎÓ´÷Oqš&ìk-j=„Lã]õxDæZK-%úÂBÁDA$ ÇQ™*39îÆLD~駆”|ï"ÒÖu-¥çad¢mÛÖu»,[J‘ˆO§Óa?…JÙT:3_æÅÙwóe‡1÷Ú˜Ü ù†+¦”\´á]Dk­Jbðó‰Ë²@Î9§Á'ƒÚ{JùýÛwi9!ŸÏ'4PSQ‘ÞAøH©Zze$&ꑪ*üÀìÒnÌ|磼®ïá ©º}U$¢yž_¿Áßb"Ç \qÙ? ýoÒU ªƒÛ>v0߸3*  mªâ&ýþéÍW?ûét¸;_.éù Æi ©À4íN—#Üßß3Çu]}Þ/¥xú3’Å0¦4 }Û²@ëçó9Å8漪¡ànXñG2Byt{Ù:$æ^Ûº®fºßïsN>O>´ÖÏ—KŒ¡V)ÛÆLP#*sJ‘~$“>ÿ7ÿöß0˜ûÙBkµ÷׫ܖe½Ì "ã.¦a-õÓççÖš[ 9N¾Ûí>ôñ¢µÆˆ‘ƒ+\ΗmY‡”û= «‰Õ)ÆÐÁjï€fDl cï: »!O" rÍuJ9Å”L•#QN™!0@«•[©­õ˜leë½çsÎD„N*Å×"]‰ô)¦âmûí9-òŠ’¾–xµ]¹Îyu¿b$úô "‚D.qÕ€‰ €ŠBE0QèjM¬T⇧§o~ò“û‡Ça·›ö»RCâǧw1¦uÙNçÓ|91è½üøéør$¢ãé8McŒ!§!p yØ „&æù­–­•Z›ˆDæ#¨½œæ?}›¾àÛ”©õ¾¬%Æ´?L¥”u«»] 1Ç4øh¹­ëež™ùp8xG 7tpY?Qüú11R«-CŒ`–Sb¢m+ÞÃ!Hˆ‘]u„”Ó€HžæèÙÝÝÝ<Ï[YÆ!ŽCÎã ")dÊ)« uÔº¶æÈKJ©l‹ˆõœ‡Á´wélØjéÒ09„°Í³¶z|9nÛFLfj f$RлR‡ÿÁ×üH¾˜$Š)e3k€„ì,;Æ›Ëûëz nGé+8ê÷#q@°œ£¨ª31¦˜Lˆ»™t#BvÔ ÕTL ¡»ÿP ŽÓ´Ÿv{b 1!’ªÆ”Ji¿ûÝïÇaœ¦1ÄÓÝóùr</ÇÓ¼Ì1†®Q‘D…„m‘VL:“ˆŠ©Å”!˜i”Ã~úã–à?åú»Ûï§irðʼnßÞw¾Þæn|Uú¾[róýòÿæœ÷ûýóÇO†h̵6bÞL7iÈd]çy&„a^{>f6¸žÄ¢‚‚­5¼U|ˆ±¶‚Û6C²{•ÀAïM…‰æsTÑx[—*í|¹,ëŧwâ1Cs3²€¤ˆŒlD&j@Däeím*Qˆ£üçwè÷õ®·+ëÙ‚ÚÈ¡¸G #)^“Qƒ¯¾ÜÖŠÄ“þÀ€ÜÅ N@Í<`(„Ä”âó b­·@4å40^>»ŸŸŸŸ—e Ù¥»imb å\URN½VEêÒÀŒCB°RÊÂ%¼å<_|繺þÁlÛæˆŒsŸÍ¬õ¾Î33§”ü=BÄaÍÕ‘BˆÆéûç“pŒÒ;»à®õÏŸ¿€é8Ž)ÆÙ ËV¯è@kmÛ6gWµ›…XŒñîîîÓ—¥5öD²œQÅ6$S"b¤Þ»¤œò8ìöûÓù´m«5E,˜RtÙ±vSR@Rdbе ¨ßö0+zhˆ¯ÙZ몂S²[dµ˜(¢‘™Š{ņ†˜È{SQ¡‘ETÔÜKj³­µ®6NSǧÇ7!è–Æ°‹‘À³™Ž_½¯½ûÝw§óIÕ¶Úž¿<ϗ˲,Ò•9úRWDsˆzé½d…»ý]¯í¥Iï uvUûpŒjZË¢LýfO)•Z^­Ÿ_IçóÙ­%ÀÌjk×­U­Ï//ë¶¥”»hˆÁº†˜†qܶ­÷޻§Ž·ÖΧEU~ñ‹_ìv»ZV¦¦Ú:xº!¨SìÈÿk´–szûø4Ïç²n÷wwÀM™™ ˆ€c†¬ŠÖKÉã0îvaÈçÓ©ÕÚj—MDa$dìÝE~D{—cà€µ‰³XY­›Ûà]W Þ½¼2Kœ m½u25D t®›„œgJfÙÏHÌ1‚téMšŠ­M×"âãû÷oîïÇqêÚ—mQ°¼›bJˆˆ¾|þôíóçãñˆD»4¡boZ¶†÷÷ûýn§/_¾pˆêI|v”îã(7{™Å‰§©›â8VÄ&]cÖ?ùù º®79<¹"Ê×-WYfï f†Œ„!Åèǃ›‹¢ò8ìw†ä¬"b¦år&¢˜µÖ À!Q-¥Àn·K)ù˜‰ä†Þ¦ª¦–b”Ö‹Ú4M˜Rj-©jë}Ç€h6Ç”<„r)eݶPZC¢7oÞîvûZÛùt<ŽkmjsV51  ëôÉQETÄ[RsÇjRP¤P¯Ñ‰ÎsEBPp!8‘zÚ„]­3½C`$ !¨¹€Õ&Cì—µTÑ&=„RwÓt؇4ñR[U;Är¢­Ôï?~þøùyY–œR´˜CÒð\Ÿµëýý½!Ffîn“È ªë¶š¦ˆ9SJ­w êÈ@ücX—†W|“1 Càpïíié ™  ÖÚ[W•qv»s!†)pmâ-Dï}]WPÍ9§œ´_õz¦RkM)Ám-bòbˆPkU3ˆ<ܱÖ8&J){ÀNSÌ©µRWŒßI[[åËyn¥"bJC-%ðõÙ+µ\ÿˆ1%"왑]Z}Uíù´.â2)0à=®ê¶P53»::ƒË^»ö+b*jŒÄÁ´KkCXÕzWdŽ­¯F”‡éáíÛ·ï?Ü=<`ŒÝ M»HWM­‡Ú‘ét¹œN§m]˺‚¨Ä)‡¢½Ôi7Ýßݽ.PÍ!úÑPjub†ŒàºóuÛjk šCèþ#Ú¯0ŒCëm+%¥ˆCÊ)x?κXÖ%¥äd6gåxËÎIcFäRëååy-͋ދ5…Ä̽w×Z1±ô&‘bïD¤oª½ÆÀDÐ[³@Èìl-5Œ#ˆHk=„œb¦œÏ§ËårØï‡i4#2F¼½ë5Âñ|<ÖV} Ûíö_½ƒËå2Ï—RJë}@31h*Ø3cý&Œ&ÊQScê> Þü~Õõ{cÛºz¶„™­ë CŽ9e™¦mÛæe†´Ûï9\™ ñ¡ËêÖå$miÒ%!<Ý?ì†q§e™¿5iÛV˜)HP0 +_“»tQ½ÊêØ%"à*=õŠEb Íœe+8–Z‰†Põ¶Sð »‘džûÚ¶‰VCäß¾ûpwÿp¸hÚzëÒdQs£êËét:Ÿw»]Œ)ÆôòòâÓÛº®¥VŽ1ÆEdYG ý-õV[$¶~--¥´R¥wF@0“Ö<¡ïOüét0¨õêfï×Ù¿õZ+ù…ˆ1½f†‡”‚™¥wÓ NÊGÂæ~T"Dˆ„Tʆ„€Bp·¹œî·dXDô÷Ý» çy\B1†”jïËV¶ÀœB5 2C$B 5mý´Ñj­Š¦b½wD¨­ÔV»v•®,ÅÄÌœ’¨‚ªE € ØAënÝ×ôjéæ&«ÖÜnMÅ,0è]‘(FÖR×R±v öÜõ4 ï¾úúÝ×_?=½™v»ÒµÉ*v5=[[ëë*"Ï//§Ó)„ðîÝ;ñ2sÎÙáf†a·Ûåœ_m“åo3ÛJ)µ:SVU¥uf6Ï0m­üRx‚ÞænDΖsfæÚ:Ž)Å<^ÂT©õvYf#8i˲ÖÞ ÙoIwY’Þ»L<¨U@³œó˜‡ÈaAæ“MS-Ezo½×i r»a7mËÒk3Ó˜b²jW±iد۶nÛ¶mM¤i‡Ö˜¯Ö÷›“‹'&Km`6 ‰”IÅL¯.Ð˶qkÓ8îîZk¥-](l[}9k­½kJYD(ïñn·û‹¿üÕ›·ï§Ã~©EÅ<‘vÃØz¿”óežk­Û¶©êããããÓÓ²®/Ç#2)B•LbZk5³——?Y}MÈ»jmõ<Ï˼€Ù!Å[kuYçVËe¹\ÊÒÌ…Ýê¯p8ÌlžçišÀ §t¹\¦i"¢R kpÑ…™MÓÒUeˆ¾0oÇiBÄmÛJ)¯ì°.JÄ>áÍ6'„P·²Ö 7³§Ç{Eè7JDtsi­Qà˜té`)F C,DeÝ,%Ê1§ÄHµl¥µMZÓ€<äý~·›ÆÓóq¾ÌeÝ|×j)%ž‚˜•ZCCmUÄgtoU­µVZ-¥oµ0QsÙ´ ù ^U·R9€=ô;U[×"²ÔÚz·u•RÄ b ÆrNã°KùÏþâÏß¼y“Òp Rëh¦!†!)H]6÷àD¢4äa==SÎîîí°WšÁ².!F§ [«ÖªƒPÐÊr§i]æ­¬Ë:_.§mÛj-¾`ýcà?í´«¨<Þ?jWBòÕѲ,ΪD¦4ä×q*pð'àfÕåú(ßLD˜È=œ8bps;SõCD€0 –Z¾¼<ï†#³ˆpJÄ,µ:A„ÌšµÎLh "‰hH©”‘ä5|R­–²”uí­ªÅŸ>|ó°¿[.ç¿ýõ¯Ÿ?"u+]ðˆÔišRε֭l´­½7çy‘™˜Z¡­T$fVñ€Iv½^‹¨JïAƒi»\6éðùóRJÝ ‘ª ¥”s”lÿp÷p÷øæñíÛC²˜ézµ¸RÁf"1„À„DUzWI9¿ÿðáþþþx<ªjˆq˜ÆZk-5rÓäš'=³›^ õÆÄ‘ƒÛý"!Z—^j™çËå|îµ(Ù¡H‚Hÿ!±ÒDá™ j©¥9`žº:UY™xŒ9¥”bŒ):ªüéÓ'UM9OÍ §S.µ:y%)óu‘xã§"âËËóÏ~ò“ÝnBÇ¢™‰«Og„Ú¥ÔŠ ‰+JëUuÈÉóNͬֆ˺®¥4ÄïS#쪧Ëâ°üû¯¾~÷îÝ“´ÚE¾ûýï{«Òû¶m—ËsHÓ`fë|Þ–Õ̤ ˜më&FPDZm"n*{4`ª"ØU>>§8 ÷ûBŒ­÷Ý8ŒÓn·ßm¥´ÞßõÕ»ï÷ûú®ãn÷îÝ»OŸŸ×õû£ŠµÚRL ضj¢Ä´•²,óaøéO~2Žc«UErŒß¼ûp¹\>~üh1"ÞívªZê•HêëE—Ö{48=¿ÌÇã<_æË¥- u ®}±ƒŸTX¶u¦4d©­n¥1⺮"²ßïͬÕâÕ}Dv»Ã¥”Â81çRÊ<ÏûÝo¶šWV^ëý¦€óQÔÇvDtH¡÷cè½»ÚBT–u%÷­í½»ka“P†‚©boBó4µÞ–eY·íùxD»»û¯ž‡‡úåóÇç/ÏóVMÏfòþÍÛu™‹jÇwOïß›J-ër™¿<!¤år^×µ¬Ë|:ϗ˺̈кvEâ$Ò…œ2Òqò>磚n¥ôÞ!ÄÛ·o?|DZ‹l¥üôÏ~ñöíÛ.òëÿó×˲>|x7Þ8ÆÇÝôðø8ŒÃå7ÿàÿù4—m{óô”b.õ¢”Êv|Ø`  æóååËs Î)oÛ¶,‹÷[-7)"“;Mt·cG Ì)FÒþòíwÒjS‘„Ì)`ïMôÇáÍjoØ+»}dÕ^YèÞ¨Ó뺶VÇiº²QUÛùÔMwÞðÝÔjàG¦ª.Ë\›„ìfÄà|j·6q9nµÐež¦1¦äìUHMáj–‹ÚZYMv1bWS³ÌĈļ–úr<¿œÎÃ8]û²rŒÓîкhhµžæÙL áå2/µíw#™…Þ>=¾yZæÙäm-ååùùr8+‡óårº\–yQ‘1ÛºÎó%©ÑÛ·ïß¼{ 1šêñ|:Ï"’‡ñ'¿øåáþ:’§ýþôÃW¾ûî;QM9ç4¢,¿A£IDATððôx¿®+1æ²®m™‡Z“‹-K© zww8¾<ŸN§ý~?Ïs­uY–Ö[Ôtž/MÅBL¬‚Lbªbµ7ß’¸$˜BÔÞ×yi[ÙÖµ• LE„CĀɬ JÜü§¼BÊÙËÎuè9g©•ˆÎç³û|p ª;‡©¡A )útï úM¸Ñ{¯ŽÄè•âîS×+WÚ¿H)ŠÈ¶m9§qñæòç¿¡‰æœLÑÐZïê[LT˜»èyž???ÏëªHj8¯Ûvf¾»»k­û°µm›7²f¶,ËU‘²mPj†É×<ñ1h®=¾U ‘[ÓR–RjŒñýûûýPËf¢X ¤5Bb‘>×õö€¦§ù²,Ë————Ó¹‹å<(„ÚmÝZýþãýý3·Ú†!''„º®çyUÃÞôÜÖi™¨4¹l'Fì"N2I1ywwxx¸|b"0FOné½Ö¶lËw_N€ÈŒ÷oÞí÷‡˜# ®ë¶]¶u-Lñññ ýþ÷ßÿö·¿cŽþçùóŸÿ¼w9>ކmžëvAèÌ€¤Ó””°"[ Š´¶òæý»¯¿ùFU¿ýþ»Ó锇áþñÑ \ÄÜ{·“ë­çvys¶ÞEå|:}ÿý·/§Oê8Fh@€nL€Mšj ”(ÐÂ?:¤3‡ÖzW!„”¢Ÿd»ÌŒ˜}#—R²«í²¼.ÜŒÀqæ+r‹ï‘ûûû×2Uµ——ÉiXæm]WM);ÑÈÇ8Uëµ û !l«›ç„R6ôÔâçãÑЦýŽ)/ççã¹õÒHfÈ¡ŠaàÆ^ÖRšï>Ï— vû1Äa[g@N)oÛ†DŽ6ôÖ·²zÄ ˜µ¶øã§*þ¡vUT“+H”SÞB)Åý~ç‡óù¼,[k-„ŒH»Ý½*çÖôǯÿâ/~õøøøÝwßqàq¶åTêî÷"‹ž.+3P°ˆbíó—/OOyæu°n:Åà¨KìMz—ÖG ±©v¹ãC †Ðež/—ËùÓ§OŸ?ªµäœ) Ö=†RT9¥aJ÷w/Çÿ¸áÙM¸þGx…DAA!@/WÛ/8ç>{Á9ßÈœóIdn òjIç?{…<‰Ìl·Û1''R=?¿¨XàèþGða»Ã ªÒJ=ŸÏ1D"d¤ÖÜ*{k1w/½R‹Áìx¹ϧcˆCâˆD¥*±ÙRdY_B œóºÌÉið¦]Ù»ˆ¬k!bñ +Dà@½÷Ö7$bÄZk­B¤#‡c|||È9»J×y=Oëº  kc^=HÞ¿ÿøøxå— c\©µ„ÈûýTJ)e0f"ŽØkßÖºµZZ5¼ž îëk]P”›‚X_ "rÊNIó³ÃUÏ/ŸÏç³O ]µ ¢³…¦j!ìîþóÿâ_ý»÷?ýÇk…¹ý‘Wö¾—W¹}½®ëÃÃë8}Y–aü;À¿YÕüeî9mOÍ(pމˆYÍ´õuݶmóÀKä:o¡y"71@m"­×RÆ!‡Z-ê!ª½õBL©´j+!®ÏÏ_N§yFí«_1ÆqÀœ³в­µ–mÛ¶­¢h߃ïr¤÷u]C°Áó@ ÊZ9 1@H)‹Ò8RÎ1Æ”Â4tûWÌór>ŸýÉÃ0/«ªNÓ4MÓçÏŸ·m !<<<¨êº®~/€kúIz·Þ…9ÎDQ‘¬J-u·Û‡iš¾|ú¬]‘ÔÞJòàˆ¡“q0ÇëÐ{?NÇãó²ÎcB´Þ{mUzw3ë`!D"6q<¾Ùí^ž_þñZI‘û³þ¾®&U!8¡÷ôÑY ^d~Á€SÚk3G7)pá‘U ©µ¶­+Ãh†ór™çKrN)qœ2ªZkùeöòé ´Ëùåˆw°ëïCˆÔjÕ.y¬J­5ÇáqxĺHïý»ï¾»»{Æß¾÷áë¯);Ï—ç/Ÿ·uE„R«ôf*½µý4.ËRjÆÝÃã£1’™më¬*Db.xYãýnï¶afVJ9/˺®ÎÿH)]‰ˆhš¦7oÞôÞ?}ú”sþúë¯÷ûýñxܶÍÌÆqìÀˆCœ_–^µÖËeå4r€Xš °Œy8°•ÍTSJÓnRU‘÷º¾Ï§ØZëårY–¥ÖÍo¼Zk­Å-½ M4 $!„!F"È)£JÏožîþ£e:¤4¯åÿ÷’ü{ÇžzïÄ™k­ëº¿š}fxx8NË2ÂÈN#]±*¸¯Ä¶m§ã±ÕšsŽ1]e–™J«Ì4Œ™9ðánç¢jCô‰¾—ÒUdÆÀ¼,K­e‡Ç‡ûý~¿®k«›¨J Cˆ»iw÷§ÃaÛŠûÒ¼œOçßÿnr7ýæ'áÝ»?‡ÞÛ·¿ÿݲ̠v>¿|úþûm­§Ó)¾¿¿?ÏÛ¶…wÓä A|||%]E¤DDÔj)ÛæšÓét¹\~||¼¿¿wÀhݶ‡‡‡wïÞÝÝÝ}ÿý÷¥”œóãã#ÜÚ!gØ–Ú»ûy8žát¾l¥7±˜óˆ¥›?uh0Ã?ûù/ÖZjkþg===­ó2/‹õ«›©O´®Ü¶ÍO–”2ÔZ–eé` ¦hjˆ‡i†œsNÖKcþ›¿ü‹_ÿú7ÿH¡¤öÓðùxþOS—ÿW°› }…è}_£ž8¥¬ªã0(#ÆAD  n5å«Á‰©5¹ÒÚxšÆ‘ˆjk½5$œ¦Á1©ÎXþõ¶­e݆4ŠÙe]˜h+%ä`„8¤XzUÂÚ%ôJÆ@Á"aJI 8kóº,ëúûo¿e½ë‡†!¥”CàÂýÝ®¬k«îŒÙÞ>=ÕÒæµüöþáÍ›7D”Rz||´›-¡Þ÷"r¹\¶uõ¥ÆëL™s>~ó¸ÆÐÍšýxk­MÓ´ßï_AåiĤU¾‰ÏD…C¦ zk"=ÆPëÕ}×|ŽúmÛfrµ¹t ïr>û¹îR³ÖêzYj-Ú5Å ‚*ªyD4qÜ C 11 ÖŠ”ºÛíþõ¿üÿÃÿø?_æå?T(oî÷!üÑ|ÑB« ™ ¥þEÁTw÷ª˜=<$„0/ 1cïCxmÞ˜â¢*ÏKºFCy\9ö1¬ëZkÑkL-öÒA0Ç1Äè©¢­µœ×# ^iÖD¢˜¶ÞsÎ0—5ÆøÕW_Í˲,Ë§ÏŸŽ§s­õÍ›ÇRJÎ1¥”‡øæÃ»µ–'b&bŽÃ0^–m]×çç«ÑU­õîîÎé­ŽàzR¦w¾•ðâ{uÄçùå奔òøø¸Ûí†aX×Õ]ñó0Sò²®î']k“º40â®`@) 1&¹R¨©·†fã0µÖK«Ë²@`vu8€™W¤÷Ç¥VBóCh­¾OÇÓ‘ÆÝäæ²L49ç¡÷΀bÚDqGL)==>þÕ¯~ù¿ü¯ÿÛ¨P~úÕ›/§ù5ì‡@Fdi™Ï§1,ëbzõîÚÖUäꨨW¯Ýk Â~ ÉT qHÿwqWÒ#I–”Íìíî¹Tõ2Cw3ƒ@Œ@â§€„4~%Bâ 1怇A ÌTwuUç‹oo,2h ¸R~JÅ!å²gÏ–oÑ¥”b ± ¥¶R ÑH¯=lXS K,¡*¥¶˜bk ¥"¢ÒªP‚"”rœƒ7Ñh­MçlÓSjµ!@)ç´¶ˆh± ¡±ë{¿,Ó4ŽÇ”ü8?ØÎ‰•´Q}ç\ßßì÷‚Ki}ß§”CL×åíû÷ïß½{gŒ¹*¾\ög¥h­‡aèºn³Ùð¯Á%ûñtJ9wýðù_Ze°¶ñtö뺿»v[¾šH)ABŒ1úXJ®"7"m‘46¦Ëf˜i/Æèͦ3ZΧeYXñ!¥dµÖ¦rNË”RH…h ú¡o¥p"aP©”Rý¾ÿ~=Ÿ[çèp>ÍË\JÕFßmöιTKmµ67·7Îuë<{°Hj%„ $)gÝv8Âè‚ðñù©Ûöww·ÏÏ/ÿ3Jn6]gdJŸŒŽ"k­x1ß¹Ôb2Æò .çÜ÷½ ,¥„RK)ó4!‚1ºë:(%+¥… Âš–•«õZk…‹uT.¥Xí¨¤Ê«g&ZçJ-¹–† H`)5…µ  –ë2Ny ÖXgµD¡¥* Zlè´«¥¦5H)3 ozyÑê¬5Î*­Ÿ×e™§Éí~þ3a4j©jƒÅ{Ô{ b•P®,™ÅÁ3×|œä¤6à½ñâq8bŒ···ûýžö¥Vï²UÓPK‰9ÕV;mkk9±=[Š)ú‘ …B"˽³VWƒýíC¿Ý†Çy©¥j­×ÍÓt8¾øó8ÏóùptÊt}'Æe™–¹¶fœ½½¿ÓÆ b¡UDI€˜k—9Ö,”Ôˆ(C[St%kc¢É·,ñ¸¤‡Ÿþä ÓŸ~~—r]CúÿÏ×G¦”YCRåZcÌPÛz!„5†ûJ A Dk –24€Úr¾tEô*&I]ÄBäEI%—„DB(iŒ‘RÆ%¶‹ýœÀÚ T,•I(¬ Zóq­µ¡ ×Ð(­+¤‚PŒ&¡.Ë0–·PJqïRÊív[Z]—åùð2MÓn»}sÇŠl]kUB:çV¿Æs<­†Á{ßu’xz3MüÂ¥”yž™þODÛív·Ûu]—RŠ9Æ’bJÚ lÐP$¨­åV¡µTrH)¥4ÍK©Í()„$¥dhsY|J©äRB¹,Uâ¥_ÆñéûË8¦%3V¢X¦9¦8l6R)×9×÷1Ř" º¾—F§ZÂ2Oë2­ónØi¥P jà„´•r“()¦ZØ ÉvÎ/ëC„¿úì>—<ûO3võ抳Õ*ˆ¤ ê†XR”{sñ#›wK­vÃfpãŒÆóYµR°6I”s×ÙZ'9ç8“ñî—õˆº®»½½¦ét:MÓôòòÂÞ,Wè‚sîíÛ·Ü€ãøüüüñãÇ ðvÃ{cÌÅÞ1å”bJ!®ër>¥ÒÜ·!bk0Ž#_;<šå]§ÌXq>œ–Ãéøü<ŸGlM’0JçRKõB©ûÝvs‡J´”s·xªÅúžD4c8Ï”KMÞXm^ÏËN!De´q$ùt:|øác7 úþëøÕCdèܦs/Çø /}¶Gêºn ¤”9E,)¦`­m­yïs­B Aa Ykyá1lzàÎj €ëºSJr.~õÆ^e•Ö$Gb.¥­Ãº–”5%øœ³s=3’SJÌc‘Rrê !°Ž±–Cã+ø’•c„©²µÖZ©Ì'±ÖnúaYçVK­u§Vëîfs.ÉßÜîIˆççg®C®€FVb±7Öƒ¹g‰È9·ßïj­Ó4Íó¼®ë8Ž©cŒu ©¤Wˆ¢BM9z?Oã4Í)&cÝUœ«¾Êºóe³ÙcÆq\–™éµVŸ’TRk3MçBÍåŒÞí÷»Ý®)R¦Ä?ˆ€<TR:çDIÂ8µí7΋ç)”rÛÝ£Qa >ÇÝíþϾúÚhõöîáïÿöï8>ˆðËÏî¥çÉBµ,µJ×X™"d)åÕá³ò‰DÄÍfØQçœRêt:¥˜É*D†§°¢/æœI*mŒµTÚE½ŒÃF)ÅÎ&V;­µ_Wj•XÜÀZk­ÍõâXw-8ɱàB4àëÅãFpNå$ÄV",µVhL)iµ@­)¥óéTkå(aLÆeu^+_ë|ö¸Úá*‚õàÕièP»H)¯©Ö@ 9¸®ÆÔõ=Õ–SâïÎê)Œ˜Î)!"ýÈŸ’‰üå5 ÞÝݱ¯ñ‡rʮ눉PJay©¶›ÞÙ®3CoO1§ZmZîh™Ï“S*¥0&ÓšÁ(Õ+¤ð«÷)I¥ûÝ.c›ü"¤üü³Ï¾úæk(Õ{ S¥Ô—o°ÁËyúD! 3Ô:¦Ìómž$‡Øy芊b:?"ÎóÌÀ”Ëzº^ÛÄRŠ­…¥Z™GŒ”ªÓJIÁ1‡1fý3Q´ÖH\ÒÅææ ¦öˆP" ]¯”Z–…wB777=Ü•V[+DWÂRPNë”Òt¥”Ã0ðV‰³caY–ÛÛ[.49C3™ c8Çsi1NSÎ¥µV[ )3Ç»äŒs1D"šç¹™ µ-˼¯­)¥´VõU=„0Mv»ÖúÇßÿý¼.ë¥V\A)£•ÑÃv3tn¿ß)IBÊTKN©H!yMšj¼ì&J9ŸÏ‡Ã!¥Tj-¥Fnnv÷÷wHb‰ÖRÇyÒ ÛÖªäÊ"Šüì7Ãç}§K;œçOž¯ø«¿þKþJœº®¸öê+ÇÑÉW"^÷„œb—u6Æ0lº*¥•R9—R+ ©˜\ÊÖ(RˆK$åÌ<æìðÙlÊ«&5›ÔóË\W>üºRÊZŠ÷>Å´Ýn…dCGlÓ2¯Þ3³±VLR)Þv^Ü¡))•R1D¥åEv8å»Û»››ž’j­û¾wÎ1‚¤ë;gR#µ$¢˜£k.™én,9MSX}«µÕÚ÷}ß÷WM_ œç9—â—õéñ‘E†¡WZ7>ã8òZë/¾øât:þÛ¿ýæååI”ã´ø˜IˆÏ>ÿ|ØlÀ2ãDJQkŒUÝ&^±)%&ï¿yxPBP©QiMZ¥RŽãøîý÷ŸŽ ²Ý´„óá|< Áwß~'öæáËûÛã?ÿû·©|2dªäE0ÇâtƒÈèRîQ^QEøÖ[×µµf­©­h­–e¶Ö!¢‰J©–’RrJw]ÇëæyžÅfs•ýᛚÿ-/'9£8×ÃÅí¤Ñ0\d­8§^¤.Œ6©d¸KíÈòUÏÏϬÂËzõcnPrlE]kYþ\¡•æÿîîÎ{ÿþýûiž7Û-HÒÖ¤” a³Ý¸hö7›ÃËËËñxòÞ/Ó¹¤øpÿ ¥l­ŸÛÄ .üžá ÆEÄu]×iö!põl˹’­µy^?E„}ß=??==?žÎGØÛîéy*¥XkŒBJcT´AÈ£rÆuDÚÚZk ‘é¯Ì®&co°Ýn¿þæ›´®àC ´ÖI+7vŸŽ/?¬k=L*ªýv%wFýÁÿüWÿøOZËÚrHé<ÏùÓÅ(ˆ_þÍ/9u1föší¸>ã<Êq Ðrέ&À*$"A®¹!”Z¡±˜1†©º­5"‘òå֌ѦÀ«j>ÐZ;N!k]mõªÀà@|m§óêœsÖ¾rª+÷7ûýž¯é«ÕÉÔÔR[kMžÏã˜R !@ƒÝv×H2ªßïbÍOÇCcâ›”š$Ö¶ÎSkì!U¡5Bl¥ï[-9g"\Wc4Z»®cÕ¾sJ­Ó<­ëº,sðA 9ç¬s«÷«)åy^¼Z«”.ê:Á‡RYE§^N]ßßÜìúÎ))RŠ>x%+Ê ý0hkù7t±àa×)k­_×ÇÇÇívs·´Ô¨¬(¬²’d#Ê!…qž·ÛÍn»QRÝßßi#¬¡è}Mq0fòá÷/õ¶PÜ'1q–¯~x¥àõ“ìÅC¦LÓTZëû^FUji€‰aðþB½UŠ¥u¤RW@ ”r¿ß¯Ë|ø\(Ü÷´Öø$ð-LD¼äΗ³û¨Ê}}­5ÅÄRSóÏF‰Í` U!¤PÒh¥Ñ@nÁge俦¸ßþîûoËr<¾Xc?>ÖÝ`Þ|ö™?ëËó<χÅ×OJ@•\^iwת”ˆ„Pjk ˆ´2 ÁŠ — °]4O§ÓÿÛ÷ý ÇIÑã×u™§œ3Kªp\^ R[JJë¬ÒZHÉÈß+£šçD ,¯âÎÎ9îÄùxpÜV¥V¬D`­%ÀúÊ%äORŽË2—”òj¥HÔsòAj}3lëm¦ãùC €ýÍXjDkD]w³Ûïk©ÁGP×ç—aÙnw[NÛa™Ã²>?½”Rº®wÖ"@ ñt<žÎgž÷!âû÷ïß¾}ûæÍÛ¾ïÞ½{·úeY–”âW_ÿd·Ûð•"‚ÔŠ.“ YC ©D-dolƒ\riZkµ´Óét8¥ aØ ¥„”µ5©µº¥,°Uíd7|±Ý»_ÿË¿þþw¿­ •´w·¥z·Ýdžmšæyù„Ó(çóùr?Ö ×ªN!¥F*ã4ÉvÑ„jˆóâ@i5瀒Z×_6Uèù?”œK­ˆ‚‡M­”Þš’"óûø6ç*Í{½ÊY–‰xJZÊ{‰\köû“R¶T®6ç^[M9 ›ûÛZëx>³4†RJiSZ×UðÁh-¥Ì¥()yn€RLóCH9w}'¤xxó¦µVs¶ÆHI­ÄœS-¥äÜœí¤T6FÈM­Æøôø¸iƒçyâ/>t½2†0ŸÇiK),©÷øøÈDÈûû»R 3OøzÙ ß—5[Îl<c 1rùÎj²_ù ]ùà0ñòÀÎÔâàgœò4(Á^+îóÊ¡Ðü3ÖŸ¯æpŽõx èõù”:œhü`4ã@Àˆå7ƒþ ǃü˜¾ðó£òøa  <˜äá©Åÿ8 ü¤9ä¿o‰ßpòÏO—|ˆ*ý sÇú€Ì@ß9ãå`?åŸg’…>L ñà`t%ó¡X ö€Ÿxü€/ÃÊ‚O+øÀÄïðàè ÿ<0:|ž_à¼|ç¯Êž üÁ;ô€àW„ùX@¾@séñ~À$òÿ@óG¤x yg€<³Ô‡|çç ßñPsÀùÀo¸ A¾ ù€ 3@§Ç΀yÏð`°4zP z¼¬0Dö¯ÿ<`<ô|œ+ó4øù_ÎAþ3ÉBp4}séóž+ÃÌqß០ òð—ʽ@+ÞÞ>Zá„Þ<Î{—Ú„¾P ð<€Òó mð<Àù£é=þ$ ~€áæ—ʼH8|¾cŽ¿‚¼ ç”û@O  Àšÿ(ñÿ# |heЯÅ<˜ CGÏŸN5¾ð€ð` ö€Ÿ˜ >Hý@;Èà+íó¡Ž }Þ{GÌÐÓó4.ó _å¿8øÏùH<ññ?_‹´øø¯ -ò@«ÉA t#ñ!O—z€/ 2‡[ˆÁ>]ê€|£Ò¼g…þ#íñ`0äg€ã¿D†Ÿ‚ü辘øà =•Ì /%öПÊC¾f~'ÚB>dµx „ixùÏ?<3Ô8ýO÷øïùÂ_ççC8 üÀXIæ8ìñgÊž7ú¡Hý@/åŸh—ÀÿH¼¨ä@>Vó<4üÎߤ ½ ô{]â}^sïó0]ãB06:`&ö@à ÷ã}àsúøø³ÉÁ^Sð¥ù NxAáàñν N ò€àóŸãÃâþ°å>° 3@»Èù/Ðøù¥ùà+Úú¼pD¾Tø¿ÊÿW’ƒ€ç£ÊB.óó À#}>P ñ€À9ïò@£Äƒç§Å{@h@ŸJÞMýߘ‚¼pxÌ ~0!ð€>ÿ >|t<È~.ò iñ ßñAÏòÐpüð)ó RùøÐètø¼Åù/éù87ă<ð€@yÞ$‚;\8Ðê 'öêÀO¸¿[ÉC< ü|»Å…yàò¯@Ÿ™þð*þZy^`Nx¿@ ðñAãCæðÁ^sÀx÷‡û@p þx¯¤ü€0&óð7Ç?óÁò|{Ǽ{Ǽ{Ǽ{Ǽ{GÎú<{Ǽ{ǼÿÄ,7H' %(06@ÿÚÿE<Ê´™ƒ¥:Ú•çœèpètmÆ7»í«}1ƒø6?üže×—ÅÙWRY¿ßQýv±þéÿ¥ÆN¾…Ô~À?žV±K5oóä?†R¯ô‚þð‰Q/$úæƒ,GÿAÓUy.ƒá™ì_<Þ40ýTÕCE¦?BéËŒ›–NÁ”w+¬™Å1­¤j£ú°üj_ž3 9…w΢ú+`HÕŨAGÓL­ ¹NwóÜb°#&¯º‘äV:-Ø”‘¤m=‘O̳v?ÅÊ?B'öôJi=Ì^yœ€k)sñDíÌQæ¿´êÍÒsœjSBóoÅ?þ›ÍãÜ¿·yÞª ¼†Fæäñ{ˆ#@¿ÒÄÎí7%kE¥¡sv=™ãòŒ6µóÿOÄá7Ð\ÞI=“ÐN}RTÍ–Ö ª¿^düêû?ã™0§°”­$úv‡ÚÙÇÑ[eҎ߬g¼glq_èµ_ò*‡ËšäŒZU»Ó¶D‰Ò1öŸÅE—Q? Áú·XlÒ4^þã›ì†Fñ<ôg+ªgOTrÝýñÑlùù*¼gÑ'$F•%Ïâ:ŒK§y2Žç5ü%Éd<Ò¤ Œø-‚¦x·v´GOD+ræÍyFy{uéî/öže²ÏÛöy½aË÷ah_íèP!n”d”t: !l`½ š*¨Ï—q&ÇÍÒCGÓÛrÇ—Û+Lî¹ôÈ<óˆÉz§nþôÂ,#9éö„ß2vVZÙ$wÿk?2qò¦AÑ#ÓÒ–ño©ªõ-câ¯c"¼¤ˆ.®*hÚ¦RWæ÷kĬ´ÓÏT”$·>ï)¤¥Ô¾ê+šL˜ò;zÑÛ{ä’½I(L£æŽy9!ïÕõÉBúsßÐC»Sç ÖÐ̰*k±púäÿ ë^uO¦w(L«Ú }b´N«ÌÊztâhóæYçI‹ÇÂzn(Cs„K£ÊŸFÌý2sâøë!,(tU±QîÉUÍ â!ßà•<ì‚=5•Íç®^©¢RÞ£¦|õ6婱nùˆŒe={Fa ±e;º€iñ‡Çj@Hp¹Aª+¢Ö\g¥L€'L-\ÊAxV†ÅPh‹˜èm-ئu<%×ÕØÔqzÕm_»ÑÚ(÷1ˆ8Ãhb£Ï[lŒc¢(ä=ç©[z_?;¤`Õ±ˆr8)v`t€Ë,fiüůV„­n­ÛZd %a‹Å8‰òtf½0ŽH²êcø›´ÃnMúN zÁ†í¿Àn;ÎGR)Ýù:”±.ÒnùʼnÝUÞµ‚Ás'y[ÏP˸âÌëø¹"Äþ`eNÑO&Ï̧Ø(}Å? 0‰¤HÀ‹ Façü¥İ֞z¯ª²PQJ¾d…!äÊ %”3BM7à÷ÉÛæäÒ9}eHhºv8RŽ{B7ûÿaªŒˆó`[‘Sri÷>ܺˆ5êÖ™—XÓŒ¼#Y£/æy–q-õ/Ó¡Gî—s²ÃôG²kôah¥bfß“ÓÐüÿ¾áÒ|†‰édº9­^†úsÖÐõm‡Šp-‚ý Ž]Ý.~û2ÇÒÌf}æ¢6\Y\·þå‘•A ô2ܾܕ«ß×¼»?ªº&¢ô‚Œ"‹Ó½¥bê¢/.È1ÞìÔ?Z軌±šSŠP5 ÙåûŸr¥Ö¤-rNˈTô6°Ý¼ÑЭDZ§™žø²E.½LR^üº£ÏZŽV,IÆQîßÀ¦­‘X—?Æ5ߟh$Å`0*”2v-ûÏ”kˆ>| óá£Ç™÷TÝ'Y%ÖsYLJVÔÿpCÜ—–QůÌg xê¯0N~qGø®ð÷úAZ‘õ£æ®L—èù›2ˆÅùúú‡èÎ=ž†_Êm,:.Ìü¹Î}çÌ%ŒíõOÔÞéL—%亳jÍ´0iüFs û5|Î7ªC¾é, X侚éñAÙ¸ óÁé½¹r}rýõ`x\û|#Oš4z§ÔgW(ï0•lœ±óHIWÁ„H÷G…ô\¨HKÙ!ÛuZœo3ýݨ¾Áà£ñÙ-Ïþ²$畘šXGJ-.cElCã«ü\ž°Œ«Î2z ˜S:ágÛTRu‘´Iy?·ÂÔÙ›ü½ÙG·æY4ù\|£¬SéCÕ&ùSžçϘT*Z—¹âž¼3˜ƒìf3&Sø/œ&uÄPyí€"6¦3žº¼rÆ­R©ÓøL§Ü.hö…µòŠ÷—rÏ&”ŒÓ<ÖÂM¹ÕÑB*Òèƒ%ú¹&Íž¤ï¶ý~Ýœí)cýwÑSÑ?C›Úªyä¬ |ùCÔ ß/¦K:…‰ÿ¨ô.TÔæ{ ³3?Ù'ró €C¥Òce«3¥D¹·¡Ô”¦ÕNÔáŒÍ öêJfTš“ZSvtyZç…ÔçØ¥u ´Û×ADÏ1Y½ ¬ð6ô:’”Ú¸†v»þ@šIXõeôuGÜ=š¢ö®­7µZùΉz)¾ë;VбˆÎ§©ªgözsæîUM­Ön¿õ(V1+kŸg¶ã“Õê]w‰žÔoö*yþÅnú™Ä~ôô6Âhb‘ò«*+ÇÞê Òú ÃþNöüekv[ o4ϺÉAj»0™áû¬nBúÆòzw:‰ Æj’«*+ÇÞê Òß1jß©i„îÉÕ^Sç™÷ÿÆQWpC™O£¡çRYŸ9}R_¨%2Ãw—çh ¿æ}BÍǤ¸AD£Â¾"ô‰2qRvYô0 £)µ†ÉðV+IÍ“Êú¶&Ù}ߘJ® Ð)~}KÉùŒKwP ¦L¨‚^Œçõ æŽÒÆ ‹Z6~’'A§¤_•‚PÕpV€KóêZ˜´$¢‚¦ëÔ°g½«9Ÿ’~ûºy®x/Ó%ÑÍåÇ»OéùýWè:ewV>ƒÛϦ£Û1sôFŒ?O¯©M\6<îd:8¡ºVÎ)¯žŽsýÎ9÷Ü:PV¾“NŽÙXÑJ–õ‚ÒG±—Oæ+E%‘³&?Oì/Éàê==`F-!«Þjά|Iq³5ÓX'ÅKzÁiNkQX¥lÿ ²z °Ãw Ý˧J¬ÓâÞiþoû‹âNÕ‡±›¯Ÿò}C~=T1Ù<Ü—îMR5>èkñUÊ/ëmýÅBO‘ÉEþìŸÇ£0„ÙŸ;FÔ’žŽ¥€³ngQÑXM i¤õ;„«°jlQhïö/mR°³á?‰ ,Ç ?3ÉW+˼ê®mÑ)ÍâåØÔÄ«µƒ¨™$èm]j9ùîcñàEÓ«7û˜væZÍ?LUÍ”znõ½Ò4ýp+u¯nâfëçú¡?Æ(“,(KÍw1d¸™d¥ÔÍñuˆG´•K¸»$M3¸7 í·ømÚh°£ff5?Mˆ`yת\²QÅ\ 9ÍÕI¼ÊW›Áó\í®Î;¡‘ÖP¾q*Q¶VÃFEšOßWÖ¨»¿PSŒ†²à8gGŸ?ôP¯'>Á¯òò0®K´ƒ›†üÝ»£úN?MYjãp‘Î3ðËÁk+Ê7f$Úk”Ø>éÖhÀ½ÀÊtÔì7ÒA“𖳉õGÖU.øß(ÒsÆ\pào9†j¤V§!œx´Î…˜KCªe®öÔÏ=O׫l;þ,ÿαXr•:ôf'ÁÍþÉ!Ao`PèocüÜ2!‹šŒ´‹;B1mŒYÓb½3ýÀ½B+Fæ õÚ+wÈŽÝ‘ÖW‘¦o̪4€3l¾0 æIr {j;™¾55vW‡›È剴 |-Ž:ŒBoùBÌ#Gg¨Ý ÇhÕÃOYEÕù\†‘Ä¡¶›ßL.hðóSÿ‹8FsÓí ¾d 쯽F×iådZ:vš$áhú7 ç¹±<áS³Q~P­J™šrÁ' ë+!dpŽ˜ð×C¯€x ò0S H¯žpz;ó>ZUöNËÉž›~»ŠÁ-¨½ìõ^táVݳ"CGºek AÖJÐv]JÏ>ìäq}ÃqHUðdñ XhEÿ0œHS{mH¹Ü0&ç=K!ØåÊT‘¹`ö 8=ÀkS?˜Oån;è¦eú`ÊÕ^qª’%žUõõC`ìó•²ìûråÞ䌛ê7¦>@•ôŠðœïkQÕD¡ÏE"N™÷3‰Q`«[Ë\ã m§t~KJ Ί.•yZÐ*‰1-%! ey ¨Îêrís¤VÈÍm  2ФK"ñ:ZØ .áëaÙF„ ~ÇZô@ïµc+ ô™tô~`‹“ÊäŸHcç×ÄïPöPKêܱ/’© úBÔpúªr }EÉìúF›P¦þ^;mMÃél) ÏdgÖµK¢íï¶AnN¸HÚܺÐ.1;Ã;rÈ¥K éŠóníRßù×:(°«.þ"Ñ÷¥¨},‹öO=XÀ¶¼2'©õ6 ªÕfð®Âªºüß«éfýOnμެÈÇ6G©öG\£ž½^æÓf95oŠcÛ‡-U;? ®*2ØBmb>P3n.wy{}yY¥Æð.ˆ¬Ý®cèÝX˜¢ ¹gLõVÒœ¦Þ¥ drœz˜é‚—#ûú¯˜`Òp@Þ’V¥¨¦ÒÑë_e?Þޥɑe…á²a˜+n¨"ê5ÏéèiŽÁ`€!‡TR¯þ!óŠ÷¤·BQìŠõåq2¡Š3™Ð)í·¸“$<Ïè„éBzeåy~–ðStN=«/lìrb¦\eÔOí?«;}ý<§ÿK¨…ŸôÿÖ˜ËÍúЖB=êEiÔÀù¼·èV)ñ„?ûugÏê+$2štš ØŸšf‘iúyy Êœër'gáA?1—/6´ánËë jÿ®cÙ)¿ùc·Â’¡j´…*Î^ù,Ë®ãáÊ!y§úÂÌË(gȪÆDº¦¼¿ä÷¦²jû©ËØ•rIõÄí42sÍãN¦€óÍœÌ xzx>aªóúy [ª—† Ò›\• óLÇë«™Þ>«˜ÌЕµ}Ez‡ûå½}R¥Ú\ý=-K Â2äòh›™ì‡ëîÚ•}‡©ÔY®¿l¨êöÞÒ¯2æ°}š¨{$…7aò:k‹€ ÿ‡B=öîŽE J•ÉÁ ~GɇúþÌ`œ=> ý©Öpúœøãê!÷ü¿øúØ€¶,•ÍâËý?OO…2Þ!× *ZKê¸öÀUè³ áŸ §v,€·HûÌ$"¨7ònTkn}ÏÌÎJžý“õ‡aì3%u!¡j%*G¤ áæOœ=M¨¼—b`èÆ*[+JEç%:µ¶Š80 c¦äœl³+R°eHÒ‹#/p?E@³ÓÖêÖõ[¨UÕçÖŽ3Ù`n‘5ÝÀ²N.*#Ënx±ó⥦²öâ³®›Iß–n[þ›Ì_2¬v©yí¯› 5A#- ÒiÞ[•yœ(+q{¬GNã{ êñ8@þ\˜JPöçËMMsE}N– ³R µ'ú:<ÉÑn‹·ømÂhBçBÐä¿»õ: ¡ÐH…Ëçù‡gß7´9M*J.Á¹ÛÐ×wq[%Uø ±¥_çœI+UIô*X­Yp—®t«ÅLµa°aù1…‚e·„¹>– g,¶}Ï`d/h)I½/ã @rYãô@ËsЧO¤—¡‹mL”Ù?ARøêCž óÊÖøÝRwõ¿N¾O¥iWY7LjŸ™¶ùØ@½©íÔ/=†Ò·=Þf^ÀéhʶR´Â'çŸþ¦EFz}}*Ó—íöõÐ`P#ÈΪ•UÊp…ÖSèùÒìó„™Î|Së^}ÊQï½’N]LúŸþBµöçCN-3G9ýËà˜ß¼ùAæ .Gƒ`ä¼Ñ°¢QCÇ’üú—ý$vUÞÃ}];ÎÂh ŽÕþ<ÿꃼ 0¦öÑ`¿MG¬œ\ŒúðŸ^mh>ãÎd-.cƒWàå?³]~fºü5ªÐ.ÓT%ÈéN°"+¿Ù(¶BbîßäsøO=BußÒ¬ø¿[¡0c»î·¼Ìk_[¼Žìèjæ²µ™Ob¨›ç­úl sGæúcUÐ{ÁÉÂÝ[õO Ö°*¶E½áKuóÅ·áhM`b>¨‘|²ÜuV9Ï\dg—iéïIÿärà{ÈÚWR9ôaòv}ß°á_?a¾~Ã…|ý‡ ùûð=j:ÝmCÚ‡`ÂcпÏqób†Å_1O¾}Ny<ÙŸÛìë®à=BSß*Ré)™˜Ô"PBJ]=zÔŽO ^LÝ”Ecθõ;QóÔÜŽ²SïDÕ–IX|ùù2¹h”Hƒo¹Bµóÿñù]•Y^«èÂÊÝØë«ÿø¿ÿÄÿÚ??ÿÄÿÚ??ÿÄO #$%&"568§!4vw‡¶ÔÖ GWe–˜Çð'0@ADEFcdft‚„†·ÅÓÿÚ?ÿ¹šVôßZ‘–0ù‡à+1ˆã°7Ë2/Š%–ßä\Ç£áö] Wqüv0ýŸ«"¡±†ëKÝzt ʦ Ä$þ-^4 Öø3´ØÌƒé¨G[ys.®-«6‡Oü8C  <®ÊË Ü¯{™®xû9KU2^b9ðdÊ ØñÂói)x,cN¦?sk¿e÷¯e¼Ô|ʦ¯ò©*• ø*i Aÿwþå—÷)¸QkG ­#Ú½¹²ìâ&ʪ_ÂZO‘ ©@äT³';Iàä¶UdUXŒ#§*ïç^åî5yŒò=A‰Í:õÄyŽÑl›}µsò…DUöhÇlj‚`„ʈ@Šÿ¿ýæã J¦C±!i7WEr(üË A3¶Q$i†%ÿüÓwËùøè¡C´áÄm?ceÜÛm–R²šÓaÿ(£Ï"¼þh¢«¢€²û%ÿ—PGØx¿“ÎP0ª«ú#`0ì癊M‹3ùfHky xšÒ]?1K®$K¯ÚnŸóyÚz“²]Õ™l´§r6ëŽ²Ùæ¹vQp^E²Tzàì&$\3– Z,kÑzb ¡ÏË÷8â6b ì9׉\õ)ìšZíà?_e|SCBÊ£Q[aï1uQmz©ì%Äfñyý?á58k bð×ç-XÅÊ ….¯úª"…QZ‘ÂÎ>_KW¢)Ž{=Úzüó8xž§I±lrl>Tòiÿ,U"Ÿz.^ðìߨÊá½o¸‡õMÙž€ Uý†¯Ë_¬ÝJî ÞééSÈ¡§šê˜ÏýÑš\ØüÅ+CÍ\ Ép{ålÌ ò» „9«ã7*á+8YW™Ô··@êH2cA)³$šªºâˆ¬…†[H°åÖ,3‡[k¢Æg“]—V( àT³:èÑWõ"ˆAâ ̓ÖI_MVLª˜Ö½àœG)äc‡ì6a‚™“+Ša%/à©5W5C1ºE§N)¼Íwrñ‰¨²‰‰î †×r³>#Û²‰`<Á#í»‘É4]Ú=¿Q\=W^¸_…×§åÝHEt!ÛãäP»=ÔBÑ40ˆ„œ 2<#Ç<j58*ê"Ŷ‘¥îä^q:üÎɃîºý|îÌE`ͦŒ£0Œó•”œŠ[ Ýòfà;¹4þ÷™ Ç-bqÓSK1zŠªÐ&X»»ô@]ì :ë˜å»W´*òMIñ¡°å°‡iA‰" …9vœk Æb öþZhëVÀ%ŠúƒI›.L«¤B"t³jF]ubs|ˆ¹{¡òí©6¸J›•ødßÈÓ4zgø`t"AØú24ÙÈ´og«¸1®#ˆýU]@hÔÎ|Y}a:£(w0ßeòáùL ßììºë9•`¬½)Ñ%£Bc 5Âá¢ÀqM«Ê®ûüÖ××BUâŽ=戾¼ï—UéÓWDoh׊Ì\y¨ået,*Û-1;;um"‰®8¬ÚÅȳæÑ¥AGl dýzÍ–¿§qÂ6øÒWÒw•Õ±ŸÁ4‘g¯H¬Ÿ’’þÿ¦‚~u‘ÍžMJt:µ}^å™-/°²‹XÚTÃýâPm#®ŠÏFÆúÆB×û`À2á vWšÛöÏbþ°³jÁŠŒº…ŸUX@ ¸[6,™š!Ã^9šÈ«_I* ?DÊõüî“»Õ°gTz¦—µÇw–5çy«ÐPLˆ €ãæX”µ:¶4Ô¥5l&T û¦»°7ú£–/ûš`7ù÷,u%kCê­V…½‹XO­€õ(šîáo,C„Ð^‡ïÏ£f•J¾O ò7Ÿ²áÜç 3çjëý*[ak –U­-˜0ˆ"+ÅÑÑ÷~‰£K>ÊaâƒoO–»þ6Y ÝòfápßXñ¶î<»šø«í¯º¿òØßÿ¦ÿ¹ùð‚Ç_‹»®#"fÇëe®$jA@'\7ÕiTy^ ,*ºÂ´háÈEØP“©®ë1³æOa}cjÚD·4 ®R´ Æ2<‚5ptܯ˜ÊBÑ”—ì÷ß ©MøãÖÖzÔ?=nÂXãÑÓ5®Åz ŠAÕ00‹™ŠÙ¢j¹¥kAL}µ®è+ºv%©óÉôîRâé“õ™-Å7:SÒTÄ8ª.›j¨LÜÄ­”/Sžç[IС­ÎEr¨½Õq¿5<Ð µ¾¨Ô\^q)®mcðèò‡Ô!ÕìäRûÙ‹¶¡0-T€*™ìmJæ ðO•ûxnõ{Ö“‚,]Aá9¥p²_t >‚F¬ …b¨ñ‹óƢذÎì4’^À¿`1î¶ár³Ñ‰zÅÊêZ%‚0-!|çÀäKÌ,Ï%SñœôHl:á"rŠì¾×ì†/¶Ò®Æ«Î`;á"ÎHª\`ïÓBÚ—ýÑ]K~raøjÂ÷a8Þ¤üzý3M£Ï¯¤þÕ©S¢·Ùæö‘HÎT¾~éƒ,[Kvo±2H½ÉZ:V4úwE¤JFÒ’Ì ¶›J¡Ë^½P­•#˜Zòë¢Ù;hNll„šW Æj´ÅÕê®W @fzÀLˆ™ý ]µ]µ¼½• Z¾JäfãàÎ-ªe›].’±(å7õO*é=·@X¿ŒÌ€jW€{`!ÓƆݦ5isÐ\IZ=‚\’\¸ú#B¢È2L+ÐשˆUNÖÌ,Z¨k†Ï–øcÆ ‡âRPù¤R‚ Cp‡Äa³\Ÿýt¡‰ ^¤GžËKž Ö¿­Ë>ë="°mÜë\¾×n…b|èç•Ê?e·w¯,“룼û7u¶_AÚ þ³5’j¿ä M6Yô» Øc¯æFÆc¸­»d¸aÅâ!L3fI;3¬Ã^àW§cŸÒCže†œ¸ Zñ¥2˜J/5dHº‚²W4\}_¬Cèr0…m¡øí×rµºpÖ¼d—@VòšŠæ*K ÄÇa—ÅS‡†òÉ$ŽN?@ð§^C>BÚTénzÖ,ýPµ m+¸¦ÍGkY …8äFpG\ ΗeVÔLÊà'¬soú#aÔºB3â u"[,¬ª, eƒUz5üĆ;9€ÔšÉÍ‘aZñWÄ"ø˜¼¬¡ÂAÚé<××ãTWm9‡9†ŽIÅçŒ2DZìíQ[rµ_É HUãh8©Z2óâà3,ºÁ[¡ëÝ=Õuå-´vçÆãë07ŠÕÔ²¥öÂÖÇ…ßMMqc9žuˆ¶ÁQãkÍ,¯ìºß‘Ï:ÌÇM/ù_e“ãÊfÀ²~¾%Å4ý¿HõÔ<+ª÷°”¯¥">ï$<ÓˆØ=R¬à´æPÙƒ ²¦@¯°ià§Ùh#ܯ4Å-a]5Híf“+‰±8n¯D˜À¦+1AR•!æ%iŒ €VLÓN/!‡+fÀ®Ÿ ggja†Ž}·½nË%¡óLx¿æÇ"¥áüæë ÷ ÊEjˆ3 ¿¤«"¯ú?Ðý(öû3üoŠé…ýQÆ]Qu¬C×ûã{Pï™I¡WÅæf—[ÁZºfqM!ËAÓ-¿@^yeZLþqfÅ{M!=xiÕ­Ù4¦º–m3”ÑÈ€¼Ñ⌳@#A ë4|/™Ç‹üï F½; ŠÈu›4?í Ø¡¹‹M,aëª[ìÃrÿÔ+àa<9š¨¢ù›þ_ó¾0L–~^ŒCMÕGì UtÃWp\@£ÂÛHkjÅÌ–QëÊ—\•AlùI`oEZ>ˆÜ=bºk®´åoÊÊéŽ$GµF^BCA q®ä;ìZS¼eWHËYNø'ì­$·í‹ìm  ¿"ûO“`([5_%°Ï¸R!Ì"%-;ƒx¹Ò©j¡ˆ6‰ü[wEúÎ×//1ÏÐ+|wi$*â´#ñ gþ'Ú:»N­¬¯¥eä´Sc .­¾ˆê=…QkõØ.ÇY˜p)ª¯§rßy]¢­âÒ–PYúÝòjg%XÒ+Dºü †§ÌÖ]ù á🧉Vn½[:Ï;…œ5 €ÈYóµhØr&]0wùM®õ Û ž ±Sc0s½ÑØåÅV#A±¶ ksþh³±ÓV¶ßúød:âê%}2Ó¹ ±­5·(®øLnªK2\n«o©Õ®®õŠ…Î\ß8bà8æUÚäZÈu ˆ®Ö=6Ò(•ÔÑ1°¨ú_n`Dæ1ùšuËoÒ;LMxf"Ï“N>sÕTAeX§XÜýýaÑP5~:Møº|q0 |/°ÊɦaV1Ó¹>R²ùsP$hjÈ\dqY|ÚXštÀg ¿]‡{ÓZô£§òÖ ¢Y§ssÙð¦²>õÍK*_l-µšfғʲ®Q1ØÛ@¿«ãºã~Ë8bÿ­ß »_U‘÷'?¯ec$¦lЙìA o2ø@:HùØUŽÔqg‰‘êM}°/ñöjÿÅ=†q]ÿéþ¾û:gû2ÿõ­ùµ\«úß…þ¼Šnªº«o…«µÓÀb´zî V)†úyù"¡¹úrgŒÃ¼°KWÈ´ên*Ù !¿šS ·ì¹x6†è)`Ô«Ìœ ôœe£ÿkï÷¬\ÒY éô^¨®=ÎùËA¬ËPãnmÂT4(dU¤¦ØØÂ¼ŒõÌ%©$R+™}ÄŒm‚×ÎQà~š2¤–ÐÂ;N×ìÀœ&Î?ÃÝÛõÕå+c‰Óä³û%³ -½•"ÑyU• ;¶æ-ˆ‚¤–c‘ë>ÇP¸­ºÝ›“{PP3{f]æy猞c}ÁyÉRuÅ—HŠ­}ó5Lµ±…÷ŽšÞïXs?_*2ö"Ü厥ë¦É}zÃiOý+' hN¯h`Ò ‹ j†ðQ‰ÖýˆÙh$ì•Âv6ŒZg5hÛVĈ_ëê‹¡˜S;X1òpltuµäãÔ‡C±ÍÜgˆïI®É¦zÚÂì#ŠgÊëS¯QPcΧ ͦaç$(‚ð¸õ$7äÚMÄ?[×›ù~›Ÿ/›AÎ'°OižÜ[+×&,.`2ý ì+¨Ö\Üeõ°9¸~ÊëBA@x­¾zCææP(׆ÏsÊà{/ÉŠ\bY±4…”YÉíÊgp\•q’4«…jò⪬fb:kGqM a_èyÌüÃP~ÃfGɔև”U‚DÃ¥ÂÊ`ôáíÖ9ë\#ÌžoE­¬ÄÚ·E6f%£ JÞ¥„P÷Lš ýŒP š¯%ܼCüe„#ÙòÃ+ó3ÿ÷Tì!bÛ~‚Ó@¼qWòE|­õLZu*ÿå–¼b£bhðÿÿg_Á‡¸¾÷«È¦›N.8YŠvÙL²`Æ›!Ç<ÝtC ²¹®àq¯·áT£¢#¼{?.“H¼ÏÖˆOˆÜâš1Wi Σ㨚DÑ/¬I3<Ža¯c¾*Ûk·k¯fX«é/!¬c .ÍÆOðƃì,_»)#ˆò¾'J²Ï­p¢3…\×}±pÛ?"LÅ:ʯ(»+"Òª‹&ó«Üµ’mû¨‘å M”*©‡+Áñÿ›ö9Ѫ֎2=sz¥À¬êÈú„_]*²E$‘írÂ…V.§×è]G£Qe•JLÖ£W×'­s ó]oL\‰s­í¼ñê ÖZevçˆÙe«\"U¯ŠYUI`’–Iè]n‹Ù-óä8g¯¨Ž·M\ˆhp~=Éê˺R€KÍY k€Ë–úê^ßKƒyqª’@µ¯`9&èºã+™YÕ~¡ÕI²NEµ¯”b棯?"p쇰@×ñ8¥œdeh¯gçi3-á:s~-Ýuþ‹^UÙ•%þ—VVp…Ð=ŽC™1×3¦»¶É¬”É ªÈEÖ]§€u3tÛ ‹,ß®LÐKçÃR(w¯ÝwÍñã[M¤ ¯8kÖ¶žÝÄ™®C›Ô©ûøwzL®`õˆbTªÉ¯:›Æ±šßcSSÓø¥ÚkÜÑœÌ[/@­‚kèì:œÅ9¨²štCc9äN9r¡æ?—7sOD{*Òü—\äÏúfünõ¼‚C&Fðï!ÈEXWôp×Pk\E2¢ˆ¤eaYÏQÁ±´ª§t†Ïßñ Ý¡©é05u_€¶ÄY‡J6¶œÅ¼‹ÚÎR5@KChR‹(fù¯ž)þ%yÇãF]ê²-©R°Ïž}—°\UaZ JÔ/µ÷Ú.jåüçClÎL_ÁŠ@d+'¾oÜš\®^Ê«+wœY¨Î1㾈ҩZVhôd/˜|Mx¢éYÜÑŒY‚¶H›5.ÛdõÝk£Ìo‘&ü˜ÙÌ«ºý~n°¹æÏ¶„Z9õEµx¢O6(+Ö˜´EÇ-œKÜéâ¿w¹MótˬÏÖ³?¦‘ïðÎ ÆÌl#†ÁmÚÛ>„ýÜácŠÅúî:‚ËíL‡O‘¡û>Åm;,ÜÁÇz›¬®?}‰i!c/DŠüf'xt³¯‹¼b¶Ž2™íç~uÉ·: ³NKŒÛNÒô-)20^T¶!ëSzßÍòƒs¤ i ¼¶ˆÒÅ*ã!»H®ÙÞg÷4ö™®Jˆ Iس⚉ž*ñ~ÄMÈⳊå£5ó½6‹ì?ñëE?ÁȪ_H·zx’à»*#ä´·âhÓ-‡³W¥˜,ÅQ]¡K¦<¹3Ÿd½V{BñÙ_c‚  (ÑN³9Ç”c ¾ŸA2.Sn–ÓU˜Ž ½bGUßÔhÜd4Í’Þ»)ìr0˜%ózêB®¬_o6æ,…wUZˆ[,ìuuÀÎ.nv¬µÒßÞùѳL'ÏÔ‘XÒål¤ÎÒ#Á$![BÃùÒXðÌ’âëÝ[eÓíý¶ƒ@Eüîô:Sé Ö’ƒDªÆy¬ùt}•2¸uH¾¶uì¬˅¯ûåI_Á°]O­_ˆí Öƒö±4:Gýˆ^\MELºF`AKøÄ W‚mÜúaòîB¯>è[ŠhrîÊüp¿°@_atèXõ³%T•w+haøìivBYöPëHáa­N.]|@,Zͧ/ßA®fòú\Ó ‹&„R?Â?ÕU~“Põ}¤Z8 âCDI,xOìá;<ž†øjo_±ÎÐóXc@.¸òç?R±?…#ñÀ: u¼ k1àÄ`N“/áçø-G—î•êÒD,¶KÈ·Ê]ñf‚5»+Ê®¿;þæ÷Û.¾m?׉EÎDO®×Þ¿e dž6a¦"Ó\g8ò¥e‰òè«äZˆ«íÞ P<*¿ÞD’ æìýÕðúÿtÏÿ‰¿¯þÅþÿ£óÔ#@âIõOÁš‚ôÔ‹—$úf¼±ç\,ƒâ˜Îb–V'ý¯/…öðÇ´4TVA{OOW«c]«Œå§Z\¡ C*’=S­k¿‹Í¯ØV—‰/ñ¢tíülÕè(aosúÕzUƒÙÝwXß@ 8eìŸÔyÙË9b.BúlVÏ‹Hþl÷kú„ެ7 §­jk\©:!nÐ.Ï3©²Ð„ß m¶³Ä¸këLäNW£:QÒ9zs±ÍŠôùÛhì$Z´0)™DX_Ÿ*‡Õê×gø#ŽB“ë©<¬…‡8%H9ÖMT+×tïg¶-Ë—ìušU"}H£ñ¨/¢šFlY ¯ŠBëÉ{(Ø{„¹oÔo²=-Øúzš:Ù™¥­zÑ6¶ñ>4°¨ƒc!Ç7šÂû ¹ƒ’m´µº[kFX÷qÕ_Ì0½ƒ£_h§ßw9莑Z¹•TíEš$ð]ÜÂêÁš‘ ˆL;¶’‘tèâPnÄ+úp}žRE%´ÉlÙ(Mg”¯’©¤‘”è˜üUqµAw3Ìc!T«²¦ ØöiÖÄaóMúãôËiF¿Â¯0iú•ù®hhq>˜áÉÞ‘`'"T`MJXŠ••s«jÄm ëáû/Y؉ü¨6Ó‰÷äsœµN @½u¼ˆ\áUÅc¹yHº{ézœ> ¶ºÎÑþ3õB­""Tc®™j¨[ vÝ« 㨪dNª/¶4Æ|Ù*é¶|Gã\ùá?cµün×ÚÍ.}…„G!–ä£drƒ$O ,Kë•⼪°åÌ©#Y,wFž W]Rý=ØèeA\Ð,UD~C„δ{,þî5ø°‡$Ê3lxôÉ×vQ|²¯TäKŸWÅTRG‹kAãnzîKhãpì¢Â¥„« .?7½—AïóÃúczœsìÌãÀau4ƒÄÃy¢Í°y«Á®ø•Zã"Ì“ª-‡Ü‰Þ8߆Zö>¥…w„O:Í{àL¦¬°l.•¡j3&}´óO±W.ªîHX]„ýWÇ—«u¿ˆ©ÀËØE¦ôIWõö¡X¼ØiBSQïËÊÛ£"vЧ’‰Žv±‡ò¦`–ÐÈu’UŽ_Ö®3øµCñÎ?8 ”zÅ r† ÷Ž–nL–Ž›šSZ@­¡Zºî±§»ÓÚã¢3éYëš§w³DHN|Äž•È$¥h9À•<ø/_:h¡wÑmr¨1j:—´t)4 vÔõ´ó2Uz°~MZ‘|B¤6Ûáûñ Ý‚ŽÙøD ý"­ÌÔ’#¬g;¿sú¦´W‡oG£7úÆ¥ö¥ó—Röûçs?Y¦‡Ü|õ Túz‚jÃØX1tîìÔüç¥_¡ÿóͬ´…¢«â¸ú¿™;%ãb¤(¿¾^ÆMÉìXD­žÏGÓïM£Nnb¬êWJ” 0µªJÖ¬‘ÏrVÌŠm&ðeÄ_Ý\«2®xOd«™£6gOJv»é^9òYšu¸ë…È*Û8 *kd—w ÑÌ8$˜SË* ëo Ff«?ŽøúÿÙëþ×½Š>§`‰wÄÈÓ²­*!ê‡ø›‚= ¸/%,š+'Ç”Í<3\YyÄM)§6;;˜Kšù©Ôýs¬ÏmöIæöoéW˜i^ßRáõVplá 2!8Lnƒƒ"‚"-C18¡¿œDÍ:üŸë dÛ‚%W¸Å "« áù¦gˈk õ°«WeáÅÃ'Õâº_#¡aºý9„Li³*sˆr!uN–V¥_B^bø{+}e‚Bµ¨„L ž}—剣îôcÛõýjÕçzzÐEøS]rú,t†rû§ g’Äêël⟨~*¢°{4?Ërφ=æL#J p­¹œ”QNÃèdŒ‚¯œ5upHù»7°äé™üew䎽}˜ö04}WÓÃ"¨g]„‘0`&†Ë>•ãK%) SŠïæzþ¾Kß[tVŠŸ€ټᓠԄ)UÙ¡<»Qxì親XrÍoË •…š¥åT»[üÈàŒü‚ ÷:­9`,UÖwcõ¹ävÌ"%wó)¡bìXò?ß+MÙe*d0oô\þEÜ:Õûq9`G'CZ=ÖèØeמ¸°“\0ôß*úàd•‹Hä¯.«Z7Åâ:£@f}þa x@ó‹Ä`Ž(Î4ÚÙ¨üªj#¯’2 õblx°¹rkÎ ËþëÚ+ÞÁƒ¿[ú3WCL“Eg´õ(óuÞÁ;º…ð¾ÿ4„í—õzòágÛÛYF:ùû•]!Ô4ßQ´ÃÈ;¡×ê5wÒÂÔE_höˆ@µò°*aï‘y¯ˆóãñ½[?`k>Èß—µùƒã¿±âÈÇ,£äG­"¨}~RóêúÎø]F†Áʾ®žÜpWb¸@›­-¶‡B%œ;ÒºM©\n„Y{$g.dEk‡öº; HË™» ®q6 ÝvOP›¿ó‹Â{ê±lèsÙW(J™\ȈÁfi AD‚%ÇŒ}–)…—p´"tñUë| ×ùµ¯´þ¿²Åj÷Ï—ÛMwÇèh—VÁa_Ô,xÅÛôÝŃÝð"«k…êÝ~akÜ,+ëòW4ÄvSHún¬Š~ñ uhöýDUUõý•ËáuuÙêp<-ëÚ{ã»îIrðäf•HÁ­I\"½mì3ö üÉHµ†'+s«Ó.®çñ`À÷ÎßRÅ‘¾Kz¾Œ‘È)Êê‡'»GF^.+½4(¼Ú›Ôÿ€ˆ_DÖºW”Fo³üœÌzjÇNd·Óç–o‹H–}©CEësãŽwN% ÁRªè÷ jy›lMGEÚ÷}aÝÚv|"Û¥Ï5O¡’üÍ)ö­:œžƒêÆæÐÈðsZçjj¼û+ʼ h3LOfõc]ÙòœuÆsfí„srYk”_¸þ–ÃèMA ªŠöò=€oÔ.½ X#²á§«ü…ë…æœâ•A•—î¢ÿD×G)‰”²OjþØ‘Ì<“\´¦ð‘\SUFƒùÕƒâ•Þºµ‹1Ê{ª[I‹jƒª²ž5Z~krJŒ aø¬–å›ù]¿ÖjùYZ‘ðì­iyÁü¬°ì%Úåù™NˆE=%hWÒ¡ÁãæKlwä½HxÀÍ#†¸|¾}¹×qI4 HœeT¤Ç †ÐxKiØœRG6¤£„E¹"~I¬^±ÂŠ·iñ¦¤8¯×€V+‰† 6 ôÚ>Å¢ }ž°mm«ª2ÿÇÜÅÃw»v;ë}0œ¸¬zÞaŠÉ¯`é¤f·u¹kˆ^mJ´ª_p¾Ã%°‹ì6ƒNà\^0vÌæ£ O.lMRä¬`4¥Ϋ‚Tú¹–XêIå— n€ª‚±…\ŸÿÈåþ˜fŸùÿÿêëùƒM‘_¸Ñ÷~ƒP J vw3™°L\y·xãz²å¬Ô:éwÄÖA±™ÀG»½îêE+ÞöNc¡ÈŽIäRn¤,:ÙÑ‹ Täv , VEŽFZ#ö N\Ôêä@g ÊbD*,zIª‰Õï®6Â$‚u#šF\qp†ACÙò¤Šj¶‡0ûoÓ>Ò=Š;ÌgŸ~Ìzì¸ÿ‹ ¢Œ[@œ4‚3–@‡y~M©ýË)i… ü$®ÔéˆÀΞè%òû¾º+Åä)X¸"\äP¸©¹T˜}ßÛuµŸ`r+õpâÄÚ»¯Z~6âÔŸEöÂ;¯TT9˜âEÃi©S¬ŠÌarzF3Çs;/‹<ét(Ë+û.û±ªGØãeP.ŽžÕ¥‘­ÌE³es$lÀ ç¦0–cCÀª–VeK5ÜÚ|à.a­Å ¿~>]ÅŒêFi¡«ê2`4`k™B~eÏ1–Lâ "÷G7„1Òù–BÛñÁ溯yú³M-oêÖó§ìwé+\µ<#ô¬#²ôk‡þÖÕG,¾Þyöva¼ nE†‚¢øZÑ›­4n\O\ÍÃsõÀÀ …÷7RŽókà&Ø?jn8Ègò˜õæó[ˆ2 ÔBe¢°øÞ¨~lµ#»W[¶— ~µÂYìáMÊÆV„¼Ö»®ªý¹zÿrM€)àA/`>ǰˆjœˆ¤ÃþoðK0+*­ ¡¶^|€å˜Pš@Jª zn!Hšó´œGh–€aL†¼Œó÷‘ÔÕ VÂAZL´ÅÇ–\ÇñÂëò(tC$ç³Gl-Ü´xIJï2RyÂw|™¸5TM¾ž(çægÁ<Þ BÅúMËÓóð^G–nÍÆ¯V(ùmJµ–üxœyYCü5ÿi™ÓÊ@°|êáæÃ޾d!76gK(êÐ* ˃K×Q5M}t”7'Ù£ÀòÂÚ9b߈Ë:¢¨ææ4±'ϨCfIÇ~2ôA¦šEŘairdYDY+ˆ$’.ÝÎÛȾÙÎÛ®¶r²Û%)Î\Ëžyþ^ĿŎ´qþ¿²µx”o—ÛutGèV—XÁ™_Ôì6xÂ[ôÓÅ„]ð«l†qØ]Ôx]~¨Z#¥ì£0 Ùøo]¶äÕå™$‡™dâh´¶˜ö#…z×4 uÊkçê…[N4á*´¯Ù üYæ=S¢æQkÁWš²$ך*¼É!´ˆWZú9o:î€tf@+GŸ"'XmWmzü­ Ê6NôdÞ%r¬;ZEœ=ÄéÚØ°z›+•ÐÑ&æ)ãèáWWO"[®Û¸Ó?ÑF¾qúOï>Ô0 ਠÙ"NpÕÓh|[^D¸L3ª5´¿’í?Ç]¬%:ŸhµXî䯚ø ¦"ñ4¡HaÜÒå>§‚ˆ•ÍÈkž²Øî_šÓ[Ùë:ØŽÁ´sòÄ„uæèn¦sZ¾kÃafU|ëƒh­ì–––¯·ZfÿºË«!%<î™éùÌÙ}møÅÅ¥19ZÆ©2ÂCcN]@¢zé\Ñe±¿ŠýpÀ[ˆ¼j–-Ý¢)Ö`WÂD¾8L딄I÷q{V,ë®^¾ê)³Í«C€Àuú¬8û—$†P|壘u$íDŽ…ã1×Â|•y_«V KbaÖUäȜաÉuä:€6|0¤·­öX÷@í”à :Ì Ô(‡Ï{asº9%»@×ÉE €ç„Ù";jꆬRŽÝ¾W9¶<æ[e¬§”ò 1jŠ¥7PÍ`EMÄëXdÇ5\ºÚWKŽÁlœÐ·©ôHöMuö‹Zù¯!w±…‘VŒ¨aî)2ÔÔuRY—r¤@«"qEøc3 Ú ˜Þcµ¤ªb›ÓvX´$¹rD- Š-€óˆœ)cÍܦµ¶æðobLÍÆ>×Pæ4°$^ ,†$ ¾ˆŒ¸b.\˜µãEƒ ¬*·e±UòÎ_g-‡AÓœ««ÇmHüs>Hm­³²Dˆf‚žiøµ"“m"Þ#Lƒއ–áJ(‘ËM‰Nß\#O²¼Þ%r þâAœ¨‹…|é™-òõÅ’¹ õûÔ·HRÎý v×åWÙ »Wµç‹xˆÞ—Ym®œ¬áEYi#gkßÞ¡Ò¥ƒ¬)Òê"¸¯Øl¶ÉÛ(9.Æô -Ow¼¯³ìVÒÌ}@•ó¦Êã÷Ø•’vqúg8‘_ŒÄîê«âï´~m¢Æ½¶˜-~{M…` Váèt:}¸,ÁfØ1„ &”«¿¿ÛA§Ô"ܺâ¢{ij‘Ô·Y¬WpoÝhúÍ}írP8äxÙg4UÜ¡ÇMiWÚ†Ò››ÅßÄù†x–®Ž(¤]?kìµú|_@ªC#‘œû–œŽ!|@€FlÔaưß]*?£ø{Ç1>º0¦ÖÑ+p9ýqáö3}ùm½¹­..É>þdn’f÷Ý¥þíIëè–Œ¯…äQžº‚p ;?$Ã8ÂËd»*\üæ «•ž&µ)*Ö¶Gólj‰Py÷uâ[XÀúYļ‰wºú•‘7ÒëkØ(¢Œ¾s-$ÌìHª#Íre1¾”öWF|è…µµ©$Ï-v?µúÛ'›Oæ*Öö6ˆà]¡È%«R0l5<¦y o, n`TŸYúÇ+6`c^Nû\ zwïD u"õÞWnVÃl…5±Ã†`?Kou¦0Œ³B‚õ•”&Ãy„éOÈv{ýq”ƒ=â'ì“]<Tø¸é³m ({9^¤VqLJ³•ô*Vz/¶uq×[L6±1#û+U¯>^­¢“NÙYpN+ï§éóœØ9TƒSшi9ôq† >.ëês½Ÿ×Ä&ó_% 6ßsÚ¹Á>äZ‰»=36o‰$ÞΪùF×h„7°[¿éþÿÿ£iÿÿ?ã§Z—=Ϧ¨ê.¡ó=C©ÇØ0´óg,É0Í‚CSHqÆæ&Ùq-V ¡™ÏÈÛn¢˜V7Ûî²aMŒ.qØà¾`Ò=±¢¹×Í¢9¾œƒ Ä²»dÂÎZF¤I*e®GÜéôH„úu[ZìÊ ÃûcMãÇ› ®‘(®¢˜Ÿ bw¤ŸãU¹Ο@ ã7¶ÈÕµ®Á|¨Vi<¦À)4ÙÙñøÆ(ëí¼Qò¹ª’¢jõJOs˜RF€šÓ5®n)¡ƒ„›6Þ31žƒW½×÷;Š™8âJkÿt‡%À¢È"–: Â&~âÁ¹äò ä„_À ʬB-"¡h)Æk3Ûú 5O§µî \®ù}¢°ñ^áˆÀO-ywÆïµ{O¿é¨8xT’eÒyºêÞ†íq;Tâê4ÃGK¸ÏH£ÛžÎZä´‹‚4*šöæ¾Â rr’?÷7½A¦uú ¿ØPÄ›iA¸ŽyÁ—x¿ZúüS'ÀFX.rù5e)`hÜ´êìã­Çï$dò$öIµ,1]:=E¹IdÝláOÅbv*oLØHÜ3÷§Ρˆ’Íîÿ#:£°Õ8.#¯„¯p˜^"þã¹ÙýB°“ŽL\o#i¹ôÙîDá~|¸ªGasA mÝPG]Å?NB© zžaÂKŒ‚ÏØE zÙŠ6LãsÔjª¬²‹[¦’®žsÐa' ÿ‰ØcsV­S$¬¸°ö ÕkˆÐ'£¸\õkÒšI(¦øy¸12Ëzø_È>°ÅæsŒ'ç"ÍagŠDЉ™}Õ}VºÝð½êñØPS~¼EÊì0Š›äÝ$åVÙ"ýŸ¢ê%ÚÇK¹·Œ Åxµ×Š©¶Ï#d8‰ÄЗM…V¸«ko ¸›¿0@§O<θ &ñiâ¥1ÈÐ’‡+í¹<Ì‚ÒÈîžÑ©©}ôžjX°]LÓøë¦&«ïqÙ¬ I¯´³{ûe©bÞcᯟ­ hpâ;Jn¥u4ÊõÅAã?Æ’.Åü$o×,r¹ÊÚ‹Sn/,Ffç#Ǩ!@Sj Ö² ž†Ä¶eXÂTÛ¬ÈüaÓ¦·$9é†o”<Ÿ®²áøõ銼„™¹rµö4VÓK¨ÔŠy°ŒÍýM¯(”"SøÙ¯×³qòSí;Ô­©<Ƈsb…«ëÏqµÈ“ ¿ÉÄ\™í‰O1¬Ø4*ûìÞô§oóœ ØRXhqÌ•§¦¿74¤]‹nºß«Š­$Û hÀÇ$òî pŪÀhÜ“ÕÝß¡¥öWœd ÍW‡fs l%mž]UÖ!^P•Ý!oK.j"²‹ K¨ëþÄK’Ìet.ÇÀæ{(¶€@é3Í*° eYÚ¾7ÄÖuDKÀ>l 4æ˜ÿ„«/ç²Fgž_rö+ôùíHLB”)ýÖ-H±+ýg¼õùH‘þIÂ0ÑeŽ Kî…áþ<½Ø ™UÖïHà/…·ebáL;àÀ_‹ØMzÔEä[\%àrŸó…k(чM¯ë’;ÂËê¶WÜ ß}K„@6f‹}ß$0ØP¬—ö3õ‰'ekÈ‘®m3;žœÐv˲ðeŒ/0Šã©¦˜ m*“êäÇÃ_?Z8ws Ûü+±ªØ%ä–Y^àQ×$u‹ž¥6¤ š}34Ä'cz÷¯¦‘ª{ªL5¡]B¬ÿ&ò[#o °Ä«v@›EÏH!ªaÔÇh·VJò ejå–]—¾…kɨqœ•ÏÀfµÙa+.ûäXÅâ²êL¹æ°`Ïe #±DþÈò”)WÊ{>*‚û )|‡Ó©:àk¡äîý!<ð°o!æ~‘Ü.·[øÉXBØÝH ëŸ5¸(HÇzðªp4Šá=ÌL¡\%Y5\N¸iûYùúdý×±ò˜ÔÒïD”g¥øTލ¡,û*ºÇûÎæGŸM|ql„×1ü€_ÖYŸëhÈM É×úÇÌ–8õÙ¶âkþ¶e@²ÿV©•IüïÄàJåüC˜g¾q-6a^Œ]Èë~+Åñáåú•j ò„*+*تrÁ¢â/d!¯J ¤ò¬ _&ˆê÷f‰8B;€­!RÙ8cî¾Q· Íå¦êkX’½•gSÚPÁÆ­ 1vU£GUaOÙð¨k˜­ú¬N¨ÁäSê>òÆ­bûì¤ÛÔbß_aBøËÛú#îû}C¬Çð~¯«áå~Ë×9ß—“öOéð¼Ïo“ãÿt}Íô—~G8¶Öä@›f÷­ôÎýž=5N6œ¨äxJ¾`§U«â*Ñéú„„åc“»ÛNÞÕƒÈõ"ãðïrør•€·n;Pª#åLë‹}g6Á‰›`êϱnÉÿsmî:=öis]¨Ú¢5 Va¤-RÿE³vÐae˜ž…㲤Q¹Bäºì—uãê„RˆÎÇ;,®@\&…›.ÓcÍD0Ði×Ú`ÊÀ&ºp`4—a¢RÉâp?[‚jÉ'SÚ åñ ë.^ýNŒ¡sö‡ Õj‚`5u‹5±6È«ëü›×;Ѹ/¹uš¤‘Z²|\äÞ´ZÍU×0‚ʨ BXƒ|¬ ŠÓ,.Æviô¯•}M¦Äkˆ5¢ÌY£VEÌGàŽ¿åêxÑ j9¦>â£Z¡UÙƒžu Ì–%NËaØ+ûŽèÍg\•©Fšo6g ´à–ÊÀ`Åû¸’9Æø0¾BX=„ z6ÁÔÍ)|1—H»ü‰ þÒ71E°CZõ")˜U¶¡lî¬Ô7 Ê(.g•'â?cž/‡ŒòÆ­ó¨d£o½íízl³ÝÈrŠ‘.I !]#^JK¸(>cJ@ËćRWŒ õj­°±ræµ5öõ ;/OÛ:NÕ!ˆµ É[Db£š¢Ô@û|å‚.ò]mcjš­k³ŠDX(LŽ8¶½ž…žßy×ã“õáÀ±ö¯Žh/ÎÍ…MÿH91„|a—ÿq1»Ë„²¼†¿¯»ŒÆ>º… ùÔgŽÒ²`¡· ¤…B"M"‡'W*.šÝ¢^Ô"Ô†À'³þ4êã¿'tè¶޲ƒôRUM˜‹‘l™ŽA¥¢4HT@±[:‰ ݰ|C!Í“Ãép£Œæ%ÏäˆlY +–OŒ«ìŽX[VD!·E¥Îë"pMUëéúØ*¬JO\ÄœºeÓd×ùÜ{]Ò>IRBM»%HëÑ•p*©9¥„ ÎW %#Fv.)…9\ŒZ IVà]¯w'î)k“­§"™24™Ç*\ü b´³Ö¢a4C*bÒ/à øO5¶ŒQ¬8RV°šrjtã¯/–f…WYYXGåhê¬ÎZ0 1ƒx«#L-²Ñ|ÈFÐíúoþv®qˆ„‹¼S°J5¡Q] —‹žÏ±E—Îö†!äý”™J6®z‘ª¥oßçVk)?ÚOwѬJ0TúZõT£ˆDÞ'5ä3FKr"$—|®p\c‘öF“/”_äkt Ïgûm+¼*Õˆ¯ýk×<.`ýÌóë°r${.c¡'çYôäqŵìô,óþûοŸ¯µ|sA~vl*hGúAÉŒ#ã ¿üë‰Þ\ 5•æwxîÓÿ2–èb¨‹ÑƒBF@Ç­'®óÃV©Ewù®Ï–VÃ0½íjïÏ[]«®¶èRg{—A®ÛtÎ~gµÏhÚÌÄA+Vº°˜€åê~Ÿj9s'C¦0eù§ó›é"ò /óÇ,¥ ˹gšÉ2Äž¨]PƒÐL+uJx±¯‘Âûc^Ò 3ÙväNò¾Èˆ·ú(zþÑ­¦ÛWõ\èþoãÿöçùƒAOUä2ùžXY 3@¯'h6Ê1±ÛeŒôÿªøŸy,Þ$C¹‹+oâ*õqê§ù5ƒë«° iç3QÇ…-“Ÿwe.My)~¾|qJ•Qh)Ú/X9ËémcSø×šÐ^¡½lz=›ÄÇ%à¹ Ó  ÷¼ÊÉk”ñ .  –;¬‰pþGCf^`ØóÚù«±wq"æ  EbQÅã G\ZœImRg>×ÌòM Ÿ2üÿþ@?(ÿôÃ3üüŠÿÍþ˜üÝéÂJœ.í·ñã |V¯·*NH7Y M‹× [øèÈVjlÀkø fü`I°€³ò¹cú->«ü†´”«YJ(&dmô€¹™uDöèZ±‘AáEÑà¢YÏ E°k¢þGc¸yÖÉúo–Ó®ËMhò½~κaDš%ÕMz«(¦Ì Ä*´…MfbÑàìà#2„Ãuf+£sŸÓâ?÷–WSAEÖY±¤§¶ïEDÆT°+¸bYJ¥É_f“8>b¥\Ò¡kd~˜Âdgè×Á‹;±š¾6ç~Æ“N®+¸fN±;¿ÛôÁÃÛdÉ}9è„ä´YõcGÀ£^Ûl§¤,Ôv’éSþ ÆÊ3Ô­å‘q‘<¼Éa,ÖJAÁ8Mê)&èÝüüGÚïÀ ;žYKjë­™YðEo‚>>¾À–ŒC‡­)v"‘‡ªÎJwNtÚÌàzÅþvú-Æ0÷ ­pa‰¡ÐEBÏ*цŸõ÷‰³‡:d=y¡ÓV;;3YKU—ìPêl ‰ú·QˆÏ§Á7ô¸ZpÕÔ1©/Hîú’¢VâJCöKåó¬õ¢(áEç NÑË`?mö6‡(¿Y ÷o¸ë¬9¤Ï5ø+ë¼’"è¾hO°šå RWvn¹Žw³cLêí']W€_Ÿìzîßp€_¥ýÉèô{Žuᤔíñ/ðUM€¨OT29¨ˆˆØý î²î¥Š2g¸0¿¶êpõVk8R &$õ‘àÒŒB 9\3_ÁBò/ÇÍ:eÿJ5v[c”Ìue¸¨Ïçâ[ljêÔŸBÜg72 rĘ6¸—ƒ( ·ßrÚ‡ ê¬É+ ¢WÝå°Ï¸¦†·_÷ØË¿w[†«Â.î°ÒÌ}jã­vú™À"•Ö;Ý«´;‚â ŠÐä¼-áLÿ…¨¤%æ3ÈõÛJ—ØäR;E²Sõ[ÇÆuWÚ=¤‚DÄ b& …á,þ×víÿ`Ùb4Ze}zYΊõ0ž ô†KËvMPï}žâêÙW#VòT’¼ÃëÆl»9.Ÿ\oeéìÏ¥(zEAÈ­¨Œ,ý|á-4ƒmeÊ™ŽXWõ œÎ•%Ê#»ÏMs<º¿0?¡EO” š”³Ò¸¹«²ÊŽ z–úxbc…`Ì¡ž °W‚4ëÕv:³:xYs¬~[K¨Y¦mËФ© BÚ¡ˆ¦ß÷Àek „3Z:¹iÈQKÌ“|kŸ“ †HÙš_mvd›]CÜ´‰u¢ 1ƒx°+lØB¸_9\xTö§‰}Üùö¦*”éJ'¢’ä‹*p5¨È¬få‰|,ˆUx]6B•hß:0N»#»Ø³#ì ›UËs× õ÷›u…ÒÚŒ‰f& o$w55²»Úy·aÑ[Tˆ•¨"=¿Úi/úMÍfÑu~åGž­‡Û&SɬV#¯¨BÂeIà7Ëm°ÚÍ©gèFünìû&—A̹¯ËÎÅÎ0ñA…•¯y{cÂ_ ¤òSÄ>ÈŠ»Ë0¥ŒWwcgû)¯Fõ»•íðJ´:_HE(–äÖ«.*»²¶$IwkW+q÷»º– ÈÏIÕHq›È"éŸUæ rv¼«‰D¹“†CEMVU iÙdìT$ܵûÛÿ7û'QÅO»®•,Ny͘¦ëv†/$Îicc%º8ê1&$ítÒy¸Ê:ý›³;fʬ¯ –Œr”ú¥ÄqQÃÔE|Rx¼Š{5ôé%Å™éäŠvö%KˆÐ`fáÔµk5³P&qõEV× ¨Z8Tf„,#ð©‡gk•¥ÍgA¼³tšC7úBô›öùC"ßOŠ€qZw¹ûË.üûÐD¹…ÂÑÀ8imÅÝmJ•T ‚h´_Â;ìHö{VòÇ&‡R‡T<èõ”±(®?tbž*[}ÊN•0 —Z VïR^¹ $'Lìr0'Fê]vxºG›†°’‚˜æßmCÕö‘o3à‰’@d‚Ùt¯šs²Ýf<þøßë»®sí7ÏQèbìüåÀ«QaÂøtÄ\ÂÑ)Ø×¥uu1(îx[ñ¾ÚÈF‚Üs޾Ž}•ñYFÖ=)ô•¥b‡y7ÅË3¸¦ÙŽy\Xliª»j¨q£žÍ0ëW$ãA¥ÔH'²bGìY™qæ)(.¯·î-¸`ï´?÷Ú¡!è¬Uð‘ãâû^©øˆÌì½)65fâT—¡‚3d'аƒ&-.g4Ü$güfj¢ªãŠJÓ¯{½ÜúïA£°Ý[þU™sš™]mlŒJÝ0}-•ñEòpã©VÒ+¸NI«Úg{¿-à0 …Ï@oÙ]Ë–‹AWB‘6¢ çúaǹ°Â¡:Â8\<#^ ?iȶàzy"½‰Râ4¸u-ZÍDlÔ œ}QU…5Âꎡ‹Ç<*aÙÚÅeisYÐo,Ý&Íþ½&ý¾FÈ·Óâ Vî~òË¿>ô.ap€´p[qw[R¥U š-ñ¿sbUw~µÆ‹?&)²å7’òNÓ&Eð~§ÑÍcÅüÀ…ß¶ÑSG„kêKÖ¸µ%þ2i5È7''¯$$†ÃØå2L~¹ž]´K¥v„<­ÍØôHˆ7öxº:acÂy¦ÌìúY8¹3³ròëÓ#fyÊTñaʾæü¢¤ß¨µ ´áV¥}ixåIÙé®2¶':þwH˜ëÕ«‡—ªûÓaÅuñièëf]‚‰_Ö ºÒhã™4$ZkiJõ´t¹b«S¤Ä“axônÜNñb”('0ÁeaÕIS¤Ü­¹Ã£BÎùà­’(ÆÐ¸ÓYº ÄÌõ¿oõ¹ë j94Í´sçn+§2+õkÈ…œŽ±´‚Ž&mŘ=³ÛËx½®¿lèÇaFP±k:Ù¯Xîd‚®~cúà ´Q‘úýºØÿ©èөαʡžTVF‰dÊ”­jçBô±ýkd×–¹Á5 >²‡¢Ô“0gÌwFu'ãÁ{!p•6ß¶‰@H`“–º’naÇ8K¸ÔýƒƒE5Ó(Tá¦x¯H)ï6Ù -'…ÝjÞ-þé-¢tμ½q~_‰âhâ2JqÞß‘¹e1£ù›/±Uô.×h8]–eÚ×=κ“€åùKÈH;,¡€LAnD’ÂëD¶Êk4ó,v?¬³­y¯~k ^V4_¶=_¶3ó˜ï?²˜i‡Ñfžså]É_=˜ Z*ü ë æôÙ/ë”ç•°²‰}Ove3Õ¯>g »ûØ™Ëÿ}HÆ/’ eÜÓ½Ö ‹»^>Uúß^·Åè曆„!»Û–:Ð;-÷Þ]©àl‰V:G”Ì´ÐÏ\fµv1÷ª/GÔ°ëT‡?õÛ* á„­1}´X¨Hà‚À_¯Ö:Ãæ'§$¬ÎiÁ_^›AÛú‡¶§ú~^»ôñYá‹ì´µåøŒ_oÝéûý§À:‰¤+Œ“—c‘Ÿÿ?À Óváþ¯þõo·Yfuw­™>Ãþoý ï€Èýw¢ÿ†ÎÎû?\Ûø—7 Þc«œåöñg¥å´Rqfû9µB1j Ü@ ÃUíôao&<§‹Y]+4¯…0yê\§ëƒš©O£Ím¤;7™ÔÖy,X4”„0<]ƒÑZ…¤Ö˜²äß/±LÀ¡Ìâ§£íKŸ¹úÂäçh%ò¬rû{›†ÌIÁ‘&J±ï ½w_/ ~YªÑqy'òyõSÙÙ¢f_P;•9ÀÀ^¦ÂÖéV½]iFOPŠf·F¿ëõçZÙS!¹ý5FgÍ6]^|3–Á‚òØ:’«?ö§á„Ùï¤öWA*üGäwPuòœ¦À…žÇƒ’r˜'qi©Ñ뙯Ó/öü…äÎs_ÖÅ‹d«kˆ½“ƒíµí±+˜@µá•3ëÓ•|J3ƒß4Óä\ÒŒUsi6 p:CºÖÃORå?\ÕJ}km!ټΦ³ÉbÁ¤¤!âìŠÔ-&°Å—&ø©}ŠfgkÙvEc»Åç»_¯]RßA4E@£¶¨/ß×1‰µ‰\ʦ>Uñ¡t,gf£E ZÎÆÑTsxý-‚þ Ä%•‹Ñ‹Ö2´‰š»ÒÀK{Iè8ó 1| Z:ñ=""»²ž8U¬ZžeçíZÉ@6±ÇI!OuA C Pg]Ç0`X£Ð9r°:ƒ„sŒÿ!1z vF'í¬ç‹}ƒ¯:ÒÝÕ®=2)"{"V°få䞬,[ ×ÊQhaó±5ʲã´Ðiôæu›GÖÀ«yC‘kœ]m×Kêþâ8ò4Ù _õ`4’å‚[ØÇ…«ÖÙ×:wÔ0ÿsý ÛB÷$–Àb ûÆN(Þ}œ¯·Ìa¨ÚWËOôÂåiï(á‚ûHfðv"­ªþç ìùÂËPç°5”@¡…„¹sãª'±]l Ü@+p1-ŠÅRª…JáÞ}gDSÔš" ·š¹4@Ž‚- )Uq—#š 3÷þÅÌ\µ—"ók ³½|ÆA_`¯`lŽ%[mÿp¾|KšçÏŠÍ}LO V|J±ô#M+€r»GØ{.îsœèÈF ´íÆ/ — ¥ëê_ãÑAþUD¨ ™e%ÐîËÈú+†™VùÊ+pãû¨×-À—Ì9ç)®e-ªI¹ñÿ‡$×wBå¬[z™¹])Øðì©þg«ñ;ü$ZzÌÄMaˆW÷/JЂÀ¦­iU9Zìn'Âbë%tØæÄó} tZþ3“ÀY‡'.®ôrH7\XòËi†å¹ŽDÝ\ʪ,Ee‹êh¢›+ŠDá•BVÅÇBoÙûÍ^š°KÕ¬có „i…Òè¾>7×Ç*Ä|$Ú1Ù‘'fzÉ×øû€‰°òï/jI=‰ò¦Cý6Dš½˜¿ÜëʸƒiOÄ®b»’ °˜=ÜuWãs /`è×Ú)÷ÝÎz#¤V®eU;Qf‰<w0º°E&¤Cbí¤…d]:8„ß™ÛtQ–ˆ=?¼Wû«uØç"9äë°¼¨ééå‹áÎbÆëäu£Eð{äÌ j´«–çRÄAÃä'’sƒ‰5Z³„È™Os!£lJp¼ÒY6ž»˜0,¿×ʱˆó¹IJ/·`àÓx±3T§fÌÙ±7[Pž„•:©I;B/¤È N¿†Tͪ¯‹šØåú³¥´øåÛw •ê\ÜÍ{·7pE´ ­0Ÿ®ìu®mÑ2’yAô¦¯†$¨˜êù²½Fìœï€îÏÆ7:\ÿ·ò¿·ª›Mêý¬ @œ}" ?š|o‹ì %–_o7‚ÑDªëŽ×뛡X²äA[&ßmyMh‡“l6dqú¾-(äzøEeÝlû?Åðü}±Õ÷y/Õðîs^WÏê§ãçzŸ7éøsãy?ÚGÕ÷Ùøµ£B´sM#®:°µEÞ?²Ó¢4s¢´˜y¡ÛHÿk¤‘ºûï{+6\TleA3½Ø˜O§{šOŸq–—r –?fë'Q.L$(˜·‘{Y‡MÍŽªõëØh¤Ñ…6²µyCõlŒGún¹žB݉84ösèÖ%åi¡Ô¯­g>,ën2KËk#2«É$n9jE: s›º³n%­ôïÙÚ(™÷ÃÚ–TǸ+¼&£Ó+y®–!ÿ¥:¸Ä‘ÿʶËØˆ³Ö>©}ªÚ#Ô).¯´0êè8+$½˜¿Üë\Ìk ;§õýÙh7ßA*×~'iÑ5r<‹áNu¦¤g6Š($Â’Saƒ"ãÊK,ໄuÿT±cd‰*’!wøOœë­>z[’*jÿS··îT^nžn8·‘!Ó{'ñà·õf¢æÈ”~Q8r ¾æGZàG!s,âQ˜WU#ý‚qkÇ—ÎÂØÅʶ ÄÀkÄc‘g]tŽ‚–oy\o}÷’YÞ¸½Kêo a÷V¬aË4µïG†`9MXÄ} ¿-k‡kS 0Þ <ŽÁ…„ rsR¦Ÿqº­wŤ’ÿ×&É8j]p²!±SEÍl9Ë ÚR‹KÂÐG´¡ÈVÚ×mœóÃn>CWñFÂ|}­^²ò~q2"¨aS+³UiIшÃÃieÅŠf|F|s¦fÌP'².sð^G²õ`ÒÑÚ8õ“´k<(V ÇòJáý³ŸêÄxëçA¶èVlî`µô¬E’´Úyõ ¥)k{ZšîG!kG‘ßX?Ÿuv9s:™©äXư38˨4ý‹P"¸†U4È©I–t¨«‡ ÃÇBò‘ù.æEZÀØÔY£Ù_g'‘g(ã¯Ok%¨¤gø•¥+4ý!ÚjØöSwŽròˆ]pöZ=¿QY_ÙE¶S?Ê»'x—8Œ>]@àáñqâÔ-AdbMðA`Þ%Ü•+Å9å"*²ÛÎ8¬Õ$ZbåZ0¯ò)/W-^ù…ÝŸ1 ××w=}™l#|¹ ù±÷_?©Åk9ûF%õ2a!˜¶`¸%DÉ^‘kõ²üúO½w!âø8$Iù^Bß,@«ý¸oWÀÞÇÉ®H¤Xë릓¹ŽDÍRb75dÇ.X(ê]z,PA<[LÙ’v˜‘Îý"â]¨&|‘á‚}¡/Ó—Ûo;cŸ-¥ëqù¥&¬ Ê@W¹ f–Q޾çr4™;ž`$V°·‹ìÔ U­uìnÅ`°X¡û]Œ8l4šFòjþÅ^o2_ʯ‘µAuÇ ×ñÃE‰V4_e‹ô†é 6XÚ0ý$?TªÒiæÓ€iñ5Vj7æ’éÍ–¼07>CÝ!¢žÚÐø¡ £=basäÃîàKÑv'xm0«PÇVÓ9öl\2½=Y¤BQýA¢éLÈ?¯Ê ©¼kcu¢œg·Ô(O×ÚŽÃÓÙF‘Hóõ"ë–U[æä›àNåŒl#VÄ5#,x1v0ª½ÂêH;E¢²_‘ļɦ¬¿kæ‹Î°%Ÿa,Æ!‰¼˜®â ¯ˆäeøÈ—Y+Ë_Oƒ"-SÎÜa$l??&…¤ÝeöDP4Ù0A3¶R—„ã†%jЩ¬¿ËÊÒ¡¬ž sz‚3¹Ý,¬¿òk7´XAVöéÍÅøéŠQØ´y¬>¢UŒ8,y!‹5›pßÝjÕY—’ûׯ-ìªÏÆóúîS×ÊphSVÒŲ¹^r\.Zü]cF„0#(Ó$Š¿•§F'YAL©nØnäWn— ‰ýþ«kK÷nR¬E–YØ*ôP©¬ˆ‘ üQÐ:¼Z£_+¨¹ð6VT л©íMnAîä‹1¥q“CBT+84¢Íš`̾ÕRRQާKc|‘î­Ô]—LMÿ¿OâvëB»Ã×ir¡ÜåÒG²fH‚Ò±úAâ•ûX;5÷ˆ(”\¹õesg+ªOG31§c´ ‚Ÿ¿WNlþ×c;ª4†¥ ír-d=Ñç€è<7Æ5ÝOÿ?!ÑÉs //¬ w{¡ 8*A;:#‰-TE¡qWÏÝ{ïä[®“LÄAd¼“«§«ƒÓ…Øúp»˜ìuvuîÅjœêPƒÍ oÎe S’ ªà—À sBh›"½vfGž×Úý«k-:‡n#°ñ|¢LÅ…`Ó\‹´,ðMÜNEDZùæúù~æÄ«)EQ FnÀê>ÿÛÝyäŒ'3ªR¯2už9a.=¬'g¦sš¨m5Q¤Ã"8’?ÉVõ¯Ùóåjõù ÜÓ6õ34k<¦L=·üíõ¯ xv‘•6ÞÀJ;U§øU Øµ_¸W¢Á{z'I¢†ôzä…3¯×ÏLEžÛ A0ŸØB™Nã©õëÐï° :ûÒ9k}OŽVí„Û·76 ëgu²>þ.Ÿ²"ÛŒ:´Êa¶sûâßoôø…ç¾Ìܧ9™×µL\yš`ˆC")¹ðÏ$hº8`BV±p‹½§I؉»±öM\f\éÈÐ`erÌ–U-½û@É ÇI#¼0¯±›[ =9#¨)Ý4ñøÍ± ¶‰`ã¬['¡‹ºéó“õó†À]Õ¸J|‘3ÀšÐp‚"— ½¯>ðö$ä;?%kЮa†€›ö»úÉ`YÔû—Ä»ðfSg =€„)L†?›åš$çúY‚®7þ7!Š¥~#>È ‹#ˆ;NvœheYCy?ýÁWÐ#0sÔ¶º˜RÝV|oN¾‘%ÔÖÿ`ÍÏg…Ø«¥Ø ´()Í~¼í‚ÕeŒÕf*þG¯”KAR)¾¨mm<Þ!hëÚ÷g€^¿•ý…Ò¦ž˜Ö12ží+´™Õ—”![ðô¾¹\E® ¥,t ¦®Õö.\7ãhG¬ùaÔt«4{H—¡h팀±èÖP¿[ üUÖÎÑï‹ýhPä¨xôN®å-Eä~™Ýùö.…²Ë©:ºGÁfºòÞ+T}ßô›Í‚/ˆà›J†—Y>=q»¨úÉ«åá»Þô‡r‰™\-=†Ë7¨RAqÀ¶Wõ¤½œòU‚Qɯ ÖB¹ÙÿŸÿþ®¿›W—EUc3ÓZ8‹ŠhS ÿCÎgæƒö28‹þL¦°Ä<¢¬ Ží.Tƒ§n±ÏX¸"ádóz-mf&Õº)³1-Võ, Ú‡¸*dÐ_ìb€\Õy,†åâæ¿K¾ÇëìÝ øO‘ÖGgÙZ' Up ÀîÄXÔú„Om_Ðã)0;+cžäºˆ».ÓÄ£‡½a×½»ÙòØÖ¾Û•è6{ l•ïG¸r®fˆ…E8„/B9Uæ´¬q¸j(º% ¹àÞvwlïðw¯d‘fK®´—Eg#qncPÕ­RÄv>¸…ßaÅ,ªÊFVQ¤æÌÜ«OS¾cØÎ5™vÝqgbXo>nµžÇ1]±KŸþGò­`áM¶y Y¢¤ò¯°Ö %•‹ø··ù8[n`‡]xBÎ ~8¦X“¡¼6ÀÅË÷Ë#m–+zÙY—zÄú³·ÏjY­Ê0»3Ù¬…µÇy~ E^ÅÑÒ*M ˆÂÖ W´|¯Àâü÷–Aa$pÔLt½^Ÿ9 Ç`Xä7lˆ™›Ë–Ú sÛäÓtÝM_ûšæT˜hiòy”®]YQ¦³¶¶Z ”Ï~Ï žç&Ug¥Ð¹ÏšÑ½%-wõýž‘“y$§á+](Ð[¦ÌEUI¹Sm¾Î^=‘ëPÁëò í±à¦Dn,Ó³P27$ŽéÿL!À¢ð²-𑼬>ˆÕâ· nRñúe±c‡tTvc ¢ÑØP†ÅYêÇ¡ç:ÛIªßöúó2ZWo¯ë­{Š4Þ¨XÈ}­ÉBƒñrü¹=ý¢}(‘š¼ŽbÖ•R,‚B­s7dµÇgð¼³Ü;Û%þ‡M ù;t%wHçYÄ” &h´zÅú××âÉo0%¥±¶£Ò®êhcYfCn@,‹O&y³v¤]ËÈ‘-hF\uPe0üvcH‚BÑ%võšðk‰”í“-âü²`·‰KpùK9¡×Œ ˆ~µz?›h ‚¡-%Üj°A¿¢šDÐh6ݾ>?AR~—BíV‰5°6Ï ¼þiž‰P÷2©xãÅ…y" b®ž|¥?Áô-C†/* ƒò;~'?õü}Ö –}Á,‰1¼vØø×ÊÀ«>Áx´lD%ƒ©Àcü`Û[ m‘d:à˜Œ˜Á“53ø)X#™žjN¤x–lÅ$qÐûßÈUøæuæ~‘ŸÐA¯ÇmUV,þ¶&Æš†ÜÔo§Ôû–ˆ1Wõ0â ÂÀu/d¸Ìj\è;_2ÿL»’Sbò5è—M« æì?ª¤åÔ0ÌäªR_:4j‰ã-qiŸXÍœBºq:{:éš +¥‚¸—YÅ5ß’*†u(ËçÏ«+2ËŠT6FÅö×Öu¾“0Aì{4ûºK œÊËKx8W“ʲ@½ çåÌõw5 ¢_%ŽGÎÞèë¥=‚Ÿi›q6é[^XÉ1:’‡Ëæ”4ãùæš~¡qìM²¾9°³¬[¯QûA_ñ‡_aûß!Ø•¸ Û¥@.^ Rxq¸:—$ÜÇJy|\ða¬¤ï•_úè)¸°;Õw‹%îÓ¸íüµù{!¥±›ÖY.@°Šù, hjíPÂ+‚Q,5;djFîŽÃÔö`œ>ç®?PëåŠCãìga«ß™‡C‚m$ŠmræUÞ¼ö‚¹Áú8B¡8€ø¹¾G¨_jô‹òW@Ö5Ö»G×imíÊåe?;Ôš¶þoñ¤6+r ¯e_Õù„é]þRÇüCEÄýwSäò%ÿIÔE_hö×g×}UÝ—ÆÊá>9‹±¿ÇÞÄ«®Ï®ë~G<¦lìæ´“C¡0#™ƒZärmºŽVè­’ÓS&%-ºZpš|qf¥ÎiØq¹5D¤_›f¿‚j1å« Ñi%« ¥ršB$ê—˜±¢éDóZwŽ¿Çë4x/ˆ`Žìïbi¨Z«¡Y&%LÌÌË^½ž{ï ¡õP­Ì¸t¸SY}å-Ò+–}[E€|®¿ÒrGq‹¬! õ¤/…~6»ë'ØÞ´„d=Õ„SM|áw>‹ ìM7w©Øå–ACF*»vÊì¬[ ¶°òIs©šœÊjxh4êéùß"ê48‡ýawT ¨Æ|®D+E[‘qžSûÅ`AMP›k3ì-Ïêçæ «Í½@_‡è²ágÿYiŸ\æÕu̵§êß^áÙ–s0éãÅÌê™¶[âä1zCbÒï[DûrQíÏìÈíl«Ä·•b¯MçÒtP5×(ÈH9SHáÚ"Ö\Hør$)·ùÜeâ^÷²^ü1QVY*ê¸<³:¬»Ç°’»ØŽÅñZS1;2»ˆŠEÊî¢þ¯QÚýI·fÇ®°K3:>½<Ì[i`6}½†Û¡j…Y ÊU_-¸3ûªåÓ€¿Åz¼ÞCAÓ®Æß¬Å6TÖçÌöúÔÙ/§Þ–!vúRÚq.m¦ þ h3¦‹u• Ð=oSà†Ðf»C¼3b÷CÃÎAÑxôIs*¢n°~”C|£ÀJ›û¸ÐœåÇuŸ®áJüKÈçQ¸Ø[y®ÄƒMf³fžš×›ß)*N”'¦Sy ð½:#,¯©S˜×ùvÁ&x£ôŒ^]`be%zÍf:ª^øÃÿ™QÄRÑÒFµö*Š¥“ªö2âÞ¦Öö(FO¬»ÙäÇéTqìs÷p¨Ë-døfvÐâ&-w£šºBOSèì"Ѳ»þ«÷œß|î#kœcirg_ô©“ùË <U¸®­ò>¾ `šõäoú&‹O\˲z•⯖gUŸ#®‡¾ ËAš`yд嬬,Ó—Óô°;RZƒ ´‚+ \þwPÆÉâ÷&õŠþÁ}Ø5žv "Luá¡MX—PTÁªÁH’ºà=—g,ÚŸyàçÂG=_f)üuל^|Z£f«"דû‡“##.¥ë‡yµõWEŒYÁ’Ú}dÇã:¹1²¨Û¦MøéŸê²¯žmÎá`£)h,j¼®±Sjrkš11®Ì0È©]Û" X\Ôuçnãœ5"âlrÎ2¾4Yø¬\ÙÊÆ6˜Õm£Žu¶L2üù¬õ÷ÌGXå÷6ÛÔµôâ|Ê'iÉ]–Ò.¥oî‚”ˆv ¢Í›ʨ‚Õ5ßøc»"ÔRrF™k²fâÆŒ_B÷«Òv+—7ðGá£|³5{K UÄ M¬æZ3qlfaäq÷æ—†ëÂcNûÄtÀyöL/íñ+t²îAPÞ„ˆ‰ªÕ| œa¤Ûð²ø(å  ÔÞk VA2¤‡HSŸê„ZV^¼Ê~Ÿ×›rÚò¼8D«,û/¤ ü<ŸÜ]6×®àc¹ «ŽÜÔÄO¯Å ]†•F¬ÊH&¢G¦§0“j»šÎ®¨™Sø¦¼²Î¦Èý„eºÁj$ ÈiiJãE­­r)휵Y0×®g+F¥ë~&C´jX}¤Á}uÈÂ~?çðXa5ü±`.yÎl›«h~cKž`üòL`G^R#é%09X*iuå4^ϽE×dv˜¹M½ù!Q6ñŒ_žXµf}Ž˜Žkr¸’|tŽNf¾Çµû,X‘¾µWht7ëvYǧŸ?Ž»e^sD¾5þ³£¸Þ*°(-®P!ô8ö†Åh‡F@ûêÀ$U“ AûC5®ˆãeÑmú¹ýî(›Ü¨¯O¦]ŸÑ0ÉRÊÈ>¦ÊÂäE³+ú5öDê àXª‘¨‡˜Ïbsù‘zátX»i­ÉT Mœr*á×5å…T»_•$¯?1¦à—¸ ¡03üVp.^Dœ8ÖÝb¨Ø„«®&ë8¶}«`‘§¢JÅ”’­Û"²’H«³ò`¡<ím¿a…§Õfñ½Žç®£]ü¨p½€p©Û6 KKW‘uFP7ØaiSSdH§ˆžÑ²`†Åཉð¤ôëKZo5’h"n|j-šà‘صBW¹Gsb†°V4g7cŽ:•‡Sz^ÏÎd–œ)sÆ>Vïl ïƒ@¡|>,ù„D‹^hé‡×>eñÒ­‹L^#_‘ÏY‘bºf1„¼·? Y`ôè­=mtä3 ñ±Xõbgö"ì˲Ñ0ê²ò ã^9@ ÓÒ™'–eCÙZÖ°¬B¼¡+Š&—Œ¬%AWZë•ÄJ$'ÖÆáóÝ@»Yx®O˜ÃÓ²`+õŠ”ÐziÁÌÒHÁ .h¤N%`G2/Ȭÿ,è^Abեƶƫ"êþÒ=®žµ¨z¾Ò-ª3àZXþòé\T¶Æê6ðÜ8é„9;ôp¥båì5Ù›¶œè–D¨cUD0«OI W •ÊCGHå-n“‰Qø×^ÌæŽÓ@ókrÁD‰Î]ø•ÑýT8 íñçØJšW493‹¿a¬‰d«­í.ÂÑvνs ^»ö3ºÍKCŸC)¨þõ\ú·£º_ähTpóTm:F?{&") _±‹Ñö¸åð£NÉjN)=zÑ\Ï:J(óè•s*¯ß¼k”¶\]û^/ó ·Ãè—Ø‘_wö#òê¦Ó«Ñ•³Ôê1 ,à,°_%‡zÖ~,¬¥Ò» X]vW1ûñ=üèÞhO{ž­XDLEÎ ˆg™ºHöŸH'M°%6¥ŸØH5ζ¬eëF†•Û:Ô?_âóî8T;F|®sž¢¶õ"nHù×Ö­F¨€Q´F;s¬b¯l_ЬbØÈió}©¥_¤ëæ™NÜ2ÒQ@ùf™dô ³’Ó¯QIŸ`5§bšî(]%Ä05Ÿ´•¨[“Øìðu Ó{Ÿ¯Áˆ¥Ä‚ ®´;¤J3«Iómb»’9\ÇZ׌QM*²R¾óy”ü{©ÐLŠ“/ì~Ã¤ëÆ£’l¶¤hÔ@¹Q~ÛGÓë$¸Šñj»Å¢~¡­ümÇeô¬6ë2?²©áÝnRéeÇøƒÇ9¤ ld¼ÇãÑ‘Bðüa½fsÕÄ*ÍŸõGó¶Ôó±×çÒ`ÄX`Ûœ>¼ðt|Vý“áz ìkþÈœ¹\ºý`V¤skþ¥ü'#«ÞBhæ.ìÝ&Ä¿°&w á”ƒqa>ÊÓÅÅ­|Žn`{#B¡2zU„¥ŸÙƒîŸÖȇŽÐnÌõàù€ØÓÄ­Š{¬£3 ?Û=°âC†ä§Ï9B.¾PÛõ?Yk˜Ì~ ËáñzîK\5,uüµ_w4…7_Ü>ˆO¹’4¼`+tŽPZPÖïÚöªþ¬È› (¿aÜh±¸iX”ýÆâ ÊÆd´"²$DîJpÒ‡.—Ç´ŒoÚ¹SÝ®a–%FS¯44èÛcP/¬W-©þ„·ÈÛIâ&Þ8¨YËh%£'⮫[ªAâbdÂ1Ï·öCåÕüÙRë•Ín€‚¼± ºøT”ï“J³­˜æ;ßóÇä ŒA¦šGNˆbSaQRéa‡¦3¶ò/¶pªšj„¬¶ÉF2çŽ?pë´žonªè8ä×\ÝE6hÂỆ:†0ölû ž²ØÒ’U‚´ŸÌ) {¯É_ðòžÇóB‚4Í.VRZ‰‰ük\6†wì_Lc@êH5W™Ï ãªÄóÙ ÷ÎÃp¢ø(Æ9¥îc?^}¸Úw6BUHR55iŒS"=RðÖÜ#›:ÙæáŽŸ-¿é´ô€¶yeЦ½šõüΥȦt(lQCØ©}A1³ ÂÉ•¤wíˆ1‰Ô$“v¾›ÝeL¡,ªÎÙì«È1iH^u\º§ÔñYx¼Š~’•ìäjÂ×>¼sÜϦd©= Ÿ4È/뮆š%†‚‡s¶ò+vÑšÒ­â’_\ôC¹£'…Í šL÷¯4×Û;G»RÙ¢ÕŧdH ϰB¯1™öÎD2bOÀuÕ‡>Yb½q—ìOÖ+Jï*¯®5:þ)u‡2¾ÄÂ$ûí€ð¶öæÂ^ѵ“M 9*¥¥†Â6ßÙ5þ9íí5(ì­`¿6 ‹êêÙª¬“ƒƒ°%Â"à†¹­­Ò¾#9hC”º x…ó^¬¿zƒ>²,%Z½IY>úàN å–YV‚¶‰ˆwàY‚=¿2¶ë¿ä]T•Ó2èÊu´úöº6>/ u””¾ŒkUЉqb=zS‘ô0©µw …vdÖß69†*á=x郾¸ ,»ƒ¹æ"ËNY‘f¡¨ódyËô1ö.IŠŠ–V¦›L_S¾JÑÆÃͼÝå¯õådA~¸û­v@Fc š4>4†¾y•¼ebº4A‘–NRRö¶53¤r=´~ ƹ>׉êyDÓ˜3[šzÀ´¹¼Ò2pwþnʦºRX½*êÊ©‰BØ=Ý¡¢üEX·ó†{–Ÿ^F¥ëê …WÄT“Ò— sCP­©Å*Ã)REÌÍg`Éϖߺ»sE˜CŸ¡=‘xÍ_ÔRÍF Ò¦tÁÊñÒ z!iBÅûf ÀVoùpiÿÌæk¨›¯ †ÿLCK©}.W¡Õ=»&yÌm“!èso¶Ø{ÜÓkˆPk'È©\Gf/ÀhsŽâËuF/[sE^»^ï[~ÓÁþøC‘)šë®ÛóK5£W¢œ`ôR˜‚ºë!¸Ê+a'øLóóhÏì©2óè(=SX*9%+é°ç,WÓ•Ïn7±Œ•É8§~DUÙ8¡ï!ô{(;¸;“Ùœì,öle€çDÙD¯!B¤áB_\ø=x£ªæ‘ÔB3QÒÆfÈ«þ5ëÄ¡ÜaT×zf¨ƒxѰ‡r4Z˜=¢å‡ÆÊ<7»š TKXÔš$÷Oòk—¸ÛÙýwa+ì,â´ú,³ }u ‹®;ÎÓ\Å}U$÷1¤†œÒЂSо}÷™ÄÜBõÆeàˆdû™ F¹Ñ:šµWÓò¬)D‚ã/ä%™ë™ÖÐI07= “&W^ÙZ–ˆ²?jéÇô V)Üx¤ËŸ/r"‘ç_=çΞ7ì°INC]Yz1Ñö¸ZÍ)ç´­Ñç,¿‚î0¶p¥`K“Ó*Œiºñ,1¸â"†_KapÁ:Å9ó!ºÒë™Pm-Uܦ»×Ž&Œ›XŽÇ×¹QÇš(Ž˜ö€Èñ':–‚l/N¯Ð!î}ûì]®·ç†™PNÛ=S‘¤ZKåჰ†s’¸¸¼ñënòUa®m:Ð ã¹ÏW_½aÖò^áqƒÈÊš1ý‘Œà(ðs&úeå×ׂãÌ!øL¬¨föõV]ÀùG÷:Г::¾*⬋ðtFþÐÊ¢O¦>=FµpEºÅT’˜@Їú[ëfVú,ðø¦)téDHEÚ6ŽlÛ,88,afêè¬"ƒX³ºTøå°ä\y%Æ5®c+‡ñ©Î8JÕ:¼úÞn©·{5@ÅÌĺŸ7~‚~’GWòf>¢¢uêi,BG«Ê_õ³kÙû¦ôŸ]3óÎê½ÌU¬¿Ó²­¨âùD*ÌõŒMtÑè|R+aŒ,³kÛˆ:ÛÏíuZéα¸ëŽVïG-r‡”ð-þ5’`­&}xd¼%ÚR¤´ëøççy˜ö_uÃŒÇ]‘ërÛÈÑq’Ybù Â…?RÑÈp%Í ®8ÎXÁ…)£ÅéВžÖÿÝ úþGøiúÿ±ÿ¥?®Ùàz¿ýÛþvø}~Oûý1ö¿ðO‰üÉϨiê‚?£ˆc'êI4%—‹Ã ¹wK#9ò„"Õ^|,%˜&×CuöîÄ!ŒUS4t~/a޾Sëm0 Iz&Y mù¸ÏgC¥xš:*™SvÁ« ~0žà‹Ê »ý|5Ž2صOTM*ÃÑÒƒAX#’êW¥ €àf"Ò’LGÚºkdoJ=½IÕ94‹IH­Ÿyv7±Gš\GJÏ uN‡¯…ÌD˜f âËú:žF²\J95ù¤ý4¢Ø¿8§.»ëµyLÈâ«x½ §*d=eoÖë6ÕÊ´ó8Ñ1 ƒLæ€×h½ç®]ʶ~yæ¸Í0‚h-WöYöGе¿Ò=>¿"Ëù_C rÍ\cØõ"~mÒc­"¸çŸ > Ez)G™‘¨«((l)ë=(+ŒXꕸþëÜmùs¸ñxÉdµo8Y@×ͤÓÈP­­JÊ,‹\ZPjÂ7‚Ñ—º5ÿ ûUýÿŽzˆìµ&ý™N§þÑòâæ¦Qÿè‚÷ßËvàõwkí‚~8 Ãèú̶c")ä !÷UH+ê°rªm€*¢÷œBÑiƒZâw ŽRû8ƒµú”Òv¯³¯7½†ˆ¶…É“f¤àC6ÒÇ.Óh ’v w„·›yÌ#`\¶3ë>Øì} ½P8M¦“tÀëó& ·ÕÊóN²Kˆ¤*­Wd…5¬µÖ€*¦€»þfG'±ÜTklÃíæCªîãS[Zûkñ.„ôõçÕßB‹¤EáŠP|é âú,Í9ŽÿpßGhè¸H¹^ K7‹\Ð-ö‰]Ìøç:EæÜ;³&Êþô×W_Sþ‚9âÃ9 ö·¬¿;¾[ÄLÈÚì{+ó™Ë§O@—Vk'pó+•„Í—˜qQâÔëØ¢ZÈÉq׬ô=ÙïuÝwŸ,¿s›Ï=ç8Á[ øŠÃ6â¹¾0‡¸YH¢šG«Ð\aË•&p°^èc°‘ ;Noa®×_ ÂÕèÒM’˜§å"’9-TШI[ÁJl~]79˜S´!v1ÁÉ’fJKÚÜul3Ð ¨O´‡:;‚­Ëu\ÒhmL!³b†[̉òu*ù³µ\õ>É·=¾W0 óëä]c¹$Ü÷šä6öާԌ̟ Z å^ª ùJTy Ú@þ8íÍîSs†ˆL{’1eòEq¤wCI*ñïU8YI5.“›UJ9Xi9SÏ ?ów¦ý‹2ûï#GpFe¢ö„Ž8…pÄ0È^=tÎñ `Vjë«/Ïb„;ß­õŽ[0ØevÝŸÚÈZk1ýˆ4ÞÅ#òÅŒ/,z’.¯ëz¡«ö =\uÞÿµôzÄ)øÑ„ÇW¦Ñ³wX¤@®µÓèªfE,U䘓4PL"±¸Ópm&_V\xD;·{Þù÷¡ÛB6Y—å™p%Ú Á¬Žp`Y;Ãy^嘺C¬…JØ@žÒhf€“eÓë{ ý”†Wž™èkœ¤±„&ën5ºaØF\Rw&•žÚWPMôøžñÜ¡ëŒîA ¡šq:ë×.årçp”mj ‚™'P]ü• ¢R‹…kÀ±[G<éñY®ÛÓµÔu:zvqȯ1âÅU홟ŸEk¨©•¦P&½¬VÑ4ÞëÙÕÔ™ÑÉp}¸‚:—*s7—VS¥Tö‡Pcy°—Èâ Ør8»¨Ë™ðo<Å_U¶áŽ€ÄH!ûòB 6r-ÙçÜ×Ä~ªˆ. ´jg>,¾°‹Q”G»˜Øp €û8tuØ]fn„à 1»Ã_ù §aå8KÓ¤çŠB.õÐú3Aä!q-:ƒ´rÝJl®œ“Qhó9Wì,Bæ‹yå®\ÊæÛZ3­lЋ ì|r+£)»Ô’¹®wœ{Ñ›ü˜õ/úÅc7îjÙq‰m6“zó…‹þ¸ia^S'‘ €¶åvŽu´¢Âäp|C)§óóé3zòʬŠfuޓɻ5J‡¨©Ö-\q·Û­²¥)¦ÜËv]Ë·Àè;|ƒTãÕäbØmráÙÚ8{rÈ—#ÄÓ×_Ee˜àjÌ6ˆ.-´Áwh¶ „Ûn¶lM'­—6^ˉkRÃH²»[c"I>Y,¼áêXÁ^N—_‚†kA_É]tjï§D:™^PŽU³§/’yçX5—ËU­(môÖ‘32ésH •©`¥bLø¹uÑlÚç-k¤ˆÉ‘d}„pÀ¡ØWÁ•^{{¸"»,±¹ó·›¹×ìêÿ‹‹_§J_æÿpí¡WX‡CçñL–OÓÂåù¬Œ¸_®ÿKÅ»‘ð_s/ÉÜ8ú€œ ×Sõ `ìËÁðVHX¹ò×UÀüT»UuÙkoµ|]+áGèÆ'ùøÊ›¹îNKÅÙƒ%¾%¨Äs\¸¸¨ÇÓ¤oå´¡ÀãjaSBHlJb áÆB.FæÚ9Ýh»/e×Þ¿¯N–œ0ñÇì9bY Ë 5.9åÄ ¬3J‰vPîS5j¤d¨Šq×:Ínq¬[Dã4X{Qé`·ùv¨U)dÛ@1rÚÓCp B«t¨5ºÒe(¥°ïv$+z€‹F‚´v <Œ>«MT%¶«W3kš×p%èC1ý4ò n­àfm1ùŒ-[ÁrÓ+p3~UЬ«Ö±¸mSâ¤9Š“Ö1wýÙzõƒ¨¼ß[e‹ÊÎõN¿¼3ùí6×?j¼öhìánäiº'Š- ö 5(¾†y†–Ç$¬©:é]ýÙÉÛäýE›\Dic§%ÂæI×.®Z\QEJÊ.ªÄŽÃÒ”.)$¦Ò©‹X޳ýž;äÌÇ‘ëuô¾œL×Ú #®°¼d-wzê…&<'ÎÙ€k”³,+£wë…¯Ñ.?‘þÎ`'–¼±Nà{~¨ùÀ®°ñ.ðøùÒz[SøŸ¼`3½ŠÀ/`eÿ[ÑhÏOg‘ òõ¯¢«ãMo¯ù” ¼³!wv´k”J«-Øù^ÔS™3‹Ø¯¶÷¹Ô'¬’E(a“Ô™{^ ,d£×[iaMžETv'\8±31žÛgôÂ1ö"çquSZb¯k9àV#±kà iH¾dªw^‚3cu!0qx¼ñ”ü£ë„’Rã•Æ,fõh·Ü fy Æ{vƒG v=œ˜8ôøO"ʺ¢`¤HÕüÊÿmŽí<bºøâ¯Â›âÝÀþMœÞ[Lºu‘úa1¸´x3¸óE²"HyYuzµOHÛ­WÂÝzŒ`FªÙp¬å·¢?@S X¼¥k–û: uPyÌÀzºTÆþ‹Æv••vþs°ˆD%UÙLhä±¹dZ²¢&ËÆfadrW Â&°ÏfIaM+„®ñi·oJêYÝ!˃'[…ÖÐ#Ì];½=…Ûd™Á™*ù&ð‡xf\ñÚ^7…r¿Šýµiâ–HøPÖõ‰»œ^ƒ°v ð5[™ÐS"` D^"¹„h«°U‡…jäG&u—žÕž|Ñ…7ø,w]v¾Q6Çn;cŠì¼×+×…_0ø'ϳÜÛ"+·4¯)iÃ2¬Y[{2â~«êé-×é„Y´IÑ‘+%©Klkf8¬®w1(ÜW.}í#’„,n¡tÔ“eÌ+^¸Ènú÷Q×»{²otôÝAÙÙå?¡ÊbÀƒá/†åú˜øâžR $2‚x¬ÚôLLŠƒÛõÍ=C¯ë ³ë%Øšì÷´ÇΔ#TŠ:É}Æ@‘… FÍ}¸+´0‹ û…v@n¬e©ë¿j9ì‘ýµåæ=ÔlOY9¸¿¡8K8¢Èª¯ÑI6ùGŠ&÷˜8ËGülÃ)øó§Ýè^þ’VƇU¹ú,å¿áÎV"O(l°´Ö(õ DV¨g¾ËØE·ø±¼AX†U•ÈÖ¿I–ÒWØ[…Ž;~ÇcäF¢{m€ue äjþ+SeÕD¢(6§ (Èò‘Liuî©]L†“Mx Ùíýzû[c¤Á0ÎDå´ÐUÐÀíÜé™yw(¸Ž`r±Â²Öˆü´µþ@eµÙUù~ªÉ`ɱÿ®N¯([ÓrmÖmC)c $—g }+³\+-¦’ôv1J¿­f™|{³«ëÈc£)H²°hZô‘g¯I`ÖÍ’®eêëÍb潕uö–ÌôŒf× :ÅYâ/§»°t;õÐx³¢‘ËaŸ ès UIÐñM{A¡ÿ"A;°væ„h÷`eêß)b‘\© bG¸ùÕx÷Õ9Õu6ÂUÛ\¥ ǘóÏÎÛýÑ—°ÈÜÀ|î!&|eÍu¸ù…, r_f¡ÐܸSʇҟHt”K‹á§ó­”åõkêa‡×Ü“O™6㨧ƒ»oë3 J…Ýòð}´9¯šl††°Ž‹¦«/S†ëÎÿÓèû¯“v…,FSSµ¦¦¾Xˆ•¢,íɸ™”T=²M¤*¦vW˜Ô“帰Ø~;êuFŽõï;}zÐ\ÞsBj0ݘºaÊwßk µ„štb,8o² Ö@ÚØÞÀÛv…™üÐæjö‡­¸¹4¦ü8gaQBÒ‚z¤½‹¾…äYýWBåË9äß)~±T÷’{1yò9ÓA#kÃmì3w x!ò¾Ú„bhæ±ò쮼ÀLî¨  ì>%Öúv¦ {¼‹,5…*n¶žÁì‚ØãZébÕµ~­¶•5ÂÙÄ')ГM ˜#HD4Ý*Çò#@»\¯ –³JÙÇ&‡,âëÇÛ•÷Œøº;=€|‰&uó¨ft×<âD_­ä= èü.³}þ%O/¯ ^Ù®xŠœ¤Ë½CåèAŠË©8µù÷Ç.0P-›&–(To7- aüÅŸ“â„}>l·g0ªJ| \ýÖUkpD~º¤:*æMªÑ ¼ÞlÌ=ÖAhÍ-*úwMƒìÑøE²‰8#Ww×’¯8º’¶’ß¯Š˜Æ®,òÄgã”À©]ÒRÕ5Oø¯õnîÿÉëÑft ³Zdœ½Ô²Y—òѳYð§%ñfm¾¼Â¿eå·ô/í Çq¹É ï=–}o ÎÇHõÑý¨6¥¥½U‹¥n(öi×5ºê.s¬¹¯ßRJ!yå”A´÷~«zøéCçB ×~Ç`‹›XéªA–!dõó‰yÔ|SÊE˜óy®ìŽÑq𠮇MÆ«r¥«S Ñzµm•"£ÕwTèpêô|5LÅk[ ³”ˆ†Fd[PÀöh–äŸ {̘F”á…[r?9(9:¢œ+‡ÐÉ^78jë:à‘óvoaÉÓ3øµÒ/ʬý¸á´ÁÆ{k›ÆæÞÞ¬@ë)€ôbœÉfû2þ j4TêÇ3J¶“Íd–BŸÛLŠ)ÂŽ»ìŒÆ§1íÇ »Š¨­ U^å×dY±vìBnRÎ=qV cÐ):ñ M~6æ„Úþ泿Jm…m’ž¶¯ÝÆç>,:¶Óbô$Q+o›ùô>Â’N¾¾ùkdÇS·£«ÖÊùV`T ;%âÎæ&¾·ËêÔmô@€¸RØP¾K«*òwkæºàÔÑ® \çk@Z_KzC­g>,Æ×ë[|â´¼Õ ŸnõÆ¥Éi.ÐÓéöK4þÒž…c¾D ¬ëo‚긊—F‚<›BN°–i¾äæÜOW/¾û=¿¯_X,¶ ³x&Èœ¶›Å¿û$ìC3/.à£1ÏE$Å€—Ý¡aýš}oVãÿ,ØjŸ4ûx³&ômf%[šYyW4U×µ¶¯©eLm¹r<áàˆ=uHëÁ"»`WëZ]wÎú|ßD功3Æû|o+À #Çò/ú~ß—Õ÷[ðøý“þÚít[0Ëäk5M¬´‡'>D—…a¡¥…ðÀ‚—ð=‚ßd|SÌ…*¨©DBgÌ—ö@:ešyçô½¯Ghfäˆ%RsQTjÑð#ÎX:¬(Ìgªæ€!}ŸÕŽaì8æa_Oå›A-^¸·+ñzUkŸˆe¹n½0Ò,¶bW{;& . ùe«¢õõóxBG0Áà5 EUw»£Ü ÂùB& ®ô#\Â1äƒM!§œoò‡ÆÎh,Q)ŸÊ۳ξÑ%Ÿëæ™ÑÝßp×[œë»Œg ½Réù޼‚Ç(±kñ†ŒNÐ&õ«-•ÿçpu“Ä+دYÔöºVvJè¯FbåÕJ¿?ÿeÑ`²0h¼è³^âÁÆËô zLwª˜'‚³µ¬ŒV¹‘O*û¡¤^ÚÔmÉÕGÙû÷Šn­„ÒV¤\…A4sìðí± BéÄî+ìUO¬– à!’èÛZލ"Ô£Q ÷…,¬Ë.©ÜYU^÷5Ж/Ú¾ïvÙàJ[+Ù+¯HYùfY2<É¥}"’µA‚_ïÔ›Ám„YÁ¥¸ö·u…ò¿2Åê†Ø>àêdOö/ d1Êóh´ƒÊ!I+A(´G »Ä…«Ê$¯eÓ£oëëÍcƒ.sJ~ aU –ÒÔ¢Á]ÊöìB1º¨‘*¼È~Cǽ‚uÇ'¡°Ç19*¾HÛ-Bº 9Y í„Ì{ä»'Ùuƒ'+GH8 X£¨,Ž/ ÑÈĹÈ[a}‚Ѳ¶æ Dš_±¥aÌ)úWËzìQLÎcK*犠!²„‡<šl>1‡ËØâöF²RØýÊ÷¬9ç™Ï<á‹Ähš†ABÓ+.ºß›3VPÙçP‰€µi»´Î¹ÍôôÆ3³-Åù Z˜·;6wºdƶtÒ¸¢\ˆyWóżû7”çÚê/ øÿCÓ½ps,óˆK-®bÕ®_’8 ²ê++ýwnňé”yI&Pš§7jÑ9zˆ’Äüœ ³3cÖ›õ;vp18”Чx³<¾ƒKoÙg>}j¦¸ú+U›ySZ‰mÿ;#SÖiS¸ízIdì²Þ ~·#%«J¨…)çY4ŽM‹R@](‡KÓWóöûòƒŸ)K-@õF¬Þ€=Mö 3rh¼WÍðó†;` «H²Ò/(¥‘\²°Í ˜p¸)|苯ÕzW®0’ z‰9Ž FW‡6V¯› „i[ KŠ›‘õH±‡I™. ¾µ´ÄÛªŸx{ Ãú~ß{M—‘öü<_ÙoSç|~™ýÞ‘ãuy?W‘GØBÇuóHÏ>z…ÚøžsõÆ|.0žp,X¤tÂvTþžg#3—•ÀæÊlñ}oŸíÂÛöû<¼ƒ*5lHˆ}k•èAW.u`žÑ%I‡XMÜÚc&šÄÌË!О=Û¥mÖ˜ kBúíP¢×«ÙI#º¥@&·*½`¿Ü+pÑV5%E0B.,œA꺻ôù"žv¾‡_PNÚ ´ ]Ôz4p›X1â%ð"Žg>A±ÊOäV¤Í}=Ú÷gv|d’ê FisAÛÂc¸i¡+¨ ȨRëúË*gc. ¶†:šWw7Ãùùä%G‚A[ Å‚“YíÏW _M¤S`Ó#„ÏãYª”~:w8lq;{üIæ‡Ðiëä¤\q0ÅÒÔÁÕqPà3o‘ùê>ë( *½¹ëŠ8;a/l*Б언 lÔÔ{LÙÀø"-ª«¬©$ñ)ÏW‹¶tÈŒÝ-)Ü:m/àŠ’þ?h,5‚à†¿Ö¢:2|¹UÐ4#”Â,¶•ÀW ÿr”GâD2eÜj3X®ÿ¿ö^aª +°ºÝKâd`2— (Iö}~îðWÙi™Dh2ØÍ‰ô¿t¯»Õ;%xU·©sÄúJn:Šx®vrëhÕ«³þŠø©x÷Ù )˜! ÌU…gÝPYj{½àõ}Ÿb¶–cê¯6W¾Ä¬“³Ó9ÄŠüf#ÿwU_}£óm_ÏøQÙø …¿ñ+‡a«'Ç_ökÎôÚ…ÞÇÍ´OÖëúG [½Ü<ßæØ_ýÏ}žà¾¿÷0ÊØ2Ù!ó`¶å¶#Ìgëׯö~eeüô_|"·ŸHg³ðê-£^Öî|Ì3ñMŽ×õ㘦“1¸gYí[çx«D:ʯTÁ§+éWÏô íI†–µt?TC»p%§'g¼†ò².³P­1ö±[mͧ)‰=Áneé!ißÙã²á½´U§.­™µa¥ÌöÒóõUí½o€Ñ—Œz6ÔxLš2a/’Ûý³jÿäóì°n^`³Ø9ë'ûòHêÖÕª]F“Ná[ÕQ1ý€JµÚ&PÇX3³ÕÝTÄwÈâ³VÅÑ]•cTï{Ÿ#¶—––ç#î •UÁ¨«ìj±Š÷°Ð#dPÙ•øÅ™ÁœG$H«Âê~¿­˜±n¿¸Ç.Ï‘ý‰ÙË«˜üyä’ÿNѧ>%fNŸõŸÕü“1Ƕ¾3΋یk®¸Èag¹WÍÅk˜H5ðªÑ”Ï'%Þ;uÎÆ’D7Ȫ·Q"¶HgÆn¢â15q˜ëÖ“ä!\ÁVÓNÏÕäåÕdá1¢uæ5¥›’¸þ->r«òvAÑ7Øê4Ú%tÔPu±L“ ŸÎ´ »Œ±p¶Ž½®aûX×XsyY1¤ vHåI>O¶®Óè6š”ô”stMi±u’Q€Aºúá`–=Výÿט ¢ùA#%ž]Yõ)1Ö¦ª;_T廊“¡âð{3§+5üØo«;IPHjbG52M²+–e·ÁÍ©†L ©–¹s§Ð9"êuÕmk°_*v7wí6Cl*ºD\¢ºŠb|-‰ÜF’”oðÝÍÚøÌ½#‚¨ºqZûX a%Iè‹ÛåÕŸZEœ¤h‹:]‹S?ØZ֋çøÇu×]ÍØý…ƒÂä¤ÚöÎm®‚¹¶‚bÂ~×ÑDÑè4ìÅ/«îÿÿhwJéÇÿü•±_S´¿þ¸x4Sÿâ,ò¿ cŽ=½!‰W]Ÿ]ÖüŽxZ•]+²|yLØ7ÙÌx¦Ÿ·î"ʇ…–ò ÔûCû} ,ÞhÚ~*ôÿáÖæ3xTè®ÄUûP™¶àK ¸øœÚÚ²–U,ƒþ­zÁ³½vA¿ ð¶ ýj¸¬ió~U"EyÂ)fèФË÷G®5mö\G›–$gp"ሴ’†Css°!Êÿ“©­¸sÔ0ÝXº¡LÑG aY})˜ˆ+žAλñá“[ä¶ üxÐik4£¸‰¶“'Šö¬ÂbEÒ¿æ]ÕœEœÍÕ(•]Дä{+¦1Î[$µ=Køñ©Ï' ,ª0²Ægj`ªè*):âÄÕX-D1ªcS?ãÒSþXu£´amüZ÷p¤¿•1 «°T¬R=Y™û`G2¹Z¢ ?å  !%úÑôÿ81ÿû üÿ­@óƒÿ°ßÊÃ;ò«¦(ª²"Lf—°WfŠæÈWm\Fó™•FÚ?Æéó!-"bÎÎ*ºtÊÚ(zLg]wöCa¶Ï¯äâæ—&2oÁ>7|…QN„ìÍ?M'T5Ms*ƹKzˆÙÚRJ$ÙÜØN2,çùlsqìÂ,hÑ‘É3'ž–uË_/§ÈÚ5 2{ cÝu@¹Íh|=Þ‡ÉRþtR‰b(ÐA¤-ðâ~¾¨J/gáÚ+#.0oi Øé'/éç[2f­y9Û4¶cF¦K—§¢t±²F¯79l]dꤓ^¢2°¡Óµˆê#Gëó9f³±È)TK•cÒ÷D-j¦´ ý6ÂÕõ,ªÂCEtÖM\[O<õ»T¦Ž«®ñYpª\—6bþ¶ü`-'Û‰CãŠÅýI.%Ÿ6× Á“ƒX@K¬²‰%ï ^CR;.ßI¡ÊÜßÚuÊç¼_¢Û²-u!Ù<¥Œ4715Ä®–Ä ƒÖã¾T mvHø|:,ÀMyt@Š @·0|M¸)þ°Ðó¹ÇµJìvz6w."°•12$­PJT` p>õ®¼Šžà7D”$WñÂiÃLe±[míBZŠåÈ€+¬ôƬ&ŸJ)%^Baûí¾C…÷{ÏÍæ6"˜>p Wy¢–=Äxúb9Ξª~tG¥Ö„[×Õ÷xÿˆ½…iíjpý”¶Ì£]„3+-Ç*2{KH$×¹ƒ+H•œê^Rʇ(ÈWüGC×ëÜöœÕo,Öæ‰×g†ž(Aæ›-Ÿ­ÊyOÖ¦Ñ`ÎesnTÍXhš?+ø:ž{ #™ÓM,ϧéÌÁ¾èEuñ½öu.üÏZÂ?üÆ·àwÅq¯î[lÁ´ê ‡\3ëƒÑõIvhlÖ`*ÔYw0\ÍQÅiõ]¥8r•)³9xSbK’±mzÃWŽ‚:¹ÝV¸´íw ¯½™Z ƒÓéV9^<,LݹWkxíK •ÊfËŽq®¡8݉£êŽÃ]žxÁmÊ, ¬Ê—fÀºÎ™÷‘~>n°ûž+²Û¿+-Å¡ÿ;îö!*[6ñJžìøš‹#§Y«clÔ:<Õ·P,¤¾DÌtÂç¬fº¬îi-VÑfµ; ™qYÞÂA£µ*dÈ/©«xáÜKÕã”¶ØÿU$­øWòêW–õ¥7eÍ,wd¯ïéú’ÞËöA¦ÑuÕùGXÞÓ@Ñg¯Õ ò|âž#ý†ØŸ-±íþ¸ÌéxYÙ'…Z« äÏõ&˜ª*öƒ\r¹-¥rÇÇ4ˆÎÛ&³ËQÃ5@þH‚¬šó,¿Ç“5·¬´Ë­$w6I ¯ ËrEÚ¡ÉB_\™pyÑñùõ3i4Á1°ÚÙ?pU¤œäï¨5AZGÊâ'Dù[ɵ”ÍáWG-g]=i¹Ú>Ï‹®éƒ®ËðA2ëã`ØØFŠÚ ý‚ÕŠ.h¸ÙâëŽlGÏ> ½‡î]ùÀžíÁÛ (Do”¬¦Ïo¯;ñ©ÝH‡•UÚ"ë%,Í3’‰÷q ±eûzµ_.ºWÿW¥Z6Ùì~åöV·(Å `ç:ÑôYÃ0tdi‡ò.\y'º¤xœ]”«»êqÿêëÿk›ýKùÿW_û\Øê_ÏúºÿÚæÃÿRþÕ×þ×6ú—óþ®¿ö¹°ÿÔ¿µ½eƒ×ËbBø‰™]%÷ç3—Nž0.­ó'pó+•„Í—˜qQâÔëØ¢ZÈÉq½ÖÑ>QÒw¬k¹Œ¼â´˜ý°a X±YUÄ=¨«T¶Q¡x®Å#’ô^ìZ¥Ú–"ëß/ì±ñ=UÆüNbþ Æ>´Êk‡>*Åä¶ñp7xžÀ‹áLú]¿–´ÔëÜn]gÃp ÑͤcŸÐåí •~7Çö. #j‡0u¼PþšgYÇ þÈ¿^^¬©g]„qí|k;WÕ:¾«xÔ®¢•jü¥iŸ^w%ì¦T‘44ö’㨀Ïzf8®+£\Ä[F~cÏŠ-ã‘<¥ª_ób’ßR¢\hÁkõï:[õ²aä+'¬ýx>`64òì\âšïÌÂÏöÁRAså…Äy.MÆP‹¨Œ;_®Ä|uZFe?Y…ö¸~ë†n* y‘¬‹ÍoI„)@°ªÁË‚ÌaîæÕqhoã®KK¯O{—ºvtJ#ÅbòŸ1§Àm(X ÄÊrAè4@kúˆ=ËRÒ%öC%ûÿº>ÞáÄkµÓã³™ðÄþ•y–þò¶£-–ʑڅfá¨(ZÓÇ‚!å1Htó nù:czH£Öy–5–!LÊtð×(­XO” ¬ˆWj Zø†ÐXm’Q‚Õ"ãA——ìÜ{ò›½{½ò˳Ö^3£qt#þ”–7-~‘¯Åc\—ʳB`µ¢·dÁÆÏw:{@é(å×f­)ÝŸXðòÙÁ»Æ¡TGÊ›.ø¦ @¿adqã}Q¡³ØÚú˜{pv')N‹_¨P¬ål³áZ©l‡<‘q·-vóÚ–ÕèX½d ’£Cã0»ØIѯREYscþ¨á®7).”Nw\8+Ò)¥»b9WÅó›> Ÿ+œÞ;2iYE~^‰k™Yç» ëÚÚˆ&¶ôöWNËhܨ±÷fTžÊÃMaiÓúÓ-˜ó¶ˆÏ¢ ¹$«ë9‹#+NµoñîÆ&=Ýžðr¾áž@7ØŸayULo¬ƒ(ªdNª*dqå3<éšÙÕìLsoÿÒf®Õá^}À 4šáJÒ\ g›{7¾JÀÙ§¬å".¹¥kþ9¤J=9—JË?¡wŽÀ§C¢Í¹²²¾‘Ö® mMų˿À-Sƒ ÃâŽæ‚j¯‹• Ö2ŠÖ׫^Pô'/Jv–˜Á»̘q£‰ây~Xp%4}"‚©p#sZðÁ OþõÿÄ$ !1AQ0aq¡Áð@ÿÚ?!¯íùM³!”Ýñ¾èrG4¹ô\)\¾nÙÙžx2"V x¤Û†!Åqm´ëlvÁ,%®”ÀŒ ¤fÒ6l _Šÿä¿ôvP§ž ˆ¾E&%“EþÆ+#?q] îˆA•p9×M2ㆩ½"@ëp+žËé<»–! pá@l-¥èËtÜûѤ™Z5Ưg©¥ †%íèU‘$ƒÔH$ ë˜U„Éüä32c‚#Ù–¿R”žFþ Ôi~¾ÚMdQHB¼GŸÌ…Ô©é~¤µEøº)¿?§*UOÓD•\‚ÕŸD£ôfˆr‚?(w5·I´RS\¨³œƒ+Àh!"ª‰G‡Jáê¡ ?›Æ-ýªTy8×ÍNéƒÖÌr£ <YRÇGÌBJ§p5Škeò VemÈàÔVÐ6Wš á °)4äö€©¼% ¶dC"B×6r½ ?=Ê àÚ3Ãðq'ÚcUUzºß®<eÁPRÕ³éD˜Ž-­gò#·2Ú±*í“7 ´®GƤ¡ûL'p9Äa|V;µ ¥ ªU98ÔZ/…3¬sëo»k<š¦Žuh3o(Ýå²Ö‘-‚¿l¶6Ç'÷eJš²0:T¨[ìcPH_—ßÏœƒÆÎÇCéÇFt­¯k©ÍÍŽÊ~ SsÙ„‘2Ú2K =„ír(¦¥Vs¤ºgÁl•-˜Àü—ÝÄ• B{Ê©G¼y•zAãV:‡ÿrò×é÷x¢°.O‰Œ];!Q‰`¿ðâIÓ±‰\‡¢ K ÇÕûü–üDLï(¾ßÄ z‹H -B^ñ\f߸yú² å™üÑò¶5"™w‘EŒ”I¢¸“?ÄŽ™(¥Gy0ex Ãíi%ÞöQa7 Šqè¢Ë<³)”ጤ«LoØÄíÎòfvýŸÕ_õ¢1U4<ù¦"€¡'´ørzbkͧ³9ÁvXMòóMj…zê >†òžàúm"A‡E±¤p½=×»‚7ü~AG%œó›âhc²Î$³þ“%Jj¤h7U‡Á¼bE¡q4#ó†‡ëzmL.YXJ m@`¶cðWSñT±÷VH3ïDoÄžøA cÚ:×ú*2µ—Íj#s\ú7;aËÔl¦X3&ÃV‡5t‹EGç¬Fxm«$Bè9­ &¬Øè„„óSÑòQ™L}HBi KM[§¥,œÔ@T$>FÏ!ÊÙ(Û,É$•ËÖ¹t(–j 5c!wå‹PDb¬5´Š., ~³eV:–>wÊMºd CñëK¦(nÇ1š~“šÔªGŸ{¹)8¸à BÚ+®³*©þÊr=èÂD¨Iίî`¸Peñr¤ ãc„reT<•ŠÂÕvÓ]díÙ#1ŒWÂACVÇ2–"·jv²TŒ2ræI4š@e¤bI\¸ÅŒ ÿrÅ'Ñ”‹^¼<Ño}*ŸtÂÅO¿Ÿ¸¼ðS¥} üx½J~ž×5T‡ÂÎ,c)Ý lÓ‰K Ã]Cd@‹ ÌNr¾Šñ–"Öü»Y÷€0˜H䃛8¿ºé.ËÆæYí.Û(KÕmy9\ëî'H¼ï@{M;‰eÜÂSR£c?añ(ÛÛ éÕáGÁ²çq€¢w5+I>e3µúãGªÚ 36°0º(¥“¨¨]éÙ› ¬è¸€I ‚2/…UÜ ©‰4$Ó¢Âéˆ=J¸ÁIh ­XDÎ"¤†øèxç¾”,[“ s»¡§¼Z„[©mÁòV÷àTÓã4¹Ë õ‡¶‰\~~ȉÐsÛ:ET›4ÌGJ†4ѧ҅ÁHÄ—¶ïEQÍנʘ7úM 4Æh¼ ¤² N²N{[%Ç…¥_«§'ôc’ÿ#*­š•]¦ÓíÀbžÑ´̃•—ü 5qª»qD6uøªËÆ®Ki„?†½ÿ8;þ[%)A6¡v„@å¨î¤Ü é­ç¶|HÚSaMLÔDŽBXða áz #Ïè‡âp- Lkî\.vèH HÜ1á¹ù`"/.? Gd£PbYÁƒDÊØ 3PôWƒ[SÝ„”ì@ÁvPxq§ê % %å™ö¥…ù”‘b¢‘ÈZtÜR} 'ˆP•6»ËÎA’R÷¹eJûõky’Ár >È%·  û÷u™}¾Äpde^ r˜<¤upô²Dv£c €͉i£Ë5ÀÁ‘VFŠD²oï)íë9DXÆâ…tÒð`Vùj30GÕxÚ¹)%uáK=6ÄÁ l(€ÌֵLjšP©@Dó½1ËüF… uŽ °‰ ;œ®‰E.+B"°^â`}kÁËæ+ür'"TAv‡ÅºúŠtå&í3Ò¡ðùhO2éL:€¢ N8þefŽžÄâ ºXLäÁα”9˜Ã7†åÑ=È©(rÑÀðQ5ŸÝ+UA4*94¼Ì¿rΈ‡jcØLúê˜ÿÍZhú@Š+¶Æ@ž8›Ä®hˆÆ?:fd2¬_ŒÊ5¬è1‹âѬ£Z΃Jj0›`H̬ˆÅUùÒâ?‡ºÕáHcçØð¯¾9Èò„Èõh†¡ âÊ›d*3D8é B{ÆÊÕA†Ýk{²Ùé|Ü‘tMÕJ‰;¡SEa-|ÉäÉšÒþtÁÕu¢=R\)Éy.ÖR•ðÆnÓù´«»µËb‡>PÊúØÓÒxD¦¶¼!Ƈo‰:Lý³½‚ä¡ I«Þ6­µ–*?j' é¶J–®ñ b|€dŸ…iÐM5ÎÍ¢âÎl?…ˆ‡€]‘´öýhòß,4ÁfÞƒ3;äG7«JZp%‚Š„¨÷‹Úý–ÇüX¸jxp•)´~zÍÕ¡µ?´Sµ^>Ÿ”"q„Ù ¥¶`yšk¦š,¥à°j×­s&g`³D,å¨lžHɧͥ±Tð‰ÀZsdPJlâë²i>`Û*\‡ Ûÿv\Úœ¢‚$¦js°Wú;|Sx*š‰j>RÌÅôxÅ·S1ŠQÞ ¥LÙøB×}Tíe<ÆËO5$ BŠTŒ)OH*¾BÝE¥­`ù?fsuœÝñ‘—ñì¶TÕnÒj$ˆ{·Á½+=/I•föÆNÉüØ,*³xÛ4¥ÛÅl[)S^?…T©â•G^‘ˆCdoÜ,PŠN{Ef5W¼Å¤_ó!åDqJî¿äu¦Åêwð9ˆ«SözId@…œÝ¥ÄÐ%Š<¨”&6ˆ,HVPÆÏw*©“}fqhIm`ÙÞ‚u.SB]Êê)C»ý8ZàÎÕ\Ö€˜4Þ4•{usN„øÍ"X‰ò2 “6Ôºà #Ë×Ij‘1ÇÐ$í F¬!qèKÑG^'1óU¶Mš†ñâºTŽÂùšrìƒó4±0цsÃ#„‡WkNXk•,uë°˜üù°ì_óÒAê£G3¬³½B|#ðw¥KÖR¢+É©DŠ'˜HnTJM Ž•Ð/‘ŒL^cF*fM÷ 4µ3oËŠr©õ=D2N/Á„cüõAÈ#À72ç¤+€±šé‚6Ù~¿¼ñ6•¯hDÐ’Vâuv„kºâ1P–,ðŽ©ÐÇi’’/0ÅeTlñi^)!¢‘"ë~sô,4‹šüåBñã‚-Lëÿk¶’/ÒàMv“)Í‚1Xvý&¶nBì•-L õ(L]Ÿ¿åºéP³L1ÁTšÂÐF%P\5ù>$'æžëåtJÀWÜjdóëØrÔ½R¡¢¸x ë ÒÚK]ÜP©¢K›¥êáSÒÚ½€)~×—„™}µö̆Ai>ZÑ> uD¢ö*4 QÊ.žëåtJÀWÜjdóç°å[Kè¶‘b LÆ.µÃ‹ÁáBI)ý¨ÞÎ\[m:Û°{SÚaU$Od[¬øsÄ#‘:n-H£ cþì”÷È€m0`—0&Ëîå#*Þ¸“[X±-ú¤ _-÷8¯$éâ+ ;e¥²4ô7-¥UnÌ_èr4ØJs¸$¨™»ooHâ׳Õ2Í]C‰ Rhz$}›ÙæþT´å>ñ…÷ükôs0¯1ÔyíŒÖͤ˜°ÉM)š„iM.PÇ9Í@‰ ßEÀ0ò9>ÓÞZ‘¢¦Þ ƒJZ•ÛÙ7¨®;¨”=,ó*ZrŸxÂûþ 5úgö³‚¦5˜à)´š6ßÏUĸÖóHF ¤%Mßã#-¼to[IðiÔø©Vî°Ë:Hæ#ËW+DZÆÂüEý1¢¢ö ;‘\†y)K³Å1Ô5 çOž} -6Qþî†%$#ÄM¨ ì|*ßáz™K@~º@sMË6jÎiʼnÿ È6WSB}å˜8 ´%$eï!IƒÆöÂN¡# ôaCŠ)1rÇôGC;2xÖlÝï`ˆÝ"ßÆÛ²ëô¨ „lŽ#,ÔkjÝ€ÍÃ`šÝ7‚5)û aõa¯ÿ (- I{ÈSü·ßaC·Õ …e‚8%C-}¬"íÂ?ka:–.ÁÕ⬮j©…œIݦº½€<ãhf̽þ<‘«v²1<¦™{x{*¡ü›Ùg›Êa*F‘Á5Šy·¤`h¹[4”x7TÀÀˆ1ºfc§‹.D>Šý¤Ê¨Å©„K “ﻟW­.Ä¥ƒ8’ªuFPJüÒX”ø­Ö‚TÌ B¹Ã]Ž?€“1óqm´Î6™«{Ò)˜ÑCGßX¤Àãïç@4H§AjùÐÐæà†8±æz®’¢É‡¦±‹l,ãvê¹”. G¡ë«T0;h;p ^ øzãÖ ²-\AŠ*„£þèx €%i!à‚Ò—EÐ`D&º]³Ë+ÞÄU¢ µ¥eÄaÔéê3-ìÅ÷L¯ â &&¦¼ `”b¡*¡ ²c¯/5l‰R€L¸À±X5ë—UÁîPŠvRWìfåtcäŠ]0IÖAv‹ ZXI¡&˜ÍH&cŒ(¶†ß´3ühƂʀ(‹Ç7.'„´¸I°).)éÈ[á†P[¯íŒïõ÷–˜gVô·…nÒ´•„¥žHL$b’¸ü$¼U˜Ôô îo“5KjÂdA€-½qžðÓôàV.¹z`[T“¿õŸÔ-ØDûRù™}§ÓúJ™Ô2¸˜‹6 P:åÐzI…’„·Ò˜à®ÊÑX`˜>ÄÕ*­œ›¡D2§˜­Íê•sD`¬ÐUƒP¹ËÑ%e5ß-§øc)çëtŽ!À2`âsç AÕþ¤ã¬»=<‹TV¤XÅj·Ç~ý{ÎCe£É“\‘‰¨Ÿ(±æ-«¶b¼c2ó|¡U¨»m;¶¢z‡µÄ$žUjñF¤ËBé¨)0pÖ­+<$H;á0Æ æ0X•áúã®ãB¢g—~ ëXJp&ÓHÕóô ¢Gv_¨Ú)±Vi,ëN=Ȫ! w²÷¦tWvÇ L"µì‹˜MJ¬AÎ?y¶Ê °ø7Œ@b (´.&„ap&°ó²4H–õkbý4ÿa6Í;_ª |™Ÿ@Úf(ëPŠ´Èè0×rø•1PRƒœ¸üšCÙ*ívÈŽeîÛ`À†ÖŠÓ¶ÛzVçŸÎ¤R/}aØní.ѹó¨”åþ"óÞ°_J_â9z‰]¹Z€ã!ÎÖôò5381éL!ô…SšU(;Í#›°ôj!t³ù±o,MU­LõÁXh=„§ê\ ÜB¿W+\xEz[N«˜ÎkM[øñX9ÜpAå ´Ú˜©òäg Ý¥i+ ȼ¨Ò°Ð~¹34’Õ µ–Òí’gm6¼û^Ðý „ŽÅ?˜;8@„{y-gº‘2ÍZlÞ.Þg–<[·Uº—İ€áyá<˜;ï1vvsÜ|átØyˆž€®ä“ †/œ( ©e^6BÏS¬…9IíjØ¡ÈV/=­aÆŽ±‹ƒÝÕOä„/Ζe²ü[5ƺOŒšÀ$±%K¯F6Ä ƒËŠuÜ3’Hx¼ÒߨÐKY+p'ˆ3A…Ÿ_ø¨¹¬É Tn tR³ùˆÞÐIŽf̾-¡í+Gü€ ¿W$ †§ŸÃ7@ÝëµEÍÇz~<'G˜ÂîµaÄøá9ñ*% “â"‰æø"‡ê))“7«h%àøw饋!P¡ ‰EæØ§°§Všn£v…'šˆøžè‹`7 AÇò™Kñ°¨lèí6AÍiÇlö1¨€÷ˆ#¦³./ØmÖÖ-™%Nªwà"äñMÓéÛsWNÃô0h5ˆv­q4FVe¡+ÓJ I—裧©Œ-µÞHÅ¿·eÕéP#Ð éIó@_®„ eQèS,ƒì ¬Ö´*«{ám­óm¢[˜‹6ã¡IˆlŸq+éŒÒ‘– ‹B»¦‡à ÁΓæ¬áù`{²¡7yL³UØx@d‡Š>8àn{öE¡‚Qo³Içü¼*ÉDFÂÍ ÅPy$zc]Å©fK,ìr+7怡¢µÅ(Uþs{„ðHi-ª‚™4’“zxðOw9 7Æ©)l0I­àrØ2.]ìÂH•œ¨¥ì¸8ÃEDŸvB«F°­º\Ö„”^tNÞŒls¦8¦PFXR+Àx!"ª‰A L2SrŸ6S¥^ -Þ !rV Žc?²Y'ašë“ûµ’âNõz{ÃZlÐq¥àæà£šø;x¯ÂÀ³Ø¤Æ´ž-Ð90ÃZ ÷Œz—ñKˬutñŠ÷b¥ß¼º¡†#¥ô `h™5=5j8-`|9*wÚGèœ ÎØ ÁU†…î05A-ÈÃiÙð‘**+‚8¸¡¡”EòI ²@»ÓìJ  © 0xÊž`·7«¸F¤ð®¾¾:PÛÿ:Åßd­°€Æ©¨àá€}ËoP«YÉÓ U ô̆iô˜¯{kc‚»j­ñãR~£éh 6'&I‰ii8Ï›œ(Ú8–YknŸ¡$Ý$gŽ2®Aé§¹gÌ¿ð\ñè@eS TZB¸“ȲB)@gè$ÍbTa|ì…‘-$†Ã4ÞßCÆd—uŒ>SÛz9ëØ(‘¬‰Ó-T'•±– *Tj4P‡1âa°AíFJ¯F6D  ¤Mj¡24}Pñj°Ål ˆ2âÍeªvE„,Îôè6JrÑÀeðÕ¹qõÆ>¦žxl.iìC€LŽU¸’¥+ý€„€ÁcàºZaA7~þƒSPmePåºäüA==O#ž(7†¾îáîû¬Þ¹JÒVäHq^qñ”*ö0ë†pm­†¢îî8à2ºr0>q¶1ŠÜV*ØU(:^x ôÂ…ü~–ƒ”¹y½­µÇ©*jF¿  ª5”ýl2ȵ0=ìëØ 43BurdñÌÍ…XpW”˜1îÌÎF nE­vÜAFÖq é)S"#ø*´°4/TáæúÉÙg:Tyf€šAm  œF76h]ô4–ЪA×¼·‘žÆÊ]XQYÝ | è$'§ó)&4iô¡pR3Ë®m²([b :BuîÃÊY(„rª®:^"iAm â¤vo TÐxi›³½ ¥¼Œb· X«aaËL*ò½Ü˜…˜{¯ôiv~nµN5b$m$w2k 8^h™©šiðŠóåX¤ìêªOM¥W=¹À…Uœ… Ä[Ä9:ÀÍ` Æ1ôÐõ‚cïè \Á.KYsȇ“c}þ{îüÀñÑÕ`#:•\P€3¹XbG (Æð£A£8, aE ¬¶góbÞXš«[Ö:ÂÿÚ”õ—Ø$-wj{zu¿jÿ&‘´›+ϲ’5ˆÂ û³zÁ [x¥vv'è`pc>ˆ*˜‹„]+e)Àɤܯb~†^ªÄÔ,Èã´"„wÃ,m2¾BòÒqXvTž£²C rœzÞ #KêàIlægIÅųð2@T³\+^Y£›Öav½þý¢U™ ¨y& ò—UÞ‚Œ.´&šÅ_˜êd@ $U”ó6œ¡Ð“;»œù4‚áÿoÒ¤ ‡=QX‘h‰Xi¢d kß÷kí­w#2”! Åò^žG50 CSEƒi}Ò,T ˆ¾ÏÑè)K:ûþ‰c<¿ i^¦X‘c‚ÜK·„W§[}2~NÀáNZc'ÔjÛ”)ðõE7þ.õBv.2ûëgü‰p¨9\!ìpîý]ܱ”Š“ÿÿÿòÿ´e3XÊêKù×ÞrZ’õaÔn$éXõ?Ì›âs®…WçA´5ˆOOÃäßø¨¹¬ÉÏ0t'˜Ü|/œTØ€„_FÊ>$cwÕËY¹ S‡°ôXé©OóÁíq}0¡€Ôƒ”ÄʸšÕYÈAKI0aù¾Øð}6½×†>–@þ†„7üXƒ‘,1h91O÷ň³9gA×þB*üáÙÁu /J¡<Ѹ[?RòR„óGƒŸ¦f_ÿÚ  D€LŒÌLÌÌÀDÈ €Œ L@DÌHˆ@DH@ÀÈDˆ„ÀÌÌ€ˆDÌÀHLˆLHˆ@LHHÀˆ@ÀÌÈÀÀLÀÄŒ„H„ ĈÀ@DÌLˆŒHDL„€ ÄDÄHH@Œ„@ ŒHDÌÄ€HÀˆHÈÌÌH„@  ÄHÄHÀL @„@„@@ˆŒHLÄH ˆH„L€€L@Œ € @ÌŒˆ Ì„€ŒÌÈÀŒ„ÀD@ € €LÄÄD Œ È@ D€D„@ DÌ ˆÈÀ€Ì€ÄŒȈHÄ@Ì€ÿÄÿÚ??ÿÄÿÚ??ÿÄ# 0!1@Aaq‘±ðÿÚ?ëñEïg?oN†¯©Ù}ßÂÿ•^%€xÆøÛ5íù” …ßñµ_@D†”KÛ¨¸ÕIK’Ù½ð\R”Dmãã$ …ž"Å‘»Á"©é:¸ÁÂX«û´òCçi§¢ž?´ žÀb°PÁæñ ‚ x6%Þ<¯p@>nä #¹pî^‹¹q§HŸœ¦Ì–Å©/Iþ@*mâ1]ÚêàHÞ£˜¨釭æiƒÉq[§¨šûXáu„V‚¶§xe¡¨_ÖŸŸYìú•K8µY;꬀nw5Áj[n›NÅÌÎÍ*‡®–s3j2‹Ø“ ýèÄе¹ÛaE*È=buåÁn0n½¨ ÜÆB®—Ѫ\‚…‚ P)Á“æRà W‰¸‡X‹ûr«Óû`.ž/HÇÖZ®Ç4oÚÕb4ÉøAå…thãq5#{éåR BÝmî<0åÿ~ì2 >*1âžH“A[WU­xŸK®ÑÖ?Rj˜5@ž ›Äÿy§Ô40“¤±nIè½¹h¶bògb­nß*ºšÑ¤õ6}Ýs޽îéã!‹R²=+|’ó-hm¡¶3$›‡¤þ° –6w—æ QòÏNÈ×6`‡š;Ú§ úµeGZ婽úb ¸OÙk4]°Ý¾Æ4ו/±þ># ÷ à†( ð%G*4讲Gªç{…£|œzÔ}þǺ‡hèeÕt{—˜Gx2ÙíQ„Ò€$6´‹8¢G~—ÇV£ûÔŒàíÊDè­7Cf;O·)Ó›7ø@…ÖyŒ!•óëGà-é´ÚòÆ2#¾ùB Y«ëô\Á"ZÁÿ_ÈÔËÇy •Ô¶ÌÔ(Èh˜¼GmÁL2~w•cp~OFve(gdò¸Ef=Zƒ½R+MÐú»ƒJ?Ï17÷¦uF¹Rl-;ö=XO[«ñÁ¨«†CeNë–g ½¥¨Q¤%&Ä÷ZSR.K¬{W!!/ÀÅõÌl’ëÒå¿Û"Ù¸'0EBfÅrùs‡e7”`*«õ!_>ËÁ,³âQ)l3ÏÔ€]ŒÄ,{ÍØ¨ÂùÑÍS"ÐQžU ‹ 9”¨r‹>&™S³ˆ#8,’n±+‹ÂÖ«W˜ ËÖçÁÜ#ùµ‘ŠPVbµ·œE}=Ýy&\Jàvv‘ÝÏEB6È ü($ÁÍGâìí¡™ ÏRPE'Ÿƒ,(ïèÄo…ÑfhŸ!V2‹ÊÞqSL¤>V|a±º—T…бäA ר±ò–RY[¢üÆ60¦ ý#bœr²Æ4@|þš ž5¬h­Ÿ•ÝèBРÎ5\Ø;Ý,N‰“ ÃnáÐSÔX5Ü…áÎyMˆwþõ[SÑ) ûó§[¯ùç!´K1{ÿpS/e;wÅcÿb*ðÿˆ;(BöìÊU‹ ‹$ˆD95l¨ˆçÞŸÔÆ8”Qyyz’ù«~e…|›ÿ DMKy™;)+•xàDRøã³Mí9 •Îí„l–… æO‡¼ ŒEÏF+,¼‚ƒG÷’|\psoÂÁ$ÕÉaìiýf**fižÉŒ“©üï¶ÊFÂ8HœtDgÀœJÚ:% éM¾j³N¼V‚¼y5´ˆCrƒr¾ã;—Ãý=EDEù–ó™ðá7ºžH¡"˜$B>vÛ.b 2Eb%ï1 ô‡ã\ª¹ˆMô®®°ò©¿2ptxzÇ@ 3jf­-6«Yôâ†YF¢m|ÈjЇܤáuàl$zǹjöU|ΣV1m7 1Õž<¡•ƒJת»Îg:ugCüµ¦ÁÛ[Ÿ¿:†´Î„w R«ô‡ã\ª¹ˆMw3\/5ÆìY›ÏFظË<éùU,öë%ÂMÚ}¡/î×ǽ,¼×Pßà*;vEVÍx üæA¥KóM纥Fmâ¯Çĺ_L~HÉ4 œ åHë`^C=pÀ‚&s‡pº>íuçg eEâRÂÅÑÿ1ÌòÒAäXö!¹ÿ²=üþWŸ­&Þ¸rO3:RÆ«Á,œ^EíOZºô‚¶¾¼è0T˜í7û”aMXþ‚©gwézuÿíìÄRAžF7v´YzfÏ3N¦’ ²8±þþRYœÒtÉWQ›lJÊïð~ ¹5•n&y¥S\W+ºâ°W’¯fjñŠ)ÆþŽíº‘û¹5ÝôŽ"zxt‚zvÈYç}M³2Ò‰Vr6oY=î%{—Ž£©µ"c?R +_šoYÛÝì fÊ †]@èÁ²zPólÜp©ðé{óV“ÁÎ %Ýw1u.ÑB_µå x_Þs=ð«9»É#Ê…(_\Šš+>›£:øÅ_æEY)AÙÐ7 ?‚»¯¨?Ö48¯dŠå¦!þ¬Þ‹PögOŒÙym'‘yñ± Ãøyþ|°°éZõW“LüçÙ!ƒ¨e®û~úUã½ÛKfÿ™à€ÖEî9#àÓ‹;ø,›³dö:ÒƒbidÒ£Ðíwà€moýÚp3+²aö‹RM=†¥Ãö yäEͬzìÓ3n j_Öõ­ŸBÆo,>‡y§o,>‡y§‘|“ÔPÅ_Blß+Ú‡µ ¼¦+rsxû OtÛÿ áSèü*¸›ººMàT~šç*£žf›ãÓ -6~Ð=!ÉJgàyëà•nÂÌ'G‘&MW¸ öÈ÷¯L¸²¥¿™xä¿p×­„!Dâsrú+Ú9>÷¹.÷HÞËt½×2_Q­%úb!ñ¤ÿºd^†Ô†˜Z¸‚¹)ØŽçPë½u¡:2ôqRzmõ9éà¦r :^8ªqi¾EG@¬Ö?[l +r´Eð`)!O!»Z9#j’Ä*³ðØYŸ"LAg™ïM3g>ŠþQ|/Ä…òÁQcE_J{ð”ýðî4"ŽùX7ˆG¥#•Zí £6© ÙÆ7C…°Ì ¾vmâk(µ×ûï÷E(ëË6Cî%Ý@ap1íºCíª¸$ΞÞ-Öþÿ·975®‡1ó,؈‚[=nÄC“ÂL â?ŒjV?}kd60û@n!"æô}å5–öÿTÚIÓ‰ç5Áö§ñnó“Üö`[o&Ý /F£˜S°åé£Wè.„|îñi j˜òC®:|wÙtv±^âqˆ cÝòG}äÅ#yl°3_êeØÎªkή·÷Õœ¿eï"Â<Ý&IhAÉn´vå…¦OH·cÆ"Ýt™ò1 Œ$jAuFÑxK¬htS¹VÂ2‰zdáFïLè¶jË("5ð ‚e©Šµ…IéH7Žwàc[BÖF1e§ø½$L ‰,x±c¥„K P½É¶Ñ€F\¬ÿ7NûÄBè‰-K ê’ƒAʯ7¢8¥€C2ȶš\•Ý•­¤¡%õÊhÛ0¤µrhxˆ£˜tXŠ{è븩æ ³d’~ï_Z ’7NûÄbé·âû˜=!ç’‚“.ÃýXâ³þ<«Ìœ¼LÁ,O…ÕÛ¥Èáhòª‘8@ûª{C¶B_m'Ç…"?UUåÛ“x[a#ç?Z§Q¼J ËS`ñ#4<· “÷€Ô3 ¯‹9¯ðä;ÑÕ ZïCÄÞ ÈE+-eÞwŽ@0t`ù:GR¾«=(‘%Ò¼»¤˜3ÂÛ 9øÊÕ8–<}à£ZyË%a»/š8š§ºîãÕV÷üEmWįÝ*C÷EëgeÎåxÓ­PšØ‡û7ê )à™²ýÛW&’â‚ Ý$èX[r(«_Jøä9´ DwïE7ÝÙ=Z}(!öW°ŽÁÁüK€pt°[p4´Ì¤ñyŸdzo޾³Ðæ¸3ÃÊW?>$¸aëÆÙTYU`˜½$&‡ñ®wfq˜ ü#¯´^Êâë[ Ú×;¶¯P—ñdÚÃKúº˜žÑÉHJ(©ÃhìݪƲé3àäc¦uœ±Ž“ ÿO77óЃQ–F+bÀqÖèåo¤™:¼øÈKþ%8hüÖÂÉ&º‰S9p0!……÷‰òêæ~’ôÂÂ+ àHß‘¥íE¢úò M• ™XóÝ;@tVwjQì‰+´×¦qØ!÷÷I-j/îdEP–l]û;6·-.ìàÏ3C( T<ðíÝn úžÛx†šß¹ýßÊŠ££°ŸQ/ÅJÉHÜÑ%Å: ž÷(#Þhþ‘çú쬯~K1Wj— ~;Nñ-ž–½ÿ™%°FÊcŒÌ”bîÈ-¼bk3c™ÎYÐÿ-iC”˜G»¥#'WÔ´ô¬¸AGøÀqOaZ"fÄp?¤fôRf…H߉Ei8ËÏÑs9 HÆK}ŒO猢b‘>ìýtíØ¿#¾žøÜË—¨Ç’ýqøÓÞGi¥÷ Fa@ú~`òìk-ÓJ‰—†ýíÚÞЖr±ÃÚ{Ý€™‡Çfã mó¤?åUÌBl gjе±šá@Z¡êiC‹Ríwª¡6f}9äRÑöqÉçXÛé‚YH/¨ G®¸¸ÝTx=ðüãêUQ–ž—æ™êe¹ò­ŒF†¡Äügd3»óáíúh‘yÊc¨ÁMBÿ¹ïòäµÀ¶þ :ÔOiº9&÷ŸªÕÙöEÔ ½üË’¢€üÔO FQå¢ $4‚XîÍD.UÈTŠˆƒ?U†§ódT–„ˆYO×çqV»Hunòš£ ÛÒ¤(³»Íg¢}Ï>€×jœ®ý0:;ôg»%ËË£w¤_BÖá{:6³£çWq¹ú¹©zä‹@Ò¦ÛXlú$7¶î¿Aþ¨ X ëób£¿µóŸ‘Ëš=]¬eWtùmŒ€@ο—ó²’{¦#rm%ó—ѼiУé44Œøç)>œq„¥{µ …“1¥ªð¦Ë­oZ@aCga9€FNAæ^‡½¹ê±¾¼‚àé[ZWBJç·ìƒU_© ùö^ cýŸ‰KQ/3]Š7³ÛSð(¿ÖŒDêŽS¿ñ¼­ìá^i ÙV£Š}êׇŻ;qùJçiÝl A¥Ö$¼çU @îXSlRrIçÛÓüRÁ›'vÓì hQ^FòÄ©×[_Ú=za•gàºn/KŒlrhÌSØsnÒ4EíAª1Qv°7á•Ãn!^áfúA‚3ÙäBÄPl–«¶UAÄLrK» T˜Ù^a ß²&Ršux±—|Á7ÔDÃÙ¼%EõJ¬ËOKòÙe]åõvÛÈ\_phw€fέ ûß,_ÁÙ¹H.ì n ø¹”@µ_1§ÂÔraTõd!k2{›çþ*lèåÊ Ä1L¬_ÚFD<1÷™¢U7¢Ðmù:9úþ§xÒ¤ª@׉aƒff]OlÇÇAŒÃï9äE™K,IÕo¼S'ý6vM¨5¨"Cž¢•¶b*ÏÖhÇÍ6„aau§©ïVÂðkpîólI¤«8Ž¥P›¯T¬Iw¢΃ÚÔ$ŒÛh“Ó³`÷Œ%³L|'Qœ ì¦N ‘g"ÐÈ@Œ³¿Ð5»e»ÆË˜­°X>ŠnDΟˆ©(e³If2&ƒª¨g+ù7¹žÝ”ΰû™uÄ’ÛûÑëAÀaQˆ¹ë;°1èZ8Î(v…Wñ'BœÙ)1mR<ž8‚á/ô¨ýtý×Ï„Ä`%‡UܘŽQ]—f'2 ¾%¹¡€®ƒtøRri¨ˆ‘:È—×kߨ²0O¨ÕhUãsQÍjqyÆ¡EÓKF{LjD<8Kšy:W娌Pg=ÒBçaÖXrGÈ¢pofBJ³¶¬‘)yß’I·4V^¾ïQ¥·*c?w !\À`Û• ëràþõ0¡EþA:E¾hwòTD¸¯X¦ˆsòN 4uв»a9>c³3ÔYçüÜ6ÀŽªõm`ᔎj÷Å"l…9æ°¾¾ØâÌ8C¢Ü¡°,§ ï!aO‡¥¥©d™*y ] ¡B8Dþ,¸*Pbܱ邓¢9ß žîáÿ«• J§¾ª~A7©‘mö °Ï\é5§^¨HL¹va„‡DâÔ}tâøâ =((Ì¿ÑÂ;àŒìÉ¡1Q†½úý]v¯Ï}¢_´íWÆñ‹šÇ"¢ _Â+—PœA‘/¤PL¨.€×‘v"x3ò¹Ä…jñËF±ÉêÖœ– [`‘}îÁƒ—…*` ¡v»áBf¯›ôRîä»)ð^BÞ¦8êL:( `'N¤Œ.®ºd´w~‰ÔÏèФZïžAÍãd¹Õÿ¤Íý–(>’­—®w›¯0'$†ÀqSTÜŪ š%špú“­âf@9ä%ê ¤jõ¼þ>l\ñ¨kΰ&±á iƒìÆZo 3 »£±GÉ-8Öe­¹ìR:ð´>ú6Ø käÕÈ0ð¶1,cv ?¨ÍÃ✠³Ý÷«ã„üºàžBìæv_Êê(b±¹L’ ³Ã3¬”2’üèÄе†#ÞÂ÷¯ 0»6¡ oU?°Ûàõ¥Fœs^:r<”j;W_ä þ“ñèOƒãY$QнÑlj@9Ç ó3Jä›&—q‘1Þãobyõ;tUÓ©àN[Þ м¢´pH`¥:ü´Ò]ßPø— Ø[1¿üxW7(W ¶çå``Ø0N°CHªê.Ž1´li2wêøŒ*JöM*)ª˜cC°‘ )úãüã4ÔÞ]ÊKG;³Q±·Q°vv ^.p!H2ÎYF#ùKîDÕháÞËOñôÒ¡Õ2 …´@;ª%ˆoØN.NoXíúp+°z™8%çSÐôèÝ&ét+ÒÁZqu7({!]iÂ×Eë¾”õ†,aå][¾Ë«‚9ZõåeéŒb ¯ÐYè‹K®>N- Çž^…S_Çå0â´½'Aȇ¤ä'þçÔä`¯TS3¦œ ªð_ŧDÔs\,˜—9*=`¼Žj‹$Ô[yÊxÛ>5Y‘\7ñT_„!½ªÇ‡ª“Êm¨×W,Ï›FMX¹?Ä£ùa>ûãD N¯º–PšÆ·5IßÛŸàœÌ¡cеrTˆ{u†›~-Š­E+lÄUŸ¬3’ŽóEãú#}B«2ÓÒý‚KÝßóêu€zuB¬Š4;’$¥%ûKoE«¤P8²°ðèøqvÿDa"·C—ˆ5Á/™Ô(Ôü¬9J!´­OTñ¦aø\éõ!n:DÆ*~‹,>Žm”hÕ˜1%hLC/x; Õ×0ñ¯Øoó`L…[á'`£Ö‹!¡Q‚-1+j’c“oãvˆ#múBV+i∹å礉`Ù‹kó¢Dtåß| )UŠÒô[•Nc²à–†/ÌNâî¥øLÁ׌¿AñÌçN¬è–´Ì4‚Gxü¿þS`[¨ÑÂL/õ-n<‰g»]¸#MƒšuQU){Õ˜…£s³¾'¸Ñ‰•‡‡GÃŒ±}þ÷Øf\À¬4¯SN7pE`!!çP¼]P®þ3·ä£Å´ì}}7›·rŠllf¸2X´}W )DQ¤Û«´Ð”È §• ¦M•ü˜Ha©â[³–¯Z- n+•ÙL†%–ezÈäÁ\ÄPFmñÔ3çÒÔ¦ EÏõoÚ@3îXi } Á¿ìɨi½vmRãD»¡ø.œñÆ}V0å—eB¶@)‰ãgª¸¸|(µ°M…íy Òñ€'X#‡ãMåÈâ¬:ÌyÐEýúÈÈ2P±F†6›ÌêmïDÔGBЃˆ¯K\zÄT¨â¯ú€;ä~~‚*Nð÷_.iö‚È—g%J©îÖÞ¤=þáò’c§´ÀÄi«˜ÜD¨ŒTý‹9›þq^5óô"¬.!VÇ´16hÒoŠJÅe³Eë1Åbf{°Uf1´0gÌ'6]ó) +^ªï}ÌÚrúÆr,ðšè¬Å´.t ) ?&¤öSÏ-(Šb8IÊ… +dÌí!ùßù-—Wé…@3²FKÈ•íª0x‡X®·„‚„eú¡Å„=·òióCÜ—uÀ dnxƒÜBÝ™npVòÃèq‘š}ßžÈ6·BÁ²4öúc_X)¥o»#Xæ¹Ý™Æ`'÷–¤‹oÅrX«ÑEãê#Õrr¢xZ`4õé5‘‹ÿUÝÓ+Ëd•t{—ýøÙ]×|ÏÈ¢ãµwå?C´ûy,%º^(2šQ9¹hH”šXRØëàˆËÔã³g¬X¸Œ ,€tE,À4œF(4ò§¥MPÁÔºöÀz¾¡±”×/ 1ˆ9¤QÜ?<<€  T¥ Îò²’Œ}7•˜S7›ªíFÈK ñkG9ñ¨ùä‰D¹@,¾SPÀbs×ÁMöS…ÈÆœgÑ”`u/rÙ`ÏŠá ³RÌ/ëy`sÇÞ 5§–J´RŒ¹$1LŒv£zAˆÚü_ñÁ5æ$*´Læl„L‹÷,•ŽmÁÖLð¯ @¿a®w¨ÌêÓ‹ñê¤æá€Õ×1»P W{H+'›àHFYe–A+U¨=çñóuÖ–tX½,!ÔTÝÖŽŠ8 Ø;Jl€çлþm˜O*2æ(ÞÕŒPg=ÒBçPÊÌ´÷'IŸïl5ÜÂ2(X‹lĹï^Õ>Ë4ÑGѱo<@á0îJ(Œ<¤™•VˆXÑðê8Ošjc|‚ò9÷¾¿Õ)åi¸©o¸Ä²·âø›}¨4G@î`CÙüUX>㤔ú"Iaà,o /gN°.í;±lù²õN¡bšùVÛÿÙxmorph-20140707+nmu2/example/AA/gtkmorph.session0000664000000000000000000000067412356304631016230 0ustar 256 256 grid.ppm 1 grid.ppm.mesh 0.5 0.5 circuit.ppm 1 circuit.ppm.mesh 0.5 0.5 xmorph-20140707+nmu2/example/AA/grid.pgm0000664000000000000000000020007412356304631014416 0ustar P5 # CREATOR: The GIMP's PNM Filter Version 1.0 256 256 255 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[~ÿ4ÿªÿÿÿÿdÿÿãÿÿÿÿfÿÿÇÿÿÿãÿ$ÿ>ÿÿÿvÿgÿãÿÿÿzÿŒÿÿÿ-ÿ5ÿÿÿ"ÿ&ÿ9ÿÿƒÿ~ÿÿÿÿbÿÿŽÿÿÿÿ‡ÿqÿÿÿ,ÿUÿÿÿ$ÿÿÿeÿÿUÿÿÿUÿzÿŒÿÿ0ÿ-ÿÿªÿˆÿUÿÿ.ÿdÿÿUÿ4ÿ3ÿÿãÿŽÿÿÿ$ÿ?ÿÿ9ÿfÿÿÿÿwÿÿrÿÿªÿeÿãÿÿÿ=ÿ&ÿªÿÿÿ0ÿ-ÿªÿÿÿªÿ&ÿ.ÿÿÿÿÇÿ3ÿÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿƒÿaÿªÿÿÿÿ¥ÿœÿªÿÿÿ9ÿƒÿ„ÿUÿÿÿ\ÿXÿªÿÿÿkÿ–ÿ9ÿÿãÿXÿŽÿÿ9ÿÿrÿÿÇÿPÿuÿÿŽÿhÿrÿÿVÿ)ÿÿÿ¥ÿUÿÿ=ÿgÿÿªÿ„ÿªÿÿcÿ\ÿÿaÿEÿÿUÿ–ÿÿUÿ/ÿÇÿÿ£ÿ—ÿÿ^ÿBÿÿÿuÿdÿÿãÿƒÿUÿÿ)ÿtÿÿrÿœÿrÿÿgÿ)ÿŽÿÿÇÿpÿcÿÿÿaÿEÿÿÿŽÿwÿZÿÿÿÇÿ£ÿ—ÿÿÿUÿhÿPÿÿÿÿªÿƒÿaÿÿÿÿªÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿxÿ~ÿªÿÿÿÿˆÿoÿŽÿÿÿªÿ†ÿ…ÿÿÿÿzÿ…ÿÿÿŽÿÿrÿÿÿÿpÿÿÿ„ÿhÿÿÿˆÿ[ÿÿÿŠÿnÿÿªÿÿrÿÿ|ÿãÿÿ{ÿ~ÿÿUÿ†ÿ…ÿÿrÿƒÿÿ…ÿfÿÿUÿÿÿªÿmÿªÿÿuÿÿÿhÿwÿÿŽÿ[ÿªÿÿŠÿnÿÿUÿÿÇÿÿ|ÿˆÿÿÿ~ÿÿÿÿ…ÿÿ9ÿÿãÿ…ÿŽÿÿÿÿrÿÿÿUÿpÿuÿÿÿÿwÿ‡ÿUÿÿÿªÿŠÿnÿÿÿÿªÿ„ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿ·ÿªÿÿÿÿ‡ÿ¦ÿUÿÿÿãÿÿ¤ÿÿÿªÿ}ÿ¦ÿÿÿuÿ‰ÿªÿÿªÿ¬ÿãÿÿ9ÿ¥ÿrÿÿ|ÿ‚ÿãÿÿ¦ÿƒÿÿÿ·ÿ~ÿÿˆÿŠÿÿ¦ÿƒÿUÿÿ‚ÿÿÿ ÿ€ÿÿ}ÿ¦ÿÿUÿuÿÿªÿ©ÿªÿÿvÿªÿÿ¥ÿ™ÿÿ|ÿ‚ÿUÿÿ¦ÿƒÿÿÿ·ÿÿÿˆÿÇÿÿ¦ÿƒÿÇÿÿãÿÿ¤ÿÿ9ÿÿ}ÿÿÿ£ÿuÿªÿÿÿ|ÿ¬ÿÿÿÿ¥ÿ™ÿŽÿÿÿUÿ‚ÿ¦ÿÿÿÿªÿ~ÿœÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[Uÿÿÿÿvÿsÿªÿÿÿÿrÿ’ÿÿÿÿÃÿ~ÿÿÿÿ¸ÿ£ÿãÿÿÿÖÿ¼ÿÿÿ¦ÿÃÿÿÿ•ÿÿÿÿÆÿ‘ÿÿUÿ»ÿªÿÿvÿsÿÿrÿÂÿÿŽÿ’ÿªÿÿÀÿÃÿÿÿ¼ÿÿ¸ÿ£ÿÿUÿ¸ÿÿªÿwÿUÿ9ÿÃÿUÿÿ•ÿÿÿºÿÆÿÿŽÿmÿªÿÿ¦ÿvÿÿÇÿÈÿÿÿrÿ’ÿÿÿÀÿÃÿÿÿ¼ÿÌÿ9ÿÿªÿÿ¸ÿÿÿwÿÿŽÿÿÿ²ÿ•ÿÇÿÿÿUÿ‘ÿ}ÿÿÿÿªÿvÿsÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ZÿUÿÿÿÿtÿPÿrÿÿÿUÿ„ÿžÿÿÿÿSÿzÿªÿÿÿyÿMÿUÿÿÇÿ’ÿ—ÿÿrÿ<ÿ!ÿÿ9ÿžÿrÿÿZÿ[ÿŽÿÿ]ÿ:ÿÿÇÿtÿUÿÿÿrÿÿ„ÿžÿÿÿRÿÿªÿÿÿYÿyÿÿUÿ4ÿÿ’ÿ—ÿUÿUÿ<ÿUÿUÿsÿªÿÿBÿZÿÿLÿZÿÿUÿnÿªÿÿPÿFÿÿãÿŸÿÇÿÿãÿÿRÿÿŽÿÿãÿÿÿMÿRÿÿÿÇÿ—ÿãÿÿÿ!ÿ_ÿsÿÿÿUÿZÿ[ÿÿÿÿãÿnÿ•ÿtÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[[ÿCÿªÿÿÿÿ"ÿkÿUÿÿÿªÿ;ÿsÿÿÿ9ÿiÿGÿUÿÿUÿyÿ1ÿÿÿ?ÿkÿrÿÿoÿŽÿ9ÿÿrÿXÿÿrÿ6ÿ“ÿÿÇÿzÿÿÿwÿ"ÿÿƒÿBÿÿ|ÿ;ÿÿ{ÿTÿÿªÿGÿÿmÿ$ÿUÿUÿvÿÿ?ÿkÿÿªÿoÿÿªÿqÿUÿUÿ|ÿãÿÿ“ÿ[ÿÿzÿ…ÿÿrÿ"ÿ9ÿÿBÿcÿÿÿsÿ{ÿÿÿiÿGÿÿÿ$ÿyÿrÿÿUÿ?ÿkÿÿÿãÿŽÿ^ÿÿÿÿ|ÿuÿÿÿÿãÿzÿ…ÿ'ÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ªÿ’ÿ~ÿªÿÿÿÿƒÿxÿUÿÿÿªÿqÿƒÿÿÿªÿŠÿ‰ÿÿÿãÿÿvÿÿ9ÿPÿzÿÿÿ|ÿÿÿ9ÿƒÿrÿÿiÿ~ÿUÿÿ~ÿãÿÿjÿ†ÿÿãÿŽÿÿ€ÿ‡ÿÿƒÿ‚ÿUÿUÿŠÿUÿªÿgÿUÿªÿvÿÿÿPÿÿrÿpÿÿÿTÿÿÇÿ€ÿrÿ9ÿ~ÿdÿÿ~ÿÿÿjÿ†ÿÿÇÿŽÿãÿÿ‡ÿqÿãÿÿãÿhÿŽÿÿªÿgÿ}ÿÿÿwÿÿÿÿªÿpÿ|ÿÿÿÿƒÿ€ÿUÿÿÿãÿ’ÿ~ÿãÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿUÿÿ€ÿãÿÿÿÿƒÿˆÿUÿÿÿãÿ„ÿãÿÿÿãÿrÿ‡ÿÿÿ„ÿyÿªÿÿãÿÿãÿÿãÿ‚ÿŽÿÿ„ÿ}ÿÿªÿ|ÿ–ÿÿÿ€ÿÿãÿ}ÿ9ÿUÿˆÿÿ„ÿÿUÿªÿ{ÿªÿ9ÿ‡ÿUÿªÿ–ÿUÿªÿyÿÿ„ÿ–ÿÿ’ÿuÿÿ‚ÿ¤ÿÿ„ÿ}ÿÿÇÿ|ÿUÿUÿÿŽÿÿ‰ÿªÿÿƒÿˆÿÿ9ÿÿ†ÿÿÿÿ ÿÿÿ‡ÿ–ÿÿÿyÿ“ÿUÿÿUÿ’ÿuÿÿÿÿ›ÿ„ÿUÿÿÿãÿ–ÿ~ÿãÿÿÿÿ}ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿ9ÿPÿ‹ÿãÿÿÿÿ¬ÿmÿUÿÿÿ’ÿÅÿãÿÿÿ_ÿXÿãÿÿÿ˜ÿ„ÿÿÿQÿšÿ9ÿÿ¶ÿ‘ÿÿ9ÿ_ÿrÿÿ”ÿ©ÿÿŽÿPÿrÿ9ÿËÿãÿÿ¬ÿrÿŽÿ}ÿªÿUÿÅÿ¬ÿÿ}ÿªÿªÿšÿUÿªÿ˜ÿÿ}ÿ[ÿÿšÿ™ÿÿ¶ÿ‘ÿÿÿ_ÿÿÊÿ”ÿÿ»ÿRÿÿÇÿpÿÿŽÿ’ÿ¬ÿÿZÿ}ÿÇÿÿÅÿ¬ÿÿÿ_ÿXÿUÿÿãÿ˜ÿãÿÿÿQÿšÿUÿÿÿ‘ÿfÿUÿÿÿÊÿ”ÿ©ÿãÿÿÿÿpÿËÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[rÿÿÿÿnÿtÿtÿÿÿÿjÿ{ÿUÿÿÿ‡ÿÿªÿÿÿ¬ÿnÿªÿÿªÿ®ÿyÿÿUÿeÿ¥ÿÿªÿrÿãÿÿ¸ÿ•ÿÿãÿ‚ÿãÿÿ ÿnÿÿtÿ•ÿÿdÿjÿÿ{ÿŒÿÿ‡ÿÿÿ†ÿªÿŽÿnÿªÿªÿ¢ÿÿyÿ|ÿÿeÿ¥ÿÿÿãÿÿ„ÿ¸ÿÿÿÿÿvÿ®ÿÿnÿtÿÿ•ÿ«ÿÿ9ÿ{ÿ{ÿÿŽÿ‡ÿãÿÿªÿ¾ÿãÿÿUÿÿ¢ÿÿÿ|ÿŒÿªÿÿÿÿrÿªÿÿÿ•ÿÿÿªÿÿÿ9ÿnÿtÿãÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ˆÿÇÿÿÿÿvÿ|ÿbÿÿÿÿ€ÿyÿUÿÿÿ}ÿ~ÿUÿÿ9ÿ~ÿŠÿÿÿ5ÿ…ÿãÿÿ~ÿYÿÇÿÿÿÿÿÿZÿrÿÿˆÿyÿÿdÿÿÿãÿbÿÿÇÿwÿÿyÿZÿÿwÿ}ÿÿ|ÿ-ÿUÿ~ÿªÿªÿ\ÿÿ…ÿ}ÿÿ~ÿªÿUÿÿŽÿªÿˆÿªÿrÿˆÿªÿUÿyÿrÿrÿÿ9ÿrÿbÿ8ÿÿwÿ€ÿŽÿÿ%ÿwÿÿÿ|ÿ-ÿÿÿŠÿ‚ÿÿÿ…ÿ}ÿãÿÿÿ=ÿÿªÿÿÿ0ÿZÿˆÿªÿÿÿrÿdÿÿªÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[hÿ]ÿŒÿÿÿÿ1ÿrÿÿÿÿÿ;ÿƒÿUÿÿÿnÿMÿ9ÿÿªÿ‚ÿ1ÿÿÿOÿvÿ9ÿÿwÿtÿÿrÿ~ÿLÿÿ…ÿJÿÿhÿ]ÿªÿ9ÿ.ÿªÿUÿrÿÇÿUÿhÿÿ;ÿƒÿÿUÿhÿÿMÿ€ÿUÿ3ÿªÿªÿ€ÿÿOÿvÿÿDÿrÿªÿZÿ9ÿ~ÿLÿÿ…ÿJÿÿhÿ]ÿÿÿ.ÿÿ1ÿrÿ9ÿrÿhÿƒÿÿãÿ€ÿŽÿÿnÿMÿ9ÿÿ3ÿ‚ÿ9ÿÿãÿOÿvÿÿÿwÿtÿªÿÿÿLÿ†ÿ…ÿªÿÿÿªÿŒÿÿUÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[9ÿ‚ÿ…ÿœÿÿÿÿPÿVÿyÿÿÿÿ€ÿ^ÿUÿÿÿ—ÿ—ÿÿÿãÿWÿSÿÿUÿbÿÿÿŽÿ]ÿ\ÿÿnÿŒÿUÿÿAÿrÿUÿ‚ÿ…ÿÿ—ÿ€ÿÿPÿVÿÿrÿŽÿÿ€ÿUÿhÿ?ÿÿ—ÿ—ÿUÿ‰ÿªÿªÿSÿÿ—ÿbÿUÿ~ÿUÿ]ÿ\ÿÿnÿŒÿÿ€ÿAÿÿ8ÿ‚ÿÿœÿŽÿ9ÿlÿPÿÿyÿrÿrÿÿ€ÿ^ÿÿÇÿVÿãÿÿãÿ‰ÿªÿÿªÿwÿ—ÿÿÿ~ÿOÿãÿÿÿnÿŒÿ†ÿUÿÿÿãÿ‚ÿ…ÿÿÿÿŽÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿ‘ÿŠÿ}ÿ9ÿÿÿãÿgÿŸÿÿÿÿ|ÿrÿUÿÿUÿÿƒÿÿÿuÿŒÿãÿÿãÿ{ÿwÿÿƒÿzÿŽÿÿyÿ„ÿÿÿqÿÿ^ÿ‘ÿrÿÇÿqÿÿ•ÿÿÿŸÿÿŽÿrÿªÿªÿ ÿUÿ~ÿÿÿ|ÿÇÿªÿŒÿÿsÿ¥ÿªÿwÿÿƒÿzÿÿ™ÿyÿÿkÿãÿUÿ›ÿUÿÇÿŠÿÿqÿxÿ9ÿŽÿgÿŸÿÿ‚ÿrÿÿÿ ÿÿÿUÿƒÿ|ÿÿrÿŒÿhÿÿÿ{ÿwÿãÿÿÿ’ÿ™ÿyÿUÿÿÿqÿ›ÿ^ÿÿÿÿãÿxÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿãÿ¹ÿ‡ÿŽÿÿÿãÿƒÿnÿ9ÿÿÿ©ÿ„ÿUÿÿrÿ{ÿ»ÿÿÿƒÿˆÿrÿÿvÿ·ÿrÿÿªÿ€ÿÿãÿŽÿŽÿÿzÿrÿŽÿoÿrÿÿ‡ÿãÿUÿ{ÿªÿªÿnÿÿÿ‰ÿrÿ„ÿªÿãÿ‡ÿÿ»ÿ~ÿªÿƒÿUÿžÿƒÿÇÿ·ÿÿzÿªÿUÿzÿªÿªÿwÿUÿzÿŠÿÿoÿãÿÿ‡ÿ±ÿÿ{ÿ®ÿ9ÿrÿ­ÿãÿÿ©ÿ„ÿÿÿ‡ÿ{ÿÿÿ¾ÿƒÿÿÿãÿvÿãÿÿÿªÿ€ÿzÿUÿÿÿ®ÿzÿãÿÿÿÿ¹ÿ‡ÿ±ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿªÿ‹ÿoÿãÿÿÿªÿyÿÿUÿÿÿ‚ÿ—ÿ9ÿÿªÿhÿŠÿÿ9ÿÇÿÿÿÿ‡ÿ¯ÿÿªÿ“ÿÿÿµÿ²ÿÿ—ÿÿÿ½ÿ«ÿÿ‹ÿoÿÿ£ÿƒÿ9ÿyÿÿ¢ÿ«ÿÿ‚ÿ—ÿªÿµÿÿhÿŠÿªÿÿUÿÿªÿŒÿ‡ÿÿºÿÇÿãÿÿUÿµÿ²ÿÿ—ÿÿrÿ½ÿÿlÿ‹ÿrÿÇÿ£ÿƒÿÿyÿÿÿÇÿ{ÿÇÿÿ•ÿµÿÿÿŠÿ{ÿUÿÿãÿzÿŒÿÿÿºÿ†ÿ“ÿÿÿÿ²ÿvÿªÿÿÿUÿ«ÿlÿ‹ÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[—ÿDÿUÿÿÿUÿÿ+ÿ3ÿÿÿŽÿ5ÿÿŽÿÿÿ‰ÿÿÿÿãÿ–ÿãÿÿªÿ#ÿYÿÿªÿ:ÿ@ÿÿuÿQÿUÿªÿ ÿãÿÿ—ÿrÿãÿÿKÿrÿÿrÿ3ÿ>ÿÿWÿŽÿÿ4ÿÿ†ÿ‰ÿUÿÿÿnÿ–ÿªÿ-ÿrÿ#ÿªÿ^ÿYÿrÿ@ÿUÿuÿQÿÿÿ ÿrÿ™ÿ9ÿDÿÿÿKÿÿÿ+ÿ3ÿÿãÿWÿŽÿÿ4ÿ.ÿÿãÿÿrÿÿnÿ–ÿªÿÿªÿ#ÿYÿÿÿ:ÿ@ÿ9ÿÿÿUÿÿ ÿUÿÿÿÇÿÿÿãÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ªÿqÿzÿãÿÿÿÿŒÿ|ÿsÿÿÿUÿ{ÿwÿªÿÿ9ÿsÿÿÿÿãÿPÿÇÿÿãÿ`ÿ€ÿÿ‚ÿlÿÇÿÿRÿwÿÿ}ÿdÿÿmÿqÿÿpÿVÿÿUÿŒÿrÿsÿŽÿzÿXÿ{ÿwÿUÿ`ÿZÿUÿÿUÿNÿcÿªÿŒÿªÿgÿUÿ€ÿGÿÇÿlÿÿLÿRÿUÿwÿªÿdÿxÿÿqÿrÿãÿVÿŽÿãÿŒÿ|ÿÿXÿzÿÿ{ÿwÿÿrÿZÿãÿÿ‰ÿNÿãÿÿªÿdÿgÿÿÿGÿ‚ÿlÿÿÿªÿwÿwÿÿÿÿmÿqÿzÿrÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿwÿƒÿ{ÿÿÿÿŠÿvÿŒÿUÿÿÿ‚ÿ~ÿÇÿÿUÿzÿvÿÿÿŠÿ~ÿªÿÿrÿ‚ÿÇÿÿ‡ÿ„ÿÿãÿnÿÇÿrÿ{ÿƒÿÿ’ÿ9ÿƒÿ{ÿÇÿãÿ€ÿÿvÿŒÿªÿ…ÿŽÿ‚ÿªÿ|ÿÿÿzÿUÿvÿ‚ÿªÿ~ÿªÿ‚ÿUÿ‚ÿªÿ~ÿ‡ÿ9ÿÿãÿãÿnÿÿ{ÿãÿÇÿ’ÿÿƒÿ{ÿÿ|ÿ€ÿÿvÿŒÿÿÇÿwÿªÿÿ|ÿÿÿãÿvÿvÿÿªÿ~ÿwÿÿÿ‚ÿsÿ~ÿÿÿãÿ„ÿnÿÿÿÿƒÿxÿ’ÿÿÿÿrÿ|ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿãÿ˜ÿŒÿrÿÿÿãÿ¨ÿ|ÿªÿÿÿ…ÿ¨ÿãÿÿUÿ€ÿ£ÿÿÿ‰ÿ‡ÿUÿÿÿ­ÿUÿUÿvÿ¿ÿÿdÿqÿÿ“ÿŠÿrÿãÿ„ÿ9ÿ˜ÿŒÿÿ|ÿªÿ’ÿ¨ÿÿ­ÿÿ‚ÿ…ÿ¨ÿ¤ÿ9ÿ{ÿªÿ£ÿ’ÿªÿ‰ÿ‡ÿÿÿÿŽÿpÿ‹ÿªÿ¿ÿrÿdÿqÿrÿ“ÿ9ÿšÿãÿÇÿzÿŽÿãÿ¥ÿãÿrÿ’ÿãÿÿ­ÿyÿÿ…ÿ¨ÿÿªÿ{ÿ€ÿÿUÿ›ÿ‰ÿÿÿ¬ÿÿ­ÿÿÿvÿ¿ÿŸÿÿÿªÿ“ÿŠÿšÿÿÿÿãÿŒÿ¥ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[Lÿ9ÿÿÿrÿ†ÿpÿãÿÿÿŽÿ‡ÿ©ÿãÿÿÿgÿkÿãÿÿUÿ†ÿWÿÿÿ ÿáÿÿ9ÿœÿ‰ÿÿãÿƒÿãÿUÿÛÿÇÿÿcÿLÿÿ³ÿ9ÿ›ÿ†ÿŽÿvÿÿŽÿŽÿrÿ©ÿŽÿ‘ÿ€ÿªÿkÿrÿøÿãÿ†ÿWÿªÿŒÿ ÿáÿUÿÿUÿ‰ÿ˜ÿ†ÿƒÿÿÇÿãÿÇÿaÿrÿLÿÿ³ÿÆÿÿ†ÿpÿÿÿ¤ÿÿ‡ÿ©ÿÿãÿ€ÿUÿUÿùÿøÿÿUÿWÿ[ÿÿÿáÿ{ÿÿÿÿ˜ÿ†ÿãÿÿÿãÿÇÿaÿªÿÿÿ9ÿÆÿ›ÿãÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[oÿiÿãÿÿÿÿ{ÿVÿ9ÿÿÿÿÿ?ÿ,ÿÿÿpÿoÿ'ÿÿUÿÿÿÿÿ}ÿ~ÿÿªÿTÿAÿÿfÿ‰ÿUÿãÿBÿŽÿãÿoÿªÿãÿYÿrÿwÿ{ÿªÿ9ÿ9ÿvÿxÿÿ?ÿ,ÿ‚ÿUÿpÿªÿ'ÿbÿlÿÿÿ^ÿ6ÿ}ÿŽÿ†ÿÿTÿªÿ‡ÿfÿŽÿzÿUÿBÿÇÿwÿoÿŽÿ:ÿÇÿÿwÿÇÿÇÿ9ÿŽÿãÿxÿŽÿrÿ,ÿÇÿÿpÿoÿUÿUÿlÿÿÿUÿ6ÿ}ÿ~ÿÿÿTÿAÿªÿÿÿzÿ1ÿBÿ9ÿÿÿãÿ:ÿYÿrÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[rÿOÿuÿ{ÿ9ÿÿÿãÿ„ÿDÿŽÿÿÿŒÿ‚ÿZÿÿÿEÿŒÿzÿÿUÿ ÿyÿÿUÿ~ÿŠÿÿãÿ}ÿãÿÿŠÿXÿÿŠÿ-ÿÿvÿOÿÿ{ÿ9ÿoÿ#ÿ9ÿ„ÿãÿrÿtÿŽÿŒÿ‚ÿZÿUÿ{ÿEÿŒÿzÿ)ÿzÿ ÿyÿgÿNÿªÿŠÿŽÿƒÿUÿ`ÿwÿŠÿXÿrÿŠÿÿ|ÿrÿOÿuÿ9ÿ5ÿoÿÿ€ÿ„ÿ9ÿrÿtÿÿŒÿ‚ÿÿƒÿ{ÿŽÿÿzÿ)ÿÿUÿyÿgÿNÿÿUÿ1ÿƒÿUÿÿrÿŠÿXÿÿÿÿÿvÿOÿuÿÿÿÿrÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿˆÿlÿÿãÿÿÿUÿ—ÿwÿãÿÿÿãÿ‚ÿlÿUÿÿãÿƒÿwÿÿUÿ}ÿ‘ÿÿUÿqÿqÿÿtÿÿªÿŽÿyÿrÿrÿwÿ„ÿÇÿ‹ÿãÿãÿÿÇÿyÿ‚ÿ~ÿ—ÿªÿzÿUÿ‡ÿªÿ‚ÿªÿpÿ‚ÿˆÿƒÿwÿqÿŠÿ}ÿ‘ÿzÿXÿqÿãÿ‚ÿUÿÿªÿ|ÿyÿrÿŒÿÇÿ„ÿrÿ‹ÿãÿlÿÿŽÿyÿ‚ÿÿ—ÿwÿÿuÿ‡ÿÿ‚ÿlÿÇÿÿˆÿƒÿÿUÿŠÿ}ÿ‘ÿÿrÿqÿqÿÿÿãÿoÿ|ÿãÿÿÿªÿ„ÿuÿŽÿÿÿÿnÿyÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿrÿbÿ€ÿ”ÿUÿÿÿoÿ_ÿoÿÿÿªÿ¼ÿ›ÿªÿÿÇÿuÿŸÿÿUÿˆÿ_ÿÿªÿ|ÿÿÿ‰ÿÿUÿaÿ]ÿªÿ¨ÿ¥ÿUÿ”ÿYÿÿbÿ9ÿ”ÿ”ÿUÿ†ÿrÿ_ÿoÿlÿÇÿÿ¼ÿ›ÿ]ÿ`ÿiÿuÿŸÿ ÿ–ÿˆÿ_ÿ{ÿdÿ|ÿÿãÿ‰ÿUÿ`ÿŽÿ]ÿªÿ¨ÿÇÿ¯ÿ”ÿUÿaÿbÿrÿ”ÿãÿãÿ†ÿrÿãÿoÿÿãÿÿ¼ÿÿ]ÿ`ÿÿUÿŸÿ ÿãÿÿªÿ{ÿdÿÿÿšÿ‰ÿÿUÿÿÿ_ÿ¨ÿ¥ÿÿÿÿÇÿbÿ€ÿ”ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[˜ÿÇÿÿÿÿãÿ«ÿŒÿãÿÿÿªÿ¼ÿ†ÿŽÿÿUÿÿšÿãÿÿªÿvÿµÿÿUÿ­ÿˆÿÿãÿ‰ÿãÿ9ÿÿ‹ÿÿ€ÿ‚ÿÿ}ÿ˜ÿrÿyÿ†ÿãÿgÿ«ÿŒÿãÿŽÿŽÿ„ÿ¼ÿ†ÿ‡ÿœÿ–ÿÿšÿªÿÿœÿvÿµÿÿ{ÿ­ÿˆÿ…ÿÿ‰ÿzÿšÿÇÿ‹ÿrÿ€ÿrÿ ÿ9ÿ˜ÿãÿyÿ†ÿrÿgÿ«ÿ9ÿÿãÿŽÿ„ÿªÿÇÿ‡ÿœÿÿÿšÿUÿªÿœÿvÿãÿÿãÿ­ÿãÿÿUÿ‰ÿzÿšÿÿÿŽÿ€ÿ‚ÿªÿÿÿUÿyÿ†ÿ¯ÿÇÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[}ÿ„ÿ²ÿrÿÿÿUÿ•ÿ¨ÿ‚ÿUÿÿÿžÿºÿ‚ÿÿÿ…ÿÇÿ™ÿÿUÿ}ÿ§ÿUÿUÿÿyÿÿãÿªÿªÿªÿ|ÿŠÿUÿ¯ÿuÿªÿ}ÿãÿ²ÿžÿrÿ€ÿUÿ•ÿ¨ÿãÿzÿÇÿmÿªÿºÿ‚ÿyÿãÿ…ÿÇÿ™ÿ‹ÿŒÿ}ÿ§ÿÁÿƒÿÿÇÿ{ÿŸÿªÿ†ÿÿ|ÿŠÿ¬ÿ¯ÿuÿ~ÿ}ÿŽÿ²ÿžÿÇÿ€ÿŽÿ•ÿ¨ÿÿzÿãÿrÿžÿºÿÿyÿ}ÿUÿªÿ™ÿ‹ÿãÿÿ§ÿÁÿªÿÿªÿ{ÿŸÿãÿÿÿ|ÿŠÿ¬ÿÿÿÿ}ÿ„ÿ²ÿžÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿrÿ4ÿ_ÿ‡ÿÿÿÿãÿ}ÿ‚ÿãÿÿÿãÿÿ~ÿÿÿ?ÿTÿ‘ÿÿUÿNÿ=ÿUÿUÿ|ÿšÿÿ9ÿvÿŽÿãÿuÿãÿÇÿ‰ÿãÿ~ÿÿ9ÿ_ÿ‡ÿãÿ–ÿ[ÿ-ÿªÿ‚ÿÇÿ‘ÿãÿ-ÿÿ~ÿãÿmÿÇÿTÿ‘ÿuÿÿNÿ=ÿyÿ„ÿ|ÿšÿãÿ9ÿªÿ‚ÿãÿuÿŽÿeÿUÿ€ÿ~ÿÿ4ÿ9ÿ‡ÿ‡ÿãÿ[ÿUÿ}ÿ‚ÿ9ÿ‘ÿWÿÿÿ~ÿUÿªÿ?ÿTÿªÿÿÿNÿrÿÿ„ÿ|ÿšÿªÿÿUÿ‚ÿÿÇÿÿÿŽÿ€ÿ~ÿÿrÿÿÿŽÿ–ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÇÿTÿ†ÿãÿÿÿ9ÿ€ÿ”ÿNÿUÿÿrÿGÿUÿªÿÿãÿJÿ`ÿUÿÿfÿdÿªÿUÿAÿHÿÿ,ÿkÿUÿ\ÿÿŽÿ%ÿbÿrÿCÿÿãÿTÿÇÿ"ÿªÿkÿ)ÿ€ÿ”ÿNÿ…ÿdÿ1ÿGÿUÿWÿÇÿ|ÿJÿ`ÿÿVÿfÿdÿƒÿ“ÿAÿHÿVÿÇÿkÿÇÿ\ÿÇÿ‚ÿ%ÿbÿªÿCÿÿ“ÿTÿrÿ"ÿãÿãÿ)ÿÿ”ÿNÿUÿdÿ1ÿrÿªÿWÿ’ÿªÿÿ`ÿÿÿÿdÿƒÿ“ÿÿÿãÿ,ÿkÿÿÿÿ‚ÿ%ÿbÿãÿÿÿrÿTÿ†ÿ"ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[tÿxÿÿÿÿwÿuÿ|ÿªÿÿÿÇÿzÿjÿ|ÿÿÿ[ÿ‡ÿ€ÿÿrÿhÿzÿªÿÿxÿfÿªÿUÿ}ÿgÿÿJÿbÿÿƒÿeÿ9ÿyÿtÿÇÿ|ÿªÿgÿwÿÇÿ|ÿrÿ€ÿãÿ}ÿzÿjÿ|ÿ…ÿ`ÿ[ÿ‡ÿ€ÿ{ÿeÿhÿzÿŒÿmÿxÿfÿkÿ^ÿ}ÿgÿÿJÿbÿwÿƒÿªÿ|ÿyÿtÿxÿrÿ‚ÿãÿwÿuÿŽÿrÿUÿ]ÿ}ÿªÿjÿ|ÿªÿªÿ[ÿ‡ÿªÿUÿeÿhÿÿŽÿmÿxÿfÿÿ9ÿ}ÿgÿãÿÿÿãÿƒÿeÿ|ÿÿÿÿ|ÿ‚ÿgÿŽÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[¥ÿzÿÿãÿÿÿ9ÿ…ÿÿxÿUÿÿÿƒÿÿ{ÿrÿÿãÿÿ‹ÿÿÿŒÿ†ÿãÿÿ ÿ€ÿãÿUÿ‡ÿnÿÿ‰ÿ‚ÿ9ÿ}ÿ‹ÿŽÿ¥ÿzÿÿwÿÇÿƒÿãÿ…ÿãÿxÿ‘ÿ„ÿ~ÿƒÿÿ{ÿšÿŽÿzÿÿ‹ÿŒÿ‰ÿŒÿ†ÿƒÿxÿ ÿ€ÿÿtÿ‡ÿnÿÿ‰ÿ‚ÿƒÿãÿ‹ÿwÿ¥ÿzÿÿwÿãÿƒÿUÿ…ÿãÿxÿ‘ÿãÿãÿƒÿªÿãÿšÿŽÿŽÿªÿ‹ÿŒÿÿãÿ†ÿƒÿÇÿÿãÿÿtÿ9ÿÿrÿ‰ÿ‚ÿƒÿŽÿÿÿ¥ÿzÿÿãÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿŽÿeÿ„ÿ¸ÿãÿÿÿŽÿ°ÿ‹ÿ}ÿÿÿªÿ©ÿÿ”ÿÿUÿƒÿÐÿªÿÿyÿŽÿ³ÿÿqÿ×ÿãÿUÿ›ÿ…ÿÿ¢ÿˆÿªÿ¼ÿ‚ÿtÿ¦ÿÇÿ„ÿ¸ÿ“ÿ«ÿãÿwÿ°ÿ‹ÿ}ÿ·ÿ‹ÿ‹ÿ©ÿÿ”ÿ¤ÿxÿƒÿÐÿwÿ´ÿyÿŽÿ³ÿÿqÿ×ÿÿ{ÿ›ÿ…ÿ…ÿ¢ÿˆÿƒÿ¼ÿ‚ÿtÿÇÿeÿãÿ¸ÿÇÿ«ÿ|ÿãÿ°ÿ‹ÿãÿ·ÿªÿãÿ©ÿÿUÿãÿxÿãÿÿwÿ´ÿyÿUÿÿÿqÿãÿÿÿ›ÿ…ÿ…ÿãÿÿÿÇÿ‚ÿtÿ¦ÿÿÿÿrÿ«ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÇÿdÿzÿ ÿÇÿÿÿÇÿUÿ@ÿÇÿÿÿ„ÿ„ÿeÿrÿÿ‡ÿžÿ¦ÿÿãÿ`ÿ_ÿÿuÿ»ÿñÿUÿuÿTÿUÿrÿ¢ÿãÿ•ÿãÿ—ÿƒÿqÿdÿãÿ ÿ¶ÿÄÿ‹ÿXÿUÿ@ÿÿ×ÿ”ÿ„ÿ„ÿeÿ‰ÿnÿ‡ÿžÿ¦ÿÅÿÑÿ`ÿ_ÿUÿuÿ»ÿñÿ’ÿuÿTÿWÿrÿ¢ÿ‹ÿ•ÿãÿ—ÿƒÿqÿdÿzÿ ÿªÿÄÿ‹ÿãÿUÿãÿãÿ×ÿ”ÿUÿ„ÿeÿªÿUÿ‡ÿžÿ¦ÿÿªÿ`ÿ_ÿUÿÿÇÿñÿ’ÿuÿ9ÿÿŽÿ¢ÿ‹ÿ•ÿÿÿÿŽÿdÿzÿ ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ŽÿÇÿÿÿÿÇÿeÿÿ0ÿÇÿÿÿ[ÿÿ#ÿrÿÿŽÿÿ%ÿ5ÿÿªÿvÿ#ÿ9ÿªÿ‡ÿmÿrÿãÿ1ÿ*ÿUÿ}ÿ,ÿªÿÿXÿ‡ÿŽÿªÿÿ#ÿaÿˆÿeÿÿ0ÿÿnÿÿ[ÿÿ#ÿ"ÿtÿhÿÿ%ÿ5ÿcÿÿvÿ#ÿÿ.ÿ‡ÿmÿhÿ'ÿ1ÿ*ÿ|ÿ}ÿ,ÿ!ÿÿXÿ‡ÿŽÿ2ÿÿ#ÿÇÿˆÿªÿÿ0ÿªÿnÿãÿãÿÿ#ÿUÿtÿhÿUÿÇÿ5ÿcÿãÿÿ#ÿÿ.ÿÿUÿhÿ'ÿ1ÿªÿÿUÿ,ÿ!ÿÿ9ÿÿÿŽÿÿ#ÿaÿŽÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[IÿŒÿ~ÿãÿÿÿÿãÿtÿ€ÿ[ÿŽÿÿ9ÿyÿ„ÿbÿÿÿ~ÿ†ÿMÿrÿÿƒÿtÿªÿUÿrÿHÿÇÿªÿ‰ÿaÿUÿyÿƒÿÇÿUÿãÿIÿŒÿãÿ€ÿIÿÿWÿÿtÿ€ÿ[ÿ}ÿeÿƒÿyÿ„ÿbÿ\ÿ~ÿ~ÿ†ÿMÿ}ÿYÿƒÿtÿvÿPÿrÿHÿ€ÿ…ÿ‰ÿaÿUÿyÿƒÿ„ÿUÿ„ÿIÿŒÿ~ÿÇÿIÿÇÿWÿÿÇÿ€ÿãÿ}ÿeÿƒÿ9ÿ„ÿbÿÿ~ÿ~ÿ†ÿrÿŽÿYÿƒÿrÿÿPÿrÿHÿ€ÿÿÿaÿUÿyÿŽÿÿÿŽÿIÿŒÿ~ÿrÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿãÿŽÿ„ÿ}ÿÿÿÿÿãÿ‡ÿxÿ}ÿŽÿÿŽÿ|ÿ†ÿãÿÿrÿ~ÿ€ÿrÿÿãÿ†ÿsÿÿƒÿ‹ÿxÿªÿ‡ÿxÿUÿxÿƒÿãÿrÿãÿ“ÿŽÿ„ÿ}ÿÿ‚ÿ‹ÿˆÿ„ÿ‡ÿxÿ}ÿ„ÿ‚ÿÿ|ÿ†ÿ‹ÿvÿ…ÿ~ÿ€ÿrÿ|ÿ„ÿ†ÿsÿ€ÿƒÿ‹ÿxÿyÿ‡ÿxÿ€ÿxÿƒÿ‡ÿrÿÿ“ÿŽÿ„ÿ}ÿÿ‚ÿ‹ÿˆÿ„ÿ‡ÿxÿ}ÿrÿ‚ÿÿ9ÿ†ÿ‹ÿvÿÿ~ÿ€ÿrÿÿªÿ†ÿsÿ€ÿUÿÿãÿyÿ‡ÿÇÿÿÿÇÿ‡ÿrÿÿrÿÿÿÿrÿ‚ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÇÿ²ÿ‹ÿ‚ÿMÿ9ÿÿÿ”ÿ®ÿÿcÿrÿÿãÿšÿœÿªÿÿ_ÿnÿ[ÿŽÿŽÿµÿÿUÿWÿPÿiÿUÿ®ÿÿrÿ€ÿeÿTÿjÿkÿ“ÿ™ÿ²ÿ‹ÿ‚ÿMÿXÿ}ÿ­ÿ”ÿ®ÿÿcÿ`ÿnÿ‡ÿšÿœÿ—ÿ´ÿ_ÿnÿ[ÿkÿœÿµÿÿ®ÿWÿPÿiÿƒÿ®ÿÿ“ÿ€ÿeÿTÿjÿkÿ“ÿ™ÿ²ÿ‹ÿ‚ÿMÿXÿ}ÿ­ÿ”ÿŽÿÿãÿªÿnÿ‡ÿšÿUÿ—ÿ´ÿªÿ9ÿ[ÿkÿœÿÇÿÿÇÿWÿPÿãÿÿÿÇÿ“ÿ€ÿeÿ9ÿÿÿÿÇÿ²ÿ‹ÿ‚ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[zÿÇÿÿÿÿŽÿ‹ÿ´ÿÃÿŒÿrÿÿÿ¥ÿ®ÿºÿ€ÿrÿÿÉÿ®ÿÿ9ÿUÿ¯ÿ°ÿ¢ÿÿ}ÿ…ÿÇÿÇÿ¶ÿiÿŽÿ´ÿÆÿrÿ–ÿsÿzÿŽÿ«ÿ¹ÿ–ÿwÿ‹ÿ´ÿÃÿŒÿ}ÿ€ÿ§ÿ¥ÿ®ÿºÿ€ÿqÿ¾ÿÉÿ®ÿÿÿŽÿ¯ÿ°ÿ¢ÿ|ÿ}ÿ…ÿ´ÿ»ÿ¶ÿiÿ{ÿ´ÿÆÿ ÿ–ÿsÿzÿŽÿ«ÿ¹ÿ–ÿwÿ‹ÿ´ÿÃÿŒÿ}ÿªÿ§ÿÇÿ®ÿºÿ€ÿªÿãÿÉÿ®ÿÿãÿŽÿ¯ÿ°ÿÿŽÿ}ÿ…ÿ´ÿÿÿÇÿ{ÿ´ÿÆÿ9ÿÿÿUÿŽÿ«ÿ¹ÿ–ÿwÿrÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[{ÿxÿƒÿ€ÿrÿÿÿUÿwÿÿ|ÿ‚ÿŽÿÿÿ|ÿ~ÿ…ÿuÿ9ÿrÿÿqÿ„ÿÿãÿ~ÿ‚ÿŽÿãÿ~ÿ„ÿUÿ…ÿÿªÿwÿˆÿªÿuÿ{ÿxÿƒÿ€ÿ…ÿwÿ{ÿ‡ÿwÿÿ|ÿ‚ÿ}ÿ{ÿ‚ÿ|ÿ~ÿ…ÿuÿsÿÿÿqÿ„ÿ‚ÿzÿ~ÿ‚ÿƒÿ|ÿ~ÿ„ÿpÿ…ÿÿzÿwÿˆÿ|ÿuÿ{ÿxÿƒÿ€ÿ…ÿwÿ{ÿ‡ÿwÿÿãÿ‚ÿŽÿ{ÿ‚ÿ|ÿrÿ…ÿuÿÇÿŽÿÿqÿ„ÿrÿUÿ~ÿ‚ÿƒÿ9ÿÿÇÿpÿ…ÿÿÿÿÿªÿuÿ{ÿxÿƒÿãÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿªÿ3ÿÿbÿŽÿãÿÿÿÿ‡ÿqÿfÿÿÇÿÿ9ÿÿ$ÿ>ÿÿ9ÿÇÿgÿÿÇÿ9ÿzÿŒÿcÿUÿ-ÿ5ÿrÿˆÿ"ÿãÿ.ÿdÿªÿ~ÿ4ÿ3ÿÿbÿŽÿdÿÿ$ÿ?ÿ‡ÿqÿfÿÿ,ÿ'ÿwÿÿ$ÿ>ÿÿeÿvÿgÿÿ=ÿ&ÿzÿŒÿcÿ0ÿ-ÿ5ÿ’ÿˆÿ"ÿ&ÿ.ÿdÿƒÿ~ÿ4ÿ3ÿÿbÿŽÿdÿÿ$ÿ?ÿ‡ÿªÿfÿÿ,ÿÇÿwÿÿ9ÿ>ÿÿeÿãÿÿÿ=ÿ&ÿrÿÿãÿ0ÿ-ÿ5ÿÿÿÿ&ÿ.ÿdÿƒÿ~ÿŽÿÿÿÿªÿdÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿ9ÿ)ÿtÿbÿ¥ÿœÿrÿÿÿÇÿƒÿ„ÿÿãÿÿ9ÿXÿaÿEÿ’ÿÿ–ÿwÿZÿrÿãÿCÿ£ÿŽÿÿ^ÿÇÿhÿPÿuÿdÿ¡ÿhÿƒÿaÿVÿ)ÿtÿbÿ¥ÿœÿ~ÿ=ÿgÿ)ÿƒÿ„ÿÿpÿcÿ\ÿXÿaÿEÿ’ÿkÿ–ÿwÿZÿ/ÿXÿCÿ£ÿ—ÿÿ^ÿBÿhÿPÿuÿdÿ¡ÿhÿƒÿaÿVÿ)ÿtÿbÿ¥ÿœÿ~ÿ=ÿgÿ)ÿƒÿ„ÿÿãÿÇÿ\ÿXÿaÿÿãÿkÿ–ÿŽÿÿãÿXÿCÿãÿÿÿrÿBÿhÿPÿuÿdÿ9ÿÿÿrÿVÿ)ÿtÿbÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[Šÿãÿ9ÿÿÿÿŽÿ|ÿˆÿoÿ{ÿãÿÿÿŽÿ…ÿÿrÿƒÿ9ÿUÿfÿŽÿÿÿUÿ{ÿmÿÿUÿuÿÿ„ÿÇÿwÿ‡ÿãÿ[ÿtÿpÿŠÿnÿxÿ~ÿÿiÿ„ÿ|ÿˆÿoÿ{ÿ~ÿÿiÿ†ÿ…ÿÿrÿƒÿzÿ…ÿfÿŽÿÿÿrÿ{ÿmÿÿpÿuÿÿ„ÿhÿwÿ‡ÿˆÿ[ÿtÿpÿŠÿnÿxÿ~ÿÿiÿ„ÿ|ÿˆÿoÿ{ÿ~ÿÿiÿ†ÿªÿÿrÿƒÿŽÿÇÿfÿŽÿÇÿÿãÿ{ÿmÿãÿÿÿÇÿ„ÿhÿwÿ‡ÿÇÿÿÿ9ÿŠÿnÿxÿ~ÿãÿ9ÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[¦ÿƒÿÿÿãÿ9ÿÿÿÿãÿ¦ÿƒÿ”ÿ‰ÿŽÿÿrÿ ÿ€ÿÿ}ÿrÿrÿ£ÿuÿ‰ÿãÿŽÿ|ÿ¬ÿãÿÇÿzÿ¥ÿãÿÿ|ÿ‚ÿœÿ‚ÿ¦ÿƒÿÿÿ·ÿ~ÿœÿˆÿŠÿ‡ÿ¦ÿƒÿ”ÿ‰ÿ‚ÿÿ¤ÿ ÿ€ÿÿ}ÿ¦ÿŠÿ£ÿuÿ‰ÿÿ©ÿ|ÿ¬ÿvÿ€ÿzÿ¥ÿ™ÿÿ|ÿ‚ÿœÿ‚ÿ¦ÿƒÿÿÿ·ÿ~ÿœÿˆÿŠÿ‡ÿ¦ÿƒÿ”ÿãÿ‚ÿÿ¤ÿãÿŽÿÿ}ÿãÿÿ£ÿuÿ‰ÿÇÿÿUÿ¬ÿvÿ€ÿzÿ¥ÿrÿÿÿÇÿœÿ‚ÿ¦ÿƒÿUÿÿÿÿŽÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿrÿ¦ÿvÿsÿÿãÿ9ÿÿÿrÿÿÍÿÀÿÃÿ~ÿ9ÿÿÌÿ¸ÿ£ÿ~ÿŽÿrÿÖÿ¼ÿwÿãÿÇÿÃÿªÿªÿ•ÿÿ¶ÿºÿÆÿ‘ÿ}ÿmÿ»ÿÀÿ¦ÿvÿsÿÿÈÿÂÿ£ÿrÿ’ÿÿÍÿÀÿÃÿ~ÿÿ¼ÿÌÿ¸ÿ£ÿ~ÿÿ¸ÿÖÿ¼ÿwÿÿ¦ÿÃÿªÿ²ÿ•ÿÿ¶ÿºÿÆÿ‘ÿ}ÿmÿ»ÿÀÿ¦ÿvÿsÿÿÈÿÂÿ£ÿrÿ’ÿÿÍÿÀÿÃÿrÿÿ¼ÿÌÿ9ÿ£ÿ~ÿÿÇÿÿŽÿwÿÿ¦ÿÃÿãÿÿÿªÿ¶ÿºÿÆÿ‘ÿrÿÿÿÿªÿvÿsÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ãÿUÿÿÿÿrÿPÿFÿÿXÿãÿ9ÿÿÿÇÿRÿSÿzÿÿŽÿÿãÿMÿRÿ4ÿÇÿŽÿ—ÿÿyÿãÿ!ÿ_ÿsÿãÿ”ÿBÿZÿ[ÿLÿZÿ]ÿ:ÿnÿ•ÿtÿPÿFÿÿXÿŸÿ„ÿžÿZÿÿRÿSÿzÿÿFÿYÿyÿMÿRÿ4ÿ%ÿ’ÿ—ÿÿyÿ<ÿ!ÿ_ÿsÿžÿ”ÿBÿZÿ[ÿLÿZÿ]ÿ:ÿnÿ•ÿtÿPÿFÿÿXÿŸÿ„ÿžÿZÿÇÿRÿSÿzÿUÿFÿYÿyÿŽÿÿãÿ%ÿ’ÿ—ÿÿŽÿÿrÿ_ÿsÿžÿ”ÿŽÿÿÿUÿãÿ]ÿ:ÿnÿ•ÿtÿÇÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[[ÿCÿzÿ…ÿªÿÿÿÿrÿBÿcÿ|ÿ;ÿãÿ9ÿÿUÿiÿGÿ„ÿmÿ$ÿ9ÿŽÿvÿtÿ?ÿãÿŽÿ%ÿoÿŽÿ^ÿqÿrÿXÿ|ÿuÿ6ÿ“ÿ[ÿCÿzÿ…ÿ'ÿwÿ"ÿkÿƒÿBÿcÿ|ÿ;ÿsÿ{ÿTÿpÿiÿGÿ„ÿmÿ$ÿyÿ1ÿvÿtÿ?ÿkÿ„ÿ%ÿoÿŽÿ^ÿqÿrÿXÿ|ÿuÿ6ÿ“ÿ[ÿCÿzÿ…ÿ'ÿwÿ"ÿkÿƒÿBÿcÿ|ÿ;ÿãÿ{ÿTÿªÿiÿGÿ„ÿŽÿrÿyÿ1ÿvÿtÿ?ÿ9ÿ9ÿ%ÿoÿŽÿ^ÿŽÿÿÿŽÿuÿ6ÿ“ÿ[ÿCÿzÿŽÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[rÿ’ÿ~ÿÿzÿjÿ†ÿƒÿrÿÿÿUÿ‡ÿqÿƒÿ‚ÿãÿ9ÿÿªÿyÿgÿ}ÿÿªÿrÿÿPÿzÿrÿãÿ|ÿÿTÿmÿƒÿ€ÿwÿiÿ~ÿdÿ’ÿ~ÿÿzÿjÿ†ÿƒÿxÿŽÿ[ÿ€ÿ‡ÿqÿƒÿ‚ÿfÿhÿŠÿ‰ÿyÿgÿ}ÿÿvÿwÿÿPÿzÿrÿpÿ|ÿÿTÿmÿƒÿ€ÿwÿiÿ~ÿdÿ’ÿ~ÿÿzÿjÿ†ÿƒÿxÿŽÿ[ÿ€ÿ‡ÿqÿÇÿ‚ÿfÿhÿrÿÇÿyÿgÿ}ÿÿÇÿÿÇÿPÿzÿrÿªÿÿÿªÿmÿƒÿ€ÿwÿiÿ~ÿUÿÿÿÿÿŽÿ†ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿªÿ‰ÿ}ÿÿƒÿˆÿŸÿÇÿUÿÿUÿ{ÿÿ ÿ‡ÿãÿ9ÿ9ÿ–ÿ„ÿyÿ“ÿ„ÿŽÿÿ’ÿuÿÿ‚ÿ¤ÿ›ÿ„ÿ}ÿ…ÿÿ|ÿ–ÿ~ÿÿ€ÿ›ÿ‰ÿ}ÿÿƒÿˆÿŸÿ„ÿÿ†ÿ„ÿ{ÿÿ ÿ‡ÿrÿ‡ÿ–ÿ–ÿ„ÿyÿ“ÿ„ÿ–ÿÿ’ÿuÿÿ‚ÿ¤ÿ›ÿ„ÿ}ÿ…ÿÿ|ÿ–ÿ~ÿÿ€ÿ›ÿ‰ÿ}ÿÿƒÿˆÿŸÿ„ÿÿ†ÿ„ÿ{ÿªÿ ÿ‡ÿrÿ‡ÿ–ÿrÿªÿyÿ“ÿ„ÿÇÿÿUÿuÿÿ‚ÿ¤ÿ›ÿ„ÿÇÿ9ÿÿÿÿªÿÿ€ÿ›ÿ‰ÿ}ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[©ÿ»ÿŽÿÿÿÿÿ9ÿÇÿ¬ÿmÿZÿ}ÿzÿ’ÿªÿÿUÿ}ÿ_ÿXÿšÿãÿ9ÿŽÿ„ÿ}ÿ[ÿQÿÇÿãÿŽÿ¶ÿ‘ÿfÿÿ_ÿvÿÊÿ”ÿ©ÿ»ÿRÿPÿ‹ÿpÿËÿ¬ÿ’ÿ¬ÿmÿZÿ}ÿzÿ’ÿÅÿ¬ÿ–ÿ}ÿ_ÿXÿšÿŽÿÑÿ˜ÿ„ÿ}ÿ[ÿQÿšÿ™ÿŽÿ¶ÿ‘ÿfÿÿ_ÿvÿÊÿ”ÿ©ÿ»ÿRÿPÿ‹ÿpÿËÿ¬ÿ’ÿ¬ÿmÿZÿ}ÿzÿÇÿÅÿ¬ÿ–ÿ}ÿãÿŽÿšÿŽÿÑÿãÿ9ÿŽÿ[ÿQÿšÿ™ÿŽÿ¶ÿŽÿÿÿÿªÿÊÿ”ÿ©ÿ»ÿRÿPÿ‹ÿŽÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[‚ÿvÿ®ÿ ÿnÿtÿÇÿUÿÿÿÿUÿãÿŒÿ·ÿ‡ÿÿpÿ†ÿUÿ9ÿãÿƒÿÿ¢ÿãÿUÿãÿŒÿeÿ¥ÿÁÿÿrÿ€ÿ„ÿ¸ÿ•ÿÿÿ‚ÿvÿ®ÿ ÿnÿtÿtÿ•ÿ«ÿdÿjÿ{ÿ{ÿŒÿ·ÿ‡ÿÿpÿ†ÿ¾ÿ¬ÿnÿƒÿÿ¢ÿ®ÿyÿ|ÿŒÿeÿ¥ÿÁÿÿrÿ€ÿ„ÿ¸ÿ•ÿÿÿ‚ÿvÿ®ÿ ÿnÿtÿtÿ•ÿ«ÿdÿjÿ{ÿ{ÿŒÿ·ÿ‡ÿÿÇÿ†ÿ¾ÿ¬ÿnÿrÿÇÿ¢ÿ®ÿyÿ|ÿŒÿeÿUÿÿ9ÿªÿ€ÿ„ÿ¸ÿ•ÿÿÿ‚ÿrÿÿÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿrÿãÿvÿ|ÿbÿ8ÿƒÿwÿªÿÿÿÿŽÿ}ÿ~ÿ|ÿ-ÿMÿ~ÿªÿrÿãÿ5ÿ…ÿ}ÿãÿªÿYÿ=ÿÿÿÿˆÿ0ÿZÿˆÿ€ÿˆÿyÿ1ÿdÿÿvÿ|ÿbÿ8ÿƒÿwÿ€ÿyÿZÿ%ÿwÿ}ÿ~ÿ|ÿ-ÿMÿ~ÿŠÿ‚ÿ\ÿ5ÿ…ÿ}ÿ}ÿ~ÿYÿ=ÿÿÿÿˆÿ0ÿZÿˆÿ€ÿˆÿyÿ1ÿdÿÿvÿ|ÿbÿ8ÿƒÿwÿ€ÿyÿZÿ%ÿwÿ}ÿ~ÿ|ÿÇÿMÿ~ÿŠÿ‚ÿ\ÿ5ÿÇÿÿUÿªÿYÿ=ÿÿÿÿˆÿãÿrÿÿÿÿÿUÿªÿÿvÿ|ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ªÿUÿÿÿÿÿÿÿŽÿXÿhÿƒÿ;ÿƒÿ€ÿãÿUÿÿÿªÿyÿ3ÿ‚ÿ1ÿ€ÿrÿÇÿãÿŠÿDÿwÿãÿZÿwÿ~ÿLÿ†ÿ…ÿJÿ{ÿhÿ]ÿŒÿÿ.ÿÿ1ÿrÿÿXÿhÿƒÿ;ÿƒÿ€ÿUÿhÿnÿMÿ€ÿyÿ3ÿ‚ÿ1ÿ€ÿrÿOÿvÿŠÿDÿwÿtÿZÿwÿ~ÿLÿ†ÿ…ÿJÿ{ÿhÿ]ÿŒÿÿ.ÿÿ1ÿrÿÿXÿhÿƒÿ;ÿƒÿ€ÿUÿhÿnÿMÿ€ÿyÿ3ÿ‚ÿŽÿUÿÇÿOÿvÿŠÿDÿwÿtÿãÿUÿÿÿÿUÿªÿ{ÿhÿ]ÿŒÿÿ.ÿÿ1ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[8ÿ‚ÿ…ÿœÿ—ÿ€ÿÇÿŽÿ9ÿÿÿÿUÿªÿ^ÿhÿ?ÿVÿ—ÿ—ÿªÿUÿUÿÇÿSÿwÿ—ÿbÿÿ~ÿOÿ]ÿ\ÿMÿnÿŒÿ†ÿ€ÿAÿWÿ8ÿ‚ÿ…ÿœÿ—ÿ€ÿlÿPÿVÿyÿrÿ–ÿÿ€ÿ^ÿhÿ?ÿVÿ—ÿ—ÿœÿ‰ÿFÿWÿSÿwÿ—ÿbÿÿ~ÿOÿ]ÿ\ÿMÿnÿŒÿ†ÿ€ÿAÿWÿ8ÿ‚ÿ…ÿœÿ—ÿ€ÿlÿPÿVÿyÿrÿ–ÿÿ€ÿ^ÿhÿ?ÿVÿ—ÿ—ÿªÿÇÿFÿWÿSÿwÿ—ÿbÿÇÿUÿÿÿrÿãÿnÿŒÿ†ÿ€ÿAÿWÿ8ÿªÿUÿÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[Uÿªÿ‘ÿŠÿ}ÿqÿxÿ•ÿÿgÿŸÿÿ‚ÿªÿUÿÿÿUÿÇÿÿƒÿ|ÿŽÿuÿŒÿŽÿrÿ¥ÿ{ÿwÿ„ÿƒÿzÿ’ÿ™ÿyÿ„ÿkÿÿqÿ›ÿ^ÿ‘ÿŠÿ}ÿqÿxÿ•ÿÿgÿŸÿÿ‚ÿrÿ|ÿrÿ ÿÿ~ÿÿƒÿ|ÿŽÿuÿŒÿhÿsÿ¥ÿ{ÿwÿ„ÿƒÿzÿ’ÿ™ÿyÿ„ÿkÿÿqÿ›ÿ^ÿ‘ÿŠÿ}ÿqÿxÿ•ÿÿgÿŸÿÿ‚ÿrÿ|ÿrÿ ÿÿ~ÿÿƒÿ|ÿŽÿuÿªÿUÿÿŽÿ{ÿwÿ„ÿƒÿzÿ’ÿ™ÿyÿªÿ9ÿÿÿÿÿUÿrÿªÿqÿxÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿÿÿ9ÿŽÿÇÿ®ÿƒÿnÿ­ÿÿ‰ÿ©ÿ„ÿ€ÿ¯ÿªÿUÿÿŽÿ¾ÿƒÿˆÿžÿƒÿvÿÇÿÿzÿªÿ€ÿzÿ¢ÿŽÿwÿ®ÿzÿŠÿ—ÿoÿrÿ¹ÿ‡ÿ±ÿ‚ÿ{ÿ®ÿƒÿnÿ­ÿÿ‰ÿ©ÿ„ÿ€ÿ¯ÿ‡ÿ{ÿ»ÿ~ÿ¾ÿƒÿˆÿžÿƒÿvÿ·ÿÿzÿªÿ€ÿzÿ¢ÿŽÿwÿ®ÿzÿŠÿ—ÿoÿrÿ¹ÿ‡ÿ±ÿ‚ÿ{ÿ®ÿƒÿnÿ­ÿÿ‰ÿ©ÿ„ÿ€ÿ¯ÿ‡ÿªÿrÿªÿ¾ÿƒÿˆÿžÿƒÿvÿ·ÿªÿUÿÿÿÿUÿªÿwÿ®ÿzÿŠÿ—ÿoÿrÿ¹ÿ‡ÿ±ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿˆÿ½ÿ«ÿlÿ‹ÿªÿUÿUÿÿÿÿÿUÿªÿ{ÿ‚ÿ—ÿ•ÿµÿŸÿhÿŠÿ{ÿÿªÿŽÿªÿŒÿ‡ÿ¯ÿºÿ†ÿ“ÿÿ~ÿµÿ²ÿvÿ—ÿÿˆÿ½ÿ«ÿlÿ‹ÿoÿ‰ÿ£ÿƒÿ‚ÿyÿÿ¢ÿ«ÿ{ÿ‚ÿ—ÿ•ÿµÿŸÿhÿŠÿ{ÿÿÇÿÿzÿŒÿ‡ÿ¯ÿºÿ†ÿ“ÿÿ~ÿµÿ²ÿvÿ—ÿÿˆÿ½ÿ«ÿlÿ‹ÿoÿ‰ÿ£ÿƒÿ‚ÿyÿÿ¢ÿ«ÿ{ÿ‚ÿÇÿ•ÿµÿŸÿhÿŠÿ{ÿÿŽÿ9ÿUÿªÿÇÿ¯ÿºÿ†ÿ“ÿÿ~ÿµÿ²ÿvÿ—ÿÿˆÿ½ÿªÿUÿ9ÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[—ÿDÿÿÿKÿÿÿ+ÿ3ÿ>ÿPÿWÿ5ÿÿ4ÿªÿrÿUÿÿUÿªÿnÿ–ÿ’ÿ-ÿ#ÿ#ÿYÿ^ÿYÿ:ÿ@ÿ9ÿuÿQÿÿÿ ÿ„ÿ™ÿ—ÿDÿÿÿKÿÿÿ+ÿ3ÿ>ÿPÿWÿ5ÿÿ4ÿ.ÿ†ÿ‰ÿÿÿÿnÿ–ÿ’ÿ-ÿ#ÿ#ÿYÿ^ÿYÿ:ÿ@ÿ9ÿuÿQÿÿÿ ÿ„ÿ™ÿ—ÿDÿÿÿKÿÿÿ+ÿ3ÿ>ÿPÿWÿ5ÿÿ4ÿ.ÿ†ÿ‰ÿÿãÿÇÿªÿ–ÿ’ÿ-ÿ#ÿ#ÿYÿ^ÿYÿ:ÿ@ÿ9ÿuÿQÿÇÿŽÿUÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿÿUÿªÿªÿ|ÿsÿXÿzÿXÿ{ÿwÿŠÿ`ÿZÿsÿÿ‰ÿNÿcÿPÿªÿÇÿgÿ`ÿ€ÿGÿ‚ÿlÿeÿLÿRÿwÿwÿ}ÿdÿxÿmÿqÿzÿpÿVÿ|ÿUÿŒÿ|ÿsÿXÿzÿXÿ{ÿwÿŠÿ`ÿZÿsÿÿ‰ÿNÿcÿPÿŒÿdÿgÿ`ÿ€ÿGÿ‚ÿlÿeÿLÿRÿwÿwÿ}ÿdÿxÿmÿqÿzÿpÿVÿ|ÿUÿŒÿ|ÿsÿXÿzÿXÿ{ÿwÿŠÿ`ÿZÿsÿÿ‰ÿNÿcÿPÿŒÿdÿgÿ`ÿªÿUÿÿÿÿÿÿUÿrÿªÿÇÿxÿmÿqÿzÿpÿVÿ|ÿUÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[xÿ’ÿªÿªÿªÿUÿUÿUÿÿÿÿÿÿÿUÿUÿªÿãÿƒÿzÿvÿvÿ‚ÿŠÿ~ÿwÿ‚ÿrÿ‚ÿsÿ~ÿ‡ÿ„ÿÿ„ÿnÿnÿrÿ{ÿƒÿxÿ’ÿwÿƒÿ{ÿÿ|ÿ€ÿŠÿvÿŒÿƒÿ…ÿwÿ‚ÿ~ÿ|ÿÿƒÿzÿvÿvÿ‚ÿŠÿ~ÿwÿ‚ÿrÿ‚ÿsÿ~ÿ‡ÿ„ÿÿ„ÿnÿnÿrÿ{ÿƒÿxÿ’ÿwÿƒÿ{ÿÿ|ÿ€ÿŠÿvÿŒÿƒÿ…ÿwÿ‚ÿ~ÿ|ÿÿƒÿzÿªÿrÿUÿUÿUÿªÿªÿrÿ‚ÿsÿ~ÿ‡ÿ„ÿÿ„ÿnÿnÿrÿ{ÿƒÿxÿ’ÿwÿƒÿ{ÿªÿªÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[šÿˆÿ„ÿzÿ˜ÿŒÿ¥ÿ|ÿ{ÿ’ÿ¨ÿ|ÿ­ÿyÿ‚ÿ…ÿ¨ÿ¤ÿˆÿ{ÿªÿªÿªÿUÿªÿãÿªÿ¬ÿÿ­ÿpÿ‹ÿvÿ¿ÿŸÿdÿqÿŠÿ“ÿŠÿšÿˆÿ„ÿzÿ˜ÿŒÿ¥ÿ|ÿ{ÿ’ÿ¨ÿ|ÿ­ÿyÿ‚ÿ…ÿ¨ÿ¤ÿˆÿ{ÿ€ÿ£ÿ’ÿ›ÿ‰ÿ‡ÿÿ¬ÿÿ­ÿpÿ‹ÿvÿ¿ÿŸÿdÿqÿŠÿ“ÿŠÿšÿˆÿ„ÿzÿ˜ÿŒÿ¥ÿ|ÿ{ÿ’ÿ¨ÿ|ÿ­ÿyÿ‚ÿ…ÿ¨ÿ¤ÿˆÿ{ÿ€ÿ£ÿ’ÿ›ÿ‰ÿ‡ÿÿ¬ÿÿ­ÿpÿ‹ÿªÿªÿUÿUÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿUÿUÿUÿªÿªÿªÿÿ¤ÿŽÿ‡ÿ©ÿ×ÿ‘ÿ€ÿgÿkÿùÿøÿÿÿ†ÿWÿ[ÿŒÿ ÿáÿ{ÿÿœÿ‰ÿ˜ÿ†ÿƒÿ“ÿÇÿÛÿÇÿaÿcÿLÿ’ÿ³ÿÆÿ›ÿ†ÿpÿvÿÿ¤ÿŽÿ‡ÿ©ÿ×ÿ‘ÿ€ÿgÿkÿùÿøÿÿÿ†ÿWÿ[ÿŒÿ ÿáÿ{ÿÿœÿ‰ÿ˜ÿ†ÿƒÿ“ÿÇÿÛÿÇÿaÿcÿLÿ’ÿ³ÿÆÿ›ÿ†ÿpÿvÿÿ¤ÿŽÿ‡ÿ©ÿ×ÿ‘ÿ€ÿgÿkÿÇÿªÿãÿªÿªÿUÿUÿªÿªÿªÿªÿªÿ‰ÿ˜ÿ†ÿƒÿ“ÿÇÿÛÿÇÿaÿcÿLÿ’ÿ³ÿÆÿ›ÿ†ÿpÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇUUŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUŽÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[UÿUÿUÿUÿUÿUÿUÿUÿUÿUÿUÿUÿUÿÿÿÿUªÿÿÿUÿUÿrÿªª9ÿ~ÿ†ÿnÿTÿAÿ‡ÿfÿ‰ÿzÿ1ÿBÿŽÿwÿoÿiÿ:ÿYÿÿU9ÿiÿvÿxÿÿ?‚ÿÿpÿoÿ'ÿbÿlÿÿÿ^ÿ6ÿ}ÿ~ÿ†ÿnÿTÿAÿ‡ÿfÿ‰ÿÿBÿŽÿwÿoÿiÿ:ÿYÿÿwÿ{ÿVÿ9ÿiÿvÿxÿÿ?ÿ,ÿ‚ÿÿpÿoÿ'ÿbÿlÿUª^ÿ6ÿ}ÿ~ÿ†ÿnÿTÿAÿ‡ÿfÿ‰ÿzÿ1ÿBÿŽÿwÿoÿiÿ:ÿYÿ+Oÿ{ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUªÿÿÿÿÿÿÿÿÿÿÿÿÿªUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªª9UÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUªÿÿÿ[[vÿOÿuÿ{ÿ5ÿoÿ#ÿ€ÿ„ÿDÿrÿtÿ/ÿŒÿ‚ÿZÿƒUªEÿŒÿzÿ)ÿzÿ ÿyÿgÿNÿ~ÿŠÿ1ÿƒÿ}ÿ`ÿwÿŠÿXÿÿŠÿ-ÿ|ÿvÿOÿuÿ{ÿ5ÿoÿ#UU„ÿDÿrÿtÿ/ÿŒÿ‚ÿZÿƒÿ{ÿEÿŒÿzÿ)ÿzÿ ÿyÿgÿNÿ~ÿŠÿ1ÿƒÿ}ÿ`ÿwÿŠÿXÿÿŠÿ-ÿ|ÿvÿOÿuÿ{ÿ5ÿoÿ#ÿ€ÿ„ÿDÿrÿtÿ/ÿŒÿ‚ÿZÿƒÿ{ÿEÿÇÿªÿªÿªUªªÿªÿUÿUÿUÿUÿUÿUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿ㪪ªªªãÿÿÿÿÿ㪪ªã㪪ªãÿÿÿÿÿªª9rªªªªªãÿÿÿÿÿªªªªªÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿǪªªªªÿÿÿÿÿÿÿÿÿÿÿUUÿÿÿÿÿÿÿÿǪªªªªÿÿÿÿÿÿÿÿÿǪªªªªÿÿÿÿÿÿÿÿÿÿªªªªªãªãÿÿÿÿǪªªªªÿÿÿÿÿÿÿªªªÇÿªªªÇÿÿÿÿÿÿÿÿǪªªÿǪªªÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªª9rªªªªªãÿÿÿÿÿÿÿªªªªãÿÿÿÿÿÿÿÿÿǪªªªãªÇÿÿÿªª9rªªª[[UÿUUŽUÿUÿ9999Uÿ9ÿªÿ9ÿU9ÿªÿªÿqÿ‚ÿtÿÿoÿ|ÿyÿrÿmU.LjÿlÿÿnÿyUU~ÿ—ÿwÿzÿ'‚ÿlÿpÿ‚Ç-Ulÿ}ÿ‘ÿzÇMÿÿoUÿŒÿwÿ„ÿULÇnÿyÿ‚ÿ*U-ÿŒÿ‚ÿlÿpÿ‚ÿˆÿƒÿwªXÿqÿqÇ+9>ÿ|ÿyÿrÿ/.ÿˆÿ[[ÿÿÿ9UUU9UÿÿÿÇUUU9ÇÿÿÿUU9UUUUUÇÿÿÿÿÿUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªUUUUªÿÿÿÿÿÿÿÿUUÿÿÿÿÿÿÿÿŽUU9ÿÿÿÿÿÿÿªUUUUªÿÿÿÿÿrUUUªÿÿÿÿŽUU9ÿÿÿÿÿÿÿU9UUUrÿÿÿÇUUUŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUU9UUUUUÇÿÿÿÿªUU99ãÿÿÿÿÇUUU9UÿÿÿUU9UUU[[ÿªãÿUãÿªÿªÿ9Ç_ÿc9U’ÿÿ¼Uª]ÿ`ÿiÿuÿŸÿ ÿ–ÿ- ÿ{ÿdÿ|ÿÿšÿ‰ÿÿ`ÿaÿ]ÿUªpÿ¥ÿ¯Ç;ÿaÿbÿ€ÿ”UU’ÿ†ÿoÿ_ÿoÿlªÿ¼ÿ›ÿ]ã@ªiÿuÿ|ª–ÿˆÿ_Çdÿ|Çgÿ‰ÿÿ`ÿAÿ_ÿ¨ÿ¥ÿ¯ª(ÿaÿ,ÿ”ÿ1!ª†ÿWr%ÿlÿ’ÿÿ¼ÿ›ÿ]ÿ`ÿªÿuÿªUªUÿUÿŽÿªÿªŽLÇÇÿzªÿaÿ]Ur¨ÿ¥ã'1ÿYÿaÿ!Uÿ”ÿ[[ÿÿÿÿÿÿÿÿÿÿUUÿÿÿÿÿUªÿÿÿÿUUÿÿÿÿÿUªÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÿÿÿÿÿÿÿÿUUÿÿÿÿÿÿÿÿÿÿÿªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÿÿÿÿÿUÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÿÿÿÿÿÿÿÿªUÿÿÿÿªÿÿªUÿÿÿÿªUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUªÿÿÿÿÿÿÿÿÿUUÿÿÿÿÿÿªÿÿÿÿUÿÿÿÿÿÿÿÿÿÿÿÿUªÿÿÿ[[˜ÿ€ªQ99ÿŒÿÿ/_ÿ„ÿ¼UU‡ÿœÿ–UªšÿlÿªÿªÿªÿUÿªÿL9ÿˆÿ…ÿÿ‰ÿzÿšÿÿ‹ÿ—ÿ€ÿtªkQÿ†ÿ¯ÿgÿ«UUÿŽÿŽÿ„ÿ¼ÿ†ªœÿ–ÿÿšãHªªÿ{ÿ­9r[Çzÿšÿÿ‹ÿeÿ‚ÿ ÿ}ÿ˜ªUyÿ†ÿuÿ«ªÿŽÿŽÿ,?ÿ†ÿ‡ÿœÿ–ÿÿšÿlÿÿœÿvUªÿ{ÿ­ÿˆÿYÿUÿUŽ9ªÿÿÿÿÿ[[ÿÿÿUÿÿÿÿÿUªÿÿÿÿUUÿÿÿÿÿUªÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªÿÿÿÿÿÿÿÿUUÿÿÿÿÿÿÿÿÿÿÿªÿÿÿÿÿÿÿªªÿÿÿÿÿãªÇÿÿÿÿÿÿÿªÿÿÿÿÿÿÿÿªUÿÿÿÿªÿÿªÿÿÿÿÿÿUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUªÿÿÿÿÿÿÿÿªÿÿÿÿÿª9ŽÿÿÿÿÿUªÿÿÿ[[}ÿ,ǪÿªÿÿUÿÿÿÿUUUÿUÿªUª…ÿÇÿwª‹ÿŒÿ}ÿ§ÿ@,ÿÿyÿ{ÿŸÿªÿ†ÿÿ|ÿŠÿ¬ÿÿ~ÿ}ÿwÿžÿ…ÿ€ÿuUU¨ÿ‚ÿzÿ‹ÿmÿžª‚ÿyÿ}ÿ…9™ÿ‹ÿŒª§ÿÁÿ^ÿyÿ{Ž$ÿ†ÿÿ|ÿ\ÿ¯ÿuÿ~ÿ}ªU²ÿžÿYÿuÇ8ÿ‚ÿzª$ÿžÿºÿ‚ÿyÿ}ÿ…ÿÇÿãÿªÿUUªUÿªÿ…ªÿ^9Žÿªÿ†ÿÿ|ÿŠÿ9:ÿuÿ~Ç*ª²ÿžÿ,Uÿªÿ[[ÿÿUUÿÿÿÿUUÿÿÿÿÿUªÿÿÿÿUUÿÿÿÿÿU9ÿÿÿUŽÿÿÿÿÿÿÿUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÿÿÿÇUªÿÿÿÿÿÿÿÿUUÿÿÿÿÿÿÿÿÿÿÿªÿÿÿÿÿÿÿªÿÿÿÇUªÿÿÿÿ9Žÿÿÿÿ9ÿÿÿÿÿÿÿªÿÿÿÿÿÿÿÿªUÿÿÿÿªÿÿÿUÇÿÿŽ9UÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU9ÿÿÿUŽÿÿU9ŽÿÿÿÿÇUUÿÿÿUUÿÿÿÿŽªÿÿÿÿU9ÿÿÿ[[ÿUU Uªÿ#UŽzÿ0ÿÿ~U$U0ÿuÿ9U/U UBU)ÿšÿSÿ9ÿvÿ‚ÿÿuÿ9ÿU+U Ž_ÿ‡U-U2U*U‚ÿzŽ0U9*U*Uqÿm9U099+ÿ=ÿ)U3UÿvÿHU+UU"U.Ç€ÿ*9ÿ_ŽUuÿG9*U0ÿWÿ-ÿÿ~ÿ‘ÿmÿ?ÿTÿ‘ÿuUU,ÿªÇUUŽUÿ9U+Uã4ÿ_ÿ-U2U[[ÿÿÿUŽUÿÿªUÿÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ9ÇUÿÿÿÿÿÿUªÿÿÇ9ÇUÿÿÿ99UŽÿÿÿÿUªÿÿÿÿUªÿÿÿ9ŽUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿÿÿUUÿÿÿUU9UÿÿÿÿÿÿÿU[[CÿCÿiªbª8ÿiªªEÿ_ªªUÇ”ÿ4ªYªqÿŽÿUÿǪ9ǪÿJÿ`ÿª9ªDªCªWªbÿAÿHÿVÿ,ÿkÿ~ÿ\ÿÿ‚ãªAª4ÿ-ªiÇ“ÿTªYªª.ªGªª€ÿ”Ç4ªYªCª!ª/ªLÿWÿ‚ªSª1Ç`ªªCÿfÿCªuãbª+ªHÿVÿ,ÿTªTª=ªiªWªãbÿ-ª-ªiÿ“Ç8ªYªÿEÿ_ªªUÿ1ÿ…ÿdÿ1ÿGÿUÿWÿ’ÿÇÿrÿUÿªÇ9ªDÇdÿƒÿ“ÿAÿ8ª9ªªGÇ~ÿ\ÿ…ªBÿªªÿÿÿÿÿªª[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿã9Uÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[tÿxÿ|ÿ‚ÿgÿªÿŽÿUÿÿÿÿÿÿUÿªÿ…ÿ`ÿ[ÿ‡ÿ€ÿ{ÿeÿhÿãÿªÿªÿÇÿfÿkÿ^ÿ}ÿgÿÿJÿbÿwÿƒÿeÿ|ÿyÿtÿxÿ|ÿ‚ÿgÿwÿuÿ|ÿrÿ€ÿ]ÿ}ÿzÿjÿ|ÿ…ÿ`ÿ[ÿ‡ÿ€ÿ{ÿeÿhÿzÿŒÿmÿxÿfÿkÿ^ÿ}ÿgÿÿJÿbÿwÿƒÿeÿ|ÿyÿtÿxÿ|ÿ‚ÿgÿwÿuÿ|ÿrÿ€ÿ]99_ÿjÿ|ÿ…ÿ`ÿÇÿ‡ÿ€ÿ{ÿeÿhÿzÿŒÿmÿªÿUÿÿUÿªÿÇÿÿJÿbÿwÿƒÿeÿ|ÿyÿtÿxÿ|ÿÇÿŽÿUÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿÿÿÿUÿªÿxÿ‘ÿ„ÿ~ÿƒÿÿ{ÿšÿãÿŽÿ9ÿ9ÿªÿ‰ÿŒÿ†ÿƒÿxÿ ÿ€ÿÿtÿ‡ÿnÿÿ‰ÿ‚ÿƒÿ}ÿ‹ÿwÿ¥ÿzÿÿwÿŽÿƒÿÿ…ÿÿxÿ‘ÿ„ÿ~ÿƒÿÿ{ÿšÿŽÿzÿÿ‹ÿŒÿ‰ÿŒÿ†ÿƒÿxÿ ÿ€ÿÿtÿ‡ÿnÿÿ‰ÿ‚ÿƒÿ}ÿ‹ÿwÿ¥ÿzÿÿwÿŽÿƒÿÿ…ÿ,ÿ~ÿƒÿÿ{ÿšÿŽÿzÿÿªÿrÿªÿŒÿ†ÿƒÿxÿ ÿ€ÿÿtÿªÿUÿÿÿÿ9ÿUÿªÿwÿ¥ÿzÿÿwÿŽÿƒÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[9ÿŽÿÇÿ„ÿ¸ÿ“ÿ«ÿ|ÿwÿ°ÿ‹ÿÇÿrÿÿÿÿŽÿ”ÿ¤ÿxÿƒÿÐÿwÿ´ÿyÿªÿÇÿÿqÿ×ÿÿ{ÿ›ÿ…ÿ…ÿ¢ÿˆÿƒÿ¼ÿ‚ÿtÿ¦ÿeÿ„ÿ¸ÿ“ÿ«ÿ|ÿwÿ°ÿ‹ÿ}ÿ·ÿ‹ÿ‹ÿ©ÿÿ”ÿ¤ÿxÿƒÿÐÿwÿ´ÿyÿŽÿ³ÿÿqÿ×ÿÿ{ÿ›ÿ…ÿ…ÿ¢ÿˆÿƒÿ¼ÿ‚ÿtÿ¦ÿeÿ„ÿ¸ÿ“ÿ«ÿ|ÿwÿ°ÿ‹ÿ}ÿ·ÿ‹ÿ‹ÿ©ÿãÿ”ÿ¤ÿxÿƒÿÐÿwÿ´ÿªÿUÿÿŽÿqÿ×ÿÿ{ÿ›ÿ…ÿ…ÿ¢ÿˆÿŽÿ9ÿÿÿÿÿÿUÿªÿãÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[‘ÿ—ÿƒÿqÿdÿÇÿrÿÿÿÿÿUÿÇÿÿ×ÿ”ÿ„ÿ„ÿeÿ‰ÿÇÿUÿUÿãÿÅÿÑÿ`ÿ_ÿUÿãÿ»ÿñÿ’ÿuÿTÿWÿrÿ¢ÿ‹ÿ•ÿ‘ÿ—ÿƒÿqÿdÿzÿ ÿ¶ÿÄÿ‹ÿXÿUÿ@ÿÿ×ÿ”ÿ„ÿ„ÿeÿ‰ÿnÿ‡ÿžÿ¦ÿÅÿÑÿ`ÿ_ÿUÿuÿ»ÿñÿ’ÿuÿTÿWÿrÿ¢ÿ‹ÿ•ÿ‘ÿ—ÿƒÿqÿdÿzÿ ÿ¶ÿÄÿ‹ÿXÿUÿ@ÿÿ×ÿ”ÿ„ÿ„ÿeÿrÿŽÿ‡ÿžÿ¦ÿÅÿÑÿ`ÿ_ÿÇÿUÿÿÿrÿãÿTÿWÿrÿ¢ÿ‹ÿ•ÿ‘ÿ—ÿªÿUÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[Uÿÿÿÿÿÿ9ÿªÿ0ÿÿnÿÿ[ÿÿ#ÿ"ÿŽÿÿ9ÿªÿ5ÿcÿÿvÿ#ÿãÿŽÿãÿmÿhÿ'ÿãÿ*ÿ|ÿ}ÿ,ÿ!ÿÿXÿ‡ÿŽÿ2ÿÿ#ÿaÿˆÿeÿÿ0ÿÿnÿÿ[ÿÿ#ÿ"ÿtÿhÿÿ%ÿ5ÿcÿÿvÿ#ÿÿ.ÿ‡ÿmÿhÿ'ÿ1ÿ*ÿ|ÿ}ÿ,ÿ!ÿÿXÿ‡ÿŽÿ2ÿÿ#ÿaÿˆÿeÿÿ0ÿÿnÿÿ[ÿÿ#ÿ"ÿtÿhÿÿ%ÿ5ÿcÿªÿÿŽÿÿ.ÿ‡ÿmÿhÿ'ÿ1ÿãÿUÿÿÿÿUÿªÿ‡ÿŽÿ2ÿÿ#ÿaÿˆÿeÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿrÿãÿIÿÿWÿÿtÿ€ÿ[ÿªÿUÿÿÿŽÿbÿ\ÿ~ÿ~ÿ†ÿMÿŽÿ9ÿãÿtÿvÿPÿãÿªÿ€ÿ…ÿ‰ÿaÿUÿyÿƒÿ„ÿUÿ„ÿIÿŒÿ~ÿ€ÿIÿÿWÿÿtÿ€ÿ[ÿ}ÿeÿƒÿyÿ„ÿbÿ\ÿ~ÿ~ÿ†ÿMÿ}ÿYÿƒÿtÿvÿPÿrÿHÿ€ÿ…ÿ‰ÿaÿUÿyÿƒÿ„ÿUÿ„ÿIÿŒÿ~ÿ€ÿIÿÿWÿÿtÿ€ÿ[ÿ}ÿeÿƒÿyÿ„ÿbÿ\ÿ~ÿÇÿÇÿMÿ}ÿYÿƒÿãÿUÿÿrÿHÿ€ÿ…ÿ‰ÿaÿUÿyÿãÿUÿÿÿÿÿUÿªÿIÿÿWÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿ“ÿŽÿ„ÿ}ÿÿãÿUÿÿÿÿrÿ}ÿ„ÿ‚ÿÿ|ÿ†ÿÇÿ9ÿUÿãÿ€ÿrÿ|ÿãÿUÿãÿ€ÿƒÿ‹ÿxÿãÿ‡ÿxÿ€ÿxÿƒÿ‡ÿrÿÿ“ÿŽÿ„ÿ}ÿÿ‚ÿ‹ÿˆÿ„ÿ‡ÿxÿ}ÿ„ÿ‚ÿÿ|ÿ†ÿ‹ÿvÿ…ÿ~ÿ€ÿrÿ|ÿ„ÿ†ÿsÿ€ÿƒÿ‹ÿxÿyÿ‡ÿxÿ€ÿxÿƒÿ‡ÿrÿÿ“ÿŽÿ„ÿ}ÿÿ‚ÿ‹ÿˆÿ„ÿ‡ÿxÿ}ÿ„ÿ‚ÿÿÇÿªÿ‹ÿvÿ…ÿ~ÿªÿrÿ|ÿ„ÿ†ÿsÿ€ÿŽÿÿÿUÿãÿxÿ€ÿxÿƒÿ‡ÿrÿÿrÿÿÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[jÿkÿªÿÿÿÿÿUÿÇÿ}ÿ­ÿ”ÿ®ÿÿcÿrÿÿUÿšÿœÿ—ÿ´ÿãÿ9ÿŽÿkÿœÿµÿÿãÿªÿPÿiÿƒÿ®ÿÿ“ÿ€ÿeÿTÿjÿkÿ“ÿ™ÿ²ÿ‹ÿ‚ÿMÿXÿ}ÿ­ÿ”ÿ®ÿÿcÿ`ÿnÿ‡ÿšÿœÿ—ÿ´ÿ_ÿnÿ[ÿkÿœÿµÿÿ®ÿWÿPÿiÿƒÿ®ÿÿ“ÿ€ÿeÿTÿjÿkÿ“ÿ™ÿ²ÿ‹ÿ‚ÿMÿXÿ}ÿ­ÿ”ÿ®ÿÿcÿ`ÿnÿ‡ÿšÿUÿãÿ´ÿ_ÿnÿ[ÿŽÿUÿãÿÿ®ÿWÿPÿÇÿ9ÿÿÿUÿÇÿeÿTÿjÿkÿ“ÿ™ÿ²ÿŽÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿªÿwÿ‹ÿ´ÿÃÿŒÿ}ÿªÿÿÿUÿºÿ€ÿqÿ¾ÿãÿ9ÿ9ÿÿŽÿ¯ÿ°ÿ¢ÿŽÿÇÿ…ÿ´ÿ»ÿ¶ÿiÿ{ÿ´ÿÆÿ ÿ–ÿsÿzÿŽÿ«ÿ¹ÿ–ÿwÿ‹ÿ´ÿÃÿŒÿ}ÿ€ÿ§ÿ¥ÿ®ÿºÿ€ÿqÿ¾ÿÉÿ®ÿÿÿŽÿ¯ÿ°ÿ¢ÿ|ÿ}ÿ…ÿ´ÿ»ÿ¶ÿiÿ{ÿ´ÿÆÿ ÿ–ÿsÿzÿŽÿ«ÿ¹ÿ–ÿwÿ‹ÿ´ÿÃÿŒÿ}ÿ€ÿ§ÿ¥ÿ®ÿºÿªÿqÿ¾ÿÉÿ®ÿŽÿUÿŽÿ¯ÿ°ÿ¢ÿ|ÿrÿÿªÿ»ÿ¶ÿiÿ{ÿ´ÿUÿÿÿÿUÿÇÿ«ÿ¹ÿ–ÿwÿ‹ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[rÿxÿƒÿ€ÿ…ÿwÿ{ÿãÿUÿÿÿUÿ}ÿ{ÿ‚ÿ|ÿãÿ9ÿÿªÿÿÿqÿ„ÿãÿ9ÿ~ÿ‚ÿƒÿ|ÿÇÿ„ÿpÿ…ÿÿzÿwÿˆÿ|ÿuÿ{ÿxÿƒÿ€ÿ…ÿwÿ{ÿ‡ÿwÿÿ|ÿ‚ÿ}ÿ{ÿ‚ÿ|ÿ~ÿ…ÿuÿsÿÿÿqÿ„ÿ‚ÿzÿ~ÿ‚ÿƒÿ|ÿ~ÿ„ÿpÿ…ÿÿzÿwÿˆÿ|ÿuÿ{ÿxÿƒÿ€ÿ…ÿwÿ{ÿ‡ÿwÿÿ|ÿ‚ÿ}ÿ{ÿ‚ÿ|ÿ~ÿ…ÿŽÿãÿÿÿqÿãÿÿrÿ~ÿ‚ÿƒÿ|ÿ~ÿUÿÿrÿÿzÿwÿˆÿ|ÿªÿÿÿÿÿ9ÿªÿ{ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[~ÿ4ÿ3ÿÿŽÿÿÿÿrÿ?ÿ‡ÿqÿfÿãÿ9ÿÿUÿÿ$ÿ>ÿÿeÿrÿUÿÿ=ÿ&ÿzÿrÿcÿ0ÿ-ÿ5ÿ’ÿˆÿ"ÿ&ÿ.ÿdÿƒÿ~ÿ4ÿ3ÿÿbÿŽÿdÿÿ$ÿ?ÿ‡ÿqÿfÿÿ,ÿ'ÿwÿÿ$ÿ>ÿÿeÿvÿgÿÿ=ÿ&ÿzÿŒÿcÿ0ÿ-ÿ5ÿ’ÿˆÿ"ÿ&ÿ.ÿdÿƒÿ~ÿ4ÿ3ÿÿbÿŽÿdÿÿ$ÿ?ÿ‡ÿqÿfÿÿ,ÿ'ÿãÿÿ$ÿ>ÿrÿŽÿvÿgÿÿ=ÿrÿÿªÿcÿ0ÿ-ÿ5ÿãÿ9ÿÿUÿãÿdÿƒÿ~ÿ4ÿÇÿ9ÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[Çÿ9ÿÿÿÿrÿbÿ¥ÿœÿ~ÿãÿ9ÿÿÿÇÿÿpÿcÿ\ÿÇÿÿŽÿ’ÿkÿ–ÿwÿ9ÿ/ÿXÿCÿãÿ—ÿÿ^ÿãÿhÿPÿuÿdÿ¡ÿhÿƒÿaÿVÿ)ÿtÿbÿ¥ÿœÿ~ÿ=ÿgÿ)ÿƒÿ„ÿÿpÿcÿ\ÿXÿaÿEÿ’ÿkÿ–ÿwÿZÿ/ÿXÿCÿ£ÿ—ÿÿ^ÿBÿhÿPÿuÿdÿ¡ÿhÿƒÿaÿVÿ)ÿtÿbÿ¥ÿœÿ~ÿ=ÿgÿ)ÿƒÿãÿÿpÿãÿŽÿXÿaÿEÿŽÿ9ÿ–ÿwÿZÿ/ÿãÿÿÿÇÿÿ^ÿBÿhÿÇÿÿÿÿªÿƒÿaÿVÿ)ÿtÿrÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿrÿ~ÿÿiÿ„ÿãÿ9ÿÿÿrÿÿiÿ†ÿ…ÿÿUÿÿÇÿ…ÿfÿŽÿãÿÿrÿ{ÿmÿãÿÇÿuÿÿŽÿhÿwÿ‡ÿˆÿ[ÿtÿpÿŠÿnÿxÿ~ÿÿiÿ„ÿ|ÿˆÿoÿ{ÿ~ÿÿiÿ†ÿ…ÿÿrÿƒÿzÿ…ÿfÿŽÿÿÿrÿ{ÿmÿÿpÿuÿÿ„ÿhÿwÿ‡ÿˆÿ[ÿtÿpÿŠÿnÿxÿ~ÿÿiÿ„ÿ|ÿˆÿoÿ{ÿ~ÿÇÿiÿ†ÿ…ÿªÿrÿƒÿÇÿŽÿfÿŽÿÿŽÿÿÇÿmÿÿpÿuÿUÿÿ9ÿwÿ‡ÿˆÿ[ÿtÿªÿÿÿÿŽÿÿiÿ„ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[¦ÿƒÿÿÿãÿ9ÿÿÿÿãÿ¦ÿƒÿ”ÿ‰ÿªÿÿÿãÿ€ÿÿ}ÿÇÿÿãÿuÿ‰ÿãÿŽÿ|ÿ¬ÿŽÿ€ÿzÿ¥ÿ™ÿÿ|ÿ‚ÿœÿ‚ÿ¦ÿƒÿÿÿ·ÿ~ÿœÿˆÿŠÿ‡ÿ¦ÿƒÿ”ÿ‰ÿ‚ÿÿ¤ÿ ÿ€ÿÿ}ÿ¦ÿŠÿ£ÿuÿ‰ÿÿ©ÿ|ÿ¬ÿvÿ€ÿzÿ¥ÿ™ÿÿ|ÿ‚ÿœÿ‚ÿ¦ÿƒÿÿÿ·ÿ~ÿœÿˆÿŠÿ‡ÿ¦ÿƒÿ”ÿ‰ÿªÿÿ¤ÿÇÿÇÿÿ}ÿŽÿŽÿ£ÿuÿ‰ÿÇÿÿrÿ¬ÿvÿ€ÿzÿÇÿÿÿrÿ‚ÿœÿ‚ÿ¦ÿƒÿŽÿÿÿÿUÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[mÿãÿ9ÿÿÿÿŽÿÈÿÂÿ£ÿrÿ’ÿ9ÿÿ9ÿÃÿ~ÿÿ¼ÿŽÿÿãÿ~ÿÿ¸ÿUÿ¼ÿwÿãÿrÿÃÿªÿ²ÿ•ÿÿ¶ÿºÿÆÿ‘ÿ}ÿmÿ»ÿÀÿ¦ÿvÿsÿÿÈÿÂÿ£ÿrÿ’ÿÿÍÿÀÿÃÿ~ÿÿ¼ÿÌÿ¸ÿ£ÿ~ÿÿ¸ÿÖÿ¼ÿwÿÿ¦ÿÃÿªÿ²ÿ•ÿÿ¶ÿºÿÆÿ‘ÿ}ÿmÿ»ÿÀÿ¦ÿvÿsÿÿÈÿÂÿ£ÿrÿ’ÿÿÍÿÀÿrÿ~ÿÿ¼ÿUÿ¸ÿ£ÿ~ÿrÿrÿÖÿ¼ÿwÿÇÿÿÿãÿ²ÿ•ÿÿ¶ÿ9ÿÿÿŽÿmÿ»ÿÀÿ¦ÿvÿrÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿ9ÿ•ÿtÿPÿFÿÿŽÿÿÿŽÿZÿÿRÿSÿrÿÿãÿYÿyÿMÿÿ4ÿ%ÿ’ÿ9ÿÿyÿ<ÿÇÿ_ÿsÿžÿÇÿBÿZÿ[ÿLÿZÿ]ÿ:ÿnÿ•ÿtÿPÿFÿÿXÿŸÿ„ÿžÿZÿÿRÿSÿzÿÿFÿYÿyÿMÿRÿ4ÿ%ÿ’ÿ—ÿÿyÿ<ÿ!ÿ_ÿsÿžÿ”ÿBÿZÿ[ÿLÿZÿ]ÿ:ÿnÿ•ÿtÿPÿFÿÿXÿÇÿ„ÿžÿÇÿÿRÿãÿrÿÿFÿYÿÿMÿRÿ4ÿ9ÿrÿ—ÿÿyÿãÿÿÿŽÿžÿ”ÿBÿZÿŽÿÿÿÿÇÿnÿ•ÿtÿPÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿªÿzÿ…ÿ'ÿwÿ"ÿ9ÿÿÿÇÿ|ÿ;ÿsÿ{ÿ9ÿÿÇÿGÿ„ÿmÿ9ÿÇÿ1ÿvÿŽÿrÿkÿ„ÿ%ÿŽÿŽÿ^ÿqÿªÿXÿ|ÿÇÿ6ÿ“ÿ[ÿCÿzÿ…ÿ'ÿwÿ"ÿkÿƒÿBÿcÿ|ÿ;ÿsÿ{ÿTÿpÿiÿGÿ„ÿmÿ$ÿyÿ1ÿvÿtÿ?ÿkÿ„ÿ%ÿoÿŽÿ^ÿqÿrÿXÿ|ÿuÿ6ÿ“ÿ[ÿCÿzÿ…ÿ'ÿwÿ"ÿkÿƒÿBÿcÿªÿ;ÿsÿrÿTÿpÿiÿ9ÿãÿmÿ$ÿŽÿrÿvÿtÿ?ÿÿrÿ%ÿoÿŽÿãÿÿÿ9ÿ|ÿuÿ6ÿ“ÿãÿÿÿÿ9ÿãÿ"ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[dÿ’ÿ~ÿÿŽÿÿÿÿãÿŽÿ[ÿ€ÿãÿÿÿÇÿfÿhÿŠÿ9ÿrÿgÿ}ÿãÿÿwÿÿPÿªÿãÿpÿ|ÿãÿãÿmÿƒÿãÿwÿªÿ~ÿdÿ’ÿ~ÿÿzÿjÿ†ÿƒÿxÿŽÿ[ÿ€ÿ‡ÿqÿƒÿ‚ÿfÿhÿŠÿ‰ÿyÿgÿ}ÿÿvÿwÿÿPÿzÿrÿpÿ|ÿÿTÿmÿƒÿ€ÿwÿiÿ~ÿdÿ’ÿ~ÿÿzÿjÿ†ÿªÿxÿŽÿãÿ€ÿªÿqÿƒÿªÿãÿhÿŠÿãÿÿgÿ}ÿÿÿŽÿÿPÿãÿÿ9ÿ|ÿÿTÿmÿÿÿÿÇÿ~ÿdÿ’ÿ~ÿrÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[–ÿãÿÿÿÿ9ÿ}ÿÿƒÿˆÿÇÿÿÿŽÿ„ÿ{ÿÿrÿÿrÿ‡ÿ–ÿÿŽÿyÿ“ÿ„ÿ9ÿÿ’ÿuÿŽÿ‚ÿ¤ÿãÿãÿ}ÿªÿÿ|ÿ–ÿ~ÿÿ€ÿ›ÿ‰ÿ}ÿÿƒÿˆÿŸÿ„ÿÿ†ÿ„ÿ{ÿÿ ÿ‡ÿrÿ‡ÿ–ÿ–ÿ„ÿyÿ“ÿ„ÿ–ÿÿ’ÿuÿÿ‚ÿ¤ÿ›ÿ„ÿ}ÿ…ÿÿ|ÿ–ÿ~ÿÿ€ÿ›ÿ‰ÿ}ÿÿªÿˆÿŸÿÇÿÿãÿãÿ{ÿÿUÿ‡ÿrÿ‡ÿÿªÿ„ÿyÿãÿÿÇÿÿ’ÿÇÿÿ9ÿ¤ÿ›ÿ„ÿ}ÿ9ÿÿÿrÿ~ÿÿ€ÿ›ÿÇÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿŽÿ‹ÿpÿËÿ¬ÿŽÿÿÿŽÿ}ÿzÿ’ÿrÿÿãÿ}ÿ_ÿrÿÿŽÿÑÿ˜ÿªÿŽÿ[ÿQÿšÿ9ÿŽÿ¶ÿªÿfÿÿrÿvÿÊÿ”ÿ©ÿ»ÿRÿPÿ‹ÿpÿËÿ¬ÿ’ÿ¬ÿmÿZÿ}ÿzÿ’ÿÅÿ¬ÿ–ÿ}ÿ_ÿXÿšÿŽÿÑÿ˜ÿ„ÿ}ÿ[ÿQÿšÿ™ÿŽÿ¶ÿ‘ÿfÿÿ_ÿvÿÊÿ”ÿ©ÿ»ÿRÿPÿ‹ÿpÿËÿ¬ÿ’ÿªÿmÿZÿªÿzÿ’ÿŽÿ¬ÿ–ÿÿ_ÿXÿšÿªÿÿ˜ÿ„ÿ}ÿrÿÿšÿ™ÿŽÿŽÿÿÿÿ_ÿvÿÊÿ9ÿÿÿÿãÿ‹ÿpÿËÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÇÿ®ÿ ÿnÿtÿrÿÿÿŽÿjÿ{ÿ{ÿŽÿÿŽÿÿpÿãÿÿŽÿnÿƒÿÿÿ®ÿyÿ|ÿãÿUÿ¥ÿÁÿUÿrÿ€ÿrÿ¸ÿ•ÿãÿÿ‚ÿvÿ®ÿ ÿnÿtÿtÿ•ÿ«ÿdÿjÿ{ÿ{ÿŒÿ·ÿ‡ÿÿpÿ†ÿ¾ÿ¬ÿnÿƒÿÿ¢ÿ®ÿyÿ|ÿŒÿeÿ¥ÿÁÿÿrÿ€ÿ„ÿ¸ÿ•ÿÿÿ‚ÿvÿ®ÿ ÿnÿtÿtÿ•ÿ«ÿdÿrÿ{ÿ{ÿrÿ·ÿ‡ÿÿpÿ†ÿrÿŽÿnÿƒÿÿÿrÿyÿ|ÿŒÿÿÿÁÿÿrÿrÿÿÿ•ÿÿÿ‚ÿrÿÿÿÿŽÿtÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ˆÿyÿ1ÿdÿ9ÿÿÿrÿ8ÿƒÿwÿŽÿÿ9ÿ%ÿwÿ}ÿÿÿ-ÿMÿ~ÿªÿÿ\ÿ5ÿ…ÿrÿªÿ~ÿYÿÿÿÿUÿˆÿ0ÿªÿˆÿ€ÿˆÿyÿ1ÿdÿÿvÿ|ÿbÿ8ÿƒÿwÿ€ÿyÿZÿ%ÿwÿ}ÿ~ÿ|ÿ-ÿMÿ~ÿŠÿ‚ÿ\ÿ5ÿ…ÿ}ÿ}ÿ~ÿYÿ=ÿÿÿÿˆÿ0ÿZÿˆÿ€ÿˆÿyÿ1ÿdÿÿvÿãÿbÿÇÿƒÿwÿrÿyÿZÿ9ÿwÿ}ÿÿ|ÿ-ÿãÿÿŠÿ‚ÿ\ÿŽÿÿãÿ}ÿ~ÿÇÿÿrÿÿÿˆÿ9ÿÿÿ€ÿˆÿyÿ1ÿrÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[hÿãÿÿÿÿrÿ1ÿrÿÿÇÿÿÿ;ÿƒÿ€ÿrÿÿªÿMÿ€ÿyÿÿªÿ1ÿ€ÿrÿÿvÿŠÿDÿÿtÿZÿUÿ~ÿLÿŽÿ…ÿJÿãÿhÿ]ÿŒÿÿ.ÿÿ1ÿrÿÿXÿhÿƒÿ;ÿƒÿ€ÿUÿhÿnÿMÿ€ÿyÿ3ÿ‚ÿ1ÿ€ÿrÿOÿvÿŠÿDÿwÿtÿZÿwÿ~ÿLÿ†ÿ…ÿJÿ{ÿhÿ]ÿŒÿÿ.ÿÿ1ÿrÿÿªÿhÿƒÿUÿƒÿ€ÿÿhÿnÿUÿÇÿyÿ3ÿÿªÿ€ÿrÿOÿÿÿDÿwÿtÿ9ÿÿŽÿLÿ†ÿ…ÿÿÿÿãÿŒÿÿ.ÿŽÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿrÿ—ÿ€ÿlÿÇÿÿÿÇÿ–ÿÿÇÿÿÿ?ÿVÿ—ÿªÿÿ‰ÿFÿWÿãÿÿ—ÿbÿãÿUÿOÿ]ÿUÿMÿnÿUÿ†ÿ€ÿÇÿWÿãÿ‚ÿ…ÿãÿ—ÿãÿlÿPÿVÿyÿrÿ–ÿÿ€ÿ^ÿhÿ?ÿVÿ—ÿ—ÿœÿ‰ÿFÿWÿSÿwÿ—ÿbÿÿ~ÿOÿ]ÿ\ÿMÿnÿŒÿ†ÿ€ÿAÿWÿ8ÿ‚ÿ…ÿœÿãÿ€ÿlÿãÿVÿyÿãÿ–ÿÿUÿ^ÿhÿUÿVÿ—ÿªÿUÿ‰ÿFÿUÿÿwÿ—ÿbÿUÿÿªÿ]ÿ\ÿãÿÿÿÇÿ€ÿAÿãÿÿÿÿãÿ—ÿ€ÿlÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿ9ÿ‘ÿŠÿ}ÿãÿÿÿŽÿgÿŸÿÿÿÿªÿrÿ ÿÿÿUÿƒÿ|ÿŽÿUÿ9ÿhÿsÿªÿUÿwÿ„ÿUÿzÿ’ÿÿyÿ„ÿŽÿÿqÿ›ÿ^ÿŽÿŠÿ}ÿqÿxÿ•ÿÿgÿŸÿÿ‚ÿrÿ|ÿrÿ ÿÿ~ÿÿƒÿ|ÿŽÿuÿŒÿhÿsÿ¥ÿ{ÿwÿ„ÿƒÿzÿ’ÿ™ÿyÿ„ÿkÿÇÿqÿ›ÿ^ÿ‘ÿÇÿ}ÿªÿxÿ•ÿŽÿgÿŸÿãÿ‚ÿrÿUÿrÿ ÿUÿãÿÿãÿÿŽÿuÿÇÿÿãÿ¥ÿ{ÿãÿÿÿzÿ’ÿ™ÿŽÿÿÿÿqÿ›ÿÇÿÿÿÿÇÿxÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[Šÿ—ÿoÿãÿÿÿ9ÿ‚ÿ{ÿ®ÿUÿÿÿÿ‰ÿ©ÿªÿÿÇÿ‡ÿ{ÿ»ÿÿªÿƒÿˆÿUÿªÿvÿãÿUÿzÿªÿÿzÿ¢ÿrÿwÿ®ÿªÿŠÿãÿoÿrÿÇÿ‡ÿ±ÿ‚ÿ{ÿ®ÿƒÿnÿ­ÿÿ‰ÿ©ÿ„ÿ€ÿ¯ÿ‡ÿ{ÿ»ÿ~ÿ¾ÿƒÿˆÿžÿƒÿvÿ·ÿÿzÿªÿ€ÿzÿãÿŽÿãÿ®ÿzÿŠÿÇÿoÿrÿ¹ÿ‡ÿãÿ‚ÿ{ÿrÿƒÿãÿ­ÿÿ‰ÿÿ„ÿ€ÿUÿªÿ{ÿ»ÿÿãÿƒÿˆÿÿUÿvÿ·ÿÿ9ÿÿUÿzÿ¢ÿŽÿÿÿÿŠÿ—ÿoÿŽÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿˆÿÿÿÿ‹ÿoÿ‰ÿÇÿÿÿÇÿÿ¢ÿ«ÿÿÿ—ÿ•ÿµÿãÿÿãÿ{ÿÿÿªÿzÿãÿUÿ¯ÿºÿÿ“ÿÿªÿµÿ²ÿrÿ—ÿÿªÿ½ÿãÿlÿ‹ÿoÿ‰ÿãÿƒÿ‚ÿyÿÿ¢ÿ«ÿ{ÿ‚ÿ—ÿ•ÿµÿŸÿhÿŠÿ{ÿÿÇÿÿzÿŒÿ‡ÿ¯ÿºÿ†ÿ“ÿÿ~ÿµÿ²ÿvÿªÿÿˆÿ½ÿ«ÿªÿ‹ÿoÿ‰ÿ£ÿƒÿªÿyÿŽÿ¢ÿ«ÿ{ÿÿ—ÿ•ÿUÿŽÿhÿŠÿÿŽÿÇÿÿÿÿãÿ¯ÿºÿÇÿÿÿãÿµÿ²ÿãÿÿÿUÿ½ÿ«ÿlÿrÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÇÿKÿÿÿÿÿÿPÿWÿ5ÿªÿÿUÿ†ÿ‰ÿÿUÿÿnÿ–ÿ’ÿÿãÿ#ÿªÿUÿYÿ:ÿÿ9ÿuÿãÿãÿÿªÿ„ÿ™ÿ9ÿDÿÿÇÿKÿªÿÿ+ÿ3ÿ>ÿPÿÇÿ5ÿÿ4ÿãÿ†ÿãÿÿÿÿnÿ–ÿ’ÿ-ÿ#ÿ#ÿYÿãÿYÿ:ÿ@ÿ9ÿuÿQÿÿªÿ ÿŽÿ™ÿãÿDÿŽÿÿKÿªÿÿrÿ3ÿ>ÿãÿãÿ5ÿUÿ4ÿ.ÿ†ÿÿÿÿªÿUÿ–ÿ’ÿÿÿ#ÿYÿªÿÿrÿ@ÿ9ÿuÿÿÿÿ ÿ„ÿ™ÿrÿÿÿŽÿKÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿrÿzÿpÿVÿ9ÿÿÿÇÿsÿXÿzÿÿÿãÿŠÿ`ÿZÿÿÿ‰ÿNÿãÿÿŒÿdÿªÿÿ€ÿGÿÿlÿeÿLÿŽÿwÿwÿãÿdÿÇÿmÿqÿrÿpÿVÿ|ÿUÿªÿ|ÿÇÿXÿªÿXÿãÿwÿªÿ`ÿÇÿsÿÿ‰ÿNÿcÿPÿŒÿdÿgÿ`ÿªÿGÿ‚ÿlÿeÿLÿÇÿwÿãÿ}ÿÇÿxÿrÿqÿzÿÇÿVÿãÿUÿŒÿUÿsÿXÿŽÿXÿ{ÿÿŠÿ`ÿãÿÿÿ‰ÿªÿÿPÿŒÿUÿÿ`ÿ€ÿãÿÿÿeÿLÿRÿªÿÿÿŽÿxÿmÿqÿÿÿÿÇÿUÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[xÿ’ÿwÿŽÿÿÿÿ€ÿŠÿvÿªÿÿÿwÿ‚ÿ~ÿÇÿÿUÿzÿvÿªÿÿŠÿ~ÿŽÿÿrÿ‚ÿÿãÿ‡ÿ„ÿÿ„ÿnÿUÿrÿ{ÿrÿxÿ’ÿwÿƒÿUÿÿ|ÿ€ÿŠÿvÿŒÿƒÿ…ÿwÿ‚ÿªÿ|ÿÿƒÿzÿvÿvÿ‚ÿŠÿ~ÿwÿ‚ÿrÿªÿsÿãÿ‡ÿ„ÿÿãÿnÿnÿãÿ{ÿÇÿxÿÇÿwÿÇÿ{ÿÿÿ€ÿŠÿÇÿŒÿƒÿÿwÿ‚ÿÿ|ÿÿãÿÿvÿvÿªÿÿ~ÿwÿªÿÿÇÿsÿ~ÿÿÿªÿ„ÿnÿnÿÿÿÿxÿ’ÿwÿÇÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[šÿãÿÿÿÿãÿ¥ÿ|ÿ{ÿÿÿrÿ­ÿyÿ‚ÿUÿÿÇÿˆÿ{ÿUÿÿ’ÿ›ÿUÿÿÿ¬ÿÿªÿpÿ‹ÿÿ¿ÿŸÿÿqÿŠÿÿŠÿšÿ9ÿ„ÿzÿ˜ÿŒÿUÿ|ÿÇÿ’ÿrÿ|ÿ­ÿyÿ‚ÿ…ÿ¨ÿ¤ÿˆÿ{ÿ€ÿ£ÿ’ÿ›ÿ‰ÿ‡ÿÿ¬ÿÿ­ÿpÿ‹ÿvÿ¿ÿŸÿdÿqÿrÿ“ÿrÿšÿrÿ„ÿzÿUÿŒÿ¥ÿŽÿ{ÿŽÿ¨ÿ|ÿ­ÿÿ‚ÿ…ÿÿ¤ÿˆÿªÿÿ£ÿ’ÿªÿÿ‡ÿÿãÿÿUÿpÿ‹ÿrÿÿÿdÿqÿŠÿrÿÿÿUÿ„ÿzÿ˜ÿ9ÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[9ÿÿÿ9ÿ›ÿ†ÿpÿªÿÿÿãÿ‡ÿ©ÿ×ÿÿÿgÿkÿùÿÿÿ†ÿWÿUÿÿ ÿáÿÿrÿœÿ‰ÿÿ†ÿƒÿrÿÇÿÛÿªÿãÿcÿªÿ’ÿ³ÿ9ÿ›ÿ†ÿpÿvÿŽÿ¤ÿŽÿ‡ÿŽÿ×ÿÇÿ€ÿgÿkÿùÿøÿÿÿ†ÿWÿ[ÿŒÿ ÿáÿ{ÿÿœÿ‰ÿ˜ÿ†ÿªÿ“ÿrÿÛÿÇÿaÿcÿãÿ’ÿÇÿÆÿãÿ†ÿpÿrÿÿ¤ÿÿ‡ÿ©ÿãÿUÿ€ÿãÿÿùÿøÿªÿÿWÿ[ÿãÿÿãÿ{ÿÿÿÿ˜ÿ†ÿãÿÿÿÇÿÇÿaÿcÿÿÿÿãÿ›ÿ†ÿãÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿãÿYÿÿwÿÿÿÿiÿvÿxÿªÿÿÿ‚ÿÿpÿÿÿbÿlÿÿÿ^ÿ6ÿÿUÿ†ÿnÿÿãÿ‡ÿãÿŽÿzÿ1ÿUÿŽÿwÿŽÿiÿÇÿYÿÿ9ÿ{ÿVÿ9ÿiÿvÿxÿªÿ?ÿUÿ‚ÿŽÿpÿªÿ'ÿbÿlÿÿÿ^ÿ6ÿ}ÿ~ÿ†ÿnÿTÿãÿ‡ÿrÿ‰ÿªÿ1ÿBÿrÿwÿÿiÿ9ÿYÿÿÿ{ÿVÿÿiÿvÿUÿÿ?ÿŽÿªÿÿªÿÿ'ÿbÿŽÿÿÿ^ÿãÿÿªÿ†ÿnÿÿÿãÿfÿ‰ÿÿÿ9ÿŽÿwÿoÿUÿÿÿÿwÿ{ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[9ÿOÿuÿ{ÿªÿÿÿªÿ„ÿDÿrÿ9ÿÿUÿ‚ÿZÿãÿÿUÿŒÿzÿÿÿ ÿyÿUÿÿ~ÿŠÿUÿŽÿ}ÿ`ÿÿŠÿXÿÿŠÿ-ÿÿvÿOÿ9ÿ{ÿ5ÿÇÿ#ÿUÿ„ÿ9ÿrÿtÿ/ÿŒÿUÿZÿUÿ{ÿUÿŒÿzÿ)ÿzÿ ÿyÿgÿNÿªÿŠÿªÿƒÿUÿ`ÿãÿŠÿXÿÿŠÿUÿ|ÿãÿOÿuÿŽÿ5ÿoÿÇÿ€ÿãÿŽÿrÿªÿÇÿŒÿ‚ÿÿãÿ{ÿUÿUÿzÿ)ÿUÿÿyÿgÿãÿÿrÿ1ÿƒÿÿÿªÿŠÿXÿUÿÿÿãÿvÿOÿãÿÿÿÿŽÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[uÿ‹ÿˆÿÿÿÿyÿ‚ÿ~ÿ—ÿÿÿªÿ‡ÿŒÿŽÿÿUÿ‚ÿˆÿÿÿqÿŠÿUÿÿzÿXÿªÿÿ‚ÿtÿÿoÿ|ÿrÿãÿŒÿãÿÇÿuÿrÿˆÿlÿ9ÿnÿyÿÇÿ~ÿrÿwÿrÿuÿ‡ÿªÿ‚ÿrÿpÿUÿˆÿãÿwÿqÿªÿ}ÿ‘ÿzÿUÿqÿUÿ‚ÿUÿÿoÿ|ÿyÿrÿŒÿwÿãÿuÿ9ÿˆÿÿÿnÿÿ‚ÿ~ÿÿwÿzÿÿ‡ÿŒÿ‚ÿÿpÿ‚ÿÿUÿwÿqÿUÿÿ‘ÿzÿXÿÿUÿ‚ÿtÿUÿÿ9ÿyÿrÿªÿÿÿUÿ‹ÿˆÿlÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[¯ÿªÿÿÿ9ÿ€ÿ”ÿ”ÿªÿÿÿãÿoÿlÿ9ÿÿªÿ›ÿ]ÿÿÿuÿŸÿUÿÿˆÿ_ÿÇÿÿ|ÿÿ9ÿãÿÿãÿÿ]ÿ_ÿÿ¥ÿ¯ÿ9ÿYÿaÿŽÿ€ÿrÿ”ÿÇÿ†ÿoÿ9ÿoÿÇÿ’ÿÿªÿ›ÿUÿ`ÿªÿuÿŸÿªÿ–ÿˆÿ_ÿÿdÿÿÿªÿ‰ÿÿUÿaÿUÿ_ÿ¨ÿÿ¯ÿrÿYÿaÿrÿ€ÿ”ÿrÿ’ÿ†ÿÿ_ÿoÿÿ’ÿÿ¼ÿÿ]ÿ`ÿÿªÿŸÿ ÿÿÿ_ÿ{ÿdÿÿÿšÿ‰ÿªÿÿÿ]ÿ_ÿ¨ÿÿÿÿYÿaÿbÿÇÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿªÿ¯ÿgÿ«ÿÿÿÿŽÿ„ÿ¼ÿÿÿÇÿ–ÿÿÿÿÿœÿUÿÿÿ{ÿãÿÿ…ÿÿªÿUÿšÿÿÿ—ÿ€ÿrÿ ÿ}ÿ9ÿ€ÿyÿ9ÿ¯ÿgÿUÿŒÿÿŽÿŽÿªÿ¼ÿUÿ‡ÿœÿ–ÿÿªÿlÿrÿœÿvÿªÿÿ{ÿ­ÿUÿ…ÿUÿ‰ÿzÿšÿÿUÿ—ÿãÿ‚ÿ ÿrÿ˜ÿ€ÿrÿ†ÿÿgÿ«ÿ9ÿÿŽÿrÿŽÿ¼ÿÇÿ9ÿœÿ–ÿªÿÿlÿÿÿªÿµÿÿÿÿˆÿ…ÿÿÿÿšÿÿãÿÿÿãÿ ÿ}ÿÿÿÿŽÿ¯ÿgÿ«ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿ²ÿžÿ…ÿ€ÿÿÿÿ‚ÿzÿ‹ÿÿÿãÿ‚ÿyÿÿÿÇÿ™ÿUÿÿãÿ§ÿÁÿÿãÿyÿãÿÿªÿ†ÿ9ÿªÿŠÿ¬ÿ9ÿuÿ~ÿ9ÿ„ÿ²ÿ9ÿ…ÿÇÿuÿ•ÿUÿ‚ÿªÿ‹ÿmÿÿºÿŽÿyÿ}ÿªÿÇÿUÿ‹ÿŒÿªÿ§ÿÁÿƒÿUÿyÿªÿŸÿªÿªÿÿªÿŠÿ¬ÿUÿuÿ~ÿŽÿ„ÿÿžÿãÿ9ÿuÿ•ÿÿ‚ÿzÿÿmÿžÿ9ÿªÿyÿ}ÿÿUÿ™ÿ‹ÿÿªÿ§ÿÁÿÿÿyÿ{ÿŸÿÿÿÿ|ÿŠÿÿÿUÿ~ÿ}ÿŽÿÿÿÿ€ÿuÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[Uÿÿ4ÿ_ÿŽÿÿÿŽÿ-ÿ}ÿÇÿÿÿWÿ-ÿãÿÿÿmÿ?ÿUÿÿãÿÿNÿÿŽÿ„ÿ|ÿÿSÿ9ÿÇÿÿÿuÿÿeÿ‰ÿÿ~ÿÿ9ÿ_ÿ‡ÿÿ–ÿŽÿ-ÿ}ÿÿzÿ‘ÿUÿ-ÿÿ~ÿ‘ÿmÿ?ÿÿ‘ÿuÿªÿNÿªÿyÿrÿ|ÿšÿSÿ9ÿÿ‚ÿÿªÿ9ÿÿ‰ÿ€ÿÿÿãÿŽÿ‡ÿÿ–ÿ[ÿrÿÇÿ‚ÿãÿÿWÿ-ÿÿ~ÿ‘ÿmÿÿªÿ‘ÿÇÿÿãÿ=ÿyÿÿÿšÿSÿ9ÿÿÿãÿuÿ9ÿÿÿÿ~ÿÿãÿÿÿÿªÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[CÿCÿÿÿÿÿãÿEÿkÿrÿÿÿNÿ…ÿãÿÿÿUÿWÿUÿÿªÿ`ÿÿÿÿdÿƒÿÿŽÿHÿVÿÿkÿ~ÿªÿrÿ‚ÿÇÿrÿCÿCÿÿ“ÿTÿŽÿ"ÿÿkÿ)ÿUÿ”ÿÇÿÇÿdÿÿGÿªÿWÿ’ÿÿJÿ`ÿªÿVÿªÿdÿªÿ“ÿAÿªÿVÿÿkÿ~ÿÿÿªÿ%ÿbÿŽÿãÿÿÿTÿãÿÿEÿkÿÿ€ÿ”ÿÿŽÿdÿãÿÿUÿWÿ’ÿÿãÿ`ÿrÿÿãÿdÿƒÿÿÿHÿVÿ,ÿÿÿªÿÿ‚ÿÿÿÿãÿÿ“ÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[tÿãÿÿÿÿwÿuÿ|ÿÿÿÿ}ÿzÿªÿÿÿ`ÿ[ÿrÿÿUÿeÿhÿÿÿmÿxÿUÿÿ^ÿ}ÿÿrÿJÿbÿÿƒÿeÿÿyÿtÿ9ÿãÿ‚ÿÿwÿuÿ9ÿrÿÇÿÇÿ}ÿ9ÿjÿ|ÿUÿ`ÿUÿ‡ÿ€ÿÿeÿhÿªÿŒÿUÿxÿªÿkÿ^ÿUÿgÿrÿJÿbÿÿƒÿeÿUÿyÿtÿÿ|ÿŽÿÇÿwÿÿ|ÿrÿŽÿrÿ}ÿzÿÿ|ÿ…ÿUÿ9ÿ‡ÿ€ÿªÿÿhÿzÿ9ÿÿxÿfÿkÿÿÿgÿÿJÿÿÿrÿeÿ|ÿUÿÿÿªÿ‚ÿgÿUÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ŽÿÿÿÿŽÿƒÿÿÿÿÿ‘ÿ„ÿªÿÿÿ{ÿšÿªÿÿ9ÿ‹ÿŒÿUÿÿ†ÿƒÿÇÿÿ€ÿÿŽÿÿnÿÿÿÇÿƒÿŽÿrÿwÿ¥ÿÿÿwÿÿƒÿUÿãÿÿÿ‘ÿ„ÿÿƒÿÿªÿšÿÿzÿÿÿŒÿãÿªÿ†ÿUÿxÿ ÿªÿÿÿ‡ÿÇÿÇÿ‰ÿªÿƒÿ}ÿÿwÿ¥ÿÿÿwÿÿƒÿÇÿÿÿxÿÿ„ÿ~ÿrÿÿ{ÿšÿÿªÿÿ‹ÿ9ÿÿŒÿ†ÿÿÿ ÿ€ÿÿÿÿnÿÿ‰ÿÿÿUÿ‹ÿwÿªÿÿÿ9ÿŽÿƒÿÇÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿUÿ„ÿ¸ÿ“ÿÿÿÿ°ÿ‹ÿrÿÿÿ‹ÿ©ÿªÿÿÿxÿƒÿrÿÿãÿyÿŽÿÿÇÿqÿ×ÿÿãÿ›ÿãÿÿ¢ÿˆÿÿ¼ÿ‚ÿ9ÿªÿeÿrÿãÿ“ÿÿ|ÿwÿÿ‹ÿ}ÿÿ‹ÿŽÿãÿÿÿ¤ÿxÿUÿÐÿªÿªÿyÿUÿ³ÿÿŽÿ×ÿÿ{ÿ›ÿUÿ…ÿ¢ÿrÿƒÿUÿ‚ÿtÿŽÿŽÿ„ÿÿãÿ«ÿÿãÿ°ÿÇÿÿ·ÿ‹ÿÿrÿÿãÿÿxÿƒÿÐÿÿÿyÿŽÿÿÿqÿ×ÿÿÿÿ…ÿ…ÿ¢ÿÿÿÿ‚ÿtÿãÿÿÿÿ“ÿ«ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿªÿƒÿqÿªÿÿÿUÿÄÿ‹ÿUÿÿÿÿ×ÿªÿÿÿeÿ‰ÿªÿÿrÿ¦ÿÅÿÿ9ÿ_ÿUÿÿ9ÿñÿ’ÿÿãÿWÿ9ÿrÿ‹ÿ•ÿÿ—ÿƒÿÿdÿãÿÿ¶ÿãÿUÿXÿªÿUÿÿÿ”ÿ„ÿÿeÿ‰ÿUÿ‡ÿªÿªÿÅÿÿ`ÿ_ÿUÿuÿÿñÿ’ÿÿTÿWÿÿ¢ÿ‹ÿUÿ‘ÿ—ÿÿqÿãÿÿ ÿªÿÿ‹ÿXÿÿãÿÿãÿÿ„ÿ„ÿUÿÿnÿ‡ÿžÿÿUÿÑÿ`ÿÿÿuÿ»ÿãÿÿÿTÿWÿrÿÿÿÿ‘ÿ—ÿƒÿÿÿÿãÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ãÿ2ÿÿUÿÿÿrÿÿ0ÿ9ÿÿÿ[ÿÿªÿÿÿhÿÿãÿÿÿÿvÿÿÿ.ÿ‡ÿUÿÿ'ÿ1ÿUÿÿ}ÿ,ÿÿÿXÿ9ÿrÿ2ÿªÿUÿaÿÿÇÿÿUÿÇÿnÿ9ÿÇÿÿÿ"ÿtÿÿÿ%ÿUÿcÿªÿªÿ#ÿÿ.ÿ‡ÿÿhÿUÿ1ÿ*ÿÿ}ÿ,ÿÿÿXÿÿŽÿ2ÿÿ#ÿaÿÿeÿÿÿãÿnÿãÿÿÿ#ÿÿÿhÿÿÿÿcÿÿÇÿÿªÿ.ÿãÿÿÿ'ÿ1ÿãÿÿÿ,ÿ!ÿÿÿÿÿ2ÿÿ#ÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[IÿŒÿÿÿÿªÿWÿÿÿÿÿ}ÿeÿªÿÿÿbÿ\ÿ~ÿÿÿMÿ}ÿŽÿÿtÿvÿãÿÿÇÿ€ÿ…ÿÿaÿUÿÿrÿ„ÿUÿÿIÿŒÿÿ€ÿIÿÿWÿÿÿ€ÿ[ÿÿeÿƒÿÿ„ÿbÿUÿ~ÿãÿUÿMÿªÿªÿƒÿÿvÿPÿÿHÿªÿŽÿ‰ÿ9ÿUÿyÿrÿÇÿUÿÿIÿŒÿªÿ9ÿIÿŽÿÿÿŽÿÿ[ÿ}ÿÿrÿyÿ„ÿÿrÿ~ÿ~ÿÿªÿ}ÿYÿUÿÿãÿPÿªÿÿÿ…ÿ‰ÿÇÿÿÿƒÿ„ÿUÿUÿÿÿãÿ€ÿIÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿãÿÿ‚ÿÿÿÿ‡ÿxÿªÿÿÿãÿ|ÿ†ÿÿÿ…ÿ~ÿãÿÿŽÿ„ÿ†ÿÿÿƒÿ‹ÿÿrÿ‡ÿÇÿÿxÿƒÿ9ÿ9ÿÿãÿÿ„ÿªÿÿ‚ÿ‹ÿÿ„ÿ‡ÿÿ}ÿ„ÿÿÿªÿUÿ‹ÿªÿªÿ~ÿUÿªÿ|ÿÿ†ÿsÿÿƒÿãÿ9ÿyÿŽÿŽÿ€ÿãÿ9ÿ‡ÿªÿ9ÿ“ÿŽÿÿ}ÿÿÿ‹ÿˆÿÿÇÿxÿ}ÿÿ‚ÿÿrÿÿ‹ÿvÿrÿÿ€ÿrÿ|ÿÿÿsÿ€ÿUÿÿÿyÿ‡ÿªÿÿÿãÿ‡ÿrÿUÿÿÿªÿ}ÿÿUÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿãÿ²ÿ‹ÿÿÿÿ}ÿ­ÿªÿÿÿÇÿ`ÿnÿÿÿãÿ—ÿ´ÿÿÿ[ÿkÿ9ÿÿÿ®ÿŽÿÿiÿƒÿÿrÿ“ÿ€ÿÿTÿjÿÿŽÿ™ÿÿªÿ‚ÿrÿUÿ}ÿªÿÿ®ÿŽÿUÿ`ÿUÿªÿšÿrÿªÿ´ÿUÿªÿ[ÿÿœÿµÿÿ®ÿWÿÿiÿƒÿÿÿ“ÿÿeÿTÿÿkÿ“ÿÿŽÿ‹ÿÿ9ÿXÿrÿÿ”ÿ®ÿÿÿ`ÿnÿÿÿœÿ—ÿÿÿnÿ[ÿkÿÿÿÿ®ÿÿÿÿƒÿ®ÿªÿÿÿãÿTÿjÿUÿÿÿUÿ‹ÿ‚ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿ«ÿ¹ÿ–ÿÿÿÿÃÿŒÿãÿÿÿªÿ®ÿºÿÿÿrÿÉÿ®ÿÿÿŽÿ¯ÿÇÿÿŽÿ}ÿ…ÿÿªÿ¶ÿŽÿÿ´ÿÆÿ9ÿÿsÿzÿÿ«ÿ¹ÿÿwÿ‹ÿÿãÿŒÿ9ÿrÿ§ÿÿªÿºÿ9ÿªÿ¾ÿUÿªÿÿUÿªÿ¯ÿÿ¢ÿ|ÿÿ…ÿ´ÿÿ¶ÿiÿÿ´ÿÆÿÿ–ÿsÿÿãÿ«ÿªÿÿwÿ‹ÿÿÃÿŒÿÿŽÿ§ÿ¥ÿÿãÿ€ÿãÿÿrÿ®ÿÿÿÿ¯ÿ°ÿãÿÿÿ…ÿ´ÿÿÿUÿ{ÿ´ÿUÿÿÿãÿzÿŽÿUÿÿÿ9ÿ‹ÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿxÿƒÿ€ÿÿÿÿ‡ÿwÿãÿÿÿUÿ{ÿ‚ÿÿÿÿuÿsÿ9ÿÿÇÿ„ÿ‚ÿÿÿ‚ÿƒÿÿÿ„ÿpÿÿrÿzÿwÿÿÇÿuÿUÿÿƒÿrÿÿwÿ{ÿÿwÿÿÿãÿ}ÿÿ‚ÿ|ÿÿ…ÿuÿÿÇÿÿUÿŽÿ‚ÿÿ~ÿ‚ÿÿãÿ~ÿÿpÿ…ÿÿzÿwÿUÿŽÿuÿrÿ9ÿƒÿ€ÿÿwÿ{ÿÿrÿÿrÿÿ}ÿ{ÿ9ÿÿ~ÿ…ÿÿÿÿÿŽÿÿªÿzÿ~ÿUÿÿUÿ~ÿ„ÿÿÿUÿzÿwÿUÿÿÿãÿxÿƒÿªÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[~ÿ4ÿ3ÿÿÿÿdÿÿãÿÿÿÿfÿÿUÿÿÿÿ$ÿªÿÿ9ÿvÿgÿÿÿ&ÿzÿãÿÿãÿ-ÿ9ÿÿˆÿ"ÿ9ÿÿdÿƒÿÿãÿ3ÿÿrÿŽÿŽÿÿ$ÿ?ÿÿqÿfÿÿ,ÿ'ÿÿÿ$ÿÿÿeÿUÿUÿÿÿ&ÿzÿÿªÿ0ÿÿÇÿ’ÿÿªÿ&ÿªÿÿƒÿ~ÿÿ3ÿÿÿ9ÿdÿŽÿÿ?ÿ‡ÿÿrÿÿ,ÿÿŽÿÿ$ÿÿÿeÿvÿÿÿ=ÿ&ÿzÿÿÿªÿ-ÿãÿÿÿªÿ&ÿ.ÿÿÿÿãÿ3ÿÿªÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[hÿãÿÿÿÿtÿbÿãÿÿÿÿgÿ)ÿªÿÿÿpÿcÿãÿÿÿEÿ’ÿŽÿÿrÿZÿ/ÿÿÿ£ÿ—ÿÿrÿBÿhÿÿŽÿdÿŽÿÿƒÿaÿÿ)ÿtÿÿUÿœÿªÿÿgÿ)ÿÿ„ÿÿÿcÿ\ÿÿaÿEÿÿUÿ–ÿÿZÿ/ÿUÿUÿ£ÿÿrÿ^ÿUÿUÿPÿuÿÿ¡ÿhÿÿãÿVÿÇÿÿbÿ¥ÿÿªÿ=ÿ9ÿÿƒÿ„ÿrÿÿcÿ\ÿrÿÿrÿ’ÿkÿÿÿZÿ/ÿXÿÿÿãÿÿªÿÿÿªÿuÿdÿÿÿÿãÿVÿ)ÿªÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ãÿÿÿÿÿiÿãÿÿÿÿ{ÿ~ÿÇÿÿÿÇÿÿrÿÿÿãÿfÿŽÿÿÿrÿ{ÿUÿÿpÿuÿÿÿhÿwÿ9ÿÿ[ÿtÿÿUÿnÿ9ÿÿÿiÿÿãÿˆÿÿÿ~ÿŽÿÿ†ÿ…ÿÿrÿƒÿÿ…ÿfÿÿUÿÿÿ{ÿmÿUÿÿuÿUÿÿhÿªÿÿˆÿ[ÿÿãÿŠÿÿ9ÿ~ÿÿÿªÿ|ÿ9ÿÿ{ÿ~ÿÿ9ÿ†ÿ…ÿÿÿƒÿzÿÿÿŽÿÿªÿÿÿmÿÿãÿÿÿ„ÿhÿUÿÿÿªÿtÿpÿÿÿÿãÿÿiÿÇÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÿÿ·ÿãÿÿÿÿ‡ÿ¦ÿãÿÿÿUÿÿ¤ÿÿÿrÿ}ÿ¦ÿÿÿãÿ‰ÿÿÿrÿ¬ÿãÿÿrÿ¥ÿ™ÿÿ9ÿ‚ÿãÿÿ¦ÿƒÿÿUÿ·ÿªÿÿˆÿŠÿÿrÿƒÿÿÿ‚ÿªÿÿ ÿ€ÿÿ}ÿ¦ÿÿUÿuÿÿªÿ©ÿªÿÿvÿªÿÿ¥ÿ™ÿÿ|ÿ‚ÿÿUÿ¦ÿÇÿÿÿ·ÿÿÿˆÿŠÿÿÇÿƒÿÿÿ‚ÿÿŽÿÿãÿÿãÿÿÿ£ÿuÿÿÿŽÿ|ÿ¬ÿrÿÿÿ¥ÿ™ÿÿÿÿãÿ‚ÿ¦ÿÿÿÿãÿ~ÿœÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿÿÀÿ¦ÿãÿÿÿÿÂÿ£ÿrÿÿÿÿÀÿÃÿUÿÿÿÌÿ¸ÿUÿÿ9ÿ¸ÿÖÿÿÿÿ¦ÿÿÿ²ÿ•ÿ9ÿÿºÿÆÿÿÿmÿÇÿÿ¦ÿvÿÿÿÈÿÂÿÿãÿ’ÿÿrÿÀÿrÿÿÿ¼ÿÿ¸ÿ£ÿÿUÿ¸ÿÿªÿwÿªÿÿÃÿÇÿÿ•ÿÿÿºÿÆÿªÿÿmÿ»ÿÿãÿvÿãÿÿÈÿÂÿÿÿ’ÿÿÿ9ÿÃÿ~ÿÿÿÌÿ¸ÿÿÿrÿ¸ÿÖÿÿÿãÿ¦ÿÃÿÿÿÿÿ¶ÿÿÿÿãÿmÿ»ÿÿÿÿªÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[ÿ]ÿ:ÿnÿÿÿÿãÿÿXÿÿÿÿZÿÿÇÿÿÿÿFÿãÿÿÿRÿ4ÿŽÿÿŽÿÿŽÿÿrÿ_ÿsÿÿÿBÿZÿÿŽÿZÿÿÿnÿ•ÿÿrÿFÿªÿÿŸÿ„ÿÿªÿÿ9ÿÿzÿÿÿYÿyÿÿUÿ4ÿÿªÿ—ÿÿÿ<ÿ!ÿÿsÿžÿÿrÿZÿ[ÿÿZÿ]ÿÿ9ÿ•ÿtÿÿ9ÿÿŽÿÿ„ÿžÿÿÿRÿSÿÇÿÿŽÿYÿyÿÿÿãÿ%ÿÇÿÿÿyÿ<ÿ!ÿÿÿUÿ”ÿBÿÿÿÿZÿ]ÿ:ÿÿÿÿªÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[[ÿCÿzÿÿÿÿªÿkÿƒÿÿÿÿ;ÿsÿ{ÿÿÿªÿGÿ„ÿÿÿÇÿ1ÿvÿÿÿkÿ„ÿÿÿŽÿ^ÿ9ÿÿãÿ|ÿ9ÿÿ“ÿ[ÿÿ9ÿ…ÿÇÿÿ"ÿkÿÿÿcÿ|ÿÿsÿ{ÿÿUÿiÿãÿÿmÿ$ÿÿUÿvÿÿUÿkÿ„ÿÿoÿŽÿÿªÿrÿÿÿuÿ6ÿÿªÿCÿrÿÿ'ÿwÿ9ÿÿƒÿBÿÿÿ;ÿsÿÿÿpÿiÿÿÿmÿ$ÿrÿÿÿtÿ?ÿ9ÿÿÿoÿŽÿãÿÿÿªÿ|ÿuÿÿÿÿCÿzÿ…ÿÿÿÿ[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[xmorph-20140707+nmu2/example/AA/circuit.dest.mesh0000664000000000000000000000253112356304631016240 0ustar M2 12 9 0 0 0 1285 0 0 1957 0 0 2169 0 0 2201 0 0 2173 0 0 2178 0 0 2248 0 0 2349 0 0 2419 0 0 2488 0 0 2550 0 0 0 18 0 1180 70 -1 1705 120 0 1905 216 0 1956 343 0 1975 486 0 2026 661 0 2124 915 0 2256 1258 -1 2386 1313 0 2450 1320 -1 2550 964 0 0 0 0 848 83 0 1389 215 0 1604 447 0 1665 722 0 1743 990 0 1850 1272 0 1979 1565 0 2134 1770 0 2330 1710 -1 2380 1770 -1 2550 1704 0 0 0 0 619 125 0 1128 311 -1 1313 686 0 1359 1107 -1 1515 1450 0 1670 1753 0 1823 1978 0 1972 2083 0 2100 2090 -1 2340 2090 0 2550 2098 0 0 57 0 447 272 0 842 540 0 1086 926 0 1225 1388 0 1346 1833 0 1494 2122 0 1660 2258 0 1829 2290 0 2005 2290 0 2303 2275 0 2550 2286 0 0 300 0 324 521 0 635 785 0 914 1139 0 1128 1600 -1 1188 2183 -1 1326 2395 0 1507 2445 0 1709 2412 0 1920 2320 -1 2280 2354 0 2550 2380 0 0 765 0 241 835 -1 465 1035 0 744 1345 0 975 1824 0 1050 2404 0 1175 2550 0 1368 2550 0 1617 2513 0 1945 2443 0 2299 2435 0 2550 2445 0 0 1497 0 210 1160 -1 400 1576 0 614 1700 -1 775 2033 -1 944 2430 0 1115 2550 0 1336 2550 0 1628 2543 0 1981 2521 0 2321 2508 0 2550 2507 0 0 2550 0 134 2550 -1 351 2550 0 551 2550 0 721 2550 0 901 2550 0 1097 2550 0 1339 2550 0 1647 2550 0 2001 2550 0 2333 2550 0 2550 2550 0 300 400 32 0 192 256 108.800000 115.200000 147.200000 115.200000 128.000000 204.800000 xmorph-20140707+nmu2/example/AA/grid.ppm0000664000000000000000000060007412356304631014433 0ustar P6 # CREATOR: The GIMP's PNM Filter Version 1.0 256 256 255 ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ôù [ù [$ôÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2$ôù [ù [$ôÿ2ƒƒƒÿÿÿaaaÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿ¥¥¥ÿÿÿœœœÿÿÿªªªÿÿÿÿÿÿÿÿÿ999ÿÿÿƒƒƒÿÿÿ„„„ÿÿÿUUUÿÿÿÿÿÿÿÿÿ\\\ÿÿÿXXXÿÿÿªªªÿÿÿÿÿÿÿÿÿkkkÿÿÿ–––ÿÿÿ999ÿÿÿÿÿÿãããÿÿÿXXXÿÿÿŽŽŽÿÿÿÿÿÿ999ÿÿÿÿÿÿrrrÿÿÿÿÿÿÇÇÇÿÿÿPPPÿÿÿuuuÿÿÿÿÿÿŽŽŽÿÿÿhhhÿÿÿrrrÿÿÿÿÿÿVVVÿÿÿ)))ÿÿÿÿÿÿÿÿÿ¥¥¥ÿÿÿUUUÿÿÿÿÿÿ===ÿÿÿgggÿÿÿÿÿÿªªªÿÿÿ„„„ÿÿÿªªªÿÿÿÿÿÿcccÿÿÿ\\\ÿÿÿÿÿÿaaaÿÿÿEEEÿÿÿÿÿÿUUUÿÿÿ–––ÿÿÿÿÿÿUUUÿÿÿ///ÿÿÿÇÇÇÿÿÿÿÿÿ£££ÿÿÿ———ÿÿÿÿÿÿ^^^ÿÿÿBBBÿÿÿÿÿÿÿÿÿuuuÿÿÿdddÿÿÿÿÿÿãããÿÿÿƒƒƒÿÿÿUUUÿÿÿÿÿÿ)))ÿÿÿtttÿÿÿÿÿÿrrrÿÿÿœœœÿÿÿrrrÿÿÿÿÿÿgggÿÿÿ)))ÿÿÿŽŽŽÿÿÿÿÿÿÇÇÇÿÿÿpppÿÿÿcccÿÿÿÿÿÿÿÿÿaaaÿÿÿEEEÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿwwwÿÿÿZZZÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ£££ÿÿÿ———ÿÿÿÿÿÿÿÿÿUUUÿÿÿhhhÿÿÿPPPÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿƒƒƒÿÿÿaaaÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿxxxÿÿÿ~~~ÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿˆˆˆÿÿÿoooÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿªªªÿÿÿ†††ÿÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿzzzÿÿÿ………ÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿÿÿÿ„„„ÿÿÿhhhÿÿÿÿÿÿÿÿÿˆˆˆÿÿÿ[[[ÿÿÿÿÿÿÿÿÿŠŠŠÿÿÿnnnÿÿÿÿÿÿªªªÿÿÿÿÿÿrrrÿÿÿÿÿÿ|||ÿÿÿãããÿÿÿÿÿÿ{{{ÿÿÿ~~~ÿÿÿÿÿÿUUUÿÿÿ†††ÿÿÿ………ÿÿÿÿÿÿrrrÿÿÿƒƒƒÿÿÿÿÿÿ………ÿÿÿfffÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿªªªÿÿÿmmmÿÿÿªªªÿÿÿÿÿÿuuuÿÿÿÿÿÿÿÿÿhhhÿÿÿwwwÿÿÿÿÿÿŽŽŽÿÿÿ[[[ÿÿÿªªªÿÿÿÿÿÿŠŠŠÿÿÿnnnÿÿÿÿÿÿUUUÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿ|||ÿÿÿˆˆˆÿÿÿÿÿÿÿÿÿ~~~ÿÿÿÿÿÿÿÿÿÿÿÿ………ÿÿÿÿÿÿ999ÿÿÿÿÿÿãããÿÿÿ………ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿÿÿÿÿÿÿUUUÿÿÿpppÿÿÿuuuÿÿÿÿÿÿÿÿÿÿÿÿwwwÿÿÿ‡‡‡ÿÿÿUUUÿÿÿÿÿÿÿÿÿªªªÿÿÿŠŠŠÿÿÿnnnÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿ···ÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿ‡‡‡ÿÿÿ¦¦¦ÿÿÿUUUÿÿÿÿÿÿÿÿÿãããÿÿÿÿÿÿ¤¤¤ÿÿÿÿÿÿÿÿÿªªªÿÿÿ}}}ÿÿÿ¦¦¦ÿÿÿÿÿÿÿÿÿuuuÿÿÿ‰‰‰ÿÿÿªªªÿÿÿÿÿÿªªªÿÿÿ¬¬¬ÿÿÿãããÿÿÿÿÿÿ999ÿÿÿ¥¥¥ÿÿÿrrrÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿãããÿÿÿÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ···ÿÿÿ~~~ÿÿÿÿÿÿˆˆˆÿÿÿŠŠŠÿÿÿÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿUUUÿÿÿÿÿÿ‚‚‚ÿÿÿÿÿÿÿÿÿ   ÿÿÿ€€€ÿÿÿÿÿÿ}}}ÿÿÿ¦¦¦ÿÿÿÿÿÿUUUÿÿÿuuuÿÿÿÿÿÿªªªÿÿÿ©©©ÿÿÿªªªÿÿÿÿÿÿvvvÿÿÿªªªÿÿÿÿÿÿ¥¥¥ÿÿÿ™™™ÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿUUUÿÿÿÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ···ÿÿÿÿÿÿÿÿÿˆˆˆÿÿÿÇÇÇÿÿÿÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿÇÇÇÿÿÿÿÿÿãããÿÿÿÿÿÿ¤¤¤ÿÿÿÿÿÿ999ÿÿÿÿÿÿ}}}ÿÿÿÿÿÿÿÿÿ£££ÿÿÿuuuÿÿÿªªªÿÿÿÿÿÿÿÿÿ|||ÿÿÿ¬¬¬ÿÿÿÿÿÿÿÿÿÿÿÿ¥¥¥ÿÿÿ™™™ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿUUUÿÿÿ‚‚‚ÿÿÿ¦¦¦ÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿ~~~ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿvvvÿÿÿsssÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿ’’’ÿÿÿÿÿÿÿÿÿÿÿÿÃÃÃÿÿÿ~~~ÿÿÿÿÿÿÿÿÿÿÿÿ¸¸¸ÿÿÿ£££ÿÿÿãããÿÿÿÿÿÿÿÿÿÖÖÖÿÿÿ¼¼¼ÿÿÿÿÿÿÿÿÿ¦¦¦ÿÿÿÃÃÃÿÿÿÿÿÿÿÿÿ•••ÿÿÿÿÿÿÿÿÿÿÿÿÆÆÆÿÿÿ‘‘‘ÿÿÿÿÿÿUUUÿÿÿ»»»ÿÿÿªªªÿÿÿÿÿÿvvvÿÿÿsssÿÿÿÿÿÿrrrÿÿÿÂÂÂÿÿÿÿÿÿŽŽŽÿÿÿ’’’ÿÿÿªªªÿÿÿÿÿÿÀÀÀÿÿÿÃÃÃÿÿÿÿÿÿÿÿÿ¼¼¼ÿÿÿÿÿÿ¸¸¸ÿÿÿ£££ÿÿÿÿÿÿUUUÿÿÿ¸¸¸ÿÿÿÿÿÿªªªÿÿÿwwwÿÿÿUUUÿÿÿ999ÿÿÿÃÃÃÿÿÿUUUÿÿÿÿÿÿ•••ÿÿÿÿÿÿÿÿÿºººÿÿÿÆÆÆÿÿÿÿÿÿŽŽŽÿÿÿmmmÿÿÿªªªÿÿÿÿÿÿ¦¦¦ÿÿÿvvvÿÿÿÿÿÿÇÇÇÿÿÿÈÈÈÿÿÿÿÿÿÿÿÿrrrÿÿÿ’’’ÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿÃÃÃÿÿÿÿÿÿÿÿÿ¼¼¼ÿÿÿÌÌÌÿÿÿ999ÿÿÿÿÿÿªªªÿÿÿÿÿÿ¸¸¸ÿÿÿÿÿÿÿÿÿwwwÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿ²²²ÿÿÿ•••ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿUUUÿÿÿ‘‘‘ÿÿÿ}}}ÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿvvvÿÿÿsssÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2UUUÿÿÿÿÿÿÿÿÿÿÿÿtttÿÿÿPPPÿÿÿrrrÿÿÿÿÿÿÿÿÿUUUÿÿÿ„„„ÿÿÿžžžÿÿÿÿÿÿÿÿÿÿÿÿSSSÿÿÿzzzÿÿÿªªªÿÿÿÿÿÿÿÿÿyyyÿÿÿMMMÿÿÿUUUÿÿÿÿÿÿÇÇÇÿÿÿ’’’ÿÿÿ———ÿÿÿÿÿÿrrrÿÿÿ<<<ÿÿÿ!!!ÿÿÿÿÿÿ999ÿÿÿžžžÿÿÿrrrÿÿÿÿÿÿZZZÿÿÿ[[[ÿÿÿŽŽŽÿÿÿÿÿÿ]]]ÿÿÿ:::ÿÿÿÿÿÿÇÇÇÿÿÿtttÿÿÿUUUÿÿÿÿÿÿÿÿÿrrrÿÿÿÿÿÿ„„„ÿÿÿžžžÿÿÿÿÿÿÿÿÿRRRÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿYYYÿÿÿyyyÿÿÿÿÿÿUUUÿÿÿ444ÿÿÿÿÿÿ’’’ÿÿÿ———ÿÿÿUUUÿÿÿUUUÿÿÿ<<<ÿÿÿUUUÿÿÿUUUÿÿÿsssÿÿÿªªªÿÿÿÿÿÿBBBÿÿÿZZZÿÿÿÿÿÿLLLÿÿÿZZZÿÿÿÿÿÿUUUÿÿÿnnnÿÿÿªªªÿÿÿÿÿÿPPPÿÿÿFFFÿÿÿÿÿÿãããÿÿÿŸŸŸÿÿÿÇÇÇÿÿÿÿÿÿãããÿÿÿÿÿÿRRRÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿãããÿÿÿÿÿÿÿÿÿMMMÿÿÿRRRÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ———ÿÿÿãããÿÿÿÿÿÿÿÿÿ!!!ÿÿÿ___ÿÿÿsssÿÿÿÿÿÿÿÿÿUUUÿÿÿZZZÿÿÿ[[[ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿnnnÿÿÿ•••ÿÿÿtttÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2CCCÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿ"""ÿÿÿkkkÿÿÿUUUÿÿÿÿÿÿÿÿÿªªªÿÿÿ;;;ÿÿÿsssÿÿÿÿÿÿÿÿÿ999ÿÿÿiiiÿÿÿGGGÿÿÿUUUÿÿÿÿÿÿUUUÿÿÿyyyÿÿÿ111ÿÿÿÿÿÿÿÿÿ???ÿÿÿkkkÿÿÿrrrÿÿÿÿÿÿoooÿÿÿŽŽŽÿÿÿ999ÿÿÿÿÿÿrrrÿÿÿXXXÿÿÿÿÿÿrrrÿÿÿ666ÿÿÿ“““ÿÿÿÿÿÿÇÇÇÿÿÿzzzÿÿÿÿÿÿÿÿÿwwwÿÿÿ"""ÿÿÿÿÿÿƒƒƒÿÿÿBBBÿÿÿÿÿÿ|||ÿÿÿ;;;ÿÿÿÿÿÿ{{{ÿÿÿTTTÿÿÿÿÿÿªªªÿÿÿGGGÿÿÿÿÿÿmmmÿÿÿ$$$ÿÿÿUUUÿÿÿUUUÿÿÿvvvÿÿÿÿÿÿ???ÿÿÿkkkÿÿÿÿÿÿªªªÿÿÿoooÿÿÿÿÿÿªªªÿÿÿqqqÿÿÿUUUÿÿÿUUUÿÿÿ|||ÿÿÿãããÿÿÿÿÿÿ“““ÿÿÿ[[[ÿÿÿÿÿÿzzzÿÿÿ………ÿÿÿÿÿÿrrrÿÿÿ"""ÿÿÿ999ÿÿÿÿÿÿBBBÿÿÿcccÿÿÿÿÿÿÿÿÿsssÿÿÿ{{{ÿÿÿÿÿÿÿÿÿiiiÿÿÿGGGÿÿÿÿÿÿÿÿÿ$$$ÿÿÿyyyÿÿÿrrrÿÿÿÿÿÿUUUÿÿÿ???ÿÿÿkkkÿÿÿÿÿÿÿÿÿãããÿÿÿŽŽŽÿÿÿ^^^ÿÿÿÿÿÿÿÿÿÿÿÿ|||ÿÿÿuuuÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿzzzÿÿÿ………ÿÿÿ'''ÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2’’’ÿÿÿ~~~ÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒÿÿÿxxxÿÿÿUUUÿÿÿÿÿÿÿÿÿªªªÿÿÿqqqÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿªªªÿÿÿŠŠŠÿÿÿ‰‰‰ÿÿÿÿÿÿÿÿÿãããÿÿÿÿÿÿvvvÿÿÿÿÿÿ999ÿÿÿPPPÿÿÿzzzÿÿÿÿÿÿÿÿÿ|||ÿÿÿÿÿÿÿÿÿ999ÿÿÿƒƒƒÿÿÿrrrÿÿÿÿÿÿiiiÿÿÿ~~~ÿÿÿUUUÿÿÿÿÿÿ~~~ÿÿÿãããÿÿÿÿÿÿjjjÿÿÿ†††ÿÿÿÿÿÿãããÿÿÿŽŽŽÿÿÿÿÿÿ€€€ÿÿÿ‡‡‡ÿÿÿÿÿÿƒƒƒÿÿÿ‚‚‚ÿÿÿUUUÿÿÿUUUÿÿÿŠŠŠÿÿÿUUUÿÿÿªªªÿÿÿgggÿÿÿUUUÿÿÿªªªÿÿÿvvvÿÿÿÿÿÿÿÿÿPPPÿÿÿÿÿÿrrrÿÿÿpppÿÿÿÿÿÿÿÿÿTTTÿÿÿÿÿÿÇÇÇÿÿÿ€€€ÿÿÿrrrÿÿÿ999ÿÿÿ~~~ÿÿÿdddÿÿÿÿÿÿ~~~ÿÿÿÿÿÿÿÿÿjjjÿÿÿ†††ÿÿÿÿÿÿÇÇÇÿÿÿŽŽŽÿÿÿãããÿÿÿÿÿÿ‡‡‡ÿÿÿqqqÿÿÿãããÿÿÿÿÿÿãããÿÿÿhhhÿÿÿŽŽŽÿÿÿÿÿÿªªªÿÿÿgggÿÿÿ}}}ÿÿÿÿÿÿÿÿÿwwwÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿpppÿÿÿ|||ÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒÿÿÿ€€€ÿÿÿUUUÿÿÿÿÿÿÿÿÿãããÿÿÿ’’’ÿÿÿ~~~ÿÿÿãããÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2UUUÿÿÿÿÿÿ€€€ÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿUUUÿÿÿÿÿÿÿÿÿãããÿÿÿ„„„ÿÿÿãããÿÿÿÿÿÿÿÿÿãããÿÿÿrrrÿÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿ„„„ÿÿÿyyyÿÿÿªªªÿÿÿÿÿÿãããÿÿÿÿÿÿãããÿÿÿÿÿÿãããÿÿÿ‚‚‚ÿÿÿŽŽŽÿÿÿÿÿÿ„„„ÿÿÿ}}}ÿÿÿÿÿÿªªªÿÿÿ|||ÿÿÿ–––ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿãããÿÿÿ}}}ÿÿÿ999ÿÿÿUUUÿÿÿˆˆˆÿÿÿÿÿÿ„„„ÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿ{{{ÿÿÿªªªÿÿÿ999ÿÿÿ‡‡‡ÿÿÿUUUÿÿÿªªªÿÿÿ–––ÿÿÿUUUÿÿÿªªªÿÿÿyyyÿÿÿÿÿÿ„„„ÿÿÿ–––ÿÿÿÿÿÿ’’’ÿÿÿuuuÿÿÿÿÿÿ‚‚‚ÿÿÿ¤¤¤ÿÿÿÿÿÿ„„„ÿÿÿ}}}ÿÿÿÿÿÿÇÇÇÿÿÿ|||ÿÿÿUUUÿÿÿUUUÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿ‰‰‰ÿÿÿªªªÿÿÿÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿÿÿÿ999ÿÿÿÿÿÿ†††ÿÿÿÿÿÿÿÿÿÿÿÿ   ÿÿÿÿÿÿÿÿÿ‡‡‡ÿÿÿ–––ÿÿÿÿÿÿÿÿÿyyyÿÿÿ“““ÿÿÿUUUÿÿÿÿÿÿUUUÿÿÿ’’’ÿÿÿuuuÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿ„„„ÿÿÿUUUÿÿÿÿÿÿÿÿÿãããÿÿÿ–––ÿÿÿ~~~ÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿ999ÿÿÿPPPÿÿÿ‹‹‹ÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿ¬¬¬ÿÿÿmmmÿÿÿUUUÿÿÿÿÿÿÿÿÿ’’’ÿÿÿÅÅÅÿÿÿãããÿÿÿÿÿÿÿÿÿ___ÿÿÿXXXÿÿÿãããÿÿÿÿÿÿÿÿÿ˜˜˜ÿÿÿ„„„ÿÿÿÿÿÿÿÿÿQQQÿÿÿšššÿÿÿ999ÿÿÿÿÿÿ¶¶¶ÿÿÿ‘‘‘ÿÿÿÿÿÿ999ÿÿÿ___ÿÿÿrrrÿÿÿÿÿÿ”””ÿÿÿ©©©ÿÿÿÿÿÿŽŽŽÿÿÿPPPÿÿÿrrrÿÿÿ999ÿÿÿËËËÿÿÿãããÿÿÿÿÿÿ¬¬¬ÿÿÿrrrÿÿÿŽŽŽÿÿÿ}}}ÿÿÿªªªÿÿÿUUUÿÿÿÅÅÅÿÿÿ¬¬¬ÿÿÿÿÿÿ}}}ÿÿÿªªªÿÿÿªªªÿÿÿšššÿÿÿUUUÿÿÿªªªÿÿÿ˜˜˜ÿÿÿÿÿÿ}}}ÿÿÿ[[[ÿÿÿÿÿÿšššÿÿÿ™™™ÿÿÿÿÿÿ¶¶¶ÿÿÿ‘‘‘ÿÿÿÿÿÿÿÿÿ___ÿÿÿÿÿÿÊÊÊÿÿÿ”””ÿÿÿÿÿÿ»»»ÿÿÿRRRÿÿÿÿÿÿÇÇÇÿÿÿpppÿÿÿÿÿÿŽŽŽÿÿÿ’’’ÿÿÿ¬¬¬ÿÿÿÿÿÿZZZÿÿÿ}}}ÿÿÿÇÇÇÿÿÿÿÿÿÅÅÅÿÿÿ¬¬¬ÿÿÿÿÿÿÿÿÿ___ÿÿÿXXXÿÿÿUUUÿÿÿÿÿÿãããÿÿÿ˜˜˜ÿÿÿãããÿÿÿÿÿÿÿÿÿQQQÿÿÿšššÿÿÿUUUÿÿÿÿÿÿÿÿÿ‘‘‘ÿÿÿfffÿÿÿUUUÿÿÿÿÿÿÿÿÿÊÊÊÿÿÿ”””ÿÿÿ©©©ÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿnnnÿÿÿtttÿÿÿtttÿÿÿÿÿÿÿÿÿÿÿÿjjjÿÿÿ{{{ÿÿÿUUUÿÿÿÿÿÿÿÿÿ‡‡‡ÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿ¬¬¬ÿÿÿnnnÿÿÿªªªÿÿÿÿÿÿªªªÿÿÿ®®®ÿÿÿyyyÿÿÿÿÿÿUUUÿÿÿeeeÿÿÿ¥¥¥ÿÿÿÿÿÿªªªÿÿÿrrrÿÿÿãããÿÿÿÿÿÿ¸¸¸ÿÿÿ•••ÿÿÿÿÿÿãããÿÿÿ‚‚‚ÿÿÿãããÿÿÿÿÿÿ   ÿÿÿnnnÿÿÿÿÿÿtttÿÿÿ•••ÿÿÿÿÿÿdddÿÿÿjjjÿÿÿÿÿÿ{{{ÿÿÿŒŒŒÿÿÿÿÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿ†††ÿÿÿªªªÿÿÿŽŽŽÿÿÿnnnÿÿÿªªªÿÿÿªªªÿÿÿ¢¢¢ÿÿÿÿÿÿyyyÿÿÿ|||ÿÿÿÿÿÿeeeÿÿÿ¥¥¥ÿÿÿÿÿÿÿÿÿãããÿÿÿÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvvvÿÿÿ®®®ÿÿÿÿÿÿnnnÿÿÿtttÿÿÿÿÿÿ•••ÿÿÿ«««ÿÿÿÿÿÿ999ÿÿÿ{{{ÿÿÿ{{{ÿÿÿÿÿÿŽŽŽÿÿÿ‡‡‡ÿÿÿãããÿÿÿÿÿÿªªªÿÿÿ¾¾¾ÿÿÿãããÿÿÿÿÿÿUUUÿÿÿÿÿÿ¢¢¢ÿÿÿÿÿÿÿÿÿ|||ÿÿÿŒŒŒÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿªªªÿÿÿÿÿÿÿÿÿ•••ÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿ999ÿÿÿnnnÿÿÿtttÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿvvvÿÿÿ|||ÿÿÿbbbÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿyyyÿÿÿUUUÿÿÿÿÿÿÿÿÿ}}}ÿÿÿ~~~ÿÿÿUUUÿÿÿÿÿÿ999ÿÿÿ~~~ÿÿÿŠŠŠÿÿÿÿÿÿÿÿÿ555ÿÿÿ………ÿÿÿãããÿÿÿÿÿÿ~~~ÿÿÿYYYÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZZZÿÿÿrrrÿÿÿÿÿÿˆˆˆÿÿÿyyyÿÿÿÿÿÿdddÿÿÿÿÿÿÿÿÿãããÿÿÿbbbÿÿÿÿÿÿÇÇÇÿÿÿwwwÿÿÿÿÿÿyyyÿÿÿZZZÿÿÿÿÿÿwwwÿÿÿ}}}ÿÿÿÿÿÿ|||ÿÿÿ---ÿÿÿUUUÿÿÿ~~~ÿÿÿªªªÿÿÿªªªÿÿÿ\\\ÿÿÿÿÿÿ………ÿÿÿ}}}ÿÿÿÿÿÿ~~~ÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿŽŽŽÿÿÿªªªÿÿÿˆˆˆÿÿÿªªªÿÿÿrrrÿÿÿˆˆˆÿÿÿªªªÿÿÿUUUÿÿÿyyyÿÿÿrrrÿÿÿrrrÿÿÿÿÿÿ999ÿÿÿrrrÿÿÿbbbÿÿÿ888ÿÿÿÿÿÿwwwÿÿÿ€€€ÿÿÿŽŽŽÿÿÿÿÿÿ%%%ÿÿÿwwwÿÿÿÿÿÿÿÿÿ|||ÿÿÿ---ÿÿÿÿÿÿÿÿÿŠŠŠÿÿÿ‚‚‚ÿÿÿÿÿÿÿÿÿ………ÿÿÿ}}}ÿÿÿãããÿÿÿÿÿÿÿÿÿ===ÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿ000ÿÿÿZZZÿÿÿˆˆˆÿÿÿªªªÿÿÿÿÿÿÿÿÿrrrÿÿÿdddÿÿÿÿÿÿªªªÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2]]]ÿÿÿŒŒŒÿÿÿÿÿÿÿÿÿÿÿÿ111ÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;;;ÿÿÿƒƒƒÿÿÿUUUÿÿÿÿÿÿÿÿÿnnnÿÿÿMMMÿÿÿ999ÿÿÿÿÿÿªªªÿÿÿ‚‚‚ÿÿÿ111ÿÿÿÿÿÿÿÿÿOOOÿÿÿvvvÿÿÿ999ÿÿÿÿÿÿwwwÿÿÿtttÿÿÿÿÿÿrrrÿÿÿ~~~ÿÿÿLLLÿÿÿÿÿÿ………ÿÿÿJJJÿÿÿÿÿÿhhhÿÿÿ]]]ÿÿÿªªªÿÿÿ999ÿÿÿ...ÿÿÿªªªÿÿÿUUUÿÿÿrrrÿÿÿÇÇÇÿÿÿUUUÿÿÿhhhÿÿÿÿÿÿ;;;ÿÿÿƒƒƒÿÿÿÿÿÿUUUÿÿÿhhhÿÿÿÿÿÿMMMÿÿÿ€€€ÿÿÿUUUÿÿÿ333ÿÿÿªªªÿÿÿªªªÿÿÿ€€€ÿÿÿÿÿÿOOOÿÿÿvvvÿÿÿÿÿÿDDDÿÿÿrrrÿÿÿªªªÿÿÿZZZÿÿÿ999ÿÿÿ~~~ÿÿÿLLLÿÿÿÿÿÿ………ÿÿÿJJJÿÿÿÿÿÿhhhÿÿÿ]]]ÿÿÿÿÿÿÿÿÿ...ÿÿÿÿÿÿ111ÿÿÿrrrÿÿÿ999ÿÿÿrrrÿÿÿhhhÿÿÿƒƒƒÿÿÿÿÿÿãããÿÿÿ€€€ÿÿÿŽŽŽÿÿÿÿÿÿnnnÿÿÿMMMÿÿÿ999ÿÿÿÿÿÿ333ÿÿÿ‚‚‚ÿÿÿ999ÿÿÿÿÿÿãããÿÿÿOOOÿÿÿvvvÿÿÿÿÿÿÿÿÿwwwÿÿÿtttÿÿÿªªªÿÿÿÿÿÿÿÿÿLLLÿÿÿ†††ÿÿÿ………ÿÿÿªªªÿÿÿÿÿÿÿÿÿªªªÿÿÿŒŒŒÿÿÿÿÿÿUUUÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2‚‚‚ÿÿÿ………ÿÿÿœœœÿÿÿÿÿÿÿÿÿÿÿÿPPPÿÿÿVVVÿÿÿyyyÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ^^^ÿÿÿUUUÿÿÿÿÿÿÿÿÿ———ÿÿÿ———ÿÿÿÿÿÿÿÿÿãããÿÿÿWWWÿÿÿSSSÿÿÿÿÿÿUUUÿÿÿbbbÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ]]]ÿÿÿ\\\ÿÿÿÿÿÿnnnÿÿÿŒŒŒÿÿÿUUUÿÿÿÿÿÿAAAÿÿÿrrrÿÿÿUUUÿÿÿ‚‚‚ÿÿÿ………ÿÿÿÿÿÿ———ÿÿÿ€€€ÿÿÿÿÿÿPPPÿÿÿVVVÿÿÿÿÿÿrrrÿÿÿŽŽŽÿÿÿÿÿÿ€€€ÿÿÿUUUÿÿÿhhhÿÿÿ???ÿÿÿÿÿÿ———ÿÿÿ———ÿÿÿUUUÿÿÿ‰‰‰ÿÿÿªªªÿÿÿªªªÿÿÿSSSÿÿÿÿÿÿ———ÿÿÿbbbÿÿÿUUUÿÿÿ~~~ÿÿÿUUUÿÿÿ]]]ÿÿÿ\\\ÿÿÿÿÿÿnnnÿÿÿŒŒŒÿÿÿÿÿÿ€€€ÿÿÿAAAÿÿÿÿÿÿ888ÿÿÿ‚‚‚ÿÿÿÿÿÿœœœÿÿÿŽŽŽÿÿÿ999ÿÿÿlllÿÿÿPPPÿÿÿÿÿÿyyyÿÿÿrrrÿÿÿrrrÿÿÿÿÿÿ€€€ÿÿÿ^^^ÿÿÿÿÿÿÇÇÇÿÿÿVVVÿÿÿãããÿÿÿÿÿÿãããÿÿÿ‰‰‰ÿÿÿªªªÿÿÿÿÿÿªªªÿÿÿwwwÿÿÿ———ÿÿÿÿÿÿÿÿÿ~~~ÿÿÿOOOÿÿÿãããÿÿÿÿÿÿÿÿÿnnnÿÿÿŒŒŒÿÿÿ†††ÿÿÿUUUÿÿÿÿÿÿÿÿÿãããÿÿÿ‚‚‚ÿÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿ‘‘‘ÿÿÿŠŠŠÿÿÿ}}}ÿÿÿ999ÿÿÿÿÿÿÿÿÿãããÿÿÿgggÿÿÿŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿ|||ÿÿÿrrrÿÿÿUUUÿÿÿÿÿÿUUUÿÿÿÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿuuuÿÿÿŒŒŒÿÿÿãããÿÿÿÿÿÿãããÿÿÿ{{{ÿÿÿwwwÿÿÿÿÿÿƒƒƒÿÿÿzzzÿÿÿŽŽŽÿÿÿÿÿÿyyyÿÿÿ„„„ÿÿÿÿÿÿÿÿÿqqqÿÿÿÿÿÿ^^^ÿÿÿ‘‘‘ÿÿÿrrrÿÿÿÇÇÇÿÿÿqqqÿÿÿÿÿÿ•••ÿÿÿÿÿÿÿÿÿŸŸŸÿÿÿÿÿÿŽŽŽÿÿÿrrrÿÿÿªªªÿÿÿªªªÿÿÿ   ÿÿÿUUUÿÿÿ~~~ÿÿÿÿÿÿÿÿÿ|||ÿÿÿÇÇÇÿÿÿªªªÿÿÿŒŒŒÿÿÿÿÿÿsssÿÿÿ¥¥¥ÿÿÿªªªÿÿÿwwwÿÿÿÿÿÿƒƒƒÿÿÿzzzÿÿÿÿÿÿ™™™ÿÿÿyyyÿÿÿÿÿÿkkkÿÿÿãããÿÿÿUUUÿÿÿ›››ÿÿÿUUUÿÿÿÇÇÇÿÿÿŠŠŠÿÿÿÿÿÿqqqÿÿÿxxxÿÿÿ999ÿÿÿŽŽŽÿÿÿgggÿÿÿŸŸŸÿÿÿÿÿÿ‚‚‚ÿÿÿrrrÿÿÿÿÿÿÿÿÿ   ÿÿÿÿÿÿÿÿÿUUUÿÿÿƒƒƒÿÿÿ|||ÿÿÿÿÿÿrrrÿÿÿŒŒŒÿÿÿhhhÿÿÿÿÿÿÿÿÿ{{{ÿÿÿwwwÿÿÿãããÿÿÿÿÿÿÿÿÿ’’’ÿÿÿ™™™ÿÿÿyyyÿÿÿUUUÿÿÿÿÿÿÿÿÿqqqÿÿÿ›››ÿÿÿ^^^ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿãããÿÿÿ¹¹¹ÿÿÿ‡‡‡ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿãããÿÿÿƒƒƒÿÿÿnnnÿÿÿ999ÿÿÿÿÿÿÿÿÿ©©©ÿÿÿ„„„ÿÿÿUUUÿÿÿÿÿÿrrrÿÿÿ{{{ÿÿÿ»»»ÿÿÿÿÿÿÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿrrrÿÿÿÿÿÿvvvÿÿÿ···ÿÿÿrrrÿÿÿÿÿÿªªªÿÿÿ€€€ÿÿÿÿÿÿãããÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿÿÿÿzzzÿÿÿrrrÿÿÿŽŽŽÿÿÿoooÿÿÿrrrÿÿÿÿÿÿ‡‡‡ÿÿÿãããÿÿÿUUUÿÿÿ{{{ÿÿÿªªªÿÿÿªªªÿÿÿnnnÿÿÿÿÿÿÿÿÿ‰‰‰ÿÿÿrrrÿÿÿ„„„ÿÿÿªªªÿÿÿãããÿÿÿ‡‡‡ÿÿÿÿÿÿ»»»ÿÿÿ~~~ÿÿÿªªªÿÿÿƒƒƒÿÿÿUUUÿÿÿžžžÿÿÿƒƒƒÿÿÿÇÇÇÿÿÿ···ÿÿÿÿÿÿzzzÿÿÿªªªÿÿÿUUUÿÿÿzzzÿÿÿªªªÿÿÿªªªÿÿÿwwwÿÿÿUUUÿÿÿzzzÿÿÿŠŠŠÿÿÿÿÿÿoooÿÿÿãããÿÿÿÿÿÿ‡‡‡ÿÿÿ±±±ÿÿÿÿÿÿ{{{ÿÿÿ®®®ÿÿÿ999ÿÿÿrrrÿÿÿ­­­ÿÿÿãããÿÿÿÿÿÿ©©©ÿÿÿ„„„ÿÿÿÿÿÿÿÿÿ‡‡‡ÿÿÿ{{{ÿÿÿÿÿÿÿÿÿ¾¾¾ÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿãããÿÿÿvvvÿÿÿãããÿÿÿÿÿÿÿÿÿªªªÿÿÿ€€€ÿÿÿzzzÿÿÿUUUÿÿÿÿÿÿÿÿÿ®®®ÿÿÿzzzÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿ¹¹¹ÿÿÿ‡‡‡ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿªªªÿÿÿ‹‹‹ÿÿÿoooÿÿÿãããÿÿÿÿÿÿÿÿÿªªªÿÿÿyyyÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿ———ÿÿÿ999ÿÿÿÿÿÿªªªÿÿÿhhhÿÿÿŠŠŠÿÿÿÿÿÿ999ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿ‡‡‡ÿÿÿ¯¯¯ÿÿÿÿÿÿªªªÿÿÿ“““ÿÿÿÿÿÿÿÿÿµµµÿÿÿ²²²ÿÿÿÿÿÿ———ÿÿÿÿÿÿÿÿÿ½½½ÿÿÿ«««ÿÿÿÿÿÿ‹‹‹ÿÿÿoooÿÿÿÿÿÿ£££ÿÿÿƒƒƒÿÿÿ999ÿÿÿyyyÿÿÿÿÿÿ¢¢¢ÿÿÿ«««ÿÿÿÿÿÿ‚‚‚ÿÿÿ———ÿÿÿªªªÿÿÿµµµÿÿÿÿÿÿhhhÿÿÿŠŠŠÿÿÿªªªÿÿÿÿÿÿUUUÿÿÿÿÿÿªªªÿÿÿŒŒŒÿÿÿ‡‡‡ÿÿÿÿÿÿºººÿÿÿÇÇÇÿÿÿãããÿÿÿÿÿÿUUUÿÿÿµµµÿÿÿ²²²ÿÿÿÿÿÿ———ÿÿÿÿÿÿrrrÿÿÿ½½½ÿÿÿÿÿÿlllÿÿÿ‹‹‹ÿÿÿrrrÿÿÿÇÇÇÿÿÿ£££ÿÿÿƒƒƒÿÿÿÿÿÿyyyÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ{{{ÿÿÿÇÇÇÿÿÿÿÿÿ•••ÿÿÿµµµÿÿÿÿÿÿÿÿÿŠŠŠÿÿÿ{{{ÿÿÿUUUÿÿÿÿÿÿãããÿÿÿzzzÿÿÿŒŒŒÿÿÿÿÿÿÿÿÿºººÿÿÿ†††ÿÿÿ“““ÿÿÿÿÿÿÿÿÿÿÿÿ²²²ÿÿÿvvvÿÿÿªªªÿÿÿÿÿÿÿÿÿUUUÿÿÿ«««ÿÿÿlllÿÿÿ‹‹‹ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2DDDÿÿÿUUUÿÿÿÿÿÿÿÿÿUUUÿÿÿÿÿÿ+++ÿÿÿ333ÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ555ÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿ‰‰‰ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ–––ÿÿÿãããÿÿÿÿÿÿªªªÿÿÿ###ÿÿÿYYYÿÿÿÿÿÿªªªÿÿÿ:::ÿÿÿ@@@ÿÿÿÿÿÿuuuÿÿÿQQQÿÿÿUUUÿÿÿªªªÿÿÿ ÿÿÿãããÿÿÿÿÿÿ———ÿÿÿrrrÿÿÿãããÿÿÿÿÿÿKKKÿÿÿrrrÿÿÿÿÿÿrrrÿÿÿ333ÿÿÿ>>>ÿÿÿÿÿÿWWWÿÿÿŽŽŽÿÿÿÿÿÿ444ÿÿÿÿÿÿ†††ÿÿÿ‰‰‰ÿÿÿUUUÿÿÿÿÿÿÿÿÿnnnÿÿÿ–––ÿÿÿªªªÿÿÿ---ÿÿÿrrrÿÿÿ###ÿÿÿªªªÿÿÿ^^^ÿÿÿYYYÿÿÿrrrÿÿÿ@@@ÿÿÿUUUÿÿÿuuuÿÿÿQQQÿÿÿÿÿÿÿÿÿ ÿÿÿrrrÿÿÿ™™™ÿÿÿ999ÿÿÿDDDÿÿÿÿÿÿÿÿÿKKKÿÿÿÿÿÿÿÿÿ+++ÿÿÿ333ÿÿÿÿÿÿãããÿÿÿWWWÿÿÿŽŽŽÿÿÿÿÿÿ444ÿÿÿ...ÿÿÿÿÿÿãããÿÿÿÿÿÿrrrÿÿÿÿÿÿnnnÿÿÿ–––ÿÿÿªªªÿÿÿÿÿÿªªªÿÿÿ###ÿÿÿYYYÿÿÿÿÿÿÿÿÿ:::ÿÿÿ@@@ÿÿÿ999ÿÿÿÿÿÿÿÿÿUUUÿÿÿÿÿÿ ÿÿÿUUUÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿãããÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2qqqÿÿÿzzzÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿŒŒŒÿÿÿ|||ÿÿÿsssÿÿÿÿÿÿÿÿÿUUUÿÿÿ{{{ÿÿÿwwwÿÿÿªªªÿÿÿÿÿÿ999ÿÿÿsssÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿPPPÿÿÿÇÇÇÿÿÿÿÿÿãããÿÿÿ```ÿÿÿ€€€ÿÿÿÿÿÿ‚‚‚ÿÿÿlllÿÿÿÇÇÇÿÿÿÿÿÿRRRÿÿÿwwwÿÿÿÿÿÿ}}}ÿÿÿdddÿÿÿÿÿÿmmmÿÿÿqqqÿÿÿÿÿÿpppÿÿÿVVVÿÿÿÿÿÿUUUÿÿÿŒŒŒÿÿÿrrrÿÿÿsssÿÿÿŽŽŽÿÿÿzzzÿÿÿXXXÿÿÿ{{{ÿÿÿwwwÿÿÿUUUÿÿÿ```ÿÿÿZZZÿÿÿUUUÿÿÿÿÿÿUUUÿÿÿNNNÿÿÿcccÿÿÿªªªÿÿÿŒŒŒÿÿÿªªªÿÿÿgggÿÿÿUUUÿÿÿ€€€ÿÿÿGGGÿÿÿÇÇÇÿÿÿlllÿÿÿÿÿÿLLLÿÿÿRRRÿÿÿUUUÿÿÿwwwÿÿÿªªªÿÿÿdddÿÿÿxxxÿÿÿÿÿÿqqqÿÿÿrrrÿÿÿãããÿÿÿVVVÿÿÿŽŽŽÿÿÿãããÿÿÿŒŒŒÿÿÿ|||ÿÿÿÿÿÿXXXÿÿÿzzzÿÿÿÿÿÿ{{{ÿÿÿwwwÿÿÿÿÿÿrrrÿÿÿZZZÿÿÿãããÿÿÿÿÿÿ‰‰‰ÿÿÿNNNÿÿÿãããÿÿÿÿÿÿªªªÿÿÿdddÿÿÿgggÿÿÿÿÿÿÿÿÿGGGÿÿÿ‚‚‚ÿÿÿlllÿÿÿÿÿÿÿÿÿªªªÿÿÿwwwÿÿÿwwwÿÿÿÿÿÿÿÿÿÿÿÿmmmÿÿÿqqqÿÿÿzzzÿÿÿrrrÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿwwwÿÿÿƒƒƒÿÿÿ{{{ÿÿÿÿÿÿÿÿÿÿÿÿŠŠŠÿÿÿvvvÿÿÿŒŒŒÿÿÿUUUÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿ~~~ÿÿÿÇÇÇÿÿÿÿÿÿUUUÿÿÿzzzÿÿÿvvvÿÿÿÿÿÿÿÿÿŠŠŠÿÿÿ~~~ÿÿÿªªªÿÿÿÿÿÿrrrÿÿÿ‚‚‚ÿÿÿÇÇÇÿÿÿÿÿÿ‡‡‡ÿÿÿ„„„ÿÿÿÿÿÿãããÿÿÿnnnÿÿÿÇÇÇÿÿÿrrrÿÿÿ{{{ÿÿÿƒƒƒÿÿÿÿÿÿ’’’ÿÿÿ999ÿÿÿƒƒƒÿÿÿ{{{ÿÿÿÇÇÇÿÿÿãããÿÿÿ€€€ÿÿÿÿÿÿvvvÿÿÿŒŒŒÿÿÿªªªÿÿÿ………ÿÿÿŽŽŽÿÿÿ‚‚‚ÿÿÿªªªÿÿÿ|||ÿÿÿÿÿÿÿÿÿzzzÿÿÿUUUÿÿÿvvvÿÿÿ‚‚‚ÿÿÿªªªÿÿÿ~~~ÿÿÿªªªÿÿÿ‚‚‚ÿÿÿUUUÿÿÿ‚‚‚ÿÿÿªªªÿÿÿ~~~ÿÿÿ‡‡‡ÿÿÿ999ÿÿÿÿÿÿãããÿÿÿãããÿÿÿnnnÿÿÿÿÿÿ{{{ÿÿÿãããÿÿÿÇÇÇÿÿÿ’’’ÿÿÿÿÿÿƒƒƒÿÿÿ{{{ÿÿÿÿÿÿ|||ÿÿÿ€€€ÿÿÿÿÿÿvvvÿÿÿŒŒŒÿÿÿÿÿÿÇÇÇÿÿÿwwwÿÿÿªªªÿÿÿÿÿÿ|||ÿÿÿÿÿÿÿÿÿãããÿÿÿvvvÿÿÿvvvÿÿÿÿÿÿªªªÿÿÿ~~~ÿÿÿwwwÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿsssÿÿÿ~~~ÿÿÿÿÿÿÿÿÿãããÿÿÿ„„„ÿÿÿnnnÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒÿÿÿxxxÿÿÿ’’’ÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿãããÿÿÿ˜˜˜ÿÿÿŒŒŒÿÿÿrrrÿÿÿÿÿÿÿÿÿãããÿÿÿ¨¨¨ÿÿÿ|||ÿÿÿªªªÿÿÿÿÿÿÿÿÿ………ÿÿÿ¨¨¨ÿÿÿãããÿÿÿÿÿÿUUUÿÿÿ€€€ÿÿÿ£££ÿÿÿÿÿÿÿÿÿ‰‰‰ÿÿÿ‡‡‡ÿÿÿUUUÿÿÿÿÿÿÿÿÿ­­­ÿÿÿUUUÿÿÿUUUÿÿÿvvvÿÿÿ¿¿¿ÿÿÿÿÿÿdddÿÿÿqqqÿÿÿÿÿÿ“““ÿÿÿŠŠŠÿÿÿrrrÿÿÿãããÿÿÿ„„„ÿÿÿ999ÿÿÿ˜˜˜ÿÿÿŒŒŒÿÿÿÿÿÿ|||ÿÿÿªªªÿÿÿ’’’ÿÿÿ¨¨¨ÿÿÿÿÿÿ­­­ÿÿÿÿÿÿ‚‚‚ÿÿÿ………ÿÿÿ¨¨¨ÿÿÿ¤¤¤ÿÿÿ999ÿÿÿ{{{ÿÿÿªªªÿÿÿ£££ÿÿÿ’’’ÿÿÿªªªÿÿÿ‰‰‰ÿÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿpppÿÿÿ‹‹‹ÿÿÿªªªÿÿÿ¿¿¿ÿÿÿrrrÿÿÿdddÿÿÿqqqÿÿÿrrrÿÿÿ“““ÿÿÿ999ÿÿÿšššÿÿÿãããÿÿÿÇÇÇÿÿÿzzzÿÿÿŽŽŽÿÿÿãããÿÿÿ¥¥¥ÿÿÿãããÿÿÿrrrÿÿÿ’’’ÿÿÿãããÿÿÿÿÿÿ­­­ÿÿÿyyyÿÿÿÿÿÿ………ÿÿÿ¨¨¨ÿÿÿÿÿÿªªªÿÿÿ{{{ÿÿÿ€€€ÿÿÿÿÿÿUUUÿÿÿ›››ÿÿÿ‰‰‰ÿÿÿÿÿÿÿÿÿ¬¬¬ÿÿÿÿÿÿ­­­ÿÿÿÿÿÿÿÿÿvvvÿÿÿ¿¿¿ÿÿÿŸŸŸÿÿÿÿÿÿÿÿÿªªªÿÿÿ“““ÿÿÿŠŠŠÿÿÿšššÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿŒŒŒÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2999ÿÿÿÿÿÿÿÿÿrrrÿÿÿ†††ÿÿÿpppÿÿÿãããÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ‡‡‡ÿÿÿ©©©ÿÿÿãããÿÿÿÿÿÿÿÿÿgggÿÿÿkkkÿÿÿãããÿÿÿÿÿÿUUUÿÿÿ†††ÿÿÿWWWÿÿÿÿÿÿÿÿÿ   ÿÿÿáááÿÿÿÿÿÿ999ÿÿÿœœœÿÿÿ‰‰‰ÿÿÿÿÿÿãããÿÿÿƒƒƒÿÿÿãããÿÿÿUUUÿÿÿÛÛÛÿÿÿÇÇÇÿÿÿÿÿÿcccÿÿÿLLLÿÿÿÿÿÿ³³³ÿÿÿ999ÿÿÿ›››ÿÿÿ†††ÿÿÿŽŽŽÿÿÿvvvÿÿÿÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿrrrÿÿÿ©©©ÿÿÿŽŽŽÿÿÿ‘‘‘ÿÿÿ€€€ÿÿÿªªªÿÿÿkkkÿÿÿrrrÿÿÿøøøÿÿÿãããÿÿÿ†††ÿÿÿWWWÿÿÿªªªÿÿÿŒŒŒÿÿÿ   ÿÿÿáááÿÿÿUUUÿÿÿÿÿÿUUUÿÿÿ‰‰‰ÿÿÿ˜˜˜ÿÿÿ†††ÿÿÿƒƒƒÿÿÿÿÿÿÇÇÇÿÿÿãããÿÿÿÇÇÇÿÿÿaaaÿÿÿrrrÿÿÿLLLÿÿÿÿÿÿ³³³ÿÿÿÆÆÆÿÿÿÿÿÿ†††ÿÿÿpppÿÿÿÿÿÿÿÿÿ¤¤¤ÿÿÿÿÿÿ‡‡‡ÿÿÿ©©©ÿÿÿÿÿÿãããÿÿÿ€€€ÿÿÿUUUÿÿÿUUUÿÿÿùùùÿÿÿøøøÿÿÿÿÿÿUUUÿÿÿWWWÿÿÿ[[[ÿÿÿÿÿÿÿÿÿáááÿÿÿ{{{ÿÿÿÿÿÿÿÿÿÿÿÿ˜˜˜ÿÿÿ†††ÿÿÿãããÿÿÿÿÿÿÿÿÿãããÿÿÿÇÇÇÿÿÿaaaÿÿÿªªªÿÿÿÿÿÿÿÿÿ999ÿÿÿÆÆÆÿÿÿ›››ÿÿÿãããÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2iiiÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿ{{{ÿÿÿVVVÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿ,,,ÿÿÿÿÿÿÿÿÿpppÿÿÿoooÿÿÿ'''ÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}ÿÿÿ~~~ÿÿÿÿÿÿªªªÿÿÿTTTÿÿÿAAAÿÿÿÿÿÿfffÿÿÿ‰‰‰ÿÿÿUUUÿÿÿãããÿÿÿBBBÿÿÿŽŽŽÿÿÿãããÿÿÿoooÿÿÿªªªÿÿÿãããÿÿÿYYYÿÿÿrrrÿÿÿwwwÿÿÿ{{{ÿÿÿªªªÿÿÿ999ÿÿÿ999ÿÿÿvvvÿÿÿxxxÿÿÿÿÿÿ???ÿÿÿ,,,ÿÿÿ‚‚‚ÿÿÿUUUÿÿÿpppÿÿÿªªªÿÿÿ'''ÿÿÿbbbÿÿÿlllÿÿÿÿÿÿÿÿÿ^^^ÿÿÿ666ÿÿÿ}}}ÿÿÿŽŽŽÿÿÿ†††ÿÿÿÿÿÿTTTÿÿÿªªªÿÿÿ‡‡‡ÿÿÿfffÿÿÿŽŽŽÿÿÿzzzÿÿÿUUUÿÿÿBBBÿÿÿÇÇÇÿÿÿwwwÿÿÿoooÿÿÿŽŽŽÿÿÿ:::ÿÿÿÇÇÇÿÿÿÿÿÿwwwÿÿÿÇÇÇÿÿÿÇÇÇÿÿÿ999ÿÿÿŽŽŽÿÿÿãããÿÿÿxxxÿÿÿŽŽŽÿÿÿrrrÿÿÿ,,,ÿÿÿÇÇÇÿÿÿÿÿÿpppÿÿÿoooÿÿÿUUUÿÿÿUUUÿÿÿlllÿÿÿÿÿÿÿÿÿUUUÿÿÿ666ÿÿÿ}}}ÿÿÿ~~~ÿÿÿÿÿÿÿÿÿTTTÿÿÿAAAÿÿÿªªªÿÿÿÿÿÿÿÿÿzzzÿÿÿ111ÿÿÿBBBÿÿÿ999ÿÿÿÿÿÿÿÿÿãããÿÿÿ:::ÿÿÿYYYÿÿÿrrrÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2OOOÿÿÿuuuÿÿÿ{{{ÿÿÿ999ÿÿÿÿÿÿÿÿÿãããÿÿÿ„„„ÿÿÿDDDÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿŒŒŒÿÿÿ‚‚‚ÿÿÿZZZÿÿÿÿÿÿÿÿÿEEEÿÿÿŒŒŒÿÿÿzzzÿÿÿÿÿÿUUUÿÿÿ ÿÿÿyyyÿÿÿÿÿÿUUUÿÿÿ~~~ÿÿÿŠŠŠÿÿÿÿÿÿãããÿÿÿ}}}ÿÿÿãããÿÿÿÿÿÿŠŠŠÿÿÿXXXÿÿÿÿÿÿŠŠŠÿÿÿ---ÿÿÿÿÿÿvvvÿÿÿOOOÿÿÿÿÿÿ{{{ÿÿÿ999ÿÿÿoooÿÿÿ###ÿÿÿ999ÿÿÿ„„„ÿÿÿãããÿÿÿrrrÿÿÿtttÿÿÿŽŽŽÿÿÿŒŒŒÿÿÿ‚‚‚ÿÿÿZZZÿÿÿUUUÿÿÿ{{{ÿÿÿEEEÿÿÿŒŒŒÿÿÿzzzÿÿÿ)))ÿÿÿzzzÿÿÿ ÿÿÿyyyÿÿÿgggÿÿÿNNNÿÿÿªªªÿÿÿŠŠŠÿÿÿŽŽŽÿÿÿƒƒƒÿÿÿUUUÿÿÿ```ÿÿÿwwwÿÿÿŠŠŠÿÿÿXXXÿÿÿrrrÿÿÿŠŠŠÿÿÿÿÿÿ|||ÿÿÿrrrÿÿÿOOOÿÿÿuuuÿÿÿ999ÿÿÿ555ÿÿÿoooÿÿÿÿÿÿ€€€ÿÿÿ„„„ÿÿÿ999ÿÿÿrrrÿÿÿtttÿÿÿÿÿÿŒŒŒÿÿÿ‚‚‚ÿÿÿÿÿÿƒƒƒÿÿÿ{{{ÿÿÿŽŽŽÿÿÿÿÿÿzzzÿÿÿ)))ÿÿÿÿÿÿUUUÿÿÿyyyÿÿÿgggÿÿÿNNNÿÿÿÿÿÿUUUÿÿÿ111ÿÿÿƒƒƒÿÿÿUUUÿÿÿÿÿÿrrrÿÿÿŠŠŠÿÿÿXXXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvvvÿÿÿOOOÿÿÿuuuÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿˆˆˆÿÿÿlllÿÿÿÿÿÿãããÿÿÿÿÿÿÿÿÿUUUÿÿÿ———ÿÿÿwwwÿÿÿãããÿÿÿÿÿÿÿÿÿãããÿÿÿ‚‚‚ÿÿÿlllÿÿÿUUUÿÿÿÿÿÿãããÿÿÿƒƒƒÿÿÿwwwÿÿÿÿÿÿUUUÿÿÿ}}}ÿÿÿ‘‘‘ÿÿÿÿÿÿUUUÿÿÿqqqÿÿÿqqqÿÿÿÿÿÿtttÿÿÿÿÿÿªªªÿÿÿŽŽŽÿÿÿyyyÿÿÿrrrÿÿÿrrrÿÿÿwwwÿÿÿ„„„ÿÿÿÇÇÇÿÿÿ‹‹‹ÿÿÿãããÿÿÿãããÿÿÿÿÿÿÇÇÇÿÿÿyyyÿÿÿ‚‚‚ÿÿÿ~~~ÿÿÿ———ÿÿÿªªªÿÿÿzzzÿÿÿUUUÿÿÿ‡‡‡ÿÿÿªªªÿÿÿ‚‚‚ÿÿÿªªªÿÿÿpppÿÿÿ‚‚‚ÿÿÿˆˆˆÿÿÿƒƒƒÿÿÿwwwÿÿÿqqqÿÿÿŠŠŠÿÿÿ}}}ÿÿÿ‘‘‘ÿÿÿzzzÿÿÿXXXÿÿÿqqqÿÿÿãããÿÿÿ‚‚‚ÿÿÿUUUÿÿÿÿÿÿªªªÿÿÿ|||ÿÿÿyyyÿÿÿrrrÿÿÿŒŒŒÿÿÿÇÇÇÿÿÿ„„„ÿÿÿrrrÿÿÿ‹‹‹ÿÿÿãããÿÿÿlllÿÿÿÿÿÿŽŽŽÿÿÿyyyÿÿÿ‚‚‚ÿÿÿÿÿÿ———ÿÿÿwwwÿÿÿÿÿÿuuuÿÿÿ‡‡‡ÿÿÿÿÿÿ‚‚‚ÿÿÿlllÿÿÿÇÇÇÿÿÿÿÿÿˆˆˆÿÿÿƒƒƒÿÿÿÿÿÿUUUÿÿÿŠŠŠÿÿÿ}}}ÿÿÿ‘‘‘ÿÿÿÿÿÿrrrÿÿÿqqqÿÿÿqqqÿÿÿÿÿÿÿÿÿãããÿÿÿoooÿÿÿ|||ÿÿÿãããÿÿÿÿÿÿÿÿÿªªªÿÿÿ„„„ÿÿÿuuuÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿnnnÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿrrrÿÿÿbbbÿÿÿ€€€ÿÿÿ”””ÿÿÿUUUÿÿÿÿÿÿÿÿÿoooÿÿÿ___ÿÿÿoooÿÿÿÿÿÿÿÿÿªªªÿÿÿ¼¼¼ÿÿÿ›››ÿÿÿªªªÿÿÿÿÿÿÇÇÇÿÿÿuuuÿÿÿŸŸŸÿÿÿÿÿÿUUUÿÿÿˆˆˆÿÿÿ___ÿÿÿÿÿÿªªªÿÿÿ|||ÿÿÿÿÿÿÿÿÿ‰‰‰ÿÿÿÿÿÿUUUÿÿÿaaaÿÿÿ]]]ÿÿÿªªªÿÿÿ¨¨¨ÿÿÿ¥¥¥ÿÿÿUUUÿÿÿ”””ÿÿÿYYYÿÿÿÿÿÿbbbÿÿÿ999ÿÿÿ”””ÿÿÿ”””ÿÿÿUUUÿÿÿ†††ÿÿÿrrrÿÿÿ___ÿÿÿoooÿÿÿlllÿÿÿÇÇÇÿÿÿÿÿÿ¼¼¼ÿÿÿ›››ÿÿÿ]]]ÿÿÿ```ÿÿÿiiiÿÿÿuuuÿÿÿŸŸŸÿÿÿ   ÿÿÿ–––ÿÿÿˆˆˆÿÿÿ___ÿÿÿ{{{ÿÿÿdddÿÿÿ|||ÿÿÿÿÿÿãããÿÿÿ‰‰‰ÿÿÿUUUÿÿÿ```ÿÿÿŽŽŽÿÿÿ]]]ÿÿÿªªªÿÿÿ¨¨¨ÿÿÿÇÇÇÿÿÿ¯¯¯ÿÿÿ”””ÿÿÿUUUÿÿÿaaaÿÿÿbbbÿÿÿrrrÿÿÿ”””ÿÿÿãããÿÿÿãããÿÿÿ†††ÿÿÿrrrÿÿÿãããÿÿÿoooÿÿÿÿÿÿãããÿÿÿÿÿÿ¼¼¼ÿÿÿÿÿÿ]]]ÿÿÿ```ÿÿÿÿÿÿUUUÿÿÿŸŸŸÿÿÿ   ÿÿÿãããÿÿÿÿÿÿªªªÿÿÿ{{{ÿÿÿdddÿÿÿÿÿÿÿÿÿšššÿÿÿ‰‰‰ÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿ___ÿÿÿ¨¨¨ÿÿÿ¥¥¥ÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿbbbÿÿÿ€€€ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ«««ÿÿÿŒŒŒÿÿÿãããÿÿÿÿÿÿÿÿÿªªªÿÿÿ¼¼¼ÿÿÿ†††ÿÿÿŽŽŽÿÿÿÿÿÿUUUÿÿÿÿÿÿšššÿÿÿãããÿÿÿÿÿÿªªªÿÿÿvvvÿÿÿµµµÿÿÿÿÿÿUUUÿÿÿ­­­ÿÿÿˆˆˆÿÿÿÿÿÿãããÿÿÿ‰‰‰ÿÿÿãããÿÿÿ999ÿÿÿÿÿÿ‹‹‹ÿÿÿÿÿÿ€€€ÿÿÿ‚‚‚ÿÿÿÿÿÿ}}}ÿÿÿ˜˜˜ÿÿÿrrrÿÿÿyyyÿÿÿ†††ÿÿÿãããÿÿÿgggÿÿÿ«««ÿÿÿŒŒŒÿÿÿãããÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ¼¼¼ÿÿÿ†††ÿÿÿ‡‡‡ÿÿÿœœœÿÿÿ–––ÿÿÿÿÿÿšššÿÿÿªªªÿÿÿÿÿÿœœœÿÿÿvvvÿÿÿµµµÿÿÿÿÿÿ{{{ÿÿÿ­­­ÿÿÿˆˆˆÿÿÿ………ÿÿÿÿÿÿ‰‰‰ÿÿÿzzzÿÿÿšššÿÿÿÇÇÇÿÿÿ‹‹‹ÿÿÿrrrÿÿÿ€€€ÿÿÿrrrÿÿÿ   ÿÿÿ999ÿÿÿ˜˜˜ÿÿÿãããÿÿÿyyyÿÿÿ†††ÿÿÿrrrÿÿÿgggÿÿÿ«««ÿÿÿ999ÿÿÿÿÿÿãããÿÿÿŽŽŽÿÿÿ„„„ÿÿÿªªªÿÿÿÇÇÇÿÿÿ‡‡‡ÿÿÿœœœÿÿÿÿÿÿÿÿÿšššÿÿÿUUUÿÿÿªªªÿÿÿœœœÿÿÿvvvÿÿÿãããÿÿÿÿÿÿãããÿÿÿ­­­ÿÿÿãããÿÿÿÿÿÿUUUÿÿÿ‰‰‰ÿÿÿzzzÿÿÿšššÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ€€€ÿÿÿ‚‚‚ÿÿÿªªªÿÿÿÿÿÿÿÿÿUUUÿÿÿyyyÿÿÿ†††ÿÿÿ¯¯¯ÿÿÿÇÇÇÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2„„„ÿÿÿ²²²ÿÿÿrrrÿÿÿÿÿÿÿÿÿUUUÿÿÿ•••ÿÿÿ¨¨¨ÿÿÿ‚‚‚ÿÿÿUUUÿÿÿÿÿÿÿÿÿžžžÿÿÿºººÿÿÿ‚‚‚ÿÿÿÿÿÿÿÿÿ………ÿÿÿÇÇÇÿÿÿ™™™ÿÿÿÿÿÿUUUÿÿÿ}}}ÿÿÿ§§§ÿÿÿUUUÿÿÿUUUÿÿÿÿÿÿyyyÿÿÿÿÿÿãããÿÿÿªªªÿÿÿªªªÿÿÿªªªÿÿÿ|||ÿÿÿŠŠŠÿÿÿUUUÿÿÿ¯¯¯ÿÿÿuuuÿÿÿªªªÿÿÿ}}}ÿÿÿãããÿÿÿ²²²ÿÿÿžžžÿÿÿrrrÿÿÿ€€€ÿÿÿUUUÿÿÿ•••ÿÿÿ¨¨¨ÿÿÿãããÿÿÿzzzÿÿÿÇÇÇÿÿÿmmmÿÿÿªªªÿÿÿºººÿÿÿ‚‚‚ÿÿÿyyyÿÿÿãããÿÿÿ………ÿÿÿÇÇÇÿÿÿ™™™ÿÿÿ‹‹‹ÿÿÿŒŒŒÿÿÿ}}}ÿÿÿ§§§ÿÿÿÁÁÁÿÿÿƒƒƒÿÿÿÿÿÿÇÇÇÿÿÿ{{{ÿÿÿŸŸŸÿÿÿªªªÿÿÿ†††ÿÿÿÿÿÿ|||ÿÿÿŠŠŠÿÿÿ¬¬¬ÿÿÿ¯¯¯ÿÿÿuuuÿÿÿ~~~ÿÿÿ}}}ÿÿÿŽŽŽÿÿÿ²²²ÿÿÿžžžÿÿÿÇÇÇÿÿÿ€€€ÿÿÿŽŽŽÿÿÿ•••ÿÿÿ¨¨¨ÿÿÿÿÿÿzzzÿÿÿãããÿÿÿrrrÿÿÿžžžÿÿÿºººÿÿÿÿÿÿyyyÿÿÿ}}}ÿÿÿUUUÿÿÿªªªÿÿÿ™™™ÿÿÿ‹‹‹ÿÿÿãããÿÿÿÿÿÿ§§§ÿÿÿÁÁÁÿÿÿªªªÿÿÿÿÿÿªªªÿÿÿ{{{ÿÿÿŸŸŸÿÿÿãããÿÿÿÿÿÿÿÿÿ|||ÿÿÿŠŠŠÿÿÿ¬¬¬ÿÿÿÿÿÿÿÿÿÿÿÿ}}}ÿÿÿ„„„ÿÿÿ²²²ÿÿÿžžžÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2rrrÿÿÿ444ÿÿÿ___ÿÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ}}}ÿÿÿ‚‚‚ÿÿÿãããÿÿÿÿÿÿÿÿÿãããÿÿÿÿÿÿ~~~ÿÿÿÿÿÿÿÿÿ???ÿÿÿTTTÿÿÿ‘‘‘ÿÿÿÿÿÿUUUÿÿÿNNNÿÿÿ===ÿÿÿUUUÿÿÿUUUÿÿÿ|||ÿÿÿšššÿÿÿÿÿÿ999ÿÿÿvvvÿÿÿŽŽŽÿÿÿãããÿÿÿuuuÿÿÿãããÿÿÿÇÇÇÿÿÿ‰‰‰ÿÿÿãããÿÿÿ~~~ÿÿÿÿÿÿ999ÿÿÿ___ÿÿÿ‡‡‡ÿÿÿãããÿÿÿ–––ÿÿÿ[[[ÿÿÿ---ÿÿÿªªªÿÿÿ‚‚‚ÿÿÿÇÇÇÿÿÿ‘‘‘ÿÿÿãããÿÿÿ---ÿÿÿÿÿÿ~~~ÿÿÿãããÿÿÿmmmÿÿÿÇÇÇÿÿÿTTTÿÿÿ‘‘‘ÿÿÿuuuÿÿÿÿÿÿNNNÿÿÿ===ÿÿÿyyyÿÿÿ„„„ÿÿÿ|||ÿÿÿšššÿÿÿãããÿÿÿ999ÿÿÿªªªÿÿÿ‚‚‚ÿÿÿãããÿÿÿuuuÿÿÿŽŽŽÿÿÿeeeÿÿÿUUUÿÿÿ€€€ÿÿÿ~~~ÿÿÿÿÿÿ444ÿÿÿ999ÿÿÿ‡‡‡ÿÿÿ‡‡‡ÿÿÿãããÿÿÿ[[[ÿÿÿUUUÿÿÿ}}}ÿÿÿ‚‚‚ÿÿÿ999ÿÿÿ‘‘‘ÿÿÿWWWÿÿÿÿÿÿÿÿÿ~~~ÿÿÿUUUÿÿÿªªªÿÿÿ???ÿÿÿTTTÿÿÿªªªÿÿÿÿÿÿÿÿÿNNNÿÿÿrrrÿÿÿÿÿÿ„„„ÿÿÿ|||ÿÿÿšššÿÿÿªªªÿÿÿÿÿÿUUUÿÿÿ‚‚‚ÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ€€€ÿÿÿ~~~ÿÿÿÿÿÿrrrÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÇÇÇÿÿÿTTTÿÿÿ†††ÿÿÿãããÿÿÿÿÿÿÿÿÿ999ÿÿÿ€€€ÿÿÿ”””ÿÿÿNNNÿÿÿUUUÿÿÿÿÿÿrrrÿÿÿGGGÿÿÿUUUÿÿÿªªªÿÿÿÿÿÿãããÿÿÿJJJÿÿÿ```ÿÿÿUUUÿÿÿÿÿÿfffÿÿÿdddÿÿÿªªªÿÿÿUUUÿÿÿAAAÿÿÿHHHÿÿÿÿÿÿ,,,ÿÿÿkkkÿÿÿUUUÿÿÿ\\\ÿÿÿÿÿÿŽŽŽÿÿÿ%%%ÿÿÿbbbÿÿÿrrrÿÿÿCCCÿÿÿÿÿÿãããÿÿÿTTTÿÿÿÇÇÇÿÿÿ"""ÿÿÿªªªÿÿÿkkkÿÿÿ)))ÿÿÿ€€€ÿÿÿ”””ÿÿÿNNNÿÿÿ………ÿÿÿdddÿÿÿ111ÿÿÿGGGÿÿÿUUUÿÿÿWWWÿÿÿÇÇÇÿÿÿ|||ÿÿÿJJJÿÿÿ```ÿÿÿÿÿÿVVVÿÿÿfffÿÿÿdddÿÿÿƒƒƒÿÿÿ“““ÿÿÿAAAÿÿÿHHHÿÿÿVVVÿÿÿÇÇÇÿÿÿkkkÿÿÿÇÇÇÿÿÿ\\\ÿÿÿÇÇÇÿÿÿ‚‚‚ÿÿÿ%%%ÿÿÿbbbÿÿÿªªªÿÿÿCCCÿÿÿÿÿÿ“““ÿÿÿTTTÿÿÿrrrÿÿÿ"""ÿÿÿãããÿÿÿãããÿÿÿ)))ÿÿÿÿÿÿ”””ÿÿÿNNNÿÿÿUUUÿÿÿdddÿÿÿ111ÿÿÿrrrÿÿÿªªªÿÿÿWWWÿÿÿ’’’ÿÿÿªªªÿÿÿÿÿÿ```ÿÿÿÿÿÿÿÿÿÿÿÿdddÿÿÿƒƒƒÿÿÿ“““ÿÿÿÿÿÿÿÿÿãããÿÿÿ,,,ÿÿÿkkkÿÿÿÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿ%%%ÿÿÿbbbÿÿÿãããÿÿÿÿÿÿÿÿÿrrrÿÿÿTTTÿÿÿ†††ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2xxxÿÿÿÿÿÿÿÿÿÿÿÿwwwÿÿÿuuuÿÿÿ|||ÿÿÿªªªÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿzzzÿÿÿjjjÿÿÿ|||ÿÿÿÿÿÿÿÿÿ[[[ÿÿÿ‡‡‡ÿÿÿ€€€ÿÿÿÿÿÿrrrÿÿÿhhhÿÿÿzzzÿÿÿªªªÿÿÿÿÿÿxxxÿÿÿfffÿÿÿªªªÿÿÿUUUÿÿÿ}}}ÿÿÿgggÿÿÿÿÿÿJJJÿÿÿbbbÿÿÿÿÿÿƒƒƒÿÿÿeeeÿÿÿ999ÿÿÿyyyÿÿÿtttÿÿÿÇÇÇÿÿÿ|||ÿÿÿªªªÿÿÿgggÿÿÿwwwÿÿÿÇÇÇÿÿÿ|||ÿÿÿrrrÿÿÿ€€€ÿÿÿãããÿÿÿ}}}ÿÿÿzzzÿÿÿjjjÿÿÿ|||ÿÿÿ………ÿÿÿ```ÿÿÿ[[[ÿÿÿ‡‡‡ÿÿÿ€€€ÿÿÿ{{{ÿÿÿeeeÿÿÿhhhÿÿÿzzzÿÿÿŒŒŒÿÿÿmmmÿÿÿxxxÿÿÿfffÿÿÿkkkÿÿÿ^^^ÿÿÿ}}}ÿÿÿgggÿÿÿÿÿÿJJJÿÿÿbbbÿÿÿwwwÿÿÿƒƒƒÿÿÿªªªÿÿÿ|||ÿÿÿyyyÿÿÿtttÿÿÿxxxÿÿÿrrrÿÿÿ‚‚‚ÿÿÿãããÿÿÿwwwÿÿÿuuuÿÿÿŽŽŽÿÿÿrrrÿÿÿUUUÿÿÿ]]]ÿÿÿ}}}ÿÿÿªªªÿÿÿjjjÿÿÿ|||ÿÿÿªªªÿÿÿªªªÿÿÿ[[[ÿÿÿ‡‡‡ÿÿÿªªªÿÿÿUUUÿÿÿeeeÿÿÿhhhÿÿÿÿÿÿŽŽŽÿÿÿmmmÿÿÿxxxÿÿÿfffÿÿÿÿÿÿ999ÿÿÿ}}}ÿÿÿgggÿÿÿãããÿÿÿÿÿÿÿÿÿãããÿÿÿƒƒƒÿÿÿeeeÿÿÿ|||ÿÿÿÿÿÿÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿgggÿÿÿŽŽŽÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2zzzÿÿÿÿÿÿãããÿÿÿÿÿÿÿÿÿ999ÿÿÿ………ÿÿÿÿÿÿxxxÿÿÿUUUÿÿÿÿÿÿÿÿÿƒƒƒÿÿÿÿÿÿ{{{ÿÿÿrrrÿÿÿÿÿÿãããÿÿÿÿÿÿ‹‹‹ÿÿÿÿÿÿÿÿÿŒŒŒÿÿÿ†††ÿÿÿãããÿÿÿÿÿÿ   ÿÿÿ€€€ÿÿÿãããÿÿÿUUUÿÿÿ‡‡‡ÿÿÿnnnÿÿÿÿÿÿ‰‰‰ÿÿÿ‚‚‚ÿÿÿ999ÿÿÿ}}}ÿÿÿ‹‹‹ÿÿÿŽŽŽÿÿÿ¥¥¥ÿÿÿzzzÿÿÿÿÿÿwwwÿÿÿÇÇÇÿÿÿƒƒƒÿÿÿãããÿÿÿ………ÿÿÿãããÿÿÿxxxÿÿÿ‘‘‘ÿÿÿ„„„ÿÿÿ~~~ÿÿÿƒƒƒÿÿÿÿÿÿ{{{ÿÿÿšššÿÿÿŽŽŽÿÿÿzzzÿÿÿÿÿÿ‹‹‹ÿÿÿŒŒŒÿÿÿ‰‰‰ÿÿÿŒŒŒÿÿÿ†††ÿÿÿƒƒƒÿÿÿxxxÿÿÿ   ÿÿÿ€€€ÿÿÿÿÿÿtttÿÿÿ‡‡‡ÿÿÿnnnÿÿÿÿÿÿ‰‰‰ÿÿÿ‚‚‚ÿÿÿƒƒƒÿÿÿãããÿÿÿ‹‹‹ÿÿÿwwwÿÿÿ¥¥¥ÿÿÿzzzÿÿÿÿÿÿwwwÿÿÿãããÿÿÿƒƒƒÿÿÿUUUÿÿÿ………ÿÿÿãããÿÿÿxxxÿÿÿ‘‘‘ÿÿÿãããÿÿÿãããÿÿÿƒƒƒÿÿÿªªªÿÿÿãããÿÿÿšššÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿªªªÿÿÿ‹‹‹ÿÿÿŒŒŒÿÿÿÿÿÿãããÿÿÿ†††ÿÿÿƒƒƒÿÿÿÇÇÇÿÿÿÿÿÿãããÿÿÿÿÿÿtttÿÿÿ999ÿÿÿÿÿÿrrrÿÿÿ‰‰‰ÿÿÿ‚‚‚ÿÿÿƒƒƒÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿ¥¥¥ÿÿÿzzzÿÿÿÿÿÿãããÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ŽŽŽÿÿÿeeeÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿãããÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ°°°ÿÿÿ‹‹‹ÿÿÿ}}}ÿÿÿÿÿÿÿÿÿªªªÿÿÿ©©©ÿÿÿÿÿÿ”””ÿÿÿÿÿÿUUUÿÿÿƒƒƒÿÿÿÐÐÐÿÿÿªªªÿÿÿÿÿÿyyyÿÿÿŽŽŽÿÿÿ³³³ÿÿÿÿÿÿqqqÿÿÿ×××ÿÿÿãããÿÿÿUUUÿÿÿ›››ÿÿÿ………ÿÿÿÿÿÿ¢¢¢ÿÿÿˆˆˆÿÿÿªªªÿÿÿ¼¼¼ÿÿÿ‚‚‚ÿÿÿtttÿÿÿ¦¦¦ÿÿÿÇÇÇÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿ“““ÿÿÿ«««ÿÿÿãããÿÿÿwwwÿÿÿ°°°ÿÿÿ‹‹‹ÿÿÿ}}}ÿÿÿ···ÿÿÿ‹‹‹ÿÿÿ‹‹‹ÿÿÿ©©©ÿÿÿÿÿÿ”””ÿÿÿ¤¤¤ÿÿÿxxxÿÿÿƒƒƒÿÿÿÐÐÐÿÿÿwwwÿÿÿ´´´ÿÿÿyyyÿÿÿŽŽŽÿÿÿ³³³ÿÿÿÿÿÿqqqÿÿÿ×××ÿÿÿÿÿÿ{{{ÿÿÿ›››ÿÿÿ………ÿÿÿ………ÿÿÿ¢¢¢ÿÿÿˆˆˆÿÿÿƒƒƒÿÿÿ¼¼¼ÿÿÿ‚‚‚ÿÿÿtttÿÿÿÇÇÇÿÿÿeeeÿÿÿãããÿÿÿ¸¸¸ÿÿÿÇÇÇÿÿÿ«««ÿÿÿ|||ÿÿÿãããÿÿÿ°°°ÿÿÿ‹‹‹ÿÿÿãããÿÿÿ···ÿÿÿªªªÿÿÿãããÿÿÿ©©©ÿÿÿÿÿÿUUUÿÿÿãããÿÿÿxxxÿÿÿãããÿÿÿÿÿÿwwwÿÿÿ´´´ÿÿÿyyyÿÿÿUUUÿÿÿÿÿÿÿÿÿqqqÿÿÿãããÿÿÿÿÿÿÿÿÿ›››ÿÿÿ………ÿÿÿ………ÿÿÿãããÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ‚‚‚ÿÿÿtttÿÿÿ¦¦¦ÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÇÇÇÿÿÿdddÿÿÿzzzÿÿÿ   ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿUUUÿÿÿ@@@ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿ„„„ÿÿÿ„„„ÿÿÿeeeÿÿÿrrrÿÿÿÿÿÿ‡‡‡ÿÿÿžžžÿÿÿ¦¦¦ÿÿÿÿÿÿãããÿÿÿ```ÿÿÿ___ÿÿÿÿÿÿuuuÿÿÿ»»»ÿÿÿñññÿÿÿUUUÿÿÿuuuÿÿÿTTTÿÿÿUUUÿÿÿrrrÿÿÿ¢¢¢ÿÿÿãããÿÿÿ•••ÿÿÿãããÿÿÿ———ÿÿÿƒƒƒÿÿÿqqqÿÿÿdddÿÿÿãããÿÿÿ   ÿÿÿ¶¶¶ÿÿÿÄÄÄÿÿÿ‹‹‹ÿÿÿXXXÿÿÿUUUÿÿÿ@@@ÿÿÿÿÿÿ×××ÿÿÿ”””ÿÿÿ„„„ÿÿÿ„„„ÿÿÿeeeÿÿÿ‰‰‰ÿÿÿnnnÿÿÿ‡‡‡ÿÿÿžžžÿÿÿ¦¦¦ÿÿÿÅÅÅÿÿÿÑÑÑÿÿÿ```ÿÿÿ___ÿÿÿUUUÿÿÿuuuÿÿÿ»»»ÿÿÿñññÿÿÿ’’’ÿÿÿuuuÿÿÿTTTÿÿÿWWWÿÿÿrrrÿÿÿ¢¢¢ÿÿÿ‹‹‹ÿÿÿ•••ÿÿÿãããÿÿÿ———ÿÿÿƒƒƒÿÿÿqqqÿÿÿdddÿÿÿzzzÿÿÿ   ÿÿÿªªªÿÿÿÄÄÄÿÿÿ‹‹‹ÿÿÿãããÿÿÿUUUÿÿÿãããÿÿÿãããÿÿÿ×××ÿÿÿ”””ÿÿÿUUUÿÿÿ„„„ÿÿÿeeeÿÿÿªªªÿÿÿUUUÿÿÿ‡‡‡ÿÿÿžžžÿÿÿ¦¦¦ÿÿÿÿÿÿªªªÿÿÿ```ÿÿÿ___ÿÿÿUUUÿÿÿÿÿÿÇÇÇÿÿÿñññÿÿÿ’’’ÿÿÿuuuÿÿÿ999ÿÿÿÿÿÿŽŽŽÿÿÿ¢¢¢ÿÿÿ‹‹‹ÿÿÿ•••ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿdddÿÿÿzzzÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿeeeÿÿÿÿÿÿ000ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿ[[[ÿÿÿÿÿÿ###ÿÿÿrrrÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿ%%%ÿÿÿ555ÿÿÿÿÿÿªªªÿÿÿvvvÿÿÿ###ÿÿÿ999ÿÿÿªªªÿÿÿ‡‡‡ÿÿÿmmmÿÿÿrrrÿÿÿãããÿÿÿ111ÿÿÿ***ÿÿÿUUUÿÿÿ}}}ÿÿÿ,,,ÿÿÿªªªÿÿÿÿÿÿXXXÿÿÿ‡‡‡ÿÿÿŽŽŽÿÿÿªªªÿÿÿÿÿÿ###ÿÿÿaaaÿÿÿˆˆˆÿÿÿeeeÿÿÿÿÿÿ000ÿÿÿÿÿÿnnnÿÿÿÿÿÿ[[[ÿÿÿÿÿÿ###ÿÿÿ"""ÿÿÿtttÿÿÿhhhÿÿÿÿÿÿ%%%ÿÿÿ555ÿÿÿcccÿÿÿÿÿÿvvvÿÿÿ###ÿÿÿÿÿÿ...ÿÿÿ‡‡‡ÿÿÿmmmÿÿÿhhhÿÿÿ'''ÿÿÿ111ÿÿÿ***ÿÿÿ|||ÿÿÿ}}}ÿÿÿ,,,ÿÿÿ!!!ÿÿÿÿÿÿXXXÿÿÿ‡‡‡ÿÿÿŽŽŽÿÿÿ222ÿÿÿÿÿÿ###ÿÿÿÇÇÇÿÿÿˆˆˆÿÿÿªªªÿÿÿÿÿÿ000ÿÿÿªªªÿÿÿnnnÿÿÿãããÿÿÿãããÿÿÿÿÿÿ###ÿÿÿUUUÿÿÿtttÿÿÿhhhÿÿÿUUUÿÿÿÇÇÇÿÿÿ555ÿÿÿcccÿÿÿãããÿÿÿÿÿÿ###ÿÿÿÿÿÿ...ÿÿÿÿÿÿUUUÿÿÿhhhÿÿÿ'''ÿÿÿ111ÿÿÿªªªÿÿÿÿÿÿUUUÿÿÿ,,,ÿÿÿ!!!ÿÿÿÿÿÿ999ÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿ###ÿÿÿaaaÿÿÿŽŽŽÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ŒŒŒÿÿÿ~~~ÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿtttÿÿÿ€€€ÿÿÿ[[[ÿÿÿŽŽŽÿÿÿÿÿÿ999ÿÿÿyyyÿÿÿ„„„ÿÿÿbbbÿÿÿÿÿÿÿÿÿ~~~ÿÿÿ†††ÿÿÿMMMÿÿÿrrrÿÿÿÿÿÿƒƒƒÿÿÿtttÿÿÿªªªÿÿÿUUUÿÿÿrrrÿÿÿHHHÿÿÿÇÇÇÿÿÿªªªÿÿÿ‰‰‰ÿÿÿaaaÿÿÿUUUÿÿÿyyyÿÿÿƒƒƒÿÿÿÇÇÇÿÿÿUUUÿÿÿãããÿÿÿIIIÿÿÿŒŒŒÿÿÿãããÿÿÿ€€€ÿÿÿIIIÿÿÿÿÿÿWWWÿÿÿÿÿÿtttÿÿÿ€€€ÿÿÿ[[[ÿÿÿ}}}ÿÿÿeeeÿÿÿƒƒƒÿÿÿyyyÿÿÿ„„„ÿÿÿbbbÿÿÿ\\\ÿÿÿ~~~ÿÿÿ~~~ÿÿÿ†††ÿÿÿMMMÿÿÿ}}}ÿÿÿYYYÿÿÿƒƒƒÿÿÿtttÿÿÿvvvÿÿÿPPPÿÿÿrrrÿÿÿHHHÿÿÿ€€€ÿÿÿ………ÿÿÿ‰‰‰ÿÿÿaaaÿÿÿUUUÿÿÿyyyÿÿÿƒƒƒÿÿÿ„„„ÿÿÿUUUÿÿÿ„„„ÿÿÿIIIÿÿÿŒŒŒÿÿÿ~~~ÿÿÿÇÇÇÿÿÿIIIÿÿÿÇÇÇÿÿÿWWWÿÿÿÿÿÿÇÇÇÿÿÿ€€€ÿÿÿãããÿÿÿ}}}ÿÿÿeeeÿÿÿƒƒƒÿÿÿ999ÿÿÿ„„„ÿÿÿbbbÿÿÿÿÿÿ~~~ÿÿÿ~~~ÿÿÿ†††ÿÿÿrrrÿÿÿŽŽŽÿÿÿYYYÿÿÿƒƒƒÿÿÿrrrÿÿÿÿÿÿPPPÿÿÿrrrÿÿÿHHHÿÿÿ€€€ÿÿÿÿÿÿÿÿÿaaaÿÿÿUUUÿÿÿyyyÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿIIIÿÿÿŒŒŒÿÿÿ~~~ÿÿÿrrrÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ãããÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ}}}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ‡‡‡ÿÿÿxxxÿÿÿ}}}ÿÿÿŽŽŽÿÿÿÿÿÿŽŽŽÿÿÿ|||ÿÿÿ†††ÿÿÿãããÿÿÿÿÿÿrrrÿÿÿ~~~ÿÿÿ€€€ÿÿÿrrrÿÿÿÿÿÿãããÿÿÿ†††ÿÿÿsssÿÿÿÿÿÿƒƒƒÿÿÿ‹‹‹ÿÿÿxxxÿÿÿªªªÿÿÿ‡‡‡ÿÿÿxxxÿÿÿUUUÿÿÿxxxÿÿÿƒƒƒÿÿÿãããÿÿÿrrrÿÿÿãããÿÿÿ“““ÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ}}}ÿÿÿÿÿÿ‚‚‚ÿÿÿ‹‹‹ÿÿÿˆˆˆÿÿÿ„„„ÿÿÿ‡‡‡ÿÿÿxxxÿÿÿ}}}ÿÿÿ„„„ÿÿÿ‚‚‚ÿÿÿÿÿÿ|||ÿÿÿ†††ÿÿÿ‹‹‹ÿÿÿvvvÿÿÿ………ÿÿÿ~~~ÿÿÿ€€€ÿÿÿrrrÿÿÿ|||ÿÿÿ„„„ÿÿÿ†††ÿÿÿsssÿÿÿ€€€ÿÿÿƒƒƒÿÿÿ‹‹‹ÿÿÿxxxÿÿÿyyyÿÿÿ‡‡‡ÿÿÿxxxÿÿÿ€€€ÿÿÿxxxÿÿÿƒƒƒÿÿÿ‡‡‡ÿÿÿrrrÿÿÿÿÿÿ“““ÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ}}}ÿÿÿÿÿÿ‚‚‚ÿÿÿ‹‹‹ÿÿÿˆˆˆÿÿÿ„„„ÿÿÿ‡‡‡ÿÿÿxxxÿÿÿ}}}ÿÿÿrrrÿÿÿ‚‚‚ÿÿÿÿÿÿ999ÿÿÿ†††ÿÿÿ‹‹‹ÿÿÿvvvÿÿÿÿÿÿ~~~ÿÿÿ€€€ÿÿÿrrrÿÿÿÿÿÿªªªÿÿÿ†††ÿÿÿsssÿÿÿ€€€ÿÿÿUUUÿÿÿÿÿÿãããÿÿÿyyyÿÿÿ‡‡‡ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ‡‡‡ÿÿÿrrrÿÿÿÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÇÇÇÿÿÿ²²²ÿÿÿ‹‹‹ÿÿÿ‚‚‚ÿÿÿMMMÿÿÿ999ÿÿÿÿÿÿÿÿÿ”””ÿÿÿ®®®ÿÿÿÿÿÿcccÿÿÿrrrÿÿÿÿÿÿãããÿÿÿšššÿÿÿœœœÿÿÿªªªÿÿÿÿÿÿ___ÿÿÿnnnÿÿÿ[[[ÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿµµµÿÿÿÿÿÿUUUÿÿÿWWWÿÿÿPPPÿÿÿiiiÿÿÿUUUÿÿÿ®®®ÿÿÿÿÿÿrrrÿÿÿ€€€ÿÿÿeeeÿÿÿTTTÿÿÿjjjÿÿÿkkkÿÿÿ“““ÿÿÿ™™™ÿÿÿ²²²ÿÿÿ‹‹‹ÿÿÿ‚‚‚ÿÿÿMMMÿÿÿXXXÿÿÿ}}}ÿÿÿ­­­ÿÿÿ”””ÿÿÿ®®®ÿÿÿÿÿÿcccÿÿÿ```ÿÿÿnnnÿÿÿ‡‡‡ÿÿÿšššÿÿÿœœœÿÿÿ———ÿÿÿ´´´ÿÿÿ___ÿÿÿnnnÿÿÿ[[[ÿÿÿkkkÿÿÿœœœÿÿÿµµµÿÿÿÿÿÿ®®®ÿÿÿWWWÿÿÿPPPÿÿÿiiiÿÿÿƒƒƒÿÿÿ®®®ÿÿÿÿÿÿ“““ÿÿÿ€€€ÿÿÿeeeÿÿÿTTTÿÿÿjjjÿÿÿkkkÿÿÿ“““ÿÿÿ™™™ÿÿÿ²²²ÿÿÿ‹‹‹ÿÿÿ‚‚‚ÿÿÿMMMÿÿÿXXXÿÿÿ}}}ÿÿÿ­­­ÿÿÿ”””ÿÿÿŽŽŽÿÿÿÿÿÿãããÿÿÿªªªÿÿÿnnnÿÿÿ‡‡‡ÿÿÿšššÿÿÿUUUÿÿÿ———ÿÿÿ´´´ÿÿÿªªªÿÿÿ999ÿÿÿ[[[ÿÿÿkkkÿÿÿœœœÿÿÿÇÇÇÿÿÿÿÿÿÇÇÇÿÿÿWWWÿÿÿPPPÿÿÿãããÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ“““ÿÿÿ€€€ÿÿÿeeeÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ²²²ÿÿÿ‹‹‹ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ‹‹‹ÿÿÿ´´´ÿÿÿÃÃÃÿÿÿŒŒŒÿÿÿrrrÿÿÿÿÿÿÿÿÿ¥¥¥ÿÿÿ®®®ÿÿÿºººÿÿÿ€€€ÿÿÿrrrÿÿÿÿÿÿÉÉÉÿÿÿ®®®ÿÿÿÿÿÿ999ÿÿÿUUUÿÿÿ¯¯¯ÿÿÿ°°°ÿÿÿ¢¢¢ÿÿÿÿÿÿ}}}ÿÿÿ………ÿÿÿÇÇÇÿÿÿÇÇÇÿÿÿ¶¶¶ÿÿÿiiiÿÿÿŽŽŽÿÿÿ´´´ÿÿÿÆÆÆÿÿÿrrrÿÿÿ–––ÿÿÿsssÿÿÿzzzÿÿÿŽŽŽÿÿÿ«««ÿÿÿ¹¹¹ÿÿÿ–––ÿÿÿwwwÿÿÿ‹‹‹ÿÿÿ´´´ÿÿÿÃÃÃÿÿÿŒŒŒÿÿÿ}}}ÿÿÿ€€€ÿÿÿ§§§ÿÿÿ¥¥¥ÿÿÿ®®®ÿÿÿºººÿÿÿ€€€ÿÿÿqqqÿÿÿ¾¾¾ÿÿÿÉÉÉÿÿÿ®®®ÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ¯¯¯ÿÿÿ°°°ÿÿÿ¢¢¢ÿÿÿ|||ÿÿÿ}}}ÿÿÿ………ÿÿÿ´´´ÿÿÿ»»»ÿÿÿ¶¶¶ÿÿÿiiiÿÿÿ{{{ÿÿÿ´´´ÿÿÿÆÆÆÿÿÿ   ÿÿÿ–––ÿÿÿsssÿÿÿzzzÿÿÿŽŽŽÿÿÿ«««ÿÿÿ¹¹¹ÿÿÿ–––ÿÿÿwwwÿÿÿ‹‹‹ÿÿÿ´´´ÿÿÿÃÃÃÿÿÿŒŒŒÿÿÿ}}}ÿÿÿªªªÿÿÿ§§§ÿÿÿÇÇÇÿÿÿ®®®ÿÿÿºººÿÿÿ€€€ÿÿÿªªªÿÿÿãããÿÿÿÉÉÉÿÿÿ®®®ÿÿÿÿÿÿãããÿÿÿŽŽŽÿÿÿ¯¯¯ÿÿÿ°°°ÿÿÿÿÿÿŽŽŽÿÿÿ}}}ÿÿÿ………ÿÿÿ´´´ÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ{{{ÿÿÿ´´´ÿÿÿÆÆÆÿÿÿ999ÿÿÿÿÿÿÿÿÿUUUÿÿÿŽŽŽÿÿÿ«««ÿÿÿ¹¹¹ÿÿÿ–––ÿÿÿwwwÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2xxxÿÿÿƒƒƒÿÿÿ€€€ÿÿÿrrrÿÿÿÿÿÿÿÿÿUUUÿÿÿwwwÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿ|||ÿÿÿ~~~ÿÿÿ………ÿÿÿuuuÿÿÿ999ÿÿÿrrrÿÿÿÿÿÿqqqÿÿÿ„„„ÿÿÿÿÿÿãããÿÿÿ~~~ÿÿÿ‚‚‚ÿÿÿŽŽŽÿÿÿãããÿÿÿ~~~ÿÿÿ„„„ÿÿÿUUUÿÿÿ………ÿÿÿÿÿÿªªªÿÿÿwwwÿÿÿˆˆˆÿÿÿªªªÿÿÿuuuÿÿÿ{{{ÿÿÿxxxÿÿÿƒƒƒÿÿÿ€€€ÿÿÿ………ÿÿÿwwwÿÿÿ{{{ÿÿÿ‡‡‡ÿÿÿwwwÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿ}}}ÿÿÿ{{{ÿÿÿ‚‚‚ÿÿÿ|||ÿÿÿ~~~ÿÿÿ………ÿÿÿuuuÿÿÿsssÿÿÿÿÿÿÿÿÿqqqÿÿÿ„„„ÿÿÿ‚‚‚ÿÿÿzzzÿÿÿ~~~ÿÿÿ‚‚‚ÿÿÿƒƒƒÿÿÿ|||ÿÿÿ~~~ÿÿÿ„„„ÿÿÿpppÿÿÿ………ÿÿÿÿÿÿzzzÿÿÿwwwÿÿÿˆˆˆÿÿÿ|||ÿÿÿuuuÿÿÿ{{{ÿÿÿxxxÿÿÿƒƒƒÿÿÿ€€€ÿÿÿ………ÿÿÿwwwÿÿÿ{{{ÿÿÿ‡‡‡ÿÿÿwwwÿÿÿÿÿÿãããÿÿÿ‚‚‚ÿÿÿŽŽŽÿÿÿ{{{ÿÿÿ‚‚‚ÿÿÿ|||ÿÿÿrrrÿÿÿ………ÿÿÿuuuÿÿÿÇÇÇÿÿÿŽŽŽÿÿÿÿÿÿqqqÿÿÿ„„„ÿÿÿrrrÿÿÿUUUÿÿÿ~~~ÿÿÿ‚‚‚ÿÿÿƒƒƒÿÿÿ999ÿÿÿÿÿÿÇÇÇÿÿÿpppÿÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿuuuÿÿÿ{{{ÿÿÿxxxÿÿÿƒƒƒÿÿÿãããÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ªªªÿÿÿ333ÿÿÿÿÿÿbbbÿÿÿŽŽŽÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿ‡‡‡ÿÿÿqqqÿÿÿfffÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿ999ÿÿÿÿÿÿ$$$ÿÿÿ>>>ÿÿÿÿÿÿ999ÿÿÿÇÇÇÿÿÿgggÿÿÿÿÿÿÇÇÇÿÿÿ999ÿÿÿzzzÿÿÿŒŒŒÿÿÿcccÿÿÿUUUÿÿÿ---ÿÿÿ555ÿÿÿrrrÿÿÿˆˆˆÿÿÿ"""ÿÿÿãããÿÿÿ...ÿÿÿdddÿÿÿªªªÿÿÿ~~~ÿÿÿ444ÿÿÿ333ÿÿÿÿÿÿbbbÿÿÿŽŽŽÿÿÿdddÿÿÿÿÿÿ$$$ÿÿÿ???ÿÿÿ‡‡‡ÿÿÿqqqÿÿÿfffÿÿÿÿÿÿ,,,ÿÿÿ'''ÿÿÿwwwÿÿÿÿÿÿ$$$ÿÿÿ>>>ÿÿÿÿÿÿeeeÿÿÿvvvÿÿÿgggÿÿÿÿÿÿ===ÿÿÿ&&&ÿÿÿzzzÿÿÿŒŒŒÿÿÿcccÿÿÿ000ÿÿÿ---ÿÿÿ555ÿÿÿ’’’ÿÿÿˆˆˆÿÿÿ"""ÿÿÿ&&&ÿÿÿ...ÿÿÿdddÿÿÿƒƒƒÿÿÿ~~~ÿÿÿ444ÿÿÿ333ÿÿÿÿÿÿbbbÿÿÿŽŽŽÿÿÿdddÿÿÿÿÿÿ$$$ÿÿÿ???ÿÿÿ‡‡‡ÿÿÿªªªÿÿÿfffÿÿÿÿÿÿ,,,ÿÿÿÇÇÇÿÿÿwwwÿÿÿÿÿÿ999ÿÿÿ>>>ÿÿÿÿÿÿeeeÿÿÿãããÿÿÿÿÿÿÿÿÿ===ÿÿÿ&&&ÿÿÿrrrÿÿÿÿÿÿãããÿÿÿ000ÿÿÿ---ÿÿÿ555ÿÿÿÿÿÿÿÿÿÿÿÿ&&&ÿÿÿ...ÿÿÿdddÿÿÿƒƒƒÿÿÿ~~~ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿ999ÿÿÿ)))ÿÿÿtttÿÿÿbbbÿÿÿ¥¥¥ÿÿÿœœœÿÿÿrrrÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿƒƒƒÿÿÿ„„„ÿÿÿÿÿÿãããÿÿÿÿÿÿ999ÿÿÿXXXÿÿÿaaaÿÿÿEEEÿÿÿ’’’ÿÿÿÿÿÿ–––ÿÿÿwwwÿÿÿZZZÿÿÿrrrÿÿÿãããÿÿÿCCCÿÿÿ£££ÿÿÿŽŽŽÿÿÿÿÿÿ^^^ÿÿÿÇÇÇÿÿÿhhhÿÿÿPPPÿÿÿuuuÿÿÿdddÿÿÿ¡¡¡ÿÿÿhhhÿÿÿƒƒƒÿÿÿaaaÿÿÿVVVÿÿÿ)))ÿÿÿtttÿÿÿbbbÿÿÿ¥¥¥ÿÿÿœœœÿÿÿ~~~ÿÿÿ===ÿÿÿgggÿÿÿ)))ÿÿÿƒƒƒÿÿÿ„„„ÿÿÿÿÿÿpppÿÿÿcccÿÿÿ\\\ÿÿÿXXXÿÿÿaaaÿÿÿEEEÿÿÿ’’’ÿÿÿkkkÿÿÿ–––ÿÿÿwwwÿÿÿZZZÿÿÿ///ÿÿÿXXXÿÿÿCCCÿÿÿ£££ÿÿÿ———ÿÿÿÿÿÿ^^^ÿÿÿBBBÿÿÿhhhÿÿÿPPPÿÿÿuuuÿÿÿdddÿÿÿ¡¡¡ÿÿÿhhhÿÿÿƒƒƒÿÿÿaaaÿÿÿVVVÿÿÿ)))ÿÿÿtttÿÿÿbbbÿÿÿ¥¥¥ÿÿÿœœœÿÿÿ~~~ÿÿÿ===ÿÿÿgggÿÿÿ)))ÿÿÿƒƒƒÿÿÿ„„„ÿÿÿÿÿÿãããÿÿÿÇÇÇÿÿÿ\\\ÿÿÿXXXÿÿÿaaaÿÿÿÿÿÿãããÿÿÿkkkÿÿÿ–––ÿÿÿŽŽŽÿÿÿÿÿÿãããÿÿÿXXXÿÿÿCCCÿÿÿãããÿÿÿÿÿÿÿÿÿrrrÿÿÿBBBÿÿÿhhhÿÿÿPPPÿÿÿuuuÿÿÿdddÿÿÿ999ÿÿÿÿÿÿÿÿÿrrrÿÿÿVVVÿÿÿ)))ÿÿÿtttÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ãããÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ|||ÿÿÿˆˆˆÿÿÿoooÿÿÿ{{{ÿÿÿãããÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ………ÿÿÿÿÿÿrrrÿÿÿƒƒƒÿÿÿ999ÿÿÿUUUÿÿÿfffÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿUUUÿÿÿ{{{ÿÿÿmmmÿÿÿÿÿÿUUUÿÿÿuuuÿÿÿÿÿÿ„„„ÿÿÿÇÇÇÿÿÿwwwÿÿÿ‡‡‡ÿÿÿãããÿÿÿ[[[ÿÿÿtttÿÿÿpppÿÿÿŠŠŠÿÿÿnnnÿÿÿxxxÿÿÿ~~~ÿÿÿÿÿÿiiiÿÿÿ„„„ÿÿÿ|||ÿÿÿˆˆˆÿÿÿoooÿÿÿ{{{ÿÿÿ~~~ÿÿÿÿÿÿiiiÿÿÿ†††ÿÿÿ………ÿÿÿÿÿÿrrrÿÿÿƒƒƒÿÿÿzzzÿÿÿ………ÿÿÿfffÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿrrrÿÿÿ{{{ÿÿÿmmmÿÿÿÿÿÿpppÿÿÿuuuÿÿÿÿÿÿ„„„ÿÿÿhhhÿÿÿwwwÿÿÿ‡‡‡ÿÿÿˆˆˆÿÿÿ[[[ÿÿÿtttÿÿÿpppÿÿÿŠŠŠÿÿÿnnnÿÿÿxxxÿÿÿ~~~ÿÿÿÿÿÿiiiÿÿÿ„„„ÿÿÿ|||ÿÿÿˆˆˆÿÿÿoooÿÿÿ{{{ÿÿÿ~~~ÿÿÿÿÿÿiiiÿÿÿ†††ÿÿÿªªªÿÿÿÿÿÿrrrÿÿÿƒƒƒÿÿÿŽŽŽÿÿÿÇÇÇÿÿÿfffÿÿÿŽŽŽÿÿÿÇÇÇÿÿÿÿÿÿãããÿÿÿ{{{ÿÿÿmmmÿÿÿãããÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ„„„ÿÿÿhhhÿÿÿwwwÿÿÿ‡‡‡ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿ999ÿÿÿŠŠŠÿÿÿnnnÿÿÿxxxÿÿÿ~~~ÿÿÿãããÿÿÿ999ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ƒƒƒÿÿÿÿÿÿÿÿÿãããÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿ”””ÿÿÿ‰‰‰ÿÿÿŽŽŽÿÿÿÿÿÿrrrÿÿÿ   ÿÿÿ€€€ÿÿÿÿÿÿ}}}ÿÿÿrrrÿÿÿrrrÿÿÿ£££ÿÿÿuuuÿÿÿ‰‰‰ÿÿÿãããÿÿÿŽŽŽÿÿÿ|||ÿÿÿ¬¬¬ÿÿÿãããÿÿÿÇÇÇÿÿÿzzzÿÿÿ¥¥¥ÿÿÿãããÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿœœœÿÿÿ‚‚‚ÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ···ÿÿÿ~~~ÿÿÿœœœÿÿÿˆˆˆÿÿÿŠŠŠÿÿÿ‡‡‡ÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿ”””ÿÿÿ‰‰‰ÿÿÿ‚‚‚ÿÿÿÿÿÿ¤¤¤ÿÿÿ   ÿÿÿ€€€ÿÿÿÿÿÿ}}}ÿÿÿ¦¦¦ÿÿÿŠŠŠÿÿÿ£££ÿÿÿuuuÿÿÿ‰‰‰ÿÿÿÿÿÿ©©©ÿÿÿ|||ÿÿÿ¬¬¬ÿÿÿvvvÿÿÿ€€€ÿÿÿzzzÿÿÿ¥¥¥ÿÿÿ™™™ÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿœœœÿÿÿ‚‚‚ÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ···ÿÿÿ~~~ÿÿÿœœœÿÿÿˆˆˆÿÿÿŠŠŠÿÿÿ‡‡‡ÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿ”””ÿÿÿãããÿÿÿ‚‚‚ÿÿÿÿÿÿ¤¤¤ÿÿÿãããÿÿÿŽŽŽÿÿÿÿÿÿ}}}ÿÿÿãããÿÿÿÿÿÿ£££ÿÿÿuuuÿÿÿ‰‰‰ÿÿÿÇÇÇÿÿÿÿÿÿUUUÿÿÿ¬¬¬ÿÿÿvvvÿÿÿ€€€ÿÿÿzzzÿÿÿ¥¥¥ÿÿÿrrrÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿœœœÿÿÿ‚‚‚ÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿrrrÿÿÿ¦¦¦ÿÿÿvvvÿÿÿsssÿÿÿÿÿÿãããÿÿÿ999ÿÿÿÿÿÿÿÿÿrrrÿÿÿÿÿÿÍÍÍÿÿÿÀÀÀÿÿÿÃÃÃÿÿÿ~~~ÿÿÿ999ÿÿÿÿÿÿÌÌÌÿÿÿ¸¸¸ÿÿÿ£££ÿÿÿ~~~ÿÿÿŽŽŽÿÿÿrrrÿÿÿÖÖÖÿÿÿ¼¼¼ÿÿÿwwwÿÿÿãããÿÿÿÇÇÇÿÿÿÃÃÃÿÿÿªªªÿÿÿªªªÿÿÿ•••ÿÿÿÿÿÿ¶¶¶ÿÿÿºººÿÿÿÆÆÆÿÿÿ‘‘‘ÿÿÿ}}}ÿÿÿmmmÿÿÿ»»»ÿÿÿÀÀÀÿÿÿ¦¦¦ÿÿÿvvvÿÿÿsssÿÿÿÿÿÿÈÈÈÿÿÿÂÂÂÿÿÿ£££ÿÿÿrrrÿÿÿ’’’ÿÿÿÿÿÿÍÍÍÿÿÿÀÀÀÿÿÿÃÃÃÿÿÿ~~~ÿÿÿÿÿÿ¼¼¼ÿÿÿÌÌÌÿÿÿ¸¸¸ÿÿÿ£££ÿÿÿ~~~ÿÿÿÿÿÿ¸¸¸ÿÿÿÖÖÖÿÿÿ¼¼¼ÿÿÿwwwÿÿÿÿÿÿ¦¦¦ÿÿÿÃÃÃÿÿÿªªªÿÿÿ²²²ÿÿÿ•••ÿÿÿÿÿÿ¶¶¶ÿÿÿºººÿÿÿÆÆÆÿÿÿ‘‘‘ÿÿÿ}}}ÿÿÿmmmÿÿÿ»»»ÿÿÿÀÀÀÿÿÿ¦¦¦ÿÿÿvvvÿÿÿsssÿÿÿÿÿÿÈÈÈÿÿÿÂÂÂÿÿÿ£££ÿÿÿrrrÿÿÿ’’’ÿÿÿÿÿÿÍÍÍÿÿÿÀÀÀÿÿÿÃÃÃÿÿÿrrrÿÿÿÿÿÿ¼¼¼ÿÿÿÌÌÌÿÿÿ999ÿÿÿ£££ÿÿÿ~~~ÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿŽŽŽÿÿÿwwwÿÿÿÿÿÿ¦¦¦ÿÿÿÃÃÃÿÿÿãããÿÿÿÿÿÿÿÿÿªªªÿÿÿ¶¶¶ÿÿÿºººÿÿÿÆÆÆÿÿÿ‘‘‘ÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿvvvÿÿÿsssÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2UUUÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿPPPÿÿÿFFFÿÿÿÿÿÿXXXÿÿÿãããÿÿÿ999ÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿRRRÿÿÿSSSÿÿÿzzzÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿãããÿÿÿMMMÿÿÿRRRÿÿÿ444ÿÿÿÇÇÇÿÿÿŽŽŽÿÿÿ———ÿÿÿÿÿÿyyyÿÿÿãããÿÿÿ!!!ÿÿÿ___ÿÿÿsssÿÿÿãããÿÿÿ”””ÿÿÿBBBÿÿÿZZZÿÿÿ[[[ÿÿÿLLLÿÿÿZZZÿÿÿ]]]ÿÿÿ:::ÿÿÿnnnÿÿÿ•••ÿÿÿtttÿÿÿPPPÿÿÿFFFÿÿÿÿÿÿXXXÿÿÿŸŸŸÿÿÿ„„„ÿÿÿžžžÿÿÿZZZÿÿÿÿÿÿRRRÿÿÿSSSÿÿÿzzzÿÿÿÿÿÿFFFÿÿÿYYYÿÿÿyyyÿÿÿMMMÿÿÿRRRÿÿÿ444ÿÿÿ%%%ÿÿÿ’’’ÿÿÿ———ÿÿÿÿÿÿyyyÿÿÿ<<<ÿÿÿ!!!ÿÿÿ___ÿÿÿsssÿÿÿžžžÿÿÿ”””ÿÿÿBBBÿÿÿZZZÿÿÿ[[[ÿÿÿLLLÿÿÿZZZÿÿÿ]]]ÿÿÿ:::ÿÿÿnnnÿÿÿ•••ÿÿÿtttÿÿÿPPPÿÿÿFFFÿÿÿÿÿÿXXXÿÿÿŸŸŸÿÿÿ„„„ÿÿÿžžžÿÿÿZZZÿÿÿÇÇÇÿÿÿRRRÿÿÿSSSÿÿÿzzzÿÿÿUUUÿÿÿFFFÿÿÿYYYÿÿÿyyyÿÿÿŽŽŽÿÿÿÿÿÿãããÿÿÿ%%%ÿÿÿ’’’ÿÿÿ———ÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿrrrÿÿÿ___ÿÿÿsssÿÿÿžžžÿÿÿ”””ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿUUUÿÿÿãããÿÿÿ]]]ÿÿÿ:::ÿÿÿnnnÿÿÿ•••ÿÿÿtttÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2CCCÿÿÿzzzÿÿÿ………ÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿBBBÿÿÿcccÿÿÿ|||ÿÿÿ;;;ÿÿÿãããÿÿÿ999ÿÿÿÿÿÿUUUÿÿÿiiiÿÿÿGGGÿÿÿ„„„ÿÿÿmmmÿÿÿ$$$ÿÿÿ999ÿÿÿŽŽŽÿÿÿvvvÿÿÿtttÿÿÿ???ÿÿÿãããÿÿÿŽŽŽÿÿÿ%%%ÿÿÿoooÿÿÿŽŽŽÿÿÿ^^^ÿÿÿqqqÿÿÿrrrÿÿÿXXXÿÿÿ|||ÿÿÿuuuÿÿÿ666ÿÿÿ“““ÿÿÿ[[[ÿÿÿCCCÿÿÿzzzÿÿÿ………ÿÿÿ'''ÿÿÿwwwÿÿÿ"""ÿÿÿkkkÿÿÿƒƒƒÿÿÿBBBÿÿÿcccÿÿÿ|||ÿÿÿ;;;ÿÿÿsssÿÿÿ{{{ÿÿÿTTTÿÿÿpppÿÿÿiiiÿÿÿGGGÿÿÿ„„„ÿÿÿmmmÿÿÿ$$$ÿÿÿyyyÿÿÿ111ÿÿÿvvvÿÿÿtttÿÿÿ???ÿÿÿkkkÿÿÿ„„„ÿÿÿ%%%ÿÿÿoooÿÿÿŽŽŽÿÿÿ^^^ÿÿÿqqqÿÿÿrrrÿÿÿXXXÿÿÿ|||ÿÿÿuuuÿÿÿ666ÿÿÿ“““ÿÿÿ[[[ÿÿÿCCCÿÿÿzzzÿÿÿ………ÿÿÿ'''ÿÿÿwwwÿÿÿ"""ÿÿÿkkkÿÿÿƒƒƒÿÿÿBBBÿÿÿcccÿÿÿ|||ÿÿÿ;;;ÿÿÿãããÿÿÿ{{{ÿÿÿTTTÿÿÿªªªÿÿÿiiiÿÿÿGGGÿÿÿ„„„ÿÿÿŽŽŽÿÿÿrrrÿÿÿyyyÿÿÿ111ÿÿÿvvvÿÿÿtttÿÿÿ???ÿÿÿ999ÿÿÿ999ÿÿÿ%%%ÿÿÿoooÿÿÿŽŽŽÿÿÿ^^^ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿuuuÿÿÿ666ÿÿÿ“““ÿÿÿ[[[ÿÿÿCCCÿÿÿzzzÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2’’’ÿÿÿ~~~ÿÿÿÿÿÿzzzÿÿÿjjjÿÿÿ†††ÿÿÿƒƒƒÿÿÿrrrÿÿÿÿÿÿÿÿÿUUUÿÿÿ‡‡‡ÿÿÿqqqÿÿÿƒƒƒÿÿÿ‚‚‚ÿÿÿãããÿÿÿ999ÿÿÿÿÿÿªªªÿÿÿyyyÿÿÿgggÿÿÿ}}}ÿÿÿÿÿÿªªªÿÿÿrrrÿÿÿÿÿÿPPPÿÿÿzzzÿÿÿrrrÿÿÿãããÿÿÿ|||ÿÿÿÿÿÿTTTÿÿÿmmmÿÿÿƒƒƒÿÿÿ€€€ÿÿÿwwwÿÿÿiiiÿÿÿ~~~ÿÿÿdddÿÿÿ’’’ÿÿÿ~~~ÿÿÿÿÿÿzzzÿÿÿjjjÿÿÿ†††ÿÿÿƒƒƒÿÿÿxxxÿÿÿŽŽŽÿÿÿ[[[ÿÿÿ€€€ÿÿÿ‡‡‡ÿÿÿqqqÿÿÿƒƒƒÿÿÿ‚‚‚ÿÿÿfffÿÿÿhhhÿÿÿŠŠŠÿÿÿ‰‰‰ÿÿÿyyyÿÿÿgggÿÿÿ}}}ÿÿÿÿÿÿvvvÿÿÿwwwÿÿÿÿÿÿPPPÿÿÿzzzÿÿÿrrrÿÿÿpppÿÿÿ|||ÿÿÿÿÿÿTTTÿÿÿmmmÿÿÿƒƒƒÿÿÿ€€€ÿÿÿwwwÿÿÿiiiÿÿÿ~~~ÿÿÿdddÿÿÿ’’’ÿÿÿ~~~ÿÿÿÿÿÿzzzÿÿÿjjjÿÿÿ†††ÿÿÿƒƒƒÿÿÿxxxÿÿÿŽŽŽÿÿÿ[[[ÿÿÿ€€€ÿÿÿ‡‡‡ÿÿÿqqqÿÿÿÇÇÇÿÿÿ‚‚‚ÿÿÿfffÿÿÿhhhÿÿÿrrrÿÿÿÇÇÇÿÿÿyyyÿÿÿgggÿÿÿ}}}ÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿÇÇÇÿÿÿPPPÿÿÿzzzÿÿÿrrrÿÿÿªªªÿÿÿÿÿÿÿÿÿªªªÿÿÿmmmÿÿÿƒƒƒÿÿÿ€€€ÿÿÿwwwÿÿÿiiiÿÿÿ~~~ÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿªªªÿÿÿ‰‰‰ÿÿÿ}}}ÿÿÿÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿŸŸŸÿÿÿÇÇÇÿÿÿUUUÿÿÿÿÿÿUUUÿÿÿ{{{ÿÿÿÿÿÿ   ÿÿÿ‡‡‡ÿÿÿãããÿÿÿ999ÿÿÿ999ÿÿÿ–––ÿÿÿ„„„ÿÿÿyyyÿÿÿ“““ÿÿÿ„„„ÿÿÿŽŽŽÿÿÿÿÿÿ’’’ÿÿÿuuuÿÿÿÿÿÿ‚‚‚ÿÿÿ¤¤¤ÿÿÿ›››ÿÿÿ„„„ÿÿÿ}}}ÿÿÿ………ÿÿÿÿÿÿ|||ÿÿÿ–––ÿÿÿ~~~ÿÿÿÿÿÿ€€€ÿÿÿ›››ÿÿÿ‰‰‰ÿÿÿ}}}ÿÿÿÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿŸŸŸÿÿÿ„„„ÿÿÿÿÿÿ†††ÿÿÿ„„„ÿÿÿ{{{ÿÿÿÿÿÿ   ÿÿÿ‡‡‡ÿÿÿrrrÿÿÿ‡‡‡ÿÿÿ–––ÿÿÿ–––ÿÿÿ„„„ÿÿÿyyyÿÿÿ“““ÿÿÿ„„„ÿÿÿ–––ÿÿÿÿÿÿ’’’ÿÿÿuuuÿÿÿÿÿÿ‚‚‚ÿÿÿ¤¤¤ÿÿÿ›››ÿÿÿ„„„ÿÿÿ}}}ÿÿÿ………ÿÿÿÿÿÿ|||ÿÿÿ–––ÿÿÿ~~~ÿÿÿÿÿÿ€€€ÿÿÿ›››ÿÿÿ‰‰‰ÿÿÿ}}}ÿÿÿÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿŸŸŸÿÿÿ„„„ÿÿÿÿÿÿ†††ÿÿÿ„„„ÿÿÿ{{{ÿÿÿªªªÿÿÿ   ÿÿÿ‡‡‡ÿÿÿrrrÿÿÿ‡‡‡ÿÿÿ–––ÿÿÿrrrÿÿÿªªªÿÿÿyyyÿÿÿ“““ÿÿÿ„„„ÿÿÿÇÇÇÿÿÿÿÿÿUUUÿÿÿuuuÿÿÿÿÿÿ‚‚‚ÿÿÿ¤¤¤ÿÿÿ›››ÿÿÿ„„„ÿÿÿÇÇÇÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿ€€€ÿÿÿ›››ÿÿÿ‰‰‰ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2»»»ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ999ÿÿÿÇÇÇÿÿÿ¬¬¬ÿÿÿmmmÿÿÿZZZÿÿÿ}}}ÿÿÿzzzÿÿÿ’’’ÿÿÿªªªÿÿÿÿÿÿUUUÿÿÿ}}}ÿÿÿ___ÿÿÿXXXÿÿÿšššÿÿÿãããÿÿÿ999ÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ}}}ÿÿÿ[[[ÿÿÿQQQÿÿÿÇÇÇÿÿÿãããÿÿÿŽŽŽÿÿÿ¶¶¶ÿÿÿ‘‘‘ÿÿÿfffÿÿÿÿÿÿ___ÿÿÿvvvÿÿÿÊÊÊÿÿÿ”””ÿÿÿ©©©ÿÿÿ»»»ÿÿÿRRRÿÿÿPPPÿÿÿ‹‹‹ÿÿÿpppÿÿÿËËËÿÿÿ¬¬¬ÿÿÿ’’’ÿÿÿ¬¬¬ÿÿÿmmmÿÿÿZZZÿÿÿ}}}ÿÿÿzzzÿÿÿ’’’ÿÿÿÅÅÅÿÿÿ¬¬¬ÿÿÿ–––ÿÿÿ}}}ÿÿÿ___ÿÿÿXXXÿÿÿšššÿÿÿŽŽŽÿÿÿÑÑÑÿÿÿ˜˜˜ÿÿÿ„„„ÿÿÿ}}}ÿÿÿ[[[ÿÿÿQQQÿÿÿšššÿÿÿ™™™ÿÿÿŽŽŽÿÿÿ¶¶¶ÿÿÿ‘‘‘ÿÿÿfffÿÿÿÿÿÿ___ÿÿÿvvvÿÿÿÊÊÊÿÿÿ”””ÿÿÿ©©©ÿÿÿ»»»ÿÿÿRRRÿÿÿPPPÿÿÿ‹‹‹ÿÿÿpppÿÿÿËËËÿÿÿ¬¬¬ÿÿÿ’’’ÿÿÿ¬¬¬ÿÿÿmmmÿÿÿZZZÿÿÿ}}}ÿÿÿzzzÿÿÿÇÇÇÿÿÿÅÅÅÿÿÿ¬¬¬ÿÿÿ–––ÿÿÿ}}}ÿÿÿãããÿÿÿŽŽŽÿÿÿšššÿÿÿŽŽŽÿÿÿÑÑÑÿÿÿãããÿÿÿ999ÿÿÿŽŽŽÿÿÿ[[[ÿÿÿQQQÿÿÿšššÿÿÿ™™™ÿÿÿŽŽŽÿÿÿ¶¶¶ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÊÊÊÿÿÿ”””ÿÿÿ©©©ÿÿÿ»»»ÿÿÿRRRÿÿÿPPPÿÿÿ‹‹‹ÿÿÿŽŽŽÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2vvvÿÿÿ®®®ÿÿÿ   ÿÿÿnnnÿÿÿtttÿÿÿÇÇÇÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿãããÿÿÿŒŒŒÿÿÿ···ÿÿÿ‡‡‡ÿÿÿÿÿÿpppÿÿÿ†††ÿÿÿUUUÿÿÿ999ÿÿÿãããÿÿÿƒƒƒÿÿÿÿÿÿ¢¢¢ÿÿÿãããÿÿÿUUUÿÿÿãããÿÿÿŒŒŒÿÿÿeeeÿÿÿ¥¥¥ÿÿÿÁÁÁÿÿÿÿÿÿrrrÿÿÿ€€€ÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿ•••ÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿvvvÿÿÿ®®®ÿÿÿ   ÿÿÿnnnÿÿÿtttÿÿÿtttÿÿÿ•••ÿÿÿ«««ÿÿÿdddÿÿÿjjjÿÿÿ{{{ÿÿÿ{{{ÿÿÿŒŒŒÿÿÿ···ÿÿÿ‡‡‡ÿÿÿÿÿÿpppÿÿÿ†††ÿÿÿ¾¾¾ÿÿÿ¬¬¬ÿÿÿnnnÿÿÿƒƒƒÿÿÿÿÿÿ¢¢¢ÿÿÿ®®®ÿÿÿyyyÿÿÿ|||ÿÿÿŒŒŒÿÿÿeeeÿÿÿ¥¥¥ÿÿÿÁÁÁÿÿÿÿÿÿrrrÿÿÿ€€€ÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿ•••ÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿvvvÿÿÿ®®®ÿÿÿ   ÿÿÿnnnÿÿÿtttÿÿÿtttÿÿÿ•••ÿÿÿ«««ÿÿÿdddÿÿÿjjjÿÿÿ{{{ÿÿÿ{{{ÿÿÿŒŒŒÿÿÿ···ÿÿÿ‡‡‡ÿÿÿÿÿÿÇÇÇÿÿÿ†††ÿÿÿ¾¾¾ÿÿÿ¬¬¬ÿÿÿnnnÿÿÿrrrÿÿÿÇÇÇÿÿÿ¢¢¢ÿÿÿ®®®ÿÿÿyyyÿÿÿ|||ÿÿÿŒŒŒÿÿÿeeeÿÿÿUUUÿÿÿÿÿÿ999ÿÿÿªªªÿÿÿ€€€ÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿ•••ÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿrrrÿÿÿãããÿÿÿvvvÿÿÿ|||ÿÿÿbbbÿÿÿ888ÿÿÿƒƒƒÿÿÿwwwÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ}}}ÿÿÿ~~~ÿÿÿ|||ÿÿÿ---ÿÿÿMMMÿÿÿ~~~ÿÿÿªªªÿÿÿrrrÿÿÿãããÿÿÿ555ÿÿÿ………ÿÿÿ}}}ÿÿÿãããÿÿÿªªªÿÿÿYYYÿÿÿ===ÿÿÿÿÿÿÿÿÿÿÿÿˆˆˆÿÿÿ000ÿÿÿZZZÿÿÿˆˆˆÿÿÿ€€€ÿÿÿˆˆˆÿÿÿyyyÿÿÿ111ÿÿÿdddÿÿÿÿÿÿvvvÿÿÿ|||ÿÿÿbbbÿÿÿ888ÿÿÿƒƒƒÿÿÿwwwÿÿÿ€€€ÿÿÿyyyÿÿÿZZZÿÿÿ%%%ÿÿÿwwwÿÿÿ}}}ÿÿÿ~~~ÿÿÿ|||ÿÿÿ---ÿÿÿMMMÿÿÿ~~~ÿÿÿŠŠŠÿÿÿ‚‚‚ÿÿÿ\\\ÿÿÿ555ÿÿÿ………ÿÿÿ}}}ÿÿÿ}}}ÿÿÿ~~~ÿÿÿYYYÿÿÿ===ÿÿÿÿÿÿÿÿÿÿÿÿˆˆˆÿÿÿ000ÿÿÿZZZÿÿÿˆˆˆÿÿÿ€€€ÿÿÿˆˆˆÿÿÿyyyÿÿÿ111ÿÿÿdddÿÿÿÿÿÿvvvÿÿÿ|||ÿÿÿbbbÿÿÿ888ÿÿÿƒƒƒÿÿÿwwwÿÿÿ€€€ÿÿÿyyyÿÿÿZZZÿÿÿ%%%ÿÿÿwwwÿÿÿ}}}ÿÿÿ~~~ÿÿÿ|||ÿÿÿÇÇÇÿÿÿMMMÿÿÿ~~~ÿÿÿŠŠŠÿÿÿ‚‚‚ÿÿÿ\\\ÿÿÿ555ÿÿÿÇÇÇÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿYYYÿÿÿ===ÿÿÿÿÿÿÿÿÿÿÿÿˆˆˆÿÿÿãããÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿÿÿÿvvvÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2UUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿXXXÿÿÿhhhÿÿÿƒƒƒÿÿÿ;;;ÿÿÿƒƒƒÿÿÿ€€€ÿÿÿãããÿÿÿUUUÿÿÿÿÿÿÿÿÿªªªÿÿÿyyyÿÿÿ333ÿÿÿ‚‚‚ÿÿÿ111ÿÿÿ€€€ÿÿÿrrrÿÿÿÇÇÇÿÿÿãããÿÿÿŠŠŠÿÿÿDDDÿÿÿwwwÿÿÿãããÿÿÿZZZÿÿÿwwwÿÿÿ~~~ÿÿÿLLLÿÿÿ†††ÿÿÿ………ÿÿÿJJJÿÿÿ{{{ÿÿÿhhhÿÿÿ]]]ÿÿÿŒŒŒÿÿÿÿÿÿ...ÿÿÿÿÿÿ111ÿÿÿrrrÿÿÿÿÿÿXXXÿÿÿhhhÿÿÿƒƒƒÿÿÿ;;;ÿÿÿƒƒƒÿÿÿ€€€ÿÿÿUUUÿÿÿhhhÿÿÿnnnÿÿÿMMMÿÿÿ€€€ÿÿÿyyyÿÿÿ333ÿÿÿ‚‚‚ÿÿÿ111ÿÿÿ€€€ÿÿÿrrrÿÿÿOOOÿÿÿvvvÿÿÿŠŠŠÿÿÿDDDÿÿÿwwwÿÿÿtttÿÿÿZZZÿÿÿwwwÿÿÿ~~~ÿÿÿLLLÿÿÿ†††ÿÿÿ………ÿÿÿJJJÿÿÿ{{{ÿÿÿhhhÿÿÿ]]]ÿÿÿŒŒŒÿÿÿÿÿÿ...ÿÿÿÿÿÿ111ÿÿÿrrrÿÿÿÿÿÿXXXÿÿÿhhhÿÿÿƒƒƒÿÿÿ;;;ÿÿÿƒƒƒÿÿÿ€€€ÿÿÿUUUÿÿÿhhhÿÿÿnnnÿÿÿMMMÿÿÿ€€€ÿÿÿyyyÿÿÿ333ÿÿÿ‚‚‚ÿÿÿŽŽŽÿÿÿUUUÿÿÿÇÇÇÿÿÿOOOÿÿÿvvvÿÿÿŠŠŠÿÿÿDDDÿÿÿwwwÿÿÿtttÿÿÿãããÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿ{{{ÿÿÿhhhÿÿÿ]]]ÿÿÿŒŒŒÿÿÿÿÿÿ...ÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2‚‚‚ÿÿÿ………ÿÿÿœœœÿÿÿ———ÿÿÿ€€€ÿÿÿÇÇÇÿÿÿŽŽŽÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿ^^^ÿÿÿhhhÿÿÿ???ÿÿÿVVVÿÿÿ———ÿÿÿ———ÿÿÿªªªÿÿÿUUUÿÿÿUUUÿÿÿÇÇÇÿÿÿSSSÿÿÿwwwÿÿÿ———ÿÿÿbbbÿÿÿÿÿÿ~~~ÿÿÿOOOÿÿÿ]]]ÿÿÿ\\\ÿÿÿMMMÿÿÿnnnÿÿÿŒŒŒÿÿÿ†††ÿÿÿ€€€ÿÿÿAAAÿÿÿWWWÿÿÿ888ÿÿÿ‚‚‚ÿÿÿ………ÿÿÿœœœÿÿÿ———ÿÿÿ€€€ÿÿÿlllÿÿÿPPPÿÿÿVVVÿÿÿyyyÿÿÿrrrÿÿÿ–––ÿÿÿÿÿÿ€€€ÿÿÿ^^^ÿÿÿhhhÿÿÿ???ÿÿÿVVVÿÿÿ———ÿÿÿ———ÿÿÿœœœÿÿÿ‰‰‰ÿÿÿFFFÿÿÿWWWÿÿÿSSSÿÿÿwwwÿÿÿ———ÿÿÿbbbÿÿÿÿÿÿ~~~ÿÿÿOOOÿÿÿ]]]ÿÿÿ\\\ÿÿÿMMMÿÿÿnnnÿÿÿŒŒŒÿÿÿ†††ÿÿÿ€€€ÿÿÿAAAÿÿÿWWWÿÿÿ888ÿÿÿ‚‚‚ÿÿÿ………ÿÿÿœœœÿÿÿ———ÿÿÿ€€€ÿÿÿlllÿÿÿPPPÿÿÿVVVÿÿÿyyyÿÿÿrrrÿÿÿ–––ÿÿÿÿÿÿ€€€ÿÿÿ^^^ÿÿÿhhhÿÿÿ???ÿÿÿVVVÿÿÿ———ÿÿÿ———ÿÿÿªªªÿÿÿÇÇÇÿÿÿFFFÿÿÿWWWÿÿÿSSSÿÿÿwwwÿÿÿ———ÿÿÿbbbÿÿÿÇÇÇÿÿÿUUUÿÿÿÿÿÿÿÿÿrrrÿÿÿãããÿÿÿnnnÿÿÿŒŒŒÿÿÿ†††ÿÿÿ€€€ÿÿÿAAAÿÿÿWWWÿÿÿ888ÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ªªªÿÿÿ‘‘‘ÿÿÿŠŠŠÿÿÿ}}}ÿÿÿqqqÿÿÿxxxÿÿÿ•••ÿÿÿÿÿÿgggÿÿÿŸŸŸÿÿÿÿÿÿ‚‚‚ÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿÿÿÿUUUÿÿÿÇÇÇÿÿÿÿÿÿƒƒƒÿÿÿ|||ÿÿÿŽŽŽÿÿÿuuuÿÿÿŒŒŒÿÿÿŽŽŽÿÿÿrrrÿÿÿ¥¥¥ÿÿÿ{{{ÿÿÿwwwÿÿÿ„„„ÿÿÿƒƒƒÿÿÿzzzÿÿÿ’’’ÿÿÿ™™™ÿÿÿyyyÿÿÿ„„„ÿÿÿkkkÿÿÿÿÿÿqqqÿÿÿ›››ÿÿÿ^^^ÿÿÿ‘‘‘ÿÿÿŠŠŠÿÿÿ}}}ÿÿÿqqqÿÿÿxxxÿÿÿ•••ÿÿÿÿÿÿgggÿÿÿŸŸŸÿÿÿÿÿÿ‚‚‚ÿÿÿrrrÿÿÿ|||ÿÿÿrrrÿÿÿ   ÿÿÿÿÿÿ~~~ÿÿÿÿÿÿƒƒƒÿÿÿ|||ÿÿÿŽŽŽÿÿÿuuuÿÿÿŒŒŒÿÿÿhhhÿÿÿsssÿÿÿ¥¥¥ÿÿÿ{{{ÿÿÿwwwÿÿÿ„„„ÿÿÿƒƒƒÿÿÿzzzÿÿÿ’’’ÿÿÿ™™™ÿÿÿyyyÿÿÿ„„„ÿÿÿkkkÿÿÿÿÿÿqqqÿÿÿ›››ÿÿÿ^^^ÿÿÿ‘‘‘ÿÿÿŠŠŠÿÿÿ}}}ÿÿÿqqqÿÿÿxxxÿÿÿ•••ÿÿÿÿÿÿgggÿÿÿŸŸŸÿÿÿÿÿÿ‚‚‚ÿÿÿrrrÿÿÿ|||ÿÿÿrrrÿÿÿ   ÿÿÿÿÿÿ~~~ÿÿÿÿÿÿƒƒƒÿÿÿ|||ÿÿÿŽŽŽÿÿÿuuuÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿŽŽŽÿÿÿ{{{ÿÿÿwwwÿÿÿ„„„ÿÿÿƒƒƒÿÿÿzzzÿÿÿ’’’ÿÿÿ™™™ÿÿÿyyyÿÿÿªªªÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿrrrÿÿÿªªªÿÿÿqqqÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ999ÿÿÿŽŽŽÿÿÿÇÇÇÿÿÿ®®®ÿÿÿƒƒƒÿÿÿnnnÿÿÿ­­­ÿÿÿÿÿÿ‰‰‰ÿÿÿ©©©ÿÿÿ„„„ÿÿÿ€€€ÿÿÿ¯¯¯ÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿŽŽŽÿÿÿ¾¾¾ÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿžžžÿÿÿƒƒƒÿÿÿvvvÿÿÿÇÇÇÿÿÿÿÿÿzzzÿÿÿªªªÿÿÿ€€€ÿÿÿzzzÿÿÿ¢¢¢ÿÿÿŽŽŽÿÿÿwwwÿÿÿ®®®ÿÿÿzzzÿÿÿŠŠŠÿÿÿ———ÿÿÿoooÿÿÿrrrÿÿÿ¹¹¹ÿÿÿ‡‡‡ÿÿÿ±±±ÿÿÿ‚‚‚ÿÿÿ{{{ÿÿÿ®®®ÿÿÿƒƒƒÿÿÿnnnÿÿÿ­­­ÿÿÿÿÿÿ‰‰‰ÿÿÿ©©©ÿÿÿ„„„ÿÿÿ€€€ÿÿÿ¯¯¯ÿÿÿ‡‡‡ÿÿÿ{{{ÿÿÿ»»»ÿÿÿ~~~ÿÿÿ¾¾¾ÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿžžžÿÿÿƒƒƒÿÿÿvvvÿÿÿ···ÿÿÿÿÿÿzzzÿÿÿªªªÿÿÿ€€€ÿÿÿzzzÿÿÿ¢¢¢ÿÿÿŽŽŽÿÿÿwwwÿÿÿ®®®ÿÿÿzzzÿÿÿŠŠŠÿÿÿ———ÿÿÿoooÿÿÿrrrÿÿÿ¹¹¹ÿÿÿ‡‡‡ÿÿÿ±±±ÿÿÿ‚‚‚ÿÿÿ{{{ÿÿÿ®®®ÿÿÿƒƒƒÿÿÿnnnÿÿÿ­­­ÿÿÿÿÿÿ‰‰‰ÿÿÿ©©©ÿÿÿ„„„ÿÿÿ€€€ÿÿÿ¯¯¯ÿÿÿ‡‡‡ÿÿÿªªªÿÿÿrrrÿÿÿªªªÿÿÿ¾¾¾ÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿžžžÿÿÿƒƒƒÿÿÿvvvÿÿÿ···ÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿwwwÿÿÿ®®®ÿÿÿzzzÿÿÿŠŠŠÿÿÿ———ÿÿÿoooÿÿÿrrrÿÿÿ¹¹¹ÿÿÿ‡‡‡ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ˆˆˆÿÿÿ½½½ÿÿÿ«««ÿÿÿlllÿÿÿ‹‹‹ÿÿÿªªªÿÿÿUUUÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿ{{{ÿÿÿ‚‚‚ÿÿÿ———ÿÿÿ•••ÿÿÿµµµÿÿÿŸŸŸÿÿÿhhhÿÿÿŠŠŠÿÿÿ{{{ÿÿÿÿÿÿªªªÿÿÿŽŽŽÿÿÿªªªÿÿÿŒŒŒÿÿÿ‡‡‡ÿÿÿ¯¯¯ÿÿÿºººÿÿÿ†††ÿÿÿ“““ÿÿÿÿÿÿ~~~ÿÿÿµµµÿÿÿ²²²ÿÿÿvvvÿÿÿ———ÿÿÿÿÿÿˆˆˆÿÿÿ½½½ÿÿÿ«««ÿÿÿlllÿÿÿ‹‹‹ÿÿÿoooÿÿÿ‰‰‰ÿÿÿ£££ÿÿÿƒƒƒÿÿÿ‚‚‚ÿÿÿyyyÿÿÿÿÿÿ¢¢¢ÿÿÿ«««ÿÿÿ{{{ÿÿÿ‚‚‚ÿÿÿ———ÿÿÿ•••ÿÿÿµµµÿÿÿŸŸŸÿÿÿhhhÿÿÿŠŠŠÿÿÿ{{{ÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿzzzÿÿÿŒŒŒÿÿÿ‡‡‡ÿÿÿ¯¯¯ÿÿÿºººÿÿÿ†††ÿÿÿ“““ÿÿÿÿÿÿ~~~ÿÿÿµµµÿÿÿ²²²ÿÿÿvvvÿÿÿ———ÿÿÿÿÿÿˆˆˆÿÿÿ½½½ÿÿÿ«««ÿÿÿlllÿÿÿ‹‹‹ÿÿÿoooÿÿÿ‰‰‰ÿÿÿ£££ÿÿÿƒƒƒÿÿÿ‚‚‚ÿÿÿyyyÿÿÿÿÿÿ¢¢¢ÿÿÿ«««ÿÿÿ{{{ÿÿÿ‚‚‚ÿÿÿÇÇÇÿÿÿ•••ÿÿÿµµµÿÿÿŸŸŸÿÿÿhhhÿÿÿŠŠŠÿÿÿ{{{ÿÿÿÿÿÿŽŽŽÿÿÿ999ÿÿÿUUUÿÿÿªªªÿÿÿÇÇÇÿÿÿ¯¯¯ÿÿÿºººÿÿÿ†††ÿÿÿ“““ÿÿÿÿÿÿ~~~ÿÿÿµµµÿÿÿ²²²ÿÿÿvvvÿÿÿ———ÿÿÿÿÿÿˆˆˆÿÿÿ½½½ÿÿÿªªªÿÿÿUUUÿÿÿ999ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2DDDÿÿÿÿÿÿÿÿÿKKKÿÿÿÿÿÿÿÿÿ+++ÿÿÿ333ÿÿÿ>>>ÿÿÿPPPÿÿÿWWWÿÿÿ555ÿÿÿÿÿÿ444ÿÿÿªªªÿÿÿrrrÿÿÿUUUÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿnnnÿÿÿ–––ÿÿÿ’’’ÿÿÿ---ÿÿÿ###ÿÿÿ###ÿÿÿYYYÿÿÿ^^^ÿÿÿYYYÿÿÿ:::ÿÿÿ@@@ÿÿÿ999ÿÿÿuuuÿÿÿQQQÿÿÿÿÿÿÿÿÿ ÿÿÿ„„„ÿÿÿ™™™ÿÿÿ———ÿÿÿDDDÿÿÿÿÿÿÿÿÿKKKÿÿÿÿÿÿÿÿÿ+++ÿÿÿ333ÿÿÿ>>>ÿÿÿPPPÿÿÿWWWÿÿÿ555ÿÿÿÿÿÿ444ÿÿÿ...ÿÿÿ†††ÿÿÿ‰‰‰ÿÿÿÿÿÿÿÿÿÿÿÿnnnÿÿÿ–––ÿÿÿ’’’ÿÿÿ---ÿÿÿ###ÿÿÿ###ÿÿÿYYYÿÿÿ^^^ÿÿÿYYYÿÿÿ:::ÿÿÿ@@@ÿÿÿ999ÿÿÿuuuÿÿÿQQQÿÿÿÿÿÿÿÿÿ ÿÿÿ„„„ÿÿÿ™™™ÿÿÿ———ÿÿÿDDDÿÿÿÿÿÿÿÿÿKKKÿÿÿÿÿÿÿÿÿ+++ÿÿÿ333ÿÿÿ>>>ÿÿÿPPPÿÿÿWWWÿÿÿ555ÿÿÿÿÿÿ444ÿÿÿ...ÿÿÿ†††ÿÿÿ‰‰‰ÿÿÿÿÿÿãããÿÿÿÇÇÇÿÿÿªªªÿÿÿ–––ÿÿÿ’’’ÿÿÿ---ÿÿÿ###ÿÿÿ###ÿÿÿYYYÿÿÿ^^^ÿÿÿYYYÿÿÿ:::ÿÿÿ@@@ÿÿÿ999ÿÿÿuuuÿÿÿQQQÿÿÿÇÇÇÿÿÿŽŽŽÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿªªªÿÿÿ|||ÿÿÿsssÿÿÿXXXÿÿÿzzzÿÿÿXXXÿÿÿ{{{ÿÿÿwwwÿÿÿŠŠŠÿÿÿ```ÿÿÿZZZÿÿÿsssÿÿÿÿÿÿ‰‰‰ÿÿÿNNNÿÿÿcccÿÿÿPPPÿÿÿªªªÿÿÿÇÇÇÿÿÿgggÿÿÿ```ÿÿÿ€€€ÿÿÿGGGÿÿÿ‚‚‚ÿÿÿlllÿÿÿeeeÿÿÿLLLÿÿÿRRRÿÿÿwwwÿÿÿwwwÿÿÿ}}}ÿÿÿdddÿÿÿxxxÿÿÿmmmÿÿÿqqqÿÿÿzzzÿÿÿpppÿÿÿVVVÿÿÿ|||ÿÿÿUUUÿÿÿŒŒŒÿÿÿ|||ÿÿÿsssÿÿÿXXXÿÿÿzzzÿÿÿXXXÿÿÿ{{{ÿÿÿwwwÿÿÿŠŠŠÿÿÿ```ÿÿÿZZZÿÿÿsssÿÿÿÿÿÿ‰‰‰ÿÿÿNNNÿÿÿcccÿÿÿPPPÿÿÿŒŒŒÿÿÿdddÿÿÿgggÿÿÿ```ÿÿÿ€€€ÿÿÿGGGÿÿÿ‚‚‚ÿÿÿlllÿÿÿeeeÿÿÿLLLÿÿÿRRRÿÿÿwwwÿÿÿwwwÿÿÿ}}}ÿÿÿdddÿÿÿxxxÿÿÿmmmÿÿÿqqqÿÿÿzzzÿÿÿpppÿÿÿVVVÿÿÿ|||ÿÿÿUUUÿÿÿŒŒŒÿÿÿ|||ÿÿÿsssÿÿÿXXXÿÿÿzzzÿÿÿXXXÿÿÿ{{{ÿÿÿwwwÿÿÿŠŠŠÿÿÿ```ÿÿÿZZZÿÿÿsssÿÿÿÿÿÿ‰‰‰ÿÿÿNNNÿÿÿcccÿÿÿPPPÿÿÿŒŒŒÿÿÿdddÿÿÿgggÿÿÿ```ÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿrrrÿÿÿªªªÿÿÿÇÇÇÿÿÿxxxÿÿÿmmmÿÿÿqqqÿÿÿzzzÿÿÿpppÿÿÿVVVÿÿÿ|||ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2’’’ÿÿÿªªªÿÿÿªªªÿÿÿªªªÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿUUUÿÿÿªªªÿÿÿãããÿÿÿƒƒƒÿÿÿzzzÿÿÿvvvÿÿÿvvvÿÿÿ‚‚‚ÿÿÿŠŠŠÿÿÿ~~~ÿÿÿwwwÿÿÿ‚‚‚ÿÿÿrrrÿÿÿ‚‚‚ÿÿÿsssÿÿÿ~~~ÿÿÿ‡‡‡ÿÿÿ„„„ÿÿÿÿÿÿ„„„ÿÿÿnnnÿÿÿnnnÿÿÿrrrÿÿÿ{{{ÿÿÿƒƒƒÿÿÿxxxÿÿÿ’’’ÿÿÿwwwÿÿÿƒƒƒÿÿÿ{{{ÿÿÿÿÿÿ|||ÿÿÿ€€€ÿÿÿŠŠŠÿÿÿvvvÿÿÿŒŒŒÿÿÿƒƒƒÿÿÿ………ÿÿÿwwwÿÿÿ‚‚‚ÿÿÿ~~~ÿÿÿ|||ÿÿÿÿÿÿƒƒƒÿÿÿzzzÿÿÿvvvÿÿÿvvvÿÿÿ‚‚‚ÿÿÿŠŠŠÿÿÿ~~~ÿÿÿwwwÿÿÿ‚‚‚ÿÿÿrrrÿÿÿ‚‚‚ÿÿÿsssÿÿÿ~~~ÿÿÿ‡‡‡ÿÿÿ„„„ÿÿÿÿÿÿ„„„ÿÿÿnnnÿÿÿnnnÿÿÿrrrÿÿÿ{{{ÿÿÿƒƒƒÿÿÿxxxÿÿÿ’’’ÿÿÿwwwÿÿÿƒƒƒÿÿÿ{{{ÿÿÿÿÿÿ|||ÿÿÿ€€€ÿÿÿŠŠŠÿÿÿvvvÿÿÿŒŒŒÿÿÿƒƒƒÿÿÿ………ÿÿÿwwwÿÿÿ‚‚‚ÿÿÿ~~~ÿÿÿ|||ÿÿÿÿÿÿƒƒƒÿÿÿzzzÿÿÿªªªÿÿÿrrrÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿªªªÿÿÿªªªÿÿÿrrrÿÿÿ‚‚‚ÿÿÿsssÿÿÿ~~~ÿÿÿ‡‡‡ÿÿÿ„„„ÿÿÿÿÿÿ„„„ÿÿÿnnnÿÿÿnnnÿÿÿrrrÿÿÿ{{{ÿÿÿƒƒƒÿÿÿxxxÿÿÿ’’’ÿÿÿwwwÿÿÿƒƒƒÿÿÿ{{{ÿÿÿªªªÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ˆˆˆÿÿÿ„„„ÿÿÿzzzÿÿÿ˜˜˜ÿÿÿŒŒŒÿÿÿ¥¥¥ÿÿÿ|||ÿÿÿ{{{ÿÿÿ’’’ÿÿÿ¨¨¨ÿÿÿ|||ÿÿÿ­­­ÿÿÿyyyÿÿÿ‚‚‚ÿÿÿ………ÿÿÿ¨¨¨ÿÿÿ¤¤¤ÿÿÿˆˆˆÿÿÿ{{{ÿÿÿªªªÿÿÿªªªÿÿÿªªªÿÿÿUUUÿÿÿªªªÿÿÿãããÿÿÿªªªÿÿÿ¬¬¬ÿÿÿÿÿÿ­­­ÿÿÿpppÿÿÿ‹‹‹ÿÿÿvvvÿÿÿ¿¿¿ÿÿÿŸŸŸÿÿÿdddÿÿÿqqqÿÿÿŠŠŠÿÿÿ“““ÿÿÿŠŠŠÿÿÿšššÿÿÿˆˆˆÿÿÿ„„„ÿÿÿzzzÿÿÿ˜˜˜ÿÿÿŒŒŒÿÿÿ¥¥¥ÿÿÿ|||ÿÿÿ{{{ÿÿÿ’’’ÿÿÿ¨¨¨ÿÿÿ|||ÿÿÿ­­­ÿÿÿyyyÿÿÿ‚‚‚ÿÿÿ………ÿÿÿ¨¨¨ÿÿÿ¤¤¤ÿÿÿˆˆˆÿÿÿ{{{ÿÿÿ€€€ÿÿÿ£££ÿÿÿ’’’ÿÿÿ›››ÿÿÿ‰‰‰ÿÿÿ‡‡‡ÿÿÿÿÿÿ¬¬¬ÿÿÿÿÿÿ­­­ÿÿÿpppÿÿÿ‹‹‹ÿÿÿvvvÿÿÿ¿¿¿ÿÿÿŸŸŸÿÿÿdddÿÿÿqqqÿÿÿŠŠŠÿÿÿ“““ÿÿÿŠŠŠÿÿÿšššÿÿÿˆˆˆÿÿÿ„„„ÿÿÿzzzÿÿÿ˜˜˜ÿÿÿŒŒŒÿÿÿ¥¥¥ÿÿÿ|||ÿÿÿ{{{ÿÿÿ’’’ÿÿÿ¨¨¨ÿÿÿ|||ÿÿÿ­­­ÿÿÿyyyÿÿÿ‚‚‚ÿÿÿ………ÿÿÿ¨¨¨ÿÿÿ¤¤¤ÿÿÿˆˆˆÿÿÿ{{{ÿÿÿ€€€ÿÿÿ£££ÿÿÿ’’’ÿÿÿ›››ÿÿÿ‰‰‰ÿÿÿ‡‡‡ÿÿÿÿÿÿ¬¬¬ÿÿÿÿÿÿ­­­ÿÿÿpppÿÿÿ‹‹‹ÿÿÿªªªÿÿÿªªªÿÿÿUUUÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿªªªÿÿÿªªªÿÿÿªªªÿÿÿÿÿÿ¤¤¤ÿÿÿŽŽŽÿÿÿ‡‡‡ÿÿÿ©©©ÿÿÿ×××ÿÿÿ‘‘‘ÿÿÿ€€€ÿÿÿgggÿÿÿkkkÿÿÿùùùÿÿÿøøøÿÿÿÿÿÿÿÿÿ†††ÿÿÿWWWÿÿÿ[[[ÿÿÿŒŒŒÿÿÿ   ÿÿÿáááÿÿÿ{{{ÿÿÿÿÿÿœœœÿÿÿ‰‰‰ÿÿÿ˜˜˜ÿÿÿ†††ÿÿÿƒƒƒÿÿÿ“““ÿÿÿÇÇÇÿÿÿÛÛÛÿÿÿÇÇÇÿÿÿaaaÿÿÿcccÿÿÿLLLÿÿÿ’’’ÿÿÿ³³³ÿÿÿÆÆÆÿÿÿ›››ÿÿÿ†††ÿÿÿpppÿÿÿvvvÿÿÿÿÿÿ¤¤¤ÿÿÿŽŽŽÿÿÿ‡‡‡ÿÿÿ©©©ÿÿÿ×××ÿÿÿ‘‘‘ÿÿÿ€€€ÿÿÿgggÿÿÿkkkÿÿÿùùùÿÿÿøøøÿÿÿÿÿÿÿÿÿ†††ÿÿÿWWWÿÿÿ[[[ÿÿÿŒŒŒÿÿÿ   ÿÿÿáááÿÿÿ{{{ÿÿÿÿÿÿœœœÿÿÿ‰‰‰ÿÿÿ˜˜˜ÿÿÿ†††ÿÿÿƒƒƒÿÿÿ“““ÿÿÿÇÇÇÿÿÿÛÛÛÿÿÿÇÇÇÿÿÿaaaÿÿÿcccÿÿÿLLLÿÿÿ’’’ÿÿÿ³³³ÿÿÿÆÆÆÿÿÿ›››ÿÿÿ†††ÿÿÿpppÿÿÿvvvÿÿÿÿÿÿ¤¤¤ÿÿÿŽŽŽÿÿÿ‡‡‡ÿÿÿ©©©ÿÿÿ×××ÿÿÿ‘‘‘ÿÿÿ€€€ÿÿÿgggÿÿÿkkkÿÿÿÇÇÇÿÿÿªªªÿÿÿãããÿÿÿªªªÿÿÿªªªÿÿÿUUUÿÿÿUUUÿÿÿªªªÿÿÿªªªÿÿÿªªªÿÿÿªªªÿÿÿªªªÿÿÿ‰‰‰ÿÿÿ˜˜˜ÿÿÿ†††ÿÿÿƒƒƒÿÿÿ“““ÿÿÿÇÇÇÿÿÿÛÛÛÿÿÿÇÇÇÿÿÿaaaÿÿÿcccÿÿÿLLLÿÿÿ’’’ÿÿÿ³³³ÿÿÿÆÆÆÿÿÿ›››ÿÿÿ†††ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇUUUUUUŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUUUUUUUUUUŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2UUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿUUUÿÿÿUUUÿÿÿrrrÿÿÿªªªªªª999ÿÿÿ~~~ÿÿÿ†††ÿÿÿnnnÿÿÿTTTÿÿÿAAAÿÿÿ‡‡‡ÿÿÿfffÿÿÿ‰‰‰ÿÿÿzzzÿÿÿ111ÿÿÿBBBÿÿÿŽŽŽÿÿÿwwwÿÿÿoooÿÿÿiiiÿÿÿ:::ÿÿÿYYYÿÿÿÿÿÿUUU999ÿÿÿiiiÿÿÿvvvÿÿÿxxxÿÿÿÿÿÿ???‚‚‚ÿÿÿÿÿÿpppÿÿÿoooÿÿÿ'''ÿÿÿbbbÿÿÿlllÿÿÿÿÿÿÿÿÿ^^^ÿÿÿ666ÿÿÿ}}}ÿÿÿ~~~ÿÿÿ†††ÿÿÿnnnÿÿÿTTTÿÿÿAAAÿÿÿ‡‡‡ÿÿÿfffÿÿÿ‰‰‰ÿÿÿÿÿÿBBBÿÿÿŽŽŽÿÿÿwwwÿÿÿoooÿÿÿiiiÿÿÿ:::ÿÿÿYYYÿÿÿÿÿÿwwwÿÿÿ{{{ÿÿÿVVVÿÿÿ999ÿÿÿiiiÿÿÿvvvÿÿÿxxxÿÿÿÿÿÿ???ÿÿÿ,,,ÿÿÿ‚‚‚ÿÿÿÿÿÿpppÿÿÿoooÿÿÿ'''ÿÿÿbbbÿÿÿlllÿÿÿUUUªªª^^^ÿÿÿ666ÿÿÿ}}}ÿÿÿ~~~ÿÿÿ†††ÿÿÿnnnÿÿÿTTTÿÿÿAAAÿÿÿ‡‡‡ÿÿÿfffÿÿÿ‰‰‰ÿÿÿzzzÿÿÿ111ÿÿÿBBBÿÿÿŽŽŽÿÿÿwwwÿÿÿoooÿÿÿiiiÿÿÿ:::ÿÿÿYYYÿÿÿ+++OOOÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªªªªªªª999UUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿ2$ôù [ù [$ôÿ2OOOÿÿÿuuuÿÿÿ{{{ÿÿÿ555ÿÿÿoooÿÿÿ###ÿÿÿ€€€ÿÿÿ„„„ÿÿÿDDDÿÿÿrrrÿÿÿtttÿÿÿ///ÿÿÿŒŒŒÿÿÿ‚‚‚ÿÿÿZZZÿÿÿƒƒƒUUUªªªEEEÿÿÿŒŒŒÿÿÿzzzÿÿÿ)))ÿÿÿzzzÿÿÿ ÿÿÿyyyÿÿÿgggÿÿÿNNNÿÿÿ~~~ÿÿÿŠŠŠÿÿÿ111ÿÿÿƒƒƒÿÿÿ}}}ÿÿÿ```ÿÿÿwwwÿÿÿŠŠŠÿÿÿXXXÿÿÿÿÿÿŠŠŠÿÿÿ---ÿÿÿ|||ÿÿÿvvvÿÿÿOOOÿÿÿuuuÿÿÿ{{{ÿÿÿ555ÿÿÿoooÿÿÿ###UUUUUU„„„ÿÿÿDDDÿÿÿrrrÿÿÿtttÿÿÿ///ÿÿÿŒŒŒÿÿÿ‚‚‚ÿÿÿZZZÿÿÿƒƒƒÿÿÿ{{{ÿÿÿEEEÿÿÿŒŒŒÿÿÿzzzÿÿÿ)))ÿÿÿzzzÿÿÿ ÿÿÿyyyÿÿÿgggÿÿÿNNNÿÿÿ~~~ÿÿÿŠŠŠÿÿÿ111ÿÿÿƒƒƒÿÿÿ}}}ÿÿÿ```ÿÿÿwwwÿÿÿŠŠŠÿÿÿXXXÿÿÿÿÿÿŠŠŠÿÿÿ---ÿÿÿ|||ÿÿÿvvvÿÿÿOOOÿÿÿuuuÿÿÿ{{{ÿÿÿ555ÿÿÿoooÿÿÿ###ÿÿÿ€€€ÿÿÿ„„„ÿÿÿDDDÿÿÿrrrÿÿÿtttÿÿÿ///ÿÿÿŒŒŒÿÿÿ‚‚‚ÿÿÿZZZÿÿÿƒƒƒÿÿÿ{{{ÿÿÿEEEÿÿÿÇÇÇÿÿÿªªªÿÿÿªªªÿÿÿªªªUUUªªªªªªÿÿÿªªªÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿãã㪪ªªªªªªªªªªªªªãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãã㪪ªªªªªªªããããã㪪ªªªªªªªãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªªªª999rrrªªªªªªªªªªªªªªªãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªªªªªªªªªªªªªÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇǪªªªªªªªªªªªªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇǪªªªªªªªªªªªªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇǪªªªªªªªªªªªªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªªªªªªªªªªªªªãã㪪ªãããÿÿÿÿÿÿÿÿÿÿÿÿÇÇǪªªªªªªªªªªªªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªªªªªªªÇÇÇÿÿÿªªªªªªªªªÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇǪªªªªªªªªÿÿÿÇÇǪªªªªªªªªÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªªªª999rrrªªªªªªªªªªªªªªªãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªªªªªªªªªªãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇǪªªªªªªªªªªªãã㪪ªÇÇÇÿÿÿÿÿÿÿÿÿªªªªªª999rrrªªªÿ2$ôù [ù [$ôÿ2UUUUUUŽŽŽUUUÿÿÿUUUÿÿÿ999999999999UUUÿÿÿ999ÿÿÿªªªÿÿÿ999ÿÿÿUUU999ÿÿÿªªªÿÿÿªªªÿÿÿqqqÿÿÿ‚‚‚ÿÿÿtttÿÿÿÿÿÿoooÿÿÿ|||ÿÿÿyyyÿÿÿrrrÿÿÿmmmUUU...ÇÇLjˆˆÿÿÿlllÿÿÿÿÿÿnnnÿÿÿyyyUUUUUU~~~ÿÿÿ———ÿÿÿwwwÿÿÿzzzÿÿÿ'''‚‚‚ÿÿÿlllÿÿÿpppÿÿÿ‚‚‚ÇÇÇ---UUUlllÿÿÿ}}}ÿÿÿ‘‘‘ÿÿÿzzzÇÇÇMMMÿÿÿÿÿÿoooUUUÿÿÿŒŒŒÿÿÿwwwÿÿÿ„„„ÿÿÿUUULLLÇÇÇnnnÿÿÿyyyÿÿÿ‚‚‚ÿÿÿ***UUU---ÿÿÿŒŒŒÿÿÿ‚‚‚ÿÿÿlllÿÿÿpppÿÿÿ‚‚‚ÿÿÿˆˆˆÿÿÿƒƒƒÿÿÿwwwªªªXXXÿÿÿqqqÿÿÿqqqÇÇÇ+++999>>>ÿÿÿ|||ÿÿÿyyyÿÿÿrrrÿÿÿ///...ÿÿÿˆˆˆÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿ999UUUUUUUUU999UUUÿÿÿÿÿÿÿÿÿÇÇÇUUUUUUUUU999ÇÇÇÿÿÿÿÿÿÿÿÿUUUUUU999UUUUUUUUUUUUUUUÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªUUUUUUUUUUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽUUUUUU999ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªUUUUUUUUUUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrrrUUUUUUUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽUUUUUU999ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUU999UUUUUUUUUrrrÿÿÿÿÿÿÿÿÿÇÇÇUUUUUUUUUŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUU999UUUUUUUUUUUUUUUÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿªªªUUUUUU999999ãããÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇUUUUUUUUU999UUUÿÿÿÿÿÿÿÿÿUUUUUU999UUUÿ2$ôù [ù [$ôÿ2ªªªãããÿÿÿUUUãããÿÿÿªªªÿÿÿªªªÿÿÿ999ÇÇÇ___ÿÿÿccc999UUU’’’ÿÿÿÿÿÿ¼¼¼UUUªªª]]]ÿÿÿ```ÿÿÿiiiÿÿÿuuuÿÿÿŸŸŸÿÿÿ   ÿÿÿ–––ÿÿÿ--- ÿÿÿ{{{ÿÿÿdddÿÿÿ|||ÿÿÿÿÿÿšššÿÿÿ‰‰‰ÿÿÿÿÿÿ```ÿÿÿaaaÿÿÿ]]]ÿÿÿUUUªªªpppÿÿÿ¥¥¥ÿÿÿ¯¯¯ÇÇÇ;;;ÿÿÿaaaÿÿÿbbbÿÿÿ€€€ÿÿÿ”””UUUUUU’’’ÿÿÿ†††ÿÿÿoooÿÿÿ___ÿÿÿoooÿÿÿlllªªªÿÿÿ¼¼¼ÿÿÿ›››ÿÿÿ]]]ããã@@@ªªªiiiÿÿÿuuuÿÿÿ|||ªªª–––ÿÿÿˆˆˆÿÿÿ___ÇÇÇdddÿÿÿ|||ÇÇÇgggÿÿÿ‰‰‰ÿÿÿÿÿÿ```ÿÿÿAAAÿÿÿ___ÿÿÿ¨¨¨ÿÿÿ¥¥¥ÿÿÿ¯¯¯ªªª(((ÿÿÿaaaÿÿÿ,,,ÿÿÿ”””ÿÿÿ111!!!ªªª†††ÿÿÿWWWrrr%%%ÿÿÿlllÿÿÿ’’’ÿÿÿÿÿÿ¼¼¼ÿÿÿ›››ÿÿÿ]]]ÿÿÿ```ÿÿÿªªªÿÿÿuuuÿÿÿªªªUUUªªªUUUÿÿÿUUUÿÿÿŽŽŽÿÿÿªªªÿÿÿªªªŽŽŽLLLÇÇÇÇÇÇÿÿÿzzzªªªÿÿÿaaaÿÿÿ]]]UUUrrr¨¨¨ÿÿÿ¥¥¥ããã'''111ÿÿÿYYYÿÿÿaaaÿÿÿ!!!UUUÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªUUUÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿªªªUUUÿÿÿÿÿÿÿÿÿÿÿÿªªªUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿ2$ôù [ù [$ôÿ2€€€ªªªQQQ999999ÿÿÿŒŒŒÿÿÿÿÿÿ///___ÿÿÿ„„„ÿÿÿ¼¼¼UUUUUU‡‡‡ÿÿÿœœœÿÿÿ–––UUUªªªšššÿÿÿlllÿÿÿªªªÿÿÿªªªÿÿÿªªªÿÿÿUUUÿÿÿªªªÿÿÿLLL999ÿÿÿˆˆˆÿÿÿ………ÿÿÿÿÿÿ‰‰‰ÿÿÿzzzÿÿÿšššÿÿÿÿÿÿ‹‹‹ÿÿÿ———ÿÿÿ€€€ÿÿÿtttªªªkkkQQQÿÿÿ†††ÿÿÿ¯¯¯ÿÿÿgggÿÿÿ«««UUUUUUÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ¼¼¼ÿÿÿ†††ªªªœœœÿÿÿ–––ÿÿÿÿÿÿšššãããHHHªªªªªªÿÿÿ{{{ÿÿÿ­­­999rrr[[[ÇÇÇzzzÿÿÿšššÿÿÿÿÿÿ‹‹‹ÿÿÿeeeÿÿÿ‚‚‚ÿÿÿ   ÿÿÿ}}}ÿÿÿ˜˜˜ªªªUUUyyyÿÿÿ†††ÿÿÿuuuÿÿÿ«««ªªªÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿ,,,???ÿÿÿ†††ÿÿÿ‡‡‡ÿÿÿœœœÿÿÿ–––ÿÿÿÿÿÿšššÿÿÿlllÿÿÿÿÿÿœœœÿÿÿvvvUUUªªªÿÿÿ{{{ÿÿÿ­­­ÿÿÿˆˆˆÿÿÿYYYÿÿÿUUUÿÿÿUUUŽŽŽ999ªªªÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãã㪪ªÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªUUUÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªª999ŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿ2$ôù [ù [$ôÿ2,,,ÇÇǪªªÿÿÿªªªÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUUUUÿÿÿUUUÿÿÿªªªUUUªªª………ÿÿÿÇÇÇÿÿÿwwwªªª‹‹‹ÿÿÿŒŒŒÿÿÿ}}}ÿÿÿ§§§ÿÿÿ@@@,,,ÿÿÿÿÿÿyyyÿÿÿ{{{ÿÿÿŸŸŸÿÿÿªªªÿÿÿ†††ÿÿÿÿÿÿ|||ÿÿÿŠŠŠÿÿÿ¬¬¬ÿÿÿÿÿÿ~~~ÿÿÿ}}}ÿÿÿwwwÿÿÿžžžÿÿÿ………ÿÿÿ€€€ÿÿÿuuuUUUUUU¨¨¨ÿÿÿ‚‚‚ÿÿÿzzzÿÿÿ‹‹‹ÿÿÿmmmÿÿÿžžžªªª‚‚‚ÿÿÿyyyÿÿÿ}}}ÿÿÿ………999™™™ÿÿÿ‹‹‹ÿÿÿŒŒŒªªª§§§ÿÿÿÁÁÁÿÿÿ^^^ÿÿÿyyyÿÿÿ{{{ŽŽŽ$$$ÿÿÿ†††ÿÿÿÿÿÿ|||ÿÿÿ\\\ÿÿÿ¯¯¯ÿÿÿuuuÿÿÿ~~~ÿÿÿ}}}ªªªUUU²²²ÿÿÿžžžÿÿÿYYYÿÿÿuuuÇÇÇ888ÿÿÿ‚‚‚ÿÿÿzzzªªª$$$ÿÿÿžžžÿÿÿºººÿÿÿ‚‚‚ÿÿÿyyyÿÿÿ}}}ÿÿÿ………ÿÿÿÇÇÇÿÿÿãããÿÿÿªªªÿÿÿUUUUUUªªªUUUÿÿÿªªªÿÿÿ………ªªªÿÿÿ^^^999ŽŽŽÿÿÿªªªÿÿÿ†††ÿÿÿÿÿÿ|||ÿÿÿŠŠŠÿÿÿ999:::ÿÿÿuuuÿÿÿ~~~ÇÇÇ***ªªª²²²ÿÿÿžžžÿÿÿ,,,UUUÿÿÿÿ2$ôù [ù [$ôÿ2UUUUUUÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUU999ÿÿÿÿÿÿÿÿÿUUUŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÇÇÇUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÇÇÇUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿ999ŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªUUUÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿUUUÇÇÇÿÿÿÿÿÿŽŽŽ999UUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUU999ÿÿÿÿÿÿÿÿÿUUUŽŽŽÿÿÿÿÿÿUUU999ŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇUUUUUUÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽªªªÿÿÿÿÿÿÿÿÿÿÿÿUUU999ÿÿÿÿ2$ôù [ù [$ôÿ2UUUUUU UUUªªªÿÿÿ###UUUŽŽŽzzzÿÿÿ000ÿÿÿÿÿÿ~~~UUU$$$UUU000ÿÿÿuuuÿÿÿ999UUU///UUU UUUBBBUUU)))ÿÿÿšššÿÿÿSSSÿÿÿ999ÿÿÿvvvÿÿÿ‚‚‚ÿÿÿÿÿÿuuuÿÿÿ999ÿÿÿUUU+++UUU ŽŽŽ___ÿÿÿ‡‡‡UUU---UUU222UUU***UUU‚‚‚ÿÿÿzzzŽŽŽ000UUU999***UUU***UUUqqqÿÿÿmmm999UUU000999999+++ÿÿÿ===ÿÿÿ)))UUU333UUUÿÿÿvvvÿÿÿHHHUUU+++UUUUUU"""UUU...ÇÇÇ€€€ÿÿÿ***999ÿÿÿ___ŽŽŽUUUuuuÿÿÿGGG999***UUU000ÿÿÿWWWÿÿÿ---ÿÿÿÿÿÿ~~~ÿÿÿ‘‘‘ÿÿÿmmmÿÿÿ???ÿÿÿTTTÿÿÿ‘‘‘ÿÿÿuuuUUUUUU,,,ÿÿÿªªªÇÇÇUUUUUUŽŽŽUUUÿÿÿ999UUU+++UUUããã444ÿÿÿ___ÿÿÿ---UUUÿ2$ôù [ù [$ôÿ2ÿÿÿUUUŽŽŽUUUÿÿÿÿÿÿªªªUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇ999ÇÇÇUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÇÇÇ999ÇÇÇUUUÿÿÿÿÿÿÿÿÿ999999UUUŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿÿÿÿUUUªªªÿÿÿÿÿÿÿÿÿ999ŽŽŽUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUÿÿÿÿÿÿÿÿÿUUUUUU999UUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿ2$ôù [ù [$ôÿ2CCCÿÿÿiiiªªªbbbªªª888ÿÿÿiiiªªªªªªEEEÿÿÿ___ªªªªªªUUUÇÇÇ”””ÿÿÿ444ªªªYYYªªªqqqÿÿÿŽŽŽÿÿÿUUUÿÿÿÇÇǪªª999ÇÇǪªªÿÿÿJJJÿÿÿ```ÿÿÿªªª999ªªªDDDªªªCCCªªªWWWªªªbbbÿÿÿAAAÿÿÿHHHÿÿÿVVVÿÿÿ,,,ÿÿÿkkkÿÿÿ~~~ÿÿÿ\\\ÿÿÿÿÿÿ‚‚‚ãã㪪ªAAAªªª444ÿÿÿ---ªªªiiiÇÇÇ“““ÿÿÿTTTªªªYYYªªªªªª...ªªªGGGªªªªªª€€€ÿÿÿ”””ÇÇÇ444ªªªYYYªªªCCCªªª!!!ªªª///ªªªLLLÿÿÿWWWÿÿÿ‚‚‚ªªªSSSªªª111ÇÇÇ```ªªªªªªCCCÿÿÿfffÿÿÿCCCªªªuuuãããbbbªªª+++ªªªHHHÿÿÿVVVÿÿÿ,,,ÿÿÿTTTªªªTTTªªª===ªªªiiiªªªWWWªªªãããbbbÿÿÿ---ªªª---ªªªiiiÿÿÿ“““ÇÇÇ888ªªªYYYªªªÿÿÿEEEÿÿÿ___ªªªªªªUUUÿÿÿ111ÿÿÿ………ÿÿÿdddÿÿÿ111ÿÿÿGGGÿÿÿUUUÿÿÿWWWÿÿÿ’’’ÿÿÿÇÇÇÿÿÿrrrÿÿÿUUUÿÿÿªªªÇÇÇ999ªªªDDDÇÇÇdddÿÿÿƒƒƒÿÿÿ“““ÿÿÿAAAÿÿÿ888ªªª999ªªªªªªGGGÇÇÇ~~~ÿÿÿ\\\ÿÿÿ………ªªªBBBÿÿÿªªªªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿããã999UUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2xxxÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿgggÿÿÿªªªÿÿÿŽŽŽÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿ………ÿÿÿ```ÿÿÿ[[[ÿÿÿ‡‡‡ÿÿÿ€€€ÿÿÿ{{{ÿÿÿeeeÿÿÿhhhÿÿÿãããÿÿÿªªªÿÿÿªªªÿÿÿÇÇÇÿÿÿfffÿÿÿkkkÿÿÿ^^^ÿÿÿ}}}ÿÿÿgggÿÿÿÿÿÿJJJÿÿÿbbbÿÿÿwwwÿÿÿƒƒƒÿÿÿeeeÿÿÿ|||ÿÿÿyyyÿÿÿtttÿÿÿxxxÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿgggÿÿÿwwwÿÿÿuuuÿÿÿ|||ÿÿÿrrrÿÿÿ€€€ÿÿÿ]]]ÿÿÿ}}}ÿÿÿzzzÿÿÿjjjÿÿÿ|||ÿÿÿ………ÿÿÿ```ÿÿÿ[[[ÿÿÿ‡‡‡ÿÿÿ€€€ÿÿÿ{{{ÿÿÿeeeÿÿÿhhhÿÿÿzzzÿÿÿŒŒŒÿÿÿmmmÿÿÿxxxÿÿÿfffÿÿÿkkkÿÿÿ^^^ÿÿÿ}}}ÿÿÿgggÿÿÿÿÿÿJJJÿÿÿbbbÿÿÿwwwÿÿÿƒƒƒÿÿÿeeeÿÿÿ|||ÿÿÿyyyÿÿÿtttÿÿÿxxxÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿgggÿÿÿwwwÿÿÿuuuÿÿÿ|||ÿÿÿrrrÿÿÿ€€€ÿÿÿ]]]999999___ÿÿÿjjjÿÿÿ|||ÿÿÿ………ÿÿÿ```ÿÿÿÇÇÇÿÿÿ‡‡‡ÿÿÿ€€€ÿÿÿ{{{ÿÿÿeeeÿÿÿhhhÿÿÿzzzÿÿÿŒŒŒÿÿÿmmmÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿÇÇÇÿÿÿÿÿÿJJJÿÿÿbbbÿÿÿwwwÿÿÿƒƒƒÿÿÿeeeÿÿÿ|||ÿÿÿyyyÿÿÿtttÿÿÿxxxÿÿÿ|||ÿÿÿÇÇÇÿÿÿŽŽŽÿÿÿUUUÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUUUUUUUUUUUUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿxxxÿÿÿ‘‘‘ÿÿÿ„„„ÿÿÿ~~~ÿÿÿƒƒƒÿÿÿÿÿÿ{{{ÿÿÿšššÿÿÿãããÿÿÿŽŽŽÿÿÿ999ÿÿÿ999ÿÿÿªªªÿÿÿ‰‰‰ÿÿÿŒŒŒÿÿÿ†††ÿÿÿƒƒƒÿÿÿxxxÿÿÿ   ÿÿÿ€€€ÿÿÿÿÿÿtttÿÿÿ‡‡‡ÿÿÿnnnÿÿÿÿÿÿ‰‰‰ÿÿÿ‚‚‚ÿÿÿƒƒƒÿÿÿ}}}ÿÿÿ‹‹‹ÿÿÿwwwÿÿÿ¥¥¥ÿÿÿzzzÿÿÿÿÿÿwwwÿÿÿŽŽŽÿÿÿƒƒƒÿÿÿÿÿÿ………ÿÿÿÿÿÿxxxÿÿÿ‘‘‘ÿÿÿ„„„ÿÿÿ~~~ÿÿÿƒƒƒÿÿÿÿÿÿ{{{ÿÿÿšššÿÿÿŽŽŽÿÿÿzzzÿÿÿÿÿÿ‹‹‹ÿÿÿŒŒŒÿÿÿ‰‰‰ÿÿÿŒŒŒÿÿÿ†††ÿÿÿƒƒƒÿÿÿxxxÿÿÿ   ÿÿÿ€€€ÿÿÿÿÿÿtttÿÿÿ‡‡‡ÿÿÿnnnÿÿÿÿÿÿ‰‰‰ÿÿÿ‚‚‚ÿÿÿƒƒƒÿÿÿ}}}ÿÿÿ‹‹‹ÿÿÿwwwÿÿÿ¥¥¥ÿÿÿzzzÿÿÿÿÿÿwwwÿÿÿŽŽŽÿÿÿƒƒƒÿÿÿÿÿÿ………ÿÿÿ,,,ÿÿÿ~~~ÿÿÿƒƒƒÿÿÿÿÿÿ{{{ÿÿÿšššÿÿÿŽŽŽÿÿÿzzzÿÿÿÿÿÿªªªÿÿÿrrrÿÿÿªªªÿÿÿŒŒŒÿÿÿ†††ÿÿÿƒƒƒÿÿÿxxxÿÿÿ   ÿÿÿ€€€ÿÿÿÿÿÿtttÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿ999ÿÿÿUUUÿÿÿªªªÿÿÿwwwÿÿÿ¥¥¥ÿÿÿzzzÿÿÿÿÿÿwwwÿÿÿŽŽŽÿÿÿƒƒƒÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ŽŽŽÿÿÿÇÇÇÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿ“““ÿÿÿ«««ÿÿÿ|||ÿÿÿwwwÿÿÿ°°°ÿÿÿ‹‹‹ÿÿÿÇÇÇÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ”””ÿÿÿ¤¤¤ÿÿÿxxxÿÿÿƒƒƒÿÿÿÐÐÐÿÿÿwwwÿÿÿ´´´ÿÿÿyyyÿÿÿªªªÿÿÿÇÇÇÿÿÿÿÿÿqqqÿÿÿ×××ÿÿÿÿÿÿ{{{ÿÿÿ›››ÿÿÿ………ÿÿÿ………ÿÿÿ¢¢¢ÿÿÿˆˆˆÿÿÿƒƒƒÿÿÿ¼¼¼ÿÿÿ‚‚‚ÿÿÿtttÿÿÿ¦¦¦ÿÿÿeeeÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿ“““ÿÿÿ«««ÿÿÿ|||ÿÿÿwwwÿÿÿ°°°ÿÿÿ‹‹‹ÿÿÿ}}}ÿÿÿ···ÿÿÿ‹‹‹ÿÿÿ‹‹‹ÿÿÿ©©©ÿÿÿÿÿÿ”””ÿÿÿ¤¤¤ÿÿÿxxxÿÿÿƒƒƒÿÿÿÐÐÐÿÿÿwwwÿÿÿ´´´ÿÿÿyyyÿÿÿŽŽŽÿÿÿ³³³ÿÿÿÿÿÿqqqÿÿÿ×××ÿÿÿÿÿÿ{{{ÿÿÿ›››ÿÿÿ………ÿÿÿ………ÿÿÿ¢¢¢ÿÿÿˆˆˆÿÿÿƒƒƒÿÿÿ¼¼¼ÿÿÿ‚‚‚ÿÿÿtttÿÿÿ¦¦¦ÿÿÿeeeÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿ“““ÿÿÿ«««ÿÿÿ|||ÿÿÿwwwÿÿÿ°°°ÿÿÿ‹‹‹ÿÿÿ}}}ÿÿÿ···ÿÿÿ‹‹‹ÿÿÿ‹‹‹ÿÿÿ©©©ÿÿÿãããÿÿÿ”””ÿÿÿ¤¤¤ÿÿÿxxxÿÿÿƒƒƒÿÿÿÐÐÐÿÿÿwwwÿÿÿ´´´ÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿŽŽŽÿÿÿqqqÿÿÿ×××ÿÿÿÿÿÿ{{{ÿÿÿ›››ÿÿÿ………ÿÿÿ………ÿÿÿ¢¢¢ÿÿÿˆˆˆÿÿÿŽŽŽÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2———ÿÿÿƒƒƒÿÿÿqqqÿÿÿdddÿÿÿÇÇÇÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿÇÇÇÿÿÿÿÿÿ×××ÿÿÿ”””ÿÿÿ„„„ÿÿÿ„„„ÿÿÿeeeÿÿÿ‰‰‰ÿÿÿÇÇÇÿÿÿUUUÿÿÿUUUÿÿÿãããÿÿÿÅÅÅÿÿÿÑÑÑÿÿÿ```ÿÿÿ___ÿÿÿUUUÿÿÿãããÿÿÿ»»»ÿÿÿñññÿÿÿ’’’ÿÿÿuuuÿÿÿTTTÿÿÿWWWÿÿÿrrrÿÿÿ¢¢¢ÿÿÿ‹‹‹ÿÿÿ•••ÿÿÿ‘‘‘ÿÿÿ———ÿÿÿƒƒƒÿÿÿqqqÿÿÿdddÿÿÿzzzÿÿÿ   ÿÿÿ¶¶¶ÿÿÿÄÄÄÿÿÿ‹‹‹ÿÿÿXXXÿÿÿUUUÿÿÿ@@@ÿÿÿÿÿÿ×××ÿÿÿ”””ÿÿÿ„„„ÿÿÿ„„„ÿÿÿeeeÿÿÿ‰‰‰ÿÿÿnnnÿÿÿ‡‡‡ÿÿÿžžžÿÿÿ¦¦¦ÿÿÿÅÅÅÿÿÿÑÑÑÿÿÿ```ÿÿÿ___ÿÿÿUUUÿÿÿuuuÿÿÿ»»»ÿÿÿñññÿÿÿ’’’ÿÿÿuuuÿÿÿTTTÿÿÿWWWÿÿÿrrrÿÿÿ¢¢¢ÿÿÿ‹‹‹ÿÿÿ•••ÿÿÿ‘‘‘ÿÿÿ———ÿÿÿƒƒƒÿÿÿqqqÿÿÿdddÿÿÿzzzÿÿÿ   ÿÿÿ¶¶¶ÿÿÿÄÄÄÿÿÿ‹‹‹ÿÿÿXXXÿÿÿUUUÿÿÿ@@@ÿÿÿÿÿÿ×××ÿÿÿ”””ÿÿÿ„„„ÿÿÿ„„„ÿÿÿeeeÿÿÿrrrÿÿÿŽŽŽÿÿÿ‡‡‡ÿÿÿžžžÿÿÿ¦¦¦ÿÿÿÅÅÅÿÿÿÑÑÑÿÿÿ```ÿÿÿ___ÿÿÿÇÇÇÿÿÿUUUÿÿÿÿÿÿÿÿÿrrrÿÿÿãããÿÿÿTTTÿÿÿWWWÿÿÿrrrÿÿÿ¢¢¢ÿÿÿ‹‹‹ÿÿÿ•••ÿÿÿ‘‘‘ÿÿÿ———ÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ999ÿÿÿªªªÿÿÿ000ÿÿÿÿÿÿnnnÿÿÿÿÿÿ[[[ÿÿÿÿÿÿ###ÿÿÿ"""ÿÿÿŽŽŽÿÿÿÿÿÿ999ÿÿÿªªªÿÿÿ555ÿÿÿcccÿÿÿÿÿÿvvvÿÿÿ###ÿÿÿãããÿÿÿŽŽŽÿÿÿãããÿÿÿmmmÿÿÿhhhÿÿÿ'''ÿÿÿãããÿÿÿ***ÿÿÿ|||ÿÿÿ}}}ÿÿÿ,,,ÿÿÿ!!!ÿÿÿÿÿÿXXXÿÿÿ‡‡‡ÿÿÿŽŽŽÿÿÿ222ÿÿÿÿÿÿ###ÿÿÿaaaÿÿÿˆˆˆÿÿÿeeeÿÿÿÿÿÿ000ÿÿÿÿÿÿnnnÿÿÿÿÿÿ[[[ÿÿÿÿÿÿ###ÿÿÿ"""ÿÿÿtttÿÿÿhhhÿÿÿÿÿÿ%%%ÿÿÿ555ÿÿÿcccÿÿÿÿÿÿvvvÿÿÿ###ÿÿÿÿÿÿ...ÿÿÿ‡‡‡ÿÿÿmmmÿÿÿhhhÿÿÿ'''ÿÿÿ111ÿÿÿ***ÿÿÿ|||ÿÿÿ}}}ÿÿÿ,,,ÿÿÿ!!!ÿÿÿÿÿÿXXXÿÿÿ‡‡‡ÿÿÿŽŽŽÿÿÿ222ÿÿÿÿÿÿ###ÿÿÿaaaÿÿÿˆˆˆÿÿÿeeeÿÿÿÿÿÿ000ÿÿÿÿÿÿnnnÿÿÿÿÿÿ[[[ÿÿÿÿÿÿ###ÿÿÿ"""ÿÿÿtttÿÿÿhhhÿÿÿÿÿÿ%%%ÿÿÿ555ÿÿÿcccÿÿÿªªªÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿ...ÿÿÿ‡‡‡ÿÿÿmmmÿÿÿhhhÿÿÿ'''ÿÿÿ111ÿÿÿãããÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿ‡‡‡ÿÿÿŽŽŽÿÿÿ222ÿÿÿÿÿÿ###ÿÿÿaaaÿÿÿˆˆˆÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿrrrÿÿÿãããÿÿÿIIIÿÿÿÿÿÿWWWÿÿÿÿÿÿtttÿÿÿ€€€ÿÿÿ[[[ÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿbbbÿÿÿ\\\ÿÿÿ~~~ÿÿÿ~~~ÿÿÿ†††ÿÿÿMMMÿÿÿŽŽŽÿÿÿ999ÿÿÿãããÿÿÿtttÿÿÿvvvÿÿÿPPPÿÿÿãããÿÿÿªªªÿÿÿ€€€ÿÿÿ………ÿÿÿ‰‰‰ÿÿÿaaaÿÿÿUUUÿÿÿyyyÿÿÿƒƒƒÿÿÿ„„„ÿÿÿUUUÿÿÿ„„„ÿÿÿIIIÿÿÿŒŒŒÿÿÿ~~~ÿÿÿ€€€ÿÿÿIIIÿÿÿÿÿÿWWWÿÿÿÿÿÿtttÿÿÿ€€€ÿÿÿ[[[ÿÿÿ}}}ÿÿÿeeeÿÿÿƒƒƒÿÿÿyyyÿÿÿ„„„ÿÿÿbbbÿÿÿ\\\ÿÿÿ~~~ÿÿÿ~~~ÿÿÿ†††ÿÿÿMMMÿÿÿ}}}ÿÿÿYYYÿÿÿƒƒƒÿÿÿtttÿÿÿvvvÿÿÿPPPÿÿÿrrrÿÿÿHHHÿÿÿ€€€ÿÿÿ………ÿÿÿ‰‰‰ÿÿÿaaaÿÿÿUUUÿÿÿyyyÿÿÿƒƒƒÿÿÿ„„„ÿÿÿUUUÿÿÿ„„„ÿÿÿIIIÿÿÿŒŒŒÿÿÿ~~~ÿÿÿ€€€ÿÿÿIIIÿÿÿÿÿÿWWWÿÿÿÿÿÿtttÿÿÿ€€€ÿÿÿ[[[ÿÿÿ}}}ÿÿÿeeeÿÿÿƒƒƒÿÿÿyyyÿÿÿ„„„ÿÿÿbbbÿÿÿ\\\ÿÿÿ~~~ÿÿÿÇÇÇÿÿÿÇÇÇÿÿÿMMMÿÿÿ}}}ÿÿÿYYYÿÿÿƒƒƒÿÿÿãããÿÿÿUUUÿÿÿÿÿÿrrrÿÿÿHHHÿÿÿ€€€ÿÿÿ………ÿÿÿ‰‰‰ÿÿÿaaaÿÿÿUUUÿÿÿyyyÿÿÿãããÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿIIIÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2“““ÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ}}}ÿÿÿÿÿÿãããÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿ}}}ÿÿÿ„„„ÿÿÿ‚‚‚ÿÿÿÿÿÿ|||ÿÿÿ†††ÿÿÿÇÇÇÿÿÿ999ÿÿÿUUUÿÿÿãããÿÿÿ€€€ÿÿÿrrrÿÿÿ|||ÿÿÿãããÿÿÿUUUÿÿÿãããÿÿÿ€€€ÿÿÿƒƒƒÿÿÿ‹‹‹ÿÿÿxxxÿÿÿãããÿÿÿ‡‡‡ÿÿÿxxxÿÿÿ€€€ÿÿÿxxxÿÿÿƒƒƒÿÿÿ‡‡‡ÿÿÿrrrÿÿÿÿÿÿ“““ÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ}}}ÿÿÿÿÿÿ‚‚‚ÿÿÿ‹‹‹ÿÿÿˆˆˆÿÿÿ„„„ÿÿÿ‡‡‡ÿÿÿxxxÿÿÿ}}}ÿÿÿ„„„ÿÿÿ‚‚‚ÿÿÿÿÿÿ|||ÿÿÿ†††ÿÿÿ‹‹‹ÿÿÿvvvÿÿÿ………ÿÿÿ~~~ÿÿÿ€€€ÿÿÿrrrÿÿÿ|||ÿÿÿ„„„ÿÿÿ†††ÿÿÿsssÿÿÿ€€€ÿÿÿƒƒƒÿÿÿ‹‹‹ÿÿÿxxxÿÿÿyyyÿÿÿ‡‡‡ÿÿÿxxxÿÿÿ€€€ÿÿÿxxxÿÿÿƒƒƒÿÿÿ‡‡‡ÿÿÿrrrÿÿÿÿÿÿ“““ÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ}}}ÿÿÿÿÿÿ‚‚‚ÿÿÿ‹‹‹ÿÿÿˆˆˆÿÿÿ„„„ÿÿÿ‡‡‡ÿÿÿxxxÿÿÿ}}}ÿÿÿ„„„ÿÿÿ‚‚‚ÿÿÿÿÿÿÇÇÇÿÿÿªªªÿÿÿ‹‹‹ÿÿÿvvvÿÿÿ………ÿÿÿ~~~ÿÿÿªªªÿÿÿrrrÿÿÿ|||ÿÿÿ„„„ÿÿÿ†††ÿÿÿsssÿÿÿ€€€ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿUUUÿÿÿãããÿÿÿxxxÿÿÿ€€€ÿÿÿxxxÿÿÿƒƒƒÿÿÿ‡‡‡ÿÿÿrrrÿÿÿÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2kkkÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿÇÇÇÿÿÿ}}}ÿÿÿ­­­ÿÿÿ”””ÿÿÿ®®®ÿÿÿÿÿÿcccÿÿÿrrrÿÿÿÿÿÿUUUÿÿÿšššÿÿÿœœœÿÿÿ———ÿÿÿ´´´ÿÿÿãããÿÿÿ999ÿÿÿŽŽŽÿÿÿkkkÿÿÿœœœÿÿÿµµµÿÿÿÿÿÿãããÿÿÿªªªÿÿÿPPPÿÿÿiiiÿÿÿƒƒƒÿÿÿ®®®ÿÿÿÿÿÿ“““ÿÿÿ€€€ÿÿÿeeeÿÿÿTTTÿÿÿjjjÿÿÿkkkÿÿÿ“““ÿÿÿ™™™ÿÿÿ²²²ÿÿÿ‹‹‹ÿÿÿ‚‚‚ÿÿÿMMMÿÿÿXXXÿÿÿ}}}ÿÿÿ­­­ÿÿÿ”””ÿÿÿ®®®ÿÿÿÿÿÿcccÿÿÿ```ÿÿÿnnnÿÿÿ‡‡‡ÿÿÿšššÿÿÿœœœÿÿÿ———ÿÿÿ´´´ÿÿÿ___ÿÿÿnnnÿÿÿ[[[ÿÿÿkkkÿÿÿœœœÿÿÿµµµÿÿÿÿÿÿ®®®ÿÿÿWWWÿÿÿPPPÿÿÿiiiÿÿÿƒƒƒÿÿÿ®®®ÿÿÿÿÿÿ“““ÿÿÿ€€€ÿÿÿeeeÿÿÿTTTÿÿÿjjjÿÿÿkkkÿÿÿ“““ÿÿÿ™™™ÿÿÿ²²²ÿÿÿ‹‹‹ÿÿÿ‚‚‚ÿÿÿMMMÿÿÿXXXÿÿÿ}}}ÿÿÿ­­­ÿÿÿ”””ÿÿÿ®®®ÿÿÿÿÿÿcccÿÿÿ```ÿÿÿnnnÿÿÿ‡‡‡ÿÿÿšššÿÿÿUUUÿÿÿãããÿÿÿ´´´ÿÿÿ___ÿÿÿnnnÿÿÿ[[[ÿÿÿŽŽŽÿÿÿUUUÿÿÿãããÿÿÿÿÿÿ®®®ÿÿÿWWWÿÿÿPPPÿÿÿÇÇÇÿÿÿ999ÿÿÿÿÿÿÿÿÿUUUÿÿÿÇÇÇÿÿÿeeeÿÿÿTTTÿÿÿjjjÿÿÿkkkÿÿÿ“““ÿÿÿ™™™ÿÿÿ²²²ÿÿÿŽŽŽÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿªªªÿÿÿwwwÿÿÿ‹‹‹ÿÿÿ´´´ÿÿÿÃÃÃÿÿÿŒŒŒÿÿÿ}}}ÿÿÿªªªÿÿÿÿÿÿÿÿÿUUUÿÿÿºººÿÿÿ€€€ÿÿÿqqqÿÿÿ¾¾¾ÿÿÿãããÿÿÿ999ÿÿÿ999ÿÿÿÿÿÿŽŽŽÿÿÿ¯¯¯ÿÿÿ°°°ÿÿÿ¢¢¢ÿÿÿŽŽŽÿÿÿÇÇÇÿÿÿ………ÿÿÿ´´´ÿÿÿ»»»ÿÿÿ¶¶¶ÿÿÿiiiÿÿÿ{{{ÿÿÿ´´´ÿÿÿÆÆÆÿÿÿ   ÿÿÿ–––ÿÿÿsssÿÿÿzzzÿÿÿŽŽŽÿÿÿ«««ÿÿÿ¹¹¹ÿÿÿ–––ÿÿÿwwwÿÿÿ‹‹‹ÿÿÿ´´´ÿÿÿÃÃÃÿÿÿŒŒŒÿÿÿ}}}ÿÿÿ€€€ÿÿÿ§§§ÿÿÿ¥¥¥ÿÿÿ®®®ÿÿÿºººÿÿÿ€€€ÿÿÿqqqÿÿÿ¾¾¾ÿÿÿÉÉÉÿÿÿ®®®ÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ¯¯¯ÿÿÿ°°°ÿÿÿ¢¢¢ÿÿÿ|||ÿÿÿ}}}ÿÿÿ………ÿÿÿ´´´ÿÿÿ»»»ÿÿÿ¶¶¶ÿÿÿiiiÿÿÿ{{{ÿÿÿ´´´ÿÿÿÆÆÆÿÿÿ   ÿÿÿ–––ÿÿÿsssÿÿÿzzzÿÿÿŽŽŽÿÿÿ«««ÿÿÿ¹¹¹ÿÿÿ–––ÿÿÿwwwÿÿÿ‹‹‹ÿÿÿ´´´ÿÿÿÃÃÃÿÿÿŒŒŒÿÿÿ}}}ÿÿÿ€€€ÿÿÿ§§§ÿÿÿ¥¥¥ÿÿÿ®®®ÿÿÿºººÿÿÿªªªÿÿÿqqqÿÿÿ¾¾¾ÿÿÿÉÉÉÿÿÿ®®®ÿÿÿŽŽŽÿÿÿUUUÿÿÿŽŽŽÿÿÿ¯¯¯ÿÿÿ°°°ÿÿÿ¢¢¢ÿÿÿ|||ÿÿÿrrrÿÿÿÿÿÿªªªÿÿÿ»»»ÿÿÿ¶¶¶ÿÿÿiiiÿÿÿ{{{ÿÿÿ´´´ÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿÇÇÇÿÿÿ«««ÿÿÿ¹¹¹ÿÿÿ–––ÿÿÿwwwÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2xxxÿÿÿƒƒƒÿÿÿ€€€ÿÿÿ………ÿÿÿwwwÿÿÿ{{{ÿÿÿãããÿÿÿUUUÿÿÿÿÿÿÿÿÿUUUÿÿÿ}}}ÿÿÿ{{{ÿÿÿ‚‚‚ÿÿÿ|||ÿÿÿãããÿÿÿ999ÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿqqqÿÿÿ„„„ÿÿÿãããÿÿÿ999ÿÿÿ~~~ÿÿÿ‚‚‚ÿÿÿƒƒƒÿÿÿ|||ÿÿÿÇÇÇÿÿÿ„„„ÿÿÿpppÿÿÿ………ÿÿÿÿÿÿzzzÿÿÿwwwÿÿÿˆˆˆÿÿÿ|||ÿÿÿuuuÿÿÿ{{{ÿÿÿxxxÿÿÿƒƒƒÿÿÿ€€€ÿÿÿ………ÿÿÿwwwÿÿÿ{{{ÿÿÿ‡‡‡ÿÿÿwwwÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿ}}}ÿÿÿ{{{ÿÿÿ‚‚‚ÿÿÿ|||ÿÿÿ~~~ÿÿÿ………ÿÿÿuuuÿÿÿsssÿÿÿÿÿÿÿÿÿqqqÿÿÿ„„„ÿÿÿ‚‚‚ÿÿÿzzzÿÿÿ~~~ÿÿÿ‚‚‚ÿÿÿƒƒƒÿÿÿ|||ÿÿÿ~~~ÿÿÿ„„„ÿÿÿpppÿÿÿ………ÿÿÿÿÿÿzzzÿÿÿwwwÿÿÿˆˆˆÿÿÿ|||ÿÿÿuuuÿÿÿ{{{ÿÿÿxxxÿÿÿƒƒƒÿÿÿ€€€ÿÿÿ………ÿÿÿwwwÿÿÿ{{{ÿÿÿ‡‡‡ÿÿÿwwwÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿ}}}ÿÿÿ{{{ÿÿÿ‚‚‚ÿÿÿ|||ÿÿÿ~~~ÿÿÿ………ÿÿÿŽŽŽÿÿÿãããÿÿÿÿÿÿÿÿÿqqqÿÿÿãããÿÿÿÿÿÿrrrÿÿÿ~~~ÿÿÿ‚‚‚ÿÿÿƒƒƒÿÿÿ|||ÿÿÿ~~~ÿÿÿUUUÿÿÿÿÿÿrrrÿÿÿÿÿÿzzzÿÿÿwwwÿÿÿˆˆˆÿÿÿ|||ÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ999ÿÿÿªªªÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2444ÿÿÿ333ÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿ???ÿÿÿ‡‡‡ÿÿÿqqqÿÿÿfffÿÿÿãããÿÿÿ999ÿÿÿÿÿÿUUUÿÿÿÿÿÿ$$$ÿÿÿ>>>ÿÿÿÿÿÿeeeÿÿÿrrrÿÿÿUUUÿÿÿÿÿÿ===ÿÿÿ&&&ÿÿÿzzzÿÿÿrrrÿÿÿcccÿÿÿ000ÿÿÿ---ÿÿÿ555ÿÿÿ’’’ÿÿÿˆˆˆÿÿÿ"""ÿÿÿ&&&ÿÿÿ...ÿÿÿdddÿÿÿƒƒƒÿÿÿ~~~ÿÿÿ444ÿÿÿ333ÿÿÿÿÿÿbbbÿÿÿŽŽŽÿÿÿdddÿÿÿÿÿÿ$$$ÿÿÿ???ÿÿÿ‡‡‡ÿÿÿqqqÿÿÿfffÿÿÿÿÿÿ,,,ÿÿÿ'''ÿÿÿwwwÿÿÿÿÿÿ$$$ÿÿÿ>>>ÿÿÿÿÿÿeeeÿÿÿvvvÿÿÿgggÿÿÿÿÿÿ===ÿÿÿ&&&ÿÿÿzzzÿÿÿŒŒŒÿÿÿcccÿÿÿ000ÿÿÿ---ÿÿÿ555ÿÿÿ’’’ÿÿÿˆˆˆÿÿÿ"""ÿÿÿ&&&ÿÿÿ...ÿÿÿdddÿÿÿƒƒƒÿÿÿ~~~ÿÿÿ444ÿÿÿ333ÿÿÿÿÿÿbbbÿÿÿŽŽŽÿÿÿdddÿÿÿÿÿÿ$$$ÿÿÿ???ÿÿÿ‡‡‡ÿÿÿqqqÿÿÿfffÿÿÿÿÿÿ,,,ÿÿÿ'''ÿÿÿãããÿÿÿÿÿÿ$$$ÿÿÿ>>>ÿÿÿrrrÿÿÿŽŽŽÿÿÿvvvÿÿÿgggÿÿÿÿÿÿ===ÿÿÿrrrÿÿÿÿÿÿªªªÿÿÿcccÿÿÿ000ÿÿÿ---ÿÿÿ555ÿÿÿãããÿÿÿ999ÿÿÿÿÿÿUUUÿÿÿãããÿÿÿdddÿÿÿƒƒƒÿÿÿ~~~ÿÿÿ444ÿÿÿÇÇÇÿÿÿ999ÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2999ÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿbbbÿÿÿ¥¥¥ÿÿÿœœœÿÿÿ~~~ÿÿÿãããÿÿÿ999ÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿpppÿÿÿcccÿÿÿ\\\ÿÿÿÇÇÇÿÿÿÿÿÿŽŽŽÿÿÿ’’’ÿÿÿkkkÿÿÿ–––ÿÿÿwwwÿÿÿ999ÿÿÿ///ÿÿÿXXXÿÿÿCCCÿÿÿãããÿÿÿ———ÿÿÿÿÿÿ^^^ÿÿÿãããÿÿÿhhhÿÿÿPPPÿÿÿuuuÿÿÿdddÿÿÿ¡¡¡ÿÿÿhhhÿÿÿƒƒƒÿÿÿaaaÿÿÿVVVÿÿÿ)))ÿÿÿtttÿÿÿbbbÿÿÿ¥¥¥ÿÿÿœœœÿÿÿ~~~ÿÿÿ===ÿÿÿgggÿÿÿ)))ÿÿÿƒƒƒÿÿÿ„„„ÿÿÿÿÿÿpppÿÿÿcccÿÿÿ\\\ÿÿÿXXXÿÿÿaaaÿÿÿEEEÿÿÿ’’’ÿÿÿkkkÿÿÿ–––ÿÿÿwwwÿÿÿZZZÿÿÿ///ÿÿÿXXXÿÿÿCCCÿÿÿ£££ÿÿÿ———ÿÿÿÿÿÿ^^^ÿÿÿBBBÿÿÿhhhÿÿÿPPPÿÿÿuuuÿÿÿdddÿÿÿ¡¡¡ÿÿÿhhhÿÿÿƒƒƒÿÿÿaaaÿÿÿVVVÿÿÿ)))ÿÿÿtttÿÿÿbbbÿÿÿ¥¥¥ÿÿÿœœœÿÿÿ~~~ÿÿÿ===ÿÿÿgggÿÿÿ)))ÿÿÿƒƒƒÿÿÿãããÿÿÿÿÿÿpppÿÿÿãããÿÿÿŽŽŽÿÿÿXXXÿÿÿaaaÿÿÿEEEÿÿÿŽŽŽÿÿÿ999ÿÿÿ–––ÿÿÿwwwÿÿÿZZZÿÿÿ///ÿÿÿãããÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿ^^^ÿÿÿBBBÿÿÿhhhÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿƒƒƒÿÿÿaaaÿÿÿVVVÿÿÿ)))ÿÿÿtttÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿrrrÿÿÿ~~~ÿÿÿÿÿÿiiiÿÿÿ„„„ÿÿÿãããÿÿÿ999ÿÿÿÿÿÿÿÿÿrrrÿÿÿÿÿÿiiiÿÿÿ†††ÿÿÿ………ÿÿÿÿÿÿUUUÿÿÿÿÿÿÇÇÇÿÿÿ………ÿÿÿfffÿÿÿŽŽŽÿÿÿãããÿÿÿÿÿÿrrrÿÿÿ{{{ÿÿÿmmmÿÿÿãããÿÿÿÇÇÇÿÿÿuuuÿÿÿÿÿÿŽŽŽÿÿÿhhhÿÿÿwwwÿÿÿ‡‡‡ÿÿÿˆˆˆÿÿÿ[[[ÿÿÿtttÿÿÿpppÿÿÿŠŠŠÿÿÿnnnÿÿÿxxxÿÿÿ~~~ÿÿÿÿÿÿiiiÿÿÿ„„„ÿÿÿ|||ÿÿÿˆˆˆÿÿÿoooÿÿÿ{{{ÿÿÿ~~~ÿÿÿÿÿÿiiiÿÿÿ†††ÿÿÿ………ÿÿÿÿÿÿrrrÿÿÿƒƒƒÿÿÿzzzÿÿÿ………ÿÿÿfffÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿrrrÿÿÿ{{{ÿÿÿmmmÿÿÿÿÿÿpppÿÿÿuuuÿÿÿÿÿÿ„„„ÿÿÿhhhÿÿÿwwwÿÿÿ‡‡‡ÿÿÿˆˆˆÿÿÿ[[[ÿÿÿtttÿÿÿpppÿÿÿŠŠŠÿÿÿnnnÿÿÿxxxÿÿÿ~~~ÿÿÿÿÿÿiiiÿÿÿ„„„ÿÿÿ|||ÿÿÿˆˆˆÿÿÿoooÿÿÿ{{{ÿÿÿ~~~ÿÿÿÇÇÇÿÿÿiiiÿÿÿ†††ÿÿÿ………ÿÿÿªªªÿÿÿrrrÿÿÿƒƒƒÿÿÿÇÇÇÿÿÿŽŽŽÿÿÿfffÿÿÿŽŽŽÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿÇÇÇÿÿÿmmmÿÿÿÿÿÿpppÿÿÿuuuÿÿÿUUUÿÿÿÿÿÿ999ÿÿÿwwwÿÿÿ‡‡‡ÿÿÿˆˆˆÿÿÿ[[[ÿÿÿtttÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿiiiÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ƒƒƒÿÿÿÿÿÿÿÿÿãããÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿ”””ÿÿÿ‰‰‰ÿÿÿªªªÿÿÿÿÿÿÿÿÿãããÿÿÿ€€€ÿÿÿÿÿÿ}}}ÿÿÿÇÇÇÿÿÿÿÿÿãããÿÿÿuuuÿÿÿ‰‰‰ÿÿÿãããÿÿÿŽŽŽÿÿÿ|||ÿÿÿ¬¬¬ÿÿÿŽŽŽÿÿÿ€€€ÿÿÿzzzÿÿÿ¥¥¥ÿÿÿ™™™ÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿœœœÿÿÿ‚‚‚ÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ···ÿÿÿ~~~ÿÿÿœœœÿÿÿˆˆˆÿÿÿŠŠŠÿÿÿ‡‡‡ÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿ”””ÿÿÿ‰‰‰ÿÿÿ‚‚‚ÿÿÿÿÿÿ¤¤¤ÿÿÿ   ÿÿÿ€€€ÿÿÿÿÿÿ}}}ÿÿÿ¦¦¦ÿÿÿŠŠŠÿÿÿ£££ÿÿÿuuuÿÿÿ‰‰‰ÿÿÿÿÿÿ©©©ÿÿÿ|||ÿÿÿ¬¬¬ÿÿÿvvvÿÿÿ€€€ÿÿÿzzzÿÿÿ¥¥¥ÿÿÿ™™™ÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿœœœÿÿÿ‚‚‚ÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ···ÿÿÿ~~~ÿÿÿœœœÿÿÿˆˆˆÿÿÿŠŠŠÿÿÿ‡‡‡ÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿ”””ÿÿÿ‰‰‰ÿÿÿªªªÿÿÿÿÿÿ¤¤¤ÿÿÿÇÇÇÿÿÿÇÇÇÿÿÿÿÿÿ}}}ÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿ£££ÿÿÿuuuÿÿÿ‰‰‰ÿÿÿÇÇÇÿÿÿÿÿÿrrrÿÿÿ¬¬¬ÿÿÿvvvÿÿÿ€€€ÿÿÿzzzÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿrrrÿÿÿ‚‚‚ÿÿÿœœœÿÿÿ‚‚‚ÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ãããÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÈÈÈÿÿÿÂÂÂÿÿÿ£££ÿÿÿrrrÿÿÿ’’’ÿÿÿ999ÿÿÿÿÿÿ999ÿÿÿÃÃÃÿÿÿ~~~ÿÿÿÿÿÿ¼¼¼ÿÿÿŽŽŽÿÿÿÿÿÿãããÿÿÿ~~~ÿÿÿÿÿÿ¸¸¸ÿÿÿUUUÿÿÿ¼¼¼ÿÿÿwwwÿÿÿãããÿÿÿrrrÿÿÿÃÃÃÿÿÿªªªÿÿÿ²²²ÿÿÿ•••ÿÿÿÿÿÿ¶¶¶ÿÿÿºººÿÿÿÆÆÆÿÿÿ‘‘‘ÿÿÿ}}}ÿÿÿmmmÿÿÿ»»»ÿÿÿÀÀÀÿÿÿ¦¦¦ÿÿÿvvvÿÿÿsssÿÿÿÿÿÿÈÈÈÿÿÿÂÂÂÿÿÿ£££ÿÿÿrrrÿÿÿ’’’ÿÿÿÿÿÿÍÍÍÿÿÿÀÀÀÿÿÿÃÃÃÿÿÿ~~~ÿÿÿÿÿÿ¼¼¼ÿÿÿÌÌÌÿÿÿ¸¸¸ÿÿÿ£££ÿÿÿ~~~ÿÿÿÿÿÿ¸¸¸ÿÿÿÖÖÖÿÿÿ¼¼¼ÿÿÿwwwÿÿÿÿÿÿ¦¦¦ÿÿÿÃÃÃÿÿÿªªªÿÿÿ²²²ÿÿÿ•••ÿÿÿÿÿÿ¶¶¶ÿÿÿºººÿÿÿÆÆÆÿÿÿ‘‘‘ÿÿÿ}}}ÿÿÿmmmÿÿÿ»»»ÿÿÿÀÀÀÿÿÿ¦¦¦ÿÿÿvvvÿÿÿsssÿÿÿÿÿÿÈÈÈÿÿÿÂÂÂÿÿÿ£££ÿÿÿrrrÿÿÿ’’’ÿÿÿÿÿÿÍÍÍÿÿÿÀÀÀÿÿÿrrrÿÿÿ~~~ÿÿÿÿÿÿ¼¼¼ÿÿÿUUUÿÿÿ¸¸¸ÿÿÿ£££ÿÿÿ~~~ÿÿÿrrrÿÿÿrrrÿÿÿÖÖÖÿÿÿ¼¼¼ÿÿÿwwwÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿãããÿÿÿ²²²ÿÿÿ•••ÿÿÿÿÿÿ¶¶¶ÿÿÿ999ÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿmmmÿÿÿ»»»ÿÿÿÀÀÀÿÿÿ¦¦¦ÿÿÿvvvÿÿÿrrrÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿ999ÿÿÿ•••ÿÿÿtttÿÿÿPPPÿÿÿFFFÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿZZZÿÿÿÿÿÿRRRÿÿÿSSSÿÿÿrrrÿÿÿÿÿÿãããÿÿÿYYYÿÿÿyyyÿÿÿMMMÿÿÿÿÿÿ444ÿÿÿ%%%ÿÿÿ’’’ÿÿÿ999ÿÿÿÿÿÿyyyÿÿÿ<<<ÿÿÿÇÇÇÿÿÿ___ÿÿÿsssÿÿÿžžžÿÿÿÇÇÇÿÿÿBBBÿÿÿZZZÿÿÿ[[[ÿÿÿLLLÿÿÿZZZÿÿÿ]]]ÿÿÿ:::ÿÿÿnnnÿÿÿ•••ÿÿÿtttÿÿÿPPPÿÿÿFFFÿÿÿÿÿÿXXXÿÿÿŸŸŸÿÿÿ„„„ÿÿÿžžžÿÿÿZZZÿÿÿÿÿÿRRRÿÿÿSSSÿÿÿzzzÿÿÿÿÿÿFFFÿÿÿYYYÿÿÿyyyÿÿÿMMMÿÿÿRRRÿÿÿ444ÿÿÿ%%%ÿÿÿ’’’ÿÿÿ———ÿÿÿÿÿÿyyyÿÿÿ<<<ÿÿÿ!!!ÿÿÿ___ÿÿÿsssÿÿÿžžžÿÿÿ”””ÿÿÿBBBÿÿÿZZZÿÿÿ[[[ÿÿÿLLLÿÿÿZZZÿÿÿ]]]ÿÿÿ:::ÿÿÿnnnÿÿÿ•••ÿÿÿtttÿÿÿPPPÿÿÿFFFÿÿÿÿÿÿXXXÿÿÿÇÇÇÿÿÿ„„„ÿÿÿžžžÿÿÿÇÇÇÿÿÿÿÿÿRRRÿÿÿãããÿÿÿrrrÿÿÿÿÿÿFFFÿÿÿYYYÿÿÿÿÿÿMMMÿÿÿRRRÿÿÿ444ÿÿÿ999ÿÿÿrrrÿÿÿ———ÿÿÿÿÿÿyyyÿÿÿãããÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿžžžÿÿÿ”””ÿÿÿBBBÿÿÿZZZÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿnnnÿÿÿ•••ÿÿÿtttÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ªªªÿÿÿzzzÿÿÿ………ÿÿÿ'''ÿÿÿwwwÿÿÿ"""ÿÿÿ999ÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ|||ÿÿÿ;;;ÿÿÿsssÿÿÿ{{{ÿÿÿ999ÿÿÿÿÿÿÇÇÇÿÿÿGGGÿÿÿ„„„ÿÿÿmmmÿÿÿ999ÿÿÿÇÇÇÿÿÿ111ÿÿÿvvvÿÿÿŽŽŽÿÿÿrrrÿÿÿkkkÿÿÿ„„„ÿÿÿ%%%ÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿ^^^ÿÿÿqqqÿÿÿªªªÿÿÿXXXÿÿÿ|||ÿÿÿÇÇÇÿÿÿ666ÿÿÿ“““ÿÿÿ[[[ÿÿÿCCCÿÿÿzzzÿÿÿ………ÿÿÿ'''ÿÿÿwwwÿÿÿ"""ÿÿÿkkkÿÿÿƒƒƒÿÿÿBBBÿÿÿcccÿÿÿ|||ÿÿÿ;;;ÿÿÿsssÿÿÿ{{{ÿÿÿTTTÿÿÿpppÿÿÿiiiÿÿÿGGGÿÿÿ„„„ÿÿÿmmmÿÿÿ$$$ÿÿÿyyyÿÿÿ111ÿÿÿvvvÿÿÿtttÿÿÿ???ÿÿÿkkkÿÿÿ„„„ÿÿÿ%%%ÿÿÿoooÿÿÿŽŽŽÿÿÿ^^^ÿÿÿqqqÿÿÿrrrÿÿÿXXXÿÿÿ|||ÿÿÿuuuÿÿÿ666ÿÿÿ“““ÿÿÿ[[[ÿÿÿCCCÿÿÿzzzÿÿÿ………ÿÿÿ'''ÿÿÿwwwÿÿÿ"""ÿÿÿkkkÿÿÿƒƒƒÿÿÿBBBÿÿÿcccÿÿÿªªªÿÿÿ;;;ÿÿÿsssÿÿÿrrrÿÿÿTTTÿÿÿpppÿÿÿiiiÿÿÿ999ÿÿÿãããÿÿÿmmmÿÿÿ$$$ÿÿÿŽŽŽÿÿÿrrrÿÿÿvvvÿÿÿtttÿÿÿ???ÿÿÿÿÿÿrrrÿÿÿ%%%ÿÿÿoooÿÿÿŽŽŽÿÿÿãããÿÿÿÿÿÿÿÿÿ999ÿÿÿ|||ÿÿÿuuuÿÿÿ666ÿÿÿ“““ÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿ999ÿÿÿãããÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2’’’ÿÿÿ~~~ÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿŽŽŽÿÿÿ[[[ÿÿÿ€€€ÿÿÿãããÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿfffÿÿÿhhhÿÿÿŠŠŠÿÿÿ999ÿÿÿrrrÿÿÿgggÿÿÿ}}}ÿÿÿãããÿÿÿÿÿÿwwwÿÿÿÿÿÿPPPÿÿÿªªªÿÿÿãããÿÿÿpppÿÿÿ|||ÿÿÿãããÿÿÿãããÿÿÿmmmÿÿÿƒƒƒÿÿÿãããÿÿÿwwwÿÿÿªªªÿÿÿ~~~ÿÿÿdddÿÿÿ’’’ÿÿÿ~~~ÿÿÿÿÿÿzzzÿÿÿjjjÿÿÿ†††ÿÿÿƒƒƒÿÿÿxxxÿÿÿŽŽŽÿÿÿ[[[ÿÿÿ€€€ÿÿÿ‡‡‡ÿÿÿqqqÿÿÿƒƒƒÿÿÿ‚‚‚ÿÿÿfffÿÿÿhhhÿÿÿŠŠŠÿÿÿ‰‰‰ÿÿÿyyyÿÿÿgggÿÿÿ}}}ÿÿÿÿÿÿvvvÿÿÿwwwÿÿÿÿÿÿPPPÿÿÿzzzÿÿÿrrrÿÿÿpppÿÿÿ|||ÿÿÿÿÿÿTTTÿÿÿmmmÿÿÿƒƒƒÿÿÿ€€€ÿÿÿwwwÿÿÿiiiÿÿÿ~~~ÿÿÿdddÿÿÿ’’’ÿÿÿ~~~ÿÿÿÿÿÿzzzÿÿÿjjjÿÿÿ†††ÿÿÿªªªÿÿÿxxxÿÿÿŽŽŽÿÿÿãããÿÿÿ€€€ÿÿÿªªªÿÿÿqqqÿÿÿƒƒƒÿÿÿªªªÿÿÿãããÿÿÿhhhÿÿÿŠŠŠÿÿÿãããÿÿÿÿÿÿgggÿÿÿ}}}ÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿPPPÿÿÿãããÿÿÿÿÿÿ999ÿÿÿ|||ÿÿÿÿÿÿTTTÿÿÿmmmÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ~~~ÿÿÿdddÿÿÿ’’’ÿÿÿ~~~ÿÿÿrrrÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ãããÿÿÿÿÿÿÿÿÿÿÿÿ999ÿÿÿ}}}ÿÿÿÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ{{{ÿÿÿÿÿÿrrrÿÿÿÿÿÿrrrÿÿÿ‡‡‡ÿÿÿ–––ÿÿÿÿÿÿŽŽŽÿÿÿyyyÿÿÿ“““ÿÿÿ„„„ÿÿÿ999ÿÿÿÿÿÿ’’’ÿÿÿuuuÿÿÿŽŽŽÿÿÿ‚‚‚ÿÿÿ¤¤¤ÿÿÿãããÿÿÿãããÿÿÿ}}}ÿÿÿªªªÿÿÿÿÿÿ|||ÿÿÿ–––ÿÿÿ~~~ÿÿÿÿÿÿ€€€ÿÿÿ›››ÿÿÿ‰‰‰ÿÿÿ}}}ÿÿÿÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿŸŸŸÿÿÿ„„„ÿÿÿÿÿÿ†††ÿÿÿ„„„ÿÿÿ{{{ÿÿÿÿÿÿ   ÿÿÿ‡‡‡ÿÿÿrrrÿÿÿ‡‡‡ÿÿÿ–––ÿÿÿ–––ÿÿÿ„„„ÿÿÿyyyÿÿÿ“““ÿÿÿ„„„ÿÿÿ–––ÿÿÿÿÿÿ’’’ÿÿÿuuuÿÿÿÿÿÿ‚‚‚ÿÿÿ¤¤¤ÿÿÿ›››ÿÿÿ„„„ÿÿÿ}}}ÿÿÿ………ÿÿÿÿÿÿ|||ÿÿÿ–––ÿÿÿ~~~ÿÿÿÿÿÿ€€€ÿÿÿ›››ÿÿÿ‰‰‰ÿÿÿ}}}ÿÿÿÿÿÿªªªÿÿÿˆˆˆÿÿÿŸŸŸÿÿÿÇÇÇÿÿÿÿÿÿãããÿÿÿãããÿÿÿ{{{ÿÿÿÿÿÿUUUÿÿÿ‡‡‡ÿÿÿrrrÿÿÿ‡‡‡ÿÿÿÿÿÿªªªÿÿÿ„„„ÿÿÿyyyÿÿÿãããÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿ’’’ÿÿÿÇÇÇÿÿÿÿÿÿ999ÿÿÿ¤¤¤ÿÿÿ›››ÿÿÿ„„„ÿÿÿ}}}ÿÿÿ999ÿÿÿÿÿÿÿÿÿrrrÿÿÿ~~~ÿÿÿÿÿÿ€€€ÿÿÿ›››ÿÿÿÇÇÇÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿŽŽŽÿÿÿ‹‹‹ÿÿÿpppÿÿÿËËËÿÿÿ¬¬¬ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ}}}ÿÿÿzzzÿÿÿ’’’ÿÿÿrrrÿÿÿÿÿÿãããÿÿÿ}}}ÿÿÿ___ÿÿÿrrrÿÿÿÿÿÿŽŽŽÿÿÿÑÑÑÿÿÿ˜˜˜ÿÿÿªªªÿÿÿŽŽŽÿÿÿ[[[ÿÿÿQQQÿÿÿšššÿÿÿ999ÿÿÿŽŽŽÿÿÿ¶¶¶ÿÿÿªªªÿÿÿfffÿÿÿÿÿÿrrrÿÿÿvvvÿÿÿÊÊÊÿÿÿ”””ÿÿÿ©©©ÿÿÿ»»»ÿÿÿRRRÿÿÿPPPÿÿÿ‹‹‹ÿÿÿpppÿÿÿËËËÿÿÿ¬¬¬ÿÿÿ’’’ÿÿÿ¬¬¬ÿÿÿmmmÿÿÿZZZÿÿÿ}}}ÿÿÿzzzÿÿÿ’’’ÿÿÿÅÅÅÿÿÿ¬¬¬ÿÿÿ–––ÿÿÿ}}}ÿÿÿ___ÿÿÿXXXÿÿÿšššÿÿÿŽŽŽÿÿÿÑÑÑÿÿÿ˜˜˜ÿÿÿ„„„ÿÿÿ}}}ÿÿÿ[[[ÿÿÿQQQÿÿÿšššÿÿÿ™™™ÿÿÿŽŽŽÿÿÿ¶¶¶ÿÿÿ‘‘‘ÿÿÿfffÿÿÿÿÿÿ___ÿÿÿvvvÿÿÿÊÊÊÿÿÿ”””ÿÿÿ©©©ÿÿÿ»»»ÿÿÿRRRÿÿÿPPPÿÿÿ‹‹‹ÿÿÿpppÿÿÿËËËÿÿÿ¬¬¬ÿÿÿ’’’ÿÿÿªªªÿÿÿmmmÿÿÿZZZÿÿÿªªªÿÿÿzzzÿÿÿ’’’ÿÿÿŽŽŽÿÿÿ¬¬¬ÿÿÿ–––ÿÿÿÿÿÿ___ÿÿÿXXXÿÿÿšššÿÿÿªªªÿÿÿÿÿÿ˜˜˜ÿÿÿ„„„ÿÿÿ}}}ÿÿÿrrrÿÿÿÿÿÿšššÿÿÿ™™™ÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿ___ÿÿÿvvvÿÿÿÊÊÊÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ‹‹‹ÿÿÿpppÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÇÇÇÿÿÿ®®®ÿÿÿ   ÿÿÿnnnÿÿÿtttÿÿÿrrrÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿjjjÿÿÿ{{{ÿÿÿ{{{ÿÿÿŽŽŽÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿpppÿÿÿãããÿÿÿÿÿÿŽŽŽÿÿÿnnnÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ®®®ÿÿÿyyyÿÿÿ|||ÿÿÿãããÿÿÿUUUÿÿÿ¥¥¥ÿÿÿÁÁÁÿÿÿUUUÿÿÿrrrÿÿÿ€€€ÿÿÿrrrÿÿÿ¸¸¸ÿÿÿ•••ÿÿÿãããÿÿÿÿÿÿ‚‚‚ÿÿÿvvvÿÿÿ®®®ÿÿÿ   ÿÿÿnnnÿÿÿtttÿÿÿtttÿÿÿ•••ÿÿÿ«««ÿÿÿdddÿÿÿjjjÿÿÿ{{{ÿÿÿ{{{ÿÿÿŒŒŒÿÿÿ···ÿÿÿ‡‡‡ÿÿÿÿÿÿpppÿÿÿ†††ÿÿÿ¾¾¾ÿÿÿ¬¬¬ÿÿÿnnnÿÿÿƒƒƒÿÿÿÿÿÿ¢¢¢ÿÿÿ®®®ÿÿÿyyyÿÿÿ|||ÿÿÿŒŒŒÿÿÿeeeÿÿÿ¥¥¥ÿÿÿÁÁÁÿÿÿÿÿÿrrrÿÿÿ€€€ÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿ•••ÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿvvvÿÿÿ®®®ÿÿÿ   ÿÿÿnnnÿÿÿtttÿÿÿtttÿÿÿ•••ÿÿÿ«««ÿÿÿdddÿÿÿrrrÿÿÿ{{{ÿÿÿ{{{ÿÿÿrrrÿÿÿ···ÿÿÿ‡‡‡ÿÿÿÿÿÿpppÿÿÿ†††ÿÿÿrrrÿÿÿŽŽŽÿÿÿnnnÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿrrrÿÿÿyyyÿÿÿ|||ÿÿÿŒŒŒÿÿÿÿÿÿÿÿÿÁÁÁÿÿÿÿÿÿrrrÿÿÿrrrÿÿÿÿÿÿÿÿÿ•••ÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2yyyÿÿÿ111ÿÿÿdddÿÿÿ999ÿÿÿÿÿÿÿÿÿrrrÿÿÿ888ÿÿÿƒƒƒÿÿÿwwwÿÿÿŽŽŽÿÿÿÿÿÿ999ÿÿÿ%%%ÿÿÿwwwÿÿÿ}}}ÿÿÿÿÿÿÿÿÿ---ÿÿÿMMMÿÿÿ~~~ÿÿÿªªªÿÿÿÿÿÿ\\\ÿÿÿ555ÿÿÿ………ÿÿÿrrrÿÿÿªªªÿÿÿ~~~ÿÿÿYYYÿÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿˆˆˆÿÿÿ000ÿÿÿªªªÿÿÿˆˆˆÿÿÿ€€€ÿÿÿˆˆˆÿÿÿyyyÿÿÿ111ÿÿÿdddÿÿÿÿÿÿvvvÿÿÿ|||ÿÿÿbbbÿÿÿ888ÿÿÿƒƒƒÿÿÿwwwÿÿÿ€€€ÿÿÿyyyÿÿÿZZZÿÿÿ%%%ÿÿÿwwwÿÿÿ}}}ÿÿÿ~~~ÿÿÿ|||ÿÿÿ---ÿÿÿMMMÿÿÿ~~~ÿÿÿŠŠŠÿÿÿ‚‚‚ÿÿÿ\\\ÿÿÿ555ÿÿÿ………ÿÿÿ}}}ÿÿÿ}}}ÿÿÿ~~~ÿÿÿYYYÿÿÿ===ÿÿÿÿÿÿÿÿÿÿÿÿˆˆˆÿÿÿ000ÿÿÿZZZÿÿÿˆˆˆÿÿÿ€€€ÿÿÿˆˆˆÿÿÿyyyÿÿÿ111ÿÿÿdddÿÿÿÿÿÿvvvÿÿÿãããÿÿÿbbbÿÿÿÇÇÇÿÿÿƒƒƒÿÿÿwwwÿÿÿrrrÿÿÿyyyÿÿÿZZZÿÿÿ999ÿÿÿwwwÿÿÿ}}}ÿÿÿÿÿÿ|||ÿÿÿ---ÿÿÿãããÿÿÿÿÿÿŠŠŠÿÿÿ‚‚‚ÿÿÿ\\\ÿÿÿŽŽŽÿÿÿÿÿÿãããÿÿÿ}}}ÿÿÿ~~~ÿÿÿÇÇÇÿÿÿÿÿÿrrrÿÿÿÿÿÿÿÿÿˆˆˆÿÿÿ999ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿˆˆˆÿÿÿyyyÿÿÿ111ÿÿÿrrrÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ãããÿÿÿÿÿÿÿÿÿÿÿÿrrrÿÿÿ111ÿÿÿrrrÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿ;;;ÿÿÿƒƒƒÿÿÿ€€€ÿÿÿrrrÿÿÿÿÿÿªªªÿÿÿMMMÿÿÿ€€€ÿÿÿyyyÿÿÿÿÿÿªªªÿÿÿ111ÿÿÿ€€€ÿÿÿrrrÿÿÿÿÿÿvvvÿÿÿŠŠŠÿÿÿDDDÿÿÿÿÿÿtttÿÿÿZZZÿÿÿUUUÿÿÿ~~~ÿÿÿLLLÿÿÿŽŽŽÿÿÿ………ÿÿÿJJJÿÿÿãããÿÿÿhhhÿÿÿ]]]ÿÿÿŒŒŒÿÿÿÿÿÿ...ÿÿÿÿÿÿ111ÿÿÿrrrÿÿÿÿÿÿXXXÿÿÿhhhÿÿÿƒƒƒÿÿÿ;;;ÿÿÿƒƒƒÿÿÿ€€€ÿÿÿUUUÿÿÿhhhÿÿÿnnnÿÿÿMMMÿÿÿ€€€ÿÿÿyyyÿÿÿ333ÿÿÿ‚‚‚ÿÿÿ111ÿÿÿ€€€ÿÿÿrrrÿÿÿOOOÿÿÿvvvÿÿÿŠŠŠÿÿÿDDDÿÿÿwwwÿÿÿtttÿÿÿZZZÿÿÿwwwÿÿÿ~~~ÿÿÿLLLÿÿÿ†††ÿÿÿ………ÿÿÿJJJÿÿÿ{{{ÿÿÿhhhÿÿÿ]]]ÿÿÿŒŒŒÿÿÿÿÿÿ...ÿÿÿÿÿÿ111ÿÿÿrrrÿÿÿÿÿÿªªªÿÿÿhhhÿÿÿƒƒƒÿÿÿUUUÿÿÿƒƒƒÿÿÿ€€€ÿÿÿÿÿÿhhhÿÿÿnnnÿÿÿUUUÿÿÿÇÇÇÿÿÿyyyÿÿÿ333ÿÿÿÿÿÿªªªÿÿÿ€€€ÿÿÿrrrÿÿÿOOOÿÿÿÿÿÿÿÿÿDDDÿÿÿwwwÿÿÿtttÿÿÿ999ÿÿÿÿÿÿŽŽŽÿÿÿLLLÿÿÿ†††ÿÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿŒŒŒÿÿÿÿÿÿ...ÿÿÿŽŽŽÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿrrrÿÿÿ———ÿÿÿ€€€ÿÿÿlllÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ–––ÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿ???ÿÿÿVVVÿÿÿ———ÿÿÿªªªÿÿÿÿÿÿ‰‰‰ÿÿÿFFFÿÿÿWWWÿÿÿãããÿÿÿÿÿÿ———ÿÿÿbbbÿÿÿãããÿÿÿUUUÿÿÿOOOÿÿÿ]]]ÿÿÿUUUÿÿÿMMMÿÿÿnnnÿÿÿUUUÿÿÿ†††ÿÿÿ€€€ÿÿÿÇÇÇÿÿÿWWWÿÿÿãããÿÿÿ‚‚‚ÿÿÿ………ÿÿÿãããÿÿÿ———ÿÿÿãããÿÿÿlllÿÿÿPPPÿÿÿVVVÿÿÿyyyÿÿÿrrrÿÿÿ–––ÿÿÿÿÿÿ€€€ÿÿÿ^^^ÿÿÿhhhÿÿÿ???ÿÿÿVVVÿÿÿ———ÿÿÿ———ÿÿÿœœœÿÿÿ‰‰‰ÿÿÿFFFÿÿÿWWWÿÿÿSSSÿÿÿwwwÿÿÿ———ÿÿÿbbbÿÿÿÿÿÿ~~~ÿÿÿOOOÿÿÿ]]]ÿÿÿ\\\ÿÿÿMMMÿÿÿnnnÿÿÿŒŒŒÿÿÿ†††ÿÿÿ€€€ÿÿÿAAAÿÿÿWWWÿÿÿ888ÿÿÿ‚‚‚ÿÿÿ………ÿÿÿœœœÿÿÿãããÿÿÿ€€€ÿÿÿlllÿÿÿãããÿÿÿVVVÿÿÿyyyÿÿÿãããÿÿÿ–––ÿÿÿÿÿÿUUUÿÿÿ^^^ÿÿÿhhhÿÿÿUUUÿÿÿVVVÿÿÿ———ÿÿÿªªªÿÿÿUUUÿÿÿ‰‰‰ÿÿÿFFFÿÿÿUUUÿÿÿÿÿÿwwwÿÿÿ———ÿÿÿbbbÿÿÿUUUÿÿÿÿÿÿªªªÿÿÿ]]]ÿÿÿ\\\ÿÿÿãããÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ€€€ÿÿÿAAAÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ———ÿÿÿ€€€ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2999ÿÿÿ‘‘‘ÿÿÿŠŠŠÿÿÿ}}}ÿÿÿãããÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿgggÿÿÿŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿrrrÿÿÿ   ÿÿÿÿÿÿÿÿÿUUUÿÿÿƒƒƒÿÿÿ|||ÿÿÿŽŽŽÿÿÿUUUÿÿÿ999ÿÿÿhhhÿÿÿsssÿÿÿªªªÿÿÿUUUÿÿÿwwwÿÿÿ„„„ÿÿÿUUUÿÿÿzzzÿÿÿ’’’ÿÿÿÿÿÿyyyÿÿÿ„„„ÿÿÿŽŽŽÿÿÿÿÿÿqqqÿÿÿ›››ÿÿÿ^^^ÿÿÿŽŽŽÿÿÿŠŠŠÿÿÿ}}}ÿÿÿqqqÿÿÿxxxÿÿÿ•••ÿÿÿÿÿÿgggÿÿÿŸŸŸÿÿÿÿÿÿ‚‚‚ÿÿÿrrrÿÿÿ|||ÿÿÿrrrÿÿÿ   ÿÿÿÿÿÿ~~~ÿÿÿÿÿÿƒƒƒÿÿÿ|||ÿÿÿŽŽŽÿÿÿuuuÿÿÿŒŒŒÿÿÿhhhÿÿÿsssÿÿÿ¥¥¥ÿÿÿ{{{ÿÿÿwwwÿÿÿ„„„ÿÿÿƒƒƒÿÿÿzzzÿÿÿ’’’ÿÿÿ™™™ÿÿÿyyyÿÿÿ„„„ÿÿÿkkkÿÿÿÇÇÇÿÿÿqqqÿÿÿ›››ÿÿÿ^^^ÿÿÿ‘‘‘ÿÿÿÇÇÇÿÿÿ}}}ÿÿÿªªªÿÿÿxxxÿÿÿ•••ÿÿÿŽŽŽÿÿÿgggÿÿÿŸŸŸÿÿÿãããÿÿÿ‚‚‚ÿÿÿrrrÿÿÿUUUÿÿÿrrrÿÿÿ   ÿÿÿUUUÿÿÿãããÿÿÿÿÿÿãããÿÿÿÿÿÿŽŽŽÿÿÿuuuÿÿÿÇÇÇÿÿÿÿÿÿãããÿÿÿ¥¥¥ÿÿÿ{{{ÿÿÿãããÿÿÿÿÿÿÿÿÿzzzÿÿÿ’’’ÿÿÿ™™™ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿqqqÿÿÿ›››ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2———ÿÿÿoooÿÿÿãããÿÿÿÿÿÿÿÿÿ999ÿÿÿ‚‚‚ÿÿÿ{{{ÿÿÿ®®®ÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿ‰‰‰ÿÿÿ©©©ÿÿÿªªªÿÿÿÿÿÿÇÇÇÿÿÿ‡‡‡ÿÿÿ{{{ÿÿÿ»»»ÿÿÿÿÿÿªªªÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿUUUÿÿÿªªªÿÿÿvvvÿÿÿãããÿÿÿUUUÿÿÿzzzÿÿÿªªªÿÿÿÿÿÿzzzÿÿÿ¢¢¢ÿÿÿrrrÿÿÿwwwÿÿÿ®®®ÿÿÿªªªÿÿÿŠŠŠÿÿÿãããÿÿÿoooÿÿÿrrrÿÿÿÇÇÇÿÿÿ‡‡‡ÿÿÿ±±±ÿÿÿ‚‚‚ÿÿÿ{{{ÿÿÿ®®®ÿÿÿƒƒƒÿÿÿnnnÿÿÿ­­­ÿÿÿÿÿÿ‰‰‰ÿÿÿ©©©ÿÿÿ„„„ÿÿÿ€€€ÿÿÿ¯¯¯ÿÿÿ‡‡‡ÿÿÿ{{{ÿÿÿ»»»ÿÿÿ~~~ÿÿÿ¾¾¾ÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿžžžÿÿÿƒƒƒÿÿÿvvvÿÿÿ···ÿÿÿÿÿÿzzzÿÿÿªªªÿÿÿ€€€ÿÿÿzzzÿÿÿãããÿÿÿŽŽŽÿÿÿãããÿÿÿ®®®ÿÿÿzzzÿÿÿŠŠŠÿÿÿÇÇÇÿÿÿoooÿÿÿrrrÿÿÿ¹¹¹ÿÿÿ‡‡‡ÿÿÿãããÿÿÿ‚‚‚ÿÿÿ{{{ÿÿÿrrrÿÿÿƒƒƒÿÿÿãããÿÿÿ­­­ÿÿÿÿÿÿ‰‰‰ÿÿÿÿÿÿ„„„ÿÿÿ€€€ÿÿÿUUUÿÿÿªªªÿÿÿ{{{ÿÿÿ»»»ÿÿÿÿÿÿãããÿÿÿƒƒƒÿÿÿˆˆˆÿÿÿÿÿÿUUUÿÿÿvvvÿÿÿ···ÿÿÿÿÿÿ999ÿÿÿÿÿÿUUUÿÿÿzzzÿÿÿ¢¢¢ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿŠŠŠÿÿÿ———ÿÿÿoooÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿ‹‹‹ÿÿÿoooÿÿÿ‰‰‰ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿ¢¢¢ÿÿÿ«««ÿÿÿÿÿÿÿÿÿ———ÿÿÿ•••ÿÿÿµµµÿÿÿãããÿÿÿÿÿÿãããÿÿÿ{{{ÿÿÿÿÿÿÿÿÿªªªÿÿÿzzzÿÿÿãããÿÿÿUUUÿÿÿ¯¯¯ÿÿÿºººÿÿÿÿÿÿ“““ÿÿÿÿÿÿªªªÿÿÿµµµÿÿÿ²²²ÿÿÿrrrÿÿÿ———ÿÿÿÿÿÿªªªÿÿÿ½½½ÿÿÿãããÿÿÿlllÿÿÿ‹‹‹ÿÿÿoooÿÿÿ‰‰‰ÿÿÿãããÿÿÿƒƒƒÿÿÿ‚‚‚ÿÿÿyyyÿÿÿÿÿÿ¢¢¢ÿÿÿ«««ÿÿÿ{{{ÿÿÿ‚‚‚ÿÿÿ———ÿÿÿ•••ÿÿÿµµµÿÿÿŸŸŸÿÿÿhhhÿÿÿŠŠŠÿÿÿ{{{ÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿzzzÿÿÿŒŒŒÿÿÿ‡‡‡ÿÿÿ¯¯¯ÿÿÿºººÿÿÿ†††ÿÿÿ“““ÿÿÿÿÿÿ~~~ÿÿÿµµµÿÿÿ²²²ÿÿÿvvvÿÿÿªªªÿÿÿÿÿÿˆˆˆÿÿÿ½½½ÿÿÿ«««ÿÿÿªªªÿÿÿ‹‹‹ÿÿÿoooÿÿÿ‰‰‰ÿÿÿ£££ÿÿÿƒƒƒÿÿÿªªªÿÿÿyyyÿÿÿŽŽŽÿÿÿ¢¢¢ÿÿÿ«««ÿÿÿ{{{ÿÿÿÿÿÿ———ÿÿÿ•••ÿÿÿUUUÿÿÿŽŽŽÿÿÿhhhÿÿÿŠŠŠÿÿÿÿÿÿŽŽŽÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ¯¯¯ÿÿÿºººÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿãããÿÿÿµµµÿÿÿ²²²ÿÿÿãããÿÿÿÿÿÿÿÿÿUUUÿÿÿ½½½ÿÿÿ«««ÿÿÿlllÿÿÿrrrÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÇÇÇÿÿÿKKKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPÿÿÿWWWÿÿÿ555ÿÿÿªªªÿÿÿÿÿÿUUUÿÿÿ†††ÿÿÿ‰‰‰ÿÿÿÿÿÿUUUÿÿÿÿÿÿnnnÿÿÿ–––ÿÿÿ’’’ÿÿÿÿÿÿãããÿÿÿ###ÿÿÿªªªÿÿÿUUUÿÿÿYYYÿÿÿ:::ÿÿÿÿÿÿ999ÿÿÿuuuÿÿÿãããÿÿÿãããÿÿÿÿÿÿªªªÿÿÿ„„„ÿÿÿ™™™ÿÿÿ999ÿÿÿDDDÿÿÿÿÿÿÇÇÇÿÿÿKKKÿÿÿªªªÿÿÿÿÿÿ+++ÿÿÿ333ÿÿÿ>>>ÿÿÿPPPÿÿÿÇÇÇÿÿÿ555ÿÿÿÿÿÿ444ÿÿÿãããÿÿÿ†††ÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿnnnÿÿÿ–––ÿÿÿ’’’ÿÿÿ---ÿÿÿ###ÿÿÿ###ÿÿÿYYYÿÿÿãããÿÿÿYYYÿÿÿ:::ÿÿÿ@@@ÿÿÿ999ÿÿÿuuuÿÿÿQQQÿÿÿÿÿÿªªªÿÿÿ ÿÿÿŽŽŽÿÿÿ™™™ÿÿÿãããÿÿÿDDDÿÿÿŽŽŽÿÿÿÿÿÿKKKÿÿÿªªªÿÿÿÿÿÿrrrÿÿÿ333ÿÿÿ>>>ÿÿÿãããÿÿÿãããÿÿÿ555ÿÿÿUUUÿÿÿ444ÿÿÿ...ÿÿÿ†††ÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿUUUÿÿÿ–––ÿÿÿ’’’ÿÿÿÿÿÿÿÿÿ###ÿÿÿYYYÿÿÿªªªÿÿÿÿÿÿrrrÿÿÿ@@@ÿÿÿ999ÿÿÿuuuÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿ„„„ÿÿÿ™™™ÿÿÿrrrÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿKKKÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2rrrÿÿÿzzzÿÿÿpppÿÿÿVVVÿÿÿ999ÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿsssÿÿÿXXXÿÿÿzzzÿÿÿÿÿÿÿÿÿãããÿÿÿŠŠŠÿÿÿ```ÿÿÿZZZÿÿÿÿÿÿÿÿÿ‰‰‰ÿÿÿNNNÿÿÿãããÿÿÿÿÿÿŒŒŒÿÿÿdddÿÿÿªªªÿÿÿÿÿÿ€€€ÿÿÿGGGÿÿÿÿÿÿlllÿÿÿeeeÿÿÿLLLÿÿÿŽŽŽÿÿÿwwwÿÿÿwwwÿÿÿãããÿÿÿdddÿÿÿÇÇÇÿÿÿmmmÿÿÿqqqÿÿÿrrrÿÿÿpppÿÿÿVVVÿÿÿ|||ÿÿÿUUUÿÿÿªªªÿÿÿ|||ÿÿÿÇÇÇÿÿÿXXXÿÿÿªªªÿÿÿXXXÿÿÿãããÿÿÿwwwÿÿÿªªªÿÿÿ```ÿÿÿÇÇÇÿÿÿsssÿÿÿÿÿÿ‰‰‰ÿÿÿNNNÿÿÿcccÿÿÿPPPÿÿÿŒŒŒÿÿÿdddÿÿÿgggÿÿÿ```ÿÿÿªªªÿÿÿGGGÿÿÿ‚‚‚ÿÿÿlllÿÿÿeeeÿÿÿLLLÿÿÿÇÇÇÿÿÿwwwÿÿÿãããÿÿÿ}}}ÿÿÿÇÇÇÿÿÿxxxÿÿÿrrrÿÿÿqqqÿÿÿzzzÿÿÿÇÇÇÿÿÿVVVÿÿÿãããÿÿÿUUUÿÿÿŒŒŒÿÿÿUUUÿÿÿsssÿÿÿXXXÿÿÿŽŽŽÿÿÿXXXÿÿÿ{{{ÿÿÿÿÿÿŠŠŠÿÿÿ```ÿÿÿãããÿÿÿÿÿÿÿÿÿ‰‰‰ÿÿÿªªªÿÿÿÿÿÿPPPÿÿÿŒŒŒÿÿÿUUUÿÿÿÿÿÿ```ÿÿÿ€€€ÿÿÿãããÿÿÿÿÿÿÿÿÿeeeÿÿÿLLLÿÿÿRRRÿÿÿªªªÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿxxxÿÿÿmmmÿÿÿqqqÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2’’’ÿÿÿwwwÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿŠŠŠÿÿÿvvvÿÿÿªªªÿÿÿÿÿÿÿÿÿwwwÿÿÿ‚‚‚ÿÿÿ~~~ÿÿÿÇÇÇÿÿÿÿÿÿUUUÿÿÿzzzÿÿÿvvvÿÿÿªªªÿÿÿÿÿÿŠŠŠÿÿÿ~~~ÿÿÿŽŽŽÿÿÿÿÿÿrrrÿÿÿ‚‚‚ÿÿÿÿÿÿãããÿÿÿ‡‡‡ÿÿÿ„„„ÿÿÿÿÿÿ„„„ÿÿÿnnnÿÿÿUUUÿÿÿrrrÿÿÿ{{{ÿÿÿrrrÿÿÿxxxÿÿÿ’’’ÿÿÿwwwÿÿÿƒƒƒÿÿÿUUUÿÿÿÿÿÿ|||ÿÿÿ€€€ÿÿÿŠŠŠÿÿÿvvvÿÿÿŒŒŒÿÿÿƒƒƒÿÿÿ………ÿÿÿwwwÿÿÿ‚‚‚ÿÿÿªªªÿÿÿ|||ÿÿÿÿÿÿƒƒƒÿÿÿzzzÿÿÿvvvÿÿÿvvvÿÿÿ‚‚‚ÿÿÿŠŠŠÿÿÿ~~~ÿÿÿwwwÿÿÿ‚‚‚ÿÿÿrrrÿÿÿªªªÿÿÿsssÿÿÿãããÿÿÿ‡‡‡ÿÿÿ„„„ÿÿÿÿÿÿãããÿÿÿnnnÿÿÿnnnÿÿÿãããÿÿÿ{{{ÿÿÿÇÇÇÿÿÿxxxÿÿÿÇÇÇÿÿÿwwwÿÿÿÇÇÇÿÿÿ{{{ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿŠŠŠÿÿÿÇÇÇÿÿÿŒŒŒÿÿÿƒƒƒÿÿÿÿÿÿwwwÿÿÿ‚‚‚ÿÿÿÿÿÿ|||ÿÿÿÿÿÿãããÿÿÿÿÿÿvvvÿÿÿvvvÿÿÿªªªÿÿÿÿÿÿ~~~ÿÿÿwwwÿÿÿªªªÿÿÿÿÿÿÇÇÇÿÿÿsssÿÿÿ~~~ÿÿÿÿÿÿÿÿÿªªªÿÿÿ„„„ÿÿÿnnnÿÿÿnnnÿÿÿÿÿÿÿÿÿÿÿÿxxxÿÿÿ’’’ÿÿÿwwwÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ãããÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ¥¥¥ÿÿÿ|||ÿÿÿ{{{ÿÿÿÿÿÿÿÿÿrrrÿÿÿ­­­ÿÿÿyyyÿÿÿ‚‚‚ÿÿÿUUUÿÿÿÿÿÿÇÇÇÿÿÿˆˆˆÿÿÿ{{{ÿÿÿUUUÿÿÿÿÿÿ’’’ÿÿÿ›››ÿÿÿUUUÿÿÿÿÿÿÿÿÿ¬¬¬ÿÿÿÿÿÿªªªÿÿÿpppÿÿÿ‹‹‹ÿÿÿÿÿÿ¿¿¿ÿÿÿŸŸŸÿÿÿÿÿÿqqqÿÿÿŠŠŠÿÿÿÿÿÿŠŠŠÿÿÿšššÿÿÿ999ÿÿÿ„„„ÿÿÿzzzÿÿÿ˜˜˜ÿÿÿŒŒŒÿÿÿUUUÿÿÿ|||ÿÿÿÇÇÇÿÿÿ’’’ÿÿÿrrrÿÿÿ|||ÿÿÿ­­­ÿÿÿyyyÿÿÿ‚‚‚ÿÿÿ………ÿÿÿ¨¨¨ÿÿÿ¤¤¤ÿÿÿˆˆˆÿÿÿ{{{ÿÿÿ€€€ÿÿÿ£££ÿÿÿ’’’ÿÿÿ›››ÿÿÿ‰‰‰ÿÿÿ‡‡‡ÿÿÿÿÿÿ¬¬¬ÿÿÿÿÿÿ­­­ÿÿÿpppÿÿÿ‹‹‹ÿÿÿvvvÿÿÿ¿¿¿ÿÿÿŸŸŸÿÿÿdddÿÿÿqqqÿÿÿrrrÿÿÿ“““ÿÿÿrrrÿÿÿšššÿÿÿrrrÿÿÿ„„„ÿÿÿzzzÿÿÿUUUÿÿÿŒŒŒÿÿÿ¥¥¥ÿÿÿŽŽŽÿÿÿ{{{ÿÿÿŽŽŽÿÿÿ¨¨¨ÿÿÿ|||ÿÿÿ­­­ÿÿÿÿÿÿ‚‚‚ÿÿÿ………ÿÿÿÿÿÿ¤¤¤ÿÿÿˆˆˆÿÿÿªªªÿÿÿÿÿÿ£££ÿÿÿ’’’ÿÿÿªªªÿÿÿÿÿÿ‡‡‡ÿÿÿÿÿÿãããÿÿÿÿÿÿUUUÿÿÿpppÿÿÿ‹‹‹ÿÿÿrrrÿÿÿÿÿÿÿÿÿdddÿÿÿqqqÿÿÿŠŠŠÿÿÿrrrÿÿÿÿÿÿÿÿÿUUUÿÿÿ„„„ÿÿÿzzzÿÿÿ˜˜˜ÿÿÿ999ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿ999ÿÿÿ›››ÿÿÿ†††ÿÿÿpppÿÿÿªªªÿÿÿÿÿÿÿÿÿãããÿÿÿ‡‡‡ÿÿÿ©©©ÿÿÿ×××ÿÿÿÿÿÿÿÿÿgggÿÿÿkkkÿÿÿùùùÿÿÿÿÿÿÿÿÿ†††ÿÿÿWWWÿÿÿUUUÿÿÿÿÿÿ   ÿÿÿáááÿÿÿÿÿÿrrrÿÿÿœœœÿÿÿ‰‰‰ÿÿÿÿÿÿ†††ÿÿÿƒƒƒÿÿÿrrrÿÿÿÇÇÇÿÿÿÛÛÛÿÿÿªªªÿÿÿãããÿÿÿcccÿÿÿªªªÿÿÿ’’’ÿÿÿ³³³ÿÿÿ999ÿÿÿ›››ÿÿÿ†††ÿÿÿpppÿÿÿvvvÿÿÿŽŽŽÿÿÿ¤¤¤ÿÿÿŽŽŽÿÿÿ‡‡‡ÿÿÿŽŽŽÿÿÿ×××ÿÿÿÇÇÇÿÿÿ€€€ÿÿÿgggÿÿÿkkkÿÿÿùùùÿÿÿøøøÿÿÿÿÿÿÿÿÿ†††ÿÿÿWWWÿÿÿ[[[ÿÿÿŒŒŒÿÿÿ   ÿÿÿáááÿÿÿ{{{ÿÿÿÿÿÿœœœÿÿÿ‰‰‰ÿÿÿ˜˜˜ÿÿÿ†††ÿÿÿªªªÿÿÿ“““ÿÿÿrrrÿÿÿÛÛÛÿÿÿÇÇÇÿÿÿaaaÿÿÿcccÿÿÿãããÿÿÿ’’’ÿÿÿÇÇÇÿÿÿÆÆÆÿÿÿãããÿÿÿ†††ÿÿÿpppÿÿÿrrrÿÿÿÿÿÿ¤¤¤ÿÿÿÿÿÿ‡‡‡ÿÿÿ©©©ÿÿÿãããÿÿÿUUUÿÿÿ€€€ÿÿÿãããÿÿÿÿÿÿùùùÿÿÿøøøÿÿÿªªªÿÿÿÿÿÿWWWÿÿÿ[[[ÿÿÿãããÿÿÿÿÿÿãããÿÿÿ{{{ÿÿÿÿÿÿÿÿÿÿÿÿ˜˜˜ÿÿÿ†††ÿÿÿãããÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿÇÇÇÿÿÿaaaÿÿÿcccÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ›››ÿÿÿ†††ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿãããÿÿÿYYYÿÿÿÿÿÿwwwÿÿÿÿÿÿÿÿÿÿÿÿiiiÿÿÿvvvÿÿÿxxxÿÿÿªªªÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿÿÿÿpppÿÿÿÿÿÿÿÿÿbbbÿÿÿlllÿÿÿÿÿÿÿÿÿ^^^ÿÿÿ666ÿÿÿÿÿÿUUUÿÿÿ†††ÿÿÿnnnÿÿÿÿÿÿãããÿÿÿ‡‡‡ÿÿÿãããÿÿÿŽŽŽÿÿÿzzzÿÿÿ111ÿÿÿUUUÿÿÿŽŽŽÿÿÿwwwÿÿÿŽŽŽÿÿÿiiiÿÿÿÇÇÇÿÿÿYYYÿÿÿÿÿÿ999ÿÿÿ{{{ÿÿÿVVVÿÿÿ999ÿÿÿiiiÿÿÿvvvÿÿÿxxxÿÿÿªªªÿÿÿ???ÿÿÿUUUÿÿÿ‚‚‚ÿÿÿŽŽŽÿÿÿpppÿÿÿªªªÿÿÿ'''ÿÿÿbbbÿÿÿlllÿÿÿÿÿÿÿÿÿ^^^ÿÿÿ666ÿÿÿ}}}ÿÿÿ~~~ÿÿÿ†††ÿÿÿnnnÿÿÿTTTÿÿÿãããÿÿÿ‡‡‡ÿÿÿrrrÿÿÿ‰‰‰ÿÿÿªªªÿÿÿ111ÿÿÿBBBÿÿÿrrrÿÿÿwwwÿÿÿÿÿÿiiiÿÿÿ999ÿÿÿYYYÿÿÿÿÿÿÿÿÿ{{{ÿÿÿVVVÿÿÿÿÿÿiiiÿÿÿvvvÿÿÿUUUÿÿÿÿÿÿ???ÿÿÿŽŽŽÿÿÿªªªÿÿÿÿÿÿªªªÿÿÿÿÿÿ'''ÿÿÿbbbÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿ^^^ÿÿÿãããÿÿÿÿÿÿªªªÿÿÿ†††ÿÿÿnnnÿÿÿÿÿÿÿÿÿãããÿÿÿfffÿÿÿ‰‰‰ÿÿÿÿÿÿÿÿÿ999ÿÿÿŽŽŽÿÿÿwwwÿÿÿoooÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿwwwÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2OOOÿÿÿuuuÿÿÿ{{{ÿÿÿªªªÿÿÿÿÿÿÿÿÿªªªÿÿÿ„„„ÿÿÿDDDÿÿÿrrrÿÿÿ999ÿÿÿÿÿÿUUUÿÿÿ‚‚‚ÿÿÿZZZÿÿÿãããÿÿÿÿÿÿUUUÿÿÿŒŒŒÿÿÿzzzÿÿÿÿÿÿÿÿÿ ÿÿÿyyyÿÿÿUUUÿÿÿÿÿÿ~~~ÿÿÿŠŠŠÿÿÿUUUÿÿÿŽŽŽÿÿÿ}}}ÿÿÿ```ÿÿÿÿÿÿŠŠŠÿÿÿXXXÿÿÿÿÿÿŠŠŠÿÿÿ---ÿÿÿÿÿÿvvvÿÿÿOOOÿÿÿ999ÿÿÿ{{{ÿÿÿ555ÿÿÿÇÇÇÿÿÿ###ÿÿÿUUUÿÿÿ„„„ÿÿÿ999ÿÿÿrrrÿÿÿtttÿÿÿ///ÿÿÿŒŒŒÿÿÿUUUÿÿÿZZZÿÿÿUUUÿÿÿ{{{ÿÿÿUUUÿÿÿŒŒŒÿÿÿzzzÿÿÿ)))ÿÿÿzzzÿÿÿ ÿÿÿyyyÿÿÿgggÿÿÿNNNÿÿÿªªªÿÿÿŠŠŠÿÿÿªªªÿÿÿƒƒƒÿÿÿUUUÿÿÿ```ÿÿÿãããÿÿÿŠŠŠÿÿÿXXXÿÿÿÿÿÿŠŠŠÿÿÿUUUÿÿÿ|||ÿÿÿãããÿÿÿOOOÿÿÿuuuÿÿÿŽŽŽÿÿÿ555ÿÿÿoooÿÿÿÇÇÇÿÿÿ€€€ÿÿÿãããÿÿÿŽŽŽÿÿÿrrrÿÿÿªªªÿÿÿÇÇÇÿÿÿŒŒŒÿÿÿ‚‚‚ÿÿÿÿÿÿãããÿÿÿ{{{ÿÿÿUUUÿÿÿUUUÿÿÿzzzÿÿÿ)))ÿÿÿUUUÿÿÿÿÿÿyyyÿÿÿgggÿÿÿãããÿÿÿÿÿÿrrrÿÿÿ111ÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿªªªÿÿÿŠŠŠÿÿÿXXXÿÿÿUUUÿÿÿÿÿÿÿÿÿãããÿÿÿvvvÿÿÿOOOÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2‹‹‹ÿÿÿˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿyyyÿÿÿ‚‚‚ÿÿÿ~~~ÿÿÿ———ÿÿÿÿÿÿÿÿÿªªªÿÿÿ‡‡‡ÿÿÿŒŒŒÿÿÿŽŽŽÿÿÿÿÿÿUUUÿÿÿ‚‚‚ÿÿÿˆˆˆÿÿÿÿÿÿÿÿÿqqqÿÿÿŠŠŠÿÿÿUUUÿÿÿÿÿÿzzzÿÿÿXXXÿÿÿªªªÿÿÿÿÿÿ‚‚‚ÿÿÿtttÿÿÿÿÿÿoooÿÿÿ|||ÿÿÿrrrÿÿÿãããÿÿÿŒŒŒÿÿÿãããÿÿÿÇÇÇÿÿÿuuuÿÿÿrrrÿÿÿˆˆˆÿÿÿlllÿÿÿ999ÿÿÿnnnÿÿÿyyyÿÿÿÇÇÇÿÿÿ~~~ÿÿÿrrrÿÿÿwwwÿÿÿrrrÿÿÿuuuÿÿÿ‡‡‡ÿÿÿªªªÿÿÿ‚‚‚ÿÿÿrrrÿÿÿpppÿÿÿUUUÿÿÿˆˆˆÿÿÿãããÿÿÿwwwÿÿÿqqqÿÿÿªªªÿÿÿ}}}ÿÿÿ‘‘‘ÿÿÿzzzÿÿÿUUUÿÿÿqqqÿÿÿUUUÿÿÿ‚‚‚ÿÿÿUUUÿÿÿÿÿÿoooÿÿÿ|||ÿÿÿyyyÿÿÿrrrÿÿÿŒŒŒÿÿÿwwwÿÿÿãããÿÿÿuuuÿÿÿ999ÿÿÿˆˆˆÿÿÿÿÿÿÿÿÿnnnÿÿÿÿÿÿ‚‚‚ÿÿÿ~~~ÿÿÿÿÿÿwwwÿÿÿzzzÿÿÿÿÿÿ‡‡‡ÿÿÿŒŒŒÿÿÿ‚‚‚ÿÿÿÿÿÿpppÿÿÿ‚‚‚ÿÿÿÿÿÿUUUÿÿÿwwwÿÿÿqqqÿÿÿUUUÿÿÿÿÿÿ‘‘‘ÿÿÿzzzÿÿÿXXXÿÿÿÿÿÿUUUÿÿÿ‚‚‚ÿÿÿtttÿÿÿUUUÿÿÿÿÿÿ999ÿÿÿyyyÿÿÿrrrÿÿÿªªªÿÿÿÿÿÿÿÿÿUUUÿÿÿ‹‹‹ÿÿÿˆˆˆÿÿÿlllÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ªªªÿÿÿÿÿÿÿÿÿ999ÿÿÿ€€€ÿÿÿ”””ÿÿÿ”””ÿÿÿªªªÿÿÿÿÿÿÿÿÿãããÿÿÿoooÿÿÿlllÿÿÿ999ÿÿÿÿÿÿªªªÿÿÿ›››ÿÿÿ]]]ÿÿÿÿÿÿÿÿÿuuuÿÿÿŸŸŸÿÿÿUUUÿÿÿÿÿÿˆˆˆÿÿÿ___ÿÿÿÇÇÇÿÿÿÿÿÿ|||ÿÿÿÿÿÿ999ÿÿÿãããÿÿÿÿÿÿãããÿÿÿÿÿÿ]]]ÿÿÿ___ÿÿÿÿÿÿ¥¥¥ÿÿÿ¯¯¯ÿÿÿ999ÿÿÿYYYÿÿÿaaaÿÿÿŽŽŽÿÿÿ€€€ÿÿÿrrrÿÿÿ”””ÿÿÿÇÇÇÿÿÿ†††ÿÿÿoooÿÿÿ999ÿÿÿoooÿÿÿÇÇÇÿÿÿ’’’ÿÿÿÿÿÿªªªÿÿÿ›››ÿÿÿUUUÿÿÿ```ÿÿÿªªªÿÿÿuuuÿÿÿŸŸŸÿÿÿªªªÿÿÿ–––ÿÿÿˆˆˆÿÿÿ___ÿÿÿÿÿÿdddÿÿÿÿÿÿÿÿÿªªªÿÿÿ‰‰‰ÿÿÿÿÿÿUUUÿÿÿaaaÿÿÿUUUÿÿÿ___ÿÿÿ¨¨¨ÿÿÿÿÿÿ¯¯¯ÿÿÿrrrÿÿÿYYYÿÿÿaaaÿÿÿrrrÿÿÿ€€€ÿÿÿ”””ÿÿÿrrrÿÿÿ’’’ÿÿÿ†††ÿÿÿÿÿÿ___ÿÿÿoooÿÿÿÿÿÿ’’’ÿÿÿÿÿÿ¼¼¼ÿÿÿÿÿÿ]]]ÿÿÿ```ÿÿÿÿÿÿªªªÿÿÿŸŸŸÿÿÿ   ÿÿÿÿÿÿÿÿÿ___ÿÿÿ{{{ÿÿÿdddÿÿÿÿÿÿÿÿÿšššÿÿÿ‰‰‰ÿÿÿªªªÿÿÿÿÿÿÿÿÿ]]]ÿÿÿ___ÿÿÿ¨¨¨ÿÿÿÿÿÿÿÿÿÿÿÿYYYÿÿÿaaaÿÿÿbbbÿÿÿÇÇÇÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿªªªÿÿÿ¯¯¯ÿÿÿgggÿÿÿ«««ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ¼¼¼ÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ–––ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿœœœÿÿÿUUUÿÿÿÿÿÿÿÿÿ{{{ÿÿÿãããÿÿÿÿÿÿ………ÿÿÿÿÿÿªªªÿÿÿUUUÿÿÿšššÿÿÿÿÿÿÿÿÿ———ÿÿÿ€€€ÿÿÿrrrÿÿÿ   ÿÿÿ}}}ÿÿÿ999ÿÿÿ€€€ÿÿÿyyyÿÿÿ999ÿÿÿ¯¯¯ÿÿÿgggÿÿÿUUUÿÿÿŒŒŒÿÿÿÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿªªªÿÿÿ¼¼¼ÿÿÿUUUÿÿÿ‡‡‡ÿÿÿœœœÿÿÿ–––ÿÿÿÿÿÿªªªÿÿÿlllÿÿÿrrrÿÿÿœœœÿÿÿvvvÿÿÿªªªÿÿÿÿÿÿ{{{ÿÿÿ­­­ÿÿÿUUUÿÿÿ………ÿÿÿUUUÿÿÿ‰‰‰ÿÿÿzzzÿÿÿšššÿÿÿÿÿÿUUUÿÿÿ———ÿÿÿãããÿÿÿ‚‚‚ÿÿÿ   ÿÿÿrrrÿÿÿ˜˜˜ÿÿÿ€€€ÿÿÿrrrÿÿÿ†††ÿÿÿÿÿÿgggÿÿÿ«««ÿÿÿ999ÿÿÿÿÿÿŽŽŽÿÿÿrrrÿÿÿŽŽŽÿÿÿ¼¼¼ÿÿÿÇÇÇÿÿÿ999ÿÿÿœœœÿÿÿ–––ÿÿÿªªªÿÿÿÿÿÿlllÿÿÿÿÿÿÿÿÿªªªÿÿÿµµµÿÿÿÿÿÿÿÿÿÿÿÿˆˆˆÿÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿšššÿÿÿÿÿÿãããÿÿÿÿÿÿÿÿÿãããÿÿÿ   ÿÿÿ}}}ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ¯¯¯ÿÿÿgggÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿ²²²ÿÿÿžžžÿÿÿ………ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿzzzÿÿÿ‹‹‹ÿÿÿÿÿÿÿÿÿãããÿÿÿ‚‚‚ÿÿÿyyyÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ™™™ÿÿÿUUUÿÿÿÿÿÿãããÿÿÿ§§§ÿÿÿÁÁÁÿÿÿÿÿÿãããÿÿÿyyyÿÿÿãããÿÿÿÿÿÿªªªÿÿÿ†††ÿÿÿ999ÿÿÿªªªÿÿÿŠŠŠÿÿÿ¬¬¬ÿÿÿ999ÿÿÿuuuÿÿÿ~~~ÿÿÿ999ÿÿÿ„„„ÿÿÿ²²²ÿÿÿ999ÿÿÿ………ÿÿÿÇÇÇÿÿÿuuuÿÿÿ•••ÿÿÿUUUÿÿÿ‚‚‚ÿÿÿªªªÿÿÿ‹‹‹ÿÿÿmmmÿÿÿÿÿÿºººÿÿÿŽŽŽÿÿÿyyyÿÿÿ}}}ÿÿÿªªªÿÿÿÇÇÇÿÿÿUUUÿÿÿ‹‹‹ÿÿÿŒŒŒÿÿÿªªªÿÿÿ§§§ÿÿÿÁÁÁÿÿÿƒƒƒÿÿÿUUUÿÿÿyyyÿÿÿªªªÿÿÿŸŸŸÿÿÿªªªÿÿÿªªªÿÿÿÿÿÿªªªÿÿÿŠŠŠÿÿÿ¬¬¬ÿÿÿUUUÿÿÿuuuÿÿÿ~~~ÿÿÿŽŽŽÿÿÿ„„„ÿÿÿÿÿÿžžžÿÿÿãããÿÿÿ999ÿÿÿuuuÿÿÿ•••ÿÿÿÿÿÿ‚‚‚ÿÿÿzzzÿÿÿÿÿÿmmmÿÿÿžžžÿÿÿ999ÿÿÿªªªÿÿÿyyyÿÿÿ}}}ÿÿÿÿÿÿUUUÿÿÿ™™™ÿÿÿ‹‹‹ÿÿÿÿÿÿªªªÿÿÿ§§§ÿÿÿÁÁÁÿÿÿÿÿÿÿÿÿyyyÿÿÿ{{{ÿÿÿŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿ|||ÿÿÿŠŠŠÿÿÿÿÿÿÿÿÿUUUÿÿÿ~~~ÿÿÿ}}}ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿ444ÿÿÿ___ÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ---ÿÿÿ}}}ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿWWWÿÿÿ---ÿÿÿãããÿÿÿÿÿÿÿÿÿmmmÿÿÿ???ÿÿÿUUUÿÿÿÿÿÿãããÿÿÿÿÿÿNNNÿÿÿÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ|||ÿÿÿÿÿÿSSSÿÿÿ999ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿuuuÿÿÿÿÿÿeeeÿÿÿ‰‰‰ÿÿÿÿÿÿ~~~ÿÿÿÿÿÿ999ÿÿÿ___ÿÿÿ‡‡‡ÿÿÿÿÿÿ–––ÿÿÿŽŽŽÿÿÿ---ÿÿÿ}}}ÿÿÿÿÿÿzzzÿÿÿ‘‘‘ÿÿÿUUUÿÿÿ---ÿÿÿÿÿÿ~~~ÿÿÿ‘‘‘ÿÿÿmmmÿÿÿ???ÿÿÿÿÿÿ‘‘‘ÿÿÿuuuÿÿÿªªªÿÿÿNNNÿÿÿªªªÿÿÿyyyÿÿÿrrrÿÿÿ|||ÿÿÿšššÿÿÿSSSÿÿÿ999ÿÿÿÿÿÿ‚‚‚ÿÿÿÿÿÿªªªÿÿÿ999ÿÿÿÿÿÿ‰‰‰ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿãããÿÿÿŽŽŽÿÿÿ‡‡‡ÿÿÿÿÿÿ–––ÿÿÿ[[[ÿÿÿrrrÿÿÿÇÇÇÿÿÿ‚‚‚ÿÿÿãããÿÿÿÿÿÿWWWÿÿÿ---ÿÿÿÿÿÿ~~~ÿÿÿ‘‘‘ÿÿÿmmmÿÿÿÿÿÿªªªÿÿÿ‘‘‘ÿÿÿÇÇÇÿÿÿÿÿÿãããÿÿÿ===ÿÿÿyyyÿÿÿÿÿÿÿÿÿšššÿÿÿSSSÿÿÿ999ÿÿÿÿÿÿÿÿÿãããÿÿÿuuuÿÿÿ999ÿÿÿÿÿÿÿÿÿÿÿÿ~~~ÿÿÿÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2CCCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿEEEÿÿÿkkkÿÿÿrrrÿÿÿÿÿÿÿÿÿNNNÿÿÿ………ÿÿÿãããÿÿÿÿÿÿÿÿÿUUUÿÿÿWWWÿÿÿUUUÿÿÿÿÿÿªªªÿÿÿ```ÿÿÿÿÿÿÿÿÿÿÿÿdddÿÿÿƒƒƒÿÿÿÿÿÿŽŽŽÿÿÿHHHÿÿÿVVVÿÿÿÿÿÿkkkÿÿÿ~~~ÿÿÿªªªÿÿÿrrrÿÿÿ‚‚‚ÿÿÿÇÇÇÿÿÿrrrÿÿÿCCCÿÿÿCCCÿÿÿÿÿÿ“““ÿÿÿTTTÿÿÿŽŽŽÿÿÿ"""ÿÿÿÿÿÿkkkÿÿÿ)))ÿÿÿUUUÿÿÿ”””ÿÿÿÇÇÇÿÿÿÇÇÇÿÿÿdddÿÿÿÿÿÿGGGÿÿÿªªªÿÿÿWWWÿÿÿ’’’ÿÿÿÿÿÿJJJÿÿÿ```ÿÿÿªªªÿÿÿVVVÿÿÿªªªÿÿÿdddÿÿÿªªªÿÿÿ“““ÿÿÿAAAÿÿÿªªªÿÿÿVVVÿÿÿÿÿÿkkkÿÿÿ~~~ÿÿÿÿÿÿÿÿÿªªªÿÿÿ%%%ÿÿÿbbbÿÿÿŽŽŽÿÿÿãããÿÿÿÿÿÿÿÿÿTTTÿÿÿãããÿÿÿÿÿÿEEEÿÿÿkkkÿÿÿÿÿÿ€€€ÿÿÿ”””ÿÿÿÿÿÿŽŽŽÿÿÿdddÿÿÿãããÿÿÿÿÿÿUUUÿÿÿWWWÿÿÿ’’’ÿÿÿÿÿÿãããÿÿÿ```ÿÿÿrrrÿÿÿÿÿÿãããÿÿÿdddÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿHHHÿÿÿVVVÿÿÿ,,,ÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿ‚‚‚ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿÿÿÿ“““ÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ãããÿÿÿÿÿÿÿÿÿÿÿÿwwwÿÿÿuuuÿÿÿ|||ÿÿÿÿÿÿÿÿÿÿÿÿ}}}ÿÿÿzzzÿÿÿªªªÿÿÿÿÿÿÿÿÿ```ÿÿÿ[[[ÿÿÿrrrÿÿÿÿÿÿUUUÿÿÿeeeÿÿÿhhhÿÿÿÿÿÿÿÿÿmmmÿÿÿxxxÿÿÿUUUÿÿÿÿÿÿ^^^ÿÿÿ}}}ÿÿÿÿÿÿrrrÿÿÿJJJÿÿÿbbbÿÿÿÿÿÿƒƒƒÿÿÿeeeÿÿÿÿÿÿyyyÿÿÿtttÿÿÿ999ÿÿÿãããÿÿÿ‚‚‚ÿÿÿÿÿÿwwwÿÿÿuuuÿÿÿ999ÿÿÿrrrÿÿÿÇÇÇÿÿÿÇÇÇÿÿÿ}}}ÿÿÿ999ÿÿÿjjjÿÿÿ|||ÿÿÿUUUÿÿÿ```ÿÿÿUUUÿÿÿ‡‡‡ÿÿÿ€€€ÿÿÿÿÿÿeeeÿÿÿhhhÿÿÿªªªÿÿÿŒŒŒÿÿÿUUUÿÿÿxxxÿÿÿªªªÿÿÿkkkÿÿÿ^^^ÿÿÿUUUÿÿÿgggÿÿÿrrrÿÿÿJJJÿÿÿbbbÿÿÿÿÿÿƒƒƒÿÿÿeeeÿÿÿUUUÿÿÿyyyÿÿÿtttÿÿÿÿÿÿ|||ÿÿÿŽŽŽÿÿÿÇÇÇÿÿÿwwwÿÿÿÿÿÿ|||ÿÿÿrrrÿÿÿŽŽŽÿÿÿrrrÿÿÿ}}}ÿÿÿzzzÿÿÿÿÿÿ|||ÿÿÿ………ÿÿÿUUUÿÿÿ999ÿÿÿ‡‡‡ÿÿÿ€€€ÿÿÿªªªÿÿÿÿÿÿhhhÿÿÿzzzÿÿÿ999ÿÿÿÿÿÿxxxÿÿÿfffÿÿÿkkkÿÿÿÿÿÿÿÿÿgggÿÿÿÿÿÿJJJÿÿÿÿÿÿÿÿÿrrrÿÿÿeeeÿÿÿ|||ÿÿÿUUUÿÿÿÿÿÿÿÿÿªªªÿÿÿ‚‚‚ÿÿÿgggÿÿÿUUUÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘‘‘ÿÿÿ„„„ÿÿÿªªªÿÿÿÿÿÿÿÿÿ{{{ÿÿÿšššÿÿÿªªªÿÿÿÿÿÿ999ÿÿÿ‹‹‹ÿÿÿŒŒŒÿÿÿUUUÿÿÿÿÿÿ†††ÿÿÿƒƒƒÿÿÿÇÇÇÿÿÿÿÿÿ€€€ÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿnnnÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿƒƒƒÿÿÿŽŽŽÿÿÿrrrÿÿÿwwwÿÿÿ¥¥¥ÿÿÿÿÿÿÿÿÿwwwÿÿÿÿÿÿƒƒƒÿÿÿUUUÿÿÿãããÿÿÿÿÿÿÿÿÿ‘‘‘ÿÿÿ„„„ÿÿÿÿÿÿƒƒƒÿÿÿÿÿÿªªªÿÿÿšššÿÿÿÿÿÿzzzÿÿÿÿÿÿÿÿÿŒŒŒÿÿÿãããÿÿÿªªªÿÿÿ†††ÿÿÿUUUÿÿÿxxxÿÿÿ   ÿÿÿªªªÿÿÿÿÿÿÿÿÿ‡‡‡ÿÿÿÇÇÇÿÿÿÇÇÇÿÿÿ‰‰‰ÿÿÿªªªÿÿÿƒƒƒÿÿÿ}}}ÿÿÿÿÿÿwwwÿÿÿ¥¥¥ÿÿÿÿÿÿÿÿÿwwwÿÿÿÿÿÿƒƒƒÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿxxxÿÿÿÿÿÿ„„„ÿÿÿ~~~ÿÿÿrrrÿÿÿÿÿÿ{{{ÿÿÿšššÿÿÿÿÿÿªªªÿÿÿÿÿÿ‹‹‹ÿÿÿ999ÿÿÿÿÿÿŒŒŒÿÿÿ†††ÿÿÿÿÿÿÿÿÿ   ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿnnnÿÿÿÿÿÿ‰‰‰ÿÿÿÿÿÿÿÿÿUUUÿÿÿ‹‹‹ÿÿÿwwwÿÿÿªªªÿÿÿÿÿÿÿÿÿ999ÿÿÿŽŽŽÿÿÿƒƒƒÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿUUUÿÿÿ„„„ÿÿÿ¸¸¸ÿÿÿ“““ÿÿÿÿÿÿÿÿÿÿÿÿ°°°ÿÿÿ‹‹‹ÿÿÿrrrÿÿÿÿÿÿÿÿÿ‹‹‹ÿÿÿ©©©ÿÿÿªªªÿÿÿÿÿÿÿÿÿxxxÿÿÿƒƒƒÿÿÿrrrÿÿÿÿÿÿãããÿÿÿyyyÿÿÿŽŽŽÿÿÿÿÿÿÇÇÇÿÿÿqqqÿÿÿ×××ÿÿÿÿÿÿãããÿÿÿ›››ÿÿÿãããÿÿÿÿÿÿ¢¢¢ÿÿÿˆˆˆÿÿÿÿÿÿ¼¼¼ÿÿÿ‚‚‚ÿÿÿ999ÿÿÿªªªÿÿÿeeeÿÿÿrrrÿÿÿãããÿÿÿ“““ÿÿÿÿÿÿ|||ÿÿÿwwwÿÿÿÿÿÿ‹‹‹ÿÿÿ}}}ÿÿÿÿÿÿ‹‹‹ÿÿÿŽŽŽÿÿÿãããÿÿÿÿÿÿÿÿÿ¤¤¤ÿÿÿxxxÿÿÿUUUÿÿÿÐÐÐÿÿÿªªªÿÿÿªªªÿÿÿyyyÿÿÿUUUÿÿÿ³³³ÿÿÿÿÿÿŽŽŽÿÿÿ×××ÿÿÿÿÿÿ{{{ÿÿÿ›››ÿÿÿUUUÿÿÿ………ÿÿÿ¢¢¢ÿÿÿrrrÿÿÿƒƒƒÿÿÿUUUÿÿÿ‚‚‚ÿÿÿtttÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿ„„„ÿÿÿÿÿÿãããÿÿÿ«««ÿÿÿÿÿÿãããÿÿÿ°°°ÿÿÿÇÇÇÿÿÿÿÿÿ···ÿÿÿ‹‹‹ÿÿÿÿÿÿrrrÿÿÿÿÿÿãããÿÿÿÿÿÿxxxÿÿÿƒƒƒÿÿÿÐÐÐÿÿÿÿÿÿÿÿÿyyyÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿqqqÿÿÿ×××ÿÿÿÿÿÿÿÿÿÿÿÿ………ÿÿÿ………ÿÿÿ¢¢¢ÿÿÿÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿtttÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿ“““ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ªªªÿÿÿƒƒƒÿÿÿqqqÿÿÿªªªÿÿÿÿÿÿÿÿÿUUUÿÿÿÄÄÄÿÿÿ‹‹‹ÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿ×××ÿÿÿªªªÿÿÿÿÿÿÿÿÿeeeÿÿÿ‰‰‰ÿÿÿªªªÿÿÿÿÿÿrrrÿÿÿ¦¦¦ÿÿÿÅÅÅÿÿÿÿÿÿ999ÿÿÿ___ÿÿÿUUUÿÿÿÿÿÿ999ÿÿÿñññÿÿÿ’’’ÿÿÿÿÿÿãããÿÿÿWWWÿÿÿ999ÿÿÿrrrÿÿÿ‹‹‹ÿÿÿ•••ÿÿÿÿÿÿ———ÿÿÿƒƒƒÿÿÿÿÿÿdddÿÿÿãããÿÿÿÿÿÿ¶¶¶ÿÿÿãããÿÿÿUUUÿÿÿXXXÿÿÿªªªÿÿÿUUUÿÿÿÿÿÿÿÿÿ”””ÿÿÿ„„„ÿÿÿÿÿÿeeeÿÿÿ‰‰‰ÿÿÿUUUÿÿÿ‡‡‡ÿÿÿªªªÿÿÿªªªÿÿÿÅÅÅÿÿÿÿÿÿ```ÿÿÿ___ÿÿÿUUUÿÿÿuuuÿÿÿÿÿÿñññÿÿÿ’’’ÿÿÿÿÿÿTTTÿÿÿWWWÿÿÿÿÿÿ¢¢¢ÿÿÿ‹‹‹ÿÿÿUUUÿÿÿ‘‘‘ÿÿÿ———ÿÿÿÿÿÿqqqÿÿÿãããÿÿÿÿÿÿ   ÿÿÿªªªÿÿÿÿÿÿ‹‹‹ÿÿÿXXXÿÿÿÿÿÿãããÿÿÿÿÿÿãããÿÿÿÿÿÿ„„„ÿÿÿ„„„ÿÿÿUUUÿÿÿÿÿÿnnnÿÿÿ‡‡‡ÿÿÿžžžÿÿÿÿÿÿUUUÿÿÿÑÑÑÿÿÿ```ÿÿÿÿÿÿÿÿÿuuuÿÿÿ»»»ÿÿÿãããÿÿÿÿÿÿÿÿÿTTTÿÿÿWWWÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿ‘‘‘ÿÿÿ———ÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2222ÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿrrrÿÿÿÿÿÿ000ÿÿÿ999ÿÿÿÿÿÿÿÿÿ[[[ÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿhhhÿÿÿÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿvvvÿÿÿÿÿÿÿÿÿ...ÿÿÿ‡‡‡ÿÿÿUUUÿÿÿÿÿÿ'''ÿÿÿ111ÿÿÿUUUÿÿÿÿÿÿ}}}ÿÿÿ,,,ÿÿÿÿÿÿÿÿÿXXXÿÿÿ999ÿÿÿrrrÿÿÿ222ÿÿÿªªªÿÿÿUUUÿÿÿaaaÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿUUUÿÿÿÇÇÇÿÿÿnnnÿÿÿ999ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿ"""ÿÿÿtttÿÿÿÿÿÿÿÿÿ%%%ÿÿÿUUUÿÿÿcccÿÿÿªªªÿÿÿªªªÿÿÿ###ÿÿÿÿÿÿ...ÿÿÿ‡‡‡ÿÿÿÿÿÿhhhÿÿÿUUUÿÿÿ111ÿÿÿ***ÿÿÿÿÿÿ}}}ÿÿÿ,,,ÿÿÿÿÿÿÿÿÿXXXÿÿÿÿÿÿŽŽŽÿÿÿ222ÿÿÿÿÿÿ###ÿÿÿaaaÿÿÿÿÿÿeeeÿÿÿÿÿÿÿÿÿãããÿÿÿnnnÿÿÿãããÿÿÿÿÿÿÿÿÿ###ÿÿÿÿÿÿÿÿÿhhhÿÿÿÿÿÿÿÿÿÿÿÿcccÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿªªªÿÿÿ...ÿÿÿãããÿÿÿÿÿÿÿÿÿ'''ÿÿÿ111ÿÿÿãããÿÿÿÿÿÿÿÿÿ,,,ÿÿÿ!!!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ222ÿÿÿÿÿÿ###ÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ŒŒŒÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿWWWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}ÿÿÿeeeÿÿÿªªªÿÿÿÿÿÿÿÿÿbbbÿÿÿ\\\ÿÿÿ~~~ÿÿÿÿÿÿÿÿÿMMMÿÿÿ}}}ÿÿÿŽŽŽÿÿÿÿÿÿtttÿÿÿvvvÿÿÿãããÿÿÿÿÿÿÇÇÇÿÿÿ€€€ÿÿÿ………ÿÿÿÿÿÿaaaÿÿÿUUUÿÿÿÿÿÿrrrÿÿÿ„„„ÿÿÿUUUÿÿÿÿÿÿIIIÿÿÿŒŒŒÿÿÿÿÿÿ€€€ÿÿÿIIIÿÿÿÿÿÿWWWÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ[[[ÿÿÿÿÿÿeeeÿÿÿƒƒƒÿÿÿÿÿÿ„„„ÿÿÿbbbÿÿÿUUUÿÿÿ~~~ÿÿÿãããÿÿÿUUUÿÿÿMMMÿÿÿªªªÿÿÿªªªÿÿÿƒƒƒÿÿÿÿÿÿvvvÿÿÿPPPÿÿÿÿÿÿHHHÿÿÿªªªÿÿÿŽŽŽÿÿÿ‰‰‰ÿÿÿ999ÿÿÿUUUÿÿÿyyyÿÿÿrrrÿÿÿÇÇÇÿÿÿUUUÿÿÿÿÿÿIIIÿÿÿŒŒŒÿÿÿªªªÿÿÿ999ÿÿÿIIIÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿ[[[ÿÿÿ}}}ÿÿÿÿÿÿrrrÿÿÿyyyÿÿÿ„„„ÿÿÿÿÿÿrrrÿÿÿ~~~ÿÿÿ~~~ÿÿÿÿÿÿªªªÿÿÿ}}}ÿÿÿYYYÿÿÿUUUÿÿÿÿÿÿãããÿÿÿPPPÿÿÿªªªÿÿÿÿÿÿÿÿÿ………ÿÿÿ‰‰‰ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿƒƒƒÿÿÿ„„„ÿÿÿUUUÿÿÿUUUÿÿÿÿÿÿÿÿÿãããÿÿÿ€€€ÿÿÿIIIÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿãããÿÿÿÿÿÿ‚‚‚ÿÿÿÿÿÿÿÿÿÿÿÿ‡‡‡ÿÿÿxxxÿÿÿªªªÿÿÿÿÿÿÿÿÿãããÿÿÿ|||ÿÿÿ†††ÿÿÿÿÿÿÿÿÿ………ÿÿÿ~~~ÿÿÿãããÿÿÿÿÿÿŽŽŽÿÿÿ„„„ÿÿÿ†††ÿÿÿÿÿÿÿÿÿƒƒƒÿÿÿ‹‹‹ÿÿÿÿÿÿrrrÿÿÿ‡‡‡ÿÿÿÇÇÇÿÿÿÿÿÿxxxÿÿÿƒƒƒÿÿÿ999ÿÿÿ999ÿÿÿÿÿÿãããÿÿÿÿÿÿ„„„ÿÿÿªªªÿÿÿÿÿÿ‚‚‚ÿÿÿ‹‹‹ÿÿÿÿÿÿ„„„ÿÿÿ‡‡‡ÿÿÿÿÿÿ}}}ÿÿÿ„„„ÿÿÿÿÿÿÿÿÿªªªÿÿÿUUUÿÿÿ‹‹‹ÿÿÿªªªÿÿÿªªªÿÿÿ~~~ÿÿÿUUUÿÿÿªªªÿÿÿ|||ÿÿÿÿÿÿ†††ÿÿÿsssÿÿÿÿÿÿƒƒƒÿÿÿãããÿÿÿ999ÿÿÿyyyÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿ€€€ÿÿÿãããÿÿÿ999ÿÿÿ‡‡‡ÿÿÿªªªÿÿÿ999ÿÿÿ“““ÿÿÿŽŽŽÿÿÿÿÿÿ}}}ÿÿÿÿÿÿÿÿÿ‹‹‹ÿÿÿˆˆˆÿÿÿÿÿÿÇÇÇÿÿÿxxxÿÿÿ}}}ÿÿÿÿÿÿ‚‚‚ÿÿÿÿÿÿrrrÿÿÿÿÿÿ‹‹‹ÿÿÿvvvÿÿÿrrrÿÿÿÿÿÿ€€€ÿÿÿrrrÿÿÿ|||ÿÿÿÿÿÿÿÿÿsssÿÿÿ€€€ÿÿÿUUUÿÿÿÿÿÿÿÿÿyyyÿÿÿ‡‡‡ÿÿÿªªªÿÿÿÿÿÿÿÿÿãããÿÿÿ‡‡‡ÿÿÿrrrÿÿÿUUUÿÿÿÿÿÿÿÿÿªªªÿÿÿ}}}ÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿãããÿÿÿ²²²ÿÿÿ‹‹‹ÿÿÿÿÿÿÿÿÿÿÿÿ}}}ÿÿÿ­­­ÿÿÿªªªÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿ```ÿÿÿnnnÿÿÿÿÿÿÿÿÿãããÿÿÿ———ÿÿÿ´´´ÿÿÿÿÿÿÿÿÿ[[[ÿÿÿkkkÿÿÿ999ÿÿÿÿÿÿÿÿÿ®®®ÿÿÿŽŽŽÿÿÿÿÿÿiiiÿÿÿƒƒƒÿÿÿÿÿÿrrrÿÿÿ“““ÿÿÿ€€€ÿÿÿÿÿÿTTTÿÿÿjjjÿÿÿÿÿÿŽŽŽÿÿÿ™™™ÿÿÿÿÿÿªªªÿÿÿ‚‚‚ÿÿÿrrrÿÿÿUUUÿÿÿ}}}ÿÿÿªªªÿÿÿÿÿÿ®®®ÿÿÿŽŽŽÿÿÿUUUÿÿÿ```ÿÿÿUUUÿÿÿªªªÿÿÿšššÿÿÿrrrÿÿÿªªªÿÿÿ´´´ÿÿÿUUUÿÿÿªªªÿÿÿ[[[ÿÿÿÿÿÿœœœÿÿÿµµµÿÿÿÿÿÿ®®®ÿÿÿWWWÿÿÿÿÿÿiiiÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ“““ÿÿÿÿÿÿeeeÿÿÿTTTÿÿÿÿÿÿkkkÿÿÿ“““ÿÿÿÿÿÿŽŽŽÿÿÿ‹‹‹ÿÿÿÿÿÿ999ÿÿÿXXXÿÿÿrrrÿÿÿÿÿÿ”””ÿÿÿ®®®ÿÿÿÿÿÿÿÿÿ```ÿÿÿnnnÿÿÿÿÿÿÿÿÿœœœÿÿÿ———ÿÿÿÿÿÿÿÿÿnnnÿÿÿ[[[ÿÿÿkkkÿÿÿÿÿÿÿÿÿÿÿÿ®®®ÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒÿÿÿ®®®ÿÿÿªªªÿÿÿÿÿÿÿÿÿãããÿÿÿTTTÿÿÿjjjÿÿÿUUUÿÿÿÿÿÿÿÿÿUUUÿÿÿ‹‹‹ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿ«««ÿÿÿ¹¹¹ÿÿÿ–––ÿÿÿÿÿÿÿÿÿÿÿÿÃÃÃÿÿÿŒŒŒÿÿÿãããÿÿÿÿÿÿÿÿÿªªªÿÿÿ®®®ÿÿÿºººÿÿÿÿÿÿÿÿÿrrrÿÿÿÉÉÉÿÿÿ®®®ÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ¯¯¯ÿÿÿÇÇÇÿÿÿÿÿÿŽŽŽÿÿÿ}}}ÿÿÿ………ÿÿÿÿÿÿªªªÿÿÿ¶¶¶ÿÿÿŽŽŽÿÿÿÿÿÿ´´´ÿÿÿÆÆÆÿÿÿ999ÿÿÿÿÿÿsssÿÿÿzzzÿÿÿÿÿÿ«««ÿÿÿ¹¹¹ÿÿÿÿÿÿwwwÿÿÿ‹‹‹ÿÿÿÿÿÿãããÿÿÿŒŒŒÿÿÿ999ÿÿÿrrrÿÿÿ§§§ÿÿÿÿÿÿªªªÿÿÿºººÿÿÿ999ÿÿÿªªªÿÿÿ¾¾¾ÿÿÿUUUÿÿÿªªªÿÿÿÿÿÿUUUÿÿÿªªªÿÿÿ¯¯¯ÿÿÿÿÿÿ¢¢¢ÿÿÿ|||ÿÿÿÿÿÿ………ÿÿÿ´´´ÿÿÿÿÿÿ¶¶¶ÿÿÿiiiÿÿÿÿÿÿ´´´ÿÿÿÆÆÆÿÿÿÿÿÿ–––ÿÿÿsssÿÿÿÿÿÿãããÿÿÿ«««ÿÿÿªªªÿÿÿÿÿÿwwwÿÿÿ‹‹‹ÿÿÿÿÿÿÃÃÃÿÿÿŒŒŒÿÿÿÿÿÿŽŽŽÿÿÿ§§§ÿÿÿ¥¥¥ÿÿÿÿÿÿãããÿÿÿ€€€ÿÿÿãããÿÿÿÿÿÿrrrÿÿÿ®®®ÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿ°°°ÿÿÿãããÿÿÿÿÿÿÿÿÿ………ÿÿÿ´´´ÿÿÿÿÿÿÿÿÿUUUÿÿÿ{{{ÿÿÿ´´´ÿÿÿUUUÿÿÿÿÿÿÿÿÿãããÿÿÿzzzÿÿÿŽŽŽÿÿÿUUUÿÿÿÿÿÿÿÿÿ999ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2xxxÿÿÿƒƒƒÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ‡‡‡ÿÿÿwwwÿÿÿãããÿÿÿÿÿÿÿÿÿUUUÿÿÿ{{{ÿÿÿ‚‚‚ÿÿÿÿÿÿÿÿÿÿÿÿuuuÿÿÿsssÿÿÿ999ÿÿÿÿÿÿÇÇÇÿÿÿ„„„ÿÿÿ‚‚‚ÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ„„„ÿÿÿpppÿÿÿÿÿÿrrrÿÿÿzzzÿÿÿwwwÿÿÿÿÿÿÇÇÇÿÿÿuuuÿÿÿUUUÿÿÿÿÿÿƒƒƒÿÿÿrrrÿÿÿÿÿÿwwwÿÿÿ{{{ÿÿÿÿÿÿwwwÿÿÿÿÿÿÿÿÿãããÿÿÿ}}}ÿÿÿÿÿÿ‚‚‚ÿÿÿ|||ÿÿÿÿÿÿ………ÿÿÿuuuÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿUUUÿÿÿŽŽŽÿÿÿ‚‚‚ÿÿÿÿÿÿ~~~ÿÿÿ‚‚‚ÿÿÿÿÿÿãããÿÿÿ~~~ÿÿÿÿÿÿpppÿÿÿ………ÿÿÿÿÿÿzzzÿÿÿwwwÿÿÿUUUÿÿÿŽŽŽÿÿÿuuuÿÿÿrrrÿÿÿ999ÿÿÿƒƒƒÿÿÿ€€€ÿÿÿÿÿÿwwwÿÿÿ{{{ÿÿÿÿÿÿrrrÿÿÿÿÿÿrrrÿÿÿÿÿÿ}}}ÿÿÿ{{{ÿÿÿ999ÿÿÿÿÿÿ~~~ÿÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿªªªÿÿÿzzzÿÿÿ~~~ÿÿÿUUUÿÿÿÿÿÿUUUÿÿÿ~~~ÿÿÿ„„„ÿÿÿÿÿÿÿÿÿUUUÿÿÿzzzÿÿÿwwwÿÿÿUUUÿÿÿÿÿÿÿÿÿãããÿÿÿxxxÿÿÿƒƒƒÿÿÿªªªÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2444ÿÿÿ333ÿÿÿÿÿÿÿÿÿÿÿÿdddÿÿÿÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿfffÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿ$$$ÿÿÿªªªÿÿÿÿÿÿ999ÿÿÿvvvÿÿÿgggÿÿÿÿÿÿÿÿÿ&&&ÿÿÿzzzÿÿÿãããÿÿÿÿÿÿãããÿÿÿ---ÿÿÿ999ÿÿÿÿÿÿˆˆˆÿÿÿ"""ÿÿÿ999ÿÿÿÿÿÿdddÿÿÿƒƒƒÿÿÿÿÿÿãããÿÿÿ333ÿÿÿÿÿÿrrrÿÿÿŽŽŽÿÿÿŽŽŽÿÿÿÿÿÿ$$$ÿÿÿ???ÿÿÿÿÿÿqqqÿÿÿfffÿÿÿÿÿÿ,,,ÿÿÿ'''ÿÿÿÿÿÿÿÿÿ$$$ÿÿÿÿÿÿÿÿÿeeeÿÿÿUUUÿÿÿUUUÿÿÿÿÿÿÿÿÿ&&&ÿÿÿzzzÿÿÿÿÿÿªªªÿÿÿ000ÿÿÿÿÿÿÇÇÇÿÿÿ’’’ÿÿÿÿÿÿªªªÿÿÿ&&&ÿÿÿªªªÿÿÿÿÿÿƒƒƒÿÿÿ~~~ÿÿÿÿÿÿ333ÿÿÿÿÿÿÿÿÿ999ÿÿÿdddÿÿÿŽŽŽÿÿÿÿÿÿ???ÿÿÿ‡‡‡ÿÿÿÿÿÿrrrÿÿÿÿÿÿ,,,ÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿ$$$ÿÿÿÿÿÿÿÿÿeeeÿÿÿvvvÿÿÿÿÿÿÿÿÿ===ÿÿÿ&&&ÿÿÿzzzÿÿÿÿÿÿÿÿÿªªªÿÿÿ---ÿÿÿãããÿÿÿÿÿÿÿÿÿªªªÿÿÿ&&&ÿÿÿ...ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ333ÿÿÿÿÿÿªªªÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ãããÿÿÿÿÿÿÿÿÿÿÿÿtttÿÿÿbbbÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿgggÿÿÿ)))ÿÿÿªªªÿÿÿÿÿÿÿÿÿpppÿÿÿcccÿÿÿãããÿÿÿÿÿÿÿÿÿEEEÿÿÿ’’’ÿÿÿŽŽŽÿÿÿÿÿÿrrrÿÿÿZZZÿÿÿ///ÿÿÿÿÿÿÿÿÿ£££ÿÿÿ———ÿÿÿÿÿÿrrrÿÿÿBBBÿÿÿhhhÿÿÿÿÿÿŽŽŽÿÿÿdddÿÿÿŽŽŽÿÿÿÿÿÿƒƒƒÿÿÿaaaÿÿÿÿÿÿ)))ÿÿÿtttÿÿÿÿÿÿUUUÿÿÿœœœÿÿÿªªªÿÿÿÿÿÿgggÿÿÿ)))ÿÿÿÿÿÿ„„„ÿÿÿÿÿÿÿÿÿcccÿÿÿ\\\ÿÿÿÿÿÿaaaÿÿÿEEEÿÿÿÿÿÿUUUÿÿÿ–––ÿÿÿÿÿÿZZZÿÿÿ///ÿÿÿUUUÿÿÿUUUÿÿÿ£££ÿÿÿÿÿÿrrrÿÿÿ^^^ÿÿÿUUUÿÿÿUUUÿÿÿPPPÿÿÿuuuÿÿÿÿÿÿ¡¡¡ÿÿÿhhhÿÿÿÿÿÿãããÿÿÿVVVÿÿÿÇÇÇÿÿÿÿÿÿbbbÿÿÿ¥¥¥ÿÿÿÿÿÿªªªÿÿÿ===ÿÿÿ999ÿÿÿÿÿÿƒƒƒÿÿÿ„„„ÿÿÿrrrÿÿÿÿÿÿcccÿÿÿ\\\ÿÿÿrrrÿÿÿÿÿÿrrrÿÿÿ’’’ÿÿÿkkkÿÿÿÿÿÿÿÿÿZZZÿÿÿ///ÿÿÿXXXÿÿÿÿÿÿÿÿÿãããÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿªªªÿÿÿuuuÿÿÿdddÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿVVVÿÿÿ)))ÿÿÿªªªÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿiiiÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿ{{{ÿÿÿ~~~ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿrrrÿÿÿÿÿÿÿÿÿãããÿÿÿfffÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿrrrÿÿÿ{{{ÿÿÿUUUÿÿÿÿÿÿpppÿÿÿuuuÿÿÿÿÿÿÿÿÿhhhÿÿÿwwwÿÿÿ999ÿÿÿÿÿÿ[[[ÿÿÿtttÿÿÿÿÿÿUUUÿÿÿnnnÿÿÿ999ÿÿÿÿÿÿÿÿÿiiiÿÿÿÿÿÿãããÿÿÿˆˆˆÿÿÿÿÿÿÿÿÿ~~~ÿÿÿŽŽŽÿÿÿÿÿÿ†††ÿÿÿ………ÿÿÿÿÿÿrrrÿÿÿƒƒƒÿÿÿÿÿÿ………ÿÿÿfffÿÿÿÿÿÿUUUÿÿÿÿÿÿÿÿÿ{{{ÿÿÿmmmÿÿÿUUUÿÿÿÿÿÿuuuÿÿÿUUUÿÿÿÿÿÿhhhÿÿÿªªªÿÿÿÿÿÿˆˆˆÿÿÿ[[[ÿÿÿÿÿÿãããÿÿÿŠŠŠÿÿÿÿÿÿ999ÿÿÿ~~~ÿÿÿÿÿÿÿÿÿªªªÿÿÿ|||ÿÿÿ999ÿÿÿÿÿÿ{{{ÿÿÿ~~~ÿÿÿÿÿÿ999ÿÿÿ†††ÿÿÿ………ÿÿÿÿÿÿÿÿÿƒƒƒÿÿÿzzzÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿmmmÿÿÿÿÿÿãããÿÿÿÿÿÿÿÿÿ„„„ÿÿÿhhhÿÿÿUUUÿÿÿÿÿÿÿÿÿªªªÿÿÿtttÿÿÿpppÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿÿÿÿiiiÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿ···ÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿ‡‡‡ÿÿÿ¦¦¦ÿÿÿãããÿÿÿÿÿÿÿÿÿUUUÿÿÿÿÿÿ¤¤¤ÿÿÿÿÿÿÿÿÿrrrÿÿÿ}}}ÿÿÿ¦¦¦ÿÿÿÿÿÿÿÿÿãããÿÿÿ‰‰‰ÿÿÿÿÿÿÿÿÿrrrÿÿÿ¬¬¬ÿÿÿãããÿÿÿÿÿÿrrrÿÿÿ¥¥¥ÿÿÿ™™™ÿÿÿÿÿÿ999ÿÿÿ‚‚‚ÿÿÿãããÿÿÿÿÿÿ¦¦¦ÿÿÿƒƒƒÿÿÿÿÿÿUUUÿÿÿ···ÿÿÿªªªÿÿÿÿÿÿˆˆˆÿÿÿŠŠŠÿÿÿÿÿÿrrrÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿªªªÿÿÿÿÿÿ   ÿÿÿ€€€ÿÿÿÿÿÿ}}}ÿÿÿ¦¦¦ÿÿÿÿÿÿUUUÿÿÿuuuÿÿÿÿÿÿªªªÿÿÿ©©©ÿÿÿªªªÿÿÿÿÿÿvvvÿÿÿªªªÿÿÿÿÿÿ¥¥¥ÿÿÿ™™™ÿÿÿÿÿÿ|||ÿÿÿ‚‚‚ÿÿÿÿÿÿUUUÿÿÿ¦¦¦ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿ···ÿÿÿÿÿÿÿÿÿˆˆˆÿÿÿŠŠŠÿÿÿÿÿÿÇÇÇÿÿÿƒƒƒÿÿÿÿÿÿÿÿÿ‚‚‚ÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿãããÿÿÿÿÿÿãããÿÿÿÿÿÿÿÿÿ£££ÿÿÿuuuÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿ|||ÿÿÿ¬¬¬ÿÿÿrrrÿÿÿÿÿÿÿÿÿ¥¥¥ÿÿÿ™™™ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ‚‚‚ÿÿÿ¦¦¦ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ~~~ÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÀÀÀÿÿÿ¦¦¦ÿÿÿãããÿÿÿÿÿÿÿÿÿÿÿÿÂÂÂÿÿÿ£££ÿÿÿrrrÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿÃÃÃÿÿÿUUUÿÿÿÿÿÿÿÿÿÌÌÌÿÿÿ¸¸¸ÿÿÿUUUÿÿÿÿÿÿ999ÿÿÿ¸¸¸ÿÿÿÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿ¦¦¦ÿÿÿÿÿÿÿÿÿ²²²ÿÿÿ•••ÿÿÿ999ÿÿÿÿÿÿºººÿÿÿÆÆÆÿÿÿÿÿÿÿÿÿmmmÿÿÿÇÇÇÿÿÿÿÿÿ¦¦¦ÿÿÿvvvÿÿÿÿÿÿÿÿÿÈÈÈÿÿÿÂÂÂÿÿÿÿÿÿãããÿÿÿ’’’ÿÿÿÿÿÿrrrÿÿÿÀÀÀÿÿÿrrrÿÿÿÿÿÿÿÿÿ¼¼¼ÿÿÿÿÿÿ¸¸¸ÿÿÿ£££ÿÿÿÿÿÿUUUÿÿÿ¸¸¸ÿÿÿÿÿÿªªªÿÿÿwwwÿÿÿªªªÿÿÿÿÿÿÃÃÃÿÿÿÇÇÇÿÿÿÿÿÿ•••ÿÿÿÿÿÿÿÿÿºººÿÿÿÆÆÆÿÿÿªªªÿÿÿÿÿÿmmmÿÿÿ»»»ÿÿÿÿÿÿãããÿÿÿvvvÿÿÿãããÿÿÿÿÿÿÈÈÈÿÿÿÂÂÂÿÿÿÿÿÿÿÿÿ’’’ÿÿÿÿÿÿÿÿÿ999ÿÿÿÃÃÃÿÿÿ~~~ÿÿÿÿÿÿÿÿÿÌÌÌÿÿÿ¸¸¸ÿÿÿÿÿÿÿÿÿrrrÿÿÿ¸¸¸ÿÿÿÖÖÖÿÿÿÿÿÿÿÿÿãããÿÿÿ¦¦¦ÿÿÿÃÃÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶¶¶ÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿmmmÿÿÿ»»»ÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2]]]ÿÿÿ:::ÿÿÿnnnÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿÿÿÿXXXÿÿÿÿÿÿÿÿÿÿÿÿZZZÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿFFFÿÿÿãããÿÿÿÿÿÿÿÿÿRRRÿÿÿ444ÿÿÿŽŽŽÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿrrrÿÿÿ___ÿÿÿsssÿÿÿÿÿÿÿÿÿBBBÿÿÿZZZÿÿÿÿÿÿŽŽŽÿÿÿZZZÿÿÿÿÿÿÿÿÿnnnÿÿÿ•••ÿÿÿÿÿÿrrrÿÿÿFFFÿÿÿªªªÿÿÿÿÿÿŸŸŸÿÿÿ„„„ÿÿÿÿÿÿªªªÿÿÿÿÿÿ999ÿÿÿÿÿÿzzzÿÿÿÿÿÿÿÿÿYYYÿÿÿyyyÿÿÿÿÿÿUUUÿÿÿ444ÿÿÿÿÿÿªªªÿÿÿ———ÿÿÿÿÿÿÿÿÿ<<<ÿÿÿ!!!ÿÿÿÿÿÿsssÿÿÿžžžÿÿÿÿÿÿrrrÿÿÿZZZÿÿÿ[[[ÿÿÿÿÿÿZZZÿÿÿ]]]ÿÿÿÿÿÿ999ÿÿÿ•••ÿÿÿtttÿÿÿÿÿÿ999ÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿ„„„ÿÿÿžžžÿÿÿÿÿÿÿÿÿRRRÿÿÿSSSÿÿÿÇÇÇÿÿÿÿÿÿŽŽŽÿÿÿYYYÿÿÿyyyÿÿÿÿÿÿÿÿÿãããÿÿÿ%%%ÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿyyyÿÿÿ<<<ÿÿÿ!!!ÿÿÿÿÿÿÿÿÿUUUÿÿÿ”””ÿÿÿBBBÿÿÿÿÿÿÿÿÿÿÿÿZZZÿÿÿ]]]ÿÿÿ:::ÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2$ôù [ù [$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ôù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [xmorph-20140707+nmu2/example/AA/circuit.ppm0000664000000000000000000060007412356304631015150 0ustar P6 # CREATOR: The GIMP's PNM Filter Version 1.0 256 256 255 ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ôù [ù [$ôÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÑÑÑÒÒÒúúú›››ÒÒÒ›››ÿ2$ôù [ù [$ôÿ2ÒÒÒÿÿÿdddFFFúúúdddÿÿÿFFFÿÿÿÜÜÜúúúÒÒÒÒÒÒÒÒÒÒÒÒúúúFFFdddÒÒÒÒÒÒÒÒÒÜÜÜdddFFF›››dddÿ2$ôù [ù [$ôÿ2FFFFFFÒÒÒdddÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2úúúFFFúúúdddÿÿÿ›››FFFŒŒŒúúúúúúÒÒÒÒÒÒúúúúúúÜÜÜ›››FFFdddFFFÜÜÜ›››FFFÒÒÒÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ÿÿÿdddFFFúúúúúúdddúúú›››ÒÒÒÿ2$ôù [ù [$ôÿ2ŒŒŒÿÿÿdddFFFÜÜÜúúúddd›››FFFÿÿÿ›››ÿÿÿFFFÜÜÜdddÒÒÒdddÜÜÜ›››FFFÒÒÒÒÒÒúúúÒÒÒÜÜÜdddÒÒÒdddÿÿÿúúúdddÜÜÜÒÒÒÒÒÒÜÜÜúúú›››FFFÿ2$ôù [ù [$ôÿ2úúú›››ÜÜÜFFFÒÒÒÒÒÒÜÜÜÒÒÒÿ2$ôù [ù [$ôÿ2ŒŒŒÒÒÒúúú››››››ÜÜÜŒŒŒFFFÒÒÒÒÒÒFFFŒŒŒ›››FFFdddÜÜÜŒŒŒFFFFFFŒŒŒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒ›››FFFÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2úúúúúúFFFddddddFFF›››ddd›››ÜÜÜdddÒÒÒÒÒÒúúú›››FFFFFFúúúÒÒÒÒÒÒúúúÒÒÒdddÿ2$ôù [ù [$ôÿ2úúúdddFFFÒÒÒŒŒŒúúúÜÜÜddd›››FFFúúúúúúúúúúúúúúúÒÒÒÒÒÒÒÒÒÒÒÒFFFúúúúúúúúúÒÒÒÒÒÒúúúÒÒÒÒÒÒÜÜÜ››››››ÿ2$ôù [ù [$ôÿ2FFFÜÜÜÜÜÜŒŒŒÒÒÒFFF›››úúúúúúúúúúúúúúúúúúFFFÒÒÒúúúÒÒÒdddÜÜÜÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2FFF›››úúúúúúFFFÜÜÜddd›››FFFúúúúúúdddÜÜÜ››››››ÜÜÜ››››››ÜÜÜúúúÒÒÒŒŒŒŒŒŒFFF›››ÜÜÜ››››››ÜÜÜ›››úúúdddÒÒÒÒÒÒÒÒÒúúúúúúúúúÿ2$ôù [ù [$ôÿ2ÒÒÒFFFŒŒŒúúúFFFFFFFFFúúúdddddddddFFFúúúÿ2$ôù [ù [$ôÿ2ÜÜÜdddúúúÿÿÿdddFFFúúúdddÿÿÿFFFdddÿÿÿÒÒÒŒŒŒÿÿÿdddúúúFFFúúúFFF›››ÿÿÿ››››››ÜÜÜ›››úúúúúúúúúFFFÿÿÿ›››úúúÜÜÜÿÿÿFFFÿÿÿ››››››ŒŒŒŒŒŒÜÜÜ›››úúúŒŒŒdddÿÿÿ›››úúúŒŒŒdddÿÿÿ›››úúúúúúúúúÿÿÿ›››FFFdddÜÜÜ›››ÿ2$ôù [ù [$ôÿ2FFFdddúúú›››ÿÿÿddddddÿÿÿÒÒÒÿÿÿÿÿÿÒÒÒÿÿÿFFFúúúúúúúúúúúúdddÜÜÜ›››ÿÿÿFFFÿÿÿúúúÿÿÿFFFúúúúúúFFFÜÜÜÿÿÿFFFÜÜÜÿÿÿÿÿÿÜÜÜúúúdddúúúÿÿÿÿ2$ôù [ù [$ôÿ2dddÿÿÿÿÿÿÿÿÿÿÿÿFFFúúúÜÜÜÿÿÿÒÒÒúúúÜÜÜÿÿÿÿÿÿÿÿÿÒÒÒÿÿÿÜÜÜFFFÿÿÿÿÿÿÿÿÿ›››ÿÿÿÒÒÒÿÿÿdddúúúÿÿÿdddúúúdddÜÜÜúúúFFFdddÿÿÿ›››FFFÜÜÜdddúúúÿÿÿdddFFFúúúÿÿÿdddúúúFFFdddÜÜÜúúúFFFÜÜÜ››››››ÜÜÜ››››››úúúFFFúúúÜÜÜÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFúúúÜÜÜÿÿÿ›››ÿÿÿÿÿÿÿÿÿ›››FFFÜÜÜdddúúúúúúÿ2$ôù [ù [$ôÿ2ÿÿÿúúúdddúúúÿÿÿFFFÿÿÿÿÿÿFFF›››FFFdddúúúúúúÿÿÿdddFFF›››úúúúúúúúúÿÿÿFFFúúúdddúúúúúúÿ2$ôù [ù [$ôÿ2›››ÿÿÿÿÿÿÿÿÿFFFFFFFFFFFF››››››FFFFFFFFFFFFŒŒŒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒFFFdddFFFFFFÒÒÒÒÒÒdddÜÜÜÒÒÒÒÒÒúúúúúúŒŒŒFFFFFFdddFFFFFFÒÒÒÒÒÒFFFFFFÿ2$ôù [ù [$ôÿ2ÿÿÿdddFFFÿÿÿFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒÿÿÿdddÿÿÿdddFFFÿÿÿúúúFFFÿÿÿúúúdddÿÿÿúúúúúúdddúúúúúúúúúFFFdddÿÿÿúúúúúúÿÿÿúúúÿ2$ôù [ù [$ôÿ2úúúÒÒÒdddÿÿÿÿÿÿFFFdddÿÿÿÒÒÒÿÿÿ›››ÿÿÿÜÜÜFFFÿÿÿÿÿÿÿÿÿdddÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿÜÜÜúúúÒÒÒdddÿÿÿÿÿÿÒÒÒdddÿÿÿFFFúúúÿÿÿdddFFF›››ÜÜÜddd›››FFFÿÿÿúúúúúúúúúdddÜÜÜ›››FFFúúú››››››ÜÜÜúúúúúúúúúÿÿÿÿÿÿFFFdddÿÿÿÿÿÿFFFdddÿÿÿúúúÒÒÒÜÜÜFFFdddÜÜÜ›››FFFdddFFFdddÿÿÿúúúFFFdddÿ2$ôù [ù [$ôÿ2ÿÿÿ›››ÿÿÿÜÜÜÿÿÿ›››ÿÿÿdddÒÒÒÿÿÿÜÜÜFFFþþþÜÜÜÿÿÿFFFÿÿÿÿÿÿÜÜÜddd›››ÿÿÿúúúúúúFFFúúúdddÿÿÿdddFFFÜÜÜdddùùùúúúÿÿÿdddÒÒÒúúúÿÿÿÒÒÒÜÜÜ›››ddd›››ÿÿÿÿÿÿÿÿÿFFFÿÿÿFFFÿÿÿdddFFF›››ÜÜÜÿ2$ôù [ù [$ôÿ2FFFÿÿÿÜÜÜÒÒÒÿÿÿÜÜÜŒŒŒŒŒŒFFFÿÿÿÜÜÜFFFÜÜÜFFFÿÿÿdddúúú›››ÿÿÿúúúFFFÿÿÿddd›››FFFÿÿÿdddFFFúúúúúúúúú›››ÜÜÜŒŒŒFFF›››ÜÜÜ›››FFFÿÿÿdddÒÒÒÿÿÿÜÜÜÒÒÒÿÿÿÜÜÜFFFÿÿÿÿÿÿdddÒÒÒúúúdddÿÿÿúúúdddÿÿÿÒÒÒúúúdddÿÿÿúúúúúúÿ2$ôù [ù [$ôÿ2FFFÒÒÒFFFddddddFFF‹‹‹úúúÿ2$ôù [ù [$ôÿ2dddÿÿÿFFFŒŒŒdddÿÿÿFFFÜÜÜÿÿÿÿÿÿFFFÜÜÜÒÒÒŒŒŒÿÿÿ›››úúúÿÿÿdddúúúFFFÜÜÜdddúúúúúúúúúÿÿÿ›››FFFÜÜÜFFFÜÜÜ›››úúúÜÜÜdddúúúÜÜÜÿÿÿFFFŒŒŒÜÜÜFFFúúúFFF›››úúú›››FFFúúúFFFúúúúúúúúúÿ2$ôù [ù [$ôÿ2ÿÿÿ›››ÿÿÿFFFÜÜÜÿÿÿFFFÜÜÜFFFÿÿÿÿÿÿÒÒÒÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFdddÿÿÿFFFúúúúúúFFFdddÿÿÿFFFúúúÒÒÒ›››FFFúúú›››dddúúú›››ùùùúúúFFFÜÜÜÿÿÿÜÜÜÿÿÿúúúúúúúúúdddÜÜÜFFFÜÜÜÿ2$ôù [ù [$ôÿ2ÿÿÿÜÜÜÒÒÒúúúÜÜÜÿÿÿ›››úúúÜÜÜÿÿÿÿÿÿFFFdddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿdddÒÒÒÿÿÿdddFFFúúúÿÿÿ›››úúúdddÜÜÜFFFúúúÿÿÿdddúúúÿÿÿ›››FFFÒÒÒFFF›››dddÜÜÜúúúÿÿÿdddúúúúúú›››FFFúúúFFFÿÿÿÿÿÿdddúúúFFFÿÿÿ›››ÿÿÿÒÒÒÜÜÜÿÿÿdddúúúFFFdddÜÜÜúúúÜÜÜdddÒÒÒÜÜÜddd›››ÒÒÒÿÿÿdddÒÒÒÿ2$ôù [ù [$ôÿ2ÿÿÿúúúdddFFFdddÿÿÿÿÿÿdddFFFFFFFFF›››ÜÜÜFFFdddÿÿÿúúúFFFÜÜÜúúúdddúúúÿÿÿÿÿÿdddúúúúúúFFFÿ2$ôù [ù [$ôÿ2ŒŒŒFFFFFFdddFFF›››ÜÜÜdddÒÒÒÜÜÜFFFŒŒŒŒŒŒFFFFFFŒŒŒÒÒÒFFFFFFÒÒÒŒŒŒFFFÒÒÒÒÒÒFFFŒŒŒŒŒŒFFFFFFŒŒŒŒŒŒFFFÒÒÒŒŒŒFFFÒÒÒŒŒŒFFFFFFFFFdddÜÜÜ›››FFFFFF›››ÒÒÒÒÒÒÒÒÒFFFdddFFFÿ2$ôù [ù [$ôÿ2ÿÿÿdddÜÜÜ›››FFFÛÛÛdddFFFÿÿÿúúúddddddúúúúúúdddFFFdddùùùÿÿÿFFFúúúÜÜÜFFFdddÿÿÿÿÿÿFFFÿÿÿÒÒÒúúúúúúÿ2$ôù [ù [$ôÿ2úúúÒÒÒdddÿÿÿÿÿÿFFFÜÜÜdddFFF›››dddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFdddÿÿÿÿÿÿÿÿÿFFFÜÜÜÿÿÿÿÿÿFFFdddÿÿÿúúú›››ÿÿÿFFFúúúÜÜÜÿÿÿúúúÒÒÒdddÿÿÿúúúÜÜÜdddÒÒÒÒÒÒ›››FFFúúúúúúúúúúúúFFFÿÿÿdddúúúFFFÜÜÜÿÿÿúúúÿÿÿdddÒÒÒÿÿÿÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿÜÜÜúúúÜÜÜddd›››FFFdddÜÜÜÒÒÒÜÜÜ›››ÿ2$ôù [ù [$ôÿ2›››ÿÿÿúúúúúúdddÑÑÑÿÿÿÿÿÿÿÿÿÿÿÿ›››ÜÜÜÒÒÒÿÿÿÿÿÿÿÿÿdddFFFÿÿÿdddúúú›››ÿÿÿdddFFFÿÿÿ›››ÿÿÿ›››úúúúúúÜÜÜ›››ÿÿÿFFFÿÿÿÿÿÿdddúúúFFFúúúÒÒÒFFFÜÜÜúúúúúúFFF›››ÜÜÜddd›››FFFÿ2$ôù [ù [$ôÿ2FFFÿÿÿÜÜÜúúúúúúúúúúúúÒÒÒÿÿÿÜÜÜÒÒÒdddÒÒÒÜÜÜŒŒŒFFFÿÿÿdddFFFÿÿÿÜÜÜ›››FFFúúúúúúÜÜÜdddúúúdddÜÜÜ›››úúúdddÒÒÒdddÒÒÒdddFFFúúúdddÜÜÜ›››FFFúúúúúúúúúFFF›››úúúúúúÿ2$ôù [ù [$ôÿ2úúúFFFÒÒÒFFFÿ2$ôù [ù [$ôÿ2ÜÜÜFFFúúúúúúFFFdddÿÿÿúúúFFFdddÿÿÿÒÒÒdddÿÿÿÿÿÿÒÒÒdddÿÿÿFFFŒŒŒÜÜÜFFFÜÜÜdddúúúFFFdddÿÿÿFFF›››úúúFFF›››ÿÿÿ›››FFFÜÜÜFFFdddÿÿÿÒÒÒdddÿÿÿFFF›››ÿÿÿdddúúúFFFdddÿÿÿúúúFFFÜÜÜdddúúúúúúÿ2$ôù [ù [$ôÿ2ÿÿÿúúúÜÜÜúúúÿÿÿdddúúúÜÜÜÿÿÿFFFÿÿÿ›››ÒÒÒþþþÿÿÿÿÿÿÜÜÜFFFÿÿÿFFFdddÿÿÿšššÿÿÿFFFÜÜÜÿÿÿFFFdddÿÿÿÿÿÿFFFFFF›››úúúdddÿÿÿúúúúúú›››ÿÿÿ›››ÿÿÿdddúúúŒŒŒÜÜÜFFFdddÿÿÿFFFdddFFFÿ2$ôù [ù [$ôÿ2ŒŒŒÿÿÿdddúúúFFFÜÜÜdddúúúÿÿÿúúúÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒÜÜÜÿÿÿÿÿÿÿÿÿFFFÿÿÿÜÜÜFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜFFFúúúÿÿÿÜÜÜÒÒÒúúúÜÜÜÿÿÿ›››úúúÿÿÿdddÒÒÒÿÿÿÿÿÿúúúúúúúúúÿÿÿdddúúúdddÜÜÜúúúÿÿÿdddÒÒÒúúúÿÿÿÜÜÜFFFÿÿÿÿÿÿúúúdddÿÿÿÒÒÒÜÜÜÿÿÿÿÿÿÒÒÒÿÿÿdddúúúÿÿÿúúúÿÿÿ›››ÜÜÜÿ2$ôù [ù [$ôÿ2ÒÒÒÿÿÿ›››ùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFúúúÿÿÿdddúúúFFFdddÿÿÿÒÒÒdddùùùÿÿÿFFFÿÿÿFFFúúúFFF›››FFFÿÿÿdddÿÿÿFFFdddFFFFFFÿ2$ôù [ù [$ôÿ2ÜÜÜ››››››ŒŒŒFFFdddÜÜÜÒÒÒdddFFFdddFFF›››››››››FFFFFFFFFFFF›››FFFŒŒŒŒŒŒFFFdddFFFFFFFFFFFF›››ÒÒÒFFFŒŒŒŒŒŒFFFFFFdddFFFŒŒŒÒÒÒFFFŒŒŒŒŒŒFFF›››FFFdddFFFdddFFFÜÜÜÒÒÒÿ2$ôù [ù [$ôÿ2úúúúúúFFFÿÿÿÿÿÿÒÒÒÜÜÜÿÿÿÿÿÿúúúÿÿÿÿÿÿdddFFFúúúdddÜÜÜúúúÜÜÜdddddddddÿÿÿúúúÿÿÿÿÿÿFFFdddÿÿÿFFFÿÿÿÒÒÒÿ2$ôù [ù [$ôÿ2FFFÿÿÿdddúúú›››ÿÿÿFFFúúúÿÿÿÜÜÜÒÒÒÿÿÿ›››ÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿÿÿÿdddFFFÿÿÿÿÿÿÿÿÿÜÜÜúúúFFFÜÜÜÿÿÿFFFdddÿÿÿFFFdddÿÿÿúúúÒÒÒÿÿÿÜÜÜFFFÿÿÿÿÿÿÜÜÜúúú›››ÿÿÿÜÜÜúúúFFFdddÿÿÿúúúFFFÿÿÿÿÿÿÒÒÒÿÿÿddd›››FFFúúúúúúÿÿÿúúúÿÿÿúúúúúú››››››ÿÿÿÒÒÒÿÿÿÿÿÿdddúúúÒÒÒÜÜÜÿÿÿÒÒÒÿÿÿ›››ÿÿÿÜÜÜÒÒÒÿÿÿ›››ÿÿÿdddFFFÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2FFFÿÿÿúúúšššÒÒÒÿÿÿÜÜÜFFFÿÿÿdddFFFÿÿÿdddÜÜÜÿÿÿÿÿÿþþþÿÿÿÿÿÿ›››ÿÿÿFFFÜÜÜFFFFFFúúúdddFFFúúúdddÿÿÿFFFÿÿÿÿÿÿþþþ›››úúúdddFFFdddÿÿÿdddÿÿÿÒÒÒdddFFFþþþ›››ÿÿÿÒÒÒÿÿÿÜÜÜÒÒÒFFFÿ2$ôù [ù [$ôÿ2ŒŒŒFFFÿÿÿdddŒŒŒÒÒÒÿÿÿÿÿÿdddÒÒÒÿÿÿÜÜÜÒÒÒúúúdddÿÿÿFFFÿÿÿdddŒŒŒúúú›››ÿÿÿúúúFFFÿÿÿdddFFFÿÿÿdddúúúdddÜÜÜ›››FFFÿÿÿdddFFFúúúÿÿÿdddFFFúúúÜÜÜdddŒŒŒFFFÿÿÿdddŒŒŒŒŒŒÿ2$ôù [ù [$ôÿ2ŒŒŒŒŒŒFFFÒÒÒ‹‹‹ÿ2$ôù [ù [$ôÿ2dddÿÿÿFFFÜÜÜÿÿÿÒÒÒdddÿÿÿFFFŒŒŒdddÿÿÿÒÒÒÜÜÜÿÿÿÒÒÒdddÿÿÿFFFúúúÜÜÜÿÿÿFFFŒŒŒdddÿÿÿFFFÜÜÜ››››››ÜÜÜdddúúúdddÿÿÿÒÒÒÜÜÜÿÿÿFFFúúúÜÜÜdddúúúFFFdddÿÿÿúúúFFFdddÿÿÿFFF›››dddÿÿÿFFFŒŒŒdddÿÿÿFFFŒŒŒÿ2$ôù [ù [$ôÿ2›››ÿÿÿ›››ÒÒÒdddÿÿÿÿÿÿÿÿÿÒÒÒFFFÜÜÜFFFdddÿÿÿ›››ÿÿÿÒÒÒÿÿÿšššÿÿÿÒÒÒúúú›››ÿÿÿÜÜÜÿÿÿÒÒÒÿÿÿúúúÒÒÒúúúÿÿÿÿÿÿÿÿÿÿÿÿþþþdddúúúúúúFFFúúúdddFFFúúúdddùùùÿÿÿšššFFFÛÛÛÿÿÿÒÒÒdddÿÿÿ›››ÿÿÿdddÿÿÿFFFÜÜÜÿ2$ôù [ù [$ôÿ2dddÿÿÿúúúÒÒÒÿÿÿdddFFFÿÿÿÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿÿÿÿ›››ÿÿÿFFFÜÜÜÿÿÿÿÿÿÒÒÒÿÿÿÜÜÜFFFÿÿÿÿÿÿdddFFFÿÿÿÿÿÿFFFúúúÿÿÿdddÒÒÒúúúÜÜÜÿÿÿ›››ÿÿÿÒÒÒÿÿÿÜÜÜúúúFFFúúúúúúúúú›››FFFdddÿÿÿFFFÿÿÿddd›››FFFdddÿÿÿúúúÿÿÿúúúÿÿÿúúúFFFdddÿÿÿÒÒÒúúúÜÜÜÿÿÿ›››ÿÿÿÒÒÒÿÿÿÜÜÜÒÒÒúúúdddÿÿÿÿÿÿÿÿÿFFFÜÜÜÿÿÿ›››ÿÿÿFFFdddÿÿÿÒÒÒÿ2$ôù [ù [$ôÿ2ÿÿÿFFFÒÒÒúúúdddÿÿÿÿÿÿÿÿÿFFFdddFFFdddúúúúúúÿÿÿdddÿÿÿúúúÜÜÜúúúúúúÿÿÿFFFdddFFFdddúúúdddúúúÿÿÿÜÜÜÒÒÒÿÿÿdddÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÒÒÒFFFFFFÒÒÒŒŒŒFFF›››FFFdddFFFdddFFFFFFFFFFFFFFFFFFFFFÒÒÒŒŒŒFFFúúúÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒúúúúúúFFFFFFFFFFFFFFF›››ÒÒÒdddFFF›››FFFÿ2$ôù [ù [$ôÿ2ÿÿÿddddddÿÿÿFFFÿÿÿÿÿÿÿÿÿFFFÿÿÿúúúÿÿÿúúúÿÿÿÿÿÿFFFÿÿÿúúúÒÒÒdddÿÿÿúúúFFFdddFFFdddFFFúúúÿÿÿÿÿÿÒÒÒdddÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2›››FFFdddÿÿÿúúúÿÿÿÿÿÿFFFdddÿÿÿÿÿÿFFFÿÿÿdddÒÒÒÿÿÿÿÿÿdddÒÒÒúúúÜÜÜÿÿÿúúúÒÒÒÜÜÜÿÿÿúúúFFFdddÿÿÿúúúFFFdddÿÿÿúúúÒÒÒÿÿÿÜÜÜÒÒÒúúúÿÿÿdddúúú›››ÜÜÜÒÒÒdddÜÜÜFFFúúúdddÿÿÿFFFÜÜÜdddFFFúúúdddÿÿÿúúúÿÿÿúúúúúúúúúúúúúúúÒÒÒÜÜÜÿÿÿúúúFFFdddÿÿÿÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFÿÿÿdddÒÒÒÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿFFFdddÿÿÿÒÒÒÿÿÿ›››ÿÿÿÒÒÒdddúúú›››ÿÿÿÿÿÿ›››ÿÿÿdddúúúÿÿÿdddÿÿÿdddFFFÿÿÿúúúÿÿÿFFFÿÿÿúúúÜÜÜdddúúúÿÿÿÿÿÿÿÿÿÿÿÿFFFúúúúúú›››ÿÿÿúúúdddÜÜÜFFFdddÜÜÜFFFÿÿÿ›››ÿÿÿdddFFFúúúÿÿÿFFFÿÿÿÜÜÜÿÿÿ›››ÿÿÿÑÑÑÿ2$ôù [ù [$ôÿ2úúúdddÿÿÿFFFúúúÿÿÿdddÒÒÒÿÿÿÜÜÜÒÒÒÿÿÿdddFFFÿÿÿdddFFFÿÿÿdddúúú›››ÿÿÿÒÒÒÿÿÿÜÜÜFFFÿÿÿdddFFFÿÿÿdddŒŒŒúúúÒÒÒFFFÿÿÿÜÜÜÒÒÒúúúdddÿÿÿFFFÿÿÿÜÜÜ›››FFFdddÜÜÜ›››FFFÜÜÜdddFFF›››ÿÿÿdddFFFÿÿÿdddúúú›››ÿÿÿÒÒÒÿÿÿdddÿ2$ôù [ù [$ôÿ2FFFFFFŒŒŒÒÒÒÿ2$ôù [ù [$ôÿ2ŒŒŒúúúFFF›››úúúúúúŒŒŒdddÿÿÿFFFdddÿÿÿFFFdddÿÿÿFFFdddÿÿÿFFFÿÿÿ›››úúúdddÿÿÿFFFdddÿÿÿFFFdddÿÿÿÒÒÒdddÿÿÿFFFúúúFFF›››ÜÜÜÿÿÿÒÒÒdddÿÿÿFFFúúúdddÿÿÿÒÒÒÜÜÜddd›››FFFdddÜÜÜ›››FFFdddÜÜÜúúúdddÿÿÿFFFÿÿÿ›››úúúdddÿÿÿÿÿÿFFFÿ2$ôù [ù [$ôÿ2ÒÒÒÒÒÒÒÒÒdddÿÿÿÒÒÒÿÿÿ›››úúúþþþúúú›››ÿÿÿFFFdddÿÿÿúúúFFFdddÿÿÿFFFÿÿÿdddÿÿÿFFFdddÿÿÿdddÜÜÜúúúÜÜÜÿÿÿ›››ÿÿÿÒÒÒÿÿÿdddúúúÿÿÿ›››FFFdddFFF›››ddd›››FFFúúúúúúFFFdddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿ›››ÿÿÿÿÿÿÿÿÿdddúúúÒÒÒÒÒÒÜÜÜ›››ÿÿÿÒÒÒÿÿÿÜÜÜúúúÒÒÒÜÜÜÿÿÿúúúÒÒÒÜÜÜÿÿÿÒÒÒúúúÿÿÿÜÜÜÒÒÒúúúÿÿÿdddFFFúúúÿÿÿÜÜÜÒÒÒúúúÿÿÿÜÜÜúúúÒÒÒÿÿÿÜÜÜFFFúúúÿÿÿÜÜÜúúúFFFÜÜÜdddúúúÿÿÿdddFFFÿÿÿÿÿÿFFFúúúÜÜÜÿÿÿFFFÿÿÿÿÿÿúúúÒÒÒÒÒÒÒÒÒFFF›››dddÿÿÿúúúFFFdddÜÜÜFFFúúúÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜúúúFFFÜÜÜÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2FFFdddFFFúúúÜÜÜÿÿÿÿÿÿFFFÿÿÿÿÿÿdddFFFÿÿÿùùùÿÿÿúúúúúúúúúÿÿÿdddúúúúúúúúúúúúFFFúúúÿÿÿdddÿ2$ôù [ù [$ôÿ2ŒŒŒŒŒŒFFFúúúŒŒŒFFFFFFŒŒŒúúúFFFdddFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFdddFFFdddFFFFFFdddÜÜÜ›››FFFdddFFFdddFFFFFFddddddFFFúúúÒÒÒúúúúúúúúúúúúÒÒÒÒÒÒFFFFFFFFF›››ÜÜÜÿ2$ôù [ù [$ôÿ2dddFFFddd›››ÿÿÿúúúÿÿÿÿÿÿdddÿÿÿúúúþþþúúúddddddFFFúúúÜÜÜÒÒÒúúúdddFFFÒÒÒúúúFFFÿÿÿÿÿÿFFFÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2úúú›››ÿÿÿÿÿÿÿÿÿÒÒÒdddÜÜÜÒÒÒÒÒÒúúúdddFFFdddÿÿÿúúúFFFdddÿÿÿúúúÒÒÒÜÜÜÿÿÿúúúÒÒÒÿÿÿÜÜÜúúúÒÒÒdddÿÿÿúúúÒÒÒdddÿÿÿúúúÿÿÿúúúdddÿÿÿúúúÒÒÒdddÿÿÿúúú›››ÿÿÿÜÜÜúúúFFFdddÿÿÿúúúÿÿÿÿÿÿFFFÜÜÜÿÿÿúúúdddÜÜÜ›››FFFúúúÒÒÒÒÒÒúúúdddÜÜÜFFFúúúÜÜÜÿÿÿÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿdddFFFÿÿÿdddÿ2$ôù [ù [$ôÿ2ÜÜÜÿÿÿÑÑÑÒÒÒÿÿÿúúúÿÿÿddd›››ÿÿÿÿÿÿÿÿÿ›››ÿÿÿdddÿÿÿ›››ÿÿÿúúúFFFdddFFFþþþúúúdddÿÿÿÜÜÜFFFúúúÿÿÿddd›››FFFúúú›››úúúÒÒÒÒÒÒÜÜÜdddúúú›››ÿÿÿdddÿÿÿÿÿÿÜÜÜÿ2$ôù [ù [$ôÿ2ŒŒŒFFFÜÜÜúúúúúú›››FFFdddÿÿÿúúúFFFdddÿÿÿúúú›››ÿÿÿFFFÿÿÿdddFFFÿÿÿdddFFFÿÿÿÜÜÜFFFÿÿÿÜÜÜ›››FFFdddÜÜÜFFFúúúdddÿÿÿFFFÜÜÜŒŒŒúúú›››ÿÿÿFFFúúúdddÜÜÜÒÒÒÿÿÿdddFFFúúúúúúúúúÒÒÒÒÒÒÒÒÒÒÒÒúúúFFFÿÿÿdddŒŒŒÿ2$ôù [ù [$ôÿ2ŒŒŒúúúŒŒŒÒÒÒúúúÒÒÒÿ2$ôù [ù [$ôÿ2ŒŒŒdddÿÿÿÿÿÿFFFdddÿÿÿúúúÿÿÿdddFFFúúúÿÿÿdddFFFúúúÿÿÿ›››úúúdddÿÿÿFFFdddÿÿÿFFFdddÿÿÿFFFÜÜÜFFFÜÜÜddd›››FFFúúúFFF›››dddÒÒÒŒŒŒÿÿÿ›››úúúúúúFFF›››dddÒÒÒúúúúúúúúúúúúÒÒÒÒÒÒúúúúúúFFFÜÜÜÿÿÿÿÿÿFFFÜÜÜÿÿÿFFFÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÿÿÿ›››FFFÜÜÜ›››FFFúúúÿÿÿúúú›››ÿÿÿ›››úúúÿÿÿ›››ÿÿÿFFFÜÜÜÿÿÿÿÿÿFFF›››úúúÿÿÿ›››FFFúúúFFFdddÜÜÜúúúdddÿÿÿÿÿÿFFFÜÜÜÒÒÒÒÒÒ››››››FFF›››ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿ›››ÿÿÿÿÿÿÜÜÜÒÒÒúúúúúúFFF›››dddÜÜÜFFFddd›››FFFdddÜÜÜ›››FFFdddÿÿÿÒÒÒúúúÿÿÿÜÜÜúúúFFFdddÿÿÿÒÒÒúúúÜÜÜÿÿÿdddÒÒÒÿÿÿÿÿÿúúúdddÜÜÜúúúdddÿÿÿFFFúúúÿÿÿ›››ÿÿÿÒÒÒÿÿÿdddFFF›››ÜÜÜdddúúúÿÿÿÜÜÜFFFúúúÜÜÜddd›››FFFÒÒÒFFFdddFFFdddúúúÿÿÿdddÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdddÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿúúúÿÿÿdddFFFúúúdddFFFúúúúúúÿÿÿdddúúúÿÿÿÒÒÒÒÒÒÜÜÜÿÿÿFFFÿÿÿÿÿÿFFFúúú›››dddúúúÿ2$ôù [ù [$ôÿ2ŒŒŒFFFFFFFFFÒÒÒ›››FFFdddFFFÒÒÒÒÒÒÒÒÒÒÒÒFFFdddÒÒÒÒÒÒFFFddddddFFFúúú›››FFFFFFŒŒŒÒÒÒFFF›››ÜÜÜdddFFFdddÒÒÒÒÒÒdddFFFFFFŒŒŒÒÒÒÒÒÒŒŒŒFFFdddFFFdddFFFFFFFFFÿ2$ôù [ù [$ôÿ2ÿÿÿúúúÒÒÒúúúdddÿÿÿFFFdddFFFdddúúúdddÿÿÿFFFÜÜÜdddÿÿÿFFFÿÿÿ›››ÿÿÿúúúFFFdddFFFdddúúúÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2úúúdddÿÿÿÿÿÿÒÒÒdddÿÿÿÜÜÜúúúÒÒÒÿÿÿdddúúú›››ÿÿÿÜÜÜúúúFFFÜÜÜdddFFF›››ÜÜÜdddFFF›››ÿÿÿÿÿÿFFFÿÿÿddd›››FFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜúúúFFFÜÜÜdddÒÒÒÿÿÿÜÜÜFFF›››ÜÜÜdddFFF›››ÿÿÿúúúÜÜÜdddFFF›››dddÿÿÿÒÒÒÿÿÿ›››ÿÿÿ›››FFFÜÜÜdddúúúdddÿÿÿúúúÒÒÒÜÜÜÿÿÿúúúFFFdddÿÿÿúúúÒÒÒdddÿÿÿÿÿÿÿÿÿFFFÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿþþþÿÿÿÜÜÜÿÿÿ›››ÿÿÿFFFÿÿÿÜÜÜFFFúúúúúúúúúúúúúúúÿÿÿÿÿÿ›››FFF›››úúúŒŒŒúúúúúúúúúúúúÿÿÿdddÒÒÒÿÿÿdddFFFšššdddÿÿÿdddúúúdddFFFÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿ2$ôù [ù [$ôÿ2FFFÿÿÿÜÜÜFFFÜÜÜFFFÿÿÿdddŒŒŒúúú›››ÿÿÿúúú›››ÿÿÿúúúFFFÿÿÿdddÒÒÒÿÿÿdddúúúdddÜÜÜúúú›››ÿÿÿúúú›››ÿÿÿúúúFFFÿÿÿdddFFFúúúdddÿÿÿúúú›››ÿÿÿŒŒŒúúúúúú››››››ÿÿÿFFFÿÿÿdddúúú›››ÿÿÿFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿdddÿ2$ôù [ù [$ôÿ2FFFFFFFFFŒŒŒÒÒÒFFFÿ2$ôù [ù [$ôÿ2dddÿÿÿFFFdddÿÿÿFFFŒŒŒdddÿÿÿ›››úúúÿÿÿ›››úúúÿÿÿdddúúúFFFdddÒÒÒúúúFFF›››ÿÿÿ›››úúúŒŒŒdddÿÿÿ›››úúúÜÜÜdddúúúdddÿÿÿFFF›››ÜÜÜ›››úúúŒŒŒúúúÒÒÒdddúúú›››ŒŒŒÿÿÿ›››úúúÜÜÜFFFÜÜÜFFFÿ2$ôù [ù [$ôÿ2FFFÿÿÿ›››úúúÿÿÿÿÿÿÒÒÒÜÜÜúúúFFFdddÿÿÿúúúFFFÿÿÿúúúÿÿÿFFFúúúÿÿÿFFFdddÿÿÿúúúúúúúúúFFFúúúúúúúúúdddÿÿÿFFFÒÒÒdddÿÿÿÿÿÿÿÿÿFFFÜÜÜÿÿÿFFFÛÛÛÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2FFFdddÿÿÿÒÒÒÿÿÿÿÿÿÿÿÿÒÒÒdddÿÿÿúúúÒÒÒdddÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFúúúÿÿÿdddFFFúúúÿÿÿdddúúúÿÿÿÜÜÜFFFúúúÜÜÜdddúúúÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒÿÿÿdddFFFúúúÜÜÜÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFF›››úúúFFFÿÿÿÿÿÿúúúúúú›››FFFÿÿÿ››››››ÒÒÒúúúÒÒÒúúúÜÜÜ›››úúúÜÜÜddd›››FFFÿÿÿdddÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒÜÜÜÿÿÿdddÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÜÜÜFFFdddúúúFFFFFFFFFÿÿÿdddúúúÿÿÿdddúúúdddÜÜÜÒÒÒddd›››FFFdddÜÜÜúúúFFFúúúÿÿÿÒÒÒÿÿÿdddÿ2$ôù [ù [$ôÿ2ÒÒÒÒÒÒFFF›››ÒÒÒFFF›››FFFFFFFFFFFFdddFFFFFFŒŒŒÒÒÒdddFFFFFFdddFFFFFFÒÒÒŒŒŒFFFFFFŒŒŒŒŒŒFFFÒÒÒŒŒŒFFFúúúŒŒŒFFFÒÒÒÒÒÒÒÒÒúúúFFFŒŒŒÒÒÒúúúÜÜÜddddddFFFFFFFFFÿ2$ôù [ù [$ôÿ2ÿÿÿúúúþþþFFFÿÿÿÒÒÒdddFFFdddúúúFFFúúúÜÜÜFFFdddFFFFFF›››úúúúúúÜÜÜdddúúúFFFÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2dddFFFúúúÜÜÜÿÿÿÿÿÿÿÿÿddd›››FFFdddÿÿÿúúúÒÒÒÜÜÜFFFdddÿÿÿúúúFFFÜÜÜÿÿÿÒÒÒúúúÜÜÜÿÿÿÒÒÒÿÿÿÿÿÿÜÜÜFFF›››dddÿÿÿÒÒÒÿÿÿFFFÜÜÜÿÿÿúúúúúúÒÒÒÿÿÿ›››ÿÿÿÿÿÿúúúdddÜÜÜúúúFFFÜÜÜÿÿÿúúúúúúúúúÜÜÜdddúúúúúúÒÒÒúúúÒÒÒúúúúúúúúú›››FFFúúúFFFúúúdddÿÿÿÜÜÜÒÒÒÿÿÿ›››ÿÿÿÜÜÜÒÒÒÿÿÿFFFÜÜÜÿÿÿÿÿÿÿÿÿ›››ÿÿÿÿ2$ôù [ù [$ôÿ2›››ÿÿÿÿÿÿÿÿÿÜÜÜFFFúúúÿÿÿddd›››ÿÿÿÿÿÿFFFÿÿÿdddFFFÿÿÿÿÿÿdddúúú›››ÿÿÿFFFùùùdddÒÒÒÜÜÜÒÒÒÿÿÿÿÿÿÒÒÒÿÿÿdddÿÿÿÿÿÿdddFFFúúúúúúúúúúúúÒÒÒÒÒÒúúú›››ÒÒÒúúúdddÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2FFFÿÿÿÿÿÿdddúúú›››ÿÿÿFFFÿÿÿÿÿÿdddÒÒÒúúúdddÿÿÿÒÒÒÿÿÿdddFFFÿÿÿdddúúú›››ÿÿÿÒÒÒddd›››FFFÿÿÿdddŒŒŒFFFÿÿÿ›››ÿÿÿÒÒÒdddFFFúúúdddÜÜÜ››››››ÿÿÿ››››››ÜÜÜúúúÒÒÒFFF›››ÜÜÜ››››››ÜÜÜúúúÜÜÜdddFFFÜÜÜŒŒŒÒÒÒdddŒŒŒÿ2$ôù [ù [$ôÿ2dddFFFFFFFFFFFF›››ÒÒÒddddddFFFFFFÿ2$ôù [ù [$ôÿ2dddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFÿÿÿ›››úúúÜÜÜFFFúúúFFF›››ŒŒŒdddÿÿÿÒÒÒŒŒŒÿÿÿ›››úúúÜÜÜFFFdddÜÜÜúúúÿÿÿ›››ÿÿÿFFFÜÜÜÿÿÿÿÿÿFFFÜÜÜÿÿÿFFF›››dddúúú›››ÜÜÜ››››››úúúúúúÿÿÿ›››úúúÜÜÜ››››››úúúFFF›››ÜÜÜÿÿÿFFFÜÜÜÿÿÿÒÒÒÿ2$ôù [ù [$ôÿ2dddÒÒÒÿÿÿdddFFFÿÿÿFFFdddÿÿÿúúúúúúúúúÿÿÿþþþÒÒÒÿÿÿúúúFFFdddÿÿÿÜÜÜddd›››FFFÜÜÜFFFÿÿÿÒÒÒúúúÒÒÒÿÿÿdddúúúÜÜÜdddÒÒÒÒÒÒúúúÜÜÜúúúFFFúúúÒÒÒÿÿÿFFFdddÿÿÿFFFdddFFFŒŒŒÿ2$ôù [ù [$ôÿ2FFFÜÜÜÿÿÿÒÒÒúúúÿÿÿddd›››FFFÿÿÿdddúúúFFFdddÜÜÜúúúÿÿÿ›››úúúdddÿÿÿFFFÿÿÿÿÿÿÿÿÿ›››ÿÿÿÒÒÒÿÿÿdddFFF›››ÿÿÿdddúúúFFFÒÒÒFFF›››ÜÜÜÿÿÿÿÿÿÒÒÒÿÿÿdddúúúÿÿÿdddÒÒÒdddúúúúúúÒÒÒÒÒÒúúúÜÜÜdddFFF›››dddÜÜÜFFF›››úúúúúúÒÒÒúúúÿÿÿdddÒÒÒúúúÿÿÿdddFFFúúúÜÜÜÿÿÿÿÿÿúúúdddÿÿÿÿÿÿFFFÿ2$ôù [ù [$ôÿ2úúúFFF›››ÜÜÜdddFFFÿÿÿúúúÿÿÿúúúdddþþþÿÿÿÿÿÿFFFFFFúúúÒÒÒFFFúúúúúúÜÜÜÜÜÜFFFúúúÿÿÿÿÿÿÿÿÿ›››ÿ2$ôù [ù [$ôÿ2ddd›››FFFFFFÒÒÒŒŒŒFFFÒÒÒÒÒÒFFF›››ÜÜÜdddFFFŒŒŒÒÒÒFFFFFFÒÒÒŒŒŒFFFÒÒÒÒÒÒÒÒÒÜÜÜdddFFFdddFFFŒŒŒÒÒÒÒÒÒÒÒÒFFFŒŒŒÒÒÒÒÒÒÒÒÒÒÒÒŒŒŒFFFúúúŒŒŒFFFdddFFF›››FFFFFF›››FFFFFFÒÒÒÿ2$ôù [ù [$ôÿ2ÿÿÿdddÜÜÜ›››FFFÜÜÜdddúúúdddÜÜÜÿÿÿÿÿÿúúú›››FFFFFFddddddÒÒÒÒÒÒddddddúúúÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFÿ2$ôù [ù [$ôÿ2FFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿÜÜÜúúúÒÒÒÿÿÿdddúúúÜÜÜdddFFF›››ÒÒÒÒÒÒúúú›››FFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜúúúFFFÜÜÜdddúúúFFFÿÿÿdddÒÒÒÒÒÒFFF›››dddÿÿÿúúúÿÿÿÿÿÿFFFÜÜÜFFFúúúÒÒÒÒÒÒÒÒÒúúú›››FFFÜÜÜdddFFFúúúÿÿÿdddúúú›››ÜÜÜúúúÜÜÜÿÿÿÒÒÒÿÿÿ›››ÿÿÿdddÒÒÒúúúÜÜÜÿÿÿFFFÿÿÿÿÿÿÿÿÿFFFúúúÒÒÒÿ2$ôù [ù [$ôÿ2FFFÿÿÿFFFÿÿÿ›››ÿÿÿúúúdddÜÜÜ›››FFFúúúúúúÜÜÜÿÿÿÿÿÿdddúúúFFFÿÿÿ›››FFFÛÛÛúúúdddúúúFFFÜÜÜÿÿÿFFFúúúúúúÒÒÒÒÒÒFFFúúúúúúÿÿÿúúúÿÿÿdddFFFdddúúúÿ2$ôù [ù [$ôÿ2ŒŒŒFFFÿÿÿddd›››FFFúúúúúúÜÜÜdddFFF›››dddÜÜÜúúú›››ÿÿÿdddúúú›››ÿÿÿÒÒÒdddFFF›››ÜÜÜdddúúúúúúFFFúúúdddÿÿÿdddÒÒÒÿÿÿÿÿÿdddÒÒÒúúúdddÜÜÜúúúÒÒÒ››››››ÜÜÜúúú›››ÿÿÿFFFÿÿÿdddŒŒŒFFFÿÿÿdddŒŒŒFFFÿÿÿddd›››úúúdddÿ2$ôù [ù [$ôÿ2›››dddÒÒÒÒÒÒŒŒŒFFFFFFŒŒŒFFFÿ2$ôù [ù [$ôÿ2dddÿÿÿFFFÜÜÜÿÿÿFFFÿÿÿdddúúúFFFdddÿÿÿFFFÿÿÿÿÿÿdddFFFúúúÿÿÿ›››úúúddd›››FFFÜÜÜFFFdddÜÜÜ›››FFFúúúúúúFFFdddÿÿÿFFFúúúdddÿÿÿÒÒÒdddÿÿÿFFFúúúúúúúúúÿÿÿ›››úúúÿÿÿ››››››dddÿÿÿFFFdddÿÿÿFFFdddÿÿÿÒÒÒŒŒŒdddÿÿÿFFFŒŒŒdddÿÿÿ›››úúúÿ2$ôù [ù [$ôÿ2dddÿÿÿÿÿÿÒÒÒ›››FFFúúúFFFdddúúúúúúúúúÜÜÜ››››››ÿÿÿúúú›››ÜÜÜúúúÿÿÿddd›››ÿÿÿdddúúú›››úúúúúúúúúúúúúúúÿÿÿ›››FFFÿÿÿ›››ÿÿÿÿÿÿFFFÿÿÿ›››ÿÿÿFFFÜÜÜÿÿÿÿÿÿÜÜÜÿ2$ôù [ù [$ôÿ2ÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿdddÒÒÒúúúÿÿÿdddúúúÿÿÿ›››FFFdddÜÜÜ›››FFFúúúÒÒÒdddÜÜÜúúúFFFÒÒÒÒÒÒÜÜÜdddúúúÿÿÿFFFúúúÿÿÿÜÜÜFFFÿÿÿÿÿÿ›››FFFÜÜÜdddFFF›››dddÜÜÜ›››FFFdddÜÜÜúúúFFFdddÿÿÿúúúÒÒÒÿÿÿÜÜÜÒÒÒúúúÜÜÜÿÿÿFFFÿÿÿÿÿÿÿÿÿ›››úúúdddÿÿÿÒÒÒúúúÜÜÜÿÿÿ›››ÿÿÿÿÿÿÜÜÜÒÒÒÿ2$ôù [ù [$ôÿ2FFFFFFdddFFFúúúÜÜÜFFFùùùdddFFFúúúFFFdddúúúúúúdddúúúÿÿÿdddúúúFFFÿÿÿFFFúúúÒÒÒÿÿÿdddúúúdddÿ2$ôù [ù [$ôÿ2FFFÜÜÜdddFFFFFFdddFFFÒÒÒÒÒÒÒÒÒÜÜÜÒÒÒŒŒŒÒÒÒÒÒÒÒÒÒdddÜÜÜÒÒÒÒÒÒÒÒÒdddFFFFFFFFFÒÒÒúúúÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒFFFdddFFFdddFFF›››ÒÒÒFFFFFFFFFÿ2$ôù [ù [$ôÿ2dddÿÿÿFFFdddÿÿÿúúúúúúdddúúúÒÒÒÜÜÜúúúFFFÿÿÿdddFFFúúúúúúúúúúúúúúúdddÿÿÿúúúFFFÿÿÿFFFdddÿÿÿÿ2$ôù [ù [$ôÿ2dddúúúÿÿÿ›››ÿÿÿÿÿÿFFFdddÿÿÿÒÒÒdddÿÿÿÜÜÜúúúFFFdddÿÿÿÒÒÒúúúÜÜÜÒÒÒÿÿÿdddFFFúúúÜÜÜdddFFFÜÜÜúúúÒÒÒÒÒÒúúú›››FFFdddÜÜÜFFFúúúÿÿÿÜÜÜúúúFFFdddÿÿÿúúúFFFÿÿÿúúúÒÒÒúúúdddÜÜÜ›››FFFÒÒÒ›››FFFdddÜÜÜÒÒÒÿÿÿúúúÿÿÿÿÿÿFFFÜÜÜÒÒÒÿÿÿdddFFF›››dddÿÿÿÒÒÒÿÿÿ›››ÿÿÿÿÿÿÿÿÿÒÒÒdddÿÿÿÿ2$ôù [ù [$ôÿ2úúúÿÿÿÿÿÿúúúdddúúú›››ÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿúúúúúúŒŒŒdddÜÜÜFFFúúúdddúúú›››FFFúúúÿÿÿúúúdddÿÿÿdddÜÜÜFFFÜÜÜddd›››dddÜÜÜFFF›››dddFFFúúúFFFÿÿÿÒÒÒÿÿÿ›››ÿÿÿÿÿÿÿÿÿ›››ÿÿÿúúúÿÿÿdddÒÒÒÿÿÿÜÜÜùùùdddÿ2$ôù [ù [$ôÿ2ŒŒŒúúúFFFdddÿÿÿFFFÜÜÜúúú›››ÿÿÿFFFÿÿÿÿÿÿdddFFFÿÿÿÿÿÿddd››››››ÿÿÿ›››úúúdddFFF›››ÜÜÜúúúúúúFFFÿÿÿdddúúú›››ÿÿÿúúúFFFÿÿÿddd›››FFFÜÜÜdddFFF›››úúúúúúÜÜÜdddúúúúúúFFF›››dddÜÜÜFFFúúúÿÿÿdddÒÒÒÿÿÿÿÿÿdddFFFÿÿÿÿÿÿdddúúú›››ÿÿÿŒŒŒFFFÜÜÜÿ2$ôù [ù [$ôÿ2FFFFFFFFFFFFFFFÒÒÒŒŒŒÒÒÒÒÒÒúúúÑÑÑdddÿ2$ôù [ù [$ôÿ2ÒÒÒFFF›››ÿÿÿ››››››ÜÜÜFFFÜÜÜÿÿÿFFFÿÿÿ›››ÿÿÿFFFdddÿÿÿFFFÜÜÜ›››FFFdddúúú›››úúúúúúdddÿÿÿFFFÿÿÿ›››úúúÿÿÿdddúúúdddÜÜÜ›››FFFdddÜÜÜúúúúúú›››FFFúúúúúúdddÜÜÜ›››FFFúúúúúúdddÿÿÿFFFÜÜÜÿÿÿFFFÜÜÜ›››úúúdddÒÒÒÿ2$ôù [ù [$ôÿ2ÜÜÜÒÒÒúúúdddÿÿÿÿÿÿFFFÜÜÜÿÿÿ›››úúúÿÿÿFFFÿÿÿ›››úúúúúú›››ÜÜÜÒÒÒ›››FFFÿÿÿ›››úúúúúúúúúFFFúúú›››FFFdddFFF›››dddÒÒÒFFFúúúÜÜÜddd›››úúúFFFdddÿÿÿÿÿÿÿÿÿFFFÿÿÿ›››úúúúúúúúúFFFdddÒÒÒÿÿÿ›››ÿ2$ôù [ù [$ôÿ2dddÜÜÜúúúÿÿÿÿÿÿÿÿÿÒÒÒdddÜÜÜúúúFFFÜÜÜdddÒÒÒÿÿÿÿÿÿdddúúúÒÒÒÿÿÿdddúúúÿÿÿÜÜÜúúúFFFúúúÒÒÒÒÒÒÒÒÒÒÒÒFFF›››dddÿÿÿúúúFFFdddÜÜÜFFF›››dddÜÜÜFFF›››ÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒdddÜÜÜ›››FFFÒÒÒÒÒÒdddÜÜÜFFFÿÿÿÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿdddúúúFFFdddÿÿÿFFFúúúÜÜÜÿÿÿÿÿÿÒÒÒÜÜÜÿÿÿFFFúúúÿ2$ôù [ù [$ôÿ2dddÿÿÿFFFdddúúúFFFÿÿÿÿÿÿ›››ÿÿÿÒÒÒÒÒÒúúúdddúúúÿÿÿdddúúúÿÿÿdddúúúúúúúúúFFFúúúdddÜÜÜdddÒÒÒdddúúúdddúúúÿÿÿÜÜÜÿÿÿdddÿ2$ôù [ù [$ôÿ2›››FFFdddFFFFFFŒŒŒÒÒÒÒÒÒúúúFFFFFFFFF›››ÒÒÒŒŒŒFFFÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒ›››FFFÒÒÒÒÒÒÒÒÒÒÒÒFFFŒŒŒŒŒŒFFFÒÒÒ›››FFFdddÜÜÜÒÒÒÒÒÒ›››FFFdddFFFÒÒÒÒÒÒFFFdddFFFFFFFFFFFFÿ2$ôù [ù [$ôÿ2›››þþþFFFÿÿÿdddÜÜÜÒÒÒÿÿÿ›››þþþÿÿÿÒÒÒÿÿÿFFFúúúÒÒÒÒÒÒúúúúúúFFFÿÿÿÒÒÒúúúþþþFFFÿÿÿúúúddd›››úúúúúúdddúúúFFFÿÿÿFFFúúúÜÜÜÒÒÒdddÿÿÿúúúþþþFFFdddÒÒÒdddÿÿÿÿ2$ôù [ù [$ôÿ2úúúdddÿÿÿÒÒÒÿÿÿ›››ÿÿÿ›››FFFÜÜÜdddÒÒÒdddFFFdddÿÿÿúúúdddÿÿÿFFFÿÿÿ›››ÿÿÿdddúúúúúúdddÒÒÒÒÒÒÒÒÒÒÒÒ›››FFFÿÿÿdddFFF›››ÿÿÿdddúúú›››ÿÿÿdddFFFúúúÜÜÜdddFFF›››úúúÒÒÒdddÜÜÜúúú›››ÿÿÿFFF›››ÜÜÜdddúúúFFFÜÜÜÿÿÿÿÿÿÒÒÒdddÿÿÿÜÜÜúúúÒÒÒÿÿÿdddFFFúúúdddÿÿÿÿÿÿÒÒÒÿÿÿdddúúúFFFúúúÿ2$ôù [ù [$ôÿ2ÿÿÿÒÒÒÿÿÿdddÒÒÒúúúÜÜÜúúúÿÿÿdddúúúFFFÿÿÿdddÿÿÿdddFFFÜÜÜÒÒÒÒÒÒÒÒÒÒÒÒ›››úúúúúúFFFÿÿÿdddùùùúúúúúúúúúÒÒÒdddFFFÿÿÿdddúúúúúúFFFÿÿÿÿÿÿdddÿÿÿÿÿÿÜÜÜÿÿÿ›››ÿÿÿúúú›››ÿÿÿÜÜÜþþþÿÿÿúúúÿ2$ôù [ù [$ôÿ2››››››ÿÿÿŒŒŒúúúúúúúúúúúúúúúFFFdddÿÿÿFFFÿÿÿ›››ÿÿÿŒŒŒŒŒŒÒÒÒÒÒÒÒÒÒÒÒÒúúúdddÜÜÜúúú›››ÜÜÜŒŒŒ››››››ÿÿÿúúú›››ÜÜÜúúúúúúŒŒŒúúú›››ÿÿÿÒÒÒdddFFFÜÜÜFFFÿÿÿdddFFFÿÿÿÜÜÜFFFÿÿÿdddúúú›››ÜÜÜÿ2$ôù [ù [$ôÿ2ŒŒŒÒÒÒúúúÒÒÒÒÒÒÜÜÜFFFFFFFFFFFFFFFdddÿ2$ôù [ù [$ôÿ2dddÿÿÿ›››úúúdddÿÿÿFFFúúúúúúúúúÒÒÒdddÜÜÜFFF›››ÿÿÿ››››››ÜÜÜFFFÜÜÜÿÿÿFFFúúúúúúÒÒÒÒÒÒÒÒÒ›››FFFÜÜÜ››››››ŒŒŒÿÿÿ›››úúúÿÿÿ›››úúúúúúúúúŒŒŒÿÿÿ›››úúúdddÿÿÿÿÿÿFFFdddÿÿÿÿÿÿÒÒÒdddÿÿÿÒÒÒÜÜÜÿÿÿÿÿÿFFFdddÿÿÿÿÿÿFFFÜÜÜ›››FFFÿ2$ôù [ù [$ôÿ2FFFúúú›››úúúÒÒÒúúúdddúúúÿÿÿúúúÿÿÿÿÿÿFFFdddÿÿÿ›››úúúdddÿÿÿÒÒÒÒÒÒÒÒÒúúúFFFúúúúúúÿÿÿúúúúúúFFFdddÿÿÿFFF›››ÿÿÿÿÿÿÿÿÿÜÜÜFFFÿÿÿ››››››ÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2FFFdddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFF›››dddÿÿÿúúúFFFÜÜÜdddÒÒÒÒÒÒúúúÒÒÒúúúÜÜÜdddúúúFFFdddÿÿÿdddÒÒÒÿÿÿÿÿÿdddúúúFFFÜÜÜddd›››FFFÒÒÒÒÒÒúúúúúúdddÿÿÿúúúFFFÿÿÿ›››ÿÿÿÒÒÒÿÿÿdddFFFúúúÿÿÿddd›››FFFÜÜÜdddFFF›››ÿÿÿ›››úúúÜÜÜdddFFFúúúÿÿÿÜÜÜÒÒÒÜÜÜFFFúúúÿÿÿÜÜÜFFFÿÿÿÿÿÿdddÒÒÒÜÜÜúúúÒÒÒdddÿÿÿÒÒÒÿ2$ôù [ù [$ôÿ2ÿÿÿúúúdddúúú›››FFFÒÒÒÒÒÒFFFúúúFFFúúúdddúúúúúú›››ÜÜÜÒÒÒÒÒÒúúúÿÿÿFFFùùùFFFdddÿÿÿFFFúúúFFFúúúÿ2$ôù [ù [$ôÿ2FFFFFFÒÒÒÒÒÒÒÒÒÒÒÒFFFŒŒŒŒŒŒFFFúúú›››FFFFFFŒŒŒÒÒÒÒÒÒÒÒÒúúúúúúÒÒÒŒŒŒFFFÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÜÜÜdddFFFFFFFFFFFFÒÒÒÒÒÒÒÒÒŒŒŒFFFFFFŒŒŒÒÒÒFFFFFFFFFFFF›››FFFFFFÒÒÒÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿFFFÿÿÿFFFddd›››dddúúúdddÿÿÿFFFúúúúúúÒÒÒ›››dddÜÜÜÒÒÒ›››FFFdddÿÿÿÒÒÒdddÿÿÿÿÿÿdddFFF›››dddFFFÿÿÿFFFdddddddddÿÿÿdddÿ2$ôù [ù [$ôÿ2dddFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFÿÿÿdddFFFúúúÜÜÜdddFFF›››úúúúúúÜÜÜdddúúú›››ÿÿÿ›››FFFÜÜÜdddFFF›››úúúúúúdddÜÜÜÒÒÒÜÜÜdddúúúúúúFFFúúúÜÜÜdddFFFÿÿÿ›››ÿÿÿÜÜÜúúúFFFdddÿÿÿúúúÒÒÒÿÿÿddd›››FFFdddÜÜÜúúúúúú›››FFFdddÿÿÿÒÒÒÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFÜÜÜÿÿÿÒÒÒÿÿÿ›››ÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFÿÿÿdddúúúúúúdddÿ2$ôù [ù [$ôÿ2ÿÿÿ›››ÿÿÿúúúúúúúúúúúúFFFdddúúúúúúdddFFFdddÜÜÜÒÒÒdddÜÜÜúúúúúúFFFÜÜÜúúúÿÿÿddd›››ÿÿÿdddúúúúúúÿÿÿdddFFFÿÿÿ›››ÿÿÿÒÒÒÿÿÿÜÜÜÿÿÿÿÿÿÜÜÜÿÿÿ›››ÿÿÿÜÜÜÿ2$ôù [ù [$ôÿ2ÒÒÒÿÿÿddd››››››ÿÿÿúúú›››ÜÜÜ››››››ÿÿÿŒŒŒúúú›››ÿÿÿúúúFFFdddÿÿÿúúúÜÜÜdddÒÒÒÒÒÒúúúÒÒÒÒÒÒÜÜÜddd››››››ÿÿÿŒŒŒúúú›››ÿÿÿFFFÿÿÿdddúúúúúú››››››ÜÜÜúúú›››ÿÿÿŒŒŒÒÒÒÿÿÿdddŒŒŒŒŒŒÒÒÒÿÿÿdddŒŒŒÿ2$ôù [ù [$ôÿ2ŒŒŒFFFFFFŒŒŒFFFŒŒŒFFFFFFÿ2$ôù [ù [$ôÿ2ŒŒŒÿÿÿ›››úúúÿÿÿ›››úúúÿÿÿ›››úúúdddÿÿÿÒÒÒdddÿÿÿ›››úúúÜÜÜdddFFFúúúúúúÒÒÒÒÒÒÒÒÒúúúFFF›››dddÿÿÿFFF›››ÿÿÿ›››úúúÿÿÿ›››úúúŒŒŒúúúúúúÜÜÜ›››úúúÿÿÿ››››››ŒŒŒdddÿÿÿFFFŒŒŒŒŒŒdddÿÿÿFFFŒŒŒÿ2$ôù [ù [$ôÿ2dddFFFúúúúúúFFFÿÿÿúúúFFFúúú›››ÿÿÿÒÒÒÜÜÜúúúúúúúúú›››FFFÑÑÑúúúúúúúúúFFFdddFFFúúúÿÿÿFFFÜÜÜùùùúúúúúúFFFÿÿÿ›››úúúÜÜÜÿÿÿÿÿÿÒÒÒÿÿÿÿÿÿdddÿÿÿ›››úúúdddÿÿÿÒÒÒÿ2$ôù [ù [$ôÿ2ÜÜÜ›››úúúdddÜÜÜFFFúúúÿÿÿdddFFFúúúÿÿÿdddFFFúúúÿÿÿÜÜÜFFFÿÿÿÿÿÿ›››FFFdddÿÿÿFFFdddFFF›››úúúFFF›››ÒÒÒúúúÿÿÿúúúFFFdddÜÜÜFFFúúúdddÿÿÿÿÿÿÿÿÿÒÒÒÿÿÿddd›››FFFÿÿÿ›››úúúÜÜÜdddÒÒÒúúú›››FFFdddÜÜÜúúúFFFdddÿÿÿ›››ÿÿÿFFFdddÿÿÿúúúÒÒÒÜÜÜÿÿÿ›››ÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿÒÒÒÿÿÿÜÜÜúúúFFFÿÿÿ›››ÿÿÿÿ2$ôù [ù [$ôÿ2úúúFFFdddúúúúúúúúúFFFÒÒÒúúúÒÒÒdddFFFFFFùùùþþþdddúúúÿÿÿÒÒÒÿÿÿFFFúúúFFFúúúÿÿÿÜÜÜÒÒÒúúúÿÿÿdddFFFÿÿÿdddFFFÿÿÿÿÿÿÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2úúúFFFŒŒŒÒÒÒFFFFFFFFFFFFFFFFFFÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒŒŒŒFFFdddFFFÒÒÒÒÒÒFFFÜÜÜFFFdddÒÒÒÜÜÜdddFFFŒŒŒÒÒÒFFFŒŒŒŒŒŒFFFÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒFFFFFFFFFFFF›››ÜÜÜdddÿ2$ôù [ù [$ôÿ2ÒÒÒÜÜÜdddÿÿÿÿÿÿÿÿÿFFFdddúúúÜÜÜFFF›››FFFdddÒÒÒúúúFFFdddFFFdddFFF›››úúúúúúúúúúúúÿÿÿFFFdddÿÿÿúúúÿÿÿÿÿÿFFFÿ2$ôù [ù [$ôÿ2úúúúúú›››FFFdddÿÿÿúúúFFFdddÿÿÿúúúFFFdddÿÿÿÒÒÒÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFÿÿÿdddFFFúúúdddÿÿÿÿÿÿFFFÜÜÜdddúúúÜÜÜdddúúúdddÿÿÿÒÒÒÿÿÿ›››ÿÿÿdddFFF›››ÿÿÿÿÿÿÒÒÒÜÜÜFFFÒÒÒFFFúúúdddÿÿÿFFF›››úúúúúúdddÜÜÜÒÒÒÒÒÒÒÒÒdddÜÜÜFFFúúúÜÜÜÿÿÿÒÒÒÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFÜÜÜÿÿÿúúúFFFdddÿÿÿÒÒÒÿÿÿ›››ÿÿÿÿ2$ôù [ù [$ôÿ2úúúúúúúúúÿÿÿdddÿÿÿdddúúúdddÒÒÒÿÿÿÜÜÜÿÿÿ›››úúúÜÜÜFFFúúúúúú›››FFFÒÒÒúúúÿÿÿdddúúúdddÿÿÿFFFÿÿÿÿÿÿÜÜÜÿÿÿdddúúúúúúÜÜÜddd›››FFFdddÜÜÜFFFÜÜÜdddúúúÿÿÿdddÒÒÒÿÿÿþþþÜÜÜÿÿÿ›››ÿÿÿdddúúúÜÜÜdddÒÒÒÿÿÿÿ2$ôù [ù [$ôÿ2ÒÒÒdddÜÜÜúúú›››ÿÿÿÒÒÒÿÿÿÜÜÜúúú›››ÿÿÿŒŒŒÒÒÒÿÿÿdddFFFÿÿÿÜÜÜúúúúúúFFF›››úúú››››››ÿÿÿŒŒŒúúúFFFÿÿÿdddFFFÿÿÿÿÿÿdddúúúÜÜÜdddFFFÜÜÜúúú›››ÜÜÜ›››FFFúúúFFF›››ÜÜÜdddFFF›››úúúFFFÿÿÿdddŒŒŒÒÒÒÿÿÿdddúúúFFFúúúŒŒŒÿ2$ôù [ù [$ôÿ2ŒŒŒFFFFFFFFFFFFŒŒŒFFFŒŒŒÒÒÒÜÜÜÒÒÒÿ2$ôù [ù [$ôÿ2úúúFFFúúúÿÿÿ›››ÿÿÿFFFÜÜÜÿÿÿFFFÿÿÿ›››úúúŒŒŒdddÿÿÿÿÿÿFFFÜÜÜÿÿÿúúúFFFÜÜÜdddúúúÜÜÜ››››››ÜÜÜdddúúúFFFÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿ›››FFFdddÒÒÒÿÿÿ››››››ÜÜÜdddúúúÒÒÒÒÒÒdddÜÜÜúúúFFFÜÜÜÿÿÿÿÿÿFFFŒŒŒdddÿÿÿFFFÿÿÿdddúúúdddÒÒÒÿ2$ôù [ù [$ôÿ2úúúFFFÿÿÿÒÒÒúúúÿÿÿFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdddFFF›››FFFúúúÒÒÒFFFdddFFF›››ÿÿÿúúúúúú›››FFFdddÜÜÜ›››FFFdddFFF›››dddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››úúú›››ÿÿÿÿ2$ôù [ù [$ôÿ2ÜÜÜdddFFFúúúÿÿÿdddúúúÿÿÿdddÒÒÒúúúÿÿÿddd›››FFFŒŒŒÿÿÿ›››úúúdddÿÿÿÒÒÒdddúúúÿÿÿFFF›››úúúúúúŒŒŒdddÿÿÿúúúÿÿÿdddÒÒÒdddÿÿÿFFFúúúdddÜÜÜúúúúúúFFF›››ÜÜÜdddFFF›››úúúúúúÿÿÿdddÒÒÒÿÿÿÿÿÿ›››ÿÿÿÒÒÒÿÿÿÜÜÜúúúFFFdddÜÜÜFFFÿÿÿÿÿÿÜÜÜFFFúúúÿ2$ôù [ù [$ôÿ2úúúFFFúúúúúúÜÜÜÿÿÿFFFúúúdddÜÜÜdddÑÑÑdddFFFúúúFFFdddÑÑÑúúúúúúÿÿÿþþþFFFúúúdddFFFÿ2$ôù [ù [$ôÿ2›››FFFFFFFFFFFFdddÒÒÒÜÜÜ››››››ŒŒŒFFFFFFŒŒŒÒÒÒdddFFFÒÒÒÜÜÜdddÒÒÒŒŒŒddd›››ÒÒÒdddFFFÒÒÒ›››FFFFFFŒŒŒÒÒÒFFFŒŒŒŒŒŒFFFÒÒÒÒÒÒdddÜÜÜúúúFFFFFFFFFFFFÒÒÒÒÒÒFFFÿ2$ôù [ù [$ôÿ2úúúÿÿÿúúúúúúÿÿÿ›››ÜÜÜÒÒÒÿÿÿFFFÿÿÿÿÿÿdddFFFúúú›››ÿÿÿúúúÿÿÿdddFFFÿÿÿÿ2$ôù [ù [$ôÿ2úúú›››ÿÿÿÜÜÜúúúFFFÜÜÜFFFdddFFFdddÜÜÜFFFÿÿÿdddÒÒÒÿÿÿÜÜÜFFFÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFdddÿÿÿúúúFFFdddÜÜÜFFF›››úúúÒÒÒdddFFFúúúÜÜÜÿÿÿúúúÒÒÒdddÿÿÿÿÿÿFFFÿÿÿdddúúú›››ÿÿÿFFF›››úúúÒÒÒÒÒÒFFFúúúdddÿÿÿ›››FFFdddÿÿÿúúúÒÒÒÜÜÜÿÿÿúúúFFFÿÿÿdddFFFúúúÿÿÿÿÿÿúúúÜÜÜÿ2$ôù [ù [$ôÿ2ÿÿÿÜÜÜFFFdddŒŒŒFFFÿÿÿdddFFFÿÿÿÿÿÿdddúúúdddúúúÒÒÒúúú›››ÿÿÿddd›››ÿÿÿÿÿÿÿÿÿúúúúúúdddÜÜÜúúúÿÿÿdddFFFúúúÿÿÿdddFFFÿÿÿdddÿÿÿdddúúú›››ÿÿÿFFFÿ2$ôù [ù [$ôÿ2ŒŒŒÒÒÒÿÿÿÿÿÿdddÒÒÒúúúdddÿÿÿúúúFFFúúúŒŒŒÒÒÒÿÿÿÜÜÜúúúFFFúúúúúúdddÜÜÜFFFÿÿÿdddFFFÿÿÿÜÜÜÒÒÒÿÿÿdddŒŒŒúúú›››ÜÜÜúúúÜÜÜdddFFFÜÜÜúúú›››ÿÿÿFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdddúúú›››ÜÜÜFFFÿÿÿdddFFFúúúúúúÿ2$ôù [ù [$ôÿ2ŒŒŒŒŒŒúúúŒŒŒFFFŒŒŒ‹‹‹FFFFFFÿÿÿFFFŒŒŒÒÒÒÿ2$ôù [ù [$ôÿ2ŒŒŒÜÜÜÿÿÿÒÒÒdddÿÿÿFFFÿÿÿÿÿÿdddúúúÜÜÜÿÿÿFFFŒŒŒŒŒŒdddÿÿÿFFFÿÿÿdddúúúFFFdddÿÿÿFFF›››ŒŒŒÜÜÜÿÿÿÒÒÒÜÜÜÿÿÿFFFdddÿÿÿFFFÿÿÿ››››››úúúFFF›››ÜÜÜÿÿÿFFFÿÿÿ›››úúúdddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFÿÿÿ››››››ÜÜÜFFFdddÿÿÿúúúÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÑÑÑÿÿÿ›››ÿÿÿÒÒÒÿÿÿdddFFFÜÜÜþþþÿÿÿFFFÜÜÜÿÿÿÿÿÿFFFÿÿÿÿÿÿFFFÿÿÿÿÿÿFFFÿÿÿúúúÿÿÿdddúúúÿÿÿÒÒÒ›››ÿÿÿÿÿÿFFF›››úúúúúúúúú›››ÿÿÿúúúFFFÿÿÿÿÿÿÿÿÿdddFFFúúúúúúdddÿÿÿúúúÒÒÒÿ2$ôù [ù [$ôÿ2dddÿÿÿ›››ÿÿÿÿÿÿÿÿÿdddFFFÿÿÿÿÿÿFFFÿÿÿÿÿÿdddÒÒÒúúúÜÜÜÿÿÿ›››ÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿFFFdddÿÿÿÒÒÒúúúÿÿÿdddúúúÿÿÿúúúŒŒŒÜÜÜ›››ÿÿÿÒÒÒÿÿÿdddFFFúúúÿÿÿdddÒÒÒúúúÜÜÜÿÿÿúúúFFFdddÜÜÜúúúÒÒÒúúúÿÿÿdddÒÒÒúúúÿÿÿdddFFFúúúÜÜÜÿÿÿúúúFFFdddÜÜÜúúúÜÜÜdddúúúFFFúúú›››ÿ2$ôù [ù [$ôÿ2ÿÿÿÜÜÜFFFdddFFFdddúúúdddÒÒÒÛÛÛúúúdddúúúdddFFFdddFFFúúúFFFÿÿÿúúúúúúdddÿÿÿdddFFFdddÜÜÜFFFúúúúúúdddúúúddd›››FFFúúúÿÿÿÿ2$ôù [ù [$ôÿ2ŒŒŒdddÜÜÜdddFFFÜÜÜFFF››››››ÒÒÒÒÒÒFFFFFFdddFFFFFFŒŒŒŒŒŒŒŒŒÒÒÒFFFFFFFFFFFFFFFFFFÒÒÒÒÒÒFFF›››ÜÜÜdddFFFFFFFFFFFFÒÒÒÒÒÒFFFŒŒŒúúú›››FFFÿ2$ôù [ù [$ôÿ2ÿÿÿdddFFFdddÿÿÿÿÿÿFFFÿÿÿÿÿÿÿÿÿFFFÜÜÜÿÿÿÒÒÒÿÿÿFFFÿÿÿFFFÿÿÿùùùdddFFFdddúúúÿÿÿÿÿÿÿÿÿúúúdddÿÿÿÿÿÿÿÿÿFFFdddÿÿÿÿ2$ôù [ù [$ôÿ2FFFÿÿÿFFFdddÿÿÿÿÿÿÿÿÿ›››ÿÿÿÜÜÜÒÒÒÿÿÿ›››ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdddÒÒÒÿÿÿ›››ÿÿÿdddFFFÿÿÿFFFÜÜÜÿÿÿÒÒÒÿÿÿdddFFF›››dddÿÿÿÒÒÒÿÿÿ›››ÿÿÿÜÜÜúúúÒÒÒdddÿÿÿŒŒŒ››››››ÿÿÿÜÜÜúúúúúúúúúFFFdddÿÿÿúúúFFFÜÜÜddd›››FFFÜÜÜdddFFF›››ÿÿÿÿÿÿFFFÿÿÿÜÜÜúúúÒÒÒdddÿÿÿúúúÒÒÒÜÜÜFFFÿÿÿdddFFFúúúúúúúúúÜÜÜÜÜÜúúúÿ2$ôù [ù [$ôÿ2›››ÿÿÿÜÜÜÿÿÿÛÛÛÒÒÒÿÿÿÿÿÿdddFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿÿÿÿÿÿÜÜÜÿÿÿúúúdddFFFFFFÜÜÜúúúdddFFF›››ÒÒÒúúúÿÿÿ›››ÿÿÿdddÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFúúú›››ÜÜÜ›››úúúÿ2$ôù [ù [$ôÿ2ÒÒÒÿÿÿÜÜÜŒŒŒŒŒŒŒŒŒÒÒÒdddFFFÿÿÿÿÿÿdddúúú›››ÿÿÿŒŒŒFFFÜÜÜŒŒŒFFFúúúÿÿÿdddúúú›››ÿÿÿúúú›››ÿÿÿúúúÒÒÒÒÒÒdddÜÜÜÒÒÒÿÿÿdddFFFÿÿÿÜÜÜFFFÿÿÿÿÿÿdddÒÒÒúúúdddÜÜÜFFFÿÿÿdddFFF›››úúúÒÒÒÿ2$ôù [ù [$ôÿ2FFFÒÒÒFFF›››FFFÜÜÜÜÜÜŒŒŒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2dddÒÒÒŒŒŒdddÿÿÿÒÒÒdddÒÒÒdddÿÿÿÿÿÿFFFÿÿÿ›››ÿÿÿFFFŒŒŒdddÒÒÒŒŒŒdddÿÿÿFFFúúúúúúÿÿÿ›››úúúÿÿÿ›››úúúúúúFFF›››ÜÜÜddd›››FFFdddÒÒÒÜÜÜFFFdddÿÿÿFFFúúúdddÿÿÿFFFdddÜÜÜÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒÿÿÿÒÒÒÿÿÿþþþÿÿÿFFFdddÿÿÿúúúÜÜÜþþþÿÿÿÒÒÒÿÿÿ›››FFFdddFFFÿÿÿÛÛÛFFFúúúÿÿÿFFFÜÜÜúúúúúúFFFÿÿÿŒŒŒdddÿÿÿFFFÿÿÿdddÿÿÿ››››››ÜÜÜúúúÿ2$ôù [ù [$ôÿ2dddÿÿÿFFFÿÿÿÒÒÒÜÜÜÿÿÿ›››ÿÿÿÿÿÿÿÿÿÜÜÜFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜFFFÿÿÿFFFÜÜÜÿÿÿÿÿÿÿÿÿÜÜÜÒÒÒúúúÿÿÿdddúúúÿÿÿÿÿÿ›››ÿÿÿÒÒÒÿÿÿÜÜÜFFFúúúÿÿÿ›››ÿÿÿFFFdddÿÿÿúúúFFFÜÜÜdddFFF›››dddÜÜÜ›››FFFÜÜÜdddFFF›››ÜÜÜdddúúúÿÿÿúúúdddÿÿÿFFF›››ŒŒŒÜÜÜdddÒÒÒÿÿÿÿÿÿ›››FFFdddÿÿÿúúúúúúúúúÒÒÒÿ2$ôù [ù [$ôÿ2FFFÿÿÿþþþdddÒÒÒÜÜÜFFFÿÿÿúúúdddÿÿÿFFFÿÿÿÒÒÒÜÜÜúúúdddúúúúúúdddúúúúúúFFFdddúúúdddddd›››úúúÿÿÿdddFFFúúúÒÒÒÿ2$ôù [ù [$ôÿ2›››ÒÒÒ›››FFFúúúÜÜÜdddFFFFFFFFFFFFFFF›››ÜÜÜdddÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒúúúúúúÒÒÒúúú›››FFFúúúŒŒŒŒŒŒÒÒÒÜÜÜFFFÒÒÒÒÒÒFFFŒŒŒÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿúúúdddFFFÿÿÿúúúFFFÿÿÿFFFdddÿÿÿúúúúúúúúúúúú›››FFFÿÿÿúúúFFFdddÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2FFFÿÿÿÿÿÿdddÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒdddÿÿÿÿÿÿÿÿÿFFFÜÜÜÿÿÿFFFúúúFFF›››dddÿÿÿúúúFFFÜÜÜÒÒÒÿÿÿÜÜÜÒÒÒúúúÿÿÿdddFFFúúúÿÿÿdddFFFúúúÜÜÜddd›››FFFdddÜÜÜ›››FFFÒÒÒúúúúúúÒÒÒdddFFFdddÜÜÜúúúúúúŒŒŒFFFÿÿÿÿÿÿdddúúúFFFÜÜÜdddFFFúúúúúúÒÒÒ›››FFFÒÒÒÿ2$ôù [ù [$ôÿ2FFFFFFÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÜÜÜúúúddddddFFFÿÿÿFFFÜÜÜÿÿÿÿÿÿ›››úúú›››ÿÿÿúúúšššÿÿÿúúúúúúúúúddd›››ÜÜÜFFFÜÜÜ›››ÜÜÜdddÜÜÜFFFúúúúúúúúúÿ2$ôù [ù [$ôÿ2FFFÿÿÿÜÜÜÒÒÒdddúúúFFFÜÜÜdddúúúdddÿÿÿÿÿÿFFFdddÿÿÿÒÒÒÿÿÿÿÿÿdddFFFÿÿÿÿÿÿdddFFFÿÿÿdddFFFÿÿÿddd››››››ÿÿÿúúú›››ÿÿÿúúúÜÜÜdddÒÒÒÒÒÒFFF›››úúúúúúúúú›››úúúdddúúú›››ÿÿÿ››››››ÜÜÜúúúÒÒÒúúúÿ2$ôù [ù [$ôÿ2›››FFFúúúŒŒŒŒŒŒŒŒŒFFFFFFFFFÒÒÒÒÒÒÒÒÒFFFFFFFFFFFFFFFÿ2$ôù [ù [$ôÿ2ŒŒŒÜÜÜdddFFF›››dddÿÿÿFFFÿÿÿÿÿÿdddFFFÿÿÿFFFÜÜÜÿÿÿÒÒÒdddÒÒÒŒŒŒŒŒŒÿÿÿ›››úúúÿÿÿ›››úúúdddÿÿÿ›››FFFÒÒÒÒÒÒÒÒÒúúúúúúúúúÜÜÜ››››››ŒŒŒÿÿÿ››››››dddúúú›››úúúÒÒÒúúúÿ2$ôù [ù [$ôÿ2ÜÜÜÿÿÿÒÒÒÜÜÜÿÿÿÒÒÒÿÿÿÿÿÿÒÒÒdddÿÿÿúúúúúúdddúúú›››ÿÿÿÑÑÑÿÿÿÿÿÿFFFÿÿÿFFFúúúFFFdddÿÿÿÜÜÜddd›››ÒÒÒÑÑÑ›››ÒÒÒÜÜÜFFFÜÜÜFFFúúúÜÜÜdddÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2dddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿÒÒÒÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿÿÿúúúÿÿÿdddFFFÿÿÿÿÿÿÜÜÜFFF›››ÜÜÜ›››úúúÿÿÿ›››úúúdddÜÜÜFFFúúúÿÿÿdddFFFúúúúúúúúúÒÒÒÒÒÒdddÜÜÜFFFdddÒÒÒúúúúúúdddÿÿÿÿÿÿFFFÜÜÜÿÿÿ›››ÿÿÿFFFdddÜÜÜúúúFFFúúúúúúÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿdddÿÿÿÿÿÿÜÜÜdddFFFFFFFFFÜÜÜúúúúúúFFFdddúúú›››FFFÿÿÿdddÿÿÿÿÿÿúúúddd›››úúúdddÜÜÜÒÒÒÿ2$ôù [ù [$ôÿ2dddÜÜÜFFFddddddFFFdddFFFÒÒÒÒÒÒFFFŒŒŒŒŒŒFFFFFF›››úúúFFFdddFFFFFFúúúÒÒÒdddÜÜÜ›››FFFdddFFFFFFŒŒŒŒŒŒFFFFFFŒŒŒÒÒÒ›››FFFÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÜÜÜdddÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2dddFFFddddddÿÿÿdddúúúÿÿÿÒÒÒdddFFFÿÿÿúúúÿÿÿFFFÿÿÿFFFÿÿÿdddúúúdddÿÿÿdddÜÜÜÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2FFFÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFdddÿÿÿÿÿÿFFFdddFFFdddÿÿÿúúúFFFÿÿÿÿÿÿFFFÜÜÜFFFdddÿÿÿÒÒÒÿÿÿÿÿÿddd››››››ÿÿÿúúúÒÒÒÒÒÒÜÜÜúúúdddÿÿÿúúúFFFÜÜÜdddFFFúúúúúúúúúÿÿÿÜÜÜÒÒÒúúúdddÿÿÿúúúFFFúúú››››››ÿÿÿÜÜÜúúúFFFÜÜÜddd›››FFFÜÜÜdddÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ÒÒÒÿÿÿÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿÜÜÜÿÿÿ›››ÿÿÿÜÜÜúúúÿÿÿúúúþþþdddúúúÿÿÿFFFþþþFFFdddFFFFFFÿÿÿddddddúúúúúúFFFÿÿÿdddúúúúúúúúú›››››››››ÿÿÿúúú›››FFFÿÿÿFFFúúúúúúÒÒÒúúúÒÒÒÿ2$ôù [ù [$ôÿ2ŒŒŒŒŒŒÒÒÒÿÿÿÜÜÜúúúdddÿÿÿúúúFFFdddÿÿÿúúú›››ÿÿÿdddÒÒÒÿÿÿÿÿÿdddÒÒÒúúúdddÿÿÿŒŒŒ›››FFFÜÜÜdddÒÒÒúúúFFFúúúdddÿÿÿúúú›››ÿÿÿFFFÿÿÿdddFFFÿÿÿdddFFFÜÜÜÒÒÒdddŒŒŒúúú›››ÿÿÿúúúúúúúúúÒÒÒÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ŒŒŒFFFŒŒŒFFFFFFFFFŒŒŒFFFŒŒŒÒÒÒúúúdddŒŒŒÒÒÒÿ2$ôù [ù [$ôÿ2ŒŒŒdddÿÿÿÒÒÒdddÿÿÿFFFúúúÿÿÿdddFFFúúúÿÿÿ›››úúúdddÿÿÿÒÒÒdddÿÿÿFFFÿÿÿFFFŒŒŒdddÿÿÿFFFÜÜÜddd›››FFFÒÒÒÒÒÒÒÒÒÒÒÒÜÜÜ››››››dddÿÿÿFFFdddÿÿÿFFFdddÒÒÒdddÿÿÿFFFdddÿÿÿFFFÿÿÿ››››››úúúúúúúúúÒÒÒÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ÜÜÜÒÒÒÿÿÿ›››ÒÒÒdddúúúÿÿÿúúúúúúÿÿÿ›››ÒÒÒÿÿÿdddÒÒÒúúúÿÿÿÿÿÿFFF›››úúúúúúFFF›››ÒÒÒFFF›››ÿÿÿ›››FFFÿÿÿ›››ÿÿÿFFFÿÿÿ›››úúúúúúúúúÒÒÒÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ÜÜÜÒÒÒÜÜÜÿÿÿ›››ÿÿÿÒÒÒÿÿÿÜÜÜFFFÿÿÿÿÿÿFFFddd›››FFFdddÜÜÜ›››FFFdddÿÿÿFFFÿÿÿÿÿÿúúúÿÿÿÿÿÿ›››ÿÿÿFFFdddÿÿÿúúúFFFúúúÒÒÒÒÒÒÒÒÒÒÒÒFFF›››úúúúúúFFFdddÿÿÿúúúÒÒÒÜÜÜÿÿÿúúúFFFdddÿÿÿFFFúúúdddÿÿÿÒÒÒúúúÜÜÜÿÿÿúúúFFFdddÜÜÜúúúÒÒÒÒÒÒÒÒÒ›››FFFÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ÿÿÿFFFúúúdddúúúddddddFFFÒÒÒúúúdddùùùÜÜÜÜÜÜFFFdddÿÿÿFFFdddúúúÒÒÒdddúúúdddúúúÿÿÿdddFFFÜÜÜFFFdddÜÜÜ›››ÒÒÒÑÑÑÿ2$ôù [ù [$ôÿ2ŒŒŒFFFFFFFFFFFFFFFdddFFFÜÜÜÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒdddFFFÒÒÒÒÒÒÒÒÒŒŒŒFFFÒÒÒúúúdddÜÜÜ››››››ÜÜÜŒŒŒFFFÒÒÒÒÒÒFFFdddÒÒÒÒÒÒFFF›››ÒÒÒFFFdddÒÒÒÒÒÒFFFŒŒŒŒŒŒFFFFFFŒŒŒŒŒŒFFFdddÜÜÜ›››FFFÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2FFFÿÿÿúúúdddÿÿÿdddÿÿÿFFFÿÿÿÿÿÿÒÒÒÜÜÜÿÿÿFFFdddÿÿÿFFFÿÿÿúúúdddÿÿÿFFFÿÿÿúúúddd›››dddÿÿÿFFFddddddÿÿÿFFFÿÿÿdddúúúÜÜÜddd›››ÜÜÜdddFFF›››ddddddÜÜÜ›››FFFÿ2$ôù [ù [$ôÿ2ÒÒÒÜÜÜúúúÒÒÒÿÿÿÜÜÜÒÒÒÿÿÿ›››ÿÿÿÜÜÜÒÒÒÿÿÿ›››ÿÿÿdddFFFÿÿÿ›››ÿÿÿdddFFFúúúÜÜÜdddFFF›››dddÿÿÿúúúFFFÿÿÿÿÿÿÿÿÿ›››ÿÿÿdddFFFúúúÿÿÿdddúúúFFFÿÿÿdddÒÒÒÒÒÒŒŒŒúúúÜÜÜdddFFFúúúdddÿÿÿúúúÿÿÿdddFFFúúúÿÿÿddd›››FFFÿÿÿúúúÒÒÒ›››FFFúúúúúúúúúúúúúúúÒÒÒÜÜÜdddFFF›››ÜÜÜÿ2$ôù [ù [$ôÿ2ÿÿÿ›››ÿÿÿÜÜÜÿÿÿdddFFFÿÿÿdddúúúúúúÿÿÿdddFFFúúúÜÜÜÿÿÿÿÿÿúúúFFFÿÿÿ›››FFFÒÒÒŒŒŒúúúúúúúúú›››ÿÿÿÜÜÜúúúúúúúúúÿÿÿÜÜÜFFFúúúúúúúúúúúúÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2FFFÿÿÿdddŒŒŒŒŒŒŒŒŒ››››››ÿÿÿúúú›››ÿÿÿúúú›››ÿÿÿdddŒŒŒ››››››ÜÜÜÒÒÒdddFFF›››úúú››››››ÿÿÿFFFÿÿÿÜÜÜFFFúúúdddÜÜÜFFFÿÿÿdddúúúFFFÿÿÿddd›››FFFÜÜÜdddúúúdddÜÜÜ››››››ÜÜÜ››››››ÜÜÜúúúÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2FFFFFFFFFFFFFFFŒŒŒdddFFFFFFŒŒŒFFFFFFÿ2$ôù [ù [$ôÿ2ŒŒŒdddÿÿÿÿÿÿÒÒÒdddÿÿÿFFFŒŒŒÿÿÿ›››úúúÿÿÿ›››úúúÿÿÿ›››úúúÿÿÿ››››››dddÿÿÿÿÿÿFFFÿÿÿdddúúúFFFÜÜÜÿÿÿFFFÜÜÜ›››úúúúúú›››FFFŒŒŒÜÜÜdddúúúÜÜÜdddFFF›››dddÿÿÿFFFúúúÿÿÿ›››úúúÜÜÜ›››úúúúúúÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ÜÜÜFFFÿÿÿÿÿÿÒÒÒÜÜÜFFFÿÿÿÒÒÒdddÿÿÿÿÿÿÿÿÿFFFÿÿÿFFFúúúFFFdddÿÿÿFFFdddÿÿÿúúúFFFÿÿÿÛÛÛÿÿÿFFFšššÿÿÿ›››úúúúúúúúúŒŒŒFFF›››úúúFFFúúúÿÿÿdddúúúFFFdddÿÿÿúúúÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2ÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFÿÿÿÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿÿÿÿ›››úúúÜÜÜÿÿÿÒÒÒdddÜÜÜFFFúúúÿÿÿdddFFFúúúÿÿÿdddFFF›››ÜÜÜÿÿÿÿÿÿFFFÿÿÿdddúúúFFFúúúÒÒÒdddúúúÿÿÿdddúúúFFFdddÿÿÿ›››FFFdddÿÿÿFFFdddÜÜÜÒÒÒdddúúúúúúúúúFFFÿÿÿÿÿÿúúúÿÿÿFFFúúúÿÿÿddd›››FFFdddÿÿÿ›››FFFÜÜÜddd›››FFFdddÜÜÜ›››ÿ2$ôù [ù [$ôÿ2ÒÒÒþþþFFFdddFFFÜÜÜÒÒÒÜÜÜúúúÒÒÒ›››ÿÿÿdddúúúÿÿÿÿÿÿúúúÿÿÿFFFdddFFFúúúÿÿÿ›››úúúÒÒÒÜÜÜFFFÜÜÜÒÒÒdddFFFúúúdddFFF›››ÜÜÜdddÿ2$ôù [ù [$ôÿ2ŒŒŒ›››FFF›››ŒŒŒFFFFFFŒŒŒÒÒÒFFFdddFFFFFFÒÒÒŒŒŒFFF›››FFFÒÒÒŒŒŒFFFFFFFFFÒÒÒ›››FFFÒÒÒ››››››ÜÜÜÒÒÒÒÒÒÒÒÒFFF›››ÜÜÜddddddFFFFFFFFFÒÒÒÒÒÒÒÒÒÒÒÒdddÜÜÜÒÒÒÿ2$ôù [ù [$ôÿ2þþþFFFdddFFFÿÿÿÿÿÿ›››ÿÿÿddddddFFFÿÿÿúúúúúúÿÿÿFFFÜÜÜÿÿÿÜÜÜFFF›››ÿÿÿùùùdddÿÿÿúúúdddÿÿÿÒÒÒFFFÒÒÒÒÒÒÿÿÿúúúdddÿÿÿFFFúúúÿ2$ôù [ù [$ôÿ2FFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿÿÿÿúúúÿÿÿÿÿÿFFFÜÜÜÒÒÒÿÿÿdddÒÒÒÿÿÿÜÜÜFFF›››ÿÿÿÿÿÿFFFÜÜÜÿÿÿúúúdddÜÜÜÒÒÒÿÿÿÿÿÿÜÜÜúúúÜÜÜdddúúúúúúúúúFFFÿÿÿdddúúúFFFÿÿÿdddŒŒŒFFF›››ÒÒÒÒÒÒÒÒÒÒÒÒdddFFFúúúúúúFFFÜÜÜÿÿÿúúúÒÒÒÿÿÿdddFFFúúúdddÜÜÜ›››FFFÒÒÒFFF›››ÜÜÜÿ2$ôù [ù [$ôÿ2dddÿÿÿÿÿÿÜÜÜúúúFFFdddÿÿÿÿÿÿFFFÜÜÜÿÿÿ›››ÿÿÿŒŒŒdddÿÿÿ›››ÿÿÿFFFÜÜÜÒÒÒdddúúúdddFFFdddÜÜÜFFFÿÿÿšššÿÿÿFFF›››ÿÿÿúúú›››ÜÜÜÜÜÜdddÜÜÜ›››ÿÿÿdddFFFÿÿÿ›››ÿÿÿúúúÜÜÜddd›››ÒÒÒÿ2$ôù [ù [$ôÿ2ŒŒŒFFFúúúÿÿÿdddÒÒÒÿÿÿÿÿÿdddFFFÿÿÿÿÿÿdddúúúFFFÿÿÿdddÒÒÒÿÿÿdddFFFúúúúúúFFFúúúúúú›››FFFdddÿÿÿúúúÿÿÿdddÒÒÒÿÿÿdddÒÒÒdddúúúÜÜÜdddFFF›››ÜÜÜdddÒÒÒúúúúúúÿÿÿdddÒÒÒÿÿÿdddFFFÿÿÿddd›››FFFúúúúúúúúúÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2úúúdddFFFùùùFFFÒÒÒÑÑÑÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2úúúúúúÜÜÜFFFdddÒÒÒÜÜÜdddúúúFFFdddÒÒÒúúúúúúdddÿÿÿúúúÜÜÜdddFFFúúúúúúúúúdddÒÒÒdddÿÿÿÒÒÒÜÜÜFFFÜÜÜÿÿÿFFFúúúÜÜÜdddFFFúúúúúúÒÒÒÒÒÒúúúŒŒŒdddÿÿÿFFFÜÜÜdddúúúFFFúúúúúúÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2dddÒÒÒdddÜÜÜ›››FFFdddÿÿÿŒŒŒFFFúúúÿÿÿFFFÒÒÒÜÜÜFFF›››FFF›››ÿÿÿ›››FFFÿÿÿ›››ÒÒÒÜÜÜÿÿÿÿÿÿdddúúúúúúúúú›››FFFdddÿÿÿFFFÿÿÿ›››úúúúúúFFFúúúÿÿÿúúúÒÒÒÿ2$ôù [ù [$ôÿ2dddÿÿÿÿÿÿÒÒÒÜÜÜÿÿÿÿÿÿÒÒÒÜÜÜdddFFF›››ÿÿÿdddÒÒÒÿÿÿÿÿÿÜÜÜFFF›››dddÿÿÿÒÒÒdddÿÿÿúúúÿÿÿÜÜÜFFF›››ÒÒÒFFF›››ÜÜÜÿÿÿÿÿÿÒÒÒúúúFFF›››dddÿÿÿFFFdddFFF›››dddÿÿÿFFFúúúdddÿÿÿFFFÿÿÿÿÿÿÿÿÿdddÒÒÒÿÿÿddd›››FFFdddÿÿÿFFFdddúúúúúúFFF›››ÿÿÿ›››úúúdddÿÿÿúúúFFFdddÿÿÿúúúÿÿÿddd›››FFFÜÜÜdddÒÒÒÿ2$ôù [ù [$ôÿ2ÿÿÿÜÜÜúúúúúúdddÿÿÿúúúÿÿÿFFFÿÿÿdddFFFÜÜÜúúúdddÜÜÜÿÿÿdddÒÒÒÿÿÿúúúþþþdddúúúÿÿÿdddÒÒÒdddùùùdddÒÒÒúúúFFFÿÿÿdddFFFúúúÿÿÿFFFúúúÿ2$ôù [ù [$ôÿ2ŒŒŒ›››FFFdddFFF›››úúúúúúÜÜÜdddúúúúúúFFF›››ÒÒÒúúúŒŒŒFFFÒÒÒŒŒŒFFFFFFdddúúúÒÒÒÒÒÒÒÒÒFFF›››ÒÒÒÒÒÒ›››FFFdddFFFúúúúúúÒÒÒŒŒŒFFFFFFŒŒŒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2FFF›››ÜÜÜúúúùùùúúúúúúúúúúúúÜÜÜúúúúúúúúúÜÜÜdddÿÿÿúúúÿÿÿdddÿÿÿFFFddddddúúúúúúúúúúúúÿ2$ôù [ù [$ôÿ2ÒÒÒdddFFFÜÜÜdddúúúúúúFFF›››dddFFFúúúúúúÜÜÜdddÒÒÒdddFFFúúúÒÒÒdddÜÜÜúúúFFFÜÜÜÿÿÿ›››úúú›››FFFÒÒÒÒÒÒdddÜÜÜ›››FFFdddÿÿÿÒÒÒdddÿÿÿÿÿÿÿÿÿFFFÿÿÿdddúúú›››ÿÿÿÜÜÜÒÒÒúúúÿÿÿdddFFFúúúÿÿÿdddúúú›››ÿÿÿFFF›››dddÜÜÜÒÒÒÒÒÒÒÒÒúúúÿ2$ôù [ù [$ôÿ2úúúúúúÒÒÒúúúÒÒÒ›››FFFÜÜÜúúúÒÒÒÜÜÜFFFÿÿÿÿÿÿddddddÜÜÜFFF›››dddÜÜÜÜÜÜdddÿÿÿþþþÿÿÿÿÿÿdddÿÿÿ›››ÿÿÿFFFÿÿÿÿÿÿFFFÿÿÿdddúúúÜÜÜdddFFFdddÜÜÜÿ2$ôù [ù [$ôÿ2úúúdddÿÿÿúúúFFFúúúÒÒÒÒÒÒúúúdddÿÿÿúúúFFFdddÜÜÜ›››FFFúúúFFF›››úúúúúúFFFdddÜÜÜúúúúúúÒÒÒdddúúúÜÜÜdddúúúÜÜÜdddFFF›››úúúúúúFFFÿÿÿÜÜÜFFFÜÜÜÒÒÒÿÿÿdddŒŒŒFFFÿÿÿdddFFFÿÿÿdddŒŒŒúúúFFFúúúFFF›››ÜÜÜdddFFF›››ÒÒÒÿ2$ôù [ù [$ôÿ2ÒÒÒŒŒŒFFF‹‹‹ŒŒŒFFFÒÒÒ›››ÿ2$ôù [ù [$ôÿ2úúúFFFúúúÿÿÿdddúúúÒÒÒÒÒÒúúúFFFúúúÿÿÿdddFFFúúúÿÿÿdddúúúdddÜÜÜúúúÿÿÿdddFFFúúúúúúúúúÜÜÜFFFÒÒÒÒÒÒúúú›››FFFdddÜÜÜúúúÜÜÜdddúúúdddÒÒÒŒŒŒdddÿÿÿFFFdddÿÿÿÒÒÒÜÜÜÿÿÿÒÒÒÿÿÿdddúúúFFFÜÜÜdddFFFúúúÿÿÿdddúúúÿ2$ôù [ù [$ôÿ2dddÜÜÜÒÒÒÜÜÜúúúFFFddd›››úúú›››dddÿÿÿúúú›››FFFÒÒÒFFF›››ÜÜÜddd›››FFFúúúÜÜÜFFFddd›››ÿÿÿFFF›››ÿÿÿÒÒÒÜÜÜÿÿÿ›››ÿÿÿFFFdddÿÿÿFFFúúúúúúÿ2$ôù [ù [$ôÿ2FFFÜÜÜdddFFFddd›››FFFúúúúúúÜÜÜdddFFFddd›››FFFdddÜÜÜFFF›››ÒÒÒFFFddd›››FFFÜÜÜdddFFF›››ÿÿÿdddúúúFFFúúúFFF›››ÒÒÒÒÒÒúúúFFF›››úúú›››FFFŒŒŒúúúFFFúúúÿÿÿ›››ÿÿÿÒÒÒÿÿÿÜÜÜÒÒÒúúúÜÜÜÿÿÿFFFÿÿÿÿÿÿdddFFFúúúÿÿÿdddúúúÿÿÿFFFdddFFFÿ2$ôù [ù [$ôÿ2úúúùùùúúúúúúúúúÿÿÿ›››úúúÒÒÒdddÜÜÜúúúúúúdddÜÜÜFFFÜÜÜÿÿÿÒÒÒÿÿÿÿÿÿúúúÿÿÿdddFFFÿ2$ôù [ù [$ôÿ2ÜÜÜÒÒÒdddFFFdddÜÜÜúúúúúú›››FFFdddFFFÒÒÒÒÒÒÒÒÒÒÒÒdddFFFdddÜÜÜÒÒÒÒÒÒŒŒŒFFFdddÜÜÜúúúÒÒÒŒŒŒFFFÒÒÒúúúÒÒÒŒŒŒFFFÒÒÒÿÿÿ››››››ŒŒŒFFFFFF›››ÜÜÜdddFFFFFFFFFFFFFFFFFFdddFFFÿ2$ôù [ù [$ôÿ2ÿÿÿÿÿÿÒÒÒÿÿÿFFFúúúFFFþþþFFFÿÿÿúúúÜÜÜFFFúúúúúúúúúÜÜÜFFFúúúFFFÿÿÿFFFdddÜÜÜúúúÒÒÒ›››dddÿÿÿFFFÿÿÿÿÿÿúúúÿÿÿdddÿ2$ôù [ù [$ôÿ2FFFúúúÜÜÜÿÿÿÒÒÒÿÿÿ›››ÿÿÿ›››FFFÿÿÿdddúúúFFFÿÿÿÜÜÜÒÒÒúúúÿÿÿdddFFFúúúÿÿÿdddFFFúúúÜÜÜÿÿÿúúúÒÒÒdddÿÿÿFFFúúúdddÜÜÜúúú›››ÿÿÿ›››FFFÜÜÜdddúúúdddÒÒÒÿÿÿdddFFF›››ÜÜÜdddúúúFFFÿÿÿdddúúúdddÜÜÜúúúÜÜÜdddFFFúúúÜÜÜÿÿÿúúúFFFdddÿÿÿúúúÒÒÒÜÜÜÒÒÒÜÜÜÿÿÿÒÒÒÿÿÿ›››ÿÿÿÜÜÜÒÒÒÿÿÿ›››ÿÿÿÿÿÿÿÿÿFFFdddÿÿÿúúúdddÿ2$ôù [ù [$ôÿ2ÿÿÿdddúúúúúúFFFúúúúúúúúúúúú›››ÿÿÿdddÿÿÿúúúdddúúúÿÿÿdddFFFÿÿÿFFF›››úúúùùùÿÿÿÿÿÿÿÿÿ›››úúúúúúFFFÿÿÿÿÿÿÜÜÜdddúúúúúú›››ÿÿÿÿÿÿddd›››ÿÿÿÿÿÿÿÿÿÒÒÒÜÜÜÿÿÿÜÜÜFFFÿ2$ôù [ù [$ôÿ2FFFÿÿÿdddŒŒŒúúú›››ÜÜÜÒÒÒdddFFFÿÿÿddd››››››ÜÜÜFFFÿÿÿdddFFFÜÜÜ››››››ÿÿÿŒŒŒúúúúúú›››FFFÿÿÿÜÜÜFFFÿÿÿÿÿÿdddúúú›››ÿÿÿÒÒÒdddÒÒÒÒÒÒ››››››ÿÿÿFFFÿÿÿdddúúú›››ÿÿÿFFFÿÿÿÿÿÿdddFFFÿÿÿÿÿÿdddŒŒŒŒŒŒÒÒÒÿÿÿÜÜÜFFFÿÿÿ›››ÿÿÿÿ2$ôù [ù [$ôÿ2ddddddFFFFFFÒÒÒFFFŒŒŒFFFFFF›››ÿ2$ôù [ù [$ôÿ2ÜÜÜFFFdddÿÿÿFFFÿÿÿ›››FFFdddÿÿÿFFFdddÿÿÿFFFÿÿÿ›››úúúdddÿÿÿÒÒÒÜÜÜÿÿÿFFFdddúúúúúúŒŒŒúúúúúúÿÿÿdddúúúFFFdddÒÒÒÜÜÜ››››››ÜÜÜFFFdddÿÿÿFFFúúúÿÿÿ›››úúúŒŒŒÿÿÿ›››úúúÜÜÜÒÒÒdddÿÿÿÿÿÿFFFdddÿÿÿFFFŒŒŒÜÜÜÿÿÿÿÿÿFFFdddÿÿÿ›››úúúÿ2$ôù [ù [$ôÿ2››››››ÿÿÿFFF››››››ÿÿÿúúúFFFÿÿÿ›››ÒÒÒÜÜÜÿÿÿ›››úúúÜÜÜdddúúúdddþþþÜÜÜFFFúúúúúúdddÿÿÿÿÿÿFFFúúúdddÿÿÿÿÿÿFFFúúúFFFúúúúúúFFFúúúdddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFÿÿÿÿÿÿÜÜÜÿÿÿÿÿÿÜÜÜÿ2$ôù [ù [$ôÿ2ÿÿÿdddúúúdddÿÿÿÒÒÒúúúÿÿÿdddúúúúúúúúúFFFdddÿÿÿúúúÒÒÒÿÿÿdddFFFúúúÿÿÿÜÜÜFFFÿÿÿÿÿÿdddúúúúúú›››FFFÿÿÿ›››úúúÜÜÜdddFFF›››dddÜÜÜúúúÿÿÿÜÜÜFFF›››úúúúúúÜÜÜdddÒÒÒÿÿÿÿÿÿFFF›››dddÜÜÜFFFúúúÜÜÜÿÿÿ›››úúúdddÜÜÜ›››FFFÿÿÿdddFFFÿÿÿÜÜÜúúúÒÒÒÜÜÜÿÿÿÒÒÒÿÿÿÿÿÿÿÿÿ›››ÿÿÿÿÿÿÿÿÿdddÒÒÒÜÜÜFFFÿ2$ôù [ù [$ôÿ2FFFdddùùùúúúFFFÿÿÿúúúÿÿÿ›››FFFÿÿÿúúúÿÿÿFFFÜÜÜ›››FFFúúúÒÒÒúúúÿÿÿdddúúúdddÒÒÒFFFdddÿ2$ôù [ù [$ôÿ2ŒŒŒFFF›››ŒŒŒÒÒÒFFFdddFFF›››ÜÜÜdddÒÒÒÒÒÒFFFFFFFFFFFFFFF›››ŒŒŒFFFÒÒÒŒŒŒFFFFFFŒŒŒÒÒÒÒÒÒÒÒÒdddFFFÒÒÒŒŒŒFFFFFFŒŒŒÒÒÒÜÜÜFFFÒÒÒ›››FFFFFFFFFFFF›››ÒÒÒÒÒÒÜÜÜdddFFFFFFÿ2$ôù [ù [$ôÿ2dddFFFdddÛÛÛúúúúúúFFFÿÿÿÜÜÜúúúddd›››dddÿÿÿ›››ÿÿÿdddFFFÿÿÿúúúFFFÿÿÿÿÿÿFFF›››dddÿÿÿÒÒÒúúúÿÿÿÜÜÜÿ2$ôù [ù [$ôÿ2ÒÒÒÿÿÿdddFFFúúúÿÿÿúúúÜÜÜdddÒÒÒÒÒÒFFF›››dddÿÿÿúúúúúúúúúFFFdddFFFÿÿÿdddúúúÜÜÜdddÒÒÒÿÿÿÜÜÜFFFúúúÿÿÿdddFFFúúúdddÿÿÿÒÒÒÿÿÿ›››ÜÜÜúúúúúúFFFÿÿÿÿÿÿdddúúúÒÒÒÿÿÿdddúúú›››ÿÿÿÜÜÜÒÒÒÿÿÿFFFÿÿÿddd›››FFFdddÜÜÜFFF›››ÜÜÜÿÿÿúúúFFFdddÿÿÿÿÿÿÿÿÿFFFÜÜÜÿÿÿFFFÿ2$ôù [ù [$ôÿ2úúúÿÿÿÒÒÒdddÜÜÜúúúÿÿÿddddddÿÿÿúúúdddÿÿÿúúú›››ÿÿÿúúú›››ÿÿÿÒÒÒÿÿÿdddúúúúúúÿÿÿFFFÿÿÿÜÜÜÜÜÜdddúúúdddÿÿÿFFFdddÿÿÿdddFFFÿÿÿ›››ÿÿÿdddÿÿÿÿÿÿÿÿÿÿÿÿFFFdddÿ2$ôù [ù [$ôÿ2›››FFFÿÿÿddd›››FFFÒÒÒÒÒÒÜÜÜdddúúú›››ÿÿÿFFFÿÿÿ›››ÿÿÿdddúúúFFFÿÿÿÜÜÜÒÒÒúúúdddÜÜÜ››››››ÿÿÿFFFÿÿÿdddFFFÿÿÿÜÜÜŒŒŒ››››››ÜÜÜFFFÿÿÿdddŒŒŒÒÒÒdddúúúúúúúúúdddÿÿÿÿÿÿÿÿÿÿÿÿdddÒÒÒÿÿÿÜÜÜÒÒÒdddÒÒÒúúúdddÿÿÿúúúÿ2$ôù [ù [$ôÿ2FFFÒÒÒFFFFFFÿ2$ôù [ù [$ôÿ2dddÜÜÜÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÜÜÜ››››››ÜÜÜ››››››ÿÿÿdddúúúFFFdddÿÿÿFFF›››ÜÜÜ›››úúúdddÒÒÒÜÜÜFFFdddÿÿÿFFFÜÜÜ››››››dddÿÿÿFFFŒŒŒÜÜÜÿÿÿÿÿÿFFFÜÜÜÿÿÿúúúFFFdddÿÿÿFFFúúúdddÿÿÿÒÒÒdddÿÿÿFFFúúú›››FFFúúúÿ2$ôù [ù [$ôÿ2ÜÜÜÒÒÒÑÑÑÒÒÒÒÒÒúúúúúúFFFúúúÿÿÿdddúúúúúúúúúFFFdddÿÿÿFFFšššFFFÿÿÿ›››úúúúúúÿÿÿúúúÿÿÿÿÿÿdddÒÒÒÿÿÿdddFFFúúúÿÿÿdddÿÿÿÿÿÿÿÿÿ››››››FFFÿ2$ôù [ù [$ôÿ2ŒŒŒúúúúúúÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒúúúúúúúúúdddÜÜÜúúúÿÿÿúúúFFFdddÿÿÿFFFúúúÜÜÜÿÿÿÿÿÿÿÿÿFFFÜÜÜÿÿÿFFFúúúÿÿÿdddÒÒÒúúúÿÿÿÜÜÜúúúFFFdddÿÿÿúúúFFFÜÜÜÿÿÿÒÒÒdddÿÿÿúúúÒÒÒdddÿÿÿ›››ÿÿÿÿÿÿÿÿÿdddÒÒÒdddúúúÿÿÿFFFÜÜÜFFFÿÿÿÒÒÒÿÿÿÜÜÜúúúŒŒŒdddÜÜÜúúúÜÜÜÿ2$ôù [ù [$ôÿ2úúúÒÒÒÿÿÿdddúúúÿÿÿÿÿÿÿÿÿdddúúúÒÒÒFFFúúúFFFùùùÿÿÿFFFÜÜÜFFFFFFFFFddddddFFFÿ2$ôù [ù [$ôÿ2ŒŒŒŒŒŒÒÒÒÒÒÒÒÒÒÒÒÒ›››FFFÒÒÒÒÒÒúúúÒÒÒFFF›››ÒÒÒÒÒÒÒÒÒFFFFFFÒÒÒdddFFF›››ÜÜÜdddFFFFFFÒÒÒÒÒÒÒÒÒŒŒŒFFFFFF›››úúúFFF›››dddFFFdddFFFFFFFFFFFFŒŒŒŒŒŒddd›››ÒÒÒÿ2$ôù [ù [$ôÿ2dddúúúÒÒÒ›››ÜÜÜúúúdddþþþÿÿÿFFFúúúÿÿÿFFFÿÿÿFFFÿÿÿúúúÜÜÜúúúFFFÿÿÿÿÿÿÜÜÜÿÿÿdddFFFÿ2$ôù [ù [$ôÿ2ŒŒŒúúúúúúúúúúúúÒÒÒúúúFFF›››ÜÜÜúúúÜÜÜddd›››FFFÿÿÿÿÿÿFFFÿÿÿdddFFFÿÿÿ›››ÿÿÿÜÜÜÒÒÒÿÿÿFFFÜÜÜFFFdddÜÜÜ›››FFFdddÿÿÿÒÒÒÿÿÿ›››ÿÿÿdddFFFúúúÿÿÿdddúúúFFFÿÿÿdddúúúúúúúúúÒÒÒÜÜÜÒÒÒdddÿÿÿÿÿÿFFFÿÿÿÜÜÜÒÒÒúúúÜÜÜÿÿÿÒÒÒÿÿÿÿÿÿÿÿÿÜÜÜúúúFFFúúúÒÒÒdddFFF›››ÿÿÿ›››ÿ2$ôù [ù [$ôÿ2›››ÒÒÒúúúÒÒÒdddÒÒÒúúúdddÿÿÿÒÒÒÿÿÿ›››ÿÿÿFFFÿÿÿÜÜÜÒÒÒÿÿÿÿÿÿÜÜÜdddÿÿÿÒÒÒúúúFFFÿÿÿÿÿÿFFFÿÿÿ›››ÿÿÿÿÿÿÒÒÒdddÜÜÜÒÒÒÿÿÿ›››ÿÿÿúúú›››ÿÿÿdddFFFÿÿÿdddúúúúúúŒŒŒÿ2$ôù [ù [$ôÿ2FFF›››ÒÒÒÒÒÒdddÜÜÜúúúÒÒÒŒŒŒ›››FFFúúúúúúÿÿÿdddÒÒÒÿÿÿdddŒŒŒÒÒÒÿÿÿdddúúúFFFúúúúúúdddÿÿÿŒŒŒFFFÿÿÿdddÒÒÒdddFFF›››ÿÿÿdddFFFÿÿÿÿÿÿdddFFFÿÿÿÿÿÿÜÜÜÒÒÒÿÿÿdddFFFÿÿÿdddúúú›››ÜÜÜúúúÜÜÜdddúúúÿ2$ôù [ù [$ôÿ2ŒŒŒFFFdddFFFÿ2$ôù [ù [$ôÿ2dddÜÜÜÒÒÒÒÒÒFFF›››úúúúúúdddÿÿÿFFFÿÿÿdddúúúFFFdddÿÿÿúúúFFFdddÒÒÒÜÜÜÿÿÿFFFÿÿÿdddúúúdddÿÿÿFFFúúúŒŒŒdddÿÿÿFFFÜÜÜFFFÜÜÜdddúúúdddÿÿÿÿÿÿFFFdddÿÿÿÿÿÿÒÒÒÜÜÜÿÿÿFFFdddÿÿÿFFFÿÿÿ›››úúúdddÿÿÿÒÒÒdddÿÿÿFFFÿÿÿÜÜÜÿ2$ôù [ù [$ôÿ2ÛÛÛúúúúúúFFFÿÿÿ›››ÿÿÿFFFdddÿÿÿFFFúúúÿÿÿdddFFFúúúdddÿÿÿÿÿÿFFFŒŒŒdddÿÿÿÿÿÿúúúÜÜÜÿÿÿFFFÜÜÜÿÿÿÿÿÿFFF›››ÿÿÿ›››ÿÿÿ›››ÒÒÒ›››úúúÿÿÿ›››ÿÿÿFFFdddÒÒÒúúúÿÿÿ›››ÿÿÿÒÒÒÿ2$ôù [ù [$ôÿ2ŒŒŒúúúúúúúúúúúúÜÜÜdddFFF›››dddÿÿÿÒÒÒúúúÿÿÿdddúúúÿÿÿúúúÿÿÿÜÜÜFFFúúúÜÜÜÿÿÿÒÒÒÿÿÿdddÒÒÒdddFFFÿÿÿÿÿÿFFFúúúÜÜÜÿÿÿ›››ÿÿÿÒÒÒÜÜÜÿÿÿÒÒÒúúúÜÜÜÿÿÿdddÒÒÒÿÿÿÿÿÿFFF›››dddÿÿÿÒÒÒÜÜÜFFFÿÿÿÿÿÿdddúúúFFFdddÿÿÿÒÒÒúúúÜÜÜÿÿÿÿÿÿÒÒÒÜÜÜddd›››FFFdddÿÿÿFFFÿÿÿÿÿÿÿ2$ôù [ù [$ôÿ2ÜÜÜFFFùùùÒÒÒFFFúúúÿÿÿdddúúúdddÿÿÿdddÒÒÒúúúdddFFFúúúÿÿÿÜÜÜÿÿÿFFFúúúdddFFFdddÿ2$ôù [ù [$ôÿ2FFFdddÿÿÿ›››úúúdddÜÜÜÒÒÒÒÒÒFFFúúúúúúúúúúúúFFFdddFFFúúúÿÿÿdddFFFúúúÿÿÿdddFFFdddFFFdddFFFdddúúúúúúúúúúúúFFFdddFFF›››úúúúúúúúúÿ2$ôù [ù [$ôÿ2dddúúúdddFFFÜÜÜúúúÒÒÒ›››ÒÒÒÑÑÑÿ2$ôù [ù [$ôÿ2úúúÿÿÿFFFúúúúúúFFF›››ÜÜÜddd›››ÜÜÜ›››ÜÜÜ›››ÜÜÜFFFdddFFFdddÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2dddÜÜÜFFFFFFFFFdddFFFFFFFFFúúúúúúdddÜÜÜúúúdddÿ2$ôù [ù [$ôÿ2úúúúúúÜÜÜdddFFF›››ÿÿÿ›››ÜÜÜ›››ÿÿÿÿÿÿFFFdddÿÿÿúúúúúúúúúdddFFFÜÜÜdddúúúúúúúúúFFFÿÿÿúúúÿ2$ôù [ù [$ôÿ2ÒÒÒÒÒÒÒÒÒÿ2$ôù [ù [$ôÿ2úúúÿÿÿ›››FFFdddÜÜÜúúúÒÒÒ›››ÜÜÜúúúÿÿÿdddFFFÿÿÿÿÿÿúúúúúúFFFddd›››FFFúúúúúúÿÿÿdddúúúÿÿÿÿ2$ôù [ù [$ôÿ2ÿ2$ôù [ù [$ôÿ2úúúúúúÒÒÒÒÒÒ›››ÜÜÜúúúÜÜÜ›››ÜÜÜÿ2$ôù [ù [$ôÿ2ÿ2$ôù [ù [$ôÿ2›››ÜÜÜ›››ÜÜÜÿ2$ôù [ù [$ôÿ2ÿ2$ôù [ù [$ôÿ2ÿ2$ôù [ù [$ôÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2ÿ2$ôù [ù [$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ôù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [ù [xmorph-20140707+nmu2/example/AA/circuit.ppm.mesh0000664000000000000000000000261512356304631016100 0ustar M2 12 9 0 0 -1 1290 0 0 1964 0 0 2176 0 0 2209 0 0 2180 0 0 2185 0 0 2255 0 0 2358 0 0 2428 0 0 2496 0 0 2550 0 -1 0 18 0 1184 70 -1 1710 120 0 1911 216 0 1963 343 0 1981 487 0 2033 662 0 2131 917 0 2264 1262 -1 2395 1318 0 2459 1325 -1 2550 967 0 0 0 0 850 83 0 1394 215 0 1610 447 0 1670 724 0 1749 992 0 1856 1275 0 1985 1570 0 2141 1775 0 2339 1715 -1 2389 1775 -1 2550 1710 0 0 0 0 621 125 0 1132 311 -1 1318 687 0 1364 1110 -1 1520 1455 0 1675 1759 0 1830 1985 0 1979 2090 0 2108 2098 -1 2349 2098 0 2550 2105 0 0 57 0 447 273 0 845 542 0 1090 929 0 1229 1393 0 1350 1840 0 1499 2130 0 1665 2265 0 1835 2298 0 2011 2298 0 2311 2283 0 2550 2294 0 0 301 0 325 522 0 637 787 0 917 1142 0 1132 1605 -1 1192 2190 -1 1330 2404 0 1511 2454 0 1715 2420 0 1926 2329 -1 2288 2363 0 2550 2389 0 0 767 0 241 837 -1 466 1039 0 745 1350 0 977 1830 0 1054 2413 0 1179 2559 0 1373 2559 0 1623 2521 0 1951 2451 0 2308 2444 0 2550 2454 0 0 1501 0 210 1164 -1 401 1581 0 616 1705 -1 777 2040 -1 947 2439 0 1119 2559 0 1340 2559 0 1634 2551 0 1988 2530 0 2330 2516 0 2550 2515 0 0 2550 -1 134 2550 -1 352 2550 0 552 2550 0 722 2550 0 904 2550 0 1100 2550 0 1344 2550 0 1653 2550 0 2008 2550 0 2341 2550 0 2550 2550 -1 256 256 0 0 256 256 108,800000 115,200000 147,200000 115,200000 128,000000 204,800000 circuit.ppm xmorph-20140707+nmu2/example/AA/circuit.pgm0000664000000000000000000020007412356304631015133 0ustar P5 # CREATOR: The GIMP's PNM Filter Version 1.0 256 256 255 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[Òÿú››ÜÒdd[[ÿÿÿFÜÿúdÒÜdF›ÜFÿÜF›úÒÒúÜdúÜdF›d›údÒÒÒúúú[[ÿÿÑÒú›Ò›[[ÒÿdFúdÿFÿÜúÒÒÒÒúFdÒÒÒÜdF›d[[FFÒdÒÒ[[úFúdÿ›FŒúúÒÒúúÜ›FdFÜ›FÒÒÒÒ[[ÿdFúúdú›Ò[[ŒÿdFÜúd›Fÿ›ÿFÜdÒdÜ›FÒÒúÒÜdÒdÿúdÜÒÒÜú›F[[ú›ÜFÒÒÜÒ[[ŒÒú››ÜŒFÒÒFŒ›FdÜŒFFŒÒÒÒÒÒÒ›FÒÒÒÒÒ[[úúFddF›d›ÜdÒÒú›FFúÒÒúÒd[[údFÒŒúÜd›FúúúúúÒÒÒÒFúúúÒÒúÒÒÜ››[[FÜÜŒÒF›úúúúúúFÒúÒdÜÒÒ[[F›úúFÜd›FúúdÜ››Ü››ÜúÒŒŒF›Ü››Ü›údÒÒÒúúú[[ÒFŒúFFFúdddFú[[ÜdúÿdFúdÿFdÿÒŒÿdúFúF›ÿ››Ü›úúúFÿ›úÜÿFÿ››ŒŒÜ›úŒdÿ›úŒdÿ›úúúÿ›FdÜ›F[[Fdú›ÿddÿÒÿÿÒÿFúúúúdÜ›ÿFÿúÿFúúFÜÿFÜÿÿÜúdúÿú[[dÿÿÿÿFúÜÿÒúÜÿÿÿÒÿÜFÿÿÿ›ÿÒÿdúÿdúdÜúFdÿ›FÜdúÿdFúÿdúFdÜúFÜ››Ü››úFúÜÿ›ÿÿÿFúÜÿ›ÿÿÿ›FÜdúúú[[ÿúdúÿFÿÿF›FdúúÿdF›úúúÿFúdúú›[[›ÿÿÿFFFF››FFFFŒÒÒÒÒÒFdFFÒÒdÜÒÒúúŒFFdFFÒÒFFF[[ÿdFÿFÿÿÿÿÿÒÿdÿdFÿúFÿúdÿúúdúúúFdÿúúÿúÿ[[úÒdÿÿFdÿÒÿ›ÿÜFÿÿÿdÒÿÿÿÿÿÿ›ÿÜúÒdÿÿÒdÿFúÿdF›Üd›FÿúúúdÜ›Fú››ÜúúúÿÿFdÿÿFdÿúÒÜFdÜ›FdFdÿúFdÿ[[ÿ›ÿÜÿ›ÿdÒÿÜFþÜÿFÿÿÜd›ÿúúFúdÿdFÜdùúÿdÒúÿÒÜ›d›ÿÿÿFÿFÿdF›Üd[[FÿÜÒÿÜŒŒFÿÜFÜFÿdú›ÿúFÿd›FÿdFúúú›ÜŒF›Ü›FÿdÒÿÜÒÿÜFÿÿdÒúdÿúdÿÒúdÿúú[[FÒFddF‹ú[[dÿFŒdÿFÜÿÿFÜÒŒÿ›úÿdúFÜdúúúÿ›FÜFÜ›úÜdúÜÿFŒÜFúF›ú›FúFúúú[[ÿ›ÿFÜÿFÜFÿÿÒÜÿÿÿÿÿFdÿFúúFdÿFúÒ›Fú›dú›ùúFÜÿÜÿúúúdÜFÜ[[ÿÜÒúÜÿ›úÜÿÿFdÿÿÿÿÿÿÿÿÿÿÜÒÿÿdÒÿdFúÿ›údÜFúÿdúÿ›FÒF›dÜúÿdúú›FúFÿÿdúFÿ›ÿÒÜÿdúFdÜúÜdÒÜd›ÒÿdÒ[[ÿúdFdÿÿdFFF›ÜFdÿúFÜúdúÿÿdúúF[[ŒFFdF›ÜdÒÜFŒŒFFŒÒFFÒŒFÒÒFŒŒFFŒŒFÒŒFÒŒFFFdÜ›FF›ÒÒÒFdF›[[ÿdÜ›FÛdFÿúddúúdFdùÿFúÜFdÿÿFÿÒúú[[úÒdÿÿFÜdF›dÿÿÿÿÿÿÿÿÿÿÿÿFdÿÿÿFÜÿÿFdÿú›ÿFúÜÿúÒdÿúÜdÒÒ›FúúúúFÿdúFÜÿúÿdÒÿÿÜÒÿÿÜúÜd›FdÜÒÜ›Ò[[›ÿúúdÑÿÿÿÿ›ÜÒÿÿÿdFÿdú›ÿdFÿ›ÿ›úúÜ›ÿFÿÿdúFúÒFÜúúF›Üd›F[[FÿÜúúúúÒÿÜÒdÒÜŒFÿdFÿÜ›FúúÜdúdÜ›údÒdÒdFúdÜ›FúúúF›úúÒ[[úFÒF[[ÜFúúFdÿúFdÿÒdÿÿÒdÿFŒÜFÜdúFdÿF›úF›ÿ›FÜFdÿÒdÿF›ÿdúFdÿúFÜdúúú[[ÿúÜúÿdúÜÿFÿ›ÒþÿÿÜFÿFdÿšÿFÜÿFdÿÿFF›údÿúú›ÿ›ÿdúŒÜFdÿFdFÒ[[ŒÿdúFÜdúÿúÿÿÿÿÒÜÿÿÿFÿÜFÿÿÿÿÿÿÜFúÿÜÒúÜÿ›úÿdÒÿÿúúúÿdúdÜúÿdÒúÿÜFÿÿúdÿÒÜÿÿÒÿdúÿúÿ›Ü›[[Òÿ›ùÿÿÿÿÿFúÿdúFdÿÒdùÿFÿFúF›FÿdÿFdFFF[[›Ü››ŒFdÜÒdFdF›››FFFF›FŒŒFdFFFF›ÒFŒŒFFdFŒÒFŒŒF›FdFdFÜÒÜ[[úúFÿÿÒÜÿÿúÿÿdFúdÜúÜdddÿúÿÿFdÿFÿÒ[[dFÿdú›ÿFúÿÜÒÿ›ÿÜÒÿÿÿdFÿÿÿÜúFÜÿFdÿFdÿúÒÿÜFÿÿÜú›ÿÜúFdÿúFÿÿÒÿd›Fúúÿúÿúú››ÿÒÿÿdúÒÜÿÒÿ›ÿÜÒÿ›ÿdFÿÿÿd[[FÿúšÒÿÜFÿdFÿdÜÿÿþÿÿ›ÿFÜFFúdFúdÿFÿÿþ›údFdÿdÿÒdFþ›ÿÒÿÜÒF[[ŒFÿdŒÒÿÿdÒÿÜÒúdÿFÿdŒú›ÿúFÿdFÿdúdÜ›FÿdFúÿdFúÜdŒFÿdŒŒ[[ŒŒFÒ‹[[dÿFÜÿÒdÿFŒdÿÒÜÿÒdÿFúÜÿFŒdÿFÜ››ÜdúdÿÒÜÿFúÜdúFdÿúFdÿF›dÿFŒdÿFŒ[[›ÿ›ÒdÿÿÿÒFÜFdÿ›ÿÒÿšÿÒú›ÿÜÿÒÿúÒúÿÿÿÿþdúúFúdFúdùÿšFÛÿÒdÿ›ÿdÿFÜ[[dÿúÒÿdFÿÿÜÒÿÿÿ›ÿFÜÿÿÒÿÜFÿÿdFÿÿFúÿdÒúÜÿ›ÿÒÿÜúFúúú›FdÿFÿd›FdÿúÿúÿúFdÿÒúÜÿ›ÿÒÿÜÒúdÿÿÿFÜÿ›ÿFdÿÒ[[ÿFÒúdÿÿÿFdFdúúÿdÿúÜúúÿFdFdúdúÿÜÒÿdÿÿ[[ÒFFÒŒF›FdFdFFFFFFFÒŒFúÒÒÒÒÒúúFFFFF›ÒdF›Fÿ[[ÿddÿFÿÿÿFÿúÿúÿÿFÿúÒdÿúFdFdFúÿÿÒdÿÿÿ[[›FdÿúÿÿFdÿÿFÿdÒÿÿdÒúÜÿúÒÜÿúFdÿúFdÿúÒÿÜÒúÿdú›ÜÒdÜFúdÿFÜdFúdÿúÿúúúúúÒÜÿúFdÿÒÿÿÿÿÿFÿdÒÿÿÿ[[ÿFdÿÒÿ›ÿÒdú›ÿÿ›ÿdúÿdÿdFÿúÿFÿúÜdúÿÿÿÿFúú›ÿúdÜFdÜFÿ›ÿdFúÿFÿÜÿ›ÿÑ[[údÿFúÿdÒÿÜÒÿdFÿdFÿdú›ÿÒÿÜFÿdFÿdŒúÒFÿÜÒúdÿFÿÜ›FdÜ›FÜdF›ÿdFÿdú›ÿÒÿd[[FFŒÒ[[ŒúF›úúŒdÿFdÿFdÿFdÿFÿ›údÿFdÿFdÿÒdÿFúF›ÜÿÒdÿFúdÿÒÜd›FdÜ›FdÜúdÿFÿ›údÿÿF[[ÒÒÒdÿÒÿ›úþú›ÿFdÿúFdÿFÿdÿFdÿdÜúÜÿ›ÿÒÿdúÿ›FdF›d›FúúFdÿÿÿÿÿ[[úÿ›ÿÿÿdúÒÒÜ›ÿÒÿÜúÒÜÿúÒÜÿÒúÿÜÒúÿdFúÿÜÒúÿÜúÒÿÜFúÿÜúFÜdúÿdFÿÿFúÜÿFÿÿúÒÒÒF›dÿúFdÜFúÜÿÿÿÿÜúFÜÿÿÿ[[FdFúÜÿÿFÿÿdFÿùÿúúúÿdúúúúFúÿd[[FŒŒFúŒFFŒúFdFFFFFFFFFFFdFdFFdÜ›FdFdFFddFúÒúúúúÒÒFFF›Üÿ[[dFd›ÿúÿÿdÿúþúddFúÜÒúdFÒúFÿÿFÿÿ[[ÿú›ÿÿÿÒdÜÒÒúdFdÿúFdÿúÒÜÿúÒÿÜúÒdÿúÒdÿúÿúdÿúÒdÿú›ÿÜúFdÿúÿÿFÜÿúdÜ›FúÒÒúdÜFúÜÿÒÿÿÿÿÿÿ›ÿdFÿd[[ÜÿÑÒÿúÿd›ÿÿÿ›ÿdÿ›ÿúFdFþúdÿÜFúÿd›Fú›úÒÒÜdú›ÿdÿÿÜ[[ŒFÜúú›FdÿúFdÿú›ÿFÿdFÿdFÿÜFÿÜ›FdÜFúdÿFÜŒú›ÿFúdÜÒÿdFúúúÒÒÒÒúFÿdŒ[[ŒúŒÒúÒ[[ŒdÿÿFdÿúÿdFúÿdFúÿ›údÿFdÿFdÿFÜFÜd›FúF›dÒŒÿ›úúF›dÒúúúúÒÒúúFÜÿÿFÜÿF[[ÿÿÿ›FÜ›Fúÿú›ÿ›úÿ›ÿFÜÿÿF›úÿ›FúFdÜúdÿÿFÜÒÒ››F›ÿÿÿÿÿÿÿÿÿÿÿ[[Fÿ›ÿÿÜÒúúF›dÜFd›FdÜ›FdÿÒúÿÜúFdÿÒúÜÿdÒÿÿúdÜúdÿFúÿ›ÿÒÿdF›ÜdúÿÜFúÜd›FÒFdFdúÿdÒÿÿÿÿÿÿdÒÿÿÿÿÿÿ[[ÿúÿdFúdFúúÿdúÿÒÒÜÿFÿÿFú›dú[[ÒŒFFFÒ›FdFÒÒÒÒFdÒÒFddFú›FFŒÒF›ÜdFdÒÒdFFŒÒÒŒFdFdFFF[[ÿúÒúdÿFdFdúdÿFÜdÿFÿ›ÿúFdFdúÿÿÿ[[ÜúdÿÿÒdÿÜúÒÿdú›ÿÜúFÜdF›ÜdF›ÿÿFÿd›FÿÿÿÿÿÜúFÜdÒÿÜF›ÜdF›ÿúÜdF›dÿÒÿ›ÿ›FÜdúdÿúÒÜÿúFdÿúÒdÿÿÿFÜÿÿÿÿÿ[[ÿÿþÿÜÿ›ÿFÿÜFúúúúúÿÿ›F›úŒúúúúÿdÒÿdFšdÿdúdFÜÿÿÿÿÿÿÿÿÿÿÿþÿÿ[[FÿÜFÜFÿdŒú›ÿú›ÿúFÿdÒÿdúdÜú›ÿú›ÿúFÿdFúdÿú›ÿŒúú››ÿFÿdú›ÿFÿÿÿÿÿÜÒÿÿd[[FFFŒÒF[[FdÿFdÿFŒdÿ›úÿ›úÿdúFdÒúF›ÿ›úŒdÿ›úÜdúdÿF›Ü›úŒúÒdú›Œÿ›úÜFÜF[[Fÿ›úÿÿÒÜúFdÿúFÿúÿFúÿFdÿúúúFúúúdÿFÒdÿÿÿFÜÿFÛÿÿ[[úFdÿÒÿÿÿÒdÿúÒdÿ›ÿÿÿFúÿdFúÿdúÿÜFúÜdúÿÿÿÿÒÿdFúÜÿ›ÿÿÿF›úFÿÿúú›Fÿ››ÒúÒúÜ›úÜd›FÿdÒÿÿÿÿÿÒÜÿdÒÿÿÿÿÿÿ[[ÿÿÜFdúFFFÿdúÿdúdÜÒd›FdÜúFúÿÒÿd[[ÒÒF›ÒF›FFFFdFFŒÒdFFdFFÒŒFFŒŒFÒŒFúŒFÒÒÒúFŒÒúÜddFFF[[ÿúþFÿÒdFdúFúÜFdFF›úúÜdúFÿÿd[[ÿdFúÜÿÿÿd›FdÿúÒÜFdÿúFÜÿÒúÜÿÒÿÿÜF›dÿÒÿFÜÿúúÒÿ›ÿÿúdÜúFÜÿúúúÜdúúÒúÒúúú›FúFúdÿÜÒÿ›ÿÜÒÿFÜÿÿÿ›ÿÿ[[›ÿÿÿÜFúÿd›ÿÿFÿdFÿÿdú›ÿFùdÒÜÒÿÿÒÿdÿÿdFúúúúÒÒú›ÒúdÿÜÒÿÿÜ[[dFÿÿdú›ÿFÿÿdÒúdÿÒÿdFÿdú›ÿÒd›FÿdŒFÿ›ÿÒdFúdÜ››ÿ››ÜúÒF›Ü››ÜúÜdFÜŒÒdŒ[[dFFFF›ÒddFF[[dÿÿÿÿÿÿFÿ›úÜFúF›ŒdÿÒŒÿ›úÜFdÜúÿ›ÿFÜÿÿFÜÿF›dú›Ü››úúÿ›úÜ››úF›ÜÿFÜÿÒ[[dÒÿdFÿFdÿúúúÿþÒÿúFdÿÜd›FÜFÿÒúÒÿdúÜdÒÒúÜúFúÒÿFdÿFdFŒ[[ÿFÜÿÒúÿd›FÿdúFdÜúÿ›údÿFÿÿÿ›ÿÒÿdF›ÿdúFÒF›ÜÿÿÒÿdúÿdÒdúúÒÒúÜdF›dÜF›úúÒúÿdÒúÿdFúÜÿÿúdÿÿF[[úF›ÜdFÿúÿúdþÿÿFFúÒFúúÜÜFúÿÿÿ›[[Üd›FFÒŒFÒÒF›ÜdFŒÒFFÒŒFÒÒÒÜdFdFŒÒÒÒFŒÒÒÒÒŒFúŒFdF›FF›FFÒ[[ÿdÜ›FÜdúdÜÿÿú›FFddÒÒddúÜÿÿÿÿÿF[[dFÿÿÿÿÿÿ›ÿÜúÒÿdúÜdF›ÒÒú›FÿÿÿÿÿÜúFÜdúFÿdÒÒF›dÿúÿÿFÜFúÒÒÒú›FÜdFúÿdú›ÜúÜÿÒÿ›ÿdÒúÜÿFÿÿÿFúÒ[[FÿFÿ›ÿúdÜ›FúúÜÿÿdúFÿ›FÛúdúFÜÿFúúÒÒFúúÿúÿdFdú[[ŒFÿd›FúúÜdF›dÜú›ÿdú›ÿÒdF›ÜdúúFúdÿdÒÿÿdÒúdÜúÒ››Üú›ÿFÿdŒFÿdŒFÿd›úd[[›dÒÒŒFFŒF[[dÿFÜÿFÿdúFdÿFÿÿdFúÿ›úd›FÜFdÜ›FúúFdÿFúdÿÒdÿFúúúÿ›úÿ››dÿFdÿFdÿÒŒdÿFŒdÿ›ú[[dÿÿÒ›FúFdúúúÜ››ÿú›Üúÿd›ÿdú›úúúúúÿ›Fÿ›ÿÿFÿ›ÿFÜÿÿÜ[[FÜÿÿÿÿÜÒÿÿdÒúÿdúÿ›FdÜ›FúÒdÜúFÒÒÜdúÿFúÿÜFÿÿ›FÜdF›dÜ›FdÜúFdÿúÒÿÜÒúÜÿFÿÿÿ›údÿÒúÜÿ›ÿÿÜÒ[[FFdFúÜFùdFúFdúúdúÿdúFÿFúÒÿdúdF[[ÒFÜdFFdFÒÒÒÜÒŒÒÒÒdÜÒÒÒdFFFÒúÒÒÒÒÒÒFdFdF›ÒFFFŒ[[dÿFdÿúúdúÒÜúFÿdFúúúúúdÿúFÿFdÿd[[ÿdúÿ›ÿÿFdÿÒdÿÜúFdÿÒúÜÒÿdFúÜdFÜúÒÒú›FdÜFúÿÜúFdÿúFÿúÒúdÜ›FÒ›FdÜÒÿúÿÿFÜÒÿdF›dÿÒÿ›ÿÿÿÒdÿ[[úÿÿúdú›ÿÿÿÿ›ÿúúŒdÜFúdú›FúÿúdÿdÜFÜd›dÜF›dFúFÿÒÿ›ÿÿÿ›ÿúÿdÒÿÜùd[[ŒúFdÿFÜú›ÿFÿÿdFÿÿd››ÿ›údF›ÜúúFÿdú›ÿúFÿd›FÜdF›úúÜdúúF›dÜFúÿdÒÿÿdFÿÿdú›ÿŒFÜ[[FFFFFÒŒÒÒúÑd[[ÒF›ÿ››ÜFÜÿFÿ›ÿFdÿFÜ›Fdú›úúdÿFÿ›úÿdúdÜ›FdÜúú›FúúdÜ›FúúdÿFÜÿFÜ›údÒ[[ÜÒúdÿÿFÜÿ›úÿFÿ›úú›ÜÒ›Fÿ›úúúFú›FdF›dÒFúÜd›úFdÿÿÿFÿ›úúúFdÒÿ›[[dÜúÿÿÿÒdÜúFÜdÒÿÿdúÒÿdúÿÜúFúÒÒÒÒF›dÿúFdÜF›dÜF›ÒÒÒÒÒÒdÜ›FÒÒdÜFÿÿÜÒÿÿdúFdÿFúÜÿÿÒÜÿFú[[dÿFdúFÿÿ›ÿÒÒúdúÿdúÿdúúúFúdÜdÒdúdúÿÜÿd[[›FdFFŒÒÒúFFF›ÒŒFÒÒÒÒÒÒÒÒÒ›FÒÒÒÒFŒŒFÒ›FdÜÒÒ›FdFÒÒFdFFFFŒ[[›þFÿdÜÒÿ›þÿÒÿFúÒÒúúFÿÒúþFÿúd›úúdúFÿFúÜÒdÿúþFdÒdÿ[[údÿÒÿ›ÿ›FÜdÒdFdÿúdÿFÿ›ÿdúúdÒÒÒÒ›FÿdF›ÿdú›ÿdFúÜdF›úÒdÜú›ÿF›ÜdúFÜÿÿÒdÿÜúÒÿdFúdÿÿÒÿdúFú[[ÿÒÿdÒúÜúÿdúFÿdÿdFÜÒÒÒÒ›úúFÿdùúúúÒdFÿdúúFÿÿdÿÿÜÿ›ÿú›ÿÜþÿú[[››ÿŒúúúúúFdÿFÿ›ÿŒŒÒÒÒÒúdÜú›ÜŒ››ÿú›ÜúúŒú›ÿÒdFÜFÿdFÿÜFÿdú›Ü[[ŒÒúÒÒÜFFFFFd[[dÿ›údÿFúúúÒdÜF›ÿ››ÜFÜÿFúúÒÒÒ›FÜ››Œÿ›úÿ›úúúŒÿ›údÿÿFdÿÿÒdÿÒÜÿÿFdÿÿFÜ›F[[Fú›úÒúdúÿúÿÿFdÿ›údÿÒÒÒúFúúÿúúFdÿF›ÿÿÿÜFÿ››ÿÿ[[ÿFdÿÿÿÿÿF›dÿúFÜdÒÒúÒúÜdúFdÿdÒÿÿdúFÜd›FÒÒúúdÿúFÿ›ÿÒÿdFúÿd›FÜdF›ÿ›úÜdFúÿÜÒÜFúÿÜFÿÿdÒÜúÒdÿÒ[[ÿúdú›FÒÒFúFúdúú›ÜÒÒúÿFùFdÿFúFú[[FFÒÒÒÒFŒŒFú›FFŒÒÒÒúúÒŒFÒÒÒÒÒÜdFFFFÒÒÒŒFFŒÒFFFF›FFÒ[[ÿÿFÿFd›dúdÿFúúÒ›dÜÒ›FdÿÒdÿÿdF›dFÿFdddÿd[[ÿdFÿÿÿÿÿFÿdFúÜdF›úúÜdú›ÿ›FÜdF›úúdÜÒÜdúúFúÜdFÿ›ÿÜúFdÿúÒÿd›FdÜúú›FdÿÒÿ›ÿÿÿFÜÿÒÿ›ÿÿÿÿ›ÿÿÿFÿdúúd[[ÿ›ÿúúúúFdúúdFdÜÒdÜúúFÜúÿd›ÿdúúÿdFÿ›ÿÒÿÜÿÿÜÿ›ÿÜ[[Òÿd››ÿú›Ü››ÿŒú›ÿúFdÿúÜdÒÒúÒÒÜd››ÿŒú›ÿFÿdúú››Üú›ÿŒÒÿdŒŒÒÿdŒ[[ŒFFŒFŒFF[[Œÿ›úÿ›úÿ›údÿÒdÿ›úÜdFúúÒÒÒúF›dÿF›ÿ›úÿ›úŒúúÜ›úÿ››ŒdÿFŒŒdÿFŒ[[dFúúFÿúFú›ÿÒÜúúú›FÑúúúFdFúÿFÜùúúFÿ›úÜÿÿÒÿÿdÿ›údÿÒ[[Ü›údÜFúÿdFúÿdFúÿÜFÿÿ›FdÿFdF›úF›ÒúÿúFdÜFúdÿÿÿÒÿd›Fÿ›úÜdÒú›FdÜúFdÿ›ÿFdÿúÒÜÿ›ÿÿÿÿ›ÿÒÿÜúFÿ›ÿÒ[[úFdúúúFÒúÒdFFùþdúÿÒÿFúFúÿÜÒúÿdFÿdFÿÿÿÿÿ[[úFŒÒFFFFFFÒÒÒÒÒŒFdFÒÒFÜFdÒÜdFŒÒFŒŒFÒÒÒÒÒÒFFFF›ÜdF[[ÒÜdÿÿÿFdúÜF›FdÒúFdFdF›úúúúÿFdÿúÿÿF[[úú›FdÿúFdÿúFdÿÒÿ›ÿÿÿFÿdFúdÿÿFÜdúÜdúdÿÒÿ›ÿdF›ÿÿÒÜFÒFúdÿF›úúdÜÒÒÒdÜFúÜÿÒÿ›ÿÿÿFÜÿúFdÿÒÿ›ÿÜ[[úúúÿdÿdúdÒÿÜÿ›úÜFúú›FÒúÿdúdÿFÿÿÜÿdúúÜd›FdÜFÜdúÿdÒÿþÜÿ›ÿdúÜdÒÿ[[ÒdÜú›ÿÒÿÜú›ÿŒÒÿdFÿÜúúF›ú››ÿŒúFÿdFÿÿdúÜdFÜú›Ü›FúF›ÜdF›úFÿdŒÒÿdúFúŒ[[ŒFFFFŒFŒÒÜÒ[[úFúÿ›ÿFÜÿFÿ›úŒdÿÿFÜÿúFÜdúÜ››ÜdúFÜÿÿÿÿ›FdÒÿ››ÜdúÒÒdÜúFÜÿÿFŒdÿFÿdúdÒ[[úFÿÒúÿFÿÿÿÿÿdF›FúÒFdF›ÿúú›FdÜ›FdF›dÿÿÿÿÿÿ›ú›ÿ[[ÜdFúÿdúÿdÒúÿd›FŒÿ›údÿÒdúÿF›úúŒdÿúÿdÒdÿFúdÜúúF›ÜdF›úúÿdÒÿÿ›ÿÒÿÜúFdÜFÿÿÜFú[[úFúúÜÿFúdÜdÑdFúFdÑúúÿþFúdF[[›FFFFdÒÜ››ŒFFŒÒdFÒÜdÒŒd›ÒdFÒ›FFŒÒFŒŒFÒÒdÜúFFFFÒÒF›[[úÿúúÿ›ÜÒÿFÿÿdFú›ÿúÿdFÿ[[ú›ÿÜúFÜFdFdÜFÿdÒÿÜFÿ›ÿÿÿFdÿúFdÜF›úÒdFúÜÿúÒdÿÿFÿdú›ÿF›úÒÒFúdÿ›FdÿúÒÜÿúFÿdFúÿÿúÜd[[ÿÜFdŒFÿdFÿÿdúdúÒú›ÿd›ÿÿÿúúdÜúÿdFúÿdFÿdÿdú›ÿF[[ŒÒÿÿdÒúdÿúFúŒÒÿÜúFúúdÜFÿdFÿÜÒÿdŒú›ÜúÜdFÜú›ÿFÿÿÿÿÿÿdú›ÜFÿdFúú[[ŒŒúŒFŒ‹FFÿFŒÒ[[ŒÜÿÒdÿFÿÿdúÜÿFŒŒdÿFÿdúFdÿF›ŒÜÿÒÜÿFdÿFÿ››úF›ÜÿFÿ›údÿÿÿÿÿÿFÿ››ÜFdÿú[[ÿÿÑÿ›ÿÒÿdFÜþÿFÜÿÿFÿÿFÿÿFÿúÿdúÿÒ›ÿÿF›úúú›ÿúFÿÿÿdFúúdÿúÒ[[dÿ›ÿÿÿdFÿÿFÿÿdÒúÜÿ›ÿÿÿÿ›ÿFdÿÒúÿdúÿúŒÜ›ÿÒÿdFúÿdÒúÜÿúFdÜúÒúÿdÒúÿdFúÜÿúFdÜúÜdúFú›F[[ÿÜFdFdúdÒÛúdúdFdFúFÿúúdÿdFdÜFúúdúd›Fúÿ›[[ŒdÜdFÜF››ÒÒFFdFFŒŒŒÒFFFFFFÒÒF›ÜdFFFFÒÒFŒú›FÒ[[ÿdFdÿÿFÿÿÿFÜÿÒÿFÿFÿùdFdúÿÿÿúdÿÿÿFdÿÒ[[FÿFdÿÿÿ›ÿÜÒÿ›ÿÿÿÿÿÿdÒÿ›ÿdFÿFÜÿÒÿdF›dÿÒÿ›ÿÜúÒdÿŒ››ÿÜúúúFdÿúFÜd›FÜdF›ÿÿFÿÜúÒdÿúÒÜFÿdFúúúÜÜúÒ[[›ÿÜÿÛÒÿÿdFÿÿÿÿÿúÿÿÜÿúdFFÜúdF›Òúÿ›ÿdÿ›ÿÿÿFú›Ü›úÒ[[ÒÿÜŒŒŒÒdFÿÿdú›ÿŒFÜŒFúÿdú›ÿú›ÿúÒÒdÜÒÿdFÿÜFÿÿdÒúdÜFÿdF›úÒÒ[[FÒF›FÜÜŒÒÒÒ[[dÒŒdÿÒdÒdÿÿFÿ›ÿFŒdÒŒdÿFúúÿ›úÿ›úúF›Üd›FdÒÜFdÿFúdÿFdÜÒÒÒ[[ÒÿÿÿÿÿÒÿÒÿþÿFdÿúÜþÿÒÿ›FdFÿÛFúÿFÜúúFÿŒdÿFÿdÿ››Üú[[dÿFÿÒÜÿ›ÿÿÿÜFÿÿÿÿÿÿÿÜFÿFÜÿÿÿÜÒúÿdúÿÿ›ÿÒÿÜFúÿ›ÿFdÿúFÜdF›dÜ›FÜdF›ÜdúÿúdÿF›ŒÜdÒÿÿ›FdÿúúúÒÒ[[FÿþdÒÜFÿúdÿFÿÒÜúdúúdúúFdúdd›úÿdFúÒ[[›Ò›FúÜdFFFFF›ÜdÒÒÒÒÒÒÒúúÒú›FúŒŒÒÜFÒÒFŒÒÒÒÒ[[ÿÿúdFÿúFÿFdÿúúúú›FÿúFdÒÒ[[FÿÿdÒÿÿÿÿÿÒdÿÿÿFÜÿFúF›dÿúFÜÒÿÜÒúÿdFúÿdFúÜd›FdÜ›FÒúúÒdFdÜúúŒFÿÿdúFÜdFúúÒ›FÒÒ[[FFÿÿÿÿþÿÜúddFÿFÜÿÿ›ú›ÿúšÿúúúd›ÜFÜ›ÜdÜFúúúú[[FÿÜÒdúFÜdúdÿÿFdÿÒÿÿdFÿÿdFÿdFÿd››ÿú›ÿúÜdÒÒF›úúú›údú›ÿ››ÜúÒúú[[›FúŒŒŒFFFÒÒÒFFFFFÒ[[ŒÜdF›dÿFÿÿdFÿFÜÿÒdÒŒŒÿ›úÿ›údÿ›FÒÒÒúúúÜ››Œÿ››dú›úÒúú[[ÜÿÒÜÿÒÿÿÒdÿúúdú›ÿÑÿÿFÿFúFdÿÜd›ÒÑ›ÒÜFÜFúÜdÒÒ[[Fdÿÿÿÿÿÿÿÿÿÿÿÿÿ›ÿÒÜÿÿÿÿÿúÿúÿdFÿÿÜF›Ü›úÿ›údÜFúÿdFúúúÒÒdÜFdÒúúdÿÿFÜÿ›ÿFdÜúFúúÒÒÒÒ[[ÿÿdÿÿÜdFFFÜúúFdú›Fÿdÿÿúd›údÜÒ[[FdÜFddFdFÒÒFŒŒFF›úFdFFúÒdÜ›FdFFŒŒFFŒÒ›FÒÒÒÒÒÜdÒÒÒ[[dFddÿdúÿÒdFÿúÿFÿFÿdúdÿdÜÒÒÒ[[dFÿÿÿÿ›ÿÿÿÿ›ÿÿÿFdÿÿFdFdÿúFÿÿFÜFdÿÒÿÿd››ÿúÒÒÜúdÿúFÜdFúúúÿÜÒúdÿúFú››ÿÜúFÜd›FÜdÒÒÒÒÒÒ[[ÒÿÿÜÒÿÿÜÿ›ÿÜúÿúþdúÿFþFdFFÿddúúFÿdúúú›››ÿú›FÿFúúÒúÒÒ[[ŒŒÒÿÜúdÿúFdÿú›ÿdÒÿÿdÒúdÿŒ›FÜdÒúFúdÿú›ÿFÿdFÿdFÜÒdŒú›ÿúúúÒÒÒÒÒ[[ŒFŒFFFŒFŒÒúdŒÒ[[ŒdÿÒdÿFúÿdFúÿ›údÿÒdÿFÿFŒdÿFÜd›FÒÒÒÒÜ››dÿFdÿFdÒdÿFdÿFÿ››úúúÒÒÒÒÒ[[ÜÒÿ›Òdúÿúúÿ›ÒÿdÒúÿÿF›úúF›ÒF›ÿ›Fÿ›ÿFÿ›úúúÒÒÒÒÑ[[ÜÒÜÿ›ÿÒÿÜFÿÿFd›FdÜ›FdÿFÿÿúÿÿ›ÿFdÿúFúÒÒÒÒF›úúFdÿúÒÜÿúFdÿFúdÿÒúÜÿúFdÜúÒÒÒ›FÒÒÒÒ[[ÿFúdúddFÒúdùÜÜFdÿFdúÒdúdúÿdFÜFdÜ›ÒÑ[[ŒFFFFFdFÜÒÒÒÒÒdFÒÒÒŒFÒúdÜ››ÜŒFÒÒFdÒÒF›ÒFdÒÒFŒŒFFŒŒFdÜ›FÒÒÒ[[FÿúdÿdÿFÿÿÒÜÿFdÿFÿúdÿFÿúd›dÿFddÿFÿdúÜd›ÜdF›ddÜ›F[[ÒÜúÒÿÜÒÿ›ÿÜÒÿ›ÿdFÿ›ÿdFúÜdF›dÿúFÿÿÿ›ÿdFúÿdúFÿdÒÒŒúÜdFúdÿúÿdFúÿd›FÿúÒ›FúúúúúÒÜdF›Üd[[ÿ›ÿÜÿdFÿdúúÿdFúÜÿÿúFÿ›FÒŒúúú›ÿÜúúúÿÜFúúúúÒÒ[[FÿdŒŒŒ››ÿú›ÿú›ÿdŒ››ÜÒdF›ú››ÿFÿÜFúdÜFÿdúFÿd›FÜdúdÜ››Ü››ÜúÒÒÒ[[FFFFFŒdFFŒFF[[ŒdÿÿÒdÿFŒÿ›úÿ›úÿ›úÿ››dÿÿFÿdúFÜÿFÜ›úú›FŒÜdúÜdF›dÿFúÿ›úÜ›úúÒÒÒ[[ÜFÿÿÒÜFÿÒdÿÿÿFÿFúFdÿFdÿúFÿÛÿFšÿ›úúúŒF›úFúÿdúFdÿúÒÒ[[Üÿÿÿÿÿ›ÿÿÿFÿÿÜÒÿÿÿ›úÜÿÒdÜFúÿdFúÿdF›ÜÿÿFÿdúFúÒdúÿdúFdÿ›FdÿFdÜÒdúúúFÿÿúÿFúÿd›Fdÿ›FÜd›FdÜ›F[[ÒþFdFÜÒÜúÒ›ÿdúÿÿúÿFdFúÿ›úÒÜFÜÒdFúdF›Üd[[ŒŒ›F›ŒFFŒÒFdFFÒŒF›FÒŒFFFÒ›FÒ››ÜÒÒÒF›ÜddFFFÒÒÒÒdÜÒÒ[[þFdFÿÿ›ÿddFÿúúÿFÜÿÜF›ÿùdÿúdÿÒFÒÒÿúdÿFú[[Fÿÿÿÿÿ›ÿÿúÿÿFÜÒÿdÒÿÜF›ÿÿFÜÿúdÜÒÿÿÜúÜdúúúFÿdúFÿdŒF›ÒÒÒÒdFúúFÜÿúÒÿdFúdÜ›FÒF›Üd[[dÿÿÜúFdÿÿFÜÿ›ÿŒdÿ›ÿFÜÒdúdFdÜFÿšÿF›ÿú›ÜÜdÜ›ÿdFÿ›ÿúÜd›Ò[[ŒFúÿdÒÿÿdFÿÿdúFÿdÒÿdFúúFúú›FdÿúÿdÒÿdÒdúÜdF›ÜdÒúúÿdÒÿdFÿd›FúúúÒÒ[[údFùFÒÑÒÒ[[úúÜFdÒÜdúFdÒúúdÿúÜdFúúúdÒdÿÒÜFÜÿFúÜdFúúÒÒúŒdÿFÜdúFúúÒÒ[[dÒdÜ›FdÿŒFúÿFÒÜF›F›ÿ›Fÿ›ÒÜÿÿdúúú›FdÿFÿ›úúFúÿúÒ[[dÿÿÒÜÿÿÒÜdF›ÿdÒÿÿÜF›dÿÒdÿúÿÜF›ÒF›ÜÿÿÒúF›dÿFdF›dÿFúdÿFÿÿÿdÒÿd›FdÿFdúúF›ÿ›údÿúFdÿúÿd›FÜdÒ[[ÿÜúúdÿúÿFÿdFÜúdÜÿdÒÿúþdúÿdÒdùdÒúFÿdFúÿFú[[›Œ›FdF›úúÜdúúF›ÒúŒFÒŒFFdúÒÒÒF›ÒÒ›FdFúúÒŒFFŒÒÒÒÒÒÒ[[úF›ÜúùúúúúÜúúúÜdÿúÿdÿFddúúúú[[ÜÒdFÜdúúF›dFúúÜdÒdFúÒdÜúFÜÿ›ú›FÒÒdÜ›FdÿÒdÿÿÿFÿdú›ÿÜÒúÿdFúÿdú›ÿF›dÜÒÒÒú[[dúúÒúÒ›FÜúÒÜFÿÿddÜF›dÜÜdÿþÿÿdÿ›ÿFÿÿFÿdúÜdFdÜ[[údÿúFúÒÒúdÿúFdÜ›FúF›úúFdÜúúÒdúÜdúÜdF›úúFÿÜFÜÒÿdŒFÿdFÿdŒúFúF›ÜdF›Ò[[ÒŒF‹ŒFÒ›[[FúFúÿdúÒÒúFúÿdFúÿdúdÜúÿdFúúúÜFÒÒú›FdÜúÜdúdÒŒdÿFdÿÒÜÿÒÿdúFÜdFúÿdú[[údÜÒÜúFd›ú›dÿú›FÒF›Üd›FúÜFd›ÿF›ÿÒÜÿ›ÿFdÿFúúF[[úFÜdFd›FúúÜdFd›FdÜF›ÒFd›FÜdF›ÿdúFúF›ÒÒúF›ú›FŒúFúÿ›ÿÒÿÜÒúÜÿFÿÿdFúÿdúÿFdF›[[úùúúúÿ›úÒdÜúúdÜFÜÿÒÿÿúÿdFú[[dÜÒdFdÜúú›FdFÒÒÒÒdFdÜÒÒŒFdÜúÒŒFÒúÒŒFÒÿ››ŒFF›ÜdFFFFFFdFÒ[[ÿÿÒÿFúFþFÿúÜFúúúÜFúFÿFdÜúÒ›dÿFÿÿúÿdú[[ÜFúÜÿÒÿ›ÿ›FÿdúFÿÜÒúÿdFúÿdFúÜÿúÒdÿFúdÜú›ÿ›FÜdúdÒÿdF›ÜdúFÿdúdÜúÜdFúÜÿúFdÿúÒÜÒÜÿÒÿ›ÿÜÒÿ›ÿÿÿFdÿúdÜ[[ÿdúúFúúúú›ÿdÿúdúÿdFÿF›úùÿÿÿ›úúFÿÿÜdúú›ÿÿd›ÿÿÿÒÜÿÜFd[[FÿdŒú›ÜÒdFÿd››ÜFÿdFÜ››ÿŒúú›FÿÜFÿÿdú›ÿÒdÒÒ››ÿFÿdú›ÿFÿÿdFÿÿdŒŒÒÿÜFÿ›ÿ[[ddFFÒFŒFF›[[ÜFdÿFÿ›FdÿFdÿFÿ›údÿÒÜÿFdúúŒúúÿdúFdÒÜ››ÜFdÿFúÿ›úŒÿ›úÜÒdÿÿFdÿFŒÜÿÿFdÿ›ú[[››ÿF››ÿúFÿ›ÒÜÿ›úÜdúdþÜFúúdÿÿFúdÿÿFúFúúFúdÿÿÿÿÿÿFÿÿÜÿÿÜF[[ÿdúdÿÒúÿdúúúFdÿúÒÿdFúÿÜFÿÿdúú›Fÿ›úÜdF›dÜúÿÜF›úúÜdÒÿÿF›dÜFúÜÿ›údÜ›FÿdFÿÜúÒÜÿÒÿÿÿ›ÿÿÿdÒÜFú[[FdùúFÿúÿ›FÿúÿFÜ›FúÒúÿdúdÒFdù[[ŒF›ŒÒFdF›ÜdÒÒFFFFF›ŒFÒŒFFŒÒÒÒdFÒŒFFŒÒÜFÒ›FFFF›ÒÒÜdFFF[[dFdÛúúFÿÜúd›dÿ›ÿdFÿúFÿÿF›dÿÒúÿÜd[[ÒÿdFúÿúÜdÒÒF›dÿúúúFdFÿdúÜdÒÿÜFúÿdFúdÿÒÿ›ÜúúFÿÿdúÒÿdú›ÿÜÒÿFÿd›FdÜF›ÜÿúFdÿÿÿFÜÿFÜ[[úÿÒdÜúÿddÿúdÿú›ÿú›ÿÒÿdúúÿFÿÜÜdúdÿFdÿdFÿ›ÿdÿÿÿÿFdÑ[[›Fÿd›FÒÒÜdú›ÿFÿ›ÿdúFÿÜÒúdÜ››ÿFÿdFÿÜŒ››ÜFÿdŒÒdúúúdÿÿÿÿdÒÿÜÒdÒúdÿúú[[FÒFFÒ[[dÜÒÒÒÒÒÜ››Ü››ÿdúFdÿF›Ü›údÒÜFdÿFÜ››dÿFŒÜÿÿFÜÿúFdÿFúdÿÒdÿFú›Fúú[[ÜÒÑÒÒúúFúÿdúúúFdÿFšFÿ›úúÿúÿÿdÒÿdFúÿdÿÿÿ››FÒ[[ŒúúÒÒÒÒÒúúúdÜúÿúFdÿFúÜÿÿÿFÜÿFúÿdÒúÿÜúFdÿúFÜÿÒdÿúÒdÿ›ÿÿÿdÒdúÿFÜFÿÒÿÜúŒdÜúÜ›[[úÒÿdúÿÿÿdúÒFúFùÿFÜFFFddFF[[ŒŒŒÒÒÒÒ›FÒÒúÒF›ÒÒÒFFÒdF›ÜdFFÒÒÒŒFF›úF›dFdFFFFŒŒd›Ò[[dúÒ›ÜúdþÿFúÿFÿFÿúÜúFÿÿÜÿdFd[[ŒúúúúÒúF›ÜúÜd›FÿÿFÿdFÿ›ÿÜÒÿFÜFdÜ›FdÿÒÿ›ÿdFúÿdúFÿdúúúÒÜÒdÿÿFÿÜÒúÜÿÒÿÿÿÜúFúÒdF›ÿ›Ü[[›ÒúÒdÒúdÿÒÿ›ÿFÿÜÒÿÿÜdÿÒúFÿÿFÿ›ÿÿÒdÜÒÿ›ÿú›ÿdFÿdúúŒ[[F›ÒÒdÜúÒŒ›FúúÿdÒÿdŒÒÿdúFúúdÿŒFÿdÒdF›ÿdFÿÿdFÿÿÜÒÿdFÿdú›ÜúÜdúú[[ŒFdF[[dÜÒÒF›úúdÿFÿdúFdÿúFdÒÜÿFÿdúdÿFúŒdÿFÜFÜdúdÿÿFdÿÿÒÜÿFdÿFÿ›údÿÒdÿFÿÜú[[ÛúúFÿ›ÿFdÿFúÿdFúdÿÿFŒdÿÿúÜÿFÜÿÿF›ÿ›ÿ›Ò›úÿ›ÿFdÒúÿ›ÿÒ›[[ŒúúúúÜdF›dÿÒúÿdúÿúÿÜFúÜÿÒÿdÒdFÿÿFúÜÿ›ÿÒÜÿÒúÜÿdÒÿÿF›dÿÒÜFÿÿdúFdÿÒúÜÿÿÒÜd›FdÿFÿÿF[[ÒÜFùÒFúÿdúdÿdÒúdFúÿÜÿFúdFd[[ÿFdÿ›údÜÒÒFúúúúFdFúÿdFúÿdFdFdFdúúúúFdF›úúú[[FdúdFÜúÒ›ÒÑ[[úÿFúúF›Üd›Ü›Ü›ÜFdFdÒÒÒÒÒÒ[[dÜFFFdFFFúúdÜúd[[úúÜdF›ÿ›Ü›ÿÿFdÿúúúdFÜdúúúFÿú[[ÒÒÒ[[úÿ›FdÜúÒ›ÜúÿdFÿÿúúFd›Fúúÿdúÿ[[[[úúÒÒ›ÜúÜ›Ü[[[[›Ü›Ü[[[[[[[[dÿÿFdÿúdFÜ›[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[xmorph-20140707+nmu2/example/AA/grid.ppm.mesh0000664000000000000000000000255512356304631015366 0ustar M2 12 9 0 0 -1 180 0 0 407 0 0 652 0 0 907 0 0 1170 0 0 1440 0 0 1714 0 0 1986 0 0 2246 0 0 2451 0 0 2550 0 -1 0 270 0 193 291 0 416 301 0 655 305 0 910 306 0 1172 306 0 1441 303 0 1714 296 0 1985 281 0 2250 246 0 2454 210 0 2550 196 0 0 607 0 201 618 0 422 628 0 660 633 0 914 636 0 1175 635 0 1445 631 0 1715 621 0 1985 602 0 2251 577 0 2455 541 0 2550 522 0 0 969 0 203 972 0 427 977 0 665 980 0 917 982 0 1180 980 0 1449 975 0 1720 967 0 1989 955 0 2255 940 0 2456 924 0 2550 915 0 0 1344 0 203 1341 0 427 1341 0 667 1341 0 922 1340 0 1185 1339 0 1455 1335 0 1725 1331 0 1995 1329 0 2260 1328 0 2459 1330 0 2550 1331 0 0 1723 0 196 1715 0 422 1710 0 669 1706 0 925 1705 0 1192 1703 0 1463 1701 0 1735 1703 0 2004 1708 0 2265 1719 0 2460 1733 0 2550 1740 0 0 2090 0 183 2089 0 420 2081 0 672 2075 0 930 2071 0 1199 2070 0 1470 2070 0 1745 2075 0 2015 2085 0 2265 2095 0 2460 2104 0 2550 2109 0 0 2390 0 201 2390 -1 440 2386 0 682 2383 0 937 2380 0 1204 2380 0 1479 2380 0 1756 2385 0 2026 2390 0 2270 2394 0 2460 2398 0 2550 2400 0 0 2550 -1 271 2550 -1 472 2550 0 692 2550 0 939 2550 0 1205 2550 0 1483 2550 0 1763 2550 0 2031 2550 0 2271 2550 0 2460 2550 0 2550 2550 -1 256 256 0 0 256 256 108,800000 115,200000 147,200000 115,200000 128,000000 204,800000 grid.ppm xmorph-20140707+nmu2/example/AA/circuit.session0000664000000000000000000000046712356304631016037 0ustar /home/debdev/xmorph/xmorph-20031129/example/C/grid.ppm 1 /home/debdev/xmorph/xmorph-20031129/example/C/grid.ppm.mesh 1.000000 1.000000 xmorph-20140707+nmu2/example/AA/circuit.jpg.mesh0000664000000000000000000000260012356304631016056 0ustar M2 12 9 0 0 0 231 0 0 462 0 0 702 0 0 933 0 0 1164 0 0 1395 0 0 1626 0 0 1857 0 0 2097 0 0 2328 0 0 2550 0 0 0 320 0 231 320 0 462 320 0 702 320 0 933 320 0 1164 320 0 1395 320 0 1626 320 0 1857 320 0 2097 320 0 2328 320 0 2550 320 0 0 641 0 231 641 0 462 641 0 702 641 0 933 641 0 1164 641 0 1395 641 0 1626 641 0 1857 641 0 2097 641 0 2328 641 0 2550 641 0 0 962 0 231 962 0 462 962 0 702 962 0 933 962 0 1164 962 0 1395 962 0 1626 962 0 1857 962 0 2097 962 0 2328 962 0 2550 962 0 0 1283 0 231 1283 0 462 1283 0 702 1283 0 933 1283 0 1164 1283 0 1395 1283 0 1626 1283 0 1857 1283 0 2097 1283 0 2328 1283 0 2550 1283 0 0 1597 0 231 1597 0 462 1597 0 702 1597 0 933 1597 -1 1164 1597 0 1395 1597 0 1626 1597 0 1857 1597 0 2097 1597 -1 2328 1597 0 2550 1597 0 0 1918 0 231 1918 0 462 1918 0 702 1918 0 933 1918 0 1164 1918 0 1395 1918 0 1626 1918 0 1857 1918 0 2097 1918 0 2328 1918 0 2550 1918 0 0 2239 0 231 2239 0 462 2239 0 702 2239 0 933 2239 0 1164 2239 0 1395 2239 0 1626 2239 0 1857 2239 0 2097 2239 0 2328 2239 0 2550 2239 0 0 2550 0 231 2550 0 462 2550 0 702 2550 0 933 2550 0 1164 2550 0 1395 2550 0 1626 2550 0 1857 2550 0 2097 2550 0 2328 2550 0 2550 2550 0 256 256 0 0 256 256 108.800000 115.200000 147.200000 115.200000 128.000000 204.800000 /home/debdev/xmorph/circuit.jpg xmorph-20140707+nmu2/example/AD2/0000775000000000000000000000000012356343462013053 5ustar xmorph-20140707+nmu2/example/AD2/gtkmorph.session0000664000000000000000000000072212356304632016310 0ustar 300 400 image1.png 1 image1.png.mesh 0.500000 0.500000 image2.png 1 image2.png.mesh 0.500000 0.500000 xmorph-20140707+nmu2/example/AD2/image1.png.mesh0000664000000000000000000000517312356304632015661 0ustar M2 14 14 154 980 0 308 982 0 467 980 0 637 975 2 857 929 2 1015 869 0 1197 837 2 1414 837 0 1635 860 2 1795 882 2 1964 939 2 2133 997 2 2245 1004 0 2360 999 0 159 1179 0 320 1180 0 482 1170 0 652 1144 0 837 1099 0 1022 1050 0 1215 1015 0 1424 1007 0 1628 1025 0 1804 1057 0 1960 1107 0 2099 1164 0 2203 1194 0 2305 1205 0 168 1353 0 337 1363 2 496 1340 0 660 1305 0 839 1262 0 1030 1217 0 1230 1184 0 1434 1170 0 1629 1180 0 1808 1210 0 1960 1257 0 2083 1314 0 2178 1370 0 2265 1408 2 186 1505 0 352 1515 0 502 1505 0 659 1470 0 840 1425 0 1040 1380 0 1242 1350 0 1435 1340 0 1625 1345 0 1805 1363 0 1965 1398 0 2090 1455 0 2199 1540 0 2314 1630 2 216 1665 0 377 1685 0 506 1690 0 645 1658 0 842 1590 0 1055 1545 0 1247 1533 0 1428 1538 0 1610 1540 0 1798 1540 0 1970 1555 0 2115 1604 0 2225 1683 0 2315 1753 0 256 1868 2 396 1895 0 521 1900 0 640 1870 4 850 1760 4 1077 1740 4 1239 1753 4 1410 1770 0 1588 1778 0 1770 1764 5 1950 1755 5 2139 1790 5 2249 1859 5 2290 1883 2 191 2180 0 372 2160 0 557 2125 0 767 2070 4 880 2028 4 1047 2015 4 1195 2040 4 1400 2040 0 1578 2045 0 1718 2060 5 1870 2038 5 2089 2108 5 2225 2105 0 2323 2114 0 130 2490 2 341 2439 0 551 2385 0 739 2343 0 882 2320 0 1040 2314 0 1225 2320 0 1425 2320 3 1615 2300 0 1775 2319 0 1913 2345 0 2065 2375 0 2205 2368 0 2338 2360 2 153 2708 2 337 2688 0 531 2661 0 700 2643 0 852 2638 0 1025 2633 0 1255 2611 3 1410 2615 3 1660 2578 3 1845 2610 3 1954 2653 0 2074 2663 0 2210 2643 0 2350 2591 2 176 2938 0 357 2936 0 527 2931 0 685 2930 0 825 2941 0 970 2968 1 1185 2941 0 1395 2960 1 1668 2990 1 1800 2998 1 1955 2963 0 2093 2953 0 2225 2956 0 2350 2976 2 195 3170 0 387 3183 2 547 3180 0 700 3188 0 840 3205 0 992 3223 0 1180 3228 0 1409 3233 1 1658 3238 1 1810 3246 0 1964 3231 0 2110 3221 0 2250 3223 2 2385 3226 0 203 3386 0 397 3395 0 577 3401 0 739 3413 0 882 3431 0 1034 3453 0 1209 3470 0 1414 3473 0 1625 3470 0 1810 3466 0 1975 3456 0 2120 3448 2 2270 3446 0 2410 3436 0 208 3593 0 412 3598 0 605 3603 0 780 3618 2 925 3631 0 1070 3655 0 1232 3678 0 1420 3691 0 1624 3683 0 1815 3666 0 1984 3653 0 2140 3643 0 2285 3638 0 2430 3628 0 213 3793 0 421 3795 0 617 3798 0 795 3803 0 947 3813 0 1092 3830 0 1245 3851 0 1419 3876 2 1630 3860 2 1820 3840 0 1990 3826 0 2149 3821 0 2298 3816 0 2440 3811 0 232 329 1 10 231 308 77.230000 148.600000 155.770000 148.600000 116.500000 256.400000 image1.png 300 400 mouth outline nose right eye left eye xmorph-20140707+nmu2/example/AD2/image1.png0000777000000000000000000000000012356304632017263 2../AD/image1.pngustar xmorph-20140707+nmu2/example/AD2/image2.png.mesh0000664000000000000000000000517312356304632015662 0ustar M2 14 14 415 1074 0 475 1059 0 559 1013 0 687 937 2 900 830 2 1112 773 0 1320 760 2 1488 784 0 1650 820 2 1845 842 2 2005 862 2 2173 959 2 2275 1017 0 2357 1037 0 411 1222 0 470 1209 0 562 1171 0 703 1115 0 896 1053 0 1104 1010 0 1307 994 0 1488 1004 0 1663 1029 0 1841 1063 0 2006 1107 0 2155 1166 0 2269 1214 0 2361 1233 0 401 1374 0 457 1365 2 563 1336 0 713 1299 0 896 1263 0 1098 1234 0 1299 1219 0 1489 1223 0 1668 1245 0 1838 1281 0 1999 1326 0 2142 1370 0 2265 1407 0 2373 1429 2 384 1530 0 457 1525 0 563 1509 0 711 1484 0 896 1458 0 1100 1439 0 1300 1434 0 1486 1441 0 1660 1462 0 1829 1493 0 1992 1526 0 2139 1557 0 2270 1586 0 2394 1605 2 360 1691 0 453 1691 0 560 1689 0 701 1674 0 899 1636 0 1111 1623 0 1305 1645 0 1474 1657 0 1640 1675 0 1812 1699 0 1987 1703 0 2143 1722 0 2279 1755 0 2392 1765 0 330 1860 2 450 1862 0 573 1868 0 700 1870 4 910 1800 4 1120 1790 4 1290 1860 4 1447 1873 0 1617 1886 0 1790 1898 5 1980 1850 5 2144 1868 5 2289 1939 5 2384 1938 2 291 2043 0 447 2046 0 611 2040 0 790 2010 4 920 1990 4 1095 1998 4 1200 2020 4 1410 2109 0 1609 2118 0 1790 2030 5 1940 1990 5 2130 2030 5 2273 2123 0 2386 2158 0 270 2250 2 442 2259 0 610 2257 0 769 2243 0 900 2242 0 1038 2263 0 1188 2325 0 1404 2440 3 1613 2455 0 1781 2366 0 1940 2297 0 2103 2309 0 2247 2374 0 2380 2420 2 288 2518 2 433 2520 0 581 2518 0 723 2518 0 856 2534 0 993 2568 0 1160 2630 3 1360 2810 3 1630 2820 3 1780 2710 3 1942 2622 0 2084 2618 0 2216 2662 0 2344 2691 2 300 2818 0 415 2813 0 547 2797 0 683 2796 0 817 2831 0 960 2900 1 1143 2954 0 1359 3000 1 1595 3008 1 1820 2920 1 1943 2907 0 2057 2914 0 2180 2950 0 2309 3003 2 309 3109 0 397 3106 2 525 3064 0 662 3054 0 803 3092 0 956 3166 0 1135 3245 0 1338 3316 1 1580 3320 1 1769 3232 0 1900 3192 0 2013 3183 0 2144 3183 2 2286 3202 0 314 3350 0 411 3336 0 530 3298 0 664 3282 0 806 3327 0 963 3404 0 1138 3480 0 1332 3531 0 1535 3531 0 1707 3488 0 1842 3450 0 1960 3433 2 2113 3412 0 2273 3406 0 317 3567 0 425 3556 0 543 3529 0 677 3503 2 816 3563 0 969 3628 0 1139 3680 0 1320 3707 0 1504 3704 0 1666 3684 0 1808 3659 0 1946 3640 0 2101 3623 0 2266 3615 0 317 3776 0 430 3780 0 549 3792 0 680 3809 0 819 3830 0 972 3850 0 1137 3865 0 1310 3870 2 1500 3860 2 1654 3849 0 1798 3838 0 1943 3830 0 2099 3824 0 2264 3822 0 226 321 12 28 207 276 80.310000 152.200000 150.690000 152.200000 115.500000 248.800000 image2.png 300 400 mouth outline nose right eye left eye xmorph-20140707+nmu2/example/AD2/image2.png0000777000000000000000000000000012356304632017265 2../AD/image2.pngustar xmorph-20140707+nmu2/README.INSTALL0000664000000000000000000001523512356334256013046 0ustar Basic Installation ================== Note that if you are trying to compile the version that comes out of the SVN repository (currently https://xmorph.svn.sourceforge.net/svnroot/xmorph ) then you will need to install `automake' `autoconf' and so on, and run 'autogen.sh' as first thing. If you do not understand what I am talking about, you should get a xmorph-yyyymmdd.tar.bz2 source package, and use that. The simplest way to compile this package is: 0. Install all needed development libraries: X11 , GTK2.0 , Waili (for the wavelet enhancement). In a Debian/Ubuntu GNU/Linux environment, use # sudo apt-get install libx11-dev, libxt-dev, x11proto-core-dev, libxaw7-dev, xutils, libgtk2.0-dev, libwaili-dev 1. Unpack the source code and `cd' into the directory containing the source code 2. Type `./configure [arguments]' to configure the package for your system. See below for details on [arguments]. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 3. Type `make' to compile 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. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure 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 must use a version of `make' that supports the `VPATH' variable, such as 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 `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have 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. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' 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 ================= You can enable the components using `--with-PACKAGE' options, and disable it using `--without-PACKAGE' options, where PACKAGE is something in this list --with-morph compile morph (yes) --with-xmorph compile xmorph (auto) --with-gtkmorph compile gtkmorph (auto) --with-tkmorph compile tkmorph (no) Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. See `configure --help' for the up-to-date list. 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. Similarly, to compile `gtkmorph', you will need the GTK libraries that should be auto-detected, but if they are not, you may use --with-gtk-prefix=PFX Prefix where GTK is installed (optional) --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional) Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM 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 host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. 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. xmorph-20140707+nmu2/AUTHORS0000664000000000000000000000024712356304633012122 0ustar AUTHOR xmorph/morph: Written and Copyright (C) 1994-2000 by Michael J. Gourlay gtkmorph: Written and Copyright (C) 2000 by A C G Mennucci see also the HISTORY file xmorph-20140707+nmu2/ltmain.sh0000664000000000000000000105202612356342002012665 0ustar # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 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 # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.1 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.2 Debian-2.4.2-1.1" TIMESTAMP="" package_revision=1.3337 # 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 # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. 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 LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # 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" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${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 file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # 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 "${1}" | $SED -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 "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # 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 "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # 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=${PATH_SEPARATOR-:} 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' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|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: ${opt_mode+$opt_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_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_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 "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED '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 "$my_tmpdir" } # 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 "$1" | $SED "$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 "$1" | $SED \ -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_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$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 () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print 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-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # 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 # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg 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 shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" 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_preserve_dup_deps ;; esac $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 # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_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=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # 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_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $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_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$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 </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$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 "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$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 func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_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 func_append 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 func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$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 "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $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 $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if 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 "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_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. case $nonopt in *shtool*) :;; *) false;; esac; 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" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_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 -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=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. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$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 "$lib" | $SED '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 "$relink_command" | $SED '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 "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_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 #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* 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 "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; 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) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $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 # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $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 | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$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. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$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" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$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 \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else 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; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ 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) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # 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 bindir= 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 bindir) bindir="$arg" prev= continue ;; 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 func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$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 func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$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 "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$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" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$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 func_append 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 func_append 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|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append 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" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append 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" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$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 func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$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. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_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 \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$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 "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=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%" test "X$link_all_deplibs" != Xno && libs="$libs $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= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$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|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append 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 "*) ;; * ) func_append 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" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_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" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$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 \"$deplib\"" 2>/dev/null | $SED 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. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append 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 "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append 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. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$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. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "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 func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$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 func_append 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" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_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_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$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:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if 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 func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$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 "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) 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 "$opt_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$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$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:"*) ;; *) func_append 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:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_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:"*) ;; *) func_append 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 [\\/]*) func_append 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 "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$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" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$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 " $new_inherited_linker_flags" | $SED '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 "*) ;; *) func_append 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 "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append 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 func_append 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" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$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!" func_append 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 # correct linux to gnu/linux during the next big refactor 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|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; 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) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$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. func_append 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" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_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 func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$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 "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "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 " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) 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 ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$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 " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_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 func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_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 func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile 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 cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "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 "$include_expsyms" | $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 func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$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" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_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 func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "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 func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "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 func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "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. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi 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 "$opt_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 "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi 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" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$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 "$opt_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 "$opt_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 "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### 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 " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) 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 "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status 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 func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$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 "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi 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 "$compile_var$compile_command$compile_rpath" | $SED '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 "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_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 "$relink_command" | $SED "$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 func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$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" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "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 "$relink_command" | $SED "$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" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$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 "$opt_mode" = link || test "$opt_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) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif 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 func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '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 func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_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 func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # 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 xmorph-20140707+nmu2/gtkmorph2.gladep0000664000000000000000000000077712356304633014155 0ustar gtkmorph gtkmorph glade2 FALSE TRUE TRUE po/gtkmorph.glade2.c xmorph-20140707+nmu2/xmorph/0000775000000000000000000000000012356343462012367 5ustar xmorph-20140707+nmu2/xmorph/mesh_menu.h0000664000000000000000000000066512356304633014524 0ustar /* mesh_menu.h : mesh menu widgets and callbacks // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // Provided as is. No warrantees, express or implied. */ #ifndef _MESH_MENU__INCLUDED_ #define _MESH_MENU__INCLUDED_ #include #include /* create_mesh_menu: Create a mesh menu and its button */ extern Widget create_mesh_menu(Widget parent, Widget toplevel, Widget left_w); #endif xmorph-20140707+nmu2/xmorph/warp_menu.h0000664000000000000000000000106012356304633014527 0ustar /* warp_menu.h : warp menu widgets and callbacks // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // NO WARRANTEES, EXPRESS OR IMPLIED. */ #ifndef _WARP_MENU__INCLUDED_ #define _WARP_MENU__INCLUDED_ #include #include /* =============================================================== */ /* --------------------------------------------------------------- */ /* create_warp_menu: Create a warp menu and its button */ extern Widget create_warp_menu(Widget parent, Widget toplevel, Widget left_w); #endif xmorph-20140707+nmu2/xmorph/sequence.c0000664000000000000000000001664212356304633014351 0ustar /* sequence.c: routines to make a sequence of digital image warp frames // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // // These routines are used for the X Window System only and are not // needed for tkmorph. */ #include #include #include #include #include #include #include #ifdef GIMP # define NEED_GIMP 1 # include /* Number of steps in the progress meter. */ int prog_step = 0; int prog_nsteps = 0; #endif #include "diw_map.h" #include "mjg_dialog.h" #include "warp.h" #include "mesh.h" #include "RgbaImage.h" #include "image_diw.h" #include "my_malloc.h" #include "main.h" #include "sequence.h" static char *sequence_file_name = NULL; static int sequence_num_frames = -1; #define SHARPNESS 2.0 static double sigmoid_func(double x) { register double as; as=atan(SHARPNESS); return((atan((x-0.5)*SHARPNESS*2.0)+as)/(2.0*as)); } static double linear_func(double x) { return(x); } void warp_rgba_image(RgbaImageT *inP, RgbaImageT *outP, double *sxP, double *syP, double *dxP, double *dyP, int nx, int ny) { warp_image(inP->ri,outP->ri, inP->ncols,inP->nrows, sxP,syP, dxP,dyP, nx,ny); warp_image(inP->gi,outP->gi, inP->ncols,inP->nrows, sxP,syP, dxP,dyP, nx,ny); warp_image(inP->bi,outP->bi, inP->ncols,inP->nrows, sxP,syP, dxP,dyP, nx,ny); warp_image(inP->ai,outP->ai, inP->ncols,inP->nrows, sxP,syP, dxP,dyP, nx,ny); } void warp_sequence(diw_map_t *dmP, int steps, char *basename, int show, int preview) { float x; /* frame "time" parameter: between 0 and 1 */ float dissolve_t; /* adjuested "time" parameter for dissolve */ float warp_t; /* adjusted "time" parameter for warp */ MeshT tween_mesh; int frame; char iname[255]; #ifdef NEED_GIMP extern int plugin; #endif #if 0 fprintf (stderr, "FIXME: debug %d\n", getpid ()); kill (getpid (), 19); #endif meshInit(&tween_mesh); if(meshAlloc(&tween_mesh, dmP->mesh_src.nx, dmP->mesh_src.ny)) return; if(steps<0) steps=0; #ifdef NEED_GIMP if (plugin) { if (!preview) { /* Do two warp steps and one save step. */ gimp_progress_init ("Morphing..."); prog_nsteps = (steps - 1) * 3; } else /* Just do the warp steps. */ prog_nsteps = 0; prog_step = 0; } /* For the GIMP, we don't need to output a first frame. */ for(frame= plugin ? 1 : 0; frameimg_t; float wt = dmP->mesh_t; dmP->img_t = dissolve_t; dmP->mesh_t = warp_t; XawScrollbarSetThumb(dmP->dissolve_sb, dissolve_t, -1.0); XawScrollbarSetThumb(dmP->warp_sb, warp_t, -1.0); WarpImage(dmP->widget, NULL, NULL, NULL); /* Restore the user-set values */ dmP->img_t = dt; dmP->mesh_t = wt; } else { meshInterpolate(&tween_mesh, &dmP->mesh_src, &dmP->mesh_dst, warp_t); warp_rgba_image(&orig_image[0], &dmP->src_img, dmP->mesh_src.x, dmP->mesh_src.y, tween_mesh.x, tween_mesh.y, tween_mesh.nx, tween_mesh.ny); warp_rgba_image(&orig_image[1], &dmP->dst_img, dmP->mesh_dst.x, dmP->mesh_dst.y, tween_mesh.x, tween_mesh.y, tween_mesh.nx, tween_mesh.ny); } /* Don't save if in preview mode. */ if (preview) continue; #ifdef NEED_GIMP if (plugin) { extern GDrawable *drawable; GDrawable *d; gint32 image_ID, layer_ID; image_ID = gimp_drawable_image_id (drawable->id); /* Create a new layer in the source image. */ sprintf(iname, "%s%04i.tga", basename, frame); layer_ID = gimp_layer_new (image_ID, iname, dmP->src_img.ncols, dmP->src_img.nrows, gimp_drawable_type (drawable->id), 100, NORMAL_MODE); gimp_image_add_layer (image_ID, layer_ID, 0); d = gimp_drawable_get (layer_ID); if (rgbaImageGIMP (d, &dmP->src_img, &dmP->dst_img, dissolve_t)) break; gimp_drawable_flush (d); gimp_drawable_detach (d); if (prog_nsteps > 0) { /* Make sure the progress meter has been fully updated. */ prog_step = frame * 3; gimp_progress_update ((float) prog_step / (float) prog_nsteps); } } else #endif /* NEED_GIMP */ { /* GWM - Add the .tga suffix to Targa files. */ sprintf(iname, "%s%04i.tga", basename, frame); rgbaImageWrite(iname, &dmP->src_img, &dmP->dst_img, dissolve_t); } } /* meshFree added -- WA (MJG 13sep95) */ meshFree(&tween_mesh); #ifdef NEED_GIMP if (plugin) { if (prog_nsteps > 0) { gimp_progress_update (1.0); prog_step = 0; prog_nsteps = 0; } /* We exit after we save the image data in plugin mode. */ if (!preview) gimp_quit (); } #endif } /* =============================================================== */ /* Callbacks */ /* --------------------------------------------------------------- */ /*ARGSUSED*/ void set_sequence_file_name_cb(Widget widget, XtPointer client_data, XtPointer call_data) { dialog_apdx_t *daP = (dialog_apdx_t *)call_data; char *fn; fn = XawDialogGetValueString(daP->dialog); if(fn==NULL) return; set_sequence_file_name (fn); } void set_sequence_file_name (char *fname) { int len; len = strlen (fname); if(sequence_file_name) FREE(sequence_file_name); sequence_file_name = MY_CALLOC (len + 1, char); if (sequence_file_name) strcpy (sequence_file_name, fname); } char * get_sequence_file_name (void) { return sequence_file_name; } /* --------------------------------------------------------------- */ /*ARGSUSED*/ void set_sequence_num_frames_cb(Widget widget, XtPointer client_data, XtPointer call_data) { dialog_apdx_t *daP = (dialog_apdx_t *)call_data; char *nf; nf = XawDialogGetValueString(daP->dialog); if(nf==NULL) return; set_sequence_num_frames (atoi (nf)); } void set_sequence_num_frames (int frames) { sequence_num_frames = frames; } int get_sequence_num_frames (void) { return sequence_num_frames; } /* --------------------------------------------------------------- */ /*ARGSUSED*/ void warp_sequence_cb(Widget widget, XtPointer client_data, XtPointer call_data) { int preview = (int)client_data; warp_sequence(&global_diw_map[0], sequence_num_frames, sequence_file_name, True, preview); } /* =============================================================== */ /* Actions */ /* --------------------------------------------------------------- */ /* WarpSequence: action to generate a warp sequence */ /*ARGSUSED*/ void WarpSequence(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { diw_map_t *diw_mapP; if((diw_mapP = diw_map_of_widget(widget)) == NULL) { fprintf(stderr, "WarpSequence: Bad Widget for diw_map\n"); return; } warp_sequence(diw_mapP, sequence_num_frames, sequence_file_name, True, FALSE); } xmorph-20140707+nmu2/xmorph/image_cb.c0000664000000000000000000001366212356304633014266 0ustar /* image_cb.c : Callbacks for Digital Image Warp image related widgets // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // // These routines are used for the X Window System only and are not // needed for tkmorph. */ #ifdef GIMP # define NEED_GIMP 1 # include extern int plugin; #endif #include #ifndef apollo /* Word has it that Apollo Domain/OS SR10.4.1, BSD 4.3 X11 includes // these, and the redundancy causes compiler errors. Thanks to PW. */ #include #include #endif #include "diw_map.h" #include "RgbaImage.h" #include "image_diw.h" #include "mjg_dialog.h" #include "main.h" #include "image_cb.h" /* clear_widget: clear a widget's window */ void clear_widget(Widget widget, int width, int height) { Display *display = XtDisplay(widget); GC gc_clear; XGCValues gc_vals; /* Erase new window */ XtVaGetValues(widget, XtNbackground, &gc_vals.foreground, NULL); gc_clear = XCreateGC(display, XtWindow(widget), GCForeground, &gc_vals); XFillRectangle(display, XtWindow(widget), gc_clear, 0, 0, width, height); XFreeGC(display, gc_clear); } /* --------------------------------------------------------------- */ /* Handle some common work between load_image_cb and open_gimp_dest_cb. */ static void check_image (int dest) { RgbaImageT *imgP, *altP; if (dest) { imgP = &orig_image[1]; altP = &orig_image[0]; } else { imgP = &orig_image[0]; altP = &orig_image[1]; } /* Check to see if geometry matches */ if( (imgP->ncols != global_diw_map[0].width) || (imgP->nrows != global_diw_map[0].height)) { /* Geometry of the new image does NOT match the previous */ int indx; /* Try to resize the diw_map windows */ for(indx=0; indxncols; height = imgP->nrows; xmrr=XtMakeResizeRequest(global_diw_map[indx].widget, width, height, &width, &height); if(xmrr==XtGeometryAlmost) { /* Resize window */ xmrr=XtMakeResizeRequest(global_diw_map[indx].widget, width, height, &width, &height); clear_widget(global_diw_map[indx].widget, width, height); } } /* Reallocate the pixmap and ximages */ allocate_x_images(global_diw_map[indx].widget, &global_diw_map[indx].pixmap, &global_diw_map[indx].ximage, imgP->ncols, imgP->nrows); /* Set new diw_map geometry */ global_diw_map[indx].width = imgP->ncols; global_diw_map[indx].height = imgP->nrows; /* Scale the meshes to fit the new image */ meshScale(&global_diw_map[indx].mesh_src, global_diw_map[indx].width, global_diw_map[indx].height); meshScale(&global_diw_map[indx].mesh_dst, global_diw_map[indx].width, global_diw_map[indx].height); } } /* Free the space of the previous alternate image */ /* Fill the alternate image with a test image */ rgbaImageFree(altP); altP->ncols = imgP->ncols; altP->nrows = imgP->nrows; rgbaImageTestCreate (altP, dest ? 2 : 1); reset_images(dest ? 1 : 2); } /* Force the diw_maps to use the new image */ reset_images(dest ? 2 : 1); /* Display the new image */ ReditherAllImages(NULL, NULL, NULL, NULL); } /* load_img_cb: Callback to load image into memory // // 1. Load the image into the "original" image space // 2. Copy the "original" image space into each of the diw_map image spaces // 3. Redither each diw_map // // The term "alternate image" refers to which ever image is not being // loaded by this call of the routine. // // If the image geometry of this new image differs from the previous: // Fill the remaining image with a test image of appropriate size, // Reset both meshes. */ /*ARGSUSED*/ void load_img_cb(Widget w, XtPointer client_data, XtPointer call_data) { dialog_apdx_t *daP = (dialog_apdx_t *)call_data; int type = (int) client_data; String fn; RgbaImageT *imgP; /* Fetch the filename from the dialog box text widget */ fn = XawDialogGetValueString(daP->dialog); /* Decide where in memory to put the image: source or destination */ switch(type) { case 1: imgP = &orig_image[0]; break; case 2: imgP = &orig_image[1]; break; default: fprintf(stderr, "load_img_cb: Bad Value: dialog.type %i\n", type); return; break; } /* Allocate and read the image */ if(rgbaImageRead(imgP, fn)) { fprintf(stderr, "load_img_cb: Failed to load '%s'\n", fn); return; } check_image ((type == 2) ? 1 : 0); } #ifdef NEED_GIMP /* open_gimp_dest_cb: open a destination layer */ void open_gimp_dest_cb (Widget w, XtPointer client_data, XtPointer call_data) { extern void set_dest_image_id (gint32 id); gint32 drawable_ID = (gint32) client_data; if(rgbaImageUnGIMP (&orig_image[1], gimp_drawable_get (drawable_ID))) { fprintf(stderr, "open_gimp_dest_cb: Failed to import drawable `%d'\n", drawable_ID); return; } set_dest_image_id (drawable_ID); check_image (1); } #endif /* !NEED_GIMP */ /* --------------------------------------------------------------- */ /* save_img_cb: Callback to save image to file ** Save the image from the diw_map space to a file */ /*ARGSUSED*/ void save_img_cb(Widget w, XtPointer client_data, XtPointer call_data) { dialog_apdx_t *daP = (dialog_apdx_t*)call_data; diw_map_t *dmP = (diw_map_t*)client_data; String fn; /* Fetch the filename from the dialog box text widget */ fn = XawDialogGetValueString(daP->dialog); if(rgbaImageWrite(fn, &dmP->src_img, &dmP->dst_img, dmP->img_t)) { fprintf(stderr, "save_img_cb: Failed to save to '%s'\n", fn); } } xmorph-20140707+nmu2/xmorph/select.xbm0000664000000000000000000000043112356304633014351 0ustar #define select_width 16 #define select_height 16 static char select_bits[] = { 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x57, 0x15, 0xaf, 0x0a, 0x57, 0x15, 0xef, 0x0b, 0x37, 0x16, 0x2f, 0x0a, 0x37, 0x16, 0xef, 0x0b, 0x57, 0x15, 0xaf, 0x0a, 0x07, 0x00, 0x03, 0x00, 0x01, 0x00}; xmorph-20140707+nmu2/xmorph/image_diw.c0000664000000000000000000002621212356304633014460 0ustar /* image_diw.c : image routines associated with DIW maps // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // // These routines are used for the X Window System only and are not // needed for tkmorph. */ #include #include #include "my_malloc.h" #include "diw_map.h" #include "RgbaImage.h" #include "main.h" #include "image_diw.h" /* reset_images: copy "original" image into image spaces of diw_maps // // The name "reset" here is a misnomer. It really just synchronizes // the "display" image with the "original" image. // // type: determines whether images are the "src" (1) or "dst" (2) // // Uses global variables: orig_image, global_diw_map */ void reset_images(int type) { int indx; RgbaImageT *imgP; /* image stored in "original" space */ RgbaImageT *dmiP; /* image stored in DIW map */ /* Copy the "original" image into the diw_maps */ for(indx=0; indxri = dmiP->gi = dmiP->bi = dmiP->ai = NULL; /* Allocate memory for the DIW map images */ if(rgbaImageAlloc(dmiP, dmiP->ncols, dmiP->nrows)) return; /* Copy the "original" image into the DIW map image space */ memcpy(dmiP->ri, imgP->ri, dmiP->ncols * dmiP->nrows); memcpy(dmiP->gi, imgP->gi, dmiP->ncols * dmiP->nrows); memcpy(dmiP->bi, imgP->bi, dmiP->ncols * dmiP->nrows); memcpy(dmiP->ai, imgP->ai, dmiP->ncols * dmiP->nrows); } } } /* --------------------------------------------------------------- */ #define WHITE 0 #define BLACK 1 /* --------------------------------------------------------------- */ /* dither_image: dissolve 2 images and store into ximage // // t: determines the percent of dissolve between images. // -- 0.0 means source image. // -- 1.0 means dest image. // -- 0.5 means halfway between, etc. // // brite: brightness factor applied to dissolved image, for dimming. */ void dither_image(Visual *visual, RgbaImageT *srcP, RgbaImageT *dstP, double t, double brite, XImage *ximage) { int xi, yi; /* image coordinate indices */ int re=0; /* dithering error in red channel */ int ge=0; /* dithering errir in green channel or gray */ int be=0; /* dithering error in blue channel */ unsigned char byte = 0; /* 8 bits */ int *this_err=NULL; /* error diffusion array */ int *next_err=NULL; /* error diffusion array */ /* 24bit variables added WA (MJG 13sep95) */ int rShift = 0; int gShift = 0; int bShift = 0; int rRange = 0; int gRange = 0; int bRange = 0; /* 24bit color code added WA (MJG 13sep95) */ /* Based on xpaint sources: palette.c */ if (visual->class == TrueColor) { unsigned long v; rShift = gShift = bShift = 0; for (v = visual->red_mask; (v & 1) == 0; v >>= 1) rShift++; for (rRange=0; v; v>>=1) rRange++; for (v = visual->green_mask; (v & 1) == 0; v >>= 1) gShift++; for (gRange=0; v; v>>=1) gRange++; for (v = visual->blue_mask; (v & 1) == 0; v >>= 1) bShift++; for (bRange=0; v; v>>=1) bRange++; } else if (visual->class == StaticGray) { /* Allocate error diffusion array */ this_err=MY_CALLOC(srcP->ncols, int); next_err=MY_CALLOC(srcP->ncols, int); } /* Dissolve and dither the image */ /* ----------------------------- */ for(yi=0; yinrows; yi++) { for(xi=0; xincols; xi++) { int rsi, gsi, bsi; /* source image pixel channels */ int rdi, gdi, bdi; /* dest image pixel channels */ int ri, gi, bi; /* dissolved image pixel channels */ Pixel pixel; /* ximage pixel value */ /* changed from int to Pixel: WA (MJG 13sep95) */ /* Assign source image pixel channel values */ /* ---------------------------------------- */ rsi = (1.0-t) * srcP->ri[yi * srcP->ncols + xi]; gsi = (1.0-t) * srcP->gi[yi * srcP->ncols + xi]; bsi = (1.0-t) * srcP->bi[yi * srcP->ncols + xi]; /* Assign dest image pixel channel values */ /* -------------------------------------- */ if((dstP!=NULL) && (xincols) && (yi < dstP->nrows)) { rdi = t * dstP->ri[yi * dstP->ncols + xi]; gdi = t * dstP->gi[yi * dstP->ncols + xi]; bdi = t * dstP->bi[yi * dstP->ncols + xi]; } else { rdi = 0; gdi = 0; bdi = 0; } /* Dissolve and dim source and dest images */ /* --------------------------------------- */ ri = (int)(brite * (rsi + rdi) + 0.5); gi = (int)(brite * (gsi + gdi) + 0.5); bi = (int)(brite * (bsi + bdi) + 0.5); /* ======================================= */ /* Dither and store RgbaImage into ximage */ /* ======================================= */ /* TrueColor code due to WA (MJG 13sep95) */ if (visual->class == TrueColor) { /* True color requires no dithering */ pixel = (((ri<>8) << rShift) |(((gi<>8) << gShift) |(((bi<>8) << bShift); /* Store TrueColor pixel in image */ XPutPixel(ximage, xi, yi, pixel); } else if (visual->class == PseudoColor) { unsigned char rb, gb, bb; /* dithered image pixel channels */ /* assume 8-bit PseudoColor */ if(ximage->bits_per_pixel != 8) { fprintf(stderr, "dither_image: assuming 8 bit per pixel but ximage has %i\n", ximage->bits_per_pixel); } /* Add dithering error from previous iteration */ /* ------------------------------------------- */ ri += re; re = 0; gi += ge; ge = 0; bi += be; be = 0; /* Truncate pixel channel values to fit inside limits */ /* -------------------------------------------------- */ if(ri>RGBA_IMAGE_MAXVAL) { re += ri - RGBA_IMAGE_MAXVAL;/**/ ri = RGBA_IMAGE_MAXVAL; } else if(ri<0) { re -= ri; ri = 0; } if(gi>RGBA_IMAGE_MAXVAL) { ge += gi - RGBA_IMAGE_MAXVAL;/**/ gi = RGBA_IMAGE_MAXVAL; } else if(gi<0) { ge -= gi; gi = 0; } if(bi>RGBA_IMAGE_MAXVAL) { be += bi - RGBA_IMAGE_MAXVAL;/**/ bi = RGBA_IMAGE_MAXVAL; } else if(bi<0) { be -= bi; bi = 0; } /* Approximate true color */ /* ---------------------- */ /* Pick out the bits that will make up the pixel index */ /* Use only most significant bits per channel */ rb = ri & RED_MSB_MASK; gb = gi & GRN_MSB_MASK; bb = bi & BLU_MSB_MASK; /* Construct a pixel index from the pixel color */ pixel = (rb>>RED_R_SHIFT)|(gb>>GRN_R_SHIFT)|(bb>>BLU_R_SHIFT); /* Store dithering error for next iteration */ re += ri - (diw_xcolors[pixel].red >> TRUNC_SHIFT); ge += gi - (diw_xcolors[pixel].green >> TRUNC_SHIFT); be += bi - (diw_xcolors[pixel].blue >> TRUNC_SHIFT); /* Store pixel index in colormapped image */ /* MJG 19jul94: fixed indexing */ /* MJG 12jul95: use bytes_per_line instead of width to index */ ximage->data[yi * ximage->bytes_per_line + xi] = diw_xcolors[pixel].pixel; } else if (visual->class == GrayScale) { fprintf(stderr, "dither_image: GrayScale not implemented\n"); } else if (visual->class == StaticGray) { int gray; /* gray value of pixel */ unsigned char gb; /* dithered image pixel gray value */ int xi_xi; /* ximage x index */ int bit; /* bit index for byte fraction depths */ /* Assume 1-bit depth */ if(ximage->bits_per_pixel != 1) { fprintf(stderr, "dither_image: assuming 1 bit per pixel but ximage has %i\n", ximage->bits_per_pixel); } /* Convert color into gray */ /* ----------------------- */ gray = 0.299 * ri + 0.587 * gi + 0.114 * bi; /* Add dithering error from previous iteration */ /* ------------------------------------------- */ gray += this_err[xi]; this_err[xi] = 0; /* Truncate pixel value to fit inside limits */ /* ----------------------------------------- */ ge = 0; if(gray > RGBA_IMAGE_MAXVAL) { ge += gray - RGBA_IMAGE_MAXVAL; gray = RGBA_IMAGE_MAXVAL; } else if(gray < 0) { ge -= gray; gray = 0; } /* Approximate a gray pixel value and compute dithering error */ /* ---------------------------------------------------------- */ if(gray > GRAY_THRESHOLD) { gb = WHITE; ge += gray - RGBA_IMAGE_MAXVAL; } else { gb = BLACK; ge += gray; } /* Diffuse and store dithering error */ /* --------------------------------- */ next_err[xi] += ( ge * 5 ) / 16; if(xi+1 < srcP->ncols) { this_err[xi+1] += ( ge * 5 ) / 16; next_err[xi+1] += ( ge * 3 ) / 16; } else { next_err[xi] += ( ge * 8 ) / 16; } if(xi-1 >= 0) { next_err[xi-1] += ( ge * 3 ) / 16; } else { next_err[xi] += ( ge * 3 ) / 16; } /* Compute bit index and ximage index */ /* ---------------------------------- */ xi_xi = xi / 8; if(((bit = xi % 8) == 0) && (xi_xi > 0)) { /* Store the accumulated 8 bits into the previous ximage byte */ ximage->data[yi * ximage->bytes_per_line + xi_xi-1] = byte; /* Restart the bit accumulator */ byte = 0; } /* Store the bit in the right place in the byte */ /* -------------------------------------------- */ /* Note that bit 0 goes on the left of the byte ** and that bit 7 goes on the right of the byte. */ byte |= (gb << (7-bit)); } else { fprintf(stderr, "dither_image: visual class %i not supported\n", visual->class); } } /* for xi */ /* Swap error diffusion arrays */ if(this_err != NULL) { int *tmp = this_err; this_err = next_err; next_err = tmp; } } /* for yi */ /* Free error diffusion arrays */ if(this_err != NULL) FREE(this_err); if(next_err != NULL) FREE(next_err); } xmorph-20140707+nmu2/xmorph/xmorph.c0000664000000000000000000006617512356304633014064 0ustar /* xmorph.c : Digital Image Warping GUI for X Window System // // A graphical user interface to a mesh warping algorithm // // Some code for GIMP plug-in is also in this file. // Written and Copyright (C) 1994-1999 by Michael J. Gourlay This file is part of Xmorph. Xmorph 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. Xmorph 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 */ #include #include #include #include #include #include #include #include #include "diw_map.h" #include "RgbaImage.h" #include "image_diw.h" #include "sequence.h" #include "file_menu.h" #include "mesh_menu.h" #include "warp_menu.h" #include "help_menu.h" #include "my_malloc.h" #include "main.h" #include "xmorph.h" #ifdef NEED_GIMP # define PLUG_IN_NAME "xmorph" # include static void query (void); static void run (char *name, int nparams, GParam * param, int *nreturn_vals, GParam ** return_vals); GPlugInInfo PLUG_IN_INFO = { NULL, /* init_proc */ NULL, /* quit_proc */ query, /* query_proc */ run, /* run_proc */ }; int plugin = FALSE; #include static jmp_buf exit_env; #endif /* NEED_GIMP */ /* actions: action-to-function mappings // determines the behaviour of this application */ static XtActionsRec actions[] = { {"refresh", RefreshImage}, {"draw_meshes", DrawMeshes}, {"draw_all_meshes", DrawAllMeshes}, {"redither", ReditherImage}, {"redither_all", ReditherAllImages}, {"warp", WarpImage}, {"change_mesh", ChangeMeshLine}, {"pick", PickMeshpoint}, {"unpick", UnpickMeshpoint}, {"drag", DragMeshpoint}, {"start_drag", StartDragMeshpoint}, {"warp_sequence", WarpSequence}, }; /* fallback_resources: default application resources // determines the look of this application */ String fallback_resources[] = { /* Application looks */ "XMorph*font: -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*", "XMorph*foreground: MidnightBlue", "XMorph*background: LightGray", "XMorph*borderColor: DimGray", /* Dialog look and feel */ "XMorph*Dialog.label.font: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*", "XMorph*Dialog.value: ", "XMorph*Dialog.Command.foreground: black", "XMorph*Dialog.cancel.label: Cancel", "XMorph*Dialog.okay.label: Okay", "XMorph*Dialog.Text.translations: #override Return: mjg_okay()", /* Menu looks */ "XMorph*MenuButton.font: -*-helvetica-bold-o-normal-*-14-*-*-*-*-*-*", "XMorph*SimpleMenu*font: -*-helvetica-bold-o-normal-*-14-*-*-*-*-*-*", "XMorph*SimpleMenu*leftMargin: 24", "XMorph*SimpleMenu*rightMargin: 24", /* File titlebar menu */ "XMorph*file_menu_button.label: File", "XMorph*file_menu.fm_osi_sme.label: Open source image...", "XMorph*file_menu.fm_odi_sme.label: Open destination image...", "XMorph*file_menu.fm_osm_sme.label: Open source mesh...", "XMorph*file_menu.fm_odm_sme.label: Open destination mesh...", "XMorph*file_menu.fm_ssi_sme.label: Save source image...", "XMorph*file_menu.fm_sdi_sme.label: Save destination image...", "XMorph*file_menu.fm_ssm_sme.label: Save source mesh...", "XMorph*file_menu.fm_sdm_sme.label: Save destination mesh...", "XMorph*file_menu.fm_quit_sme.label: Quit", "XMorph*TransientShell.md_osi.label: Load source image from filename:", "XMorph*mds_osi.title: Load source image from filename:", "XMorph*TransientShell.md_odi.label: Load destination image from filename:", "XMorph*mds_odi.title: Load destination image from filename:", "XMorph*TransientShell.md_osm.label: Load source mesh from filename:", "XMorph*mds_osm.title: Load source mesh from filename:", "XMorph*TransientShell.md_odm.label: Load destination mesh from filename:", "XMorph*mds_odm.title: Load destination mesh from filename:", "XMorph*TransientShell.md_ssm.label: Save source mesh to filename:", "XMorph*mds_ssm.title: Save source mesh to filename:", "XMorph*TransientShell.md_sdm.label: Save destination mesh to filename:", "XMorph*mds_sdm.title: Save destination mesh to filename:", "XMorph*TransientShell.md_si.label: Save image to filename:", "XMorph*mds_si.title: Save image to filename:", #ifdef NEED_GIMP /* Destination titlebar menu */ "XMorph*dest_menu_button.label: Destination", #endif /* Mesh titlebar menu */ "XMorph*mesh_menu_button.label: Mesh", "XMorph*mesh_menu.mm_rsm_sme.label: Reset source mesh", "XMorph*mesh_menu.mm_rdm_sme.label: Reset destination mesh", "XMorph*mesh_menu.mm_msm_sme.label: Functionalize source mesh", "XMorph*mesh_menu.mm_mdm_sme.label: Functionalize destination mesh", /* Warp titlebar menu */ "XMorph*warp_menu_button.label: Morph Sequence", "XMorph*warp_menu.wm_ssfn_sme.label: Set sequence name...", "XMorph*warp_menu.wm_ssns_sme.label: Set sequence number of steps...", "XMorph*warp_menu.wm_seqp_sme.label: Preview warp sequence", "XMorph*warp_menu.wm_seq_sme.label: Warp sequence", "XMorph*TransientShell.md_ssfn.label: Warp Sequence filename:", "XMorph*mds_ssfn.title: Warp Sequence filename:", "XMorph*TransientShell.md_ssns.label: Number of warp frames:", "XMorph*mds_ssns.title: Number of warp frames:", "XMorph*TransientShell.md_ssfn.value: warp", "XMorph*TransientShell.md_ssns.value: 30", /* Help titlebar menu */ "XMorph*help_menu_button.label: Help", "XMorph*help_menu_button.horizDistance: 100", "XMorph*help_menu.hm_about_sme.label: About...", "XMorph*help_menu.hm_mmp_sme.label: Manipulating the mesh...", "XMorph*help_menu.hm_file_sme.label: File menu help...", "XMorph*help_menu.hm_mesh_sme.label: Mesh menu help...", "XMorph*help_menu.hm_warp_sme.label: Morph Sequence menu help...", "XMorph*help_menu.hm_dpm_sme.label: DIW Properties menu help...", "XMorph*help_menu.hm_dcm_sme.label: DIW Commands menu help...", "XMorph*help_menu.hm_quit_sme.label: Quit XMorph", "XMorph*TransientShell.md_h_about.Text*font: -*-helvetica-medium-r-normal-*-18-*-*-*-*-*-*", "XMorph*TransientShell.md_h_about.label: About XMorph", "XMorph*mds_h_about.title: About XMorph", "XMorph*TransientShell.md_h_about.Text.width: 640", "XMorph*TransientShell.md_h_about.Text.height: 480", "XMorph*TransientShell.md_h_about.Text.scrollHoriontal: whenneeded", "XMorph*TransientShell.md_h_about.okay.label: Dismiss", "XMorph*TransientShell.md_h_mmp.Text*font: -*-helvetica-medium-r-normal-*-18-*-*-*-*-*-*", "XMorph*TransientShell.md_h_mmp.label: Manipulating the mesh", "XMorph*mds_h_mmp.title: Manipulating the mesh", "XMorph*TransientShell.md_h_mmp.Text.width: 640", "XMorph*TransientShell.md_h_mmp.Text.height: 480", "XMorph*TransientShell.md_h_mmp.Text.scrollHoriontal: whenneeded", "XMorph*TransientShell.md_h_mmp.okay.label: Dismiss", "XMorph*TransientShell.md_h_file.Text*font: -*-helvetica-medium-r-normal-*-18-*-*-*-*-*-*", "XMorph*TransientShell.md_h_file.label: File menu Help", "XMorph*mds_h_file.title: File menu Help", "XMorph*TransientShell.md_h_file.Text.width: 640", "XMorph*TransientShell.md_h_file.Text.height: 480", "XMorph*TransientShell.md_h_file.Text.scrollHoriontal: whenneeded", "XMorph*TransientShell.md_h_file.okay.label: Dismiss", "XMorph*TransientShell.md_h_mesh.Text*font: -*-helvetica-medium-r-normal-*-18-*-*-*-*-*-*", "XMorph*TransientShell.md_h_mesh.label: Mesh menu Help", "XMorph*mds_h_mesh.title: Mesh menu Help", "XMorph*TransientShell.md_h_mesh.Text.width: 640", "XMorph*TransientShell.md_h_mesh.Text.height: 480", "XMorph*TransientShell.md_h_mesh.Text.scrollHoriontal: whenneeded", "XMorph*TransientShell.md_h_mesh.okay.label: Dismiss", "XMorph*TransientShell.md_h_morph.Text*font: -*-helvetica-medium-r-normal-*-18-*-*-*-*-*-*", "XMorph*TransientShell.md_h_morph.label: Morph Sequence menu Help", "XMorph*mds_h_morph.title: Morph Sequence menu Help", "XMorph*TransientShell.md_h_morph.Text.width: 640", "XMorph*TransientShell.md_h_morph.Text.height: 480", "XMorph*TransientShell.md_h_morph.Text.scrollHoriontal: whenneeded", "XMorph*TransientShell.md_h_morph.okay.label: Dismiss", "XMorph*TransientShell.md_h_dpm.Text*font: -*-helvetica-medium-r-normal-*-18-*-*-*-*-*-*", "XMorph*TransientShell.md_h_dpm.label: DIW Properties menu Help", "XMorph*mds_h_dpm.title: DIW Properties menu Help", "XMorph*TransientShell.md_h_dpm.Text.width: 640", "XMorph*TransientShell.md_h_dpm.Text.height: 480", "XMorph*TransientShell.md_h_dpm.Text.scrollHoriontal: whenneeded", "XMorph*TransientShell.md_h_dpm.okay.label: Dismiss", "XMorph*TransientShell.md_h_dcm.Text*font: -*-helvetica-medium-r-normal-*-18-*-*-*-*-*-*", "XMorph*TransientShell.md_h_dcm.label: DIW Commands menu Help", "XMorph*mds_h_dcm.title: DIW Commands menu Help", "XMorph*TransientShell.md_h_dcm.Text.width: 640", "XMorph*TransientShell.md_h_dcm.Text.height: 480", "XMorph*TransientShell.md_h_dcm.Text.scrollHoriontal: whenneeded", "XMorph*TransientShell.md_h_dcm.okay.label: Dismiss", /* ----------------- */ /* DIW box resources */ "XMorph*diw_box.SimpleMenu.background: white", /* Viewport scrollbars */ "XMorph*Viewport.allowHoriz: True", "XMorph*Viewport.allowVert: True", /* warp and dissolve scrollbars */ "XMorph*mesh_label.label: warp:", "XMorph*source_mesh.foreground: dark green", "XMorph*source_mesh.label: source mesh", #ifdef RED_GREEN_COLOR_BLIND "XMorph*destination_mesh.foreground: blue", #else "XMorph*destination_mesh.foreground: red", #endif "XMorph*destination_mesh.label: destination mesh", "XMorph*scrollbar_mesh.foreground: yellow", "XMorph*scrollbar_mesh.orientation: horizontal", "XMorph*scrollbar_image.orientation: horizontal", "XMorph*Scrollbar.foreground: LightGray", "XMorph*Scrollbar.background: DimGray", "XMorph*image_label.label: dissolve:", "XMorph*source_image.label: source image", "XMorph*destination_image.label: destination image", /* DIW Properties menu */ "XMorph*diw_prop_menu_button.label: Properties", "XMorph*diw_box.SimpleMenu.smp_sme.label: Show source mesh points", "XMorph*diw_box.SimpleMenu.sml_sme.label: Show source mesh lines", "XMorph*diw_box.SimpleMenu.dmp_sme.label: Show destination mesh points", "XMorph*diw_box.SimpleMenu.dml_sme.label: Show destination mesh lines", "XMorph*diw_box.SimpleMenu.tmp_sme.label: Show tween mesh points", "XMorph*diw_box.SimpleMenu.tml_sme.label: Show tween mesh lines", "XMorph*diw_box.SimpleMenu.dim_sme.label: Dim Image", /* DIW Commands menu */ "XMorph*diw_cmd_menu_button.label: Commands", "XMorph*diw_box.SimpleMenu.si_sme.label: Save Image...", "XMorph*diw_box.SimpleMenu.warp_sme.label: Warp Image", "XMorph*diw_box.SimpleMenu.redither_sme.label: Redither Image", NULL }; /* initialize_application: lots of once-only initialization // Build the widget heirarchy and initializes all GUI variables */ XtAppContext initialize_application(int width, int height, char *srcmesh, char *dstmesh, int *argc, char **argv, int show) { XtAppContext app; Widget toplevel; Widget form; Widget file_menu_button; Widget dest_menu_button; Widget mesh_menu_button; Widget warp_menu_button; Widget help_menu_button; Widget diw_box; Widget diw_widget1, diw_widget2; Arg args[25]; int argn; Display *display; /* initialize the DIW maps */ for(argn=0; argn/Filters/Effects/Morph", "RGB*, GRAY*", PROC_PLUG_IN, nargs, nreturn_vals, args, return_vals); } static char *fakeargv[2] = {PLUG_IN_NAME, 0}; static int fakeargc = 0; /* NAME // load_images: convenience function to retrieve images from the GIMP // // // DESCRIPTION // This function just loads the specified images from the GIMP. // // // RETURN VALUES // Returns zero on success. */ static int load_images () { RgbaImageT *src, *dst; /* Load the source image. */ src = &orig_image[0]; src->ri = src->gi = src->bi = src->ai = NULL; if (rgbaImageUnGIMP (src, drawable)) return 1; /* Load the destination image */ dst = &orig_image[1]; dst->ri = dst->gi = dst->bi = dst->ai = NULL; if (xmvals.dst != -1) { GDrawable *ddrawable; ddrawable = gimp_drawable_get (xmvals.dst); if (rgbaImageUnGIMP (dst, ddrawable)) return 1; } else { dst->ncols = src->ncols; dst->nrows = src->nrows; rgbaImageTestCreate (dst, 1); } /* Set the source and destination meshes. */ return 0; } /* NAME // run: typical GIMP plugin run procedure // // DESCRIPTION // Every GIMP plugin needs a procedure like this to be referenced by // the PLUGIN_INFO structure above. This function is called by gimp_main // whenever the GIMP requests a procedure call. We handle `xmorph' calls // and abort any others. // // SEE ALSO // plug-ins/bumpmap.c from the latest GIMP distribution // (http://www.gimp.org/). */ static void run (char *name, int nparams, GParam * param, int *nreturn_vals, GParam ** return_vals) { static GParam values[2]; GRunModeType run_mode; XtAppContext app; GStatusType status = STATUS_SUCCESS; run_mode = param[0].data.d_int32; plugin = TRUE; *nreturn_vals = 1; *return_vals = values; values[0].type = PARAM_STATUS; values[0].data.d_status = STATUS_SUCCESS; drawable = gimp_drawable_get(param[2].data.d_drawable); switch (run_mode) { case RUN_INTERACTIVE: /* Possibly retrieve data */ gimp_get_data(PLUG_IN_NAME, &xmvals); break; case RUN_NONINTERACTIVE: /* Make sure all the arguments are there! */ if (nparams < 5 || nparams > 8) status = STATUS_CALLING_ERROR; if (status == STATUS_SUCCESS) { /* Retrieve the parameters. */ xmvals.dst = param[3].data.d_drawable; xmvals.steps = param[4].data.d_int32; if (nparams > 5 && param[5].data.d_string) { strncpy (xmvals.srcmesh, param[5].data.d_string, sizeof (xmvals.srcmesh) - 1); xmvals.srcmesh[sizeof (xmvals.srcmesh) - 1] = '\0'; } else xmvals.srcmesh[0] = '\0'; if (nparams > 6 && param[6].data.d_string) { strncpy (xmvals.dstmesh, param[6].data.d_string, sizeof (xmvals.dstmesh) - 1); xmvals.dstmesh[sizeof (xmvals.dstmesh) - 1] = '\0'; } else xmvals.dstmesh[0] = '\0'; if (nparams > 7 && param[7].data.d_string) { strncpy (xmvals.basename, param[7].data.d_string, sizeof (xmvals.basename) - 1); xmvals.basename[sizeof (xmvals.basename) - 1] = '\0'; } else xmvals.basename[0] = '\0'; } break; case RUN_WITH_LAST_VALS: /* Possibly retrieve data */ gimp_get_data(PLUG_IN_NAME, &xmvals); break; default: status = STATUS_CALLING_ERROR; break; } /* Now actually run the morph process. */ if (status == STATUS_SUCCESS && !load_images ()) { char *srcmesh, *dstmesh; srcmesh = (*xmvals.srcmesh) ? xmvals.srcmesh : 0; dstmesh = (*xmvals.dstmesh) ? xmvals.dstmesh : 0; /* Set the basename and number of steps. */ set_sequence_file_name (xmvals.basename); set_sequence_num_frames (xmvals.steps); app = initialize_application(orig_image[0].ncols, orig_image[0].nrows, srcmesh, dstmesh, &fakeargc, fakeargv, run_mode == RUN_INTERACTIVE); /* Only run the main loop if we are interactive. */ if (run_mode == RUN_INTERACTIVE) { /* Return to this spot on exit. */ if (!setjmp (exit_env)) XtAppMainLoop (app); /* STATUS may be clobbered by longjmp, so reset it. */ status = STATUS_SUCCESS; } else warp_sequence (&global_diw_map[0], xmvals.steps, xmvals.basename, FALSE, FALSE); /* If run mode is interactive, flush displays */ if (run_mode != RUN_NONINTERACTIVE) gimp_displays_flush(); /* Store data */ if (run_mode == RUN_INTERACTIVE) { /* Save the values that were set by the user. */ xmvals.steps = get_sequence_num_frames (); if (get_sequence_file_name ()) { strncpy (xmvals.basename, get_sequence_file_name (), sizeof (xmvals.basename) - 1); xmvals.basename[sizeof (xmvals.basename) - 1] = '\0'; } else xmvals.basename[0] = '\0'; /* Get the names of the source and dest meshes. */ srcmesh = get_src_mesh_name (); dstmesh = get_dst_mesh_name (); if (srcmesh) { strncpy (xmvals.srcmesh, srcmesh, sizeof (xmvals.srcmesh) - 1); xmvals.srcmesh[sizeof (xmvals.srcmesh) - 1] = '\0'; } else xmvals.srcmesh[0] = '\0'; if (dstmesh) { strncpy (xmvals.dstmesh, dstmesh, sizeof (xmvals.dstmesh) - 1); xmvals.dstmesh[sizeof (xmvals.dstmesh) - 1] = '\0'; } else xmvals.dstmesh[0] = '\0'; gimp_set_data(PLUG_IN_NAME, &xmvals, sizeof(xmorph_vals_t)); } } else status = STATUS_EXECUTION_ERROR; values[0].data.d_status = status; gimp_drawable_detach(drawable); } /* NAME // null_print_func: a GIMP printing function that doesn't do anything // // DESCRIPTION // The xmorph GIMP plugin uses a technique pioneered by SANE to determine // when it was executed by the GIMP, and when it was run standalone. This // technique nullifies the GIMP error message function so that regular // users don't get an ugly error from gimp_main every time they call // xmorph in standalone mode. // // SEE ALSO // frontend/xscanimage.c from the latest SANE distribution // (http://www.azstarnet.com/~davidm/sane/). */ void null_print_func (gchar *msg) { } #endif /* NEED_GIMP */ xmorph-20140707+nmu2/xmorph/file_menu.c0000664000000000000000000002277112356304633014504 0ustar /* file_menu.c : file menu widgets and callbacks for X // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // // These routines are used for the X Window System only and are not // needed for tkmorph. */ #ifdef GIMP # define NEED_GIMP 1 # include extern int plugin; #endif #include #include #include #include #include #include #include #include #include "xmorph.h" #include "mjg_dialog.h" #include "mesh_cb.h" #include "image_cb.h" #include "file_menu.h" /* =============================================================== */ /* --------------------------------------------------------------- */ /* create_file_menu: Create a file menu and its button ** returns the widget of the menu button */ Widget create_file_menu(Widget parent, Widget toplevel, Widget left_w) { Widget file_menu_button; Widget file_menu; Widget fm_osi_sme, fm_odi_sme, fm_osm_sme, fm_odm_sme; Widget fm_ssm_sme, fm_sdm_sme; Widget fm_quit_sme; dialog_apdx_t *fm_osi_daP, *fm_odi_daP; dialog_apdx_t *fm_osm_daP, *fm_odm_daP; dialog_apdx_t *fm_ssm_daP, *fm_sdm_daP; /* ========================= */ /* Create the Dialog widgets */ /* - - - - - - - - - - - - - - - - - */ #ifdef NEED_GIMP if (plugin) fm_osi_daP = 0; else #endif { /* Create the Open Source Image dialog */ fm_osi_daP = create_mjg_dialog(toplevel, "osi"); fm_osi_daP->client_data = (XtPointer)1; fm_osi_daP->callback = load_img_cb; } #ifdef NEED_GIMP if (plugin) fm_odi_daP = 0; else #endif /* - - - - - - - - - - - - - - - - - - - - */ { /* Create the Open Destination Image dialog */ fm_odi_daP = create_mjg_dialog(toplevel, "odi"); fm_odi_daP->client_data = (XtPointer)2; fm_odi_daP->callback = load_img_cb; } /* - - - - - - - - - - - - - - - - - */ /* Create the Open Source Mesh dialog */ fm_osm_daP = create_mjg_dialog(toplevel, "osm"); fm_osm_daP->client_data = (XtPointer)1; fm_osm_daP->callback = load_mesh_cb; /* - - - - - - - - - - - - - - - - - - - - */ /* Create the Open Destination Mesh dialog */ fm_odm_daP = create_mjg_dialog(toplevel, "odm"); fm_odm_daP->client_data = (XtPointer)2; fm_odm_daP->callback = load_mesh_cb; /* - - - - - - - - - - - - - - - - - */ /* Create the Save Source Mesh dialog */ fm_ssm_daP = create_mjg_dialog(toplevel, "ssm"); fm_ssm_daP->client_data = (XtPointer)1; fm_ssm_daP->callback = save_mesh_cb; /* - - - - - - - - - - - - - - - - - */ /* Create the Save Destination Mesh dialog */ fm_sdm_daP = create_mjg_dialog(toplevel, "sdm"); fm_sdm_daP->client_data = (XtPointer)2; fm_sdm_daP->callback = save_mesh_cb; /* ----------------------------- */ /* Create a simple menu for File */ file_menu = XtVaCreatePopupShell("file_menu", simpleMenuWidgetClass, parent, NULL); /* - - - - - - - - - - - - - - - - - - - - */ #ifdef NEED_GIMP if (!plugin) #endif { /* Create a menu entry for "open source image" */ fm_osi_sme = XtVaCreateManagedWidget("fm_osi_sme", smeBSBObjectClass, file_menu, NULL); XtAddCallback(fm_osi_sme, XtNcallback, popup_dialog_cb, fm_osi_daP); fm_osi_daP->button = fm_osi_sme; } /* - - - - - - - - - - - - - - - - - - - - */ #ifdef NEED_GIMP if (!plugin) #endif /* NEED_GIMP */ { /* Create a menu entry for "open destination image" */ fm_odi_sme = XtVaCreateManagedWidget("fm_odi_sme", smeBSBObjectClass, file_menu, NULL); XtAddCallback(fm_odi_sme, XtNcallback, popup_dialog_cb, fm_odi_daP); fm_odi_daP->button = fm_odi_sme; } /* - - - - - - - - - - - - - - */ /* Create a menu item separator */ XtVaCreateManagedWidget("fm_sep_sme", smeLineObjectClass, file_menu, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "open source mesh" */ fm_osm_sme = XtVaCreateManagedWidget("fm_osm_sme", smeBSBObjectClass, file_menu, NULL); XtAddCallback(fm_osm_sme, XtNcallback, popup_dialog_cb, fm_osm_daP); fm_osm_daP->button = fm_osm_sme; /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "open destination mesh" */ fm_odm_sme = XtVaCreateManagedWidget("fm_odm_sme", smeBSBObjectClass, file_menu, NULL); XtAddCallback(fm_odm_sme, XtNcallback, popup_dialog_cb, fm_odm_daP); fm_odm_daP->button = fm_odm_sme; /* - - - - - - - - - - - - - - */ /* Create a menu item separator */ XtVaCreateManagedWidget("fm_sep_sme", smeLineObjectClass, file_menu, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "save source mesh" */ fm_ssm_sme = XtVaCreateManagedWidget("fm_ssm_sme", smeBSBObjectClass, file_menu, NULL); XtAddCallback(fm_ssm_sme, XtNcallback, popup_dialog_cb, fm_ssm_daP); fm_ssm_daP->button = fm_ssm_sme; /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "save destination mesh" */ fm_sdm_sme = XtVaCreateManagedWidget("fm_sdm_sme", smeBSBObjectClass, file_menu, NULL); XtAddCallback(fm_sdm_sme, XtNcallback, popup_dialog_cb, fm_sdm_daP); fm_sdm_daP->button = fm_sdm_sme; /* - - - - - - - - - - - - - - */ /* Create a menu item separator */ XtVaCreateManagedWidget("fm_sep_sme", smeLineObjectClass, file_menu, NULL); /* - - - - - - - - - - - - - - */ /* Create a menu item separator */ XtVaCreateManagedWidget("fm_sep_sme", smeLineObjectClass, file_menu, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "quit" */ fm_quit_sme = XtVaCreateManagedWidget("fm_quit_sme", smeBSBObjectClass, file_menu, NULL); XtAddCallback(fm_quit_sme, XtNcallback, exit_callback, NULL); /* ------------------------- */ /* Create a file menu button */ if(left_w != NULL) { file_menu_button = XtVaCreateManagedWidget("file_menu_button", menuButtonWidgetClass, parent, XtNmenuName, "file_menu", XtNfromHoriz, left_w, NULL); } else { file_menu_button = XtVaCreateManagedWidget("file_menu_button", menuButtonWidgetClass, parent, XtNmenuName, "file_menu", NULL); } return(file_menu_button); } #ifdef NEED_GIMP static char* my_base_name (char *str) { char *t; t = strrchr (str, '/'); if (!t) return str; return t+1; } /* create_dest_menu: create an open destination image menu */ Widget create_dest_menu(Widget parent, Widget toplevel, Widget left_w) { Widget dest_menu_button, dest_menu, menuitem; char *name; char *image_label; char *label; gint32 *images; gint32 *layers; gint32 *channels; int nimages; int nlayers; int nchannels; int i, j, k; /* FIXME: how can we dynamically update this menu? */ /* Open destination image menu that asks for a layer. */ dest_menu = XtVaCreatePopupShell ("dest_menu", simpleMenuWidgetClass, parent, NULL); /* Add an entry for each of the drawables we have. Shamelessly stolen from libgimp/gimpmenu.c (gimp_drawable_menu_new) */ images = gimp_query_images (&nimages); for (i = 0, k = 0; i < nimages; i++) /* FIXME: check any constraints. */ if (1) { name = gimp_image_get_filename (images[i]); image_label = g_new (char, strlen (name) + 16); sprintf (image_label, "%s-%d", my_base_name (name), images[i]); g_free (name); layers = gimp_image_get_layers (images[i], &nlayers); for (j = 0; j < nlayers; j++) /* FIXME: check any constraints. */ if (1) { name = gimp_layer_get_name (layers[j]); label = g_new (char, strlen (image_label) + strlen (name) + 2); sprintf (label, "%s/%s", image_label, name); g_free (name); menuitem = XtVaCreateManagedWidget (label, smeBSBObjectClass, dest_menu, NULL); XtAddCallback (menuitem, XtNcallback, open_gimp_dest_cb, (XtPointer)layers[j]); g_free (label); k += 1; } channels = gimp_image_get_channels (images[i], &nchannels); for (j = 0; j < nchannels; j++) /* FIXME: check any constraints. */ if (1) { name = gimp_channel_get_name (channels[j]); label = g_new (char, strlen (image_label) + strlen (name) + 2); sprintf (label, "%s/%s", image_label, name); g_free (name); menuitem = XtVaCreateManagedWidget (label, smeBSBObjectClass, dest_menu, NULL); XtAddCallback (menuitem, XtNcallback, open_gimp_dest_cb, (XtPointer)channels[j]); g_free (label); k += 1; } g_free (image_label); } g_free (images); if (k == 0) { menuitem = XtVaCreateManagedWidget ("none", smeBSBObjectClass, dest_menu, NULL); /* No callback, since there is no drawable. */ } if(left_w != NULL) { dest_menu_button = XtVaCreateManagedWidget("dest_menu_button", menuButtonWidgetClass, parent, XtNmenuName, "dest_menu", XtNfromHoriz, left_w, NULL); } else { dest_menu_button = XtVaCreateManagedWidget("dest_menu_button", menuButtonWidgetClass, parent, XtNmenuName, "dest_menu", NULL); } return(dest_menu_button); } #endif xmorph-20140707+nmu2/xmorph/diw_map.h0000664000000000000000000001423012356304633014155 0ustar /* diw_map.h : Digital Image Warping graphical user interface header // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // Provided as is. No warrantees, express or implied. */ #ifndef _DIW_MAP__INCLUDED_ #define _DIW_MAP__INCLUDED_ #include #include #include #include #include #include "mesh.h" #include "image_diw.h" typedef struct diw_map_ { /* in lieu of making the DIW its own widget... */ Pixmap pixmap; XImage *ximage; int width, height; /* X pixmap/image geometry */ Widget widget; /* core widget, for drawing images in */ Widget form; /* geometry widget, parent of all diw_map children */ Widget smp, sml; /* Toggle: source mesh [points, lines] */ Widget dmp, dml; /* Toggle: destination mesh [points, lines] */ Widget tmp, tml; /* Toggle: tween mesh [points, lines] */ Widget dissolve_sb, warp_sb; /* scrollbars */ RgbaImageT src_img; RgbaImageT dst_img; double img_t; /* RGBA crossfade parameter */ double img_brightness; /* brightness factor of image */ MeshT mesh_src; MeshT mesh_dst; double mesh_t; /* parameter between 0.0 and 1.0 for s or d map */ Boolean meshpoint_selected; int meshpoint_selected_loc[2]; /* i,j indices */ Boolean meshpoints_t_draw; /* draw interp mesh points over image */ Boolean meshlines_t_draw; /* draw interp mesh lines over image */ Boolean meshpoints_src_draw; /* draw src mesh points over image */ Boolean meshlines_src_draw; /* draw src mesh lines over image */ Boolean meshpoints_dst_draw; /* draw dst mesh points over image */ Boolean meshlines_dst_draw; /* draw dst mesh lines over image */ } diw_map_t; extern int verbose; /* for debugging */ /* Dithering colormap macros */ /* ------------------------- */ /* ???_NUM_BITS: number of bits per channel for the dithering colormap. */ #define RED_NUM_BITS 2 #define GRN_NUM_BITS 3 #define BLU_NUM_BITS 2 #define RGB_TOTAL_BITS (RED_NUM_BITS + GRN_NUM_BITS + BLU_NUM_BITS) /* ???_MAXVAL: maximum values for each channel in the dithering colormap */ #define RED_MAXVAL ((1 << RED_NUM_BITS) - 1) #define GRN_MAXVAL ((1 << GRN_NUM_BITS) - 1) #define BLU_MAXVAL ((1 << BLU_NUM_BITS) - 1) #define RED_SHIFT (GRN_NUM_BITS + BLU_NUM_BITS) #define GRN_SHIFT (BLU_NUM_BITS) #define BLU_SHIFT 0 /* DCI: converts from r,g,b values to dithering colormap index */ #define DCI(r,g,b) (((r)<> RED_SHIFT) #define GRN_DCI(d) (((d) & XPI_GREEN) >> GRN_SHIFT) #define BLU_DCI(d) ((d) & XPI_BLUE) #define NUM_DIW_XCOLORS (1< #include #include #include #include #include #include #include #include "mjg_dialog.h" #include "sequence.h" #include "warp_menu.h" /* create_warp_menu: Create a warp menu and its button // returns the widget of the menu button */ Widget create_warp_menu(Widget parent, Widget toplevel, Widget left_w) { Widget warp_menu_button; Widget warp_menu; Widget wm_ssfn_sme; /* set sequence file name */ Widget wm_ssns_sme; /* set sequence number of steps */ Widget wm_seqp_sme; /* warp sequence preview */ Widget wm_seq_sme; /* warp sequence */ dialog_apdx_t *wm_ssfn_daP; dialog_apdx_t *wm_ssns_daP; /* ========================= */ /* Create the Dialog widgets */ /* - - - - - - - - - - - - - - - - - */ /* Create the "set sequence file name" dialog */ wm_ssfn_daP = create_mjg_dialog(toplevel, "ssfn"); wm_ssfn_daP->client_data = NULL; wm_ssfn_daP->callback = set_sequence_file_name_cb; /* - - - - - - - - - - - - - - - - - */ /* Create the "set sequence number of steps" dialog */ wm_ssns_daP = create_mjg_dialog(toplevel, "ssns"); wm_ssns_daP->client_data = NULL; wm_ssns_daP->callback = set_sequence_num_frames_cb; /* ----------------------------- */ /* Create a simple menu for Command */ warp_menu = XtVaCreatePopupShell("warp_menu", simpleMenuWidgetClass, parent, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "set sequence file name" */ wm_ssfn_sme = XtVaCreateManagedWidget("wm_ssfn_sme", smeBSBObjectClass, warp_menu, NULL); XtAddCallback(wm_ssfn_sme, XtNcallback, popup_dialog_cb, wm_ssfn_daP); wm_ssfn_daP->button = wm_ssfn_sme; /* Set the filename from the corresponding resource. */ if (!get_sequence_file_name ()) set_sequence_file_name_cb (wm_ssfn_sme, 0, wm_ssfn_daP); /* FIXME: if the sequence file name is already set, then propagate it to the dialog string. */ /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "set sequence number of steps" */ wm_ssns_sme = XtVaCreateManagedWidget("wm_ssns_sme", smeBSBObjectClass, warp_menu, NULL); XtAddCallback(wm_ssns_sme, XtNcallback, popup_dialog_cb, wm_ssns_daP); wm_ssns_daP->button = wm_ssns_sme; if (get_sequence_num_frames () < 0) /* Set the number of frames from the corresponding resource. */ set_sequence_num_frames_cb (wm_ssns_sme, 0, wm_ssns_daP); /* FIXME: if the sequence number of frames is already set, then propagate it to the dialog string default value. */ /* Create a menu entry for "warp sequence preview" */ wm_seqp_sme = XtVaCreateManagedWidget("wm_seqp_sme", smeBSBObjectClass, warp_menu, NULL); XtAddCallback(wm_seqp_sme, XtNcallback, warp_sequence_cb, (XtPointer)TRUE); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "warp sequence" */ wm_seq_sme = XtVaCreateManagedWidget("wm_seq_sme", smeBSBObjectClass, warp_menu, NULL); XtAddCallback(wm_seq_sme, XtNcallback, warp_sequence_cb, (XtPointer)FALSE); /* ------------------------- */ /* Create a warp menu button */ warp_menu_button = XtVaCreateManagedWidget("warp_menu_button", menuButtonWidgetClass, parent, XtNmenuName, "warp_menu", XtNfromHoriz, left_w, NULL); return(warp_menu_button); } xmorph-20140707+nmu2/xmorph/xmorph.h0000664000000000000000000000176212356304633014060 0ustar /* Written and Copyright (C) 1994-1999 by Michael J. Gourlay This file is part of Xmorph. Xmorph 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. Xmorph 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 Xmorph; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef XMORPH_H #define XMORPH_H XtAppContext initialize_application(int width, int height, char *srcmesh, char *dstmesh, int *argc, char **argv, int show); void exit_callback(Widget w, XtPointer client_data, XtPointer call_data); #endif xmorph-20140707+nmu2/xmorph/mesh_cb.h0000664000000000000000000000117412356304633014140 0ustar /* mesh_cb.h : Callbacks for Digital Image Warp mesh related widgets // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // NO WARRANTEES, EXPRESS OR IMPLIED. */ #ifndef _MESH_CB_H__INCLUDED_ #define _MESH_CB_H__INCLUDED_ #include #include extern void reset_mesh_cb(Widget w, XtPointer client_data, XtPointer call_data); extern void functionalize_mesh_cb(Widget w, XtPointer client_data, XtPointer call_data); extern void load_mesh_cb(Widget w, XtPointer client_data, XtPointer call_data); extern void save_mesh_cb(Widget w, XtPointer client_data, XtPointer call_data); #endif xmorph-20140707+nmu2/xmorph/mjg_dialog.c0000664000000000000000000001415012356304633014625 0ustar /* my_dialog.c : My version of the Athena Dialog // // This dialog automatically adds the "okay" and "cancel" command // buttons, registers callbacks for them to popdown the dialog, and adds // the action to the Text widget so that pressing "Return" calls the // "okay" callback. Also, I provide for a callback that the "okay" // callback calls after popping down the dialog. // // This translation should be added to the application's resources: // Dialog.Text.translations: #override Return: mjg_okay() // // The user only has to create the mjg_dialog by calling // create_mjg_dialog() and setting the dialog_apdx.callback and // dialog_apdx.button members. The rest is taken care of by these // routines. The user may also set the dialog_apdx.client_data member // to provide for client_data for the dialog_apdx.callback. // That callback is also given the address of the dialog_apdx as the // call_data. // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // // These routines are used for the X Window System only and are not // needed for tkmorph. */ #include #include #include #include "mjg_dialog.h" #include "my_malloc.h" /* --------------------------------------------------------------- */ /* Global structure for dialog appendices */ #define NUM_DIALOG_APDX 80 static int mjg_dialog_count=0; static dialog_apdx_t mjg_dialog[NUM_DIALOG_APDX]; /* --------------------------------------------------------------- */ /* dialog_apdx_of_widget : map a widget to its dialog_apdx // incoming widget could be the dialog or any child of the dialog */ dialog_apdx_t * dialog_apdx_of_widget(Widget w) { int indx; for(indx=0; indxbutton != NULL) { /* Find where to put the dialog */ XtTranslateCoords(daP->button, 0, -30, &x, &y); XtVaSetValues(daP->shell, XtNx, x, XtNy, y, NULL); /* Desensitize the activation button */ XtSetSensitive(daP->button, FALSE); } XtPopup(daP->shell, XtGrabNonexclusive); } /* --------------------------------------------------------------- */ /* cancel_dialog_cb : callback to cancel a dialog */ /*ARGSUSED*/ static void cancel_dialog_cb(Widget w, XtPointer client_data, XtPointer call_data) { dialog_apdx_t *daP = (dialog_apdx_t *)client_data; XtPopdown(daP->shell); if(daP->button != NULL) { XtSetSensitive(daP->button, TRUE); } } /* --------------------------------------------------------------- */ /* okay_dialog_cb : callback to accept a dialog */ /*ARGSUSED*/ static void okay_dialog_cb(Widget w, XtPointer client_data, XtPointer call_data) { dialog_apdx_t *daP = (dialog_apdx_t *)client_data; XtPopdown(daP->shell); if(daP->button != NULL) { XtSetSensitive(daP->button, TRUE); } if(daP->callback != NULL) { daP->callback(w, daP->client_data, (XtPointer)daP); } } /* =============================================================== */ /* Actions */ /* --------------------------------------------------------------- */ /* mjg_dialog_okay : action to accept dialog's value */ /*ARGSUSED*/ void mjg_dialog_okay(Widget w, XEvent *event, String *params, Cardinal *num_params) { dialog_apdx_t *daP; daP = dialog_apdx_of_widget(w); okay_dialog_cb(w, (XtPointer)daP, NULL); } /* =============================================================== */ /* mjg_dialog_translations : event-to-action mappings // This translation should be added to the application's resources: // Dialog.Text.translations: #override Return: mjg_okay() */ char mjg_dialog_translations[] = "Return: mjg_okay()"; static XtActionsRec actions[] = { {"mjg_okay", mjg_dialog_okay} }; /* --------------------------------------------------------------- */ /* create_mjg_dialog: create an mjg_dialog widget // // Side effect : allocates names for widgets // // Changes global variable mjg_dialog_count // // User must subsequently set the daP->button member to the command // widget that launches this dialog. */ dialog_apdx_t * create_mjg_dialog(Widget parent, char *name) { dialog_apdx_t *daP; char *shell_name; char *dialog_name; if(mjg_dialog_count >= NUM_DIALOG_APDX) { fprintf(stderr, "create_mjg_dialog: exceeded max num of mjg_dialog's\n"); return(NULL); } XtAppAddActions(XtWidgetToApplicationContext(parent), actions, XtNumber(actions)); if((shell_name = MY_CALLOC(strlen(name)+strlen("mds_")+20, char))==NULL) { return(NULL); } if((dialog_name = MY_CALLOC(strlen(name)+strlen("md_")+20, char))==NULL) { return(NULL); } sprintf(shell_name, "mds_%s", name); sprintf(dialog_name, "md_%s", name); daP = &mjg_dialog[mjg_dialog_count]; mjg_dialog_count++; daP->client_data = NULL; daP->callback = NULL; daP->button = NULL; /* Create the Dialog shell widget */ daP->shell = XtVaCreatePopupShell(shell_name, transientShellWidgetClass, parent, NULL); daP->dialog = XtVaCreateManagedWidget(dialog_name, dialogWidgetClass, daP->shell, NULL); /* Finding this sort of violates the dialog's privacy. shhhh... */ daP->text = XtNameToWidget(daP->dialog, "value"); daP->okay = XtVaCreateManagedWidget("okay", commandWidgetClass, daP->dialog, NULL); XtAddCallback(daP->okay, XtNcallback, okay_dialog_cb, daP); daP->cancel = XtVaCreateManagedWidget("cancel", commandWidgetClass, daP->dialog, NULL); XtAddCallback(daP->cancel,XtNcallback,cancel_dialog_cb,daP); #if 0 FREE(shell_name); FREE(dialog_name); #endif return(daP); } xmorph-20140707+nmu2/xmorph/Makefile.in0000664000000000000000000012332512356342011014427 0ustar # Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@ # beginning of file Makefile.conf # # GIMP: Adds GIMP plugin functionality to xmorph. # Also define NEED_GIMP=1. If this is defined, then you may run # xmorph both as a standalone application, and by adding it to your # ~/.gimp/plug-ins directory (usually via a symlink). From what I # understand, this will not work for tkmorph. See GIMPLIBS, below. # # REAL: Size of a "REAL" used by spline code. # Correct value is "double". Do not change. # # RGBA_MESH_WARP: flag to tell RgbaImage to include mesh-based warping # methods. Do not change. # # RGBA_TK: flag to tell RgbaImage to include Tk Photo image code. # DO NOT DEFINE for xmorph. Only define for tkmorph. # Also change the "all" target if RGBA_TK is changed. # # RED_GREEN_COLOR_BLIND: uses blue instead of red for color of # 'destination' mesh lines and points. # # STRDUP_PROTO_BROKEN: For some versions of GNU C, the string.h # header file has an incorrect prototype for strdup. If you # experience problems compiling, related to the strdup prototype, # then define STRDUP_PROTO_BROKEN. # For tkmorph: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRGBA_TK # For colorblind: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DRED_GREEN_COLOR_BLIND # For GIMP plugin: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DGIMP -DNEED_GIMP=1 # Broken GNU C: #DEFINES=-DREAL=double -DRGBA_MESH_WARP -DSTRDUP_PROTO_BROKEN # Most systems: #DEFINES=-DREAL=double -DRGBA_MESH_WARP VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = $(srcdir)/../Makefile.conf $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in @COND_XMORPH_TRUE@bin_PROGRAMS = xmorph$(EXEEXT) subdir = xmorph ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_xmorph_OBJECTS = xmorph-help_menu.$(OBJEXT) \ xmorph-diw_map.$(OBJEXT) xmorph-mjg_dialog.$(OBJEXT) \ xmorph-file_menu.$(OBJEXT) xmorph-xmorph.$(OBJEXT) \ xmorph-sequence.$(OBJEXT) xmorph-warp_menu.$(OBJEXT) \ xmorph-mesh_menu.$(OBJEXT) xmorph-image_diw.$(OBJEXT) \ xmorph-image_cb.$(OBJEXT) xmorph-mesh_cb.$(OBJEXT) xmorph_OBJECTS = $(am_xmorph_OBJECTS) am__DEPENDENCIES_1 = xmorph_DEPENDENCIES = main-x.o $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ ../libmorph/libmorph.la xmorph_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(xmorph_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --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 = $(xmorph_SOURCES) DIST_SOURCES = $(xmorph_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac 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@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ 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@ 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@ CFLAGS_CONF = -DREAL=double -DRGBA_MESH_WARP # # Must have the X libraries: X11, MIT Athena Widgets, X Toolkit, X Misc Utils # # Linux 2.0: must have /usr/X11/lib # or /usr/X11R6/lib explicitly in library search path # # SunOS (pre-Solaris): Might have to use static X libraries because # dynamic X libraries are incomplete. # # Solaris: To link to openwin libraries, add -L/usr/openwin/lib # # IRIX6.2: Need to have -lcvt after -lXt # If you receive an error about an unresolved symbol named # SgCvtCreateConversionContext, you need to include -lcvt. # The cvt library is available in the goldengate.sw.goldengate package # Sun Solaris: #XLIBS=-L/usr/openwin/lib -lXaw -lXmu -lXext -lXt -lX11 # Linux: #XLIBS=-L/usr/X11/lib -lXaw -lXmu -lXext -lXt -lX11 #XLIBS=-L/usr/X11R6/lib -lXaw -lXmu -lXext -lXt -lX11 # SGI IRIX: #XLIBS= -lXaw -lXmu -lXext -lXt -lcvt -lX11 XLIBS = @X_LIBS@ @X_PRE_LIBS@ -lXaw -lXmu -lXext -lXt -lX11 @X_EXTRA_LIBS@ # If you have defined -DGIMP in the DEFINES section, then xmorph will # be built to run both as a standalone application and as a GIMP # plugin. Here, you need to specify the appropriate GIMP libraries. # # Comment out this variable if you have not used -DGIMP. #GIMPLIBS=-L/usr/local/lib -lgimp -lglib #GIMPLIBS=-lgimp -lglib GIMPLIBS = # # Must have the math library (-lm). # # # Linux: Add -ldl if you get link error regarding dlerror, dlopen, or # dlsym # # # FreeBSD: Do not use static libraries, because for some reason they # do not work. # # # SunOS: Use the /usr/lib/debug/malloc.o module if you want to do # memory checking. # Also see the CFLAGS comments about memory checking under SunOS. # # # SGI IRIX: Use -lmalloc to link with their special memory allocation # routines. If you get an error about mallopt being # unresolved, then you will have to link with the libmalloc # shared object. Do this by specifying -lmalloc here. # # -lmalloc_cv has more robust memory checking #NON_GUI_LIBS = -lm #NON_GUI_LIBS = -lm -ldl #NON_GUI_LIBS = -lm /usr/lib/debug/malloc.o #NON_GUI_LIBS = -lm -lmalloc NON_GUI_LIBS = -lm EXTRA_DIST = select.xbm unselect.xbm #AM_CFLAGS = $(CFLAGS) $(CFLAGS_CONF) -DX_GUI -DNDEBUG_LIBMORPH_REF_COUNT INCLUDES = -I$(top_srcdir)/libmorph -I$(top_srcdir)/intl xmorph_CFLAGS = $(X_CFLAGS) $(CFLAGS) $(CFLAGS_CONF) -DNDEBUG_LIBMORPH_REF_COUNT xmorph_SOURCES = main.h \ help_menu.c diw_map.c mjg_dialog.c file_menu.c \ xmorph.c sequence.c warp_menu.c mesh_menu.c \ diw_map.h warp_menu.h mjg_dialog.h \ image_diw.h image_diw.c \ help_menu.h \ xmorph.h sequence.h mesh_menu.h \ image_cb.h image_cb.c \ file_menu.h \ mesh_cb.h mesh_cb.c xmorph_LDADD = main-x.o $(X_PRE_LIBS) $(X_LIBS) $(XLIBS) $(X_EXTRA_LIBS) \ $(GIMPLIBS) $(NON_GUI_LIBS) $(INTLLIBS) ../libmorph/libmorph.la all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.conf $(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 xmorph/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu xmorph/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; $(srcdir)/../Makefile.conf: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list xmorph$(EXEEXT): $(xmorph_OBJECTS) $(xmorph_DEPENDENCIES) $(EXTRA_xmorph_DEPENDENCIES) @rm -f xmorph$(EXEEXT) $(xmorph_LINK) $(xmorph_OBJECTS) $(xmorph_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-diw_map.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-file_menu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-help_menu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-image_cb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-image_diw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-mesh_cb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-mesh_menu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-mjg_dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-sequence.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-warp_menu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmorph-xmorph.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(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@ $(am__mv) $(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@ $(am__mv) $(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 $@ $< xmorph-help_menu.o: help_menu.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-help_menu.o -MD -MP -MF $(DEPDIR)/xmorph-help_menu.Tpo -c -o xmorph-help_menu.o `test -f 'help_menu.c' || echo '$(srcdir)/'`help_menu.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-help_menu.Tpo $(DEPDIR)/xmorph-help_menu.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='help_menu.c' object='xmorph-help_menu.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-help_menu.o `test -f 'help_menu.c' || echo '$(srcdir)/'`help_menu.c xmorph-help_menu.obj: help_menu.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-help_menu.obj -MD -MP -MF $(DEPDIR)/xmorph-help_menu.Tpo -c -o xmorph-help_menu.obj `if test -f 'help_menu.c'; then $(CYGPATH_W) 'help_menu.c'; else $(CYGPATH_W) '$(srcdir)/help_menu.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-help_menu.Tpo $(DEPDIR)/xmorph-help_menu.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='help_menu.c' object='xmorph-help_menu.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-help_menu.obj `if test -f 'help_menu.c'; then $(CYGPATH_W) 'help_menu.c'; else $(CYGPATH_W) '$(srcdir)/help_menu.c'; fi` xmorph-diw_map.o: diw_map.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-diw_map.o -MD -MP -MF $(DEPDIR)/xmorph-diw_map.Tpo -c -o xmorph-diw_map.o `test -f 'diw_map.c' || echo '$(srcdir)/'`diw_map.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-diw_map.Tpo $(DEPDIR)/xmorph-diw_map.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='diw_map.c' object='xmorph-diw_map.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-diw_map.o `test -f 'diw_map.c' || echo '$(srcdir)/'`diw_map.c xmorph-diw_map.obj: diw_map.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-diw_map.obj -MD -MP -MF $(DEPDIR)/xmorph-diw_map.Tpo -c -o xmorph-diw_map.obj `if test -f 'diw_map.c'; then $(CYGPATH_W) 'diw_map.c'; else $(CYGPATH_W) '$(srcdir)/diw_map.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-diw_map.Tpo $(DEPDIR)/xmorph-diw_map.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='diw_map.c' object='xmorph-diw_map.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-diw_map.obj `if test -f 'diw_map.c'; then $(CYGPATH_W) 'diw_map.c'; else $(CYGPATH_W) '$(srcdir)/diw_map.c'; fi` xmorph-mjg_dialog.o: mjg_dialog.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-mjg_dialog.o -MD -MP -MF $(DEPDIR)/xmorph-mjg_dialog.Tpo -c -o xmorph-mjg_dialog.o `test -f 'mjg_dialog.c' || echo '$(srcdir)/'`mjg_dialog.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-mjg_dialog.Tpo $(DEPDIR)/xmorph-mjg_dialog.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mjg_dialog.c' object='xmorph-mjg_dialog.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-mjg_dialog.o `test -f 'mjg_dialog.c' || echo '$(srcdir)/'`mjg_dialog.c xmorph-mjg_dialog.obj: mjg_dialog.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-mjg_dialog.obj -MD -MP -MF $(DEPDIR)/xmorph-mjg_dialog.Tpo -c -o xmorph-mjg_dialog.obj `if test -f 'mjg_dialog.c'; then $(CYGPATH_W) 'mjg_dialog.c'; else $(CYGPATH_W) '$(srcdir)/mjg_dialog.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-mjg_dialog.Tpo $(DEPDIR)/xmorph-mjg_dialog.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mjg_dialog.c' object='xmorph-mjg_dialog.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-mjg_dialog.obj `if test -f 'mjg_dialog.c'; then $(CYGPATH_W) 'mjg_dialog.c'; else $(CYGPATH_W) '$(srcdir)/mjg_dialog.c'; fi` xmorph-file_menu.o: file_menu.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-file_menu.o -MD -MP -MF $(DEPDIR)/xmorph-file_menu.Tpo -c -o xmorph-file_menu.o `test -f 'file_menu.c' || echo '$(srcdir)/'`file_menu.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-file_menu.Tpo $(DEPDIR)/xmorph-file_menu.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='file_menu.c' object='xmorph-file_menu.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-file_menu.o `test -f 'file_menu.c' || echo '$(srcdir)/'`file_menu.c xmorph-file_menu.obj: file_menu.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-file_menu.obj -MD -MP -MF $(DEPDIR)/xmorph-file_menu.Tpo -c -o xmorph-file_menu.obj `if test -f 'file_menu.c'; then $(CYGPATH_W) 'file_menu.c'; else $(CYGPATH_W) '$(srcdir)/file_menu.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-file_menu.Tpo $(DEPDIR)/xmorph-file_menu.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='file_menu.c' object='xmorph-file_menu.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-file_menu.obj `if test -f 'file_menu.c'; then $(CYGPATH_W) 'file_menu.c'; else $(CYGPATH_W) '$(srcdir)/file_menu.c'; fi` xmorph-xmorph.o: xmorph.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-xmorph.o -MD -MP -MF $(DEPDIR)/xmorph-xmorph.Tpo -c -o xmorph-xmorph.o `test -f 'xmorph.c' || echo '$(srcdir)/'`xmorph.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-xmorph.Tpo $(DEPDIR)/xmorph-xmorph.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xmorph.c' object='xmorph-xmorph.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-xmorph.o `test -f 'xmorph.c' || echo '$(srcdir)/'`xmorph.c xmorph-xmorph.obj: xmorph.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-xmorph.obj -MD -MP -MF $(DEPDIR)/xmorph-xmorph.Tpo -c -o xmorph-xmorph.obj `if test -f 'xmorph.c'; then $(CYGPATH_W) 'xmorph.c'; else $(CYGPATH_W) '$(srcdir)/xmorph.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-xmorph.Tpo $(DEPDIR)/xmorph-xmorph.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xmorph.c' object='xmorph-xmorph.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-xmorph.obj `if test -f 'xmorph.c'; then $(CYGPATH_W) 'xmorph.c'; else $(CYGPATH_W) '$(srcdir)/xmorph.c'; fi` xmorph-sequence.o: sequence.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-sequence.o -MD -MP -MF $(DEPDIR)/xmorph-sequence.Tpo -c -o xmorph-sequence.o `test -f 'sequence.c' || echo '$(srcdir)/'`sequence.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-sequence.Tpo $(DEPDIR)/xmorph-sequence.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sequence.c' object='xmorph-sequence.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-sequence.o `test -f 'sequence.c' || echo '$(srcdir)/'`sequence.c xmorph-sequence.obj: sequence.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-sequence.obj -MD -MP -MF $(DEPDIR)/xmorph-sequence.Tpo -c -o xmorph-sequence.obj `if test -f 'sequence.c'; then $(CYGPATH_W) 'sequence.c'; else $(CYGPATH_W) '$(srcdir)/sequence.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-sequence.Tpo $(DEPDIR)/xmorph-sequence.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sequence.c' object='xmorph-sequence.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-sequence.obj `if test -f 'sequence.c'; then $(CYGPATH_W) 'sequence.c'; else $(CYGPATH_W) '$(srcdir)/sequence.c'; fi` xmorph-warp_menu.o: warp_menu.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-warp_menu.o -MD -MP -MF $(DEPDIR)/xmorph-warp_menu.Tpo -c -o xmorph-warp_menu.o `test -f 'warp_menu.c' || echo '$(srcdir)/'`warp_menu.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-warp_menu.Tpo $(DEPDIR)/xmorph-warp_menu.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='warp_menu.c' object='xmorph-warp_menu.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-warp_menu.o `test -f 'warp_menu.c' || echo '$(srcdir)/'`warp_menu.c xmorph-warp_menu.obj: warp_menu.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-warp_menu.obj -MD -MP -MF $(DEPDIR)/xmorph-warp_menu.Tpo -c -o xmorph-warp_menu.obj `if test -f 'warp_menu.c'; then $(CYGPATH_W) 'warp_menu.c'; else $(CYGPATH_W) '$(srcdir)/warp_menu.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-warp_menu.Tpo $(DEPDIR)/xmorph-warp_menu.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='warp_menu.c' object='xmorph-warp_menu.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-warp_menu.obj `if test -f 'warp_menu.c'; then $(CYGPATH_W) 'warp_menu.c'; else $(CYGPATH_W) '$(srcdir)/warp_menu.c'; fi` xmorph-mesh_menu.o: mesh_menu.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-mesh_menu.o -MD -MP -MF $(DEPDIR)/xmorph-mesh_menu.Tpo -c -o xmorph-mesh_menu.o `test -f 'mesh_menu.c' || echo '$(srcdir)/'`mesh_menu.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-mesh_menu.Tpo $(DEPDIR)/xmorph-mesh_menu.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh_menu.c' object='xmorph-mesh_menu.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-mesh_menu.o `test -f 'mesh_menu.c' || echo '$(srcdir)/'`mesh_menu.c xmorph-mesh_menu.obj: mesh_menu.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-mesh_menu.obj -MD -MP -MF $(DEPDIR)/xmorph-mesh_menu.Tpo -c -o xmorph-mesh_menu.obj `if test -f 'mesh_menu.c'; then $(CYGPATH_W) 'mesh_menu.c'; else $(CYGPATH_W) '$(srcdir)/mesh_menu.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-mesh_menu.Tpo $(DEPDIR)/xmorph-mesh_menu.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh_menu.c' object='xmorph-mesh_menu.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-mesh_menu.obj `if test -f 'mesh_menu.c'; then $(CYGPATH_W) 'mesh_menu.c'; else $(CYGPATH_W) '$(srcdir)/mesh_menu.c'; fi` xmorph-image_diw.o: image_diw.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-image_diw.o -MD -MP -MF $(DEPDIR)/xmorph-image_diw.Tpo -c -o xmorph-image_diw.o `test -f 'image_diw.c' || echo '$(srcdir)/'`image_diw.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-image_diw.Tpo $(DEPDIR)/xmorph-image_diw.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='image_diw.c' object='xmorph-image_diw.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-image_diw.o `test -f 'image_diw.c' || echo '$(srcdir)/'`image_diw.c xmorph-image_diw.obj: image_diw.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-image_diw.obj -MD -MP -MF $(DEPDIR)/xmorph-image_diw.Tpo -c -o xmorph-image_diw.obj `if test -f 'image_diw.c'; then $(CYGPATH_W) 'image_diw.c'; else $(CYGPATH_W) '$(srcdir)/image_diw.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-image_diw.Tpo $(DEPDIR)/xmorph-image_diw.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='image_diw.c' object='xmorph-image_diw.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-image_diw.obj `if test -f 'image_diw.c'; then $(CYGPATH_W) 'image_diw.c'; else $(CYGPATH_W) '$(srcdir)/image_diw.c'; fi` xmorph-image_cb.o: image_cb.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-image_cb.o -MD -MP -MF $(DEPDIR)/xmorph-image_cb.Tpo -c -o xmorph-image_cb.o `test -f 'image_cb.c' || echo '$(srcdir)/'`image_cb.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-image_cb.Tpo $(DEPDIR)/xmorph-image_cb.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='image_cb.c' object='xmorph-image_cb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-image_cb.o `test -f 'image_cb.c' || echo '$(srcdir)/'`image_cb.c xmorph-image_cb.obj: image_cb.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-image_cb.obj -MD -MP -MF $(DEPDIR)/xmorph-image_cb.Tpo -c -o xmorph-image_cb.obj `if test -f 'image_cb.c'; then $(CYGPATH_W) 'image_cb.c'; else $(CYGPATH_W) '$(srcdir)/image_cb.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-image_cb.Tpo $(DEPDIR)/xmorph-image_cb.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='image_cb.c' object='xmorph-image_cb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-image_cb.obj `if test -f 'image_cb.c'; then $(CYGPATH_W) 'image_cb.c'; else $(CYGPATH_W) '$(srcdir)/image_cb.c'; fi` xmorph-mesh_cb.o: mesh_cb.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-mesh_cb.o -MD -MP -MF $(DEPDIR)/xmorph-mesh_cb.Tpo -c -o xmorph-mesh_cb.o `test -f 'mesh_cb.c' || echo '$(srcdir)/'`mesh_cb.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-mesh_cb.Tpo $(DEPDIR)/xmorph-mesh_cb.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh_cb.c' object='xmorph-mesh_cb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-mesh_cb.o `test -f 'mesh_cb.c' || echo '$(srcdir)/'`mesh_cb.c xmorph-mesh_cb.obj: mesh_cb.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -MT xmorph-mesh_cb.obj -MD -MP -MF $(DEPDIR)/xmorph-mesh_cb.Tpo -c -o xmorph-mesh_cb.obj `if test -f 'mesh_cb.c'; then $(CYGPATH_W) 'mesh_cb.c'; else $(CYGPATH_W) '$(srcdir)/mesh_cb.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xmorph-mesh_cb.Tpo $(DEPDIR)/xmorph-mesh_cb.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh_cb.c' object='xmorph-mesh_cb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xmorph_CFLAGS) $(CFLAGS) -c -o xmorph-mesh_cb.obj `if test -f 'mesh_cb.c'; then $(CYGPATH_W) 'mesh_cb.c'; else $(CYGPATH_W) '$(srcdir)/mesh_cb.c'; fi` 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) set x; \ 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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS 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 # ### ACGM : the project now ignores this variable # # Read the man page for your linker before sending me email about # problems. # # Apollo w/ Domain/OS, BSD: omit XLIBS #LIBS = $(GIMPLIBS) $(NON_GUI_LIBS) #LIBS = # end of file Makefile.conf #keep this first and hope they are processed in order #main.h : ../morph/main.h ; ln -s ../morph/main.h . diw_map.o : diw_map.c main.h main-x.o : ../morph/main.c ; $(COMPILE) -DX_GUI -DNDEBUG_LIBMORPH_REF_COUNT -c ../morph/main.c -o main-x.o # 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: xmorph-20140707+nmu2/xmorph/main.h0000664000000000000000000000407612356304633013470 0ustar /* main.h : Digital Image Warping for X Window System // // A graphical user interface to a mesh warping algorithm // Written and Copyright (C) 1994-1999 by Michael J. Gourlay This file is part of Xmorph. Xmorph 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. Xmorph 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 Xmorph; see the file LICENSE. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef MAIN_H #define MAIN_H #define NUM_ORIG_IMAGES 2 extern int verbose; extern RgbaImageT orig_image[NUM_ORIG_IMAGES]; #ifdef GIMP # define NEED_GIMP 1 /* xmorph plugin changes for the GIMP * Copyright (C) 1997, Gordon Matzigkeit * Gordon Matzigkeit , 1997 * * The GIMP -- an image manipulation program * Copyright (C) 1995 Spencer Kimball and Peter Mattis * * Bump map plug-in --- emboss an image by using another image as a bump map * Copyright (C) 1997 Federico Mena Quintero * federico@nuclecu.unam.mx * * xscanimage -- a graphical scanner-oriented SANE frontend * Authors: * Andreas Beck * Tristan Tarrant * David Mosberger-Tang * * All GIMP-related code is also distributable under the GNU General * Public License. See the above notice for details. * * TODO: * - Update destination menu when GIMP drawables change. * - Properly initialize Xt resources when the plugin changes the output * basename and sequence number of steps. * - Parameterize more things so that GIMP scripts can call us. */ # include #endif /* GIMP */ #endif /* MAIN_H */ xmorph-20140707+nmu2/xmorph/sequence.h0000664000000000000000000000224712356304633014352 0ustar /* sequence.h: routines to make a sequence of digital image warp frames // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // NO WARRANTEES, EXPRESS OR IMPLIED. */ #ifndef _SEQUENCE__INCLUDED_ #define _SEQUENCE__INCLUDED_ #include #include #include "diw_map.h" #include "RgbaImage.h" extern void warp_rgba_image(RgbaImageT *inP, RgbaImageT *outP, double *sxP, double *syP, double *dxP, double *dyP, int nx, int ny); extern void warp_sequence(diw_map_t *dmP, int steps, char *basename, int show, int preview); extern void set_sequence_file_name_cb(Widget widget, XtPointer client_data, XtPointer call_data); extern void set_sequence_file_name (char *fname); extern char *get_sequence_file_name (void); extern void set_sequence_num_frames_cb(Widget widget, XtPointer client_data, XtPointer call_data); extern void set_sequence_num_frames (int frames); extern int get_sequence_num_frames (void); extern void warp_sequence_cb(Widget widget, XtPointer client_data, XtPointer call_data); /* WarpSequence: action to generate a warp sequence */ extern void WarpSequence(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms); #endif xmorph-20140707+nmu2/xmorph/mesh_menu.c0000664000000000000000000000540012356304633014507 0ustar /* mesh_menu.c : mesh menu widgets and callbacks // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // // These routines are used for the X Window System only and are not // needed for tkmorph. */ #include #include #include #include #include #include #include #include #include #include "mesh_cb.h" #include "mesh_menu.h" /* =============================================================== */ /* --------------------------------------------------------------- */ /* create_mesh_menu: Create a mesh menu and its button // returns the widget of the menu button */ /*ARGSUSED*/ Widget create_mesh_menu(Widget parent, Widget toplevel, Widget left_w) { Widget mesh_menu_button; Widget mesh_menu; Widget mm_rsm_sme, mm_rdm_sme; /* reset src mesh, reset dst mesh */ Widget mm_msm_sme, mm_mdm_sme; /* functionalize src, dst mesh */ /* ----------------------------- */ /* Create a simple menu for Command */ mesh_menu = XtVaCreatePopupShell("mesh_menu", simpleMenuWidgetClass, parent, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "reset source mesh" */ mm_rsm_sme = XtVaCreateManagedWidget("mm_rsm_sme", smeBSBObjectClass, mesh_menu, NULL); XtAddCallback(mm_rsm_sme, XtNcallback, reset_mesh_cb, (XtPointer)1); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "reset destination mesh" */ mm_rdm_sme = XtVaCreateManagedWidget("mm_rdm_sme", smeBSBObjectClass, mesh_menu, NULL); XtAddCallback(mm_rdm_sme, XtNcallback, reset_mesh_cb, (XtPointer)2); /* - - - - - - - - - - - - - - */ /* Create a menu item separator */ XtVaCreateManagedWidget("mm_sep_sme", smeLineObjectClass, mesh_menu, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "functionalize source mesh" */ mm_msm_sme = XtVaCreateManagedWidget("mm_msm_sme", smeBSBObjectClass, mesh_menu, NULL); XtAddCallback(mm_msm_sme, XtNcallback, functionalize_mesh_cb, (XtPointer)1); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "functionalize destination mesh" */ mm_mdm_sme = XtVaCreateManagedWidget("mm_mdm_sme", smeBSBObjectClass, mesh_menu, NULL); XtAddCallback(mm_mdm_sme, XtNcallback, functionalize_mesh_cb, (XtPointer)2); /* ------------------------- */ /* Create a mesh menu button */ mesh_menu_button = XtVaCreateManagedWidget("mesh_menu_button", menuButtonWidgetClass, parent, XtNmenuName, "mesh_menu", XtNfromHoriz, left_w, NULL); return(mesh_menu_button); } xmorph-20140707+nmu2/xmorph/help_menu.c0000664000000000000000000007746712356304633014531 0ustar /* help_menu.c : help menu widgets and callbacks // // Written and Copyright (C) 1994-2000 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // // These routines are used for the X Window System only and are not // needed for tkmorph. */ #include #include #include #include #include #include #include #include #include "xmorph.h" #include "mjg_dialog.h" #include "help_menu.h" /* help strings: // Make sure each line ends with a backslash-n-backslash. // Be sure that there are no spaces at the end of lines after the last // backslashes. */ const char *about_s= "\n\ About XMorph:\n\ \n\ XMorph is a digital image warp program and graphical user interface\n\ written and copyright (C) 1994-2000 by Michael J. Gourlay,\n\ gourlay@colorado-research.com.\n\ \n\ XMorph performs morphological changes to images based on an algorithm\n\ described in Douglas B. Smythe's article ``A Two-Pass Mesh Warping\n\ Algorithm for Object Transformation and Image Interpolation'', ILM\n\ Technical Memo #1030, Computer Graphics Department, Lucasfilm Ltd.,\n\ 1990.\n\ \n\ \n\ The basic method of the program goes like this:\n\ \n\ First, the user loads in a pair of images, one ``source'' image,\n\ and one ``destination'' image. These are the start and finish images.\n\ \n\ Next, the user uses XMorph to shape the ``source'' and ``destination''\n\ meshes over the respective images. This is done by picking meshpoints\n\ and moving them, with the mouse.\n\ \n\ After the meshes have been defined (and saved to files) the user\n\ can warp the images. Images can be either warped manually, if\n\ single images are desired, or an entire sequence of images can be\n\ generated automatically, for an animated sequence. These images can\n\ be saved to files for later use.\n\ \n\ \n\ Please read the other help pages for details on how this process can\n\ be carried out.\n\ \n\ Xmorph is part of GNU software.\n\ \n\ -----------------------------------------------------\n\ \n\ DIW Image Panel images:\n\ \n\ The digital image warp (DIW) panels are the main features of XMorph.\n\ They are the boxes with the images and the meshes. The meshes are\n\ drawn overtop the images. Notice that the images in the DIW image\n\ panels are somewhat ``grainy''. This is a side-effect of the way they\n\ are displayed, which dithers the images using only 64 colors, even\n\ though the images are full-color images (possibly with thousands of\n\ colors). This graininess is a necessary evil to have XMorph not take\n\ control over a large number of the colors available on a typical\n\ display. Don't worry though-- even though the images look grainy in\n\ XMorph's DIW image panels, they images warped and saved to (or loaded\n\ from) disk files are in full color, and do not retain the graininess\n\ shown in the DIW image panels.\n\ \n\ "; /* =============================================================== */ /* // The following code was contributed by PW: // // This is a kludge to work with Apollo's compiler, which does not accept // quoted strings longer than 4095 bytes. The idea is to create two macro // definitions, and then insert code to sprintf them into the mmp_s // definition, before the string is installed as a menu. For non-Apollo // compilers, the definition at the end will use the ANSI string // concatenation feature to give the same result as the older code. */ #define MMP_S_STRING_1 \ "\n\ \n\ \n\ Manipulating the meshes:\n\ \n\ \n\ There are two meshes concurrently active that the user can manipulate:\n\ the ``source'' mesh and the ``destination'' mesh. Each is a grid of\n\ mesh points and mesh lines, which are usualy superimposed over the\n\ ``source'' and ``destination'' images. The ``source'' mesh is colored\n\ green, and the ``destination'' mesh red.\n\ \n\ There is a third mesh, called the ``tween'' mesh, which is colored\n\ yellow, but it depends on the ``source'' and ``destination'' meshes.\n\ Specifically, the ``tween'' mesh is the mesh part-way between the\n\ ``source'' and ``destination'' meshes. When you first run XMorph, the\n\ ``tween'' mesh will be exactly the same as the ``source'' mesh in the\n\ first DIW image panel, and exactly equal to the ``destination'' mesh in\n\ the second DIW image panel. You can use the slide-bar below each image\n\ panel to determine what shape the ``tween'' mesh takes-- it is always\n\ somewhere between the ``source'' and ``destination'' meshes. The\n\ purpose of the ``tween'' mesh is to indicate how much digital image\n\ warping is to be applied to each image when the images are warped.\n\ See the information about ``Warping'' for more details.\n\ \n\ Note that the meshes are drawn with splines connecting the mesh\n\ points, instead of straight line segments. The kind of spline used\n\ was designed (by me :) to maintain smoothness, yet prevent splines\n\ from overshooting the mesh points. The same spline used to draw the\n\ mesh points is used in the actual digital image warp algorithm.\n\ \n\ -----------------------------------------------------\n\ \n\ Moving mesh points:\n\ \n\ Each mesh can be manipulated by grabbing a mesh point, dragging it to\n\ the desired location, and dropping it.\n\ \n\ To grab a mesh point, move the mouse pointer over-top the mesh point,\n\ and press and hold the left mouse button (button 1). The meshes will\n\ redraw themselves, giving the selected meshpoint a highlight in both\n\ DIW image panels. Also, the cursor will change shape and color to\n\ indicate that the mesh point is being dragged. The color of the\n\ cursor indicates which mesh is being manipulated. If the cursor is\n\ green, then a mesh point from the ``source'' mesh is being dragged.\n\ If the cursor is red, then a mesh point from the ``destination'' mesh\n\ is being dragged. The way XMorph decides which mesh to choose from\n\ depends on the setting of the mesh slide-bar below each DIW image panel.\n\ If the slide-bar is closer to the ``source mesh'' side then XMorph will\n\ grab ``source'' mesh points. If the slide-bar is closer to the\n\ ``destination mesh'' side then XMorph will grab ``destination'' mesh\n\ points. XMorph will never choose mesh points from the ``tween'' mesh.\n\ Note that XMorph will grab points from a mesh regardless of whether that\n\ mesh is currently visible.\n\ \n\ To drag a mesh point that has been grabbed, simply move the mouse.\n\ The mesh will not change shape immediately, since on most computers,\n\ the computation required to constantly update the image makes\n\ redrawing that often too slow. You can drag the mesh point anywhere\n\ within the outer boundaries of the mesh (i.e. the edges of the image),\n\ but the digital image warping algorithm requires that the mesh does\n\ not overlap itself. That is, vertical mesh lines must not cross\n\ over other vertical mesh lines, and horizontal mesh lines must not\n\ cross over other horizontal mesh lines. However, since it is usually\n\ much easier to be allowed to violate this rule, at least temporarily\n\ while creating the mesh, this rule is not enforced in XMorph. It is up\n\ to the user to keep the meshes valid. A valid mesh is called\n\ ``functional'' since each line can be represented with a mathematical\n\ function in Cartesian coordinates.\n\ \n\ To drop a mesh point, release the mouse button. The meshes will\n\ be redrawn, and the cursor will return to the ``mesh point selection''\n\ cursor.\n\ \n" #define MMP_S_STRING_2 "\ =====================================================\n\ \n\ Changing the number of mesh lines:\n\ \n\ Often, the number of mesh lines established by XMorph is not the right\n\ number. It is usually close, though, and they start out at convenient\n\ locations most of the time. The best approach to creating a mesh is\n\ this:\n\ \n\ First, delete any obviously useless or extraneous mesh lines. Then\n\ save both meshes to files.\n\ \n\ Next, move the mesh points around from where they started to the\n\ places most near them where mesh points are desired. Mesh lines\n\ should not deviate too far from being straight, unless you really know\n\ what you're doing. A good way to imaging how a warp will look (other\n\ than simply trying it!) is to look the shape of the quarangles the\n\ meshpoints make up. Each quadrangle in the ``source'' image maps to\n\ an analogous quadrangle in the ``destination'' image. Work on one\n\ mesh line at a time, and save both meshes to files often.\n\ \n\ Next, if you decide that you need more mesh lines, add them one at a\n\ time. Save both meshes to files after adding the mesh line. Each\n\ time you add a mesh line, move all of its mesh points to where you\n\ want them, on both the ``source'' and ``destination'' meshes. After\n\ they're in position, save the meshes to files.\n\ \n\ -----------------------------------------------------\n\ \n\ Adding mesh lines:\n\ \n\ To add a mesh line, move the mouse pointer to a place on the image\n\ where the mesh line should pass through. Then, to add a vertical mesh\n\ line, press the middle mouse button (button 2). To add a horizontal\n\ mesh line, press the right mouse button (button 3). The mesh line\n\ will be added to both the ``source'' and ``destination'' meshes. Be\n\ sure to save both meshes immediately. If you save only one mesh and\n\ not the other, the two meshes will not be allowed to be loaded back\n\ in, since their geometries will not match.\n\ \n\ -----------------------------------------------------\n\ \n\ Deleting mesh lines:\n\ \n\ To delete a mesh line, move the mouse pointer to a mesh point on the\n\ line to be deleted. Now, press and hold the ``Shift'' button on the\n\ keyboard. Click on the middle mouse button (button 2) to delete a\n\ vertical mesh line, or click on the right mouse button (button 3) to\n\ delete a horizontal mesh line. Save both meshes to files immediately.\n\ \n\ " /* apollo: The Apollo Domain/OS BSD C compiler does not allow long // constant strings to be used as initializers so the long strings have to // be broken up and then concatenated at run-time. The HPUX 7.0 // compiler used to have the same sort of problem. // // This code was contributed by PW. */ #ifdef apollo char mmp_s [sizeof(MMP_S_STRING_1) + sizeof(MMP_S_STRING_2) - 1]; #else const char *mmp_s = MMP_S_STRING_1 MMP_S_STRING_2 ; #endif const char *file_help_s = "\n\ \n\ \n\ File menu button descriptions:\n\ \n\ \n\ Note that many functions apply to either ``source'' or ``destination''.\n\ Digital image warping is generally applied to ``morph'' one image into\n\ another. That is, one image is reshaped to fit into the shape of the\n\ other. The first image is called the ``source'' image and the second\n\ image is called the ``destination'' image. The meshes which define the\n\ shaped of these images are also called the ``source'' and ``destination''\n\ meshes.\n\ \n\ -----------------------------------------------------\n\ \n\ Open source image...\n\ Open destination image...\n\ \n\ Open and load a Targa (TGA) image from a file into memory to be\n\ used as the current image. A dialog box pops up to prompt the user\n\ for the filename.\n\ \n\ If the loaded image has a different geometry than the previous image,\n\ XMorph will resize or add scrollbars in the DIW image panel.\n\ \n\ NOTE: XMorph will not allow images of different geometries to be loaded\n\ at the same time. This is because the process of warping between\n\ images of different size is ambiguous. If an image is loaded by XMorph,\n\ and the alternate image does not have the same geometry as the newly\n\ loaded image, the alternate image is replaced with an image that XMorph\n\ generates, which will have the geometry of the newly loaded image.\n\ \n\ WARNING: If the loaded image has a different geometry than the previous\n\ image, then the mesh geometries will also not match. Because of this,\n\ XMorph will reset the mesh to fit the new image geometry. Make sure you\n\ have saved the mesh before loading in a new image, if the mesh is\n\ important to you.\n\ \n\ \n\ -----------------------------------------------------\n\ \n\ Open source mesh...\n\ Open destination mesh...\n\ \n\ Open and load a mesh from a file into memory to be used as the mesh.\n\ A dialog box pops up to prompt the user for the filename. The\n\ source mesh is the mesh that establishes the starting points for the\n\ digital image warp. The source mesh is represented by green dots\n\ and lines overtop the images in the DIW image panels. The destination\n\ mesh is the mesh that establishes the finishing points for the digital\n\ image warp. The destination mesh is represented by red dots and\n\ lines overtop the images in the DIW image panels.\n\ \n\ WARNING: If the loaded mesh has a different geometry or a different\n\ number of lines than the alternate mesh, then the meshes will not\n\ match. Because of this, XMorph will reset the alternate mesh to fit the\n\ newly loaded mesh geometry. Make sure you have saved the alternate\n\ mesh before loading in a new mesh, if the alternate mesh is important\n\ to you.\n\ \n\ -----------------------------------------------------\n\ \n\ Save source mesh...\n\ Save destination mesh...\n\ \n\ Save the current mesh to a file. A dialog box pops up to\n\ prompt the user for the filename. The mesh file format is an all\n\ text format, and can be viewed and modified with a text editor.\n\ \n\ -----------------------------------------------------\n\ \n\ Quit\n\ \n\ Exit the program.\n\ \n\ "; const char *mesh_help_s = "\n\ \n\ \n\ Mesh menu button descriptions:\n\ \n\ \n\ Note that many functions apply to either ``source'' or ``destination''.\n\ Digital image warping is generally applied to ``morph'' one image into\n\ another. That is, one image is reshaped to fit into the shape of the\n\ other. The first image is called the ``source'' image and the second\n\ image is called the ``destination'' image. The meshes which define the\n\ shaped of these images are also called the ``source'' and ``destination''\n\ meshes.\n\ \n\ -----------------------------------------------------\n\ \n\ \n\ Reset source mesh:\n\ Reset destination mesh:\n\ \n\ Reset the mesh to a regularly spaced rectangular grid.\n\ \n\ -----------------------------------------------------\n\ \n\ Functionalize source mesh:\n\ Functionalize destination mesh:\n\ \n\ Force the mesh to have no horizontal or vertical overlaps. This\n\ is a requirement for the digital image warp algorithms to perform\n\ correctly. The user should not create meshes that have vertical\n\ lines crossing other vertical lines, or horizontal lines that cross\n\ other horizontal lines. This button makes an attemp to correct any\n\ such discrepencies in the currently loaded meshes.\n\ \n\ "; const char *morph_help_s = "\n" "\n" "\n" " Morph Sequence menu button descriptions:\n" "\n" "\n" "\n" "The ``Morph Sequence'' functions are used to generate a sequence of\n" "warped and dissolved images automatically, which can be placed on\n" "video or film to make an animated morph sequence.\n" "\n" "Morphing involves two separate image manipulations: First, the source\n" "and destination (i.e. start and finish) images are warped to a common\n" "shape. Then, these warped images are dissolved (i.e. faded) into each\n" "other. The combination of these image effects, if done with the\n" "proper timing, creates the illusion that one object becomes another.\n" "\n" "\n" "-----------------------------------------------------\n" "\n" "Set sequence file name...\n" "\n" " Set the base file name for the warp sequence. A dialog box pops up\n" " to prompt the user for this file name. This file name is the prefix\n" " for each of the images in the sequence. Each sequential image is\n" " given a number, starting at 0000 and ending at the number of images\n" " in the sequence, minus one (since the numbering starts at zero).\n" "\n" " The images are stored in the TrueVision Targa (TGA) image file\n" " format.\n" "\n" " Xmorph only reads and writes images with the TARGA Truevision\n" " image file format. This image file format does not have a magic\n" " number at the beginning, so many image manipulation programs find it\n" " difficult to identify these image files unless they have a filename\n" " suffix of '.tga'. You should therefore always make sure the image\n" " files written by Xmorph have '.tga' at the end of the filename.\n" " When writing an image sequence, Xmorph automatically appends the\n" " '.tga' suffix so you do not have have to do this yourself, but\n" " this filename requirement is a good thing to keep in mind.\n" "\n" "Set sequence number of steps...\n" "\n" " Set the total number of images in the warp sequence. If these\n" " images are to be placed onto video, remember tha NTSC uses 30\n" " frames, or 60 fields, per second. Standard motion film uses 24\n" " frames per second. A typical cartoon on film used 12 distinct\n" " images per second. A good looking, convincing morph usually takes\n" " place within the duration of one second or less, depending on the\n" " coherency of the start and finish images.\n" "\n" "Warp sequence\n" "\n" " Begin the automatic warp sequence. Once this has begun, it can not\n" " be interrupted without exitting the program, so first make sure all\n" " of your parameters are set correctly, and be sure to do some manual\n" " test warps at the extremes and middle of the warp, in the image\n" " panels.\n" "\n" " Each image in the sequence is saved to a file, as described above.\n" "\n" " The first DIW image panel shows the progress of the warp sequence.\n" " The DIW image panel itself shows the current image, both dissolved\n" " and warped. The scrollbars below the image show the relative\n" " progress of the warping and dissolve. The warp and dissolve are\n" " done at different rates since morphing tends to look better if the\n" " dissolve happens less rapidly at the start and finish of the warp\n" " sequence. The warping is done linearly with time, and the dissolve\n" " is done sigmoidally with time.\n" "\n"; const char *dpm_help_s = "\n\ \n\ \n\ DIW Properties menu button descriptions:\n\ \n\ \n\ A digital image warp (DIW) panel is an area that contains an image,\n\ meshes, and the associated graphical user interface widgets that\n\ control the image and meshes.\n\ \n\ The DIW panel has a set of properties that control the way it looks.\n\ These properties are independant for each DIW panel, which is why each\n\ DIW panel has its own properties menu.\n\ \n\ The meshes are drawn so that you can see where they are with respect\n\ to the images. However, when grabbing and dragging mesh points, keep\n\ in mind that which mesh is being manipulated does not depend on which\n\ meshes are visible. That means that it is possible to modify a mesh\n\ without being able to see it. The reason for this possible source of\n\ confusion is that both source and destination meshes can be drawn\n\ overtop an image at the same time (which is a useful thing to be able\n\ to to) but when both are drawn (or neither), the choice of which mesh\n\ to manipulate should not depend on which is visible since that would\n\ be ambiguous. See the help pages on ``Manipulating the mesh'' for\n\ more information about this.\n\ \n\ -----------------------------------------------------\n\ \n\ Show source mesh points:\n\ Show source mesh lines:\n\ Show destination mesh points:\n\ Show destination mesh lines:\n\ Show tween mesh points:\n\ Show tween mesh lines:\n\ \n\ These are toggle buttons which control which meshes and mesh points\n\ are drawn. By default, when XMorph starts, the first DIW panel draws\n\ ``source'' mesh lines and points, the ``tween'' mesh lines; The\n\ second DIW panel draws ``destination'' mesh lines and points, and\n\ the ``tween'' mesh lines. The ``source'' mesh is green, the\n\ ``destination'' mesh is red, and the ``tween'' mesh is yellow.\n\ \n\ \n\ -----------------------------------------------------\n\ \n\ Dim image:\n\ \n\ Toggle button to dim the image. Often, having a mesh drawn overtop\n\ an image obscures the visibility of the mesh. Since at this stage,\n\ the mesh is more important than the image, it is often useful to dim\n\ the image so that the mesh is more clearly visible. The setting of\n\ this toggle does not effect the image itself, only the way it is\n\ drawn in the DIW panel (i.e. when you save the image, it is saved at\n\ its normal brightness, not dimmed).\n\ \n\ "; const char *dcm_help_s = "\n" "\n" "\n" " DIW Commands menu button descriptions:\n" "\n" "\n" "A digital image warp (DIW) panel is an area that contains an image,\n" "meshes, and the associated graphical user interface widgets that\n" "control the image and meshes.\n" "\n" "Each DIW panel image can be somewhat manipulated independantly of the\n" "images in another DIW panel. For this reason, each DIW panel has its\n" "own Commands menu.\n" "\n" "-----------------------------------------------------\n" "\n" "Save Image...\n" "\n" " Save the image currently displayed in the DIW panel.\n" " A dialog box will pop up to prompt you for a file name\n" " under which to save the image. The image saved is dissovled as much\n" " as is shown in the DIW image panel, and warped as much as the most\n" " recent warp applied in that image panel. The ``Dim image'' setting\n" " has no effect on the image being saved. Also, the dithering done on\n" " the image is not saved-- that is done simply to display the image,\n" " so the saved image will not look grainy, as it appears in the DIW\n" " image panel.\n" "\n" " Xmorph only reads and writes images with the TARGA Truevision\n" " image file format. This image file format does not have a magic\n" " number at the beginning, so many image manipulation programs find it\n" " difficult to identify these image files unless they have a filename\n" " suffix of '.tga'. You should therefore always make sure the image\n" " files written by Xmorph have '.tga' at the end of the filename.\n" "\n" "Warp Image\n" "\n" " Apply the digital image warp algorithm to the images in the DIW\n" " panel. The ``source'' and ``destination'' images are warped\n" " separately. The amount (and direction) of warping applied depends\n" " on the setting of the ``mesh'' slide-bar below the DIW panel, which\n" " controls the ``tween'' mesh for that DIW panel. The ``source''\n" " image image is warped forward from the ``source'' mesh to the\n" " ``tween'' mesh. The ``destination'' image is warped backwards from\n" " the ``destination'' mesh to the ``tween'' mesh. After the warping\n" " algorithm has been applied, the warped image remain warped at that\n" " point until the next time the warping algorithm is applied. Note\n" " that this implies that the images can be dissolved independantly of\n" " the warping. That means that after you apply the warp, you can then\n" " diddle with the dissolve slide-bar until you get a composed image\n" " that looks the way you want it to look. In general, the best\n" " looking morphed image has different setting for the warp and\n" " dissolve parameters. In general, a morph looks better if the\n" " warping is applied more than the dissolve near the start and finish\n" " of the warp. That is, while the images are warped closer to the\n" " shape of the ``source'' image, the amount of dissolve should\n" " strongly prefer the ``source'' image, and vice versa.\n" "\n" " While the digital image warp algorithm is working, the cursor in the\n" " DIW panel changes to indicate the level of progress. The shape of\n" " the cursor is a watch, to indicate that XMorph is busy. The color of\n" " the cursor indicates which channel of which image is being warped.\n" " If the watch has a white background, the the ``source'' image is\n" " being warped. A black background indicated the ``destination''\n" " image is being warped. A red watch means that the red channel is\n" " being warped, a green watch for the green channel, and a blue watch\n" " for the blue channel.\n" "\n" "Redither Image\n" "\n" " This button activates the dissolve, but it is redundant, since the\n" " dissolve is automatically activated whenever the dissolve slide-bar\n" " is moved. This button is present so that slow computers can\n" " deactivate the slide-bar's automatic dissolve behaviour, which can\n" " be time-consuming sometimes.\n" "\n" " While the image is being redithered, the cursor turns into a white\n" " watch to indicate that XMorph is busy.\n" "\n"; /* create_help_menu: Create a help menu and its button // returns the widget of the menu button */ Widget create_help_menu(Widget parent, Widget toplevel, Widget left_w) { Widget help_menu_button; Widget help_menu; Widget hm_about_sme; /* about xmorph */ Widget hm_mmp_sme; /* moving mesh points */ Widget hm_file_sme; /* file help */ Widget hm_mesh_sme; /* mesh help */ Widget hm_warp_sme; /* warp help */ Widget hm_dpm_sme; /* diw properties menu help */ Widget hm_dcm_sme; /* diw commands menu help */ Widget hm_quit_sme; /* quit */ dialog_apdx_t *hm_about_daP; dialog_apdx_t *hm_mmp_daP; dialog_apdx_t *hm_file_daP; dialog_apdx_t *hm_mesh_daP; dialog_apdx_t *hm_warp_daP; dialog_apdx_t *hm_dpm_daP; dialog_apdx_t *hm_dcm_daP; /* ========================= */ /* Create the Dialog widgets */ /* - - - - - - - - - - - - - - - - - */ /* Create the "about dialog */ hm_about_daP = create_mjg_dialog(toplevel, "h_about"); hm_about_daP->client_data = NULL; hm_about_daP->callback = NULL; XtVaSetValues(hm_about_daP->dialog, XtNvalue, about_s, NULL); XtVaSetValues(hm_about_daP->text,XtNscrollVertical,XawtextScrollAlways, NULL); /* - - - - - - - - - - - - - - - - - */ /* Create the "moving mesh points" dialog */ hm_mmp_daP = create_mjg_dialog(toplevel, "h_mmp"); hm_mmp_daP->client_data = NULL; hm_mmp_daP->callback = NULL; #ifdef apollo sprintf(mmp_s, "%s%s", MMP_S_STRING_1, MMP_S_STRING_2); #endif XtVaSetValues(hm_mmp_daP->dialog, XtNvalue, mmp_s, NULL); XtVaSetValues(hm_mmp_daP->text,XtNscrollVertical,XawtextScrollAlways,NULL); /* - - - - - - - - - - - - - - - - - */ /* Create the "file help" dialog */ hm_file_daP = create_mjg_dialog(toplevel, "h_file"); hm_file_daP->client_data = NULL; hm_file_daP->callback = NULL; XtVaSetValues(hm_file_daP->dialog, XtNvalue, file_help_s, NULL); XtVaSetValues(hm_file_daP->text, XtNscrollVertical,XawtextScrollAlways, NULL); /* - - - - - - - - - - - - - - - - - */ /* Create the "mesh help" dialog */ hm_mesh_daP = create_mjg_dialog(toplevel, "h_mesh"); hm_mesh_daP->client_data = NULL; hm_mesh_daP->callback = NULL; XtVaSetValues(hm_mesh_daP->dialog, XtNvalue, mesh_help_s, NULL); XtVaSetValues(hm_mesh_daP->text, XtNscrollVertical,XawtextScrollAlways, NULL); /* - - - - - - - - - - - - - - - - - */ /* Create the "morph help" dialog */ hm_warp_daP = create_mjg_dialog(toplevel, "h_morph"); hm_warp_daP->client_data = NULL; hm_warp_daP->callback = NULL; XtVaSetValues(hm_warp_daP->dialog, XtNvalue, morph_help_s, NULL); XtVaSetValues(hm_warp_daP->text, XtNscrollVertical,XawtextScrollAlways, NULL); /* - - - - - - - - - - - - - - - - - */ /* Create the "diw properties menu help" dialog */ hm_dpm_daP = create_mjg_dialog(toplevel, "h_dpm"); hm_dpm_daP->client_data = NULL; hm_dpm_daP->callback = NULL; XtVaSetValues(hm_dpm_daP->dialog, XtNvalue, dpm_help_s, NULL); XtVaSetValues(hm_dpm_daP->text, XtNscrollVertical,XawtextScrollAlways, NULL); /* - - - - - - - - - - - - - - - - - */ /* Create the "diw commands menu help" dialog */ hm_dcm_daP = create_mjg_dialog(toplevel, "h_dcm"); hm_dcm_daP->client_data = NULL; hm_dcm_daP->callback = NULL; XtVaSetValues(hm_dcm_daP->dialog, XtNvalue, dcm_help_s, NULL); XtVaSetValues(hm_dcm_daP->text, XtNscrollVertical,XawtextScrollAlways, NULL); /* ----------------------------- */ /* Create a simple menu for Command */ help_menu = XtVaCreatePopupShell("help_menu", simpleMenuWidgetClass, parent, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "about" */ hm_about_sme = XtVaCreateManagedWidget("hm_about_sme", smeBSBObjectClass, help_menu, NULL); XtAddCallback(hm_about_sme, XtNcallback, popup_dialog_cb, hm_about_daP); /* - - - - - - - - - - - - - - */ /* Create a menu item separator */ XtVaCreateManagedWidget("hm_sep_sme", smeLineObjectClass, help_menu, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "moving mesh points" */ hm_mmp_sme = XtVaCreateManagedWidget("hm_mmp_sme", smeBSBObjectClass, help_menu, NULL); XtAddCallback(hm_mmp_sme, XtNcallback, popup_dialog_cb, hm_mmp_daP); /* - - - - - - - - - - - - - - */ /* Create a menu item separator */ XtVaCreateManagedWidget("hm_sep_sme", smeLineObjectClass, help_menu, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "file help" */ hm_file_sme = XtVaCreateManagedWidget("hm_file_sme", smeBSBObjectClass, help_menu, NULL); XtAddCallback(hm_file_sme, XtNcallback, popup_dialog_cb, hm_file_daP); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "mesh help" */ hm_mesh_sme = XtVaCreateManagedWidget("hm_mesh_sme", smeBSBObjectClass, help_menu, NULL); XtAddCallback(hm_mesh_sme, XtNcallback, popup_dialog_cb, hm_mesh_daP); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "warp help" */ hm_warp_sme = XtVaCreateManagedWidget("hm_warp_sme", smeBSBObjectClass, help_menu, NULL); XtAddCallback(hm_warp_sme, XtNcallback, popup_dialog_cb, hm_warp_daP); /* - - - - - - - - - - - - - - */ /* Create a menu item separator */ XtVaCreateManagedWidget("hm_sep_sme", smeLineObjectClass, help_menu, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "diw properties menu help" */ hm_dpm_sme = XtVaCreateManagedWidget("hm_dpm_sme", smeBSBObjectClass, help_menu, NULL); XtAddCallback(hm_dpm_sme, XtNcallback, popup_dialog_cb, hm_dpm_daP); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "diw commands menu help" */ hm_dcm_sme = XtVaCreateManagedWidget("hm_dcm_sme", smeBSBObjectClass, help_menu, NULL); XtAddCallback(hm_dcm_sme, XtNcallback, popup_dialog_cb, hm_dcm_daP); /* - - - - - - - - - - - - - - */ /* Create a menu item separator */ XtVaCreateManagedWidget("hm_sep_sme", smeLineObjectClass, help_menu, NULL); /* - - - - - - - - - - - - - - */ /* Create a menu item separator */ XtVaCreateManagedWidget("hm_sep_sme", smeLineObjectClass, help_menu, NULL); /* - - - - - - - - - - - - - - - - - - - - */ /* Create a menu entry for "quit" */ hm_quit_sme = XtVaCreateManagedWidget("hm_quit_sme", smeBSBObjectClass, help_menu, NULL); XtAddCallback(hm_quit_sme, XtNcallback, exit_callback, NULL); /* ------------------------- */ /* Create a help menu button */ if(left_w != NULL) { help_menu_button = XtVaCreateManagedWidget("help_menu_button", menuButtonWidgetClass, parent, XtNmenuName, "help_menu", XtNfromHoriz, left_w, NULL); } else { help_menu_button = XtVaCreateManagedWidget("help_menu_button", menuButtonWidgetClass, parent, XtNmenuName, "help_menu", NULL); } /* button tells where the popup goes */ hm_about_daP->button = help_menu_button; hm_mmp_daP->button = help_menu_button; hm_file_daP->button = help_menu_button; hm_mesh_daP->button = help_menu_button; hm_warp_daP->button = help_menu_button; hm_dpm_daP->button = help_menu_button; hm_dcm_daP->button = help_menu_button; return(help_menu_button); } xmorph-20140707+nmu2/xmorph/image_cb.h0000664000000000000000000000110012356304633014253 0ustar /* image_cb.h : Callbacks for Digital Image Warp image related widgets // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // NO WARRANTEES, EXPRESS OR IMPLIED. */ #ifndef _IMAGE_CB_H__INCLUDED_ #define _IMAGE_CB_H__INCLUDED_ #include #include extern void load_img_cb(Widget w, XtPointer client_data, XtPointer call_data); extern void save_img_cb(Widget w, XtPointer client_data, XtPointer call_data); #ifdef NEED_GIMP extern void open_gimp_dest_cb (Widget w, XtPointer client_data, XtPointer call_data); #endif #endif xmorph-20140707+nmu2/xmorph/mjg_dialog.h0000664000000000000000000000245712356304633014641 0ustar /* my_dialog.h : My version of the Athena Dialog // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // NO WARRANTEES, EXPRESS OR IMPLIED. */ #ifndef _MJG_DIALOG_H__INCLUDED_ #define _MJG_DIALOG_H__INCLUDED_ #include #include #include #include #include #include #include #include #include /* The Athena widgets are particularly lame about dialogs ** so I add this appendix of members to their dialog widget ** You'd think that people from MIT would do better. */ typedef struct dialog_apdx_ { Widget toplevel; Widget button; Widget shell; Widget dialog; Widget text; Widget okay; Widget cancel; void (*callback)(Widget w, XtPointer client_data, XtPointer call_data); XtPointer client_data; int type; } dialog_apdx_t; extern dialog_apdx_t *dialog_apdx_of_widget(Widget w); /* popup_dialog_cb : callback to popup dialog */ extern void popup_dialog_cb(Widget w, XtPointer client_data, XtPointer call_data); extern void mjg_dialog_okay(Widget w, XEvent *event, String *params, Cardinal *num_params); extern dialog_apdx_t *create_mjg_dialog(Widget parent, char *name); #endif /* _MJG_DIALOG_H__INCLUDED_ */ xmorph-20140707+nmu2/xmorph/unselect.xbm0000664000000000000000000000043712356304633014722 0ustar #define unselect_width 16 #define unselect_height 16 static char unselect_bits[] = { 0x00, 0x00, 0x00, 0x80, 0x00, 0xc0, 0xa8, 0xea, 0x50, 0xf5, 0xa8, 0xea, 0x50, 0xf5, 0xa8, 0xea, 0x50, 0xf5, 0xa8, 0xea, 0x50, 0xf5, 0xa8, 0xea, 0x50, 0xf5, 0xf8, 0xff, 0xfc, 0xff, 0xfe, 0xff}; xmorph-20140707+nmu2/xmorph/file_menu.h0000664000000000000000000000067012356304633014503 0ustar /* file_menu.h : file menu widgets and callbacks // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // NO WARRANTEES, EXPRESS OR IMPLIED. */ /* create_file_menu: Create a file menu and its button ** returns the widget of the menu button */ extern Widget create_file_menu(Widget parent, Widget toplevel, Widget left_w); #ifdef NEED_GIMP extern Widget create_dest_menu(Widget parent, Widget toplevel, Widget left_w); #endif xmorph-20140707+nmu2/xmorph/help_menu.h0000664000000000000000000000055112356304633014512 0ustar /* help_menu.h : help menu widgets and callbacks // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // NO WARRANTEES, EXPRESS OR IMPLIED. */ #ifndef _HELP_MENU__INCLUDED_ #define _HELP_MENU__INCLUDED_ #include #include extern Widget create_help_menu(Widget parent, Widget toplevel, Widget left_w); #endif xmorph-20140707+nmu2/xmorph/image_diw.h0000664000000000000000000000415612356304633014470 0ustar /* image_diw.c : image routines associated with DIW maps // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // Provided as is. No warrantees, express or implied. */ #ifndef _IMAGE_DIW_H__INCLUDED_ #define _IMAGE_DIW_H__INCLUDED_ #include #include #include #include #include #include "RgbaImage.h" /* X_BITS_PER_CHANNEL is the number of bit per channel X Window System ** uses to represent a color. */ #define X_BITS_PER_CHANNEL 16 /* STATIC_GRAY_MAXVAL is the maximum value I assume that a visual with ** StaticGray visual class uses to represent a pixel. This is in general ** not a compile-time constant. It should be a run-time value, set to ** something like ((1 << visual->depth) - 1). Essentially, I assume a ** depth of 1 bit. */ #define STATIC_GRAY_MAXVAL 1 /* GRAY_THRESHOLD determines when I set a 1-bit monochrime pixel to ** "on" when the gray value exceeds this threshold. */ #define GRAY_THRESHOLD RGBA_IMAGE_MAXVAL/2 /* TRUNC_SHIFT is the number of bits to shift right when converting ** between the X Window System color representation and the ** representation used by the RgbaImage type. */ #define TRUNC_SHIFT (X_BITS_PER_CHANNEL - BITS_PER_CHANNEL) /* ???_MSB_MASK is used to pick out the appropriate bits from a ** channel of an RgbaImage in order to convert it into an image which is ** colormapped using my peculiar dithering colormap system (DCI). */ #define RED_MSB_MASK (RED_MAXVAL << (BITS_PER_CHANNEL - RED_NUM_BITS)) #define GRN_MSB_MASK (GRN_MAXVAL << (BITS_PER_CHANNEL - GRN_NUM_BITS)) #define BLU_MSB_MASK (BLU_MAXVAL << (BITS_PER_CHANNEL - BLU_NUM_BITS)) /* Rightward bit shifts for converting channel bits into a pixel index */ #define BLU_R_SHIFT (BITS_PER_CHANNEL - BLU_NUM_BITS) #define GRN_R_SHIFT (BITS_PER_CHANNEL - BLU_NUM_BITS - GRN_NUM_BITS) #define RED_R_SHIFT (BITS_PER_CHANNEL - BLU_NUM_BITS - GRN_NUM_BITS - RED_NUM_BITS) extern void dither_image(Visual *visual, RgbaImageT *srcP, RgbaImageT *dstP, double t, double brite, XImage *ximage); extern void reset_images(int type); #endif xmorph-20140707+nmu2/xmorph/Makefile.am0000664000000000000000000000213112356304633014415 0ustar ## Process this file with automake to produce Makefile.in include ../Makefile.conf EXTRA_DIST = select.xbm unselect.xbm #AM_CFLAGS = $(CFLAGS) $(CFLAGS_CONF) -DX_GUI -DNDEBUG_LIBMORPH_REF_COUNT INCLUDES = -I$(top_srcdir)/libmorph -I$(top_srcdir)/intl if COND_XMORPH bin_PROGRAMS = xmorph endif #keep this first and hope they are processed in order #main.h : ../morph/main.h ; ln -s ../morph/main.h . diw_map.o : diw_map.c main.h main-x.o : ../morph/main.c ; $(COMPILE) -DX_GUI -DNDEBUG_LIBMORPH_REF_COUNT -c ../morph/main.c -o main-x.o xmorph_CFLAGS = $(X_CFLAGS) $(CFLAGS) $(CFLAGS_CONF) -DNDEBUG_LIBMORPH_REF_COUNT xmorph_SOURCES = main.h \ help_menu.c diw_map.c mjg_dialog.c file_menu.c \ xmorph.c sequence.c warp_menu.c mesh_menu.c \ diw_map.h warp_menu.h mjg_dialog.h \ image_diw.h image_diw.c \ help_menu.h \ xmorph.h sequence.h mesh_menu.h \ image_cb.h image_cb.c \ file_menu.h \ mesh_cb.h mesh_cb.c xmorph_LDADD = main-x.o $(X_PRE_LIBS) $(X_LIBS) $(XLIBS) $(X_EXTRA_LIBS) \ $(GIMPLIBS) $(NON_GUI_LIBS) $(INTLLIBS) ../libmorph/libmorph.la xmorph-20140707+nmu2/xmorph/mesh_cb.c0000664000000000000000000001247312356304633014137 0ustar /* mesh_cb.c : X Callbacks for Digital Image Warp mesh related widgets // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // // // These routines are used for the X Window System only and are not // needed for tkmorph. */ #include #include #include "diw_map.h" #include "mjg_dialog.h" #include "mesh.h" #include "mesh_cb.h" /* reset_mesh_cb: callback to reset a mesh // Accesses global_diw_map[0] mesh information // Changes global_diw_map.mesh_[xy][s|d] // Fakes an expose event to all diw_map image regions to redraw meshes */ /*ARGSUSED*/ void reset_mesh_cb(Widget w, XtPointer client_data, XtPointer call_data) { int type = (int) client_data; switch(type) { case 1: meshReset(&global_diw_map[0].mesh_src, global_diw_map[0].width, global_diw_map[0].height); break; case 2: meshReset(&global_diw_map[0].mesh_dst, global_diw_map[0].width, global_diw_map[0].height); break; default: fprintf(stderr, "reset_mesh_cb: Bad Value: type: %i\n", type); return; /*NOTREACHED*/ break; } /* Now redraw the meshes */ FakeAllExpose(0, NULL, NULL, NULL); } /* functionalize_mesh_cb: callback to functionalize a mesh // Accesses global_diw_map[0] mesh information // Changes global_diw_map.mesh_[xy][s|d] // Fakes an expose event to all diw_map image regions to redraw meshes */ /*ARGSUSED*/ void functionalize_mesh_cb(Widget w, XtPointer client_data, XtPointer call_data) { int type = (int) client_data; int chg; switch(type) { case 1: chg=meshFunctionalize(&global_diw_map[0].mesh_src, global_diw_map[0].width, global_diw_map[0].height); break; case 2: chg=meshFunctionalize(&global_diw_map[0].mesh_dst, global_diw_map[0].width, global_diw_map[0].height); break; default: fprintf(stderr, "functionalize_mesh_cb: Bad Value: type: %i\n", type); return; /*NOTREACHED*/ break; } /* If the mesh changed, redraw the meshes */ if(chg) FakeAllExpose(0, NULL, NULL, NULL); } /* load_mesh_cb: callback to load mesh from file // // Makes sure that both meshes have the same geometry after loading // the new mesh. // // client_data (in): tyecast to int, indicates whether src or dst mesh // is being loaded // // call_data (in): pointer to dialog box, used to get string. // // Accesses global_diw_map[0] mesh and image information // // Side effects: // Changes global_diw_map.mesh_(src,dst) // // via meshRead: // Frees memory for old mesh // Allocates memory for new mesh // // Fakes an expose event to all diw_map image regions to redraw meshes */ /*ARGSUSED*/ void load_mesh_cb(Widget w, XtPointer client_data, XtPointer call_data) { dialog_apdx_t *daP = (dialog_apdx_t *)call_data; int type = (int) client_data; String filename; #ifdef DEBUG printf("load_mesh_cb:\n"); #endif filename = XawDialogGetValueString(daP->dialog); if(filename==NULL) { return; } switch(type) { case 1: if (meshRead(&global_diw_map[0].mesh_src, filename)) { fprintf(stderr, "load_mesh_cb: meshRead failed\n"); return; } meshMatch(&global_diw_map[0].mesh_dst, &global_diw_map[0].mesh_src); #ifdef GIMP set_src_mesh_name (filename); #endif meshScale(&global_diw_map[0].mesh_src, global_diw_map[0].src_img.ncols, global_diw_map[0].src_img.nrows); break; case 2: if(meshRead(&global_diw_map[0].mesh_dst, filename)) { fprintf(stderr, "load_mesh_cb: meshRead failed\n"); return; } meshMatch(&global_diw_map[0].mesh_src, &global_diw_map[0].mesh_dst); #ifdef GIMP set_dst_mesh_name (filename); #endif meshScale(&global_diw_map[0].mesh_dst, global_diw_map[0].dst_img.ncols, global_diw_map[0].dst_img.nrows); break; default: fprintf(stderr, "load_mesh_cb: Bad Value: type: %i\n", type); return; /*NOTREACHED*/ break; } /* Propagate the mesh changes to all of the diw_maps */ diw_map_of_widget(NULL); /* Redraw the meshes */ FakeAllExpose(0, NULL, NULL, NULL); #ifdef DEBUG printf("load_mesh_cb: leaving\n"); #endif } /* save_mesh_cb: callback to save mesh to file // Accesses global_diw_map[0] mesh information */ /*ARGSUSED*/ void save_mesh_cb(Widget w, XtPointer client_data, XtPointer call_data) { dialog_apdx_t *daP = (dialog_apdx_t *)call_data; int type = (int) client_data; String filename; int save_mesh_rv; filename = XawDialogGetValueString(daP->dialog); if(filename==NULL) { return; } else { switch(type) { case 1: if( (save_mesh_rv = meshWrite(&global_diw_map[0].mesh_src, filename)) ) { fprintf(stderr, "meshWrite returned %i\n", save_mesh_rv); return; } #ifdef GIMP set_src_mesh_name (filename); #endif break; case 2: if( (save_mesh_rv = meshWrite(&global_diw_map[0].mesh_dst, filename)) ) { fprintf(stderr, "save_mesh returned %i\n", save_mesh_rv); return; } #ifdef GIMP set_dst_mesh_name (filename); #endif break; default: fprintf(stderr, "save_mesh_cb: Bad Value: type: %i\n", type); return; /*NOTREACHED*/ break; } } } xmorph-20140707+nmu2/xmorph/diw_map.c0000664000000000000000000017051612356304633014162 0ustar /* diw_map.c: Digital Image Warping X graphical user interface // // Written and Copyright (C) 1994-1999 by Michael J. Gourlay // // PROVIDED AS IS. NO WARRANTEES, EXPRESS OR IMPLIED. // // These routines are used for the X Window System only and are not // needed for tkmorph. // // A "diw_map" is treated in this module as a quasi-widget. In lieu of // making the diw_map a proper widget, I have created a structure which // contains a widget which is used in reverse to look up the diw_map in a // global list of diw_maps. This way, callbacks and actions can use a // diw_map almost as if it were a widget. // // diw_maps contain information about a pair of images which are to be // warped and dissolved into each other. This entails keeping track of // two images, two meshed which define relative topologies, various // variables about to what extent each image should be warped or // dissolved, and which mesh liens and points should be drawn or selected // for arrangement. diw_maps in different windows can be controlled // completely independantly, but for practical application it is far more // useful to have diw_maps share images and meshes. Everything else can // be handled independantly (such as which meshes to draw or which image // to display). */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "my_malloc.h" #include "select.xbm" #include "unselect.xbm" #include "spline.h" #include "spl-array.h" #include "RgbaImage.h" #include "image_cb.h" #include "image_diw.h" #include "mesh.h" #include "mjg_dialog.h" #include "main.h" #include "diw_map.h" #ifdef GIMP # define NEED_GIMP 1 extern int plugin; #endif #define SGN(x) (((x)>0) ? (1) : ( ((x)<0) ? (-1) : (0) )) #define MAX(x,y) ((x)>(y) ? (x) : (y)) /* Meshpoint picking and drawing parameters */ #define MP_SIZE 6 #define MP_ARC (360*64) /* --------------------------------------------------------------- */ /* NAME // draw_mesh: Draw mesh lines and points at interpolation parameter t // // // GLOBAL VARIABLES // mpl_gc: graphics context for mesh lines // // mp_gc: graphics context for (unselected) mesh points // // mps_gc: graphics context for (selected) mesh points // // // // DESCRIPTION // Draw mesh lines and points. // Also draw the selected meshpoint. // // The colors for the graphics contexts is to be set by the caller // just prior to calling draw_mesh. // // // SEE ALSO // DrawMeshes */ static int draw_mesh(Widget widget, diw_map_t *dmP) { extern GC mpl_gc; /* mesh line graphics context */ extern GC mp_gc; /* mesh point graphics context */ extern GC mps_gc; /* (selected) mesh point graphics context */ Display *display = XtDisplay(widget); Window window = XtWindow(widget); XPoint *xpoints; XArc *xarcs; int xi, yi; const double *xsP = dmP->mesh_src.x; const double *ysP = dmP->mesh_src.y; const double *xdP = dmP->mesh_dst.x; const double *ydP = dmP->mesh_dst.y; const double mpt = dmP->mesh_t; double *x_tmp; double *y_tmp; double *xrow; double *yrow; if(!(x_tmp=MY_CALLOC(MAX(dmP->mesh_src.nx,dmP->mesh_src.ny), double))) { return(1); } if(!(y_tmp=MY_CALLOC(MAX(dmP->mesh_src.nx,dmP->mesh_src.ny), double))) { return(1); } if(!(xrow=MY_CALLOC(MAX(dmP->width/4,dmP->height/4), double))) { return(1); } if(!(yrow=MY_CALLOC(MAX(dmP->width/4,dmP->height/4), double))) { return(1); } if(!(xpoints=MY_CALLOC(MAX(dmP->width/4,dmP->height/4), XPoint))) { return(1); } if(!(xarcs = MY_CALLOC(dmP->mesh_src.ny, XArc))) { return(1); } /* Draw meshpoints and vertical meshlines */ for(xi=0; xi < dmP->mesh_src.nx; xi++) { /* Draw vertical mesh lines */ if(dmP->meshlines_t_draw) { /* Create 1D array of mesh points knots */ for(yi=0; yimesh_src.ny; yi++) { x_tmp[yi] = (1.0-mpt)* xsP[yi*dmP->mesh_src.nx + xi] + mpt * xdP[yi*dmP->mesh_src.nx + xi]; y_tmp[yi] = (1.0-mpt)* ysP[yi*dmP->mesh_src.nx + xi] + mpt * ydP[yi*dmP->mesh_src.nx + xi]; } /* Create abcissas of interpolant to make a smoothly drawn mesh line */ for(yi=0; yi<(dmP->height/4); yi++) yrow[yi] = yi*4; /* Make sure last abcissa is set */ yrow[yi-1] = dmP->height-1; /* Create the interpolated line segments */ hermite3_array(y_tmp, x_tmp, dmP->mesh_src.ny, yrow, xrow, dmP->height/4); /* Create an array of XPoints to draw smoothly interpolated mesh line */ for(yi=0; yi<(dmP->height/4); yi++) { xpoints[yi].x = (int) xrow[yi]; xpoints[yi].y = (int) yrow[yi]; } /* Draw the smoothly interpolated mesh line */ XDrawLines(display, window, mpl_gc, xpoints, dmP->height/4, CoordModeOrigin); } /* Draw mesh points */ if(dmP->meshpoints_t_draw) { for(yi=0; yimesh_src.ny; yi++) { if(dmP->meshpoints_t_draw) { xarcs[yi].width = MP_SIZE; xarcs[yi].height = MP_SIZE; xarcs[yi].x = (int) ((1.0-mpt)*xsP[yi*dmP->mesh_src.nx + xi] + mpt*xdP[yi*dmP->mesh_src.nx + xi]) - xarcs[yi].width/2; xarcs[yi].y = (int) ((1.0-mpt)*ysP[yi*dmP->mesh_src.nx + xi] + mpt*ydP[yi*dmP->mesh_src.nx + xi]) - xarcs[yi].height/2; xarcs[yi].angle1=0; xarcs[yi].angle2=MP_ARC; } } XDrawArcs(display, window, mp_gc, xarcs, dmP->mesh_src.ny); } } FREE(xarcs); /* Draw horizontal meshlines */ if(dmP->meshlines_t_draw) { for(yi=0; yimesh_src.ny; yi++) { for(xi=0; ximesh_src.nx; xi++) { x_tmp[xi] = (1.0-mpt)* xsP[yi*dmP->mesh_src.nx + xi] + mpt * xdP[yi*dmP->mesh_src.nx + xi]; y_tmp[xi] = (1.0-mpt)* ysP[yi*dmP->mesh_src.nx + xi] + mpt * ydP[yi*dmP->mesh_src.nx + xi]; } for(xi=0; xi<(dmP->width/4); xi++) xrow[xi] = xi*4; xrow[xi-1] = dmP->width-1; hermite3_array(x_tmp, y_tmp, dmP->mesh_src.nx, xrow, yrow, dmP->width/4); for(xi=0; xi<(dmP->width/4); xi++) { xpoints[xi].x = (int) xrow[xi]; xpoints[xi].y = (int) yrow[xi]; } XDrawLines(display, window, mpl_gc, xpoints, dmP->width/4, CoordModeOrigin); } } FREE(x_tmp); FREE(y_tmp); FREE(xrow); FREE(yrow); FREE(xpoints); /* Draw the selected meshpoint filled in */ if(dmP->meshpoint_selected) { short mp_x, mp_y; int mp_i = dmP->meshpoint_selected_loc[0]; int mp_j = dmP->meshpoint_selected_loc[1]; if(mpt<0.5) { mp_x = (short)xsP[mp_j*dmP->mesh_src.nx + mp_i] - MP_SIZE/2 - 1; mp_y = (short)ysP[mp_j*dmP->mesh_src.nx + mp_i] - MP_SIZE/2 - 1; } else { mp_x = (short)xdP[mp_j*dmP->mesh_src.nx + mp_i] - MP_SIZE/2 - 1; mp_y = (short)ydP[mp_j*dmP->mesh_src.nx + mp_i] - MP_SIZE/2 - 1; } /* Draw the selected MP disc */ XFillArc(display, window, mps_gc, mp_x, mp_y, MP_SIZE+2, MP_SIZE+2, 0, MP_ARC); } return(0); } /* --------------------------------------------------------------- */ /* diw_map_of_widget: map a widget to its diw_map and synchronize diw_maps // // Note that synchronization is a side effect. // Synchronization is needed because there can be any number of DIW // maps, but they should all share identical meshes. // // This routine is sometimes called for its side effect only, for // example, when called with a NULL argument. What a hack. */ diw_map_t * diw_map_of_widget(Widget widget) { register int indx; diw_map_t *dmP=NULL; for(indx=0; indx0 && global_diw_map[indx].width!=0) { /* Keep the diw_maps synchronized */ global_diw_map[indx].width = global_diw_map[0].width; global_diw_map[indx].height = global_diw_map[0].height; global_diw_map[indx].mesh_src.x = global_diw_map[0].mesh_src.x; global_diw_map[indx].mesh_src.y = global_diw_map[0].mesh_src.y; global_diw_map[indx].mesh_dst.x = global_diw_map[0].mesh_dst.x; global_diw_map[indx].mesh_dst.y = global_diw_map[0].mesh_dst.y; global_diw_map[indx].mesh_src.nx = global_diw_map[0].mesh_src.nx; global_diw_map[indx].mesh_src.ny = global_diw_map[0].mesh_src.ny; global_diw_map[indx].mesh_dst.nx = global_diw_map[0].mesh_dst.nx; global_diw_map[indx].mesh_dst.ny = global_diw_map[0].mesh_dst.ny; global_diw_map[indx].meshpoint_selected_loc[0] = global_diw_map[0].meshpoint_selected_loc[0]; global_diw_map[indx].meshpoint_selected_loc[1] = global_diw_map[0].meshpoint_selected_loc[1]; global_diw_map[indx].meshpoint_selected = global_diw_map[0].meshpoint_selected; } /* Test for match of widget */ if(global_diw_map[indx].widget == widget) { dmP = &global_diw_map[indx]; } } return(dmP); } /* =============================================================== */ /* Actions */ /* --------------------------------------------------------------- */ /* NAME // DrawMeshes: action to draw src, dst, and tween meshes of a widget // // // SEE ALSO // draw_mesh */ /*ARGSUSED*/ void DrawMeshes(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { extern GC mpl_gc; /* mesh line graphics context */ extern GC mp_gc; /* mesh point graphics context */ Display *display = XtDisplay(widget); diw_map_t *diw_mapP; if((diw_mapP = diw_map_of_widget(widget)) == NULL) { fprintf(stderr, "DrawMeshes: Bad Widget for diw_map\n"); return; } /* Draw source mesh */ if(diw_mapP->meshlines_src_draw || diw_mapP->meshpoints_src_draw) { diw_map_t tmp_diw_map; XSetForeground(display, mpl_gc, diw_xcolors[XPI_GREEN].pixel); XSetForeground(display, mp_gc, diw_xcolors[XPI_GREEN].pixel); tmp_diw_map = *diw_mapP; tmp_diw_map.meshpoint_selected = False; tmp_diw_map.meshlines_t_draw = diw_mapP->meshlines_src_draw; tmp_diw_map.meshpoints_t_draw = diw_mapP->meshpoints_src_draw; tmp_diw_map.mesh_t = 0.0; draw_mesh(widget, &tmp_diw_map); } /* Draw destination mesh */ if(diw_mapP->meshlines_dst_draw || diw_mapP->meshpoints_dst_draw) { diw_map_t tmp_diw_map; #ifdef RED_GREEN_COLOR_BLIND XSetForeground(display, mpl_gc, diw_xcolors[XPI_BLUE].pixel); XSetForeground(display, mp_gc, diw_xcolors[XPI_BLUE].pixel); #else XSetForeground(display, mpl_gc, diw_xcolors[XPI_RED].pixel); XSetForeground(display, mp_gc, diw_xcolors[XPI_RED].pixel); #endif tmp_diw_map = *diw_mapP; tmp_diw_map.meshpoint_selected = False; tmp_diw_map.meshlines_t_draw = diw_mapP->meshlines_dst_draw; tmp_diw_map.meshpoints_t_draw = diw_mapP->meshpoints_dst_draw; tmp_diw_map.mesh_t = 1.0; draw_mesh(widget, &tmp_diw_map); } /* Draw tween mesh */ if(diw_mapP->meshlines_t_draw || diw_mapP->meshpoints_t_draw) { XSetForeground(display, mpl_gc, diw_xcolors[XPI_YELLOW].pixel); XSetForeground(display, mp_gc, diw_xcolors[XPI_YELLOW].pixel); draw_mesh(widget, diw_mapP); } } /* --------------------------------------------------------------- */ /* DrawAllMeshes: action to draw all meshes of all diw_maps */ /*ARGSUSED*/ void DrawAllMeshes(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { int indx; for(indx=0; indxpixmap, /* dest drawable */window, /* GC */ x_gc_clear, /* src x,y */ 0, 0, /* size */ diw_mapP->width, diw_mapP->height, /* dest x,y */ 0, 0); /* Use the "select" cursor */ XDefineCursor(display, window, diw_select_cursor); } /* --------------------------------------------------------------- */ /* FakeExpose: action to fake an expose event to a diw_map widget */ /*ARGSUSED*/ void FakeExpose(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { Boolean propagate; long event_mask; XEvent xevent; diw_map_t *dmP; if((dmP = diw_map_of_widget(widget)) == NULL) { fprintf(stderr, "FakeExpose: Bad Widget for diw_map\n"); abort(); /* dump core */ } propagate = False; event_mask = ExposureMask; xevent.type=Expose; xevent.xexpose.type=Expose; xevent.xexpose.display=XtDisplay(widget); xevent.xexpose.window=XtWindow(widget); xevent.xexpose.x=0; xevent.xexpose.y=0; xevent.xexpose.width=dmP->width; xevent.xexpose.height=dmP->height; xevent.xexpose.count=0; if(!XSendEvent(xevent.xexpose.display, xevent.xexpose.window, propagate, event_mask, &xevent)) { fprintf(stderr, "FakeExpose: XSendEvent could not convert\n"); } } /* --------------------------------------------------------------- */ /* FakeAllExpose: action to fake an expose event to all diw_maps */ /*ARGSUSED*/ void FakeAllExpose(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { register int indx; for(indx=0; indxsrc_img, &diw_mapP->dst_img, diw_mapP->img_t, diw_mapP->img_brightness, diw_mapP->ximage); /* Send the image to the X server */ XPutImage(/* display */display, /* drawable */diw_mapP->pixmap, /* GC */x_gc_clear, /* ximage */diw_mapP->ximage, /* src x,y */ 0, 0, /* dest x,y */ 0, 0, /* size */ diw_mapP->width, diw_mapP->height); /* Use the "select" cursor */ XDefineCursor(display, window, diw_select_cursor); /* Refresh the window */ RefreshImage(widget, evt, prms, n_prms); DrawMeshes(widget, evt, prms, n_prms); } /* --------------------------------------------------------------- */ /* ReditherAllImages: action to redither all diw_map images into image panel */ /*ARGSUSED*/ void ReditherAllImages(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { register int indx; for(indx=0; indxsrc_img, &dmP->mesh_src, &dmP->mesh_dst, dmP->mesh_t); XRecolorCursor(disp, diw_wait_cursor, DXC_WHITE, DXC_BLACK); /* Warp the dst image backward */ rgbaImageWarp(&orig_image[1], &dmP->dst_img, &dmP->mesh_dst, &dmP->mesh_src, 1.0 - dmP->mesh_t); /* --- Display the warped images, dissolved */ ReditherImage(widget, evt, prms, n_prms); } /* NAME // ChangeMeshLine: action to add or delete a mesh line // // PRMS // prms[0] must be either "add" or "delete" // prms[1] must be either "vertical" or "horizontal" // // Sets the number of rows or columns in the global_diw_map[0].mesh_src // and global_diw_map[0].mesh_dst mesh. Frees old mesh arrays. Sets the // mesh array pointers to newly allocated array memory. */ /*ARGSUSED*/ void ChangeMeshLine(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { diw_map_t *diw_mapP; char action = *prms[0]; char line_type = *prms[1]; /* This action requires two arguments */ if(*n_prms < 2) return; if((diw_mapP = diw_map_of_widget(widget)) == NULL) { fprintf(stderr, "ChangeMeshLine: Bad Widget for diw_map\n"); return; } { Display *display = XtDisplay(widget); Window window = XtWindow(widget); Window root, child; int root_x, root_y; int win_x, win_y; unsigned int mask; /* Find the mouse pointer location */ XQueryPointer(display, window, &root, &child, &root_x, &root_y, &win_x, &win_y, &mask); if(diw_mapP->mesh_t < 0.5) { meshLineMouseModify(&global_diw_map[0].mesh_src, &global_diw_map[0].mesh_dst, win_x, win_y, line_type, action); } else { meshLineMouseModify(&global_diw_map[0].mesh_src, &global_diw_map[0].mesh_dst, win_x, win_y, line_type, action); } } /* Resynchronize the diw_map meshes */ diw_map_of_widget(NULL); /* Redraw all the images */ FakeAllExpose(0, NULL, NULL, NULL); } /* --------------------------------------------------------------- */ /* PickMeshpoint: action to grab a meshpoint // Sets global_diw_map[0].meshpoint_selected_loc[01] */ /*ARGSUSED*/ void PickMeshpoint(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { extern GC mps_gc; /* (selected) mesh point graphics context */ Window window = XtWindow(widget); Display *display = XtDisplay(widget); int win_x, win_y; int mi, mj; int md; MeshT mesh; diw_map_t *diw_mapP; /* Find the pointer location */ { Window root, child; int root_x, root_y; unsigned int mask; XQueryPointer(display, window, &root, &child, &root_x, &root_y, &win_x, &win_y, &mask); } if((diw_mapP = diw_map_of_widget(widget)) == NULL) { fprintf(stderr, "PickMeshpoint: Bad Widget for diw_map\n"); return; } mesh.nx = diw_mapP->mesh_src.nx; mesh.ny = diw_mapP->mesh_src.ny; /* Use either src or dst, depending on mesh_t */ if(diw_mapP->mesh_t < 0.5) { mesh.x = diw_mapP->mesh_src.x; mesh.y = diw_mapP->mesh_src.y; } else { mesh.x = diw_mapP->mesh_dst.x; mesh.y = diw_mapP->mesh_dst.y; } /* Search the meshpoints for the nearest to the pointer */ md = meshPointNearest(&mesh, win_x, win_y, &mi, &mj, NULL, NULL); /* Check to see if the pointer is close enough to meshpoint */ if(md < MP_PICK_DIST) { short x, y; /* Select the meshpoint */ global_diw_map[0].meshpoint_selected_loc[0] = mi; global_diw_map[0].meshpoint_selected_loc[1] = mj; global_diw_map[0].meshpoint_selected = True; /* Propagate the changes */ diw_map_of_widget(NULL); /* Draw the selected meshpoint filled in */ /* Location of the disc marking the selected meshpoint */ x = mesh.x[mj * mesh.nx + mi] - MP_SIZE/2; y = mesh.y[mj * mesh.nx + mi] - MP_SIZE/2; /* Draw the selected MP disc */ XFillArc(display, window, mps_gc, x-1, y-1, MP_SIZE+2, MP_SIZE+2, 0, MP_ARC); } } /* --------------------------------------------------------------- */ /* --------------------------------------------------------------- */ /* Starting place for dragging the selected mesh point */ static int diw_drag_start_x, diw_drag_start_y; /* Current place for dragging the selected mesh point */ static int diw_drag_current_x, diw_drag_current_y; /* --------------------------------------------------------------- */ /* --------------------------------------------------------------- */ /* UnpickMeshpoint: action to release meshpoint after drag // // SETS THE NEW MESHPOINT POSITION to be the changed by as much as the // vector difference of the end dragpoint minus the beginning dragpoint. // // Change the cursor to the "select" cursor. // // Sets the global_diw_map[0].meshpoint_selected to False */ /*ARGSUSED*/ void UnpickMeshpoint(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { extern Cursor diw_select_cursor; diw_map_t *diw_mapP; if((diw_mapP = diw_map_of_widget(widget)) == NULL) { fprintf(stderr, "UnpickMeshpoint: Bad Widget for diw_map\n"); return; } if(diw_mapP->meshpoint_selected) { Window window = XtWindow(widget); Display *display = XtDisplay(widget); const int mi = diw_mapP->meshpoint_selected_loc[0]; const int mj = diw_mapP->meshpoint_selected_loc[1]; const int nx = diw_mapP->mesh_src.nx; const int ny = diw_mapP->mesh_src.ny; double mps_dx; double mps_dy; MeshT *mesh_selected; double mesh_point_new_x = 0.0; double mesh_point_new_y = 0.0; /* Decide which mesh to modify (src or dst) */ if(diw_mapP->mesh_t < 0.5) { mesh_selected = &diw_mapP->mesh_src; } else { mesh_selected = &diw_mapP->mesh_dst; } /* Save the new position */ mesh_point_new_x = mesh_selected->x[mj*nx + mi] ; if(mi != 0 && mi != (nx-1)) { /* Find the x component of the total motion vector */ mps_dx = diw_drag_current_x - diw_drag_start_x; /* Compute the new x-location of the mesh point */ mesh_point_new_x = mesh_selected->x[mj*nx + mi] + mps_dx; } mesh_point_new_y = mesh_selected->y[mj*nx + mi] ; if(mj != 0 && mj != (ny-1)) { /* Find the y component of the total motion vector */ mps_dy = diw_drag_current_y - diw_drag_start_y; /* Compute the new y-location of the mesh point */ mesh_point_new_y = mesh_selected->y[mj*nx + mi] + mps_dy; } meshSet(mesh_selected, mi, mj, mesh_point_new_x, mesh_point_new_y); /* Set the mesh drag status */ global_diw_map[0].meshpoint_selected = False; /* Propagate the mesh changes */ diw_map_of_widget(NULL); /* Use the "select" cursor */ XDefineCursor(display, window, diw_select_cursor); /* Redraw all the images */ FakeAllExpose(0, NULL, NULL, NULL); } } /* --------------------------------------------------------------- */ /* DragMeshpoint: action to set meshpoint drag "to" location // mesh_t determines whether src or dst mesh is used // if (mesh_t < 0.5) use src, otherwise, dst */ /*ARGSUSED*/ void DragMeshpoint(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { extern Cursor diw_drag_ud_cursor; extern Cursor diw_drag_lr_cursor; extern Cursor diw_drag_cursor; diw_map_t *diw_mapP; if((diw_mapP = diw_map_of_widget(widget)) == NULL) { fprintf(stderr, "DragMeshpoint: Bad Widget for diw_map\n"); return; } if(diw_mapP->meshpoint_selected) { Window win = XtWindow(widget); Display *disp = XtDisplay(widget); Window root, child; int root_x, root_y; unsigned int mask; int mi = diw_mapP->meshpoint_selected_loc[0]; int mj = diw_mapP->meshpoint_selected_loc[1]; /* Find the current drag location */ XQueryPointer(disp, win, &root, &child, &root_x, &root_y, &diw_drag_current_x, &diw_drag_current_y, &mask); /* Use the "drag" cursor */ if(mi==0 || mi==(diw_mapP->mesh_src.nx-1)) { XDefineCursor(disp, win, diw_drag_ud_cursor); } else if(mj==0 || mj==(diw_mapP->mesh_src.ny-1)) { XDefineCursor(disp, win, diw_drag_lr_cursor); } else { XDefineCursor(disp, win, diw_drag_cursor); } } } /* --------------------------------------------------------------- */ /* StartDragMeshpoint: action to set meshpoint drag "from" location // Set the cursor shape and color to indicate dragging. // mesh_t determines whether src or dst mesh is used; // if (mesh_t < 0.5) use src, otherwise, dst */ /*ARGSUSED*/ void StartDragMeshpoint(Widget widget, XEvent *evt, String *prms, Cardinal *n_prms) { extern Cursor diw_drag_ud_cursor; extern Cursor diw_drag_lr_cursor; extern Cursor diw_drag_cursor; diw_map_t *diw_mapP; if((diw_mapP = diw_map_of_widget(widget)) == NULL) { fprintf(stderr, "StartDragMeshpoint: Bad Widget for diw_map\n"); return; } if(diw_mapP->meshpoint_selected) { Window win = XtWindow(widget); Display *disp = XtDisplay(widget); Cursor xcursor; int mi = diw_mapP->meshpoint_selected_loc[0]; int mj = diw_mapP->meshpoint_selected_loc[1]; Window root, child; int root_x, root_y; unsigned int mask; /* Initialize the drag vector */ XQueryPointer(disp, win, &root, &child, &root_x, &root_y, &diw_drag_start_x, &diw_drag_start_y, &mask); diw_drag_current_x = diw_drag_start_x; diw_drag_current_y = diw_drag_start_y; /* Draw the grids to show which point is highlighted */ /* Use the "drag" cursor */ if(mi==0 || mi==(diw_mapP->mesh_src.nx-1)) { XDefineCursor(disp, win, xcursor=diw_drag_ud_cursor); } else if(mj==0 || mj==(diw_mapP->mesh_src.ny-1)) { XDefineCursor(disp, win, xcursor=diw_drag_lr_cursor); } else { XDefineCursor(disp, win, xcursor=diw_drag_cursor); } /* Color the "drag" cursor */ if(diw_mapP->mesh_t < 0.5) { /* Color the cursor green to indicate src mesh */ XRecolorCursor(disp, xcursor, DXC_GREEN, DXC_BLACK); } else { /* Color the cursor red to indicate dst mesh */ XRecolorCursor(disp, xcursor, DXC_RED, DXC_BLACK); } } } /* =============================================================== */ /* Callbacks */ /* --------------------------------------------------------------- */ /* warp_image_cb: callback to warp images */ /*ARGSUSED*/ static void warp_image_cb(Widget widget, XtPointer client_data, XtPointer call_data) { diw_map_t *dmP = (diw_map_t *) client_data; WarpImage(dmP->widget, NULL, NULL, NULL); } /* --------------------------------------------------------------- */ /* redither_image_cb: callback to redither images */ /*ARGSUSED*/ static void redither_image_cb(Widget widget, XtPointer client_data, XtPointer call_data) { diw_map_t *dmP = (diw_map_t *) client_data; ReditherImage(dmP->widget, NULL, NULL, NULL); } /* --------------------------------------------------------------- */ /* mpt_scroll_cb: callback for diw_map mesh scrollbar extremum jumps */ static void mpt_scroll_cb(Widget widget, XtPointer client_data, XtPointer call_data) { diw_map_t *dmP = (diw_map_t *)client_data; int pixels = (int)call_data; if(pixels>0) { /* Left */ XawScrollbarSetThumb(widget, 0.0, -1.0); dmP->mesh_t = 0.0; } else { /* Right */ XawScrollbarSetThumb(widget, 1.0, -1.0); dmP->mesh_t = 1.0; } FakeExpose(dmP->widget, NULL, NULL, NULL); } /* --------------------------------------------------------------- */ /* mpt_jump_cb: callback for diw_map mesh scrollbar thumb drag */ /*ARGSUSED*/ static void mpt_jump_cb(Widget widget, XtPointer client_data, XtPointer call_data) { diw_map_t *dmP = (diw_map_t *)client_data; float percent = *(float *)call_data; dmP->mesh_t = percent; FakeExpose(dmP->widget, NULL, NULL, NULL); } /* --------------------------------------------------------------- */ /* image_scroll_cb: callback for diw_map image disolve scrollbar extremum */ static void image_scroll_cb(Widget widget, XtPointer client_data, XtPointer call_data) { diw_map_t *dmP = (diw_map_t *)client_data; int pixels = (int)call_data; if(pixels>0) { /* Left */ XawScrollbarSetThumb(widget, 0.0, -1.0); dmP->img_t = 0.0; } else { /* Right */ XawScrollbarSetThumb(widget, 1.0, -1.0); dmP->img_t = 1.0; } ReditherImage(dmP->widget, NULL, NULL, NULL); } /* --------------------------------------------------------------- */ /* image_jump_cb: callback for diw_map image disolve scrollbar drag */ /*ARGSUSED*/ static void image_jump_cb(Widget widget, XtPointer client_data, XtPointer call_data) { diw_map_t *dmP = (diw_map_t *)client_data; float percent = *(float *)call_data; dmP->img_t = percent; ReditherImage(dmP->widget, NULL, NULL, NULL); } /* --------------------------------------------------------------- */ /* dp_menu_cb: callback for diw_map properties menu entries */ /*ARGSUSED*/ void dp_menu_cb(Widget widget, XtPointer client_data, XtPointer call_data) { extern Pixmap xbm_select; extern Pixmap xbm_unselect; diw_map_t *dmP = (diw_map_t *)client_data; int bool; /* Toggle the values */ if(widget == NULL) { fprintf(stderr, "dp_menu_cb: Bad Widget %p\n", widget); return; } else if(widget == dmP->smp) { bool = dmP->meshpoints_src_draw = !dmP->meshpoints_src_draw; } else if(widget == dmP->sml) { bool = dmP->meshlines_src_draw = !dmP->meshlines_src_draw; } else if(widget == dmP->dmp) { bool = dmP->meshpoints_dst_draw = !dmP->meshpoints_dst_draw; } else if(widget == dmP->dml) { bool = dmP->meshlines_dst_draw = !dmP->meshlines_dst_draw; } else if(widget == dmP->tmp) { bool = dmP->meshpoints_t_draw = !dmP->meshpoints_t_draw; } else if(widget == dmP->tml) { bool = dmP->meshlines_t_draw = !dmP->meshlines_t_draw; } else { fprintf(stderr, "dp_menu_cb: Bad Widget %p\n", widget); return; } /* Set the button bitmap */ if(bool) { XtVaSetValues(widget, XtNleftBitmap, xbm_select, NULL); } else { XtVaSetValues(widget, XtNleftBitmap, xbm_unselect, NULL); } } /* --------------------------------------------------------------- */ /* dp_dim_cb: callback for diw_map properties menu entry "dim" */ /*ARGSUSED*/ static void dp_dim_cb(Widget widget, XtPointer client_data, XtPointer call_data) { extern Pixmap xbm_select; extern Pixmap xbm_unselect; diw_map_t *dmP = (diw_map_t *)client_data; /* Toggle the value */ if(dmP->img_brightness != 1.0) { dmP->img_brightness = 1.0; XtVaSetValues(widget, XtNleftBitmap, xbm_unselect, NULL); } else { dmP->img_brightness = 0.5; XtVaSetValues(widget, XtNleftBitmap, xbm_select, NULL); } ReditherImage(dmP->widget, NULL, NULL, NULL); } /* =============================================================== */ /* --------------------------------------------------------------- */ /* allocate_x_images: allocate pixmap and ximage // (intended for the pixmap and ximage members of a diw_map) */ int allocate_x_images(Widget widget, Pixmap *pxP, XImage **xiP, int nx, int ny) { extern int x_depth; extern GC x_gc_clear; Display *display = XtDisplay(widget); #define FACTOR_OF_4 #ifdef FACTOR_OF_4 /* Force the pixmap and ximage width to be a factor of 4, because // wraparound happens in some versions of X otherwise. // I think this has to do with ximage.bitmap_pad. // For now, I will live with this hack. */ nx=((int)(nx/4.0 + 0.9999))*4; #endif *pxP = XCreatePixmap(display, RootWindowOfScreen(XtScreen(widget)), /* width */ nx, /* height */ ny, /* depth */ x_depth); if(*pxP == 0) { fprintf(stderr, "allocate_x_images: XCreatePixmap failed\n"); return(1); } /* Create a blank XImage to draw in */ #ifdef XCI /* I do not have enough info from any of the X docs to // understand XCreateImage. I do not know whether bytes_per_line is // changed by the X server. The docs are not clear about that. Hence, // I do not know how much memory to allocate for the XImage data. // Also, the bitmap_pad seems to be different from what I specify // here, which is the reason for the FACTOR_OF_4 hack above. // -- MJG 18sep95 */ { char *xi_data; xi_data = MY_CALLOC(nx*ny*x_depth, char); *xiP = XCreateImage(display, x_visual, x_depth, ZPixmap, /*offset */0, /* data */xi_data, /* width */nx, /* height */ny, /* bitmap_pad */8, /*bytes_per_line*/0); } #else /* I do not know whether the image data is allocated by the call ** to XGetImage or not. The docs do not say. I assume that the data ** is allocated there. */ *xiP = XGetImage(display, /* drawable */ *pxP, /* x, y offset */ 0, 0, /* width, height */ nx, ny, /* plane mask */ AllPlanes, /* format */ ZPixmap); #endif if(*xiP == NULL) { fprintf(stderr, "allocate_x_images: XGetImage failed\n"); return(1); } /* Create a graphics context with the correct visual and depth info ** for drawing into the image space for the above structures */ { XGCValues gc_vals; /* Erase new window */ gc_vals.foreground = BlackPixel(display, XDefaultScreen(display)); x_gc_clear = XCreateGC(display, *pxP, GCForeground, &gc_vals); XFillRectangle(display, *pxP, x_gc_clear, 0, 0, nx, ny); } return(0); } /* --------------------------------------------------------------- */ /* initialize_diw_map: set sane values for most diw_map members // Allocates memory for src and dst meshes // Resets src and dst meshes. */ static void initialize_diw_map(diw_map_t *dmP) { int nx = dmP->width / 40 + 1; int ny = dmP->height / 40 + 1; if(meshAlloc(&dmP->mesh_src, nx, ny)) exit(1); if(meshAlloc(&dmP->mesh_dst, nx, ny)) exit(1); meshReset(&dmP->mesh_src, dmP->width, dmP->height); meshReset(&dmP->mesh_dst, dmP->width, dmP->height); dmP->meshpoint_selected = False; dmP->img_brightness = 1.0; /* Turn off all meshes and make the user turn them on */ dmP->meshpoints_t_draw = False; dmP->meshlines_t_draw = False; dmP->meshpoints_src_draw = False; dmP->meshlines_src_draw = False; dmP->meshpoints_dst_draw = False; dmP->meshlines_dst_draw = False; } /* --------------------------------------------------------------- */ /* image_panel_translations: event-to-action mappings */ static char image_panel_translations[] = "\ : pick() start_drag() draw_all_meshes() \n\ : drag() \n\ : unpick() \n\ Shift : change_mesh(delete, vertical) \n\ Shift : change_mesh(delete, horizontal) \n\ (2) : change_mesh(delete, vertical) \n\ (2) : change_mesh(delete, horizontal) \n\ : change_mesh(add, vertical) \n\ : change_mesh(add, horizontal) \n\ : refresh() draw_meshes()\ "; /* --------------------------------------------------------------- */ /* NAME // set_x_visual: This is supposed to find the best visual class and // visual depth the hardware supports. However, later, when a XPutImage // is done, it fails. This is because the Xt toolkit does not easily // support using anything other than the default visual class. Perhaps // this will change in future versions of X. */ static void set_x_visual(Display *display) { extern Visual *x_visual; extern int x_depth; int screen_num = XDefaultScreen(display); #ifdef VISUAL_WORKING XVisualInfo vTemplate; XVisualInfo *vlP; int visualsMatched; int vi; /* If x_visual is non-NULL, then it has already been found */ if(x_visual != NULL) return; vTemplate.screen = screen_num; /* --- Look for 24 bit TrueColor visuals */ vTemplate.class = TrueColor; vlP = XGetVisualInfo(display, VisualScreenMask | VisualClassMask, &vTemplate, &visualsMatched); if(visualsMatched) { Visual *beVis; /* visual corresponding to largest depth */ int beDep=0; /* largest depth */ for(vi = 0; vi < visualsMatched; vi++) { if(vlP[vi].depth > beDep) { beDep = vlP[vi].depth; beVis = vlP[vi].visual; } } XFree(vlP); if(beDep >=8) { printf("beVis: TrueColor %i bit\n", beDep); x_depth = beDep; x_visual = beVis; return; } } /* --- Look for 8 bit PseudoColor visuals */ vTemplate.class = PseudoColor; vlP = XGetVisualInfo(display, VisualScreenMask | VisualClassMask, &vTemplate, &visualsMatched); if(visualsMatched) { Visual *beVis; /* visual corresponding to largest depth */ int beDep=0; /* largest depth */ for(vi = 0; vi < visualsMatched; vi++) { if(vlP[vi].depth > beDep) { beDep = vlP[vi].depth; beVis = vlP[vi].visual; } } XFree(vlP); if(beDep >=8) { printf("beVis: PseudoColor %i bit\n", beDep); x_depth = beDep; x_visual = beVis; return; } } /* Could not find a visual with at least 8 bits per pixel */ /* Use the default and warn the user */ fprintf(stderr, "set_x_visual: could not find sufficient video display\n"); #endif x_visual = DefaultVisual(display, screen_num); x_depth = DefaultDepth(display, screen_num); if(verbose) { fprintf(stderr, "set_x_visual: visual %i depth %i\n", x_visual->class, x_depth); } return; } /* --------------------------------------------------------------- */ /* create_diw_widget: Create the widget heirarchy for the diw_map and image // parent is the parent widget // // returns the widget of the image panel, not the form widget // // NOTE: This is not a real widget yet. -- 24may94 MJG // // About setting the "widget" member of the diw_map: // This is a hack to make this diw structure behave like a widget. // There is a global array of diw_map, each with its own Core // widget. When a callback or action is performed, the widget is // passed to the routine, and the routine then looks up which // diw_map is associated with that widget. This could all be fixed up // by making the diw_map a full-fledged widget, which I might // eventually do, but for now, this works. // // side_effects: // global_variables x_visual, x_depth set. // menu string is allocated to create unique name for // popup menu. Athena uses strings, not widget IDs, to find popup // shells for menus. How bizarre. How stupid. */ Widget create_diw_widget(Widget parent, diw_map_t *dmP, int width, int height) { extern Pixmap xbm_gray; extern Pixmap xbm_unselect; Widget form; /* constraint geometry widget for layout */ Widget diw_prop_menu_button; /* menu button: properties */ String diw_prop_menu_name; /* "name" is the way Athena finds the menu */ Widget diw_prop_menu; /* menu: properties */ Widget smp_sme, sml_sme; /* toggle: src mesh lines and points */ Widget dmp_sme, dml_sme; /* toggle: dst mesh lines and points */ Widget tmp_sme, tml_sme; /* toggle: interp mesh lines and points */ Widget dim_sme; /* toggle: dim image */ String diw_cmd_menu_name; /* "name" is the way Athena finds the menu */ Widget diw_cmd_menu; /* menu: commands */ dialog_apdx_t *si_daP; /* dialog: save image */ Widget si_sme; /* button: popup save image dialog */ Widget warp_sme; /* button: warp images */ Widget redither_sme; /* button: redither images */ Widget viewport; /* viewport: for image_panel */ Widget image_panel; /* core: image panel */ Widget label_mesh, label_src_mesh, label_dst_mesh; Widget scrollbar_mesh; Widget label_image, label_src_image; Widget scrollbar_image; Arg args[25]; int argn; Display *display = XtDisplay(parent); static int serial=0; /* Find an appropriate bits-per-pixel depth (for the pixmap) */ set_x_visual(display); /* WA: (MJG 13sep95) */ /* Create the Form widget for the buttons and image region */ form = XtVaCreateManagedWidget("dm_form", formWidgetClass, parent, NULL); dmP->form = form; /* Create a simple menu: properties */ /* create a unique menu name */ if((diw_prop_menu_name=MY_CALLOC(20, char))==NULL) { return(0); } sprintf(diw_prop_menu_name, "dpm_%i", serial++); diw_prop_menu = XtVaCreatePopupShell(diw_prop_menu_name, simpleMenuWidgetClass, parent, XtNbackgroundPixmap, xbm_gray, NULL); /* Create a menu entry: show source mesh points */ dmP->smp = smp_sme = XtVaCreateManagedWidget("smp_sme", smeBSBObjectClass, diw_prop_menu, XtNleftBitmap, xbm_unselect, NULL); XtAddCallback(smp_sme, XtNcallback, dp_menu_cb, dmP); /* Create a menu entry: show source mesh lines */ dmP->sml = sml_sme = XtVaCreateManagedWidget("sml_sme", smeBSBObjectClass, diw_prop_menu, XtNleftBitmap, xbm_unselect, NULL); XtAddCallback(sml_sme, XtNcallback, dp_menu_cb, dmP); /* Create a menu entry: show destination mesh points */ dmP->dmp = dmp_sme = XtVaCreateManagedWidget("dmp_sme", smeBSBObjectClass, diw_prop_menu, XtNleftBitmap, xbm_unselect, NULL); XtAddCallback(dmp_sme, XtNcallback, dp_menu_cb, dmP); /* Create a menu entry: show destination mesh lines */ dmP->dml = dml_sme = XtVaCreateManagedWidget("dml_sme", smeBSBObjectClass, diw_prop_menu, XtNleftBitmap, xbm_unselect, NULL); XtAddCallback(dml_sme, XtNcallback, dp_menu_cb, dmP); /* Create a menu entry: show tween mesh points */ dmP->tmp = tmp_sme = XtVaCreateManagedWidget("tmp_sme", smeBSBObjectClass, diw_prop_menu, XtNleftBitmap, xbm_unselect, NULL); XtAddCallback(tmp_sme, XtNcallback, dp_menu_cb, dmP); /* Create a menu entry: show tween mesh lines */ dmP->tml = tml_sme = XtVaCreateManagedWidget("tml_sme", smeBSBObjectClass, diw_prop_menu, XtNleftBitmap, xbm_unselect, NULL); XtAddCallback(tml_sme, XtNcallback, dp_menu_cb, dmP); /* menu item separator */ XtVaCreateManagedWidget("sep_sme", smeLineObjectClass, diw_prop_menu, NULL); /* Create a menu entry: dim image */ dim_sme = XtVaCreateManagedWidget("dim_sme", smeBSBObjectClass, diw_prop_menu, XtNleftBitmap, xbm_unselect, NULL); XtAddCallback(dim_sme, XtNcallback, dp_dim_cb, dmP); /* Create a menu button: properties */ diw_prop_menu_button = XtVaCreateManagedWidget("diw_prop_menu_button", menuButtonWidgetClass, form, XtNmenuName, diw_prop_menu_name, NULL); /* Create a simple menu: commands */ /* create a unique menu name */ if((diw_cmd_menu_name=MY_CALLOC(20, char))==NULL) { return(0); } sprintf(diw_cmd_menu_name, "dcm_%i", serial++); diw_cmd_menu = XtVaCreatePopupShell(diw_cmd_menu_name, simpleMenuWidgetClass, parent, XtNbackgroundPixmap, xbm_gray, NULL); #ifdef NEED_GIMP if (!plugin) #endif { /* Create the dialog widget: save image */ si_daP = create_mjg_dialog(parent, "si"); si_daP->callback = save_img_cb; si_daP->client_data = (XtPointer)dmP; /* Create a menu entry: save image */ si_sme = XtVaCreateManagedWidget("si_sme", smeBSBObjectClass, diw_cmd_menu, NULL); XtAddCallback(si_sme, XtNcallback, popup_dialog_cb, si_daP); si_daP->button = si_sme; /* button that pops up dialog */ } /* Create a menu entry: warp image */ warp_sme = XtVaCreateManagedWidget("warp_sme", smeBSBObjectClass, diw_cmd_menu, NULL); XtAddCallback(warp_sme, XtNcallback, warp_image_cb, dmP); /* Create a menu entry: redither image */ redither_sme = XtVaCreateManagedWidget("redither_sme", smeBSBObjectClass, diw_cmd_menu, NULL); XtAddCallback(redither_sme, XtNcallback, redither_image_cb, dmP); /* Create a menu button: commands */ XtVaCreateManagedWidget("diw_cmd_menu_button", menuButtonWidgetClass, form, XtNmenuName, diw_cmd_menu_name, XtNfromHoriz, diw_prop_menu_button, NULL); /* Create the viewport for the image panel */ viewport = XtVaCreateManagedWidget("viewport", viewportWidgetClass, form, XtNfromVert, diw_prop_menu_button, NULL); /* Create the image region window */ argn=0; XtSetArg(args[argn], XtNwidth, width); argn++; XtSetArg(args[argn], XtNheight, height); argn++; /* I am guessing about the depth and visual because I do not have my ** Xt docs with me right now. -- MJG 18sep95 */ /* XtSetArg(args[argn], XtNdepth, x_depth); argn++; */ XtSetArg(args[argn], XtNtranslations, XtParseTranslationTable(image_panel_translations)); argn++; image_panel = XtCreateManagedWidget("image_panel", widgetClass, viewport, args, argn); /* -- Warp scrollbar -- */ /* Create a label */ label_mesh = XtVaCreateManagedWidget("mesh_label", labelWidgetClass, form, XtNfromVert, viewport, NULL); /* Create a label */ label_src_mesh = XtVaCreateManagedWidget("source_mesh", labelWidgetClass, form, XtNfromVert, viewport, NULL); /* Create a scrollbar */ argn=0; XtSetArg(args[argn], XtNfromVert, viewport); argn++; /* length should be no more than width-(label_src)-(label_dst) */ XtSetArg(args[argn], XtNlength, 100); argn++; /* thickness should be the same as the label height */ XtSetArg(args[argn], XtNthickness, 21); argn++; scrollbar_mesh = XtCreateManagedWidget("scrollbar_mesh", scrollbarWidgetClass, form, args, argn); dmP->warp_sb = scrollbar_mesh; XtAddCallback(scrollbar_mesh, XtNscrollProc, mpt_scroll_cb, dmP); XtAddCallback(scrollbar_mesh, XtNjumpProc, mpt_jump_cb, dmP); XawScrollbarSetThumb(scrollbar_mesh, dmP->mesh_t, -1.0); /* Create a label */ argn=0; XtSetArg(args[argn], XtNfromVert, viewport); argn++; label_dst_mesh = XtCreateManagedWidget("destination_mesh", labelWidgetClass, form, args, argn); /* -- Dissolve scrollbar -- */ /* Create a label */ label_image = XtVaCreateManagedWidget("image_label", labelWidgetClass, form, XtNfromVert, label_mesh, NULL); /* Create a label */ label_src_image=XtVaCreateManagedWidget("source_image", labelWidgetClass, form, XtNfromVert, label_mesh, XtNfromHoriz, label_image, NULL); /* Create a scrollbar */ argn=0; XtSetArg(args[argn], XtNfromVert, scrollbar_mesh); argn++; XtSetArg(args[argn], XtNfromHoriz, label_src_image); argn++; /* length should be no more than width-(label_src)-(label_dst) */ XtSetArg(args[argn], XtNlength, 100); argn++; /* thickness should be the same as the label height */ XtSetArg(args[argn], XtNthickness, 21); argn++; scrollbar_image = XtCreateManagedWidget("scrollbar_image", scrollbarWidgetClass, form, args, argn); dmP->dissolve_sb = scrollbar_image; XtAddCallback(scrollbar_image, XtNscrollProc, image_scroll_cb, dmP); XtAddCallback(scrollbar_image, XtNjumpProc, image_jump_cb, dmP); XawScrollbarSetThumb(scrollbar_image, dmP->img_t, -1.0); /* Create a label */ argn=0; XtSetArg(args[argn], XtNfromVert, label_dst_mesh); argn++; XtSetArg(args[argn], XtNfromHoriz, scrollbar_image); argn++; XtCreateManagedWidget("destination_image", labelWidgetClass, form, args, argn); /* -- Scrollbar Geometry constraints -- */ XtVaSetValues(label_src_mesh, XtNfromHoriz, label_image, NULL); XtVaSetValues(scrollbar_mesh, XtNfromHoriz, label_src_image, NULL); XtVaSetValues(label_dst_mesh, XtNfromHoriz, scrollbar_image, NULL); /* ----- ----- */ /* Set the image panel geometry members in the diw_map */ dmP->width = width; dmP->height = height; /* Set all the X Window System stuff for this DIW structure */ /* Set the widget member */ dmP->widget = image_panel; /* Create the pixmap and stuff */ if(allocate_x_images(parent, &dmP->pixmap, &dmP->ximage, width, height)) { fprintf(stderr, "create_diw_widget :failed to allocate X image space\n"); } /* Find best visual class available */ /* redundant call. --MJG:12jul96 */ /* set_x_visual(display); */ /* Here is the only part that is not window system specific */ initialize_diw_map(dmP); #if 0 FREE(diw_prop_menu_name); FREE(diw_cmd_menu_name); #endif return(image_panel); } /* --------------------------------------------------------------- */ /* NUM_QUERY_COLORS: number of colors to query in colormap search */ #define NUM_QUERY_COLORS 256 /* X_MAXVAL: maximum value for red,green, or blue value in X */ #define X_MAXVAL 65535 void init_diw_stuff(Widget toplevel) { extern GC mpl_gc; /* mesh line graphics context */ extern GC mp_gc; /* mesh point graphics context */ extern GC mps_gc; /* (selected) mesh point graphics context */ extern Pixmap xbm_gray; extern int x_depth; extern Pixmap xbm_select; extern Pixmap xbm_unselect; extern Cursor diw_drag_cursor; extern Cursor diw_drag_ud_cursor; extern Cursor diw_drag_lr_cursor; extern Cursor diw_select_cursor; /* extern Cursor diw_unselect_cursor; */ extern Cursor diw_wait_cursor; XGCValues gcvals; XColor light_gray_s, light_gray_e; Display *display; int screen_num; display = XtDisplay(toplevel); screen_num = XDefaultScreen(display); /* Make bitmaps for my toggle buttons */ if(!XAllocNamedColor(display, DefaultColormap(display, screen_num), "light gray", &light_gray_s, &light_gray_e)) { fprintf(stderr, "failed to allocate color 'light gray'\n"); light_gray_s.pixel = WhitePixel(display, screen_num); light_gray_e.pixel = BlackPixel(display, screen_num); } set_x_visual(display); /* MJG 14sep95 */ /* changed 8 to x_depth -- WA (MJG 13sep95) */ xbm_gray = XCreatePixmapFromBitmapData(display, RootWindowOfScreen(XtScreen(toplevel)), gray_bits, gray_width, gray_height, light_gray_s.pixel, light_gray_e.pixel, x_depth); xbm_select = XCreateBitmapFromData(display, RootWindowOfScreen(XtScreen(toplevel)), select_bits, select_width, select_height); xbm_unselect = XCreateBitmapFromData(display, RootWindowOfScreen(XtScreen(toplevel)), unselect_bits, unselect_width, unselect_height); { /* ============================================================ */ /* Allocate the read-only color cells for my Dithering Colormap */ int dci; if(verbose) { fprintf(stderr, "i_d_s: NUM_DIW_XCOLORS=%i\n", NUM_DIW_XCOLORS); fprintf(stderr, "i_d_s: RED_NUM_BITS=%i\n", RED_NUM_BITS); fprintf(stderr, "i_d_s: GRN_NUM_BITS=%i\n", GRN_NUM_BITS); fprintf(stderr, "i_d_s: BLU_NUM_BITS=%i\n", BLU_NUM_BITS); fprintf(stderr, "i_d_s: RED_MAXVAL=%i\n", RED_MAXVAL); fprintf(stderr, "i_d_s: GRN_MAXVAL=%i\n", GRN_MAXVAL); fprintf(stderr, "i_d_s: BLU_MAXVAL=%i\n", BLU_MAXVAL); fprintf(stderr, "i_d_s: RED_SHIFT=%i\n", RED_SHIFT); fprintf(stderr, "i_d_s: GRN_SHIFT=%i\n", GRN_SHIFT); fprintf(stderr, "i_d_s: BLU_SHIFT=%i\n", BLU_SHIFT); } for(dci=0; dci=2) { fprintf(stderr, "i_d_s: dci=%i\n", dci); } /* Construct the desired RGB color */ /* ------------------------------- */ /* * Here is the formula for finding a channel value from dci: * * What we start with is a "dithering colormap index" (DCI), which * is the index into the diw_xcolormap mapping array. The general * idea of how to change this into a channel value that the * display will understand is simple, but since I want to do all * of it in integer arithmetic, it looks complicated. I will * describe the procedure in floating point arithmetic first, to * make it more clear: * * (1) Mask the DCI to get the value of each channel, i.e. the * red, green, and blue color values. * * * (2) Scale this to give a number between 0.0 and 1.0 where 0.0 * means no color and 1.0 means fully on for that channel. * * (3) Multiply by the display maximum value for that channel, * which gives a number between 0 and the maximum value the * display uses to indicate fully on. * * Here is how to do all of this in integer arithmetic. * * (1) Mask the DCI index with the XPI_ of the pure channel color, * to get only the bits from the channel desired. * * (2) Shift right to get a value where the minimum is 0. I.e., * now that we have the bits that we want, we need to put them * in the correct place by shifting them right. Now we will * have a value between 0 and my scheme maximum value for * that channel. * * (3) Multiply by the display maximum value the channel will * allow. This scales the color value up to the display * scheme. Now we have a value between zero and * (display max val) * (my max val), which is too large by a * factor of (my max val). * * (4) Add the maximum value of the dithered color for that * channel, then subtract one. This is to correct for * roundoff introduced in the next step. * * (5) Divide by the maximum value of the dithered color for that * channel. This gives us a value between 0 and (display max val), * which is what the display needs, so we are done. * */ diw_xcolors[dci].red = (RED_DCI(dci) * X_MAXVAL + RED_MAXVAL-1) / RED_MAXVAL; diw_xcolors[dci].green = (GRN_DCI(dci) * X_MAXVAL + GRN_MAXVAL-1) / GRN_MAXVAL; diw_xcolors[dci].blue = (BLU_DCI(dci) * X_MAXVAL + BLU_MAXVAL-1) / BLU_MAXVAL; if(verbose>=2) { fprintf(stderr, "i_d_s: requesting allocation of color (%4x,%4x,%4x)\n", diw_xcolors[dci].red, diw_xcolors[dci].green, diw_xcolors[dci].blue); } /* Ask for the desired color to be allocated in the colormap */ /* --------------------------------------------------------- */ if(!XAllocColor(display, DefaultColormap(display, screen_num), &diw_xcolors[dci])) { /* Could not allocate color, so find a close one */ /* --------------------------------------------- */ int pi, pim=0; /* index into colormap */ int rd, gd, bd; /* color channel distances */ unsigned long pd; /* distance between colors */ unsigned long pdmin=0xffffffff; /* minimum distance so far */ XColor xcol[NUM_QUERY_COLORS]; /* array of queried colors */ fprintf(stderr, "could not allocate color (%4x,%4x,%4x),", diw_xcolors[dci].red, diw_xcolors[dci].green, diw_xcolors[dci].blue); /* Find out what colors are available. */ /* ----------------------------------- */ /* -- Ask for colors indexed 0 through NUM_QUERY_COLORS */ for(pi=0; pi> TRUNC_SHIFT) - (xcol[pi].red >> TRUNC_SHIFT); gd = (diw_xcolors[dci].green >> TRUNC_SHIFT) - (xcol[pi].green >> TRUNC_SHIFT); bd = (diw_xcolors[dci].blue >> TRUNC_SHIFT) - (xcol[pi].blue >> TRUNC_SHIFT); pd = rd*rd + gd*gd + bd*bd; /* scalar color "distance" */ /* If pixel distance is smallest found so far ... */ if(pd gtkmorph gtkmorph glade1 pixmaps C False True True True po/gtkmorph.glade.c GtkWindow window_main delete_event on_window_main_delete Thu, 30 May 2002 17:50:24 GMT gtkmorph GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False True False gtkmorph gtkmorph GtkVBox vbox1 False 0 GtkMenuBar menubar1 GTK_SHADOW_OUT 0 False False GtkMenuItem file File menu False GtkMenu file_menu GtkMenuItem load_session activate on_load_session_activate Tue, 04 Jun 2002 10:51:58 GMT False GtkMenuItem save_session activate on_save_session_activate Tue, 04 Jun 2002 10:51:58 GMT False GtkMenuItem separatore4 False GtkMenuItem add_an_image activate on_add_an_image_activate Tue, 12 Sep 2000 09:32:33 GMT False GtkMenuItem separatore9 False GtkMenuItem quit1 GDK_MOD1_MASK GDK_q activate activate on_quit1_activate Fri, 25 Aug 2000 13:57:21 GMT False GtkMenuItem edit False GtkMenu edit_menu GtkMenuItem view_images1 activate on_view_images1_activate Wed, 30 Aug 2000 14:04:11 GMT False GtkMenuItem show_mag activate on_show_mag_activate Sat, 08 Mar 2003 10:17:30 GMT False GtkMenuItem separator4 False GtkMenuItem resulting_image_size activate on_resulting_image_size_activate Thu, 30 May 2002 14:34:25 GMT False GtkMenuItem show morph factors activate on_show_morph_factors_activate Tue, 04 Jun 2002 10:23:32 GMT False GtkMenuItem settings_menu False GtkMenuItem morph False GtkMenu morph_menu GtkMenuItem interpolate_meshes1 the mesh of the resulting image is set to an interpolation of the input images' meshes, weighted by the ``mesh factors'' activate on_interpolate_meshes1_activate Mon, 11 Sep 2000 17:16:56 GMT False GtkMenuItem morph_images1 the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button GDK_CONTROL_MASK GDK_j activate activate on_morph_images1_activate Fri, 25 Aug 2000 14:13:31 GMT False GtkMenuItem separatore1 False GtkMenuItem adjust_all_meshes adjust points of meshes confronting original images and the morph activate on_adjust_all_meshes_activate Sun, 11 Jul 2004 10:49:17 GMT False GtkMenuItem wavelet_equalize equalize input images so that the subband of wavelet transform have the same energies activate on_wavelet_equalize_activate Sun, 11 Jul 2004 10:49:57 GMT False GtkMenuItem separator12 False GtkMenuItem restore_morph_factors1 activate on_restore_morph_factors1_activate Sun, 29 Apr 2001 12:34:24 GMT False GtkMenu restore_morph_factors1_menu GtkMenuItem startr activate on_restore_start_activate Sun, 06 Oct 2002 09:46:27 GMT False GtkMenuItem endr activate on_restore_end_activate Sun, 06 Oct 2002 09:46:27 GMT False GtkMenuItem equalr activate on_restore_equal_activate Mon, 10 Mar 2003 14:55:31 GMT False GtkMenuItem store_morph_factors stores internally the state of all mesh and image-blending factors (to make morph sequences) activate on_store_morph_factors_activate Sun, 29 Apr 2001 12:34:24 GMT False GtkMenu store_morph_factors_menu GtkMenuItem starts activate on_store_start_activate Sun, 06 Oct 2002 09:46:27 GMT False GtkMenuItem ende activate on_store_end_activate Sun, 06 Oct 2002 09:46:27 GMT False GtkMenuItem morph_sequence1 create and save many morphs, equally spaced between the morph start and the morph end (that you have already stored with the above menu) activate on_morph_sequence1_activate Fri, 25 Aug 2000 14:13:41 GMT False GtkMenuItem separator3 False GtkMenuItem help False GtkMenu help_menu GtkMenuItem guide activate on_guide_activate Thu, 30 May 2002 11:42:53 GMT False GtkMenuItem separator2 False GtkMenuItem help_sub False GtkMenu help_sub_menu GtkMenuItem generic_help activate on_generic_help_activate Mon, 30 Apr 2001 18:00:29 GMT False GtkMenuItem warp_help activate on_warp_help_activate Mon, 30 Apr 2001 18:00:29 GMT False GtkMenuItem morph_help1 activate on_morph_help_activate Mon, 30 Apr 2001 17:57:16 GMT False GtkMenuItem separator11 False GtkMenuItem why_the_beep_1 activate on_why_the_beep_1_activate Thu, 15 Mar 2001 09:23:03 GMT False GtkVBox vbox3 False 0 0 True True GtkHBox hbox3 False 0 0 False False GtkButton load_image 3 load the image. This image may not be warped or morphed, but it may help in setting the resulting mesh True clicked on_loadimage_clicked Fri, 01 Sep 2000 10:42:15 GMT GTK_RELIEF_NORMAL 0 False False GtkButton load_mesh 3 True clicked on_loadmesh_clicked Fri, 01 Sep 2000 10:42:22 GMT GTK_RELIEF_NORMAL 0 False False GtkButton save_mesh 3 True clicked on_savemesh_clicked Fri, 01 Sep 2000 10:42:31 GMT GTK_RELIEF_NORMAL 0 False False GtkOptionMenu optionmenu_editview 3 ``edit template'': view the loaded image and edit the mesh on it. \n ``view morphed'': view the result of morphing. ``v.morph&mesh'' as above but with the mesh. ``edit eyes points'' sets the reference position of the eyes True released on_optionmenu_editview_released optionmenu_editview_menu Tue, 12 Sep 2000 15:34:49 GMT clicked on_optionmenu_editview_clicked Tue, 12 Sep 2000 16:07:40 GMT edit template view morph v morph&meshes edit eyes points 0 0 False False GtkButton settings_button 3 True clicked on_settings_clicked Thu, 20 Dec 2001 11:12:24 GMT GTK_RELIEF_NORMAL 0 False False GtkButton button_interp_meshes 3 set this mesh to be an interpolation of all other meshes, using ``mesh factors'' as weights True clicked on_interpolate_meshes1_activate Sat, 16 Sep 2000 11:26:13 GMT GTK_RELIEF_NORMAL 0 False False GtkButton do_mixing 3 mix all the warped images in the ``resulting image'' using ``image blending factors'' as weights True clicked on_do_mixing_clicked Tue, 12 Sep 2000 10:04:56 GMT GTK_RELIEF_NORMAL 0 False False GtkButton button_do_morph 3 the input images are warped to the resulting mesh and blended using ``image blending factors'' as weights. It has the same effect as if you hit all the ``do warp'' buttons and then you hit the ``do blending'' button. True clicked on_morph_images1_activate Tue, 12 Sep 2000 13:31:52 GMT GTK_RELIEF_NORMAL 0 False False GtkButton save_image 3 it saves whatever image is currently shown in the window True clicked on_save_image_clicked Tue, 12 Sep 2000 10:05:04 GMT GTK_RELIEF_NORMAL 0 False False GtkButton back_to_guide 3 back to guide True clicked on_back_to_guide_activate Fri, 31 May 2002 18:30:24 GMT GTK_RELIEF_NORMAL 0 False False GtkHandleBox handlebox_tools GTK_SHADOW_OUT GTK_POS_LEFT GTK_POS_TOP 0 False True GtkVBox vbox7 False 0 GtkHBox hbox_feature False 0 0 False False GtkButton color_feature 2 True clicked on_color_feature_clicked Mon, 14 Oct 2002 14:46:49 GMT GTK_RELIEF_NORMAL 0 False False GtkDrawingArea drawingarea_color 25 expose_event on_drawingarea_color_expose_event Mon, 14 Oct 2002 14:39:16 GMT GtkCombo combo_feature 2 False True False True False 0 True True GtkEntry GtkCombo:entry combo_entry_feature True activate on_combo-entry_feature_activate Sun, 06 Oct 2002 09:50:18 GMT changed on_combo-entry_feature_changed Sun, 06 Oct 2002 09:50:22 GMT True True 0 GtkButton new_feature 2 add new feature to the end of list True clicked on_new_feature_clicked Sun, 06 Oct 2002 09:50:29 GMT GTK_RELIEF_NORMAL 2 False False GtkButton rename_feature 2 True clicked on_rename_feature_clicked Fri, 17 Jan 2003 11:39:29 GMT GTK_RELIEF_NORMAL 2 False False GtkButton pack_feature 2 pack the selected points in this feature True clicked on_pack_feature_clicked Fri, 11 Oct 2002 20:28:55 GMT GTK_RELIEF_NORMAL 2 False False GtkButton unpack_feature 2 unpack this feature and transforms all points of it to selected points True clicked on_unpack_feature_clicked Wed, 16 Oct 2002 18:13:03 GMT GTK_RELIEF_NORMAL 2 False False GtkButton delete_feature 2 delete last feature True clicked on_delete_feature_clicked Fri, 11 Oct 2002 16:14:19 GMT GTK_RELIEF_NORMAL 2 False False GtkToolbar toolbar GTK_ORIENTATION_HORIZONTAL GTK_TOOLBAR_BOTH 5 GTK_TOOLBAR_SPACE_EMPTY GTK_RELIEF_NORMAL True 0 False False GtkRadioButton Toolbar:button tool_edit 2 move single point clicked on_tool_edit_clicked Fri, 17 Jan 2003 11:48:47 GMT cursor_left.xpm True mesh_tools GtkRadioButton Toolbar:button tool_move 2 move whole feature clicked on_tool_move_clicked Fri, 17 Jan 2003 13:48:00 GMT hand01.xpm False mesh_tools GtkRadioButton Toolbar:button tool_stretch 2 stretch whole feature clicked on_tool_stretch_clicked Fri, 17 Jan 2003 13:48:12 GMT transform.xpm False mesh_tools GtkLabel label20 GTK_JUSTIFY_CENTER False 0.5 0.5 0 0 GtkRadioButton Toolbar:button tool_select 2 clicked on_tool_select_clicked Fri, 17 Jan 2003 13:48:19 GMT pencil_y.xpm False mesh_tools GtkRadioButton Toolbar:button tool_unselect 2 clicked on_tool_unselect_clicked Fri, 17 Jan 2003 13:48:25 GMT eraser.xpm False mesh_tools GtkRadioButton Toolbar:button tool_assign 2 assign point to feature clicked on_tool_assign_clicked Fri, 17 Jan 2003 13:48:45 GMT pencil.xpm False mesh_tools GtkScrolledWindow scrolledwindow_image GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_UPDATE_CONTINUOUS GTK_UPDATE_CONTINUOUS 0 True True GtkViewport viewport4 realize on_viewport3_realize Sat, 02 Sep 2000 07:32:15 GMT GTK_SHADOW_ETCHED_OUT GtkFrame image_frame 0 GTK_SHADOW_ETCHED_IN GtkDrawingArea drawingarea2 GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK motion_notify_event on_motion_notify_event Wed, 30 Aug 2000 15:10:22 GMT button_press_event on_button_press_event Wed, 30 Aug 2000 15:11:29 GMT expose_event on_expose_event Wed, 30 Aug 2000 15:43:46 GMT realize on_drawingarea_realize Sun, 03 Sep 2000 10:34:49 GMT button_release_event on_drawingarea_button_release_event Fri, 15 Sep 2000 15:03:22 GMT configure_event on_drawingarea_configure_event Sun, 29 Apr 2001 16:16:05 GMT GtkHandleBox handlebox_res_size GTK_SHADOW_OUT GTK_POS_LEFT GTK_POS_TOP 0 False False GtkFrame frame3 0.02 GTK_SHADOW_ETCHED_OUT GtkHBox hbox4 True 0 GtkLabel label16 GTK_JUSTIFY_CENTER False 0.7 0.5 0 0 0 True True GtkSpinButton spinbutton_reswidth True changed on_spinbutton_reswidth_changed Fri, 15 Sep 2000 12:02:47 GMT 1 0 True GTK_UPDATE_IF_VALID False False 400 16 4000 1 10 10 1 True True GtkLabel label17 GTK_JUSTIFY_CENTER False 0.7 0.5 0 0 0 False True GtkSpinButton spinbutton_resheight True changed on_spinbutton_resheight_changed Fri, 15 Sep 2000 12:02:59 GMT 1 0 True GTK_UPDATE_IF_VALID False False 300 16 4000 1 50 50 0 True True GtkButton double_size 2 True clicked on_double_size_clicked Fri, 17 Jan 2003 21:10:53 GMT GTK_RELIEF_NORMAL 1 False False GtkButton halve_size 2 True clicked on_halve_size_clicked Fri, 17 Jan 2003 21:11:01 GMT GTK_RELIEF_NORMAL 1 False False GtkButton resulting_apply 2 True clicked on_resulting_apply_clicked Sat, 16 Sep 2000 12:41:05 GMT GTK_RELIEF_NORMAL 6 False False GtkFileSelection imageselection1 10 destroy_event on_imageselection1_destroy_event Mon, 05 Jul 2004 16:34:33 GMT error! GTK_WINDOW_DIALOG GTK_WIN_POS_NONE False False True False gtkmorph gtkmorph True GtkButton FileSel:ok_button ok_button1 load the selected image True True realize on_ok_button1_realize Thu, 31 Aug 2000 17:25:29 GMT clicked on_ok_button1_clicked Thu, 31 Aug 2000 17:29:11 GMT GTK_RELIEF_NORMAL GtkButton FileSel:cancel_button cancel_button1 True True clicked gtk_widget_destroy imageselection1 Mon, 05 Jul 2004 16:10:53 GMT GTK_RELIEF_NORMAL GtkWindow image_win_1 delete_event on_image_win_1_delete_event Tue, 12 Sep 2000 11:35:03 GMT error! GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False True False gtkmorph gtkmorph GtkVBox vbox2 False 0 GtkHBox hbox1 False 0 0 False False GtkButton load_image 4 True clicked on_loadimage_clicked Fri, 01 Sep 2000 10:42:15 GMT GTK_RELIEF_NORMAL 0 False False GtkButton load_mesh 4 True clicked on_loadmesh_clicked Fri, 01 Sep 2000 10:42:22 GMT GTK_RELIEF_NORMAL 0 False False GtkButton save_mesh 4 True clicked on_savemesh_clicked Fri, 01 Sep 2000 10:42:31 GMT GTK_RELIEF_NORMAL 0 False False GtkOptionMenu optionmenu_editview 3 ``edit mesh'': view the loaded image and edit the mesh on it. ``view warp'': view the result of warping the loaded image from this mesh to the resulting mesh. ``v. warp&meshes'' as before but with both meshes on. ``choose subimage'' choose which subimage of the loaded image you wish to use. You can also use the 'settings' button to change these settings more finely. True released on_optionmenu_editview_released Tue, 12 Sep 2000 10:05:19 GMT pressed on_optionmenu_editview_pressed Fri, 15 Sep 2000 12:03:44 GMT edit mesh view warp v. warp&meshes choose subimage 0 0 False False GtkButton settings_button 4 True clicked on_settings_clicked Thu, 20 Dec 2001 11:12:24 GMT GTK_RELIEF_NORMAL 0 False False GtkButton do_warp 4 warp this image from this mesh to the resulting mesh, and show the result in this window or an accessory window True clicked on_do_warp_clicked Tue, 12 Sep 2000 10:04:50 GMT GTK_RELIEF_NORMAL 0 False False GtkButton save_image 4 it saves whatever image is currently shown in the window True clicked on_save_image_clicked Tue, 12 Sep 2000 10:05:04 GMT GTK_RELIEF_NORMAL 0 False False GtkButton back_to_guide 4 back to guide True clicked on_back_to_guide_activate Fri, 31 May 2002 18:30:24 GMT GTK_RELIEF_NORMAL 0 False False GtkScrolledWindow scrolledwindow_image GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_UPDATE_CONTINUOUS GTK_UPDATE_CONTINUOUS 0 True True GtkViewport viewport3 realize on_viewport3_realize Sat, 02 Sep 2000 07:32:15 GMT GTK_SHADOW_ETCHED_OUT GtkFrame image_frame 0 GTK_SHADOW_ETCHED_IN GtkDrawingArea drawingarea1 True GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK GDK_EXTENSION_EVENTS_ALL motion_notify_event on_motion_notify_event Wed, 30 Aug 2000 15:10:22 GMT button_press_event on_button_press_event Wed, 30 Aug 2000 15:11:29 GMT expose_event on_expose_event Wed, 30 Aug 2000 15:43:46 GMT realize on_drawingarea_realize Sun, 03 Sep 2000 10:34:49 GMT button_release_event on_drawingarea_button_release_event Fri, 15 Sep 2000 15:03:31 GMT configure_event on_drawingarea_configure_event Sun, 29 Apr 2001 16:16:43 GMT key_press_event on_drawingarea_key_press_event Tue, 25 Mar 2003 14:45:37 GMT GtkHandleBox handlebox_factors these coefficents decide how much this image/mesh will influence the final morph show on_handlebox_factors_show True Mon, 11 Sep 2000 17:54:43 GMT GTK_SHADOW_OUT GTK_POS_LEFT GTK_POS_TOP 0 False False GtkFrame frame5 0 GTK_SHADOW_ETCHED_IN GtkTable table2 5 2 3 False 5 6 GtkLabel label6 GTK_JUSTIFY_CENTER False 0.5 0.5 0 0 0 1 1 2 0 0 False False False False False False GtkLabel label7 GTK_JUSTIFY_CENTER False 0.5 0.5 0 0 0 1 0 1 0 0 False False False False False False GtkHScale hscale_mesh True button_release_event on_hscale_mesh_button_release_event spinbutton_mesh Sat, 02 Sep 2000 11:15:10 GMT True GTK_POS_BOTTOM 0 GTK_UPDATE_DELAYED 20 -100 200 1 10 10 1 2 0 1 0 0 True False False False True True GtkHScale hscale_image True button_release_event on_hscale_image_button_release_event spinbutton_image Sat, 02 Sep 2000 11:14:57 GMT True GTK_POS_BOTTOM 0 GTK_UPDATE_DELAYED 20 -100 200 1 10 10 1 2 1 2 0 0 True False False False True True GtkSpinButton spinbutton_image when you morph the images, or you ``do mixing'', this factor will measure how much this image will show in the mixing in the resulting image True changed on_spinbutton_image_changed hscale_image Sat, 02 Sep 2000 11:15:53 GMT 1 0 True GTK_UPDATE_IF_VALID False False 20 -100 200 1 10 10 2 3 1 2 0 0 False False False False False False GtkSpinButton spinbutton_mesh when you use the ``interpolate meshes'' function, the ``mesh factor'' measures how much this mesh will influence the resulting image's mesh True changed on_spinbutton_mesh_changed hscale_mesh Sat, 02 Sep 2000 11:15:41 GMT 1 0 True GTK_UPDATE_IF_VALID False False 20 -100 200 1 10 10 2 3 0 1 0 0 False False False False False False GtkHandleBox handleboxsubimage show on_handleboxsubimage_show True Mon, 11 Sep 2000 18:09:41 GMT GTK_SHADOW_OUT GTK_POS_LEFT GTK_POS_TOP 0 False False GtkFrame frame1 0 GTK_SHADOW_ETCHED_IN GtkHBox hbox2 False 0 GtkButton eyessubimage infer the subimage from the eyes position True clicked on_reset_subimage_clicked Fri, 31 May 2002 18:06:30 GMT GTK_RELIEF_NORMAL 1 False False GtkEventBox eventbox1 x coordinate of center 2 True True GtkLabel label8 GTK_JUSTIFY_CENTER False 0.75 0.5 0 0 GtkSpinButton spinbuttonx True changed on_spinbuttonx_changed Tue, 12 Sep 2000 10:05:39 GMT 1 0 True GTK_UPDATE_ALWAYS False False 0 -800 800 1 10 10 0 True True GtkEventBox eventbox2 y coordinate of center 2 True True GtkLabel label9 GTK_JUSTIFY_CENTER False 0.75 0.5 0 0 GtkSpinButton spinbuttony True changed on_spinbuttony_changed Tue, 12 Sep 2000 10:05:45 GMT 1 0 True GTK_UPDATE_ALWAYS False False 0 -800 800 1 10 10 0 True True GtkLabel label10 GTK_JUSTIFY_CENTER False 0.5 0.5 0 0 0 True False GtkSpinButton spinbuttonw True changed on_spinbuttonw_changed Tue, 12 Sep 2000 10:06:05 GMT 1 0 True GTK_UPDATE_ALWAYS False False 400 8 1600 1 100 100 0 True True GtkLabel label11 GTK_JUSTIFY_CENTER False 0.5 0.5 0 0 0 True False GtkSpinButton spinbuttonh True changed on_spinbuttonh_changed Tue, 12 Sep 2000 10:04:42 GMT 1 0 True GTK_UPDATE_ALWAYS False False 300 8 1600 1 100 100 0 True True GtkButton subimage_apply 1 True clicked on_subimage_apply_clicked Sat, 16 Sep 2000 12:40:59 GMT GTK_RELIEF_NORMAL 7 False False GtkDialog dialogwarning delete_event on_dialogwarning_delete_event Tue, 04 Jun 2002 14:00:17 GMT warning GTK_WINDOW_DIALOG GTK_WIN_POS_MOUSE False True True False xmorph-gtk xmorph-gtk GtkVBox Dialog:vbox dialog-vbox1 False 0 GtkHBox Dialog:action_area dialog-action_area1 10 True 5 0 False False GTK_PACK_END GtkButton ok 2 True True True True clicked gtk_widget_destroy dialogwarning Tue, 12 Sep 2000 11:12:14 GMT GTK_RELIEF_NORMAL 6 False True GtkLabel labelwarning show on_labelwarning_show Tue, 12 Sep 2000 09:50:22 GMT realize on_labelwarning_realize Tue, 12 Sep 2000 11:11:44 GMT GTK_JUSTIFY_LEFT True 0.5 0.5 0 0 0 True True GtkWindow window_warped delete_event on_window_warped_delete_event Tue, 13 Mar 2001 20:03:37 GMT warped image GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False 200 200 False True False GtkScrolledWindow scrolledwindow6 GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_UPDATE_CONTINUOUS GTK_UPDATE_CONTINUOUS GtkViewport viewport5 GTK_SHADOW_IN GtkDrawingArea drawingarea_warped expose_event on_drawingarea_warped_expose_event Tue, 13 Mar 2001 20:02:56 GMT configure_event on_drawingarea_warped_configure_event Thu, 15 Mar 2001 10:30:51 GMT GtkMenu menuEditMesh GtkMenuItem unselect_point activate on_unselect_point_activate Fri, 17 Jan 2003 12:09:36 GMT False GtkMenuItem select_point activate on_select_point_activate Tue, 24 Apr 2001 08:07:15 GMT False GtkMenuItem assign_point activate on_assign_point_activate Fri, 17 Jan 2003 12:09:36 GMT False GtkMenuItem adjust activate on_adjust_activate Sun, 11 Jul 2004 10:51:12 GMT False GtkMenuItem separator5 False GtkMenuItem add_horizontal_line 0 GDK_H activate activate on_add_horizontal_line_activate Tue, 24 Apr 2001 08:07:15 GMT False GtkMenuItem add_vertical_line 0 GDK_V activate activate on_add_vertical_line_activate Tue, 24 Apr 2001 08:07:15 GMT False GtkMenuItem del_horizontal_line GDK_CONTROL_MASK GDK_H activate activate on_del_horizontal_line_activate Tue, 24 Apr 2001 08:07:15 GMT False GtkMenuItem del_vertical_line GDK_CONTROL_MASK GDK_V activate activate on_del_vertical_line_activate Tue, 24 Apr 2001 08:07:15 GMT False GtkMenuItem separator13 False GtkMenuItem smooth activate on_menu_smooth_activate Sun, 11 Jul 2004 10:51:12 GMT False GtkWindow window_movie gtkmorph movie GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False True False GtkVBox vbox4 False 0 GtkHBox hbox5 False 0 0 True True GtkEventBox eventbox4 how many frames will be saved; each will be saved in a file 4 False False GtkLabel label19 GTK_JUSTIFY_CENTER False 0 0.5 0 0 GtkSpinButton spinbutton_n_files 60 True 1 0 False GTK_UPDATE_ALWAYS False False 10 2 100 1 10 10 3 False True GtkHBox hbox6 False 0 5 True True GtkEventBox eventbox3 the files of the frames will be numbered sequentially starting from this number 4 False False GtkLabel label18 GTK_JUSTIFY_CENTER False 0 0.5 0 0 GtkSpinButton spinbutton_first_file 60 True 1 0 False GTK_UPDATE_ALWAYS False False 1 -100 100 1 10 10 4 False False GtkHBox hbox7 False 0 4 True True GtkLabel labelfile GTK_JUSTIFY_CENTER False 0 0.5 0 0 4 False False GtkEntry file_base_name True True True 0 frame 3 True True GtkFrame frame4 0 GTK_SHADOW_ETCHED_IN 2 True True GtkTable table5 3 2 True 0 0 GtkCheckButton animated_gif creates an animated gif (needs 'convert' from imagemagick) and plays it (needs 'animate' from imagemagick) True False True 0 1 0 1 0 0 False False False False True False GtkCheckButton animate show animated sequence after saving it all (needs 'animate' command from imagemagick) True False True 1 2 0 1 0 0 False False False False True False GtkButton replay 2 resaves and replays animations True True clicked on_movie_replay_clicked Mon, 30 Apr 2001 10:29:52 GMT GTK_RELIEF_NORMAL 1 2 2 3 0 0 False False False False True False GtkCheckButton animated_mpeg creates an mpeg file and plays it; will use a parameter file (see help) (needs 'mpeg_encode' and 'mpeg_play') True False True 0 1 1 2 0 0 False False False False True False GtkPixmap pixmap2 howmany.xpm 0.5 0.5 0 0 True 1 2 1 2 0 0 False False False False True True GtkHSeparator hseparator1 0 1 2 3 0 0 False False False False True True GtkHBox hbox8 True 2 6 True True GtkButton ok 2 creates and saves all morphs, builds animations True True 0 GDK_Return clicked clicked on_movie_ok_clicked Sun, 29 Apr 2001 11:51:16 GMT GTK_RELIEF_NORMAL 0 False False GtkButton cancel 2 True True 0 GDK_Escape clicked clicked gtk_widget_hide window_movie Sun, 29 Apr 2001 11:52:23 GMT GTK_RELIEF_NORMAL 0 False False GtkButton help 2 True True 0 GDK_Help clicked clicked on_movie_help_clicked Mon, 30 Apr 2001 10:08:52 GMT GTK_RELIEF_NORMAL 0 False False GtkWindow guide delete_event on_guide_delete_event Thu, 30 May 2002 13:58:49 GMT destroy on_guide_destroy Thu, 30 May 2002 17:46:07 GMT gtkmorph guide GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False True False GtkVBox vbox5 False 0 GtkPixmap guide_pixmap example.xpm 0.5 0.5 0 0 True 0 False True GtkScrolledWindow scrolledwindow7 GTK_POLICY_NEVER GTK_POLICY_ALWAYS GTK_UPDATE_CONTINUOUS GTK_UPDATE_CONTINUOUS 0 True True GtkText text True expose_event on_guide_text_expose_event Thu, 30 May 2002 11:42:00 GMT False GtkHBox hbox9 True 0 0 False True GtkButton prev 2 go back to previous guide pane True clicked on_guide_prev_clicked Thu, 30 May 2002 11:39:18 GMT GTK_RELIEF_NORMAL 0 False False GtkButton do_it 2 do what is proposed in this pane True clicked on_guide_do_it_clicked Thu, 30 May 2002 11:39:42 GMT GTK_RELIEF_NORMAL 0 False False GtkButton next 2 skip this and go to next guide pane True clicked on_guide_next_clicked Thu, 30 May 2002 11:39:59 GMT GTK_RELIEF_NORMAL 0 False False GtkDialog question delete_event on_question_delete_event Tue, 04 Jun 2002 13:59:54 GMT question GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True True False GtkVBox Dialog:vbox dialog-vbox2 False 0 GtkHBox Dialog:action_area dialog-action_area2 10 True 5 0 False True GTK_PACK_END GtkHBox hbox10 False 0 0 True True GtkButton yes True clicked on_yes_clicked Tue, 04 Jun 2002 13:55:49 GMT GTK_RELIEF_NORMAL 0 True False GtkButton no True clicked on_no_clicked Tue, 04 Jun 2002 13:56:23 GMT GTK_RELIEF_NORMAL 2 True False GtkLabel questionlabel GTK_JUSTIFY_LEFT True 0.5 0.5 0 0 0 True True GtkColorSelectionDialog colorselectiondialog 10 Select Color GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False True False GTK_UPDATE_CONTINUOUS GtkButton ColorSel:ok_button ok_button_color True True clicked on_ok_button_color_clicked Mon, 14 Oct 2002 14:48:53 GMT GTK_RELIEF_NORMAL GtkButton ColorSel:cancel_button cancel_button_csd True True clicked gtk_widget_destroy colorselectiondialog Mon, 14 Oct 2002 14:49:09 GMT GTK_RELIEF_NORMAL GtkButton ColorSel:help_button help_button1 True True GTK_RELIEF_NORMAL GtkWindow unused window1 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False True False GtkVBox vbox6 False 0 GtkHandleBox handlebox_tools GTK_SHADOW_OUT GTK_POS_LEFT GTK_POS_BOTTOM 0 True True GtkToolbar toolbar_image_tools GTK_ORIENTATION_HORIZONTAL GTK_TOOLBAR_BOTH 5 GTK_TOOLBAR_SPACE_EMPTY GTK_RELIEF_NORMAL True GtkRadioButton Toolbar:button tool_edit move single point clicked on_tool_edit_clicked Fri, 17 Jan 2003 11:48:47 GMT cursor_left.xpm False mesh_tools GtkRadioButton Toolbar:button tool_move move whole feature clicked on_tool_move_clicked Fri, 17 Jan 2003 11:48:37 GMT hand01.xpm True mesh_tools GtkRadioButton Toolbar:button tool_stretch stretch whole feature clicked on_tool_stretch_clicked Fri, 17 Jan 2003 13:47:53 GMT transform.xpm False mesh_tools Placeholder Placeholder GtkWindow mag unrealize on_mag_unrealize Sat, 08 Mar 2003 10:02:35 GMT gtkmorph mag GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False True False GtkVBox mag_vbox False 0 GtkHBox mag_hbox False 4 0 False True GtkLabel mag_label GTK_JUSTIFY_CENTER False 0.5 0.5 0 0 1 True True GtkSpinButton mag_spinbutton True activate on_mag_spinbutton_activate Sat, 08 Mar 2003 17:59:23 GMT changed on_mag_spinbutton_changed Sat, 08 Mar 2003 17:59:35 GMT 1 0 True GTK_UPDATE_ALWAYS False False 300 50 1000 10 50 50 1 True True GtkCheckButton mag_track True toggled on_mag_track_toggled Sat, 08 Mar 2003 18:29:06 GMT True True 0 False False GtkDrawingArea mag_drawingarea 180 180 expose_event on_mag_drawingarea_expose_event Sat, 08 Mar 2003 08:07:24 GMT configure_event on_mag_drawingarea_configure_event Sat, 08 Mar 2003 08:07:31 GMT 0 True True