ivtools-doc/CVS/0000755000076500007650000000000011324454432014301 5ustar scottscott00000000000000ivtools-doc/CVS/Entries0000644000076500007650000002764611324454432015654 0ustar scottscott00000000000000/COPYRIGHT.proposed.txt/1.1.1.1/Tue Nov 13 18:25:27 2001// /IVtools_pkg.cpio/1.1/Thu Jan 17 22:34:27 2002// /MANIFEST/1.9/Fri Jun 4 16:08:38 2004// /README.cygwin.txt/1.1.1.1/Tue Nov 13 18:25:27 2001// /aaron-1.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /aaron-2.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /aaron-3.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /aaron-4.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /aaron-face.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /aaron.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /aaron.html/1.2/Fri Feb 15 19:44:01 2002// /ace-logo.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /alive.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /andornot.grs/1.1.1.1/Tue Nov 13 18:25:27 2001// /announce-0.6.3.txt/1.1.1.1/Tue Nov 13 18:25:27 2001// /announce-0.7.3.txt/1.1.1.1/Tue Nov 13 18:25:27 2001// /announce-0.7.4.txt/1.1.1.1/Tue Nov 13 18:25:27 2001// /announce-0.7.5.txt/1.1.1.1/Tue Nov 13 18:25:27 2001// /anteater-art.html/1.1.1.1/Tue Nov 13 18:25:27 2001// /anteaters.drs/1.1.1.1/Tue Nov 13 18:25:27 2001// /anteaters.ovs/1.1.1.1/Tue Nov 13 18:25:27 2001// /apisles.frs/1.1.1.1/Tue Nov 13 18:25:27 2001// /attribute.html/1.2/Tue Jul 9 21:58:07 2002// /bdvtable-main.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /bdvtable-popup.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /bdvtable.html/1.2/Fri Feb 15 19:44:01 2002// /browserconfig.html/1.2/Fri Feb 15 19:44:01 2002// /caveats.html/1.1.1.1/Tue Nov 13 18:25:27 2001// /changelog.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /changelogs.html/1.8/Fri Jun 4 16:20:38 2004// /clippoly-small.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /comdraw-icon.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /comdraw-logo.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /comdraw.README.txt/1.4/Tue Jun 25 20:46:03 2002// /comdraw.html/1.2/Fri Feb 15 19:44:01 2002// /comterp.README.txt/1.5/Tue Apr 23 18:05:02 2002// /comterp.html/1.2/Fri Feb 15 19:44:01 2002// /comtop-README.txt/1.1.1.1/Tue Nov 13 18:25:27 2001// /comunidrawinfo.html/1.1.1.1/Tue Nov 13 18:25:27 2001// /copyright.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /debian.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /debianlogo.drs/1.1.1.1/Tue Nov 13 18:25:27 2001// /done.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /drawtool-README.txt/1.2/Fri Jan 11 00:23:00 2002// /drawtool-icon.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /drawtool-logo.gif/1.1.1.1/Tue Nov 13 18:25:27 2001// /drawtool.drs/1.1.1.1/Tue Nov 13 18:25:27 2001// /drawtool.gif/1.1.1.1/Tue Nov 13 18:25:28 2001// /drawtool.html/1.4/Tue Jun 18 17:51:46 2002// /editors.html/1.3/Fri Mar 8 17:44:16 2002// /etplusplus.html/1.1.1.1/Tue Nov 13 18:25:28 2001// /expimpnet.html/1.6/Tue Jul 9 21:58:07 2002// /faq.html/1.8/Tue Jun 18 17:51:46 2002// /flipbook-1.gif/1.1.1.1/Tue Nov 13 18:25:28 2001// /flipbook-1.html/1.1.1.1/Tue Nov 13 18:25:28 2001// /flipbook-2.gif/1.1.1.1/Tue Nov 13 18:25:28 2001// /flipbook-README.txt/1.2/Fri Jan 11 00:23:00 2002// /flipbook-icon.gif/1.1.1.1/Tue Nov 13 18:25:28 2001// /flipbook-logo.gif/1.1.1.1/Tue Nov 13 18:25:28 2001// /flipbook.html/1.3/Fri Mar 8 17:44:16 2002// /fopen_rplus.patch.txt/1.1/Fri Jan 11 00:23:00 2002// /forestdrive.frs/1.1.1.1/Tue Nov 13 18:25:28 2001// /formdemo-main.gif/1.1.1.1/Tue Nov 13 18:25:28 2001// /formdemo-popup.gif/1.1.1.1/Tue Nov 13 18:25:28 2001// /formdemo.html/1.2/Fri Feb 15 19:44:01 2002// /frame-idraw.html/1.2/Tue Jul 9 21:58:07 2002// /frameinfo.html/1.1.1.1/Tue Nov 13 18:25:28 2001// /fresco98-announce.txt/1.1.1.1/Tue Nov 13 18:25:28 2001// /fullaaron-small.gif/1.1.1.1/Tue Nov 13 18:25:28 2001// /fullaaron.gif/1.1.1.1/Tue Nov 13 18:25:29 2001// /gclock.gif/1.1.1.1/Tue Nov 13 18:25:29 2001// /gclock.html/1.2/Fri Feb 15 19:44:01 2002// /ghostscript.html/1.1.1.1/Tue Nov 13 18:25:29 2001// /ghostview.html/1.1.1.1/Tue Nov 13 18:25:29 2001// /gk1.0-README.txt/1.1.1.1/Tue Nov 13 18:25:29 2001// /gk1.0-ivtools.patch/1.1.1.1/Tue Nov 13 18:25:29 2001// /glyphinfo.html/1.2/Tue Jul 9 21:58:07 2002// /glyphs.html/1.4/Fri Mar 8 17:44:16 2002// /glyphs.ps/1.1.1.1/Tue Nov 13 18:25:29 2001// /graph-idraw.html/1.2/Tue Jul 9 21:58:07 2002// /graphdraw-README.txt/1.2/Fri Jan 11 00:23:00 2002// /graphdraw-icon.gif/1.1.1.1/Tue Nov 13 18:25:29 2001// /graphdraw-logo.gif/1.1.1.1/Tue Nov 13 18:25:29 2001// /graphdraw.gif/1.1.1.1/Tue Nov 13 18:25:29 2001// /graphdraw.grs/1.1.1.1/Tue Nov 13 18:25:29 2001// /graphdraw.html/1.3/Fri Mar 8 17:44:16 2002// /graphinfo.html/1.1.1.1/Tue Nov 13 18:25:29 2001// /groupkit.html/1.2/Tue Jun 18 17:51:46 2002// /help-wanted.html/1.3/Tue Jun 18 17:51:46 2002// /hubble.frs/1.1.1.1/Tue Nov 13 18:25:29 2001// /iclass.html/1.1.1.1/Tue Nov 13 18:25:29 2001// /idraw-README.txt/1.2/Fri Jan 11 00:23:00 2002// /idraw-dialog-box.patch/1.1.1.1/Tue Nov 13 18:25:29 2001// /idraw-icon.gif/1.1.1.1/Tue Nov 13 18:25:29 2001// /idraw-logo.gif/1.1.1.1/Tue Nov 13 18:25:29 2001// /idraw.gif/1.1.1.1/Tue Nov 13 18:25:29 2001// /idraw.html/1.5/Tue Jul 9 21:12:59 2002// /idrawthings.html/1.2/Fri Feb 15 19:44:01 2002// /idrawversionwarningpatch.txt/1.1.1.1/Tue Nov 13 18:25:29 2001// /iet.jpg/1.1.1.1/Tue Nov 13 18:25:30 2001// /insight.ALPHA.patch/1.1.1.1/Tue Nov 13 18:25:30 2001// /install.gif/1.1.1.1/Tue Nov 13 18:25:30 2001// /interviews.html/1.1.1.1/Tue Nov 13 18:25:30 2001// /iueserv.README.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivapps.html/1.2/Fri Feb 15 19:44:01 2002// /ivfaq-1992.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivgetjpg.bash/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivmaps-logo-square.gif/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.4-CHANGES.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.5-CHANGES.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.5-COPYRIGHT.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.5-INSTALL.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.5-MANIFEST.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.5-README.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.6-CHANGES.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.6-COPYRIGHT.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.6-INSTALL.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.6-MANIFEST.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.6-README.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.6.2-kanji.patch/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.7-CHANGES.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.7-COPYRIGHT.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.7-INSTALL.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.7-MANIFEST.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.7-README.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.8-CHANGES.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.8-COPYRIGHT.txt/1.1.1.1/Tue Nov 13 18:25:30 2001// /ivtools-0.8-INSTALL.txt/1.1.1.1/Tue Nov 13 18:25:31 2001// /ivtools-0.8-MANIFEST.txt/1.1.1.1/Tue Nov 13 18:25:31 2001// /ivtools-0.8-README.txt/1.1.1.1/Tue Nov 13 18:25:31 2001// /ivtools-0.9-CHANGES.txt/1.1.1.1/Tue Nov 13 18:25:31 2001// /ivtools-0.9-COPYRIGHT.txt/1.1.1.1/Tue Nov 13 18:25:31 2001// /ivtools-0.9-INSTALL.txt/1.1.1.1/Tue Nov 13 18:25:31 2001// /ivtools-0.9-MANIFEST.txt/1.1.1.1/Tue Nov 13 18:25:31 2001// /ivtools-0.9-README.txt/1.1.1.1/Tue Nov 13 18:25:31 2001// /ivtools-020110-johnston-019.txt/1.1/Fri Jan 11 00:23:00 2002// /ivtools-1.0-CHANGES.txt/1.8/Wed Nov 27 17:56:44 2002// /ivtools-1.0-COPYRIGHT.txt/1.2/Fri Jan 11 00:23:00 2002// /ivtools-1.0-INSTALL.txt/1.8/Wed Nov 27 17:56:44 2002// /ivtools-1.0-MANIFEST.txt/1.5/Wed Nov 27 17:56:44 2002// /ivtools-1.0-README.txt/1.8/Wed Nov 27 17:56:44 2002// /ivtools-1.1-CHANGES.txt/1.4/Wed Feb 18 19:30:21 2004// /ivtools-1.1-COPYRIGHT.txt/1.2/Wed Feb 18 19:30:21 2004// /ivtools-1.1-INSTALL.txt/1.4/Wed Feb 18 19:30:21 2004// /ivtools-1.1-MANIFEST.txt/1.3/Wed Feb 18 19:30:21 2004// /ivtools-1.1-README.txt/1.4/Wed Feb 18 19:30:21 2004// /ivtools-layers.html/1.2/Tue Jul 9 22:01:53 2002// /ivtools-logo-square.gif/1.1.1.1/Tue Nov 13 18:25:31 2001// /ivtools-logo.gif/1.1.1.1/Tue Nov 13 18:25:31 2001// /ivtools.lsm.txt/1.1.1.1/Tue Nov 13 18:25:31 2001// /jellybeans.gif/1.1.1.1/Tue Nov 13 18:25:31 2001// /largeimage.html/1.1.1.1/Tue Nov 13 18:25:31 2001// /libgraphic.ps/1.1.1.1/Tue Nov 13 18:25:31 2001// /mailinglists.html/1.3/Mon Dec 8 20:57:58 2003// /malloc.c/1.2/Tue Nov 22 18:35:58 2005// /manifest.gif/1.1.1.1/Tue Nov 13 18:25:31 2001// /meter-main.gif/1.1.1.1/Tue Nov 13 18:25:31 2001// /meter-popup.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /meter.html/1.2/Fri Feb 15 19:44:01 2002// /mime-types.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /mixviews.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /mkgif89a.bash/1.1.1.1/Tue Nov 13 18:25:32 2001// /mkgif89ac.bash/1.1.1.1/Tue Nov 13 18:25:32 2001// /mxvlogo.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /netdraw.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /newfunc.cc/1.1.1.1/Tue Nov 13 18:25:32 2001// /othertools.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /ov-idraw.html/1.2/Tue Jul 9 21:58:07 2002// /ovinfo.html/1.2/Tue Nov 22 18:35:58 2005// /patch-installprob-0.5.8.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /pbmplus.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /plotmtv.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /plotutils.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /pstoedit.2.60.README.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /pstoedit.2.60.idraw.patch/1.1.1.1/Tue Nov 13 18:25:32 2001// /pstoedit.2.60.manual.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /pstoedit.3.30.idraw.patch.txt/1.2/Fri Jan 11 00:23:00 2002// /pstoedit.html/1.2/Tue Jun 18 17:51:46 2002// /pstoedithome.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /qhull.html/1.2/Thu Jan 1 23:52:57 2004// /radiogroup-main.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /radiogroup-popup.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /radiogroup.html/1.2/Fri Feb 15 19:44:01 2002// /readme.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /release-note-0.6.11.html/1.2/Tue Jun 18 17:51:46 2002// /release-note-0.6.12.html/1.2/Tue Jun 18 17:51:46 2002// /release-note-0.7.4.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /release-note-0.7.5.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /release-note-0.7.beta.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /release-note-0.7.beta2.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /release-note-0.7.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /release-note-0.8.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /reusingunidraw.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /scrollable-1.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /scrollable-2.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /scrollable.html/1.2/Fri Feb 15 19:44:01 2002// /scrollfield-1.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /scrollfield-2.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /scrollfield.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /scrollfield.html/1.2/Fri Feb 15 19:44:01 2002// /slideshow.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /source.html/1.2/Tue Jun 18 17:51:46 2002// /spiro1.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /strchooser-main.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /strchooser-popup.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /strchooser.html/1.2/Fri Feb 15 19:44:01 2002// /targetjr-2.6.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /targetjr-3.0beta.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /targetjr-3.1-announce.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /targetjr-3.1.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /targetjr.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /techinfo.html/1.5/Tue Nov 22 18:35:58 2005// /text-editor-README.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /text-editor.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /text-editor.html/1.2/Fri Feb 15 19:44:01 2002// /timestamp.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /timestamp.html/1.2/Fri Feb 15 19:44:01 2002// /tjlogo.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /unidraw.ps/1.1.1.1/Tue Nov 13 18:25:32 2001// /unidrawinfo.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /unidrawpic.ps/1.1/Tue Jun 18 18:36:59 2002// /vectaport-logo.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /vhclserv-logo-square.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /why-ivtools.html/1.1.1.1/Tue Nov 13 18:25:32 2001// D/doc//// D/latexbuttons//// /ivtools-1.2-CHANGES.txt/1.8/Sat Nov 21 18:20:19 2009// /ivtools-1.2-COPYRIGHT.txt/1.4/Sat Nov 21 18:20:19 2009// /ivtools-1.2-INSTALL.txt/1.9/Sat Nov 21 18:20:19 2009// /ivtools-1.2-MANIFEST.txt/1.4/Sat Nov 21 18:20:19 2009// /ivtools-1.2-README.txt/1.8/Sat Nov 21 18:20:19 2009// /index.html/1.47/Sun Jan 17 00:20:04 2010// /download.html/1.29/Sun Jan 17 00:21:28 2010// ivtools-doc/CVS/Repository0000644000076500007650000000001410747654176016415 0ustar scottscott00000000000000ivtools-doc ivtools-doc/CVS/Root0000644000076500007650000000007310747654176015166 0ustar scottscott00000000000000:ext:johnston@ivtools.cvs.sourceforge.net:/cvsroot/ivtools ivtools-doc/IVtools_pkg.cpio0000644000076500007650000006300007421650563016767 0ustar scottscott00000000000000qGDESCRIVtools is a set of drawing editors, built on top of InterViews, that lets you create and edit drawings made up of graphics like text, lines, splines, rectangles, polygons, and ellipses. Drawings are stored in files that can be printed on a PostScript printer. You can can open an existing drawing when starting up IVtools editors by typing a file name on the command line or by making a choice with the GUI. Support for the following graphics formats is built in: * idraw PostScript * ivtools drawtool format * PBM/PGM/PPM image formats With the creation of several sets of widgets in PostScript and idraw formats, IVtools can now do: Chemical mechanisms, Feynman Diagrams (H.E Physics), Electrical circuit diagrams (analog and digital). With the templates set, you can illustrate complex processes. The latest copy can always be had from http://www.sourceforge.net/projects/ivtools; online documentation can be viewed at http://www.vectaport.com/ivtools qA'D<7}CVSq&5D@{] BOs fض P,l! =p'|Z pq/< e%wL<×U |rxU16'9)lB,dfD:q2 v0mjfQB" "^/䂨6Mj{$AQ~r4%ThDU;4s IYF*9J] xJa)q4fRDHIe2btfTLiGMմQKm^sLNq$P6ӹnsG|()*ųb'>}N : OMBІ:D'JъZͨF7юz HGJҒFƠ&cJI˕.%ST?@qZT^)OVIEQ]/L.)I-ԪZ5E˪VծzLJֲZֶp\J׺ڵ,;ivtools-doc/aaron-2.gif0000644000076500007650000000570107374262627015614 0ustar scottscott00000000000000GIF87aGU0oir\irȬsL(235rsUL@Y;?*Xp1PPh1~PHo \ 8xH#o\(s>sRB HXH8wK\@#- ;)?ԘX hG@w\H;@HH;?X'8HrGL@sR 2P;U@@Bp@lB`i;q@iqMQSow\HH /8,GH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣHZ@ӧP12eի ףZ rJΰǚ]%ڃTʝK-Btꭈ7޿%ax!븭dƕbfǔ=sVYt笣͊6].FW6Qفֶ-n{/{FT2;ϽzrK[}mշ|^eoM}}}~UUT/`(G 2hA(!X=^tQa }`FZ}GO&6ш+"(H`Je8ߎe}@=$$ XO5cPU"XRe\_NOYd,^D]iRpBЛ^Ygz^kF'5(!j<Bt(6J)$餛rYj}W%'M~֪·Vکj++VkK^Zlu9L {׊ylJ*8-+0&ؖ; /c뛐!0\C%R\qhIBu'<+,m~,{t 7/rH;3@(4?wG-I7P Ƴb{LctU^g VZZZdM[sҝu"mx݄1w_8j͸DGݵS~by暻VFΘk~滦8vrpNǾ:Wj6cox7"% %0gYpr&d!FȕL!ƢT@vN=ԡMhHy=Lb詴n{5T"S?!گM ;pS"h3YLh^#1VS%XE)sǃ2)~\cH$vԺ?y,$x)bn}G<.7UbKC)u|j7['9aJ_+&#kĒ2aV_(H֢L?вv}yXfdQ ԮbhFSYx;XE.\Kqyx*^ | 6]*Nry:`Yd"{+ nUPZ61I둺vύup ^ŧF4,acc\3u ig75\kEe5}|j{*y sә>tknwr4m7Kwm|['@NRT+pč8pRwǮ?NeK|:;9ۍr-wRs5{hϑU }< #]/M_yş~syTNd]9L24; }o?]>xϻN?#;W'O[ϼ7{!;ivtools-doc/aaron-3.gif0000644000076500007650000000464107374262627015617 0ustar scottscott00000000000000GIF87aGUirirrLsL167r8sL8TX-p#PhP~Ho \518 8Xxp@HxT#ion>\(@i.?LTBHXH 8wK\@#- ")Ԙ hHGw\H@>.H H rsL@T p2\"w@po@`inl">`/~@4 view port8/aowar\on-3HH@@@܈H/,GH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝK]{o˼Cׯa {qGƃDˉkaϊ3@˖#֩Mk}m e}Nٔ;}1jW.sC_P:t۱m\"KV.9w~c鏮oʕG_zUjԟ` ǚb }FQfzRW!pAzX`']qȢqXPc8#g.cԣCa`KXm*82٤xc%)`&dmiH?2[l3qtid ݊b))֨W*Iܣ|Jy[xnu(xwpJ* F)Vh㮆VIF)؅\:,GX昇.F\"˗FmdV)a7*XR"UJ&[nw߶ۭӸB]Jn␼[~X)CѻJݙozSʊ(ẛ6! TH{ij G-qLg:G_[l.iRg٩ȅ[),1Xb+:ۭFV)Ku~>ۯ:ysV]F=֍`d[+ҫQͲwE% w'x-xS[3e3'|o[yI08 fŶ9]2I%qۺ*K׮ySvΞX<饛.sO; f,[wZ/.L)x6&K:aE v_Ʈȯ~DoqQ\mzm=? eN76)n\8q~^k'iuY^28?$3 t!A~+)6ֹ/ݔ)( w!*KdCE*HLu$*2+F6Cb ?Ū1e$ I:q8L Ȫšc ++2 `bb7.R{"e|$2~1\_X )Kx- &bxa5'\$򠉓cR-cěK-/IZE*&:7b>)gLA3f'krJ;!^szl> eep'UPsg=%jOI2 u6ЦhI垕~(M1]j҈r(T0);Te|xjGuÌP*ӖgbA11VՇJ"M# 3 SY$*UԛH-i+<x/>rc66v24S+l[qp"֨)_ʏegFJnV;g7kњMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|eͯ~VHN;'La;ivtools-doc/aaron-4.gif0000644000076500007650000000566407374262627015626 0ustar scottscott00000000000000GIF87aFt/iararoinr-4.Lgif'?r9sL9TX-p#PP~H 52 8x9H#To\@i.L8TBHBXH8 8wK\@#- 6^)Ԙ hHFw\H.H H rsL@T 2Ov6e^rwr8i/te exi ost `in2g6 rfil ee /'/uisr/e4x/por` tho m/e/b`8yroon/jo hHnston/www.vi/e,FH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx߽Lpi^̸p'5(1 O燎3s^thRK= SV]m®f8'κ y8 }HPk͝&o"!&W.R'vGݗwyg`G 8pxF :Tw%WЅqQʇB$"7.¨Q'hbl+~#э5$--Z4dA:Nݔ&IL A$Yj! emNfR Ij^@Y!|heҩeṟTJGv ݜƘ@U⟛h9隓Rgf6jJŗh媤*ڣrZOKz顤 5:Mȣc>;(cVK-v-"Z.ܲtiznޛoO魞R[ô/ 0NC]yZk_\Sk.̰ȑ9+12K$ qk k*/'LtKF3%Ј2=*IQ?=cW3*Ck]R]{ݳ\N[fuv!wJݭoN4DRm󱲎i91w[#re뽹Lq:Sp9P UzJ;{UM^wyCOoIbᰇX+0&Aiʼn|=Y=đ%o.fxcDŽ$}T9FR!d׈Bʰ t$KEԣ%@F$D$H Nz!)Q2')!Kd-?:1+`*8rЊD@pCKβ&ta+8;ꒄ ee,h*噪4B)B&܄73zⲊ&0B~*27LР<2Ͷәcv\?CӜ(F:PmY4)Q6ʖNq\2)К4c}S\d90P2lYcX~GnrE*R73wt/!QJkms|-ysdw )EuX;'Ѻ]j֩+XTTƪ5J-v:=ch/[9vTmOmCv),&7Wu;EoZ9^駷opXz NGz3|~+.q' 87{ ȡGN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxb O<3;񐏼'O% ;ivtools-doc/aaron-face.gif0000644000076500007650000000444307374262627016353 0ustar scottscott00000000000000GIF87aUort/iararoinr-faLce.gif'r?sL8o*XpAP ~[ HT 49M ; x*2CZO#o\@s0sRB BC0;wK\@#- )8)o̘X hHw\H +.xH H %n@rsL~@sR2PTOv)eprwr8i+te exi ost `inxg) file /'/usr/e4x/por th m/e/b8yroon/jo hHnston/www.vi/e,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɒ$-cʔr͛_N=)JFDsҧu *MVnDbJ b˪ȵϷp߮}ؖeܻr.LvߢxvKx,wnŌ:6z0cuweA!'DᆤK ܹМYZ랬1>mVi9yxoںnΕ3N>o0+7GL W:z_p7~ykW^u6vmQ} {daU(}͔ڇ؝JRy(386Y8-:7p,*YㅙWxv9dRe`1Vg:Xcj&U #b+ZI'}~X^|Nf(n$iwJ:r"I(dZJ`m6)]nܦBj}qkjZ" ejw+|hj8줟(l8֩+k}ɪuT( jryKrmBۮNzB께*rf>KEo]֫il(JۂT!3ڱ l׿"lڻhn ^ڟ&, )|U3Q1}G61EKCB<7%Hz5cC\Ήb^c[ݘem{pE2ΦΪ&~O^/̧ͷc u~}͛}G։y_z1Ζnٰ:U뎬hmtҴw=wŎ]z3Ly-_vE#~6_7QNtOOyׁxi3]G7iV8 m\{ m:ʀ(C`AF"Bnp{^A8"g.l!i7*AP](D ,ٷ0'-k3I:p$ RC20Y0sED񬘹N'֎5qx/b)j[K482!A#tdIOZ#mD펠#G:~xMlw+PDd!*lt\%jB:n<'eGaJ/`%/ت.rWcd,s2$-7Ts9MѲ{U;&(5ƓYTi0̜e42XJfT -732eʶS5χG]B3ёfT6VmVҭ*/^ LzC&)Zjǵ5WBu֮rl*^T+U7(X{_CV9#2R,@ KYiK+*ڦLD,jWֺlgK-m@;ivtools-doc/aaron.gif0000644000076500007650000000454507374262627015462 0ustar scottscott00000000000000GIF87aU0oir\irЬsL(199r:sL:*Xp!Pgifh~Ho \ )x62pA#o\@s:ӟX~sRB A ) wK\@#- )ܘ hHw\H+.H H PrsL@sRp2\Pw@po@`f+iqiq4  @8ow\ HH /,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KLe\̙`?,QspEW:!h԰jvF֪Iּ_MEk+{HMm3${٩[Szɣr?)'Fdq&fsiP|Tbh|'xrys kF٣}ShzF`9z PݎVZ#w&Z+]pvmjz"kڢY2+*e{J֒$lߦnAhb-kܴ ƻ8Bٶ;(^8镒\\,B6!vp;.&fyƜuLɘ\,¼ E摐pZ,i6OF4o92]{lє2Pth F/}L.-/)dߵV]xk#]v6Kځoq.hlxj V|'X[.m.^irhbmSN!p;qw7/CmcVhni_/5/.·ɦ }SGSha^Limx~B9櫴z_%V}n<6dmh_ Bv!HVv65taIdA."YogQJ.q5 ϤΆaDVqǩ'ƣ`1b]DVƜjzmLJc э2"8'Q4u}J I)%& "!ɻHr㊴tEM~ϒ1 w%22yI= Ke J@,%d?#DUI;XGʥY*Ħa $hGtQob~L6§Z4Q&XhNS6[g=hLTT>"F4=̋ z ehCI%Ѹ,r-Csь$gE=,nN:HQ ,j'}LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KdK0K͘2v-oc"-K1٨(}}gڭP_8AZxeMPXIͭnw6pKr:ЍtKZͮvz xKN@;ivtools-doc/aaron.html0000644000076500007650000000236107433262401015635 0ustar scottscott00000000000000 Aaron the flying anteater

Aaron the flying anteater


Aaron the flying anteater is a member of a new species of aardvark evolved for domestic ant-control. With greatly extended scapula, he (and the rest of myrmecophaga aerialosi) have the ability to hover around furniture and potted plants (especially rubber-trees), waiting for the ants to track by.

He is a general purpose hard working character around these web pages. Ant-control is his main line of business, but he moonlights as a mascot for software packages every so often. He still thinks it just might get him some exposure for his night job, as an actor in animated shorts. The following are stills from his work.

image1
image3

Here is page on anteater art that aaron likes.

Here is a little bit about some of his old neighbors down south.


up to flipbook

up to ivtools home page. ivtools-doc/ace-logo.gif0000644000076500007650000000054007374262627016037 0ustar scottscott00000000000000GIF87a@@F,@@tޜHy_Lv,+͗j {0m#@xYǤF*L'Rа͕Ϯl;wqyrxק7XQXwH8(4Q Ճ 4:5q #Jf{; k[Ǜpl< [|;UֈR\m=ә!CL^>~f.m?"O.8oȟOH?C뢡.6fqzHGx():q2k *91m/<r.ӠLs$8@*LȌ=;5*ҥI ;ivtools-doc/alive.gif0000644000076500007650000000225107374262627015452 0ustar scottscott00000000000000GIF89a0|:3???_,=%/ >6/6L @s/@Pl'h@e/@h =>H76 >6 L> @6q@@FA7 9  >%LQ7 @@a @c@B;j 66q@\A_ L_ @ >ly7@@5_$t6j\/L @@LX >/Aho@me5/kcn?6g/alive!. @gifLG 6eq7_\`\L @=/e/\4>\c/| 'h@'h@/ >n\=L @s@#|+@\9=7 >>La'ch/!7Image generated by Aladdin Ghostscript (device=ppmraw) ,0H*\Ç 02bx!E p$<~Qdɑ&ʁGn3MXNAe5j(ӌ.w J'ϫjʵ׮B%*Z@Aͪ]g؄G9-vZmg ٭覵W/vjdTf຃ EVqMՋoڼ4滑 sWX uh@'mIvgnƙcq[wga \μ1jT厳gƹ7+ok{c6/]gfԗpOٷ|ce4M Wh!HTl$҃t@DAJa@;ivtools-doc/andornot.grs0000644000076500007650000000325107374262627016225 0ustar scottscott00000000000000graphdraw(5,5 gs( :fillbg 1 :brush 65535,0 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :font "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*","Helvetica",12 :graypat 1), gs( :fillbg 1 :brush 65535,0 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :graypat 0), node( :reqlabel 1 :ellipse 300,458,35,20 :ellipsetrans 1,0,0,1,15,36 :text 12,"NOT" :texttrans 1,0,0,1,302.5,487 :gs 0 :valexpr "if(in1=='I'||in1=='N' :then in1 :else !in1) /* NOT */" :val N), node( :reqlabel 1 :ellipse 300,458,35,20 :ellipsetrans 1,0,0,1,-102,-33 :text 12,"AND" :texttrans 1,0,0,1,185,418 :gs 0 :valexpr "if(in1=='I'||in2=='I' :then 'I' :else if(in1=='N'||in2=='N' :then if(in1=='N'&&in2=='N' :then 'N' :else 'I') :else in1&&in2)) /* OR */" :val 'N'), node( :reqlabel 1 :ellipse 300,458,35,20 :ellipsetrans 1,0,0,1,151,-34 :text 12,"OR" :texttrans 1,0,0,1,442.5,418 :gs 0 :transform 1,0,0,1,0,1 :valexpr "if(in1=='I'||in2=='I' :then 'I' :else if(in1=='N'||in2=='N' :then if(in1=='N'&&in2=='N' :then 'N' :else 'I') :else in1||in2)) /* OR */" :val 'N'), node( :reqlabel 0 :ellipse 178,503,35,20 :ellipsetrans 1,0,0,1,-118,-3 :text 16,"" :texttrans 1,0,0,1,60,485 :gs 0 :val 'N'), node( :reqlabel 0 :ellipse 172,341,35,20 :ellipsetrans 1,0,0,1,-116,15 :text 16,"" :texttrans 1,0,0,1,56,341 :gs 0 :val 'N'), edge(85,486,173,439 :arrowscale 1.5 :tail :startnode 3 :endnode 1 :gs 1), edge(82,369,172,412 :arrowscale 1.5 :tail :startnode 4 :endnode 1 :gs 1), edge(222,439,291,480 :arrowscale 1.5 :tail :startnode 1 :endnode 0 :gs 1), edge(341,481,425,438 :arrowscale 1.5 :tail :startnode 0 :endnode 2 :gs 1), edge(233,425,416,424 :arrowscale 1.5 :tail :startnode 1 :endnode 2 :gs 1) ) ivtools-doc/announce-0.6.3.txt0000644000076500007650000000273007374262627016676 0ustar scottscott00000000000000Subject: ivtools-0.6.3: drawing editor frameworks with XFree86 style license ivtools is a collection of sample drawing editors that exercise and demonstrate the capabilities of their underlying C++ class libraries. It comes with an XFree86 style, non-copylefted freeware license, and is available for use in any commercial or free software effort. ivtools-0.6.3, the latest release, is available at: http://www.vectaport.com/pub/src/ivtools-0.6.3.tgz ivtools was built by augmenting the libraries of InterViews 3.1 with new libraries that extend the idraw framework and add features like a node-graph editor, a multi-frame editor, and a script-based interpreter. We've tested the backward compatibility of ivtools with the original InterViews and Unidraw by building significant third-party packages like Target Jr and MixViews on top. More information at: http://www.vectaport.com/ivtools/ ivtools drawing editors: idraw -- original capability of InterViews 3.1 idraw drawtool -- idraw extended with alternate document format, network export/import, pbmplus image support, and SGI-motif looking glyphs flipbook -- multi-frame editor with a multi-page Postscript print feature able to generate animated GIF89a's graphdraw -- sample node-edge graph editor comdraw -- drawing editor with integrated command interpreter Linux 2.0 Elf binaries at: http://www.vectaport.com/pub/bin/ivtools-0.6.3-LINUX.tgz Vectaport Inc. http://www.vectaport.com ivtools-doc/announce-0.7.3.txt0000644000076500007650000000264507374262627016704 0ustar scottscott00000000000000ivtools-0.7.3 is now available at http://www.vectaport.com/ivtools/. This release makes for greatly expanded documentation -- online, offline, and inline (see http://www.vectaport.com/ivtools/doc/): - inline header-file comments extractable by PERCEPS (http://friga.mer.utexas.edu/mark/perl/perceps/) for these class libraries: Attribute ComTerp OverlayUnidraw GraphUnidraw - links from library overview web pages to individual class web pages generated by PERCEPS (i.e. http://www.vectaport.com/ivtools/ovinfo.html) - all the man pages and the reference manual from InterViews 3.1, partially cross-referenced with the PERCEPS generated web pages. - derived class graph in HTML generated with a new argument "-d" argument on iclass. Try it on your own inheritance trees. This release also contains a lot of dialog box hacking (export/print/attribute/precise-page) and a rudimentary dataflow mechanism added to ivtools graphdraw. And it adds support for floating-point line widths to idraw, the first step in implementing a new idraw format version 11 for added compatibility with GNU plotutils. For more details see: http://www.vectaport.com/ivtools/ivtools-0.7-CHANGES.txt Send public questions about ivtools to ivtools-list@vectaport.com. Send subscribe/unsubscribe requests to ivtools-request@vectaport.com. Send private questions about ivtools to ivtools-info@vectaport.com. ivtools-doc/announce-0.7.4.txt0000644000076500007650000000333307374262627016700 0ustar scottscott00000000000000ivtools-0.7.4 now available. Highlights: (by Rick Kissh) - shared memory support for loading rasters into the X server (by Rick Kissh) - asynchronous incremental download of rasters by URL. Now you can pan and zoom the viewer, and draw/scale/rotate/move any graphic, all while watching the incremental progress of the ongoing raster downloads. Then for kicks, undo all your changes and get back to an unmodified fully downloaded drawing. See this web page for an example: http://www.vectaport.com/ivtools/anteater-art.html - fairly complete HTML documentation, both online and in the tar file -- see http://www.vectaport.com/ivtools/doc/ * or * ivtools-0.7/src/html - Version 12 idraw format PostScript completes the support for floating point line width. If a non-integer line width is used the resultant PostScript is not backward compatible. Versions of idraw since ivtools-0.6.7 will correctly detect and warn about this. Prior versions will print a warning message like this: warning: drawing version 0 newer than idraw version 0 which isn't very helpful. See the FAQ for more info: http://www.vectaport.com/ivtools/faq.html#idrawversions - this release also re-incorporates most of the legacy glyph examples from the original InterViews 3.1 tar file and adds a test program to demonstrate that the ivtools Date class can handle the Y2K and Y2.038K problem. - lots of config changes for building on Solaris and Alpha (thanks to Dan DeJohn, Bruno DelFosse, and M. Rasit Eskicioglu). See the ivtools FAQ for more hints on how to build on any closed-source variant of Unix: http://www.vectaport.com/ivtools/faq.html#notlinuxbsd Scott Johnston Vectaport Inc. http://www.vectaport.com ivtools-doc/announce-0.7.5.txt0000644000076500007650000000303307374262627016676 0ustar scottscott00000000000000ivtools-0.7.5 is now available from http://www.vectaport.com/ivtools/. This release features an improved configure script (no longer any need to supply CPU, PWD, XCONFIGDIR, or GPLUSPLUSINCLUDEDIR make variables), automatic re-centering of rasters read from URLs, and full animation of direct-manipulation graphic transformations (move/scale/stretch/rotate). ivtools is a collection of extendable drawing editors and spatial data servers. It is also a layered application framework with support for vector and raster graphics, multi-view document editing, networking, scripting, components, and serialization. An alternate to Java Swing or MFC for the Unix/X11/C++ programmer. Documentation available online (http://www.vectaport.com/ivtools/doc/) as well as downloadable in a tar file of HTML and other files, all copyrighted identical to ivtools (X11 style): http://www.vectaport.com/pub/src/ivtools-0.7.5-html.tgz If you're interested in adding capability to ivtools, such as one of those listed in http://www.vectaport.com/ivtools/help-wanted.html, or are interested in helping out with the documentation, please get in touch via ivtools-info@vectaport.com. Scott Johnston Vectaport Inc. http://www.vectaport.com ******************* errata -- April 8th 1999 ******************** There is still a need for the CPU environment variable. A patch to fix this lingering problem is available at: http://www.vectaport.com/ivtools/ivtools-0.7.5-CPUprob.patch.txt. See other details at: http://www.vectaport.com/ivtools/release-note-0.7.5.html ivtools-doc/anteater-art.html0000644000076500007650000000420607374262627017142 0ustar scottscott00000000000000 hyper-collage of anteaters

hyper-collage of anteaters

This link points to a collage of anteater art, a hyper-structured graphic (ala Tgif) that will launch in drawtool if you've installed ivtools-0.7 or greater, and added the following to your ~/.mailcap file:

application/ov-idraw; drawtool %s

It would also work to download a copy of http://www.ivtools.org/ivtools/anteaters.drs and launch drawtool by hand like this:

    drawtool anteaters.drs

ivtools-0.7.4 added support for asynchronous incremental download of rasters by URL. Now you can watch the images download while panning or zooming the viewer, and draw, move, scale, and resize any graphic (including the downloading rasters). After the download is finished you can even undo all your changes to get back to an unmodified fully loaded drawing.

Images embedded in the collage are downloaded by URL from these educational, civic or free software sources:

  • http://www.ivtools.org/ivtools/
  • http://www.birminghamzoo.com/ao/mammal/echidna.htm
  • http://www.reg.uci.edu/IMAGES/ANTEATERS/index.html
  • http://www.cwpost.liunet.edu/~edt/professional/antpic.htm
  • http://www-personal.umich.edu/~schupska/anteaterfacts.html
  • Please forward any objection to their use in this manner to ivtools-info@vectaport.com.
    back to ivtools drawtool
    ivtools-doc/anteaters.drs0000644000076500007650000000310307374262627016360 0ustar scottscott00000000000000drawtool( gs( :fillbg 1 :nonebr :fgcolor "White",1,1,1 :bgcolor "White",1,1,1 :graypat 0), gs( :fillbg 0 :fgcolor "Black",0,0,0 :font "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*","Helvetica",12 :graypat 0), raster("http://www.vectaport.com/ivtools/aaron.gif" :transform -4.64781e-08,-1,1,-2.79648e-08,457,418.5), rectangle(457,348,547,430 :gs 0 :transform 1,-0,-0,1,-18,-382), raster("http://www.vectaport.com/ivtools/aaron.gif" :transform 1,0,0,1,-56.5,286), raster("http://www.reg.uci.edu/IMAGES/ANTEATERS/ant_surf.gif" :transform 1,0,0,1,377.5,597), text(12,"http://www.reg.uci.edu/IMAGES/ANTEATERS/ant_surf.gif" :gs 1 :transform -4.37114e-08,-1,1,-4.37114e-08,633.5,823.5), raster("http://www.birminghamzoo.com/ao/mammal/echidna.jpg" :transform 1,0,0,1,1.5,474.5), text(12,"http://www.birminghamzoo.com/ao/mammal/echidna.jpg" :gs 1 :transform -4.37114e-08,1,-1,-4.37114e-08,258,517), text(12,"http://www.cwpost.liunet.edu/~edt/professional/anteater.jpg" :gs 1 :transform 1,0,0,1,2,11), text(12,"http://www.vectaport.com/ivtools/aaron.gif" :gs 1 :transform 1,0,0,1,22,380), raster("http://www.reg.uci.edu/IMAGES/ANTEATERS/ant_surf.gif" :transform 1,0,0,1,275.5,597), rectangle(457,348,547,430 :gs 0 :transform 1,-0,-0,1,-12,-25), raster("http://www.cwpost.liunet.edu/~edt/professional/anteater.jpg" :transform 1,0,0,1,7.5,18), raster("http://www-personal.umich.edu/~schupska/graphics/Zooey.gif" :transform 1,0,0,1,273.5,380), text(12,"http://www-personal.umich.edu/~schupska/graphics/Zooey.gif" :gs 1 :transform 1,0,0,1,282,379) ) ivtools-doc/anteaters.ovs0000644000076500007650000000310307374262627016377 0ustar scottscott00000000000000drawtool( gs( :fillbg 1 :nonebr :fgcolor "White",1,1,1 :bgcolor "White",1,1,1 :graypat 0), gs( :fillbg 0 :fgcolor "Black",0,0,0 :font "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*","Helvetica",12 :graypat 0), raster("http://www.vectaport.com/ivtools/aaron.gif" :transform -4.64781e-08,-1,1,-2.79648e-08,457,418.5), rectangle(457,348,547,430 :gs 0 :transform 1,-0,-0,1,-18,-382), raster("http://www.vectaport.com/ivtools/aaron.gif" :transform 1,0,0,1,-56.5,286), raster("http://www.reg.uci.edu/IMAGES/ANTEATERS/ant_surf.gif" :transform 1,0,0,1,377.5,597), text(12,"http://www.reg.uci.edu/IMAGES/ANTEATERS/ant_surf.gif" :gs 1 :transform -4.37114e-08,-1,1,-4.37114e-08,633.5,823.5), raster("http://www.birminghamzoo.com/ao/mammal/echidna.jpg" :transform 1,0,0,1,1.5,474.5), text(12,"http://www.birminghamzoo.com/ao/mammal/echidna.jpg" :gs 1 :transform -4.37114e-08,1,-1,-4.37114e-08,258,517), text(12,"http://www.cwpost.liunet.edu/~edt/professional/anteater.jpg" :gs 1 :transform 1,0,0,1,2,11), text(12,"http://www.vectaport.com/ivtools/aaron.gif" :gs 1 :transform 1,0,0,1,22,380), raster("http://www.reg.uci.edu/IMAGES/ANTEATERS/ant_surf.gif" :transform 1,0,0,1,275.5,597), rectangle(457,348,547,430 :gs 0 :transform 1,-0,-0,1,-12,-25), raster("http://www.cwpost.liunet.edu/~edt/professional/anteater.jpg" :transform 1,0,0,1,7.5,18), raster("http://www-personal.umich.edu/~schupska/graphics/Zooey.gif" :transform 1,0,0,1,273.5,380), text(12,"http://www-personal.umich.edu/~schupska/graphics/Zooey.gif" :gs 1 :transform 1,0,0,1,282,379) ) ivtools-doc/apisles.frs0000644000076500007650000000235107374262627016040 0ustar scottscott00000000000000flipbook( frame( rectangle(12,105,659,648 :fillbg 1 :brush 65535,0 :fgcolor "LtGray",0.762951,0.762951,0.762951 :bgcolor "White",1,1,1 :graypat 0 :transform 2,-0,-0,2,-344,-251) ), frame( raster("http://www.nps.gov/apis/photo1.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo2.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo3.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo4.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo5.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo6.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo7.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo8.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo9.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo10.jpg" :transform 1,0,0,1,120.5,271) ) :slideshow 5 ) ivtools-doc/attribute.html0000644000076500007650000000330307512656157016552 0ustar scottscott00000000000000 Attribute Library

    Attribute Library

    Attribute is a C++ class library for representing generic name/value pairs that has been integrated into a command interpreter and a drawing editor.

    Attribute classes

    • ALIterator: Iterator for AttributeList's
    • Attribute: name/value pair
    • AttributeList: list of Attribute's
    • AttributeValue: general attribute value -- supported types:
      • UnknownType
      • CharType
      • UCharType
      • ShortType
      • UShortType
      • IntType
      • UIntType
      • LongType
      • ULongType
      • FloatType
      • DoubleType
      • StringType
      • SymbolType
      • ArrayType
      • StreamType
      • CommandType
      • KeywordType
      • ObjectType
      • EofType
      • BooleanType
      • OperatorType
    • LexScan: lexical scanner used to read AttributeValue's
    • ParamStruct/ParamList: classes to support istream constructors

    back to ivtools technical info

    ivtools-doc/bdvtable-main.gif0000644000076500007650000000435107374262627017062 0ustar scottscott00000000000000GIF87a99\FFUUUrrr:::>00}0,99I8ͻ`(diWlp,tmx| MR8Ȥrl:ШtJZجvm"ݰxL.k(|N~QRXK~oNFMk`POIzJιSvͱLݝbHӻϜGگЍѸA*葫Op:w m:{x佌 ǥ Iy %͛8Iɳ瞝> Utѣ]"]tPJJիXjʵׯ`ÊKY)Ҫ]˶۷ph@ݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟O$Ͽ(h&`_S{,`=aRXab8Y"#"%"/¸Xc1#;x=Y$G"9IB%SRIKˀdM\ve$ps eB#i*m:M2EHg釚c% hgBP72G~.:}"J&) iaC ӧjXYZQ+*J[,"뗲:Ѭ|A-R*xq[k覫Kۗt6J$ 7G 7-t;wS<0ƽhp00/3 3 r"[/,'25lsDӌ3'ms<嫦qs5`?R/q1WdcC_mdWyhDe)PԠF7Q NSS1-tQ%}IN-KʹL5wӝ~9HԢ KPЦ IR`P^QQEhx"N{fL=1fU"!^RmO9*nzD\9OeU Hb+0;iγ.6[9rͫ\պ&""2eIR-+T،,=Ժk]yMSjM=hۻ3]o'5Y_6lπMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη;ivtools-doc/bdvtable-popup.gif0000644000076500007650000000364107374262627017302 0ustar scottscott00000000000000GIF87a\FFUUUrrr:::>0000,I8ͻ`(dhlp,tmxTpH,Ȥrl:ШtzDجvzD. &|ݞ|q|YEsfXKAxEDLAiMǠyG@OIۛϽKFS̥w׿BCa׌5'؂1b@dE ?`Hy\ Go/ĸE h*)Z#b)8~9ĎjHDl~l>,f[t.+ k覫+I oZz(,l' 7|qG,Õf1^m\XryL.&lK*rˮ *2όJ6sΈ˳l>\[B7fH'L7PGRWmX/?}V<'={=b:Is@7YDŽ@=a:yq|Dяp!>IHIL#CKR3ULMx;t;dOSXAF7QT*./`h%5eWJGՌìL"T=!U4p!W ֵcsxk P.x^IDuU?.5R5;ivtools bdvtable example program

    bdvtable

    bdvtable shows an expandable list of name/value displays. The Edit button brings up a window for adding new name/value pairs and removing old ones.

    main window

    popup window


    next example program formdemo

    up to ivtools home page ivtools-doc/browserconfig.html0000644000076500007650000000306507433262401017410 0ustar scottscott00000000000000 Configuring your web browser for ivtools

    Configuring your web browser for ivtools

    There are four steps to configuring your browser to automatically launch applications and demonstrations from these web pages.

    1. First acquire ivtools, by downloading binaries or building from source.

    2. Add the following Mime Types to the appropriate file for your browser:

    application/comterp; cms
    application/ov-idraw; drs
    application/frame-idraw; frs
    application/graph-idraw; grs

    Mime Types file for common browsers:

  • emacs/w3: .mime-types
  • chimera: .chimera_mime.types (.Xdefaults resource settable)
  • lynx: .mime.types
  • mosaic: .mime.types
  • netscape: .mime.types
  • 3. Add the following helper app command lines to your ~/.mailcap file:

    application/comterp; comterp run %s
    application/ov-idraw; drawtool %s >& /dev/null
    application/frame-idraw; flipbook -bookgeom %s >& /dev/null
    application/graph-idraw; graphdraw %s >& /dev/null

    4. Restart your browser and try loading this file into ivtools drawtool. If it doesn't work go back to step 2 and make sure you added the Mime Types to the appropriate file for your browser.


    ivtools-doc/caveats.html0000644000076500007650000000372207374262627016203 0ustar scottscott00000000000000 ivtools licensing caveats

    ivtools licensing caveats

    From why-ivtools.html:
        but we'll carry on with the license the way it is, the way it has always been

    That'll teach me to state things with such absolute certainty. Since writing that I've come to realize there might be future circumstances that would merit some evolution to the copyright permission notice of ivtools. Whoa, that doesn't mean it's gonna get all proprietary. Read on.

    It could happen that some organization would be interested in making significant contributions to ivtools if their work could receive some of the protections offered by licenses like the Free Software Foundation's LGPL. In that event, to protect the interests of the stakeholders in ivtools, I would consider making changes to the license, but these changes would be limited as follows:

  • There would be no additional restrictions placed on binary distributions
  • Additional restrictions on source distributions would not apply to any derivative C++ classes that were seeded by cloning ivtools classes or to any larger work in which it was embedded (i.e. the license would not be viral in these cases).
  • The new license would conform to the Debian Free Software Guidelines
  • The new license would conform to the Free Software Foundation's definition of free software
  • Recently (with ivtools-0.7.4, Feb. 27th 1999), a COPYRIGHT.proposed was added to the ivtools source tree that attempts some of the above. All the comments received to date have been neutral or opposed to the change. So it looks unlikely this will be adopted with ivtools-0.8.

    Scott Johnston
    President, Vectaport Inc.
    ivtools-doc/changelog.gif0000644000076500007650000000027507374262627016305 0ustar scottscott00000000000000GIF89a<!7Image generated by Aladdin Ghostscript (device=ppmraw) ,<a4@^v{ya!(nhtgy&Ǯ~~{ˠz!f$HS`M\\$u@y`1νg4&Ox.|?Q;ivtools-doc/changelogs.html0000644000076500007650000001220510060120526016634 0ustar scottscott00000000000000 Change Log History of ivtools

    Change Log History of ivtools

    This is the almost complete change log history of ivtools.

  • ivtools-0.3: January 1994 to August 1994:

    Highlights of 0.3: We started with a 0.3 designation because this was roughly the third-time our team had librarified idraw in preparation for constructing vertical applications on top. During this phase OverlayUnidraw, FrameUnidraw, and GraphUnidraw were organized, and their initial example programs were created, ov-idraw, frame-idraw, and graph-idraw (now called drawtool, flipbook, and graphdraw). A library of extended glyph examples was created as well. No change logs remain from this time.

  • ivtools-0.4: September 1994 to October 1995: CHANGES-0.4
  • Highlights of 0.4: Attribute (property list) objects, mechanism for component serialization, export/import dialog box extensions.

  • ivtools-0.5: October 1995 to December 1997: CHANGES-0.5
  • Highlights of 0.5: Direct incorporation of InterViews foundation classes, ACE middleware framework integration, command interpreter integration, gray-level raster added with arbitrary numerics, initial framework for on-the-fly image processing operators (scaling, pseudocoloring, etc.).

  • ivtools-0.6: December 1997 to October 1998: CHANGES-0.6
  • Highlights of 0.6: support for launching/importing on a wider variety of graphics formats: arbitrary PostScript, GIF, JPEG (in addition to the built-in support for TIFF, XBM, PBM/PGM/PPM, and the Unix filters pluggable via the import dialog box). Hyper-structured-graphics support, where rasters and other graphics are downloaded from a URL. autoconf generated configure script.

  • ivtools-0.7: November 1998 to September 1999: CHANGES-0.7
  • Highlights of 0.7: asynchronous download of URL rasters with incremental display, use of X shared memory for loading rasters to the server, PERCEPS extractable inline class documentation, animated graphic transforming (move/size/stretch/rotate), port to Windows NT with Cygwin environment.

  • ivtools-0.8: January 2000 to August 2000: CHANGES-0.8
  • Highlights of 0.8: add dotted (".") variables to the command interpreter to keep a list of name/value pairs (like a C struct), stay-up (non-modal) dialog boxes, command interpreter integrated into text editor embedded in comdraw/graphdraw/flipbook, comdraw -stripped brings it up without menubars or toolbars for remote control purposes, comdraw/comterp global variables, draw-your-own toolbutton.

  • ivtools-0.9: December 2000 to October 2001: CHANGES-0.9
  • Highlights of 0.9: save/restore graphics in drawing editors by Unix command line; new keyboard commands: pause/trace/step for debugging, save/export, coordinate conversion; PNG support; gcc-3.0/libstdc++-v3 support; auto-streaming operators in comterp

  • ivtools-1.0: November 2001 to November 2002: CHANGES-1.0
  • Highlights of 1.0: alpha-transparent rasters, "none" background color (semi-transparent patterns), keyboard drawing navigation, matrix algebra extensions to comterp, raster primitives for comdraw (peek/poke/pcols/prows/pflush/pclip), NetBSD/FreeBSD packaging, Mac OS X (Darwin) port, Cygwin/Solaris/RedHat-7.* fixes, faster asynchronous raster loading from URLs

  • ivtools-1.1: October 2003 to February 2004: CHANGES-1.1
  • Highlights of 1.1: more MacOS X support, gcc-3.3 support, backward compatible support for gcc-2.95, fix ACE related problems

  • ivtools-1.2: June 2004 to Present: CHANGES-1.2
  • Highlights of 1.2: drawing chat capability added to drawserv

    ivtools-doc/clippoly-small.gif0000644000076500007650000000074407374262627017320 0ustar scottscott00000000000000GIF87a@@Ї,@@0I8砻gAXhdi zp(iU[."t`p(ͤr|A}oXujܘ\>M흟$z}|'?(lzh%SWym!&0T&f#+s.Ku-{x!o0[ɾκң2wpպ2za0+ER=söAa?n簢&h1I47rtQ$=#9^S0eG=rI&a3i\HNo0j#2%ƄC%|4K mIQV3IE[yqjI:^2 Ҷ}27ںxzqBخrxkd0#2y7|FEʘ ǜ #LYΠ3?nLibb&;ivtools-doc/comdraw-icon.gif0000644000076500007650000000133407374262627016735 0ustar scottscott00000000000000GIF87aUU((,UUڋ޼H. -q:cj l̝AVl؞5-*6#\&seΉ~02 -ϖerħEDes8XXvhXxeHz)RHƗI'z6e*&WYaI񋖡JI賈ۻ8!skY,h=VkB4{m*aESg.iw ZK EL:v+'k?{H []Iw uE!Ȑ:v!) ٣l%宕@<~ȗH[ǃl͛aD8(#(j+FJQCJ=cRC`}Mfrjxl3x]FmOΦL(~\Dœm,~딄F3̞>.&­T,lIFg޻\]cMZS}F|CaaZnc̺IΉ?,[rvO_4' `!$E0X Vh!VȠR X)x!($Ȁ%bAz(8ID."$;y#S&9`襌O"db^$[>8&Fap~"RbFIg/&*h.h;ivtools-doc/comdraw-logo.gif0000644000076500007650000000262407374262627016750 0ustar scottscott00000000000000GIF87aUU((@_@@@%O@̘GIG@ @ @P_ @@@H@@O@O@,OG%G@>HOh9@@o @ @l@X vH X%|v@nIXH@@oH @ \l%H@@|GhGL@ @@x@ODo@,FOmGL󿿿%Ntݕ@l GHp8e`ɾ 5@ @4@m8,O`@| OI @UURJO<8%@J\ @` U@Un@g H_@@,UUH*\ȰÇ#JHŋ3jȱǏ C(\ɲeJ-c8sf/)ɳ͘9y'ΟHo t4̥+J-JsѦRՊskR]bhњaTJvKg-'W)J݋.Se^9U=V9aaX\‚"U0s){,ނ/<٧B;d{З#J|ZnNq5d:}]\'mɍ5xn\4jE 3xrO9~kWYe{hVrWiyf%ЍYf"SzgW&y8l8"du(ֹ\5fTBi]g{MXTEi(sp^mZiy}%kl)-(IVJ)uc޲GjZnen ꪺ:>g,l' 7;ivtools-doc/comdraw.README.txt0000644000076500007650000001471207506153213017004 0ustar scottscott00000000000000NAME comdraw - drawtool with distributed command interpreter SYNOPSIS comdraw [-port n] [-import n] ['X-params'] [file] DESCRIPTION comdraw is a drawing editor with integrated command interpreter the user can interact with via stdin and stdout (or via telnet if ACE is built in). The command syntax is a semi-colon separated list of commands with arbitrary number of parameters enclosed in parenthesis, with support for optional parameters and keyword arguments, i.e: command1(arg1 arg2 arg3 :key1 val1 :key2 val2); command2(arg1 arg2 arg3 :key1 val1 :key2 val2) The literals and operators of C are all supported except for the syntax of the conditional operator "?:". See the comterp documentation for more details. All arguments to commands documented below are integers unless indicated by a suffix of str (which are strings embedded in quotes) or flt (which are conventional floating point numbers). "compview" is a graphical object assigned to an interpreter variable. DRAWING COMMANDS compview=rect(x0,y0,x1,y1) -- create a rectangle compview=rectangle(x0,y0,x1,y1) -- same as rect compview=line(x0,y0,x1,y1) -- create a line compview=arrowline(x0,y0,x1,y1) -- create line with arrows compview=ellipse(x0,y0,r1,r2) -- create a rectangle compview=text(x0,y0 textstr) -- create a text string compview=multiline(x0,y0[,x1,y1,...]) -- create a multiline compview=arrowmultiline(x0,y0[,x1,y1,...]) -- create a multiline with arrows compview=openspline(x0,y0[,x1,y1,...]) -- create an open spline compview=arrowspline(x0,y0[,x1,y1,...]) -- create an open spline with arrows compview=polygon(x0,y0[,x1,y1,...]) -- create a polygon compview=closedspline(x0,y0[,x1,y1,...]) -- create a closed spline compview=raster(x0,x1,y0,y1) -- create an empty raster GRAPHIC STATS COMMANDS xylist=center(compview :xy :yx :x :y :scrn) -- center of compview (dflt :xy) rectlist=mbr(compview :lbrt :lrbt :scrn) -- minimum bounding rectangle of compview (dflt :lbrt) ptlist=points(compview :scrn) -- return point list from compview graphic GRAPHIC STATE COMMANDS font(fontnum) -- set current font from menu brush(brushnum) -- set current brush from menu pattern(patternnum) -- set current pattern from menu colors(fgcolornum bgcolornum) -- set current colors from menu nfonts() -- return size of font menu nbrushes() -- return size of brush menu npatterns() -- return size of pattern menu ncolors() -- return size of color menus DIRECT MANIPULATION COMMANDS select([compview ...] :all :clear) -- make these graphics the current selection delete(compview [compview ...]) -- delete graphic(s) move(dx dy) -- move current selection scale(xflt yflt) -- scale current selection rotate(degflt) -- rotate current selection GROUP/UNGROUP COMMANDS newgroup=growgroup(groupview compview) -- add graphic to existing group graphic newgroup=trimgroup(groupview compview) -- remove graphic from existing group graphic COMPONENT AND ATTRIBUTE COMMANDS compview=setattr(compview [:keyword value [:keyword value [...]]]) -- set attributes of a graphic component attrlist(compview) -- return attribute list of component compview=frame([index]) -- return composite component for a frame, defaults to current val=at(list|attrlist|compview n :set val) -- return (or set) the nth item in a list. num=size(list|attrlist|compview) -- return size of a list. VIEWER COMMANDS update() -- update viewer error=save([pathstr]) -- command to save document (to pathname) compview=import(pathstr :popen :next) -- import graphic file from pathname or URL, or from a command if :popen (:next imports next in numeric series) export(compview[,compview[,...compview]] [path] :host host_str :port port_int :socket :string|:str :eps :idraw) -- remote in drawtool (or other) format compview=paste(compview [xscale yscale xoff yoff | a00,a01,a10,a11,a20,a21]) -- paste graphic into the viewer val=pastemode([val] :get) -- toggle or set paste mode, default is 0, always paste new graphics compview=addtool(pathname) -- add button to toolbar based on zero-centered idraw drawing. ncols() -- onscreen horizontal extent in pixels nrows() -- onscreen vertical extent in pixels dx,dy=stod(sx,sy) -- convert from screen to drawing coordinates sx,sy=dtos(dx,dy) -- convert from drawing to screen coordinates dx,dy=gtod(compview gx,gy) -- convert from graphic to drawing coordinates gx,gy=dtog(compview dx,dy) -- convert from drawing to graphic coordinates handles(flag) -- enable/disable current selection tic marks and/or highlighting highlight(compview compviewgs) -- set the highlight graphic state for a graphic zoom(zoomflt) -- zoom by factor zoomin() -- zoom-in by 2 zoomout() -- zoom-out by 2 pan(px py) -- pan viewer smallpanup() -- small pan up smallpandown() -- small pan down smallpanleft() -- small pan left smallpanright() - small pan right largepanup() -- large pan up largepandown() -- large pan down largepanleft() -- large pan left largepanright() -- large pan right IMAGING COMMANDS tilefile(inpath outpath [xsize] [ysiz]) -- tile pgm or ppm image file poke(compview x y val) -- poke pixel value into raster pcols(compview) -- number of columns in a raster pcols(compview) -- number of rows in a raster pflush(compview) -- flush pixels poked into a raster pclip(compview x1,y1,x2,y2,x3,y3[,...,xn,yn]) -- clip raster with polygon alpha(compview [alphaval]) -- set/get alpha transparency PLOTTING COMMANDS -- requires plotmtv and pstoedit -- barplot([var_str value_float] [...] :title title_str :xtitle xtitle_str :ytitle ytitle_str :valtitle valtitle_str :newview) -- display a barplot OTHER COMMANDS run(filename) -- run commands from file quit() -- quit this interpreter exit() -- exit entire application pause([msgstr]) -- pause script execution until C/R OPTIONS "-comdraw n" specifies the port number to accept command interpreter connections on. "-import n" specifies the port number run the import service on. The import service accepts connections over the net and reads drawtool format data. "-stripped" brings up a comdraw without any menubar, toolbar, panner, slider, or zoomer. It can be controlled via stdin or telnet if built with ACE. "-rampsize n" selects the rampsize used for gray-level image processing. "-theight n" (or "-th n") selects the automatic raster tiling height. "-twidth n" (or "-tw n") selects the automatic raster tiling width. "-tile" enables the automatic raster tiling. Also see the -help message and the drawtool and idraw man pages for further options. SEE ALSO comterp, drawtool, idraw WEB PAGES http://www.ivtools.org/ivtools/comdraw.html ivtools-doc/comdraw.html0000644000076500007650000000504307433262401016171 0ustar scottscott00000000000000 ivtools comdraw: drawing editor with command interpreter

    ivtools comdraw

    ivtools comdraw is derived from ivtools drawtool. It has extensions for command interpreting of drawing capability, using a simple yet fully programmable scripting language Here is the man page for ivtools comdraw. The set of pre-defined operators and commands of comterp are available in comdraw as well.

    Sample Scripts


    Pseudo-spirograph To use comdraw like a Spirograph, start one up, and enter something like the following into stdin:

    for(i=0 i<100 i++
    :body x=300+cos(i)*100;y=300+sin(i)*100;ellipse(x,y,30,20);rotate(i);update
    )

    which generates this


    Random jelly-beans To draw a collection of randomly positioned and colored ellipses (jelly beans), enter the following into a comdraw interpreter:

    for(x=0 x<100 x++
    :body ellipse(rand(0,ncols-1),rand(0,nrows-1),rand(20,30),rand(10,20));rotate(rand(1,180));update;colors(rand(1,ncolors) rand(1,ncolors));pattern(rand(1,npatterns))
    )

    which generates this

    in both above examples there is no need for the :body argument, because the for defaults to using the fourth argument as the body of the for-loop


    Anti-aliased fonts Want to play with anti-aliased fonts? First acquire, build, and install the Netpbm imaging utilities, then use the "import" command with a :popen flag as follows:

    import("pbmtext \"TEST STRING\" | pnmalias" :popen)

    ...or experiment with any other possible combination of Netbpm and Unix filters.


    To use the barplot command of comdraw you need these ivtools add-ons: plotmtv and pstoedit.


    ivtools drawing editors idraw drawtool comdraw flipbook graphdraw
    ivtools-doc/comterp.README.txt0000644000076500007650000002405607461321116017022 0ustar scottscott00000000000000NAME comterp - distributed command interpreter demonstrator SYNOPSIS comterp comterp remote comterp server 'portnum' comterp logger 'portnum' comterp client 'host' 'portnum' ['file'] comterp telcat 'host' 'portnum' ['file'] comterp run 'file' DESCRIPTION comterp demonstrates the command interpreter incorporated into ivtools. A user (or client program) can interact with comterp via stdin and stdout or telnet (when ACE is built in). The command syntax is a semi-colon separated list of commands with arbitrary number of parameters enclosed in parenthesis, with support for optional parameters and keyword arguments, i.e: command2(arg1 arg2 arg3 :key1 val1 :key2 val2); command1(arg1 arg2 arg3 :key1 val1 :key2 val2) C-like binary expressions can be embedded anywhere in the command language, using the operators in the table below. Variables can be created on the fly with an assignment operator (i.e "ball=1" creates a integer "ball" variable set to 1). Unterminated expressions cause an automatic command line extension (until the parser determines the expression is complete). "(), "{}", and "[]" can all be used interchangeably. COMMAND OPTIONS comterp Invoke a single command interpreter to interact with via stdin and stdout. comterp remote Invoke a single command interpreter, like the default, and include a remote command for accessing other comterp's in server mode. comterp server 'portnum' Listens for and accept connections on portnum, then setup a command interpreter to wait for and process commands from that connection. comterp logger 'portnum' Listens for and accept connections on portnum, then simply forward the incoming messages to stdout, while ack'ing back with newlines. For debugging purposes, not really a use of the interpreter. comterp client 'host' 'portnum' ['file'] Connect to a portnum on a host and send/receive new-line terminated text buffers. For debugging purposes, not really a use of the interpreter. comterp telcat 'host' 'portnum' ['file'] Connect to a portnum on a host, cat the file, then close the connection. Not really a use of the interpreter either. comterp run 'file' Run contents of file then exit. OPERATOR TABLE Operators Command Name Priority Order Type --------- ------------ -------- ----- ---- . dot 130 L-to-R binary ` bquote 125 R-to-L unary-prefix $ stream 125 R-to-L unary-prefix ! negate 110 R-to-L unary-prefix ~ bit_not 110 R-to-L unary-prefix ++ incr 110 R-to-L unary-prefix ++ incr_after 110 R-to-L unary-postfix - minus 110 R-to-L unary-prefix -- decr 110 R-to-L unary-prefix -- decr_after 110 R-to-L unary-postfix ** repeat 90 L-to-R binary .. iterate 80 L-to-R binary % mod 70 L-to-R binary * mpy 70 L-to-R binary / div 70 L-to-R binary + add 60 L-to-R binary - sub 60 L-to-R binary << lshift 55 L-to-R binary >> rshift 55 L-to-R binary < lt 50 L-to-R binary <= lt_or_eq 50 L-to-R binary > gt 50 L-to-R binary >= gt_or_eq 50 L-to-R binary != not_eq 45 L-to-R binary == eq 45 L-to-R binary & bit_and 44 L-to-R binary ^ bit_xor 43 L-to-R binary | bit_or 42 L-to-R binary && and 41 L-to-R binary || or 40 L-to-R binary , tuple 35 L-to-R binary ,, concat 33 L-to-R binary %= mod_assign 30 R-to-L binary *= mpy_assign 30 R-to-L binary += add_assign 30 R-to-L binary -= sub_assign 30 R-to-L binary /= div_assign 30 R-to-L binary = assign 30 R-to-L binary ; seq 10 L-to-R binary MATHEMATICAL COMMANDS: n=min(a b) -- return minimum of a and b n=max(a b) -- return maximum of a and b n=abs(a) -- return absolute value of a dbl=exp(x) -- returns the value e raised to the power of x dbl=log(x) -- returns the natural logarithm of x dbl=log10(x) -- returns the base-10 logarithm of x dbl=pow(x y) -- returns the value of x raised to the power of y dbl=acos(x) -- returns the arc cosine of x in radians dbl=asin(x) -- returns the arc sine of x in radians dbl=atan(x) -- returns the arc tangent of x in radians dbl=atan2(y x) -- returns the arc tangent of y over x dbl=cos(x) -- returns the cosine of x radians dbl=sin(x) -- returns the sine of x radians dbl=tan(x) -- returns the tangent of x radians dbl=sqrt(x) -- returns square root of x dbl=pi() -- returns the value of pi dbl=radtodeg(dbl) -- convert radians to degrees dbl=degtorad(dbl) -- convert degrees to radians num=floor(num) -- return closest integer value less than or equal to argument num=ceil(num) -- return closest integer value greater than or equal to argument num=round(num) -- return closest integer value AFFINE TRANSFORM AND MATRIX COMMANDS: point=xform(x,y a00,a01,a10,a11,a20,a21) -- affine transform of x,y coordinates affine=invert(a00,a01,a10,a11,a20,a21) -- invert affine transform matrix=xpose(matrix) -- transpose an arbitrary matrix matrix=matrix*matrix -- matrix multiplication STATISTICAL/RANDOM COMMANDS: val=sum(val1[,val2[,...,valn]]) -- return sum of values val=mean(val1[,val2[,...,valn]]) -- return mean of values val=var(val1[,val2[,...,valn]]) -- return variance of values val=stddev(val1[,val2[,...,valn]]) -- return standard deviation of values val=rand([minval,maxval]) -- return random number between 0 and 1 or minval,maxval srand(seedval) -- seed random number generator LIST COMMANDS: lst=list([olst|strm|val] :strmlst) -- create list, copy list, or convert stream val=at(list|attrlist n :set val ) -- return (or set) nth item in a list num=size(list|attrlist) -- return size of a list STREAM COMMANDS: val=next(strm) -- return next value from stream strm=stream(ostrm|list) -- copy stream or convert list cnt=each(strm) -- traverse the stream returning its length CONTROL COMMANDS (using post evaluation): val=cond(testexpr trueexpr falseexpr) -- evaluate testexpr, and if true, evaluate and return trueexpr, otherwise evaluate and return falseexpr val=if(testexpr :then expr :else expr) -- evaluate testexpr and execute the :then expression if true, the :else expression if false. val=for(initexpr whileexpr [nextexpr [bodyexpr]] :body expr) -- for loop val=while([testexpr [bodyexpr]] :nilchk :until :body expr ) -- while loop OTHER COMMANDS help(cmdname [cmdname ...] :all :posteval) -- help for commands val=trace([flag] :get) -- toggle or set trace mode [str]=print(fmtstr val :string|:str :err) -- print value with format string [str]=print(val :string|:str :err) -- print value with format string int|lst=symid(symbol [symbol ...]) -- return integer id(s) associated with symbol(s) sym|lst=symbol(symid [symid ...]) -- return symbol(s) associated with integer id(s) val|lst=symval(symbol [symbol ...]) -- return value(s) associated with symbol variables(s) sym|lst=symadd(symbol [symbol ...]) -- create symbol(s) and return without lookup. lst=split(symbol|string) -- split symbol or string into list of characters. str=join(clist :sym) -- join list of characters into string bool=eq(str1 str2 :n len) -- partial string comparison bool=eq(sym1 sym2 :sym) -- symbol comparison postfix(arg1 [arg2 [arg3 ... [argn]]]) -- echo unevaluated postfix arguments (with [narg|nkey] after defined commands, {narg|nkey} after undefined commands, (narg) after keys, and a * following post-evaluation commands) arr=posteval(arg1 [arg2 [arg3 ... [argn]]]) -- post-evaluate every fixed argument (until nil) and return array sym=attrname(attribute) -- return name field of dotted pair val=attrval(attribute) -- return value field of dotted pair dotlst=dot(name) -- construct empty dotted pair list quit() -- quit the interpreter exit() -- exit entire application val=run(filename) -- run commands from file val=remote(hoststr portnum cmdstr :nowait) -- remotely evaluate command string then locally evaluate result string val|lst=eval(cmdstr [cmdstr ...] :symret ) -- evaluate string as commands, optionally return symbol instead of nil val=shell(cmdstr) -- evaluate command in shell nil([...]) -- accept any arguments and return nil c=char(num) -- convert any numeric to a char s=short(num) -- convert any numeric to a short i=int(num) -- convert any numeric to an int l=long(num) -- convert any numeric to a long f=float(num) -- convert any numeric to a float d=double(num) -- convert any numeric to a double sym|lst=type(val [val ...]) -- return type symbol(s) for value(s) sym|lst=class(val [val ...]) -- return class symbol(s) for value(s) of object type ONLY IN SERVER MODE str=timeexpr(comstr :sec n) -- command string to execute at intervals SEE ALSO comdraw WEB PAGES http://www.ivtools.org/ivtools/comterp.html ivtools-doc/comterp.html0000644000076500007650000000403107433262401016202 0ustar scottscott00000000000000 comterp: a command interpreter and server written in C and C++

    comterp: a command interpreter and server written in C and C++

    comterp is a command interpreter written in C and C++ patterned after Fischer and LeBlanc's "Crafting a Compiler with C". Here is the man page for comterp.

    When built with ACE, comterp turns into a server that can listen for connection on a specified portnum and interpret command strings remotely. The C++ classes of the ComTerp library:

    Compiler/Interpreter Modules

  • Scanner: lexical scanner module
  • Parser: parser module
  • ComTerp: command interpreter module
  • ComTerpServ: command interpreter with server extensions
  • Other Objects

  • ComFunc: command primitive base class
  • ComValue: general interpreter value object
  • A starter kit for building your own custom comterp server is incorporated into ivtools within a tar file, comtop.tgz, that can be unpacked somewhere else and be built and ready with:
       "ivmkmf -a;make".

    Here is the README for that distribution. Here is an annotated sample derived class from the comtop distribution that illustrates how to create a new function for use within the comterp interpreter.

    comdraw is an evolved idraw with an embedded comterp with drawing editor commands.

    up to ivtools ivtools-doc/comtop-README.txt0000644000076500007650000000257507374262627016671 0ustar scottscott00000000000000I. This directory contains the starter files necessary for creating custom comterp servers: Imakefile file to convert to Makefile using "ivmkmf -a" main.cc simplified version of comterp's main.c, hardwired for server mode newfunc.h sample of a class derived from ComFunc newfunc.cc newhandler.h sample of a class derived from ComHandler newhandler.cc II. To build the sample program, set your CPU environment variable the same way you did for building ivtools (see http://www.vectaport.com/ivtools/ivtools-0.7-INSTALL.txt), then type: ivmkmf -a make The resultant program is in $CPU/a.out. III. To extend a comterp server with new functions (derived ComFunc's) is a two step process: 1) derive a new ComFunc -- NewFunc in newfunc.cc is an example of this. 2) derive a new ComHandler that adds new the function to the comterp server -- NewHandler in newhandler.cc (and its associated template class, NewAcceptor) is an example of this. IV. To add new arguments to a derived ComFunc is also a two step process (only the first is required to make it work): 1) add a new call to stack_arg or stack_key at the front of the ::execute method, before the call to reset stack. 2) add a description of the new argument to the ::docstring method. For further information on comterp programming see: http://www.vectaport.com/ivtools/comterp.html Vectaport Inc. Feb 1999 ivtools-doc/comunidrawinfo.html0000644000076500007650000000124507374262627017577 0ustar scottscott00000000000000 ComUnidraw

    ComUnidraw

    example application

    ComUnidraw is the class library that combines the capability of the OverlayUnidraw library with that of the ComTerp library. comdraw is the example program for the ComUnidraw library. Major classes:

  • ComEditor
  • UnidrawFunc

    back to ivtools technical info

    ivtools-doc/copyright.gif0000644000076500007650000000030207374262627016355 0ustar scottscott00000000000000GIF87a<,<#j}XHfHe&:˜Lr aq6$:>.aH@eZtڱ{L2 ?]A{ZrFcHsgUV&5T7RWw"੹qtEx4Bj*iAP;ivtools-doc/debian.gif0000644000076500007650000000630407374262627015577 0ustar scottscott00000000000000GIF89am$$$(((777;00@@@HHHPPPYYYaaahhhqqqyyy@UUU 7½ҶqݮI%G@"HOh9@@d#% @nXN k`9Gn @@dX(شjHFF"7 n}v|+;E^ 97_*'>L۪/d S/` 䣫 >żg8~t3mxAs{ .ę)h) \7PL6ї ]XT! L*JF݀!Aϑy3GRxPL$]qaVHWG tTAp^Da_ףA'|A\Ԣ|e"toc:$`! =`MF:[nV@uJ"\eyM5ƍ lܞ  0<@<B$-C@@  ,p5 0AT,AGm "DN?|/<݀&x "D`l D ,xB 0Q3є-ؐG^9@ho.dТ w @ Ny NG @W)H;_k0y B} S}=>cOA|C?AͼS/|G9O@~W90 w;NmC Xh X8຤/vsJg  `8~D/sE $&8ĝ] `,VhQNX,q` `ǀ0mi p9: #&*qP@zZ/ ( `1P">B`HDH\ƒ-}0"$&.|R`GLEh=iT^#" c7S Bls >BS F^NT$f=8ÏsH PL "; $ e aJP pQ 6ibGEgi)@ѢRL@? T'5ZiJ:@ĂT5hLz`Gy<ZH`L*DJB= 80, h`3f x8Ѓ@`10@@ ~ﱐ񄺺PL5$<?d8@* U/pis 4< Yʕ"=<ɭn&Oo[pÇthe#4Ry+s&$hXF<ĪjFZ xQS 8 [K'hS]`Zt C{>)3$ZvΘ)0B渁P`hG=BGP1=.*`@hLq(hȓ 98AK@w:McDdD@BU j6,4Vn̖k9 H9.xX@S)(CrDHEW   i.hNoB 4@<rd4 րTG^ﯨ[@:@ @;~u6S##ѦYw6l9jAF]u*r";h^pM񳝵j;h$vKqehd-~p31A-KؗD,@)tȴE=u H08h"{CC A@3 P7awdlՁ "8$X&x(*;ivtools-doc/debianlogo.drs0000644000076500007650000001116307374262627016502 0ustar scottscott00000000000000drawtool( raster("./debianlogo.ppm" :transform 1,0,0,1,257.5,452.5), picture( picture( arrowspline((523,718),(427,713),(391,580),(340,501),(348,345),(415,266),(454,219),(334,223) :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,193.75,311.375), arrowspline((633,652),(562,624),(608,545),(654,462),(644,383),(550,306) :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,193.75,311.375), arrowspline((524,719),(543,673),(631,652) :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,193.75,311.375), arrowspline((550,309),(411,285),(455,222),(599,218) :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,193.75,311.375) ), picture( arrowspline((523,718),(427,713),(391,580),(340,501),(348,345),(415,266),(454,219),(334,223) :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,193.75,311.375), arrowspline((633,652),(562,624),(608,545),(654,462),(644,383),(550,306) :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,193.75,311.375), arrowspline((524,719),(543,673),(631,652) :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,193.75,311.375), arrowspline((550,309),(411,285),(455,222),(599,218) :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,193.75,311.375) :transform 1,0,0,1,5.5,-7.25), arrowline(633,650,655,622 :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,193.5,311.875), arrowline(633,650,655,622 :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,145,212.375), arrowline(633,650,655,622 :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,166.5,328.5), arrowline(633,650,655,622 :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,118.875,204.625), arrowline(633,650,655,622 :arrowscale 4 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.25,-0,-0,0.25,158.5,272.5), arrowspline((470,639),(538,530),(526,463) :arrowscale 8 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.125,-0,-0,0.125,256.75,370), arrowspline((470,639),(538,530),(526,463) :arrowscale 8 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :nonepat :transform 0.125,-0,-0,0.125,251.25,377) :transform 1,0,0,1,6.5,117), picture( text(14,"Debian GNU/Linux" :fillbg 0 :fgcolor "Red",1,0,0 :font "-*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*","Helvetica-Bold",14 :transform 1,0,0,1,256.125,265.625), picture( ellipse(468,658,42,42 :fillbg 1 :nonebr :fgcolor "Blue",0,0,1 :bgcolor "White",1,1,1 :graypat 0 :transform 0.125,0,0,0.125,265.125,301.25), closedspline((150,490),(150,490),(152,492),(314,272),(300,103),(300,103),(298,102),(202,216),(202,216),(202,216),(232,334) :fillbg 1 :nonebr :fgcolor "Red",1,0,0 :bgcolor "White",1,1,1 :graypat 0 :transform 0.0625,0,0,0.0625,303,337.25), closedspline((95,-343),(95,-343),(95,-345),(139,-405),(140,-405),(139,-404),(291,-409),(385,-395),(143,-141),(171,175), (273,363),(339,577),(509,591),(512,590),(511,591),(555,509),(632,486),(632,487),(631,485),(556,438), (697,219),(751,23),(534,-178),(534,-178),(533,-177),(279,-218),(306,-287),(306,-287),(307,-289),(357,-351), (359,-351),(445,-403),(667,-412),(667,-411),(667,-411),(626,-351),(626,-351),(625,-351),(421,-349),(345,-313), (345,-312),(345,-312),(362,-273),(574,-236),(574,-236),(575,-237),(841,-7),(679,269),(601,403),(739,453), (739,454),(740,455),(697,513),(698,514),(697,514),(575,539),(533,569),(533,571),(479,647),(479,647), (477,647),(273,649),(193,335),(89,195),(139,-177),(367,-353) :fillbg 1 :nonebr :fgcolor "Red",1,0,0 :bgcolor "White",1,1,1 :graypat 0 :transform 0.125,-0,-0,0.125,264.375,326.125) ) ) ) ivtools-doc/doc/0000755000076500007650000000000010747654211014420 5ustar scottscott00000000000000ivtools-doc/doc/animatedgifs.gif0000644000076500007650000000376307374262634017561 0ustar scottscott00000000000000GIF87ab((6M Ͻ@nO9(a$H@*OB%G@"HOh9@@8f @% @@XcNXXvG XvnI @@ٴ. KjBk -]ɖ*b,ժK/jjW *P;,QZ@ Khx>[꯱Vr+1˭J{pm# [p;۾\rɝ9qA $3޲jв,kC2.=$:b|G;$.n q.}#'n}خ'CIR߹bzlebޖ7G9Wm PFi:L_)疛 zIy'F6ʬԢ;iZ㋻N>jN;O&"5?1NzmTA(9J>~sx0e|svG@8NNKw}4A~?*u3W@5qO` WB.u)_ O@^a'A7Yp=0& |XY? uc! 5 l"Ig}{`7Ƨ@*=|*!V,}SV$1:u<]cD6Qzm=8˅Z~ 1*:d JO#|4(AIU;*g):RL-iVk"0y %[1I!_2sk#4Uii"Ӓ|fn$ ;ivtools-doc/doc/animatedgifs.html0000644000076500007650000000126707374262634017755 0ustar scottscott00000000000000 Animated GIFs and ivtools drawing editors

    Animated GIFs and ivtools drawing editors

    Animated GIFs can be generated from the ivtools flipbook editor using the print dialog box with "pipe to command" checked and a command line for mkgif89a.bash filled in at the top. Do not supply the last argument, the filename, to mkgif89a, because that will be provided by the dialog box.


    up to things to do with ivtools drawing editors

    ivtools-doc/doc/classes/0000755000076500007650000000000011324451727016054 5ustar scottscott00000000000000ivtools-doc/doc/classes/.perceps0000644000076500007650000000004407512650734017517 0ustar scottscott00000000000000Last Build Tue Jul 9 13:44:05 2002 ivtools-doc/doc/classes/_ArrowData.html0000644000076500007650000000217411324451727020771 0ustar scottscott00000000000000 Description of _ArrowData

    class _ArrowData : public Data (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/_dmmwalk.html0000644000076500007650000000331211324451727020534 0ustar scottscott00000000000000 Description of _dmmwalk
    struct _dmmwalk (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComUtil/comutil.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/_oper_stack.html0000644000076500007650000000212011324451727021226 0ustar scottscott00000000000000 Description of _oper_stack
    struct _oper_stack (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComUtil/comterp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/_paren_stack.html0000644000076500007650000000342411324451727021376 0ustar scottscott00000000000000 Description of _paren_stack
    struct _paren_stack (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComUtil/comterp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/_XDisplay.html0000644000076500007650000000634711324451727020650 0ustar scottscott00000000000000 Description of _XDisplay
    struct _XDisplay (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/Xlib.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/_XDisplay____XContextDB.html0000644000076500007650000000106311324451727023335 0ustar scottscott00000000000000 Description of _XDisplay::_XContextDB
    class _XDisplay::_XContextDB (Return to index)

    Type:
      Instantiable

    Derived Classes

    (more documentation)

    ivtools-doc/doc/classes/_XDisplay____XDisplayAtoms.html0000644000076500007650000000107411324451727024116 0ustar scottscott00000000000000 Description of _XDisplay::_XDisplayAtoms
    class _XDisplay::_XDisplayAtoms (Return to index)

    Type:
      Instantiable

    Derived Classes

    (more documentation)

    ivtools-doc/doc/classes/_XDisplay____XExten.html0000644000076500007650000000104711324451727022570 0ustar scottscott00000000000000 Description of _XDisplay::_XExten
    class _XDisplay::_XExten (Return to index)

    Type:
      Instantiable

    Derived Classes

    (more documentation)

    ivtools-doc/doc/classes/_XDisplay____XFreeFuncs.html0000644000076500007650000000106311324451727023363 0ustar scottscott00000000000000 Description of _XDisplay::_XFreeFuncs
    class _XDisplay::_XFreeFuncs (Return to index)

    Type:
      Instantiable

    Derived Classes

    (more documentation)

    ivtools-doc/doc/classes/_XDisplay____XIMFilter.html0000644000076500007650000000106011324451727023153 0ustar scottscott00000000000000 Description of _XDisplay::_XIMFilter
    class _XDisplay::_XIMFilter (Return to index)

    Type:
      Instantiable

    Derived Classes

    (more documentation)

    ivtools-doc/doc/classes/_XDisplay____XKeytrans.html0000644000076500007650000000106011324451727023300 0ustar scottscott00000000000000 Description of _XDisplay::_XKeytrans
    class _XDisplay::_XKeytrans (Return to index)

    Type:
      Instantiable

    Derived Classes

    (more documentation)

    ivtools-doc/doc/classes/_XDisplay____XPrivate.html0000644000076500007650000000105511324451727023116 0ustar scottscott00000000000000 Description of _XDisplay::_XPrivate
    class _XDisplay::_XPrivate (Return to index)

    Type:
      Instantiable

    Derived Classes

    (more documentation)

    ivtools-doc/doc/classes/_XDisplay____XrmHashBucketRec.html0000644000076500007650000000110511324451727024512 0ustar scottscott00000000000000 Description of _XDisplay::_XrmHashBucketRec
    class _XDisplay::_XrmHashBucketRec (Return to index)

    Type:
      Instantiable

    Derived Classes

    (more documentation)

    ivtools-doc/doc/classes/_XDisplay____XSQEvent.html0000644000076500007650000000105511324451727023031 0ustar scottscott00000000000000 Description of _XDisplay::_XSQEvent
    class _XDisplay::_XSQEvent (Return to index)

    Type:
      Instantiable

    Derived Classes

    (more documentation)

    ivtools-doc/doc/classes/_xdllink.html0000644000076500007650000000210111324451727020540 0ustar scottscott00000000000000 Description of _xdllink
    struct _xdllink (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComUtil/comutil.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AboutCmd.html0000644000076500007650000000514211324451723020436 0ustar scottscott00000000000000 Description of AboutCmd
    class AboutCmd : public Command (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AbsFunc.html0000644000076500007650000000335111324451723020261 0ustar scottscott00000000000000 Description of AbsFunc
    class AbsFunc : public NumFunc (Return to index)

    absolute-value command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    n=abs(a) -- return absolute value of a.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AcceptingObservable.html0000644000076500007650000000260111324451723022637 0ustar scottscott00000000000000 Description of AcceptingObservable
    class AcceptingObservable : public Observable (Return to index)

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/observables.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ACE_IO_Handler.html0000644000076500007650000000631511324451723021357 0ustar scottscott00000000000000 Description of ACE_IO_Handler
    class ACE_IO_Handler : public ACE_Event_Handler (Return to index)

    Type:
      Instantiable

    Base Classes:
      public ACE_Event_Handler

    Derived Classes

    Include file:

      AceDispatch/ace_iohandler.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AceDispatcher.html0000644000076500007650000001055011324451723021436 0ustar scottscott00000000000000 Description of AceDispatcher
    class AceDispatcher : public Dispatcher (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      AceDispatch/ace_dispatcher.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AckBackHandler.html0000644000076500007650000001330711324451723021517 0ustar scottscott00000000000000 Description of AckBackHandler
    class AckBackHandler : public ACE_Event_Handler (Return to index)

    specialized ACE_EventHandler for monitoring responses from outgoing connection

    Type:
      Instantiable

    Base Classes:
      public ACE_Event_Handler

    Derived Classes

    Include file:

      DrawServ/ackback-handler.h

    Description:

    = Initialization and termination methods.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AcknowledgeBoxFunc.html0000644000076500007650000000354511324451723022455 0ustar scottscott00000000000000 Description of AcknowledgeBoxFunc
    class AcknowledgeBoxFunc : public UnidrawFunc (Return to index)

    command to popup an acknowledge dialog box

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/dialogfunc.h

    Description:

    acknowledgebox() -- popup an acknowledge dialog box

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AcknowledgeDialog.html0000644000076500007650000000352411324451723022305 0ustar scottscott00000000000000 Description of AcknowledgeDialog
    class AcknowledgeDialog : public BasicDialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/dialogs.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ACosFunc.html0000644000076500007650000000337211324451723020404 0ustar scottscott00000000000000 Description of ACosFunc
    class ACosFunc : public ComFunc (Return to index)

    arc-cosine command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=acos(x) -- returns the arc cosine of x in radians.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Action.html0000644000076500007650000000316011324451723020153 0ustar scottscott00000000000000 Description of Action
    class Action : public Resource (Return to index)

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      InterViews/action.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ActiveHandler.html0000644000076500007650000000541411324451723021453 0ustar scottscott00000000000000 Description of ActiveHandler
    class ActiveHandler : public InputHandler (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/input.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AddAssignFunc.html0000644000076500007650000000324611324451723021414 0ustar scottscott00000000000000 Description of AddAssignFunc
    class AddAssignFunc : public AssignFunc (Return to index)

    *= (add assign) operator .

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/assignfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AddFunc.html0000644000076500007650000000422211324451723020242 0ustar scottscott00000000000000 Description of AddFunc
    class AddFunc : public NumFunc (Return to index)

    + (plus) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    adds numerics and matrices, and concatenating strings

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AddToolButtonFunc.html0000644000076500007650000000360011324451723022273 0ustar scottscott00000000000000 Description of AddToolButtonFunc
    class AddToolButtonFunc : public UnidrawFunc (Return to index)

    command to add button to custom toolbar

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    compview=addtool(pathname) -- add button to toolbar based on zero-centered idraw drawing.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Adjustable.html0000644000076500007650000002071711324451723021023 0ustar scottscott00000000000000 Description of Adjustable
    class Adjustable (Return to index)

    handles request to modify its viewing editor.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/adjust.h

    Description:

    in reference manual.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Adjuster.html0000644000076500007650000001543011324451723020522 0ustar scottscott00000000000000 Description of Adjuster
    class Adjuster : public Interactor (Return to index)

    manipulate a perspective using a pushbutton like interface (iv-2.6).

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/adjuster.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Aggregate.html0000644000076500007650000001345611324451723020635 0ustar scottscott00000000000000 Description of Aggregate
    class Aggregate : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/aggr.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Align.html0000644000076500007650000000441411324451723017773 0ustar scottscott00000000000000 Description of Align
    class Align : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/align.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AlignCmd.html0000644000076500007650000000752511324451723020425 0ustar scottscott00000000000000 Description of AlignCmd
    class AlignCmd : public Command (Return to index)

    align command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/align.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AlignToGridCmd.html0000644000076500007650000000775311324451723021541 0ustar scottscott00000000000000 Description of AlignToGridCmd
    class AlignToGridCmd : public Command (Return to index)

    align-to-grid command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/align.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AList.html0000644000076500007650000001227611324451723017762 0ustar scottscott00000000000000 Description of AList
    class AList (Return to index)

    copy of UList for using Attribute library without Unidraw.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/alist.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AlistLeakFunc.html0000644000076500007650000000353611324451723021432 0ustar scottscott00000000000000 Description of AlistLeakFunc
    class AlistLeakFunc : public ComFunc (Return to index)

    command to return current number of AttributeValueList's

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    alistleak() -- current number of AttributeValueList's

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ALIterator.html0000644000076500007650000000465311324451723020754 0ustar scottscott00000000000000 Description of ALIterator
    class ALIterator (Return to index)

    copy of Iterator for using Attribute library without Unidraw.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/aliterator.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Allocation.html0000644000076500007650000001310411324451723021022 0ustar scottscott00000000000000 Description of Allocation
    class Allocation (Return to index)

    actual size a glyph is given.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/geometry.h

    Description:

    in reference manual.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AllocationInfo.html0000644000076500007650000000527511324451723021650 0ustar scottscott00000000000000 Description of AllocationInfo
    class AllocationInfo (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/alloctbl.h

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/AllocationTable.html0000644000076500007650000000612711324451723022001 0ustar scottscott00000000000000 Description of AllocationTable
    class AllocationTable (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/alloctbl.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Allotment.html0000644000076500007650000000713211324451723020700 0ustar scottscott00000000000000 Description of Allotment
    class Allotment (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/geometry.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AlphaTransFunc.html0000644000076500007650000000353511324451723021615 0ustar scottscott00000000000000 Description of AlphaTransFunc
    class AlphaTransFunc : public UnidrawFunc (Return to index)

    command to set/get raster alpha transparency

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/pixelfunc.h

    Description:

    alpha(compview [alphaval]) -- set/get alpha transparency value

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AlphaTransparentRasterCmd.html0000644000076500007650000000664211324451723024022 0ustar scottscott00000000000000 Description of AlphaTransparentRasterCmd
    class AlphaTransparentRasterCmd : public Command (Return to index)

    command to make raster alpha-transparent

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/rastercmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AndFunc.html0000644000076500007650000000316211324451723020256 0ustar scottscott00000000000000 Description of AndFunc
    class AndFunc : public NumFunc (Return to index)

    && (and) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/boolfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AnnotateDialog.html0000644000076500007650000000467511324451723021643 0ustar scottscott00000000000000 Description of AnnotateDialog
    class AnnotateDialog : public Dialog (Return to index)

    dialog for entering component annotation string.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovgdialog.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AnnotateTool.html0000644000076500007650000000650311324451723021351 0ustar scottscott00000000000000 Description of AnnotateTool
    class AnnotateTool : public Tool (Return to index)

    tool for annotating a component (adding a descriptive string).

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/annotate.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ApplicationWindow.html0000644000076500007650000000503611324451723022375 0ustar scottscott00000000000000 Description of ApplicationWindow
    class ApplicationWindow : public ManagedWindow (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/window.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ArrayCompositor.html0000644000076500007650000000415711324451723022102 0ustar scottscott00000000000000 Description of ArrayCompositor
    class ArrayCompositor : public Compositor (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/arraycomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/arrayval_struct.html0000644000076500007650000000244711324451727022176 0ustar scottscott00000000000000 Description of arrayval_struct
    struct arrayval_struct (Return to index)

    pointer to list of values, plus optional type id.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/attrvalue.h

    Description:

    used in attr_value.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowCmd.html0000644000076500007650000000600111324451723020451 0ustar scottscott00000000000000 Description of ArrowCmd
    class ArrowCmd : public Command (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Arrowhead.html0000644000076500007650000001065611324451723020662 0ustar scottscott00000000000000 Description of Arrowhead
    class Arrowhead : public SF_Polygon (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrowhead.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ArrowLine.html0000644000076500007650000002405611324451723020647 0ustar scottscott00000000000000 Description of ArrowLine
    class ArrowLine : public Line (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrows.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ArrowLineComp.html0000644000076500007650000000675511324451723021474 0ustar scottscott00000000000000 Description of ArrowLineComp
    class ArrowLineComp : public LineComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowLineOvComp.html0000644000076500007650000001251211324451723021765 0ustar scottscott00000000000000 Description of ArrowLineOvComp
    class ArrowLineOvComp : public LineOvComp (Return to index)

    clone of ArrowLineComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ArrowLineOvView.html0000644000076500007650000000540211324451723022001 0ustar scottscott00000000000000 Description of ArrowLineOvView
    class ArrowLineOvView : public LineOvView (Return to index)

    graphical view of ArrowLineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowLinePS.html0000644000076500007650000000465111324451723021111 0ustar scottscott00000000000000 Description of ArrowLinePS
    class ArrowLinePS : public LinePS (Return to index)

    "PostScript" view of ArrowLineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowLineScript.html0000644000076500007650000000727411324451723022037 0ustar scottscott00000000000000 Description of ArrowLineScript
    class ArrowLineScript : public LineScript (Return to index)

    serialized view of ArrowLineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowLineView.html0000644000076500007650000000500111324451723021467 0ustar scottscott00000000000000 Description of ArrowLineView
    class ArrowLineView : public LineView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowMultiLine.html0000644000076500007650000002165311324451723021662 0ustar scottscott00000000000000 Description of ArrowMultiLine
    class ArrowMultiLine : public SF_MultiLine (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrows.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ArrowMultiLineComp.html0000644000076500007650000000707511324451723022503 0ustar scottscott00000000000000 Description of ArrowMultiLineComp
    class ArrowMultiLineComp : public MultiLineComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowMultiLineOvComp.html0000644000076500007650000001270711324451723023006 0ustar scottscott00000000000000 Description of ArrowMultiLineOvComp
    class ArrowMultiLineOvComp : public MultiLineOvComp (Return to index)

    clone of ArrowMultiLineComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ArrowMultiLineOvView.html0000644000076500007650000000553411324451723023022 0ustar scottscott00000000000000 Description of ArrowMultiLineOvView
    class ArrowMultiLineOvView : public MultiLineOvView (Return to index)

    graphical view of ArrowMultiLineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowMultiLinePS.html0000644000076500007650000000474011324451723022123 0ustar scottscott00000000000000 Description of ArrowMultiLinePS
    class ArrowMultiLinePS : public MultiLinePS (Return to index)

    "PostScript" view of ArrowMultiLineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowMultiLineScript.html0000644000076500007650000001014011324451723023034 0ustar scottscott00000000000000 Description of ArrowMultiLineScript
    class ArrowMultiLineScript : public MultiLineScript (Return to index)

    serialized view of ArrowMultiLineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ArrowMultiLineView.html0000644000076500007650000000512111324451723022505 0ustar scottscott00000000000000 Description of ArrowMultiLineView
    class ArrowMultiLineView : public MultiLineView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowOpenBSpline.html0000644000076500007650000002172311324451723022134 0ustar scottscott00000000000000 Description of ArrowOpenBSpline
    class ArrowOpenBSpline : public SFH_OpenBSpline (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrows.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ArrowSplineComp.html0000644000076500007650000000706011324451723022025 0ustar scottscott00000000000000 Description of ArrowSplineComp
    class ArrowSplineComp : public SplineComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowSplineOvComp.html0000644000076500007650000001263711324451723022340 0ustar scottscott00000000000000 Description of ArrowSplineOvComp
    class ArrowSplineOvComp : public SplineOvComp (Return to index)

    clone of ArrowSplineComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ArrowSplineOvView.html0000644000076500007650000000544611324451723022354 0ustar scottscott00000000000000 Description of ArrowSplineOvView
    class ArrowSplineOvView : public SplineOvView (Return to index)

    graphical view of ArrowSplineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowSplinePS.html0000644000076500007650000000463111324451723021452 0ustar scottscott00000000000000 Description of ArrowSplinePS
    class ArrowSplinePS : public SplinePS (Return to index)

    "PostScript" view of ArrowSplineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowSplineScript.html0000644000076500007650000001002011324451723022361 0ustar scottscott00000000000000 Description of ArrowSplineScript
    class ArrowSplineScript : public SplineScript (Return to index)

    serialized view of ArrowSplineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovarrow.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ArrowSplineView.html0000644000076500007650000000504111324451723022036 0ustar scottscott00000000000000 Description of ArrowSplineView
    class ArrowSplineView : public SplineView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ArrowSubclassName.html0000644000076500007650000000147311324451723022336 0ustar scottscott00000000000000 Description of ArrowSubclassName
    class ArrowSubclassName : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/stepper.h

    (more documentation)

    ivtools-doc/doc/classes/ArrowVar.html0000644000076500007650000000732111324451723020504 0ustar scottscott00000000000000 Description of ArrowVar
    class ArrowVar : public StateVar (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idvars.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ArrowVarView.html0000644000076500007650000000643411324451723021343 0ustar scottscott00000000000000 Description of ArrowVarView
    class ArrowVarView : public StateVarView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idvars.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ASinFunc.html0000644000076500007650000000336611324451723020414 0ustar scottscott00000000000000 Description of ASinFunc
    class ASinFunc : public ComFunc (Return to index)

    arc-sine command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=asin(x) -- returns the arc sine of x in radians.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AssignFunc.html0000644000076500007650000000425611324451723021005 0ustar scottscott00000000000000 Description of AssignFunc
    class AssignFunc : public ComFunc (Return to index)

    = (assign) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/assignfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ATan2Func.html0000644000076500007650000000341611324451723020463 0ustar scottscott00000000000000 Description of ATan2Func
    class ATan2Func : public ComFunc (Return to index)

    arc-tangent (of y over x) command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=atan2(y x) -- returns the arc tangent of y over x.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ATanFunc.html0000644000076500007650000000337411324451723020404 0ustar scottscott00000000000000 Description of ATanFunc
    class ATanFunc : public ComFunc (Return to index)

    arc-tangent command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=atan(x) -- returns the arc tangent of x in radians.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/attr_value.html0000644000076500007650000001012011324451727021102 0ustar scottscott00000000000000 Description of attr_value
    union attr_value (Return to index)

    union for AttributeValue typed data storage.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/attrvalue.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AttrDialog.html0000644000076500007650000001075111324451723020774 0ustar scottscott00000000000000 Description of AttrDialog
    class AttrDialog : public TerpDialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComGlyph/attrdialog.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AttrDialogImpl.html0000644000076500007650000001136611324451723021621 0ustar scottscott00000000000000 Description of AttrDialogImpl
    class AttrDialogImpl : public TerpDialogImpl (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComGlyph/attrdialog.h

    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/Attribute.html0000644000076500007650000001220211324451723020676 0ustar scottscott00000000000000 Description of Attribute
    class Attribute (Return to index)

    generic symbol/value pair.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/attribute.h

    Description:

    Attribute consists of a symbol, represented by its index into a symbol table, paired with a value, represented by an AttributeValue. Memory for the AttributeValue is owned by the Attribute.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/AttributeDialog.html0000644000076500007650000000314011324451723022017 0ustar scottscott00000000000000 Description of AttributeDialog
    class AttributeDialog : public Dialog (Return to index)

    dialog for editing component attributes (property list).

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovgdialog.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AttributeList.html0000644000076500007650000003710011324451723021536 0ustar scottscott00000000000000 Description of AttributeList
    class AttributeList : public Resource (Return to index)

    list of Attribute objects, i.e. a property list.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Attribute/attrlist.h

    Description:

    An AttributeList is derived from Resource, so it is a reference-counted object that can be freely shared between other objects. An AttributeList assumes responsibility for the memory of its member Attribute objects, which in turn assume responsibility for the memory of their member AttributeValue objects.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/AttributeListEditor.html0000644000076500007650000001133711324451723022711 0ustar scottscott00000000000000 Description of AttributeListEditor
    class AttributeListEditor : public Patch (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      AttrGlyph/attredit.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AttributeTool.html0000644000076500007650000000643711324451723021551 0ustar scottscott00000000000000 Description of AttributeTool
    class AttributeTool : public Tool (Return to index)

    tool for editing attributes of a component (property list editing).

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/attrtool.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AttributeValue.html0000644000076500007650000012475311324451723021712 0ustar scottscott00000000000000 Description of AttributeValue
    class AttributeValue (Return to index)

    multi-type attribute value object.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/attrvalue.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/AttributeValue::NONAME.html0000644000076500007650000000276107374262635023002 0ustar scottscott00000000000000 Description of AttributeValue::NONAME
    union AttributeValue::NONAME (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/attrvalue.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AttributeValue___NONAME.html0000644000076500007650000000341311324451723023232 0ustar scottscott00000000000000 Description of AttributeValue::NONAME
    union AttributeValue::NONAME (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/attrvalue.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AttributeValueList.html0000644000076500007650000003230011324451723022530 0ustar scottscott00000000000000 Description of AttributeValueList
    class : public Resource (Return to index)

    Unidraw specialized for DrawServ

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawserv.h

    Description:

    Unidraw (OverlayUnidraw) specialized for DrawServ application. Networked application of the Unidraw framework.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/AttrListFunc.html0000644000076500007650000000607011324451723021323 0ustar scottscott00000000000000 Description of AttrListFunc
    class AttrListFunc : public ComFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/slctbyattr.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AttrvLeakFunc.html0000644000076500007650000000351611324451723021454 0ustar scottscott00000000000000 Description of AttrvLeakFunc
    class AttrvLeakFunc : public ComFunc (Return to index)

    command to return current number of AttributeValue's

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    attrvleak() -- current number of AttributeValue's

    Public:



    (more documentation)

    ivtools-doc/doc/classes/AutoNewFrameCmd.html0000644000076500007650000001016211324451723021717 0ustar scottscott00000000000000 Description of AutoNewFrameCmd
    class AutoNewFrameCmd : public MacroCmd (Return to index)

    command to enable/disable auto-new-frame on import.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/AutoNewFrameFunc.html0000644000076500007650000000356311324451723022116 0ustar scottscott00000000000000 Description of AutoNewFrameFunc
    class AutoNewFrameFunc : public UnidrawFunc (Return to index)

    interpreter command to toggle the autonewframe flag

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framefunc.h

    Description:

    autonewframe(:on :off) -- command to toggle the autonewframe flag

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BackCmd.html0000644000076500007650000000531011324451723020221 0ustar scottscott00000000000000 Description of BackCmd
    class BackCmd : public Command (Return to index)

    move-to-back command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/struct.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Background.html0000644000076500007650000000512611324451723021021 0ustar scottscott00000000000000 Description of Background
    class Background : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/background.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BackQuoteFunc.html0000644000076500007650000000362411324451723021435 0ustar scottscott00000000000000 Description of BackQuoteFunc
    class BackQuoteFunc : public ComFunc (Return to index)

    backquote operator, similar to LISP

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/bquotefunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Banner.html0000644000076500007650000001121111324451723020137 0ustar scottscott00000000000000 Description of Banner
    class Banner : public Interactor (Return to index)

    one line title bar (iv-2.6

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/banner.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/BarPlotFunc.html0000644000076500007650000000365711324451723021130 0ustar scottscott00000000000000 Description of BarPlotFunc
    class BarPlotFunc : public UnidrawFunc (Return to index)

    command to plot a barchart in comdraw using plotmtv/pstoedit

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/plotfunc.h

    Description:

    barplot([var_str value_float] [...] :title title_str :xtitle xtitle_str :ytitle ytitle_str :valtitle valtitle_str :newview) -- display a barplot

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BasicDialog.html0000644000076500007650000000734011324451723021103 0ustar scottscott00000000000000 Description of BasicDialog
    class BasicDialog : public Dialog (Return to index)

    base class for simple, common dialog boxes (Unidraw).

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/dialogs.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Bevel.html0000644000076500007650000001451311324451723017777 0ustar scottscott00000000000000 Description of Bevel
    class Bevel : public BevelFrame (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/bevel.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BevelFrame.html0000644000076500007650000000760411324451723020755 0ustar scottscott00000000000000 Description of BevelFrame
    class BevelFrame : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/bevel.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BitAndFunc.html0000644000076500007650000000320311324451723020711 0ustar scottscott00000000000000 Description of BitAndFunc
    class BitAndFunc : public NumFunc (Return to index)

    & (bit_and) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/bitfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Bitmap.html0000644000076500007650000002343311324451723020157 0ustar scottscott00000000000000 Description of Bitmap
    class Bitmap : public Resource (Return to index)

    binary raster data object.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/bitmap.h

    Description:

    in reference manual

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/BitmapRep.html0000644000076500007650000001112511324451723020621 0ustar scottscott00000000000000 Description of BitmapRep
    class BitmapRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xbitmap.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BitNotFunc.html0000644000076500007650000000320311324451723020747 0ustar scottscott00000000000000 Description of BitNotFunc
    class BitNotFunc : public NumFunc (Return to index)

    ~ (bit_not) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/bitfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BitOrFunc.html0000644000076500007650000000317511324451723020577 0ustar scottscott00000000000000 Description of BitOrFunc
    class BitOrFunc : public NumFunc (Return to index)

    | (bit_or) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/bitfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BitXorFunc.html0000644000076500007650000000320311324451723020757 0ustar scottscott00000000000000 Description of BitXorFunc
    class BitXorFunc : public NumFunc (Return to index)

    ^ (bit_xor) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/bitfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BooleanObserver.html0000644000076500007650000000462111324451723022030 0ustar scottscott00000000000000 Description of BooleanObserver
    class BooleanObserver : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/boolform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Border.html0000644000076500007650000000501111324451723020150 0ustar scottscott00000000000000 Description of Border
    class Border : public Interactor (Return to index)

    infinitely stretchable dividing line (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/border.h

    Description:

    man page

    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Border__2.html0000644000076500007650000000566711324451723020551 0ustar scottscott00000000000000 Description of Border__2
    class Border__2 : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/border.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BorderFrame.html0000644000076500007650000000473511324451723021137 0ustar scottscott00000000000000 Description of BorderFrame
    class BorderFrame : public ShowFrame (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/frame.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/BothSetAttrFunc.html0000644000076500007650000000411011324451723021751 0ustar scottscott00000000000000 Description of BothSetAttrFunc
    class BothSetAttrFunc : public AttrListFunc (Return to index)

    interpreter command for plugging together AttrDialog and SetAttrByExprCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/setattrbyexpr.h

    Description:

    interpreter command used to do nothing whether the attribute expression evalutes to true or false, because the assignment of values by interpreting assignment commands has already occurred.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BoundedValue.html0000644000076500007650000002142011324451723021312 0ustar scottscott00000000000000 Description of BoundedValue
    class BoundedValue : public Adjustable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/bdvalue.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/BoundedValueEditor.html0000644000076500007650000000451211324451723022464 0ustar scottscott00000000000000 Description of BoundedValueEditor
    class BoundedValueEditor : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/bdfltform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/BoundedValueObserver.html0000644000076500007650000000464011324451723023027 0ustar scottscott00000000000000 Description of BoundedValueObserver
    class BoundedValueObserver : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/bdfltform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/BoundedValueTable.html0000644000076500007650000000735111324451723022271 0ustar scottscott00000000000000 Description of BoundedValueTable
    class BoundedValueTable : public ObservableEnum, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/bdtable.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/BoundedValueTableEditor.html0000644000076500007650000000716411324451723023442 0ustar scottscott00000000000000 Description of BoundedValueTableEditor
    class BoundedValueTableEditor : public Patch, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/bdtable.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Box.html0000644000076500007650000001113511324451723017467 0ustar scottscott00000000000000 Description of Box
    class Box : public Scene (Return to index)

    used to compose side-by-side (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/box.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Box__2.html0000644000076500007650000001215411324451723020051 0ustar scottscott00000000000000 Description of Box__2
    class Box__2 : public PolyGlyph (Return to index)

    box glyph base class

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/box.h

    Description:

    in reference manual

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BoxObj.html0000644000076500007650000000677311324451723020136 0ustar scottscott00000000000000 Description of BoxObj
    class BoxObj (Return to index)

    box geometric object

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Graphic/geomobjs.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Browser.html0000644000076500007650000001235311324451723020365 0ustar scottscott00000000000000 Description of Browser
    class Browser : public InputHandler, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/browser.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Brush.html0000644000076500007650000000771211324451723020030 0ustar scottscott00000000000000 Description of Brush
    class Brush : public Resource (Return to index)

    a brush style object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/brush.h

    Description:

    defines the line thickness and line style for drawing operations.

    in reference manual.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/BrushCmd.html0000644000076500007650000000731111324451723020447 0ustar scottscott00000000000000 Description of BrushCmd
    class BrushCmd : public Command (Return to index)

    command to change brush of editor and current selection

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/brushcmd.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/BrushFunc.html0000644000076500007650000000347711324451723020650 0ustar scottscott00000000000000 Description of BrushFunc
    class BrushFunc : public UnidrawFunc (Return to index)

    command for setting brush state variable in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    brush(brushnum) -- set current brush from menu order

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BrushRep.html0000644000076500007650000000245011324451723020471 0ustar scottscott00000000000000 Description of BrushRep
    class BrushRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xbrush.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/BrushVar.html0000644000076500007650000000760311324451723020500 0ustar scottscott00000000000000 Description of BrushVar
    class BrushVar : public StateVar (Return to index)

    current brush state variable

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/statevars.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/BrushVarView.html0000644000076500007650000000556311324451723021336 0ustar scottscott00000000000000 Description of BrushVarView
    class BrushVarView : public StateVarView (Return to index)

    current-brush state variable view

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/stateviews.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Button.html0000644000076500007650000001317411324451723020217 0ustar scottscott00000000000000 Description of Button
    class Button : public Interactor (Return to index)

    button object (iv-2_6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/button.h

    Description:

    A button is a view of some value that is normally set when the button is pressed.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Button__2.html0000644000076500007650000001001511324451723020566 0ustar scottscott00000000000000 Description of Button__2
    class Button__2 : public ActiveHandler, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/button.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ButtonState.html0000644000076500007650000000705311324451723021217 0ustar scottscott00000000000000 Description of ButtonState
    class ButtonState : public Subject (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/button.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CameraMotionCmd.html0000644000076500007650000000375011324451723021745 0ustar scottscott00000000000000 Description of CameraMotionCmd
    class CameraMotionCmd : public Command (Return to index)

    base class for pan and zoom commands.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcamcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Canvas.html0000644000076500007650000003777411324451723020173 0ustar scottscott00000000000000 Description of Canvas
    class Canvas (Return to index)

    2d area for drawing.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/canvas.h

    Description:

    in reference manual

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CanvasDamage.html0000644000076500007650000000243711324451723021256 0ustar scottscott00000000000000 Description of CanvasDamage
    class CanvasDamage (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xcanvas.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CanvasRep.html0000644000076500007650000002656611324451723020637 0ustar scottscott00000000000000 Description of CanvasRep
    class CanvasRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xcanvas.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Catalog.html0000644000076500007650000011604211324451723020314 0ustar scottscott00000000000000 Description of Catalog
    class Catalog (Return to index)

    stores and retrieves named objects.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/catalog.h

    Description:

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/CeilFunc.html0000644000076500007650000000341711324451723020433 0ustar scottscott00000000000000 Description of CeilFunc
    class CeilFunc : public NumFunc (Return to index)

    ceiling command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    num=ceil(num) -- return closest integer value greater than or equal to argument

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CenterCmd.html0000644000076500007650000000533111324451723020604 0ustar scottscott00000000000000 Description of CenterCmd
    class CenterCmd : public Command (Return to index)

    center command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/viewcmds.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CenterFunc.html0000644000076500007650000000353411324451723020777 0ustar scottscott00000000000000 Description of CenterFunc
    class CenterFunc : public UnidrawFunc (Return to index)

    command to return center of graphics in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grstatfunc.h

    Description:

    xylist=center(compview :xy :yx :x :y :scrn) -- center of compview (dflt :xy)

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CenterLayout.html0000644000076500007650000000457711324451723021371 0ustar scottscott00000000000000 Description of CenterLayout
    class CenterLayout : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/place.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CGlue.html0000644000076500007650000000624211324451723017741 0ustar scottscott00000000000000 Description of CGlue
    class CGlue (Return to index)

    connector glue for specifying connection behavior

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Components/cglue.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ChainViewerCmd.html0000644000076500007650000001000611324451723021563 0ustar scottscott00000000000000 Description of ChainViewerCmd
    class ChainViewerCmd : public Command (Return to index)

    command to add this viewer to list of chained viewers.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovchainview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ChainViewersCmd.html0000644000076500007650000001065511324451723021760 0ustar scottscott00000000000000 Description of ChainViewersCmd
    class ChainViewersCmd : public Command (Return to index)

    command to chain other viewers to this one under panning and/or zooming.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovchainview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ChangeIdFunc.html0000644000076500007650000000360111324451723021214 0ustar scottscott00000000000000 Description of ChangeIdFunc
    class ChangeIdFunc : public UnidrawFunc (Return to index)

    command to change session (or graphic id) to use local session id

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawfunc.h

    Description:

    chgid(id) -- command to change session (or graphic id) to use local session id

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Character.html0000644000076500007650000000627711324451723020646 0ustar scottscott00000000000000 Description of Character
    class Character : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/character.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CharFieldEditor.html0000644000076500007650000000442211324451723021730 0ustar scottscott00000000000000 Description of CharFieldEditor
    class CharFieldEditor : public FieldEditor (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/charfield.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CharFunc.html0000644000076500007650000000337211324451723020434 0ustar scottscott00000000000000 Description of CharFunc
    class CharFunc : public ComFunc (Return to index)

    character conversion command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    c=char(num) -- convert any numeric to a char.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CheckBooleanEditor.html0000644000076500007650000000522311324451723022424 0ustar scottscott00000000000000 Description of CheckBooleanEditor
    class CheckBooleanEditor : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/boolform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CheckBox.html0000644000076500007650000000767111324451723020437 0ustar scottscott00000000000000 Description of CheckBox
    class CheckBox : public TextButton (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/button.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ChoiceItem.html0000644000076500007650000000746411324451723020762 0ustar scottscott00000000000000 Description of ChoiceItem
    class ChoiceItem : public Telltale (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/choice.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Circle31.html0000644000076500007650000000403211324451723020302 0ustar scottscott00000000000000 Description of Circle31
    class Circle31 : public Graphic31 (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ClassSymbolFunc.html0000644000076500007650000000344611324451723022014 0ustar scottscott00000000000000 Description of ClassSymbolFunc
    class ClassSymbolFunc : public ComFunc (Return to index)

    command to return class symbols for values of object type

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/typefunc.h

    Description:

    sym|lst=type(val [val ...]) -- return type symbol(s) for value(s)

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Clipboard.html0000644000076500007650000001775411324451723020653 0ustar scottscott00000000000000 Description of Clipboard
    class Clipboard (Return to index)

    contains a list of component subjects

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/clipboard.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ClipPolyAAndBCmd.html0000644000076500007650000000545711324451723021756 0ustar scottscott00000000000000 Description of ClipPolyAAndBCmd
    class ClipPolyAAndBCmd : public MacroCmd (Return to index)

    command to intersect two polygons.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovclip.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ClipPolyAMinusBCmd.html0000644000076500007650000000553311324451723022342 0ustar scottscott00000000000000 Description of ClipPolyAMinusBCmd
    class ClipPolyAMinusBCmd : public MacroCmd (Return to index)

    command to clip polygon A with polygon B.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovclip.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ClipPolyBMinusACmd.html0000644000076500007650000000553411324451723022343 0ustar scottscott00000000000000 Description of ClipPolyBMinusACmd
    class ClipPolyBMinusACmd : public MacroCmd (Return to index)

    command to clip polygon B with polygon A.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovclip.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ClipPolyCmd.html0000644000076500007650000000707111324451723021122 0ustar scottscott00000000000000 Description of ClipPolyCmd
    class ClipPolyCmd : public MacroCmd (Return to index)

    command for clipping arbitrary graphics with a polygon.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovclip.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ClipPolyTool.html0000644000076500007650000000556711324451723021344 0ustar scottscott00000000000000 Description of ClipPolyTool
    class ClipPolyTool : public Tool (Return to index)

    tool for clipping arbitrary graphics with a polygon.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovclip.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ClipRectCmd.html0000644000076500007650000000631711324451723021076 0ustar scottscott00000000000000 Description of ClipRectCmd
    class ClipRectCmd : public MacroCmd (Return to index)

    command for clipping arbitrary graphics with a rectangle.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovclip.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ClipRectTool.html0000644000076500007650000000557511324451723021315 0ustar scottscott00000000000000 Description of ClipRectTool
    class ClipRectTool : public Tool (Return to index)

    tool for clipping arbitrary graphics with a rectangle.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovclip.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Closed_BSpline31.html0000644000076500007650000000462711324451723021740 0ustar scottscott00000000000000 Description of Closed_BSpline31
    class Closed_BSpline31 : public Graphic31 (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ClosedBSpline.html0000644000076500007650000000540411324451723021427 0ustar scottscott00000000000000 Description of ClosedBSpline
    class ClosedBSpline : public Vertices (Return to index)

    closed b-spline graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/splines.h

    Description:

    man page

    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ClosedSplineComp.html0000644000076500007650000000537111324451723022147 0ustar scottscott00000000000000 Description of ClosedSplineComp
    class ClosedSplineComp : public VerticesComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/spline.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ClosedSplineOvComp.html0000644000076500007650000001064711324451723022456 0ustar scottscott00000000000000 Description of ClosedSplineOvComp
    class ClosedSplineOvComp : public VerticesOvComp (Return to index)

    clone of ClosedSplineComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovspline.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ClosedSplineOvView.html0000644000076500007650000000667311324451723022476 0ustar scottscott00000000000000 Description of ClosedSplineOvView
    class ClosedSplineOvView : public VerticesOvView (Return to index)

    graphic view of ClosedSplineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovspline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ClosedSplinePS.html0000644000076500007650000000423011324451723021564 0ustar scottscott00000000000000 Description of ClosedSplinePS
    class ClosedSplinePS : public VerticesPS (Return to index)

    "PostScript" view of ClosedSplineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovspline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ClosedSplineScript.html0000644000076500007650000000525111324451723022512 0ustar scottscott00000000000000 Description of ClosedSplineScript
    class ClosedSplineScript : public VerticesScript (Return to index)

    serialized view of ClosedSplineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovspline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ClosedSplineView.html0000644000076500007650000000624411324451723022163 0ustar scottscott00000000000000 Description of ClosedSplineView
    class ClosedSplineView : public VerticesView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/spline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CloseEditorCmd.html0000644000076500007650000000540211324451723021577 0ustar scottscott00000000000000 Description of CloseEditorCmd
    class CloseEditorCmd : public Command (Return to index)

    editor close command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/viewcmds.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Color.html0000644000076500007650000001660611324451723020025 0ustar scottscott00000000000000 Description of Color
    class Color : public Resource (Return to index)

    an RGB-alpha color object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/color.h

    Description:

    defines an output color, which is specified by a mix of RGB (red, green, and blue) intensities, and an alpha value for blending

    in reference manual.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ColorCmd.html0000644000076500007650000001020011324451723020431 0ustar scottscott00000000000000 Description of ColorCmd
    class ColorCmd : public Command (Return to index)

    command to change color of current selection and editor

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/colorcmd.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ColorData.html0000644000076500007650000000303011324451723020602 0ustar scottscott00000000000000 Description of ColorData
    class ColorData : public Data (Return to index)

    color data for command undo

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/datas.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ColorFunc.html0000644000076500007650000000351711324451723020636 0ustar scottscott00000000000000 Description of ColorFunc
    class ColorFunc : public UnidrawFunc (Return to index)

    command for setting color state variables in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    colors(fgcolornum bgcolornum) -- set current colors from menu order

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ColorRep.html0000644000076500007650000000276211324451723020472 0ustar scottscott00000000000000 Description of ColorRep
    class ColorRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xcolor.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ColorRgbFunc.html0000644000076500007650000000355311324451723021271 0ustar scottscott00000000000000 Description of ColorRgbFunc
    class ColorRgbFunc : public UnidrawFunc (Return to index)

    comand for setting color state variables by RGB name in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    colorsrgb(fgcolorname bgcolorname). The colorname format is "#RRGGBB"

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ColorVar.html0000644000076500007650000001051411324451723020466 0ustar scottscott00000000000000 Description of ColorVar
    class ColorVar : public StateVar (Return to index)

    current color state variable

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/statevars.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/com_struct.html0000644000076500007650000000277611324451727021140 0ustar scottscott00000000000000 Description of com_struct
    struct com_struct (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComUtil/util.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ComEditor.html0000644000076500007650000000765711324451723020642 0ustar scottscott00000000000000 Description of ComEditor
    class ComEditor : public OverlayEditor (Return to index)

    editor that integrates ComTerp into the drawing editor framework.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/comeditor.h

    Description:

    return pointer to associated ComTerp (always a ComTerpServ).

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ComFunc.html0000644000076500007650000004301711324451723020275 0ustar scottscott00000000000000 Description of ComFunc
    class ComFunc (Return to index)

    command base class for extending ComTerp.

    Type:
      Abstract

    Derived Classes

    Include file:

      ComTerp/comfunc.h

    Description:

    class whose derived classes get constructed and added to a ComTerp command interpreter, one per command to be supported.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ComFuncState.html0000644000076500007650000001442511324451723021277 0ustar scottscott00000000000000 Description of ComFuncState
    class ComFuncState (Return to index)

    state object for holding invocation specific data about a ComFunc.

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComTerp/comfunc.h

    Description:

    object that holds the state of a ComFunc used in a particular context, which allows for nested and recursive use of a singular ComFunc.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/Command.html0000644000076500007650000002564411324451723020327 0ustar scottscott00000000000000 Description of Command
    class Command (Return to index)

    base class for command objects.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Commands/command.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CommandControl.html0000644000076500007650000000515111324451723021657 0ustar scottscott00000000000000 Description of CommandControl
    class CommandControl : public UControl (Return to index)

    command control

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/uctrls.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CommandDoer.html0000644000076500007650000000305611324451723021132 0ustar scottscott00000000000000 Description of CommandDoer
    class CommandDoer (Return to index)

    helper object for executing command from glyph-based pull-down menus.

    Type:
      Instantiable

    Derived Classes

    Include file:

      OverlayUnidraw/ovdoer.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CommandInfo.html0000644000076500007650000000264111324451723021133 0ustar scottscott00000000000000 Description of CommandInfo
    struct CommandInfo (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IVGlyph/textview.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CommandInteractor.html0000644000076500007650000000357211324451723022356 0ustar scottscott00000000000000 Description of CommandInteractor
    class CommandInteractor : public UControlInteractor (Return to index)

    command "interactor" control

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/uctrls.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CommandLeakFunc.html0000644000076500007650000000347411324451723021735 0ustar scottscott00000000000000 Description of CommandLeakFunc
    class CommandLeakFunc : public ComFunc (Return to index)

    command to return current number of Command's

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    attrvleak() -- current number of Command's

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CommandPusher.html0000644000076500007650000000310511324451723021502 0ustar scottscott00000000000000 Description of CommandPusher
    class CommandPusher (Return to index)

    helper object for postponing execution of commands until environment is ready.

    Type:
      Instantiable

    Derived Classes

    Include file:

      OverlayUnidraw/ovdoer.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CompLeakFunc.html0000644000076500007650000000347411324451723021255 0ustar scottscott00000000000000 Description of CompLeakFunc
    class CompLeakFunc : public ComFunc (Return to index)

    command to return current number of OverlayComp's

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    compleak() -- current number of OverlayComp's

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CompletionEditor.html0000644000076500007650000000542011324451724022220 0ustar scottscott00000000000000 Description of CompletionEditor
    class CompletionEditor : public StringEditor (Return to index)

    string-editor with completion (iv-2_6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/compeditor.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CompNameVar.html0000644000076500007650000001071111324451723021106 0ustar scottscott00000000000000 Description of CompNameVar
    class CompNameVar : public NameVar (Return to index)

    component name state variable

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/statevars.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CompNameVarView.html0000644000076500007650000000376711324451724021757 0ustar scottscott00000000000000 Description of CompNameVarView
    class CompNameVarView : public StateVarView (Return to index)

    component-name state variable view

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/stateviews.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Component.html0000644000076500007650000001673211324451724020712 0ustar scottscott00000000000000 Description of Component
    class Component (Return to index)

    base class for objects that model domain specific elements.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Components/component.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ComponentView.html0000644000076500007650000001343611324451724021543 0ustar scottscott00000000000000 Description of ComponentView
    class ComponentView : public Resource (Return to index)

    base class for views of objects that model domain-specific elements.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/compview.h

    Description:

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/Composition.html0000644000076500007650000002075111324451724021247 0ustar scottscott00000000000000 Description of Composition
    class Composition : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/composition.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Compositor.html0000644000076500007650000000353011324451724021076 0ustar scottscott00000000000000 Description of Compositor
    class Compositor (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/compositor.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ComTE_View.html0000644000076500007650000000513211324451723020700 0ustar scottscott00000000000000 Description of ComTE_View
    class ComTE_View : public TE_View (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComGlyph/comtextview.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ComTerp.html0000644000076500007650000012533411324451723020317 0ustar scottscott00000000000000 Description of ComTerp
    class ComTerp : public Parser (Return to index)

    extendable command interpreter.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/comterp.h

    Description:

    ComTerp is an extendable command interpreter with a simple C-like expression syntax and support for commands with fixed-location and keyword-prefixed arguments. The underlying architecture of this interpreter is patterned after Fischer and LeBlanc's "Crafting a Compiler with C", with their pipeline of scanner --> parser --> code_conversion --> code_generation retrofitted into one of scanner --> parser --> code_conversion --> interpreter.

    You use a ComTerp by first constructing one with a default set of commands and operators, then add any commands (derived ComFunc objects) needed for a particular application, then start it running on either stdin or some alternate input file described by arguments to the constructor. To embed a ComTerp in another application you'll probably want to use a ComTerpServ, which has extensions to ComTerp for passing input and output strings from/to the interpreter by buffers.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ComterpHandler.html0000644000076500007650000002132711324451724021653 0ustar scottscott00000000000000 Description of ComterpHandler
    class ComterpHandler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> (Return to index)

    handler to invoke ComTerp on socket (version with ACE)

    Type:
      Instantiable

    Base Classes:
      public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>

    Derived Classes

    Include file:

      ComTerp/comhandler.h

    Description:

    = Initialization and termination methods.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ComterpHandler__2.html0000644000076500007650000000561511324451724022235 0ustar scottscott00000000000000 Description of ComterpHandler__2
    class ComterpHandler__2 (Return to index)

    version without ACE

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComTerp/comhandler.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ComTerpIOHandler.html0000644000076500007650000000725611324451723022047 0ustar scottscott00000000000000 Description of ComTerpIOHandler
    class ComTerpIOHandler : public IOHandler (Return to index)

    class for splicing comterp into Unidraw event loop

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/comterp-iohandler.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ComTerpModule.html0000644000076500007650000001732411324451723021464 0ustar scottscott00000000000000 Description of ComTerpModule
    class ComTerpModule (Return to index)

    base class for C++ wrappers of Fischer-LeBlanc style compiler pipeline.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/commodule.h

    Description:

    This lives here, instead of in the ComTerp library, so that the LexScan derivative class can be used by the ParamList mechanism.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ComterpPauseFunc.html0000644000076500007650000000444011324451724022164 0ustar scottscott00000000000000 Description of ComterpPauseFunc
    class ComterpPauseFunc : public ComFunc (Return to index)

    command to pause script execution until C/R

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/debugfunc.h

    Description:

    pause -- pause script execution until C/R

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ComTerpServ.html0000644000076500007650000002346011324451723021154 0ustar scottscott00000000000000 Description of ComTerpServ
    class ComTerpServ : public ComTerp (Return to index)

    extended ComTerp that works with buffered IO.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/comterpserv.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ComterpStackHeightFunc.html0000644000076500007650000000346111324451724023307 0ustar scottscott00000000000000 Description of ComterpStackHeightFunc
    class ComterpStackHeightFunc : public ComFunc (Return to index)

    command to return stack height for debugging

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/debugfunc.h

    Description:

    stackheight -- return stack height for debug purposes

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ComTerpState.html0000644000076500007650000001564311324451723021321 0ustar scottscott00000000000000 Description of ComTerpState
    class ComTerpState (Return to index)

    object for holding ComTerp state

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComTerp/comterp.h

    Description:

    object that holds the state of a ComTerp which allows for nested and recursive use of a singular ComTerp

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ComterpStepFunc.html0000644000076500007650000000402111324451724022015 0ustar scottscott00000000000000 Description of ComterpStepFunc
    class ComterpStepFunc : public ComterpPauseFunc (Return to index)

    command to toggle step script execution

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/debugfunc.h

    Description:

    pause -- toggle stepwise script execution

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ComterpTraceFunc.html0000644000076500007650000000341611324451724022147 0ustar scottscott00000000000000 Description of ComterpTraceFunc
    class ComterpTraceFunc : public ComFunc (Return to index)

    command for toggling or setting trace mode

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/debugfunc.h

    Description:

    val=trace([flag] :get) -- toggle or set trace mode

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ComTextEditor.html0000644000076500007650000000350411324451723021472 0ustar scottscott00000000000000 Description of ComTextEditor
    class ComTextEditor : public EivTextEditor (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComGlyph/comtextedit.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ComValue.html0000644000076500007650000005166711324451723020470 0ustar scottscott00000000000000 Description of ComValue
    class ComValue : public AttributeValue (Return to index)

    AttributeValue with extensions for use with ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/comvalue.h

    Description:

    ComValue adds to AttributeValue a set of convenient static methods for returning constants useful in any application of ComTerp, as well as four integers (narg(), nkey(), nids(), pedepth()) used for storing necessary command and keyword state after code conversion and during interpretation.

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ConcatFunc.html0000644000076500007650000000426111324451724020765 0ustar scottscott00000000000000 Description of ConcatFunc
    class ConcatFunc : public StrmFunc (Return to index)

    ,, (concat) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ConcatNextFunc.html0000644000076500007650000000400511324451724021620 0ustar scottscott00000000000000 Description of ConcatNextFunc
    class ConcatNextFunc : public StrmFunc (Return to index)

    hidden func used by next command for ,, (concat) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CondFunc.html0000644000076500007650000000414511324451724020442 0ustar scottscott00000000000000 Description of CondFunc
    class CondFunc : public ComFunc (Return to index)

    conditional control command for ComTerp

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/condfunc.h

    Description:

    val=cond(testexpr trueexpr falseexpr) -- evaluate testexpr, and if true, evaluate and return trueexpr, otherwise evaluate and return falseexpr.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ConfirmBoxFunc.html0000644000076500007650000000356711324451724021634 0ustar scottscott00000000000000 Description of ConfirmBoxFunc
    class ConfirmBoxFunc : public UnidrawFunc (Return to index)

    command to popup a confirmation dialog box

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/dialogfunc.h

    Description:

    acknowledgebox() -- popup a confirmation dialog box, and return 1, 0, or -1 if cancelled.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ConfirmDialog.html0000644000076500007650000000347011324451724021460 0ustar scottscott00000000000000 Description of ConfirmDialog
    class ConfirmDialog : public BasicDialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/dialogs.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ConnectCmd.html0000644000076500007650000001067511324451724020765 0ustar scottscott00000000000000 Description of ConnectCmd
    class ConnectCmd : public Command (Return to index)

    connect command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ConnectManip.html0000644000076500007650000000452711324451724021325 0ustar scottscott00000000000000 Description of ConnectManip
    class ConnectManip : public DragManip (Return to index)

    connection manipulator

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/manips.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Connector.html0000644000076500007650000002157511324451724020703 0ustar scottscott00000000000000 Description of Connector
    class Connector : public GraphicComp (Return to index)

    for defining and maintaining connectivity between components.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/connector.h

    Description:

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ConnectorView.html0000644000076500007650000000401111324451724021520 0ustar scottscott00000000000000 Description of ConnectorView
    class ConnectorView : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/connector.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ConnectTool.html0000644000076500007650000000615411324451724021174 0ustar scottscott00000000000000 Description of ConnectTool
    class ConnectTool : public Tool (Return to index)

    connect tool

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Tools/connect.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Control.html0000644000076500007650000001641511324451724020366 0ustar scottscott00000000000000 Description of Control
    class Control : public MonoScene (Return to index)

    provide an interface to selecting and executing some action (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/control.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ControlInfo.html0000644000076500007650000001325711324451724021203 0ustar scottscott00000000000000 Description of ControlInfo
    class ControlInfo (Return to index)

    manages persistent information contained in a Control

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/ctrlinfo.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ControlState.html0000644000076500007650000001423211324451724021362 0ustar scottscott00000000000000 Description of ControlState
    class ControlState : virtual public Subject (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/control.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ConvexHullCmd.html0000644000076500007650000000416111324451724021454 0ustar scottscott00000000000000 Description of ConvexHullCmd
    class ConvexHullCmd : public Command (Return to index)

    command to generate generate and paste a convex hull given a polygon.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovhull.h

    Description:

    relies on the qhull utilility from the University of Minnesota Geometry Center (http://geom.umn.edu).

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ConvexHullTool.html0000644000076500007650000000440711324451724021671 0ustar scottscott00000000000000 Description of ConvexHullTool
    class ConvexHullTool : public Tool (Return to index)

    tool to draw a polygon and invoke the ConvexHullCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovhull.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CoordinateSpace.html0000644000076500007650000000166311324451724022010 0ustar scottscott00000000000000 Description of CoordinateSpace
    class CoordinateSpace (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/geometry.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CopyCmd.html0000644000076500007650000000610011324451724020272 0ustar scottscott00000000000000 Description of CopyCmd
    class CopyCmd : public Command (Return to index)

    copy command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CopyMoveFrameCmd.html0000644000076500007650000000560411324451724022104 0ustar scottscott00000000000000 Description of CopyMoveFrameCmd
    class CopyMoveFrameCmd : public MacroCmd (Return to index)

    command to copy contents of current frame to create a new frame.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CopyMoveGraphFrameCmd.html0000644000076500007650000000526611324451724023072 0ustar scottscott00000000000000 Description of CopyMoveGraphFrameCmd
    class CopyMoveGraphFrameCmd : public CopyMoveFrameCmd (Return to index)

    command to copy contents of current frame to create a new frame and reconnect graph.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CopyString.html0000644000076500007650000000726411324451724021051 0ustar scottscott00000000000000 Description of CopyString
    class CopyString : public String (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OS/string.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CosFunc.html0000644000076500007650000000335111324451724020301 0ustar scottscott00000000000000 Description of CosFunc
    class CosFunc : public ComFunc (Return to index)

    cosine command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=cos(x) -- returns the cosine of x radians.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreateClosedSplineFunc.html0000644000076500007650000000363411324451724023271 0ustar scottscott00000000000000 Description of CreateClosedSplineFunc
    class CreateClosedSplineFunc : public CreateGraphicFunc (Return to index)

    closed spline drawing command for comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    compview=closedspline(x0,y0[,x1,y1,...]) -- create a closed spline

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreateEllipseFunc.html0000644000076500007650000000355511324451724022304 0ustar scottscott00000000000000 Description of CreateEllipseFunc
    class CreateEllipseFunc : public CreateGraphicFunc (Return to index)

    ellipse drawing command for comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    compview=ellipse(x0,y0,r1,r2) -- create an ellipse

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreateFrameCmd.html0000644000076500007650000000715711324451724021553 0ustar scottscott00000000000000 Description of CreateFrameCmd
    class CreateFrameCmd : public Command (Return to index)

    command to create a frame.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Description:

    commmand to create a frame, before or after the current frame.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CreateFrameFunc.html0000644000076500007650000000352611324451724021737 0ustar scottscott00000000000000 Description of CreateFrameFunc
    class CreateFrameFunc : public UnidrawFunc (Return to index)

    interpreter command to create new frame.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framefunc.h

    Description:

    createframe(:before) -- create and move to new frame

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreateGraphicFunc.html0000644000076500007650000000317611324451724022263 0ustar scottscott00000000000000 Description of CreateGraphicFunc
    class CreateGraphicFunc : public UnidrawFunc (Return to index)

    base class for graphic construction func's

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreateLineFunc.html0000644000076500007650000000361211324451724021570 0ustar scottscott00000000000000 Description of CreateLineFunc
    class CreateLineFunc : public CreateGraphicFunc (Return to index)

    line drawing command for comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    compview=line(x0,y0,x1,y1) -- create a line
    compview=arrowline(x0,y0,x1,y1) -- same as line

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreateMoveFrameCmd.html0000644000076500007650000000664611324451724022404 0ustar scottscott00000000000000 Description of CreateMoveFrameCmd
    class CreateMoveFrameCmd : public MacroCmd (Return to index)

    command to create a frame and move to it.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CreateMultiLineFunc.html0000644000076500007650000000371011324451724022602 0ustar scottscott00000000000000 Description of CreateMultiLineFunc
    class CreateMultiLineFunc : public CreateGraphicFunc (Return to index)

    multiline drawing command for comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    compview=multiline(x0,y0[,x1,y1,...]) -- create a multiline
    compview=arrowmultiline(x0,y0[,x1,y1,...]) -- same as multiline

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreateOpenSplineFunc.html0000644000076500007650000000372111324451724022756 0ustar scottscott00000000000000 Description of CreateOpenSplineFunc
    class CreateOpenSplineFunc : public CreateGraphicFunc (Return to index)

    open spline drawing command for comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    compview=openspline(x0,y0[,x1,y1,...]) -- create an open spline
    compview=arrowspline(x0,y0[,x1,y1,...]) -- same as openspline

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreatePolygonFunc.html0000644000076500007650000000356211324451724022334 0ustar scottscott00000000000000 Description of CreatePolygonFunc
    class CreatePolygonFunc : public CreateGraphicFunc (Return to index)

    polygon drawing command for comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    compview=polygon(x0,y0[,x1,y1,...]) -- create a polygon

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreateRasterFunc.html0000644000076500007650000000355411324451724022146 0ustar scottscott00000000000000 Description of CreateRasterFunc
    class CreateRasterFunc : public CreateGraphicFunc (Return to index)

    raster creation command for comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    compview=raster(x0,y0,x1,y1) -- create an empty raster

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreateRectFunc.html0000644000076500007650000000362411324451724021601 0ustar scottscott00000000000000 Description of CreateRectFunc
    class CreateRectFunc : public CreateGraphicFunc (Return to index)

    rectangle drawing command for comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    compview=rect(x0,y0,x1,y1) -- create a rectangle
    compview=rectangle(x0,y0,x1,y1) -- same as rect

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CreateTextFunc.html0000644000076500007650000000353511324451724021631 0ustar scottscott00000000000000 Description of CreateTextFunc
    class CreateTextFunc : public CreateGraphicFunc (Return to index)

    text drawing command for comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    compview=text(x0,y0 textstr) -- create a text string

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Creator.html0000644000076500007650000000477011324451724020346 0ustar scottscott00000000000000 Description of Creator
    class Creator (Return to index)

    component factory class

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/creator.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CSolver.html0000644000076500007650000005164711324451723020330 0ustar scottscott00000000000000 Description of CSolver
    class CSolver (Return to index)

    connector constraint solver

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Components/csolver.h

    Description:

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/CSolverState.html0000644000076500007650000000610111324451723021312 0ustar scottscott00000000000000 Description of CSolverState
    class CSolverState (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Components/csolver.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/CtoiFunc.html0000644000076500007650000000313511324451724020453 0ustar scottscott00000000000000 Description of CtoiFunc
    class CtoiFunc : public ComFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/charfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Cursor.html0000644000076500007650000000634211324451724020221 0ustar scottscott00000000000000 Description of Cursor
    class Cursor (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/cursor.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CursorRep.html0000644000076500007650000000624211324451724020667 0ustar scottscott00000000000000 Description of CursorRep
    class CursorRep (Return to index)

    Type:
      Abstract

    Derived Classes

    Include file:

      IV-X11/xcursor.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CursorRepBitmap.html0000644000076500007650000000434211324451724022023 0ustar scottscott00000000000000 Description of CursorRepBitmap
    class CursorRepBitmap : public CursorRep (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-X11/xcursor.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CursorRepData.html0000644000076500007650000000535311324451724021463 0ustar scottscott00000000000000 Description of CursorRepData
    class CursorRepData : public CursorRep (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-X11/xcursor.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CursorRepFont.html0000644000076500007650000000453111324451724021515 0ustar scottscott00000000000000 Description of CursorRepFont
    class CursorRepFont : public CursorRep (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-X11/xcursor.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CursorRepXFont.html0000644000076500007650000000356111324451724021647 0ustar scottscott00000000000000 Description of CursorRepXFont
    class CursorRepXFont : public CursorRep (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-X11/xcursor.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/CutCmd.html0000644000076500007650000000652711324451724020130 0ustar scottscott00000000000000 Description of CutCmd
    class CutCmd : public Command (Return to index)

    cut command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/CVS/0000755000076500007650000000000011324452434016503 5ustar scottscott00000000000000ivtools-doc/doc/classes/CVS/Entries0000644000076500007650000017767411324452434020065 0ustar scottscott00000000000000/.perceps/1.2/Tue Jul 9 21:13:00 2002// /AttributeValue::NONAME.html/1.1.1.1/Tue Nov 13 18:25:33 2001// /LeakChecker.html/1.1.1.1/Tue Nov 13 18:25:34 2001// /PSFont__2.html/1.1.1.1/Tue Nov 13 18:25:34 2001// /RpcHdr::NONAME.html/1.1.1.1/Tue Nov 13 18:25:34 2001// /token::tok_val.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /ACE_IO_Handler.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ALIterator.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AList.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ASinFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ATan2Func.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ATanFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AboutCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AbsFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AcceptingObservable.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AceDispatcher.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AcknowledgeBoxFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AcknowledgeDialog.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Action.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ActiveHandler.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AddAssignFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AddFunc.html/1.2/Sun Jan 17 00:03:31 2010// /AddToolButtonFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Adjustable.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Adjuster.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Aggregate.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Align.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AlignCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AlignToGridCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Allocation.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AllocationInfo.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AllocationTable.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Allotment.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AlphaTransFunc.html/1.1/Sun Jan 17 00:03:31 2010// /AlphaTransparentRasterCmd.html/1.1/Sun Jan 17 00:03:31 2010// /AnnotateDialog.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AnnotateTool.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ApplicationWindow.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrayCompositor.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowLineComp.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowLineOvComp.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowLineOvView.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowLinePS.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowLineScript.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowLineView.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowMultiLine.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowMultiLineComp.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowMultiLineOvComp.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowMultiLineOvView.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowMultiLinePS.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowMultiLineScript.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowMultiLineView.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowOpenBSpline.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowSplineComp.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowSplineOvComp.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowSplineOvView.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowSplinePS.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowSplineScript.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowSplineView.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowSubclassName.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowVar.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ArrowVarView.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Arrowhead.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AssignFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AttrDialog.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AttrDialogImpl.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AttrListFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Attribute.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AttributeDialog.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AttributeList.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AttributeListEditor.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AttributeTool.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /AutoNewFrameFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BackCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Background.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Banner.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BarPlotFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Bevel.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BevelFrame.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Bitmap.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BooleanObserver.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Border.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BorderFrame.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Border__2.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BothSetAttrFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BoundedValue.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BoundedValueEditor.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BoundedValueObserver.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BoundedValueTable.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BoundedValueTableEditor.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Box.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BoxObj.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Box__2.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Browser.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Brush.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BrushCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BrushFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BrushRep.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BrushVar.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /BrushVarView.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Button.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ButtonState.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Button__2.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CGlue.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CSolverState.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CameraMotionCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CanvasDamage.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CeilFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CenterCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CenterFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CenterLayout.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ChainViewerCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CharFieldEditor.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CharFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Character.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CheckBooleanEditor.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Circle31.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClassSymbolFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClipPolyAAndBCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClipPolyAMinusBCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClipPolyBMinusACmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClipPolyCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClipPolyTool.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClipRectCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClipRectTool.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Clipboard.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CloseEditorCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClosedBSpline.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClosedSplineComp.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClosedSplineOvComp.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClosedSplineOvView.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClosedSplinePS.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClosedSplineScript.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ClosedSplineView.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /Closed_BSpline31.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ColorCmd.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ColorData.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ColorFunc.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ColorRep.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ColorVar.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ComTE_View.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ComTerpIOHandler.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ComTerpModule.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ComTerpState.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /ComTextEditor.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CommandControl.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CommandDoer.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CommandInfo.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CommandInteractor.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CommandPusher.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CompNameVar.html/1.1.1.1/Sun Jan 17 00:03:31 2010// /CompNameVarView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CompletionEditor.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Component.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Composition.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Compositor.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ComterpPauseFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ComterpStepFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ComterpTraceFunc.html/1.2/Sun Jan 17 00:03:32 2010// /ConcatFunc.html/1.1/Sun Jan 17 00:03:32 2010// /ConcatNextFunc.html/1.1/Sun Jan 17 00:03:32 2010// /CondFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ConfirmBoxFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ConfirmDialog.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ConnectCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ConnectManip.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ConnectTool.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Connector.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ConnectorView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Control.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ControlInfo.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ControlState.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ConvexHullCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ConvexHullTool.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CopyCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CopyMoveFrameCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CopyString.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CosFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CreateFrameCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CreateFrameFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CreateMoveFrameCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Creator.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Cursor.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CursorRep.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CursorRepBitmap.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CursorRepData.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CursorRepFont.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CursorRepXFont.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CutCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /CycleEnumEditor.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Damage.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Data.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Date.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Deck.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Deck__2.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DecrAfterFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DecrFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DegToRadFunc.html/1.1/Sun Jan 17 00:03:32 2010// /DeleteCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DeleteFrameCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DeleteFrameData.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DeleteFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DesensitizeViewCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Dialog.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Directory.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DirtyCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Dispatcher.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Display.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DisplayRep.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DivAssignFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DivFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DoneAttrListFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DoneSetAttrFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DotFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DotNameFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DotValFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DoubleFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DownMover.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Drag.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DragEditor.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DragValuator.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DragZone.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DragZoneSink.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DrawCreator.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DrawIdrawView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /DrawingToGraphicFunc.html/1.1/Sun Jan 17 00:03:32 2010// /DrawingToScreenFunc.html/1.1/Sun Jan 17 00:03:32 2010// /DupCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EachFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EdgeConnectCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EdgeData.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EdgePS.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EdgeUpdateCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Editor.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EditorInfo.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EditorLauncherAction.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Ellipse.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Ellipse31.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EllipseComp.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EllipseOvComp.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EllipseOvView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EllipsePS.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EllipseScript.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EllipseView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Enlarger.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EnumObserver.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EqualFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EvalFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /EventRep.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ExitFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ExpFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ExportChooserImpl.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ExportEnumEditor.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ExportFunc.html/1.1/Sun Jan 17 00:03:32 2010// /Extension.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Extent.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ExternView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FBoxObj.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FFillPolygonObj.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FLineObj.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FMultiLineObj.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FPointObj.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /F_Circle.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /F_ClosedBSpline.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /F_Ellipse.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /F_OpenBSpline.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /F_Polygon.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /F_Rect.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FalseAttrListFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FieldEditor.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FieldEditorAction.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /File.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FileBrowser__2.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FileChooser.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FileChooserAction.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FileChooser__2.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FileNameVarView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FillPolygonObj.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FixViewCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FixedLayout.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FixedPanCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FixedPin.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FloatFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FloorFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Font.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FontBoundingBox.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FontCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FontFamilyRep.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FontFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FontRep.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FontVar.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FontVarView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /ForFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Frame.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameBackCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameBeginCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameComp.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameCopyCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameCreator.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameEndCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameFileComp.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameFileScript.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameFileView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameFrontCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameGroupCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameIdrawComp.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameIdrawPS.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameIdrawScript.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameIdrawView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameKit.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameListState.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameNewViewCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameNumberState.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameOverlaysComp.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameOverlaysScript.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameOverlaysView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameScript.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameUngroupCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrameView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FramesComp.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FramesScript.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FramesView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FrontCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /FullGraphic.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GConfirmDialog.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GFieldEditor.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GFieldEditorAction.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GLContext.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GSData.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GVUpdater.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GlobalSymbolFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Glue.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Glue__2.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GrAttrListFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GrDotFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GrListSizeFunc.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GrLocTool.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphCatalog.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphCopyCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphCreator.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphCutCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphData.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphDupCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphEditor.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphIdrawComp.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphIdrawScript.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphIdrawView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphImportCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphKit.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphMoveTool.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphNewViewCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphPasteCmd.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphScript.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /GraphView.html/1.1.1.1/Sun Jan 17 00:03:32 2010// /Graphic31.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GraphicBlock.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GraphicComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GraphicCompTool.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GraphicComps.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GraphicMaster.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GraphicToDrawingFunc.html/1.1/Sun Jan 17 00:03:33 2010// /GraphicViews.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GravityCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GravityVar.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GravityVarView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GrayRampCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GrayRampFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GreaterThanFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GreaterThanOrEqualFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Grid.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GridCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GridDialog.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GridSpacingCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Group.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GroupCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GrowGroupFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GrowingBSpline.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GrowingClosedBSpline.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GrowingMultiLine.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GrowingPolygon.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /GrowingVertices.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HBorder.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HPanelControl.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HRule.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HScrollBar.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HScroller.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HSlotComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HSlotView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Handler.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HandlesFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HelpFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HideViewCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /HighlightFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Hit.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Host.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IGridSpacingCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IOHandler.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IconWindow.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IdrawComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IdrawCreator.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IdrawEditor.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IdrawReader.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IdrawView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IfThenElseFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Image.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ImageCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ImportChooser.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ImportChooserImpl.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ImportCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ImportFunc.html/1.2/Sun Jan 17 00:03:33 2010// /IncrAfterFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IncrFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IndexedGsMixin.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IndexedPicMixin.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IndexedPtsMixin.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /InorderView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /InputFile.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /InputHandler.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IntFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /InteractorHandler.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /InvertXformFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IterateFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Iterator.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueConnCompFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueExportFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueGaussianFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueGetPixelFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueHandler.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueImageComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueImageFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueNcolsFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueNrowsFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IuePixTypeFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueServComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /IueThresholdFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /JoinStrFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /KeyMap.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LRComposition.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LRMarker.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Label.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Layout.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LeftMover.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LeftShiftFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LessThanFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LessThanOrEqualFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LexScan.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Line.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Line31.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LineComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LineObj.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LineOvComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LineOvView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LinePS.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LineScript.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LineView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LinkComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LinkView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ListAtFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ListFunc.html/1.2/Sun Jan 17 00:03:33 2010// /ListItr.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ListSizeFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ListUpdater.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Log10Func.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LogFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LogScaleCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LogScaleFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /LongFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MFDialogKit.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MFKit.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Macro.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MacroCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MagnifVar.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MagnifVarView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MagnifyTool.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ManagedWindow.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ManagedWindowHintInfo.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ManagedWindowRep.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ManipGroup.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Manipulator.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MarginLayout.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MatchEditor.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Math.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MaxFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MbrFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MeanFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Memory.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Menu.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MenuBar.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MenuEnumEditor.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Menu__2.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Message.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MeterObserver.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MinFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MinusFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MobilityCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MobilityData.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ModAssignFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ModFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ModifStatusVar.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ModifStatusVarView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MonoGlyph.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MonoKit.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MonoScene.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MoveCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MoveData.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MoveDialog.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MoveFrameFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MoveFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MoveTool.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Mover.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MpyAssignFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MpyFunc.html/1.2/Sun Jan 17 00:03:33 2010// /MultiLine.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MultiLineComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MultiLineOvComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MultiLineOvView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MultiLinePS.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MultiLineScript.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /MultiLineView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NBrushesFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NColorsFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NFontsFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NOPCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NPatternsFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NRowsFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NameState.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NameVar.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NameVarView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NameView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NaturalLayout.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NegFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NewCompCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NewViewCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NextAttrListFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NextInSelectionFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NilFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NodeData.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NodeDialog.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NodeTextCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NormSizeCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NotEqualFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NullTerminatedString.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NumFramesFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /NumFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OLDialogKit.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OLKit.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ObjectMap.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ObsTextDialog.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ObsTextEditor.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Observable.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ObservableBoolean.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ObservableEnum.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ObservableText.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ObservableTime.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Observer.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OpenBSpline.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OpenCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OpenFileChooser.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OpenFileChooserAction.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OpenFileChooserImpl.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Open_BSpline31.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OptionDesc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OrFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OrientationCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvAboutCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvCloseEditorCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvDownMover.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvFileImage.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvGroupCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvImageMapCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvImportCmd.html/1.2/Sun Jan 17 00:03:33 2010// /OvLeftMover.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvMemoryImage.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvMover.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvNewCompCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvOpenCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvPortableFileImage.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvPreciseBrushCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvPreciseMoveCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvPrecisePageCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvPreciseRotateCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvPreciseScaleCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvPrintCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvQuitCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvRestrictedImage.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvRevertCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvRightMover.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvSaveCompAsCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvSaveCompCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvSlctAllCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvTiledFileImage.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvUpMover.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvViewCompCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OvWindowDumpAsCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayCatalog.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayCreator.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayDamage.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayFileComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayFileScript.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayFileView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayGraphic.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayIdrawComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayIdrawPS.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayIdrawView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayPage.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayPainter.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayPanner.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlayRasterRect.html/1.2/Sun Jan 17 00:03:33 2010// /OverlaySelectTool.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlaySlider.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlaysPS.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlaysScript.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /OverlaysView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PGM_Helper.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PPM_Helper.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSArrowLine.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSArrowMultiLine.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSArrowSpline.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSBrush.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSClosedSpline.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSColor.html/1.2/Sun Jan 17 00:03:33 2010// /PSEllipse.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSFont.html/1.2/Sun Jan 17 00:03:33 2010// /PSFont31.html/1.1/Sun Jan 17 00:03:33 2010// /PSIdraw.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSLine.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSLink.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSMultiLine.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSPad.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSPattern.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSPin.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSPolygon.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSRaster.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSRect.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSSlot.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSSpline.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSStencil.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSText.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PSVertices.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PadComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PadGraphic.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PadView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Page.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PageCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PageDialog.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PageGraphic.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Painter.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PainterDpyInfo.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PainterRep.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PaletteBooleanEditor.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanDialog.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanDownLargeFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanDownSmallFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanLeftLargeFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanLeftSmallFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanRightLargeFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanRightSmallFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanUpLargeFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanUpSmallFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanelControl.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PanelInteractor.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Panner.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ParamStruct.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PasteCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PasteFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PasteModeFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Patch.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PathRenderInfo.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PatternCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PatternFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PatternRep.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PatternVar.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PatternVarView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Perspective.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PiFunc.html/1.1/Sun Jan 17 00:03:33 2010// /Picture.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PicturePS.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PinComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PinGraphic.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PinView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PixelClipFunc.html/1.1/Sun Jan 17 00:03:33 2010// /PixelColsFunc.html/1.1/Sun Jan 17 00:03:33 2010// /PixelFlushFunc.html/1.1/Sun Jan 17 00:03:33 2010// /PixelPeekFunc.html/1.1/Sun Jan 17 00:03:33 2010// /PixelPokeFunc.html/1.1/Sun Jan 17 00:03:33 2010// /PixelRowsFunc.html/1.1/Sun Jan 17 00:03:33 2010// /Placement.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Point.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PointObj.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PointsFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PolyGlyph.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PolyGraphic.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Polygon.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Polygon31.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PolygonComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PolygonOvComp.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PolygonOvView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PolygonPS.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PolygonScript.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PolygonView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Polyline31.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PopupMenu.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PopupWindow.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PortableImageHelper.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PostEvalFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PostFixFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PostScriptView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PostScriptViews.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PostorderView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PowFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PreciseMoveCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PrecisePageCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PrecisePanCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PreciseRotateCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PreciseScaleCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PreciseZoomCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PreorderView.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PrintChooser.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PrintChooserImpl.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PrintCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PrintDialog.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PrintFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /Printer.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /ProcessingCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PropertyData.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PseudocolorFunc.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PtrList.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PtrLocState.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PullCmd.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PulldownMenu.html/1.1.1.1/Sun Jan 17 00:03:33 2010// /PullrightMenu.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /PushCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /QuitCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /QuitFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RadToDegFunc.html/1.1/Sun Jan 17 00:03:34 2010// /RadioEnumEditor.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RasterComp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RasterFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RasterOvComp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RasterOvView.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RasterPS.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RasterRect.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RasterRep.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RasterScript.html/1.2/Sun Jan 17 00:03:34 2010// /RasterTerp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RasterView.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ReadOnlyFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Rect.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RectComp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RectOvComp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RectOvView.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RectPS.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RectScript.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RectView.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RedToFitCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RedoCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Reducer.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Regexp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RemoteFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RepeatFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ReplaceCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ReplaceRasterCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ReqErr.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Requirement.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Requisition.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ReshapeTool.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RevertCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RightMover.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RightShiftFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RotateCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RotateDialog.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RotateFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RotateTool.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RotatingLine.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RotatingLineList.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RotatingRect.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RoundFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RpcPeer.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RpcReader.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RpcRegistry.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RpcService.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RpcWriter.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberAxis.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberCircle.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberClosedSpline.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberEllipse.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberGroup.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberHandles.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberLine.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberPointList.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberRect.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberSpline.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberSquare.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RubberVertex.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Rubberband.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Rule.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /RunFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SFH_ClosedBSpline.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SFH_OpenBSpline.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SF_Circle.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SF_ClosedBSpline.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SF_Ellipse.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SF_MultiLine.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SF_OpenBSpline.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SF_Polygon.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SF_Rect.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SMFKit.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SRandFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /S_Circle.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /S_ClosedBSpline.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /S_Ellipse.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /S_MultiLine.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /S_OpenBSpline.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /S_Polygon.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /S_Rect.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SaveAsChooser.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SaveAsChooserImpl.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SaveCompAsCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SaveCompCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SaveFileFunc.html/1.1/Sun Jan 17 00:03:34 2010// /ScaleCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScaleDialog.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScaleFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScaleGrayFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScaleTool.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScalingLine.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScalingLineList.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScalingRect.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Scanner.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Scene.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScreenToDrawingFunc.html/1.1/Sun Jan 17 00:03:34 2010// /ScribblePointerCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScribbleVertexManip.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScrollBar.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ScrollBox.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Scrollable.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Scroller.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SelectFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SelectTool.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Selection.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SelectionHandler.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SelectionManager.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SelectionManagerRep.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SensitizeViewsCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Sensor.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SeqFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Session.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SetAttrByExprCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SetAttrFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Shadow.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ShadowFrame.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Shape.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ShellFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ShortFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ShowFrame.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ShowFramesFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /ShowOtherFrameCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SimpleCompositor.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SinFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlctAllCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlctByAttrCmd.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Slider.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Slider__2.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlidingEllipse.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlidingLine.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlidingLineList.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlidingPin.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlidingPointList.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlidingRect.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlotComp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlotGraphic.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SlotView.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SplineComp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SplineOvComp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SplineOvView.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SplinePS.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SplineScript.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SplineView.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SplitStrFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SqrtFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StateVar.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StateVarView.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StdDevFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StdInput.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Stencil.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StencilComp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StencilOvComp.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StencilOvView.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StencilPS.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StencilScript.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StencilView.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Stepper.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StrChooser.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StrChooserAction.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StrListValue.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StreamFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StreamNextFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StretchTool.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StretchingRect.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /String.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StringEditor.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /StrmFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SubAssignFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SubFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Subject.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SumFunc.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /Superpose.html/1.1.1.1/Sun Jan 17 00:03:34 2010// /SymIdFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /SymValFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /SymbolFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TBComposition.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TBScrollBox.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TE_Adjustable.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TE_Editor.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TE_ViewKeyInfo.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TE_ViewKeySymInfo.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TF_2Port.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TF_Direct.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TIFFRaster.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TanFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /Target.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TeXCompositor.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /Telltale.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TelltaleGroup.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TerpDialog.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TerpDialogImpl.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /Text31.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextBuffer.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextButton.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextComp.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextDisplay.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextEditAppWindow.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextFileComp.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextFileScript.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextFileView.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextGraphic.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextManip.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextObserver.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextOvComp.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextOvView.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextPS.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextRenderInfo.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextScript.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TextView.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /Tile.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TileFileFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TileFirstAligned.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TileReversed.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TileReversedFirstAligned.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TimeExprFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TimeGlyph.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TitleFrame.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /Tool.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ToolButton.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ToolControl.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ToolSelector.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ToolState.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TopLevelWindow.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TopoEdgeList.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TopoElement.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TopoFace.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TopoNode.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TransferFunct.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TransformCmd.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TransformFitter.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TransformSetter.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TransientWindow.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /Tray.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TrimGroupFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TrueAttrListFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TupleFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /TypeSymbolFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UArray.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UChooser.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UControl.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UControlInteractor.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UHashElem.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UHashTable.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ULabel.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UList.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UMap.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UMapElem.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UPage.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UStencil.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UnchainViewerCmd.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UndoCmd.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UnfixViewCmd.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UngroupCmd.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UngroupData.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UnhideViewsCmd.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UnhighlightRasterCmd.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UnidrawFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UnidrawPauseFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UniqueString.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UpMover.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /UpdateFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VBorder.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VPanelControl.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VRule.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VScrollBar.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VScroller.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VSlotComp.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VSlotView.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /Valuator.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VarFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VariableLayout.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VertexManip.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VerticesComp.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VerticesOvComp.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VerticesOvView.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VerticesPS.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VerticesScript.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VerticesView.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ViewCompCmd.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ViewerView.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /Viewport.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /VoidData.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /WhileFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /Window.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /WindowOverlayInfo.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /WindowVisual.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /WindowVisualInfo.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /World.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /XDrag.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /XSlider.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /XYMarker.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /XYSlider.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /XformFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /XposeFunc.html/1.1/Sun Jan 17 00:03:35 2010// /YSlider.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ZoomCmd.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ZoomDialog.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ZoomFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ZoomInFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ZoomOutFunc.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /Zoomer.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /_ArrowData.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /_dmmwalk.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /_xdllink.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /arrayval_struct.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /attr_value.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /com_struct.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /iosb.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /iostreamb.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /istreamb.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /keyval_struct.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /objval_struct.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /rpcstream.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /streamval_struct.html/1.1/Sun Jan 17 00:03:35 2010// /symval_struct.html/1.1.1.1/Sun Jan 17 00:03:35 2010// /ACosFunc.html/1.3/Sun Jan 17 00:03:31 2010// /AckBackHandler.html/1.1/Sun Jan 17 00:03:31 2010// /AlistLeakFunc.html/1.1/Sun Jan 17 00:03:31 2010// /AndFunc.html/1.2/Sun Jan 17 00:03:31 2010// /ArrowLine.html/1.2/Sun Jan 17 00:03:31 2010// /AttributeValue.html/1.2/Sun Jan 17 00:03:31 2010// /AttributeValueList.html/1.3/Sun Jan 17 00:03:31 2010// /AttributeValue___NONAME.html/1.1/Sun Jan 17 00:03:31 2010// /AttrvLeakFunc.html/1.1/Sun Jan 17 00:03:31 2010// /AutoNewFrameCmd.html/1.2/Sun Jan 17 00:03:31 2010// /BackQuoteFunc.html/1.2/Sun Jan 17 00:03:31 2010// /BasicDialog.html/1.2/Sun Jan 17 00:03:31 2010// /BitAndFunc.html/1.2/Sun Jan 17 00:03:31 2010// /BitNotFunc.html/1.2/Sun Jan 17 00:03:31 2010// /BitOrFunc.html/1.2/Sun Jan 17 00:03:31 2010// /BitXorFunc.html/1.2/Sun Jan 17 00:03:31 2010// /BitmapRep.html/1.2/Sun Jan 17 00:03:31 2010// /CSolver.html/1.2/Sun Jan 17 00:03:31 2010// /Canvas.html/1.2/Sun Jan 17 00:03:31 2010// /CanvasRep.html/1.2/Sun Jan 17 00:03:31 2010// /Catalog.html/1.3/Sun Jan 17 00:03:31 2010// /ChainViewersCmd.html/1.2/Sun Jan 17 00:03:31 2010// /ChangeIdFunc.html/1.1/Sun Jan 17 00:03:31 2010// /CheckBox.html/1.2/Sun Jan 17 00:03:31 2010// /ChoiceItem.html/1.2/Sun Jan 17 00:03:31 2010// /Color.html/1.2/Sun Jan 17 00:03:31 2010// /ColorRgbFunc.html/1.1/Sun Jan 17 00:03:31 2010// /ComEditor.html/1.2/Sun Jan 17 00:03:31 2010// /ComFunc.html/1.2/Sun Jan 17 00:03:31 2010// /ComFuncState.html/1.2/Sun Jan 17 00:03:31 2010// /ComTerp.html/1.2/Sun Jan 17 00:03:31 2010// /ComTerpServ.html/1.2/Sun Jan 17 00:03:31 2010// /ComValue.html/1.2/Sun Jan 17 00:03:31 2010// /Command.html/1.2/Sun Jan 17 00:03:31 2010// /CommandLeakFunc.html/1.1/Sun Jan 17 00:03:31 2010// /CompLeakFunc.html/1.1/Sun Jan 17 00:03:31 2010// /ComponentView.html/1.2/Sun Jan 17 00:03:32 2010// /ComterpHandler.html/1.2/Sun Jan 17 00:03:32 2010// /ComterpHandler__2.html/1.2/Sun Jan 17 00:03:32 2010// /ComterpStackHeightFunc.html/1.2/Sun Jan 17 00:03:32 2010// /CoordinateSpace.html/1.2/Sun Jan 17 00:03:32 2010// /CopyMoveGraphFrameCmd.html/1.1/Sun Jan 17 00:03:32 2010// /CreateClosedSplineFunc.html/1.2/Sun Jan 17 00:03:32 2010// /CreateEllipseFunc.html/1.2/Sun Jan 17 00:03:32 2010// /CreateGraphicFunc.html/1.1/Sun Jan 17 00:03:32 2010// /CreateLineFunc.html/1.2/Sun Jan 17 00:03:32 2010// /CreateMultiLineFunc.html/1.2/Sun Jan 17 00:03:32 2010// /CreateOpenSplineFunc.html/1.2/Sun Jan 17 00:03:32 2010// /CreatePolygonFunc.html/1.2/Sun Jan 17 00:03:32 2010// /CreateRasterFunc.html/1.2/Sun Jan 17 00:03:32 2010// /CreateRectFunc.html/1.2/Sun Jan 17 00:03:32 2010// /CreateTextFunc.html/1.2/Sun Jan 17 00:03:32 2010// /CtoiFunc.html/1.1/Sun Jan 17 00:03:32 2010// /DebugGlyph.html/1.2/Sun Jan 17 00:03:32 2010// /DialogKit.html/1.2/Sun Jan 17 00:03:32 2010// /Dialog__2.html/1.2/Sun Jan 17 00:03:32 2010// /DragManip.html/1.2/Sun Jan 17 00:03:32 2010// /DrawCatalog.html/1.2/Sun Jan 17 00:03:32 2010// /DrawEditor.html/1.1/Sun Jan 17 00:03:32 2010// /DrawIdrawComp.html/1.2/Sun Jan 17 00:03:32 2010// /DrawIdrawScript.html/1.2/Sun Jan 17 00:03:32 2010// /DrawImportCmd.html/1.1/Sun Jan 17 00:03:32 2010// /DrawImportPasteCmd.html/1.1/Sun Jan 17 00:03:32 2010// /DrawKit.html/1.2/Sun Jan 17 00:03:32 2010// /DrawLink.html/1.1/Sun Jan 17 00:03:32 2010// /DrawLinkComp.html/1.1/Sun Jan 17 00:03:32 2010// /DrawLinkFunc.html/1.1/Sun Jan 17 00:03:32 2010// /DrawLinkList.html/1.1/Sun Jan 17 00:03:32 2010// /DrawServ.html/1.1/Sun Jan 17 00:03:32 2010// /DrawServHandler.html/1.1/Sun Jan 17 00:03:32 2010// /EdgeComp.html/1.2/Sun Jan 17 00:03:32 2010// /EdgeScript.html/1.2/Sun Jan 17 00:03:32 2010// /EdgeView.html/1.2/Sun Jan 17 00:03:32 2010// /EivTextBuffer.html/1.2/Sun Jan 17 00:03:32 2010// /EivTextEditor.html/1.2/Sun Jan 17 00:03:32 2010// /Event.html/1.2/Sun Jan 17 00:03:32 2010// /ExportChooser.html/1.2/Sun Jan 17 00:03:32 2010// /FileBrowser.html/1.2/Sun Jan 17 00:03:32 2010// /FilterFunc.html/1.1/Sun Jan 17 00:03:32 2010// /FilterNextFunc.html/1.1/Sun Jan 17 00:03:32 2010// /FontByNameFunc.html/1.1/Sun Jan 17 00:03:32 2010// /FontFamily.html/1.2/Sun Jan 17 00:03:32 2010// /FrameCatalog.html/1.2/Sun Jan 17 00:03:32 2010// /FrameEditor.html/1.2/Sun Jan 17 00:03:32 2010// /FrameImportCmd.html/1.1/Sun Jan 17 00:03:32 2010// /FrameImportPasteCmd.html/1.1/Sun Jan 17 00:03:32 2010// /FrameViewer.html/1.2/Sun Jan 17 00:03:32 2010// /GAcknowledgeDialog.html/1.2/Sun Jan 17 00:03:32 2010// /Glyph.html/1.2/Sun Jan 17 00:03:32 2010// /GrListAtFunc.html/1.2/Sun Jan 17 00:03:32 2010// /GraphComp.html/1.2/Sun Jan 17 00:03:32 2010// /GraphDeleteCmd.html/1.2/Sun Jan 17 00:03:32 2010// /Graphic.html/1.2/Sun Jan 17 00:03:32 2010// /GraphicId.html/1.1/Sun Jan 17 00:03:33 2010// /GraphicIdFunc.html/1.1/Sun Jan 17 00:03:33 2010// /GraphicIdList.html/1.1/Sun Jan 17 00:03:33 2010// /GraphicIds.html/1.1/Sun Jan 17 00:03:33 2010// /GraphicLeakFunc.html/1.1/Sun Jan 17 00:03:33 2010// /GraphicView.html/1.2/Sun Jan 17 00:03:33 2010// /GrayRaster.html/1.2/Sun Jan 17 00:03:33 2010// /HBox.html/1.2/Sun Jan 17 00:03:33 2010// /HGlue.html/1.2/Sun Jan 17 00:03:33 2010// /IdrawCatalog.html/1.2/Sun Jan 17 00:03:33 2010// /Interactor.html/1.2/Sun Jan 17 00:03:33 2010// /InteractorWindow.html/1.2/Sun Jan 17 00:03:33 2010// /IsSpaceFunc.html/1.1/Sun Jan 17 00:03:33 2010// /LayoutKit.html/1.2/Sun Jan 17 00:03:33 2010// /LeafWalker.html/1.1/Sun Jan 17 00:03:33 2010// /LinkSelection.html/1.1/Sun Jan 17 00:03:33 2010// /MarginFrame.html/1.2/Sun Jan 17 00:03:33 2010// /MenuItem.html/1.2/Sun Jan 17 00:03:33 2010// /MenuItem__2.html/1.2/Sun Jan 17 00:03:33 2010// /MlineLeakFunc.html/1.1/Sun Jan 17 00:03:33 2010// /MoveFrameCmd.html/1.2/Sun Jan 17 00:03:33 2010// /MultiLineObj.html/1.2/Sun Jan 17 00:03:33 2010// /MuteFunc.html/1.1/Sun Jan 17 00:03:33 2010// /NColsFunc.html/1.2/Sun Jan 17 00:03:33 2010// /NextFunc.html/1.2/Sun Jan 17 00:03:33 2010// /NodeComp.html/1.2/Sun Jan 17 00:03:33 2010// /NodeScript.html/1.2/Sun Jan 17 00:03:33 2010// /NodeView.html/1.2/Sun Jan 17 00:03:33 2010// /OpaqueDragManip.html/1.2/Sun Jan 17 00:03:33 2010// /OptableFunc.html/1.1/Sun Jan 17 00:03:33 2010// /OvDeleteCmd.html/1.2/Sun Jan 17 00:03:33 2010// /OvExportCmd.html/1.2/Sun Jan 17 00:03:33 2010// /OvNewViewCmd.html/1.2/Sun Jan 17 00:03:33 2010// /OverlayComp.html/1.3/Sun Jan 17 00:03:33 2010// /OverlayEditor.html/1.2/Sun Jan 17 00:03:33 2010// /OverlayIdrawScript.html/1.2/Sun Jan 17 00:03:33 2010// /OverlayKit.html/1.3/Sun Jan 17 00:03:33 2010// /OverlayPS.html/1.2/Sun Jan 17 00:03:33 2010// /OverlayRaster.html/1.2/Sun Jan 17 00:03:33 2010// /OverlayScript.html/1.3/Sun Jan 17 00:03:33 2010// /OverlaySelection.html/1.2/Sun Jan 17 00:03:33 2010// /OverlayUnidraw.html/1.2/Sun Jan 17 00:03:33 2010// /OverlayView.html/1.2/Sun Jan 17 00:03:33 2010// /OverlayViewRef.html/1.1/Sun Jan 17 00:03:33 2010// /OverlayViewer.html/1.2/Sun Jan 17 00:03:33 2010// /OverlaysComp.html/1.2/Sun Jan 17 00:03:33 2010// /ParamList.html/1.2/Sun Jan 17 00:03:33 2010// /Parser.html/1.2/Sun Jan 17 00:03:33 2010// /Path.html/1.2/Sun Jan 17 00:03:33 2010// /Pattern.html/1.2/Sun Jan 17 00:03:33 2010// /PixelPokeLineFunc.html/1.1/Sun Jan 17 00:03:33 2010// /PseudocolorCmd.html/1.2/Sun Jan 17 00:03:33 2010// /PushButton.html/1.2/Sun Jan 17 00:03:34 2010// /RadioButton.html/1.2/Sun Jan 17 00:03:34 2010// /RandFunc.html/1.2/Sun Jan 17 00:03:34 2010// /Raster.html/1.2/Sun Jan 17 00:03:34 2010// /Rectangle31.html/1.2/Sun Jan 17 00:03:34 2010// /Resource.html/1.2/Sun Jan 17 00:03:34 2010// /RpcHdr.html/1.2/Sun Jan 17 00:03:34 2010// /RpcHdr___NONAME.html/1.1/Sun Jan 17 00:03:34 2010// /ScaleGrayCmd.html/1.2/Sun Jan 17 00:03:34 2010// /SessionIdFunc.html/1.1/Sun Jan 17 00:03:34 2010// /SocketFunc.html/1.1/Sun Jan 17 00:03:34 2010// /SocketObj.html/1.1/Sun Jan 17 00:03:34 2010// /StrEditDialog.html/1.2/Sun Jan 17 00:03:34 2010// /StringBrowser.html/1.2/Sun Jan 17 00:03:34 2010// /StringChooser.html/1.2/Sun Jan 17 00:03:34 2010// /Style.html/1.2/Sun Jan 17 00:03:34 2010// /SymAddFunc.html/1.2/Sun Jan 17 00:03:34 2010// /SymStrFunc.html/1.1/Sun Jan 17 00:03:35 2010// /TE_View.html/1.2/Sun Jan 17 00:03:35 2010// /TGlue.html/1.2/Sun Jan 17 00:03:35 2010// /TelltaleState.html/1.2/Sun Jan 17 00:03:35 2010// /TextEditor.html/1.2/Sun Jan 17 00:03:35 2010// /TileFileCmd.html/1.2/Sun Jan 17 00:03:35 2010// /Time.html/1.2/Sun Jan 17 00:03:35 2010// /Tool31.html/1.2/Sun Jan 17 00:03:35 2010// /TopoEdge.html/1.2/Sun Jan 17 00:03:35 2010// /Transformer.html/1.2/Sun Jan 17 00:03:35 2010// /TransformerFunc.html/1.1/Sun Jan 17 00:03:35 2010// /USleepFunc.html/1.1/Sun Jan 17 00:03:35 2010// /UnchainViewersCmd.html/1.2/Sun Jan 17 00:03:35 2010// /Unidraw.html/1.2/Sun Jan 17 00:03:35 2010// /UnidrawComterpHandler.html/1.2/Sun Jan 17 00:03:35 2010// /UnidrawImportHandler.html/1.2/Sun Jan 17 00:03:35 2010// /VBox.html/1.2/Sun Jan 17 00:03:35 2010// /VGlue.html/1.2/Sun Jan 17 00:03:35 2010// /Vertices.html/1.2/Sun Jan 17 00:03:35 2010// /ViewLeakFunc.html/1.1/Sun Jan 17 00:03:35 2010// /Viewer.html/1.2/Sun Jan 17 00:03:35 2010// /WidgetKit.html/1.2/Sun Jan 17 00:03:35 2010// /WindowRep.html/1.2/Sun Jan 17 00:03:35 2010// /_XDisplay.html/1.2/Sun Jan 17 00:03:35 2010// /derivedclasses.html/1.3/Sun Jan 17 00:03:35 2010// /derivedtree.html/1.3/Sun Jan 17 00:03:35 2010// /index.html/1.3/Sun Jan 17 00:03:35 2010// /ostreamb.html/1.2/Sun Jan 17 00:03:35 2010// /other.html/1.2/Sun Jan 17 00:03:35 2010// /rpcbuf.html/1.2/Sun Jan 17 00:03:35 2010// /smindex.html/1.3/Sun Jan 17 00:03:35 2010// /tiff.html/1.2/Sun Jan 17 00:03:35 2010// /token.html/1.2/Sun Jan 17 00:03:35 2010// D ivtools-doc/doc/classes/CVS/Repository0000644000076500007650000000003010747654203020604 0ustar scottscott00000000000000ivtools-doc/doc/classes ivtools-doc/doc/classes/CVS/Root0000644000076500007650000000007310747654203017357 0ustar scottscott00000000000000:ext:johnston@ivtools.cvs.sourceforge.net:/cvsroot/ivtools ivtools-doc/doc/classes/CycleEnumEditor.html0000644000076500007650000000675111324451724022003 0ustar scottscott00000000000000 Description of CycleEnumEditor
    class CycleEnumEditor : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/enumform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Damage.html0000644000076500007650000002325611324451724020125 0ustar scottscott00000000000000 Description of Damage
    class Damage (Return to index)

    damage-repair mechanism

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Graphic/damage.h

    Description:

    maintains an array of non-overlapping rectangles representing damaged areas of of a canvas, used for smart redraw.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Data.html0000644000076500007650000000241611324451724017613 0ustar scottscott00000000000000 Description of Data
    class Data : public Resource (Return to index)

    undo information object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/data.h

    Description:

    encapsulates undo information that components store in commands they interpret.

    man page

    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Date.html0000644000076500007650000003143411324451724017621 0ustar scottscott00000000000000 Description of Date
    class Date (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Time/Date.h

    Description:

    type definitions

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/DebugGlyph.html0000644000076500007650000001252611324451724020777 0ustar scottscott00000000000000 Description of DebugGlyph
    class DebugGlyph : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/debug.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Deck.html0000644000076500007650000001270211324451724017607 0ustar scottscott00000000000000 Description of Deck
    class Deck : public Scene (Return to index)

    a Scene for stacking one or more Interactor (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/deck.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Deck__2.html0000644000076500007650000001101711324451724020165 0ustar scottscott00000000000000 Description of Deck__2
    class Deck__2 : public PolyGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/deck.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DecrAfterFunc.html0000644000076500007650000000325211324451724021414 0ustar scottscott00000000000000 Description of DecrAfterFunc
    class DecrAfterFunc : public AssignFunc (Return to index)

    (decrement after)-- operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/assignfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DecrFunc.html0000644000076500007650000000322211324451724020427 0ustar scottscott00000000000000 Description of DecrFunc
    class DecrFunc : public AssignFunc (Return to index)

    --(decrement before) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/assignfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DegToRadFunc.html0000644000076500007650000000341611324451724021210 0ustar scottscott00000000000000 Description of DegToRadFunc
    class DegToRadFunc : public ComFunc (Return to index)

    degrees to radianscommand for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=degtorad(dbl) -- convert degrees to radians

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DeleteCmd.html0000644000076500007650000000656511324451724020601 0ustar scottscott00000000000000 Description of DeleteCmd
    class DeleteCmd : public Command (Return to index)

    delete command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DeleteFrameCmd.html0000644000076500007650000000564311324451724021550 0ustar scottscott00000000000000 Description of DeleteFrameCmd
    class DeleteFrameCmd : public Command (Return to index)

    command to delete a frame.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DeleteFrameData.html0000644000076500007650000000343311324451724021711 0ustar scottscott00000000000000 Description of DeleteFrameData
    class DeleteFrameData : public VoidData (Return to index)

    data object for DeleteFrameCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DeleteFunc.html0000644000076500007650000000346611324451724020766 0ustar scottscott00000000000000 Description of DeleteFunc
    class DeleteFunc : public UnidrawFunc (Return to index)

    command to delete graphics in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    delete(compview [compview ...]) -- delete graphic(s)

    Public:



    (more documentation)

    ivtools-doc/doc/classes/derivedclasses.html0000644000076500007650000044100311324451727021744 0ustar scottscott00000000000000ACE_Event_Handler:
  • ACE_IO_Handler
  • AckBackHandler
  • ACE_IO_Handler:

    ACE_NULL_SYNCH:

  • ComterpHandler
  • UnidrawImportHandler
  • ACE_SOCK_STREAM:

  • ComterpHandler
  • UnidrawImportHandler
  • ACE_Svc_Handler:

  • ComterpHandler
  • UnidrawImportHandler
  • ACosFunc:

    ALIterator:

    AList:

    ASinFunc:

    ATan2Func:

    ATanFunc:

    AboutCmd:

    AbsFunc:

    AcceptingObservable:

  • ObservableBoolean
  • ObservableEnum
  • ObservableText
  • AceDispatcher:

    AckBackHandler:

    AcknowledgeBoxFunc:

    AcknowledgeDialog:

    Action:

  • ActionCallback
  • EditorLauncherAction
  • EnumActionCallback
  • Macro
  • RemoteConnectAction
  • RemoteConnectPopupAction
  • ActionCallback:

    ActiveHandler:

  • Button
  • Slider
  • AddAssignFunc:

    AddFunc:

    AddToolButtonFunc:

    Adjustable:

  • BoundedValue
  • ScrollBox
  • Scrollable
  • TE_Adjustable
  • Adjuster:

  • Mover
  • OvMover
  • Zoomer
  • Aggregate:

    Align:

    AlignCmd:

    AlignToGridCmd:

    AlistLeakFunc:

    Allocation:

    AllocationInfo:

    AllocationTable:

    Allotment:

    AlphaTransFunc:

    AlphaTransparentRasterCmd:

    AndFunc:

    AnnotateDialog:

    AnnotateTool:

    ApplicationWindow:

  • TextEditAppWindow
  • ArrayCompositor:

    ArrowCmd:

    ArrowLine:

    ArrowLineComp:

    ArrowLineOvComp:

    ArrowLineOvView:

    ArrowLinePS:

    ArrowLineScript:

    ArrowLineView:

    ArrowMultiLine:

    ArrowMultiLineComp:

    ArrowMultiLineOvComp:

    ArrowMultiLineOvView:

    ArrowMultiLinePS:

    ArrowMultiLineScript:

    ArrowMultiLineView:

    ArrowOpenBSpline:

    ArrowSplineComp:

    ArrowSplineOvComp:

    ArrowSplineOvView:

    ArrowSplinePS:

    ArrowSplineScript:

    ArrowSplineView:

    ArrowSubclassName:

    ArrowVar:

    ArrowVarView:

    Arrowhead:

    AssignFunc:

  • AddAssignFunc
  • DecrAfterFunc
  • DecrFunc
  • DivAssignFunc
  • IncrAfterFunc
  • IncrFunc
  • ModAssignFunc
  • MpyAssignFunc
  • SubAssignFunc
  • AttrDialog:

    AttrDialogImpl:

    AttrListFunc:

  • BothSetAttrFunc
  • DoneAttrListFunc
  • DoneSetAttrFunc
  • FalseAttrListFunc
  • NextAttrListFunc
  • NextInSelectionFunc
  • TrueAttrListFunc
  • Attribute:

    AttributeDialog:

    AttributeList:

    AttributeListEditor:

    AttributeTool:

    AttributeValue:

  • ComValue
  • AttributeValueList:

    AttrvLeakFunc:

    AutoNewFrameCmd:

    AutoNewFrameFunc:

    Axis:

  • XAxis
  • YAxis
  • BackCmd:

  • FrameBackCmd
  • PushCmd
  • BackQuoteFunc:

    Background:

    Banner:

    BarPlotFunc:

    BasicDialog:

  • AcknowledgeDialog
  • ConfirmDialog
  • FileDialog
  • GridDialog
  • MoveDialog
  • PageDialog
  • PanDialog
  • RotateDialog
  • ScaleDialog
  • StringDialog
  • ZoomDialog
  • Bevel:

    BevelFrame:

  • Bevel
  • BitAndFunc:

    BitNotFunc:

    BitOrFunc:

    BitXorFunc:

    Bitmap:

    BitmapRep:

    BooleanObserver:

    Border:

  • HBorder
  • VBorder
  • BorderFrame:

    BothSetAttrFunc:

    BoundedValue:

  • StrListValue
  • BoundedValueEditor:

    BoundedValueObserver:

    BoundedValueTable:

    BoundedValueTableEditor:

    Box:

  • HBox
  • VBox
  • BoxObj:

    Browser:

  • FileBrowser
  • Brush:

  • PSBrush
  • BrushCmd:

    BrushFunc:

    BrushRep:

    BrushVar:

    BrushVarView:

    Button:

  • Stepper
  • TextButton
  • ToolButton
  • ButtonState:

    CDownLoader:

    CFtp:

    CGlue:

    CHttp:

    CSocket:

  • CFtp
  • CHttp
  • CSolver:

    CSolverState:

    CameraMotionCmd:

  • FixedPanCmd
  • PanCmd
  • PrecisePanCmd
  • PreciseZoomCmd
  • ZoomCmd
  • Canvas:

  • Printer
  • CanvasDamage:

    CanvasRep:

    Catalog:

  • IdrawCatalog
  • CeilFunc:

    CenterCmd:

    CenterFunc:

    CenterLayout:

    ChainViewerCmd:

    ChainViewersCmd:

    ChangeIdFunc:

    CharFieldEditor:

    CharFunc:

    Character:

    CheckBooleanEditor:

    CheckBox:

    ChoiceItem:

    Circle:

    Circle31:

    ClassBuffer:

    ClassEditor:

    ClassInfo:

    ClassSymbolFunc:

    ClipPolyAAndBCmd:

    ClipPolyAMinusBCmd:

    ClipPolyBMinusACmd:

    ClipPolyCmd:

    ClipPolyTool:

    ClipRectCmd:

    ClipRectTool:

    Clipboard:

    Clock:

    CloseEditorCmd:

  • OvCloseEditorCmd
  • ClosedBSpline:

  • F_ClosedBSpline
  • SF_ClosedBSpline
  • S_ClosedBSpline
  • ClosedSplineComp:

    ClosedSplineOvComp:

    ClosedSplineOvView:

    ClosedSplinePS:

    ClosedSplineScript:

    ClosedSplineView:

    Closed_BSpline:

    Closed_BSpline31:

    Color:

  • PSColor
  • ColorCmd:

    ColorData:

    ColorFunc:

    ColorRep:

    ColorRgbFunc:

    ColorVar:

    ComEditor:

  • FrameEditor
  • GraphEditor
  • ComFunc:

  • ACosFunc
  • ASinFunc
  • ATan2Func
  • ATanFunc
  • AlistLeakFunc
  • AssignFunc
  • AttrListFunc
  • AttrvLeakFunc
  • BackQuoteFunc
  • CharFunc
  • ClassSymbolFunc
  • CommandLeakFunc
  • CompLeakFunc
  • ComterpPauseFunc
  • ComterpStackHeightFunc
  • ComterpTraceFunc
  • CondFunc
  • CosFunc
  • CtoiFunc
  • DegToRadFunc
  • DotFunc
  • DotNameFunc
  • DotValFunc
  • DoubleFunc
  • EachFunc
  • EvalFunc
  • ExitFunc
  • ExpFunc
  • FloatFunc
  • ForFunc
  • GlobalSymbolFunc
  • GrAttrListFunc
  • GrListAtFunc
  • GrListSizeFunc
  • GraphicLeakFunc
  • HelpFunc
  • IfThenElseFunc
  • IntFunc
  • InvertXformFunc
  • IsSpaceFunc
  • IueFunc
  • JoinStrFunc
  • ListAtFunc
  • ListFunc
  • ListSizeFunc
  • Log10Func
  • LogFunc
  • LongFunc
  • MlineLeakFunc
  • MuteFunc
  • NilFunc
  • NumFunc
  • OptableFunc
  • PiFunc
  • PostEvalFunc
  • PostFixFunc
  • PowFunc
  • PrintFunc
  • QuitFunc
  • RadToDegFunc
  • RandFunc
  • RasterFunc
  • RemoteFunc
  • RunFunc
  • SRandFunc
  • SeqFunc
  • ShellFunc
  • ShortFunc
  • SinFunc
  • SocketFunc
  • SplitStrFunc
  • SqrtFunc
  • StrmFunc
  • SumFunc
  • SymAddFunc
  • SymIdFunc
  • SymStrFunc
  • SymValFunc
  • SymbolFunc
  • TanFunc
  • TimeExprFunc
  • TupleFunc
  • TypeSymbolFunc
  • USleepFunc
  • UnidrawFunc
  • VarFunc
  • ViewLeakFunc
  • WhileFunc
  • XformFunc
  • XposeFunc
  • ComFuncState:

    ComTE_View:

    ComTerp:

  • ComTerpServ
  • ComTerpIOHandler:

    ComTerpModule:

  • LexScan
  • Parser
  • ComTerpServ:

  • RasterTerp
  • ComTerpState:

    ComTextEditor:

    ComValue:

    Command:

  • AboutCmd
  • AlignCmd
  • AlignToGridCmd
  • AlphaTransparentRasterCmd
  • ArrowCmd
  • BackCmd
  • BrushCmd
  • CameraMotionCmd
  • CenterCmd
  • ChainViewerCmd
  • ChainViewersCmd
  • CloseEditorCmd
  • ColorCmd
  • ConnectCmd
  • ConvexHullCmd
  • CopyCmd
  • CreateFrameCmd
  • CutCmd
  • DeleteCmd
  • DeleteFrameCmd
  • DesensitizeViewCmd
  • DirtyCmd
  • DupCmd
  • EdgeConnectCmd
  • EdgeUpdateCmd
  • FixViewCmd
  • FontCmd
  • FrontCmd
  • GravityCmd
  • GridCmd
  • GridSpacingCmd
  • GroupCmd
  • HideViewCmd
  • ImageCmd
  • ImportCmd
  • MacroCmd
  • MobilityCmd
  • MoveCmd
  • MoveFrameCmd
  • NOPCmd
  • NewCompCmd
  • NewViewCmd
  • NodeTextCmd
  • NormSizeCmd
  • OrientationCmd
  • OvAboutCmd
  • OvExportCmd
  • OvImportCmd
  • OvPreciseBrushCmd
  • OvPrintCmd
  • PageCmd
  • PasteCmd
  • PatternCmd
  • PreciseMoveCmd
  • PrecisePageCmd
  • PreciseRotateCmd
  • PreciseScaleCmd
  • PrintCmd
  • QuitCmd
  • RedToFitCmd
  • RedoCmd
  • ReplaceRasterCmd
  • RevertCmd
  • RotateCmd
  • SaveCompAsCmd
  • SaveCompCmd
  • ScaleCmd
  • ScribblePointerCmd
  • SensitizeViewsCmd
  • SetAttrByExprCmd
  • ShowOtherFrameCmd
  • SlctAllCmd
  • SlctByAttrCmd
  • TileFileCmd
  • TransformCmd
  • UnchainViewerCmd
  • UnchainViewersCmd
  • UndoCmd
  • UnfixViewCmd
  • UngroupCmd
  • UnhideViewsCmd
  • UnhighlightRasterCmd
  • ViewCompCmd
  • CommandControl:

    CommandDoer:

    CommandInteractor:

    CommandLeakFunc:

    CommandPusher:

    CompLeakFunc:

    CompNameVar:

    CompNameVarView:

    CompletionEditor:

    Component:

  • GraphicComp
  • ComponentView:

  • ExternView
  • GraphicView
  • Composition:

  • LRComposition
  • TBComposition
  • Compositor:

  • ArrayCompositor
  • SimpleCompositor
  • TeXCompositor
  • ComterpHandler:

  • IueHandler
  • UnidrawComterpHandler
  • ComterpPauseFunc:

  • ComterpStepFunc
  • ComterpStackHeightFunc:

    ComterpStepFunc:

    ComterpTraceFunc:

    ConcatFunc:

    ConcatNextFunc:

    CondFunc:

    ConfirmBoxFunc:

    ConfirmDialog:

    ConnectCmd:

    ConnectManip:

    ConnectTool:

    ConnectionsDialog:

    Connector:

  • PadComp
  • PinComp
  • SlotComp
  • ConnectorView:

  • PadView
  • PinView
  • SlotView
  • Control:

  • Menu
  • MenuItem
  • UControl
  • ControlInfo:

    ControlState:

    ConvexHullCmd:

    ConvexHullTool:

    CoordinateSpace:

    CopyCmd:

  • FrameCopyCmd
  • GraphCopyCmd
  • CopyMoveFrameCmd:

  • CopyMoveGraphFrameCmd
  • CopyMoveGraphFrameCmd:

    CopyString:

    CosFunc:

    CreateClosedSplineFunc:

    CreateEllipseFunc:

    CreateFrameCmd:

    CreateFrameFunc:

    CreateGraphicFunc:

  • CreateClosedSplineFunc
  • CreateEllipseFunc
  • CreateLineFunc
  • CreateMultiLineFunc
  • CreateOpenSplineFunc
  • CreatePolygonFunc
  • CreateRasterFunc
  • CreateRectFunc
  • CreateTextFunc
  • CreateLineFunc:

    CreateMoveFrameCmd:

    CreateMultiLineFunc:

    CreateOpenSplineFunc:

    CreatePolygonFunc:

    CreateRasterFunc:

    CreateRectFunc:

    CreateTextFunc:

    Creator:

  • IdrawCreator
  • CtoiFunc:

    Cursor:

    CursorRep:

  • CursorRepBitmap
  • CursorRepData
  • CursorRepFont
  • CursorRepXFont
  • CursorRepBitmap:

    CursorRepData:

    CursorRepFont:

    CursorRepXFont:

    CutCmd:

  • GraphCutCmd
  • CycleEnumEditor:

    DFace:

    Damage:

  • OverlayDamage
  • Data:

  • ColorData
  • GSData
  • MobilityData
  • MoveData
  • UngroupData
  • VoidData
  • _ArrowData
  • Date:

    DebugGlyph:

    Deck:

    DecrAfterFunc:

    DecrFunc:

    DegToRadFunc:

    DeleteCmd:

  • OvDeleteCmd
  • DeleteFrameCmd:

    DeleteFrameData:

    DeleteFunc:

    DesensitizeViewCmd:

    Dialog:

  • AnnotateDialog
  • AttributeDialog
  • BasicDialog
  • ConnectionsDialog
  • FileChooser
  • GAcknowledgeDialog
  • GConfirmDialog
  • NodeDialog
  • ObsTextDialog
  • OpenFileChooser
  • StrChooser
  • StrEditDialog
  • StringChooser
  • TerpDialog
  • DialogKit:

  • MFDialogKit
  • OLDialogKit
  • Digit:

    Directory:

    DirtyCmd:

    Dispatcher:

  • AceDispatcher
  • Display:

    DisplayRep:

    DivAssignFunc:

    DivFunc:

    DoneAttrListFunc:

    DoneSetAttrFunc:

    DotFunc:

  • GrDotFunc
  • DotNameFunc:

    DotValFunc:

    DoubleFunc:

    DownMover:

    Drag:

    DragEditor:

    DragManip:

  • ConnectManip
  • OpaqueDragManip
  • VertexManip
  • DragValuator:

    DragZone:

  • DragZoneSink
  • DragZoneSink:

    DrawCatalog:

    DrawCreator:

    DrawEditor:

    DrawIdrawComp:

    DrawIdrawScript:

    DrawIdrawView:

    DrawImportCmd:

    DrawImportPasteCmd:

    DrawKit:

    DrawLink:

    DrawLinkComp:

    DrawLinkFunc:

    DrawLinkList:

    DrawServ:

    DrawServHandler:

    DrawingToGraphicFunc:

    DrawingToScreenFunc:

    DupCmd:

  • GraphDupCmd
  • EachFunc:

    EdgeComp:

    EdgeConnectCmd:

    EdgeData:

    EdgePS:

    EdgeScript:

    EdgeUpdateCmd:

    EdgeView:

    Editor:

  • IdrawEditor
  • EditorInfo:

    EditorLauncherAction:

    EivTextBuffer:

    EivTextEditor:

  • ComTextEditor
  • Ellipse:

  • F_Ellipse
  • SF_Ellipse
  • S_Ellipse
  • Ellipse31:

    EllipseComp:

    EllipseOvComp:

    EllipseOvView:

    EllipsePS:

    EllipseScript:

    EllipseView:

    Enlarger:

    EnumActionCallback:

    EnumObserver:

    EqualFunc:

    EvalFunc:

    Event:

    EventRep:

    ExitFunc:

    ExpFunc:

    ExportChooser:

    ExportChooserImpl:

    ExportEnumEditor:

    ExportFunc:

    Extension:

    Extent:

    ExternView:

  • InorderView
  • PostorderView
  • PreorderView
  • FBoxObj:

    FFillPolygonObj:

    FLineObj:

    FMultiLineObj:

  • FFillPolygonObj
  • FPointObj:

    F_Circle:

    F_ClosedBSpline:

    F_Ellipse:

  • F_Circle
  • F_OpenBSpline:

    F_Polygon:

    F_Rect:

    FalseAttrListFunc:

    FieldEditor:

  • CharFieldEditor
  • FieldEditorAction:

  • FieldEditorCallback
  • FieldEditorCallback:

    Figure:

  • Circle
  • Closed_BSpline
  • Ellipse
  • Line
  • Open_BSpline
  • Polygon
  • Polyline
  • Rectangle
  • File:

  • InputFile
  • FileBrowser:

    FileChooser:

  • PrintDialog
  • FileChooserAction:

  • FileChooserCallback
  • FileChooserCallback:

    FileDialog:

    FileNameVarView:

    FillPolygonObj:

    FilterFunc:

    FilterNextFunc:

    FixViewCmd:

    FixedLayout:

    FixedPanCmd:

    FixedPin:

    FloatFunc:

    FloorFunc:

    Font:

  • PSFont
  • PSFont31
  • FontBoundingBox:

    FontByNameFunc:

    FontCmd:

    FontFamily:

    FontFamilyRep:

    FontFunc:

    FontRep:

    FontVar:

    FontVarView:

    ForFunc:

    Frame:

  • MarginFrame
  • ShadowFrame
  • ShowFrame
  • FrameBackCmd:

    FrameBeginCmd:

    FrameCatalog:

  • DrawCatalog
  • FrameComp:

  • FramesComp
  • FrameCopyCmd:

    FrameCreator:

  • DrawCreator
  • FrameEditor:

  • DrawEditor
  • FrameEndCmd:

    FrameFileComp:

    FrameFileScript:

    FrameFileView:

    FrameFrontCmd:

    FrameFunc:

    FrameGroupCmd:

    FrameIdrawComp:

  • DrawIdrawComp
  • FrameIdrawPS:

    FrameIdrawScript:

  • DrawIdrawScript
  • FrameIdrawView:

  • DrawIdrawView
  • FrameImportCmd:

  • DrawImportCmd
  • FrameImportPasteCmd:

  • DrawImportPasteCmd
  • FrameKit:

  • DrawKit
  • FrameListState:

    FrameNewViewCmd:

    FrameNumberState:

    FrameOverlaysComp:

    FrameOverlaysScript:

    FrameOverlaysView:

    FrameScript:

  • FramesScript
  • FrameUngroupCmd:

    FrameView:

  • FramesView
  • FrameViewer:

    FramesComp:

  • FrameFileComp
  • FrameIdrawComp
  • FramesScript:

  • FrameFileScript
  • FrameIdrawScript
  • FramesView:

  • FrameFileView
  • FrameIdrawView
  • FrontCmd:

  • FrameFrontCmd
  • PullCmd
  • FullGraphic:

  • Picture
  • GAcknowledgeDialog:

    GConfirmDialog:

    GFieldEditor:

    GFieldEditorAction:

  • GFieldEditorCallback
  • GFieldEditorCallback:

    GLContext:

    GSData:

    GVUpdater:

    GlobalSymbolFunc:

    Glue:

  • HGlue
  • VGlue
  • Glyph:

  • Aggregate
  • ArrowSubclassName
  • Character
  • Figure
  • Glue
  • Graphic31
  • Group
  • Image
  • Interactor
  • Label
  • MonoGlyph
  • Page
  • Plot
  • PolyGlyph
  • Rule
  • Stencil
  • GlyphEditor:

    GlyphViewer:

    GrAttrListFunc:

    GrDotFunc:

    GrListAtFunc:

    GrListSizeFunc:

    GrLocTool:

    Graph:

    GraphCatalog:

    GraphComp:

    GraphCopyCmd:

    GraphCreator:

    GraphCutCmd:

    GraphData:

  • EdgeData
  • NodeData
  • GraphDeleteCmd:

    GraphDupCmd:

    GraphEditor:

    GraphIdrawComp:

    GraphIdrawScript:

    GraphIdrawView:

    GraphImportCmd:

    GraphKit:

    GraphMoveTool:

    GraphNewViewCmd:

    GraphPasteCmd:

    GraphScript:

    GraphView:

    Graphic:

  • Ellipse
  • FullGraphic
  • Line
  • OverlayGraphic
  • PadGraphic
  • PageGraphic
  • PinGraphic
  • Point
  • RasterRect
  • Rect
  • SlotGraphic
  • ULabel
  • UStencil
  • Vertices
  • Graphic31:

  • Circle31
  • Closed_BSpline31
  • Ellipse31
  • Line31
  • Open_BSpline31
  • PolyGraphic
  • Polygon31
  • Polyline31
  • Rectangle31
  • Text31
  • GraphicBlock:

  • Viewer
  • GraphicComp:

  • Connector
  • EllipseComp
  • GraphicComps
  • LineComp
  • LinkComp
  • OverlayComp
  • RasterComp
  • RectComp
  • StencilComp
  • TextComp
  • VerticesComp
  • GraphicCompTool:

    GraphicComps:

  • IdrawComp
  • GraphicId:

  • GraphicIds
  • GraphicIdFunc:

    GraphicIdList:

    GraphicIds:

    GraphicLeakFunc:

    GraphicMaster:

    GraphicToDrawingFunc:

    GraphicView:

  • ConnectorView
  • EllipseView
  • GraphicViews
  • LineView
  • LinkView
  • OverlayView
  • RasterView
  • RectView
  • StencilView
  • TextView
  • VerticesView
  • ViewerView
  • GraphicViews:

  • IdrawView
  • GravityCmd:

    GravityVar:

    GravityVarView:

    GrayRampCmd:

    GrayRampFunc:

    GrayRaster:

    GreaterThanFunc:

    GreaterThanOrEqualFunc:

    Grid:

    GridCmd:

    GridDialog:

    GridSpacingCmd:

  • IGridSpacingCmd
  • Group:

    GroupCmd:

  • OvGroupCmd
  • GrowGroupFunc:

    GrowingBSpline:

    GrowingClosedBSpline:

    GrowingMultiLine:

    GrowingPolygon:

    GrowingVertices:

  • GrowingBSpline
  • GrowingClosedBSpline
  • GrowingMultiLine
  • GrowingPolygon
  • HBorder:

    HBox:

  • MenuBar
  • HGlue:

    HPanelControl:

    HRule:

    HScrollBar:

    HScroller:

    HSlotComp:

    HSlotView:

    Handler:

  • InteractorHandler
  • HandlesFunc:

    HelpFunc:

    HideViewCmd:

    HighlightFunc:

    Hit:

    Host:

    IClass:

    IGridSpacingCmd:

    IOCallback:

    IOHandler:

  • ComTerpIOHandler
  • IOCallback
  • RpcPeer
  • RpcReader
  • RpcService
  • IconWindow:

    IdrawCatalog:

  • OverlayCatalog
  • IdrawComp:

    IdrawCreator:

  • OverlayCreator
  • IdrawEditor:

  • OverlayEditor
  • IdrawReader:

    IdrawView:

    IfThenElseFunc:

    Image:

    ImageCmd:

    ImportChooser:

    ImportChooserImpl:

    ImportCmd:

    ImportFunc:

    IncrAfterFunc:

    IncrFunc:

    IndexedGsMixin:

  • OverlayIdrawComp
  • IndexedPicMixin:

  • OverlayIdrawComp
  • IndexedPtsMixin:

  • OverlayIdrawComp
  • InorderView:

    InputFile:

  • StdInput
  • InputHandler:

  • ActiveHandler
  • Browser
  • Dialog
  • DragEditor
  • Editor
  • FieldEditor
  • GFieldEditor
  • GlyphViewer
  • Graph
  • Menu
  • TE_View
  • IntFunc:

    Interactor:

  • Adjuster
  • Banner
  • Border
  • Button
  • DFace
  • Glue
  • GraphicBlock
  • Message
  • OverlaySlider
  • Scene
  • Scroller
  • Slider
  • StringBrowser
  • StringEditor
  • TextEditor
  • UControlInteractor
  • InteractorHandler:

    InteractorWindow:

    InvertXformFunc:

    IsSpaceFunc:

    IterateFunc:

    Iterator:

    IueConnCompFunc:

    IueExportFunc:

    IueFunc:

  • IueConnCompFunc
  • IueExportFunc
  • IueGaussianFunc
  • IueGetPixelFunc
  • IueImageFunc
  • IueNcolsFunc
  • IueNrowsFunc
  • IuePixTypeFunc
  • IueThresholdFunc
  • IueGaussianFunc:

    IueGetPixelFunc:

    IueHandler:

    IueImageComp:

    IueImageFunc:

    IueNcolsFunc:

    IueNrowsFunc:

    IuePixTypeFunc:

    IueServComp:

  • IueImageComp
  • IueThresholdFunc:

    JoinStrFunc:

    KeyMap:

    LRComposition:

    LRMarker:

    Label:

    Layout:

  • Align
  • CenterLayout
  • FixedLayout
  • MarginLayout
  • NaturalLayout
  • Superpose
  • Tile
  • TileFirstAligned
  • TileReversed
  • TileReversedFirstAligned
  • VariableLayout
  • LayoutKit:

    LeafWalker:

    LeakChecker:

    LeftMover:

    LeftShiftFunc:

    LessThanFunc:

    LessThanOrEqualFunc:

    LexScan:

  • Scanner
  • Line:

  • ArrowLine
  • Line31:

    LineComp:

  • ArrowLineComp
  • LineObj:

    LineOvComp:

  • ArrowLineOvComp
  • LineOvView:

  • ArrowLineOvView
  • LinePS:

  • ArrowLinePS
  • LineScript:

  • ArrowLineScript
  • LineView:

  • ArrowLineView
  • LinkComp:

    LinkSelection:

    LinkView:

    List:

  • ListItr
  • ListUpdater
  • ListAtFunc:

    ListFunc:

    ListItr:

    ListSizeFunc:

    ListUpdater:

    Log10Func:

    LogFunc:

    LogScaleCmd:

    LogScaleFunc:

    LongFunc:

    MFDialogKit:

    MFKit:

    Macro:

    MacroCmd:

  • AutoNewFrameCmd
  • ClipPolyAAndBCmd
  • ClipPolyAMinusBCmd
  • ClipPolyBMinusACmd
  • ClipPolyCmd
  • ClipRectCmd
  • CopyMoveFrameCmd
  • CreateMoveFrameCmd
  • FrameImportPasteCmd
  • ProcessingCmd
  • ReplaceCmd
  • MagnifVar:

    MagnifVarView:

    MagnifyTool:

    ManagedWindow:

  • ApplicationWindow
  • IconWindow
  • TopLevelWindow
  • WidgetWindow
  • ManagedWindowHintInfo:

    ManagedWindowRep:

    ManipGroup:

    Manipulator:

  • DragManip
  • ManipGroup
  • TextManip
  • MarginFrame:

    MarginLayout:

    MatchEditor:

    Math:

    MaxFunc:

    MbrFunc:

    MeanFunc:

    Memory:

    Menu:

  • PopupMenu
  • PulldownMenu
  • PullrightMenu
  • MenuBar:

    MenuEnumEditor:

    MenuItem:

    Message:

    MeterObserver:

    MinFunc:

    MinusFunc:

    MlineLeakFunc:

    MobilityCmd:

    MobilityData:

    ModAssignFunc:

    ModFunc:

    ModifStatusVar:

    ModifStatusVarView:

    MonoGlyph:

  • Axis
  • Background
  • BevelFrame
  • BooleanObserver
  • Border
  • BoundedValueEditor
  • BoundedValueObserver
  • CheckBooleanEditor
  • Composition
  • CycleEnumEditor
  • DebugGlyph
  • Drag
  • DragValuator
  • DragZone
  • EivTextEditor
  • EnumObserver
  • GLContext
  • GlyphEditor
  • InputHandler
  • LRMarker
  • MeterObserver
  • NameView
  • ObsTextEditor
  • PaletteBooleanEditor
  • Patch
  • Placement
  • Shadow
  • Target
  • Telltale
  • TextObserver
  • TimeGlyph
  • TransformSetter
  • Valuator
  • XYMarker
  • MonoKit:

    MonoScene:

  • Control
  • Dialog
  • Frame
  • IClass
  • OverlayPanner
  • Panner
  • ScrollBar
  • StateVarView
  • Viewport
  • Morpher:

    MoveCmd:

    MoveData:

    MoveDialog:

    MoveFrameCmd:

  • FrameBeginCmd
  • FrameEndCmd
  • MoveFrameFunc:

    MoveFunc:

    MoveTool:

  • GraphMoveTool
  • Mover:

  • DownMover
  • LeftMover
  • RightMover
  • UpMover
  • MpyAssignFunc:

    MpyFunc:

    MultiLine:

  • SF_MultiLine
  • S_MultiLine
  • MultiLineComp:

  • ArrowMultiLineComp
  • MultiLineObj:

  • FillPolygonObj
  • MultiLineOvComp:

  • ArrowMultiLineOvComp
  • MultiLineOvView:

  • ArrowMultiLineOvView
  • MultiLinePS:

  • ArrowMultiLinePS
  • MultiLineScript:

  • ArrowMultiLineScript
  • MultiLineView:

  • ArrowMultiLineView
  • MuteFunc:

    NBrushesFunc:

    NColorsFunc:

    NColsFunc:

    NFontsFunc:

    NOPCmd:

    NPatternsFunc:

    NRowsFunc:

    NameState:

  • FrameListState
  • FrameNumberState
  • PtrLocState
  • NameVar:

  • CompNameVar
  • NameVarView:

    NameView:

    NaturalLayout:

    NegFunc:

    NewCompCmd:

  • OvNewCompCmd
  • NewViewCmd:

  • OvNewViewCmd
  • NextAttrListFunc:

    NextFunc:

    NextInSelectionFunc:

    NilFunc:

    NodeComp:

    NodeData:

    NodeDialog:

    NodeScript:

    NodeTextCmd:

    NodeView:

    NormSizeCmd:

    NotEqualFunc:

    NullTerminatedString:

    NumFramesFunc:

    NumFunc:

  • AbsFunc
  • AddFunc
  • AndFunc
  • BitAndFunc
  • BitNotFunc
  • BitOrFunc
  • BitXorFunc
  • CeilFunc
  • DivFunc
  • EqualFunc
  • FloorFunc
  • GreaterThanFunc
  • GreaterThanOrEqualFunc
  • LeftShiftFunc
  • LessThanFunc
  • LessThanOrEqualFunc
  • MaxFunc
  • MinFunc
  • MinusFunc
  • ModFunc
  • MpyFunc
  • NegFunc
  • NotEqualFunc
  • OrFunc
  • RightShiftFunc
  • RoundFunc
  • SubFunc
  • OLDialogKit:

    OLKit:

    ObjectMap:

    ObsTextDialog:

    ObsTextEditor:

    Observable:

  • AcceptingObservable
  • DragEditor
  • DrawLink
  • DrawLinkList
  • NameState
  • ObservableTime
  • OverlayComp
  • TE_View
  • TelltaleState
  • ObservableBoolean:

    ObservableEnum:

  • BoundedValueTable
  • ObservableText:

    ObservableTime:

    Observer:

  • BooleanObserver
  • BoundedValueObserver
  • BoundedValueTable
  • BoundedValueTableEditor
  • Browser
  • Button
  • CheckBooleanEditor
  • CycleEnumEditor
  • DragValuator
  • DrawLinkList
  • EnumObserver
  • MenuItem
  • MeterObserver
  • NameView
  • ObsTextEditor
  • OverlayComp
  • PaletteBooleanEditor
  • RadioEnumEditor
  • Slider
  • TE_Adjustable
  • Telltale
  • TextObserver
  • TimeGlyph
  • Valuator
  • OpaqueDragManip:

    OpenBSpline:

  • F_OpenBSpline
  • SF_OpenBSpline
  • S_OpenBSpline
  • OpenCmd:

    OpenFileChooser:

  • ImportChooser
  • PrintChooser
  • SaveAsChooser
  • OpenFileChooserAction:

  • OpenFileChooserCallback
  • OpenFileChooserCallback:

    OpenFileChooserImpl:

  • ImportChooserImpl
  • PrintChooserImpl
  • SaveAsChooserImpl
  • Open_BSpline:

    Open_BSpline31:

    OptableFunc:

    OptionDesc:

    OrFunc:

    OrientationCmd:

    OvAboutCmd:

    OvCloseEditorCmd:

    OvDeleteCmd:

  • GraphDeleteCmd
  • OvDownMover:

    OvExportCmd:

    OvFileImage:

  • OvPortableFileImage
  • OvTiledFileImage
  • OvGroupCmd:

  • FrameGroupCmd
  • OvImageMapCmd:

    OvImportCmd:

  • FrameImportCmd
  • GraphImportCmd
  • OvLeftMover:

    OvMemoryImage:

    OvMover:

  • OvDownMover
  • OvLeftMover
  • OvRightMover
  • OvUpMover
  • OvNewCompCmd:

    OvNewViewCmd:

  • FrameNewViewCmd
  • GraphNewViewCmd
  • OvOpenCmd:

    OvPortableFileImage:

    OvPreciseBrushCmd:

    OvPreciseMoveCmd:

    OvPrecisePageCmd:

    OvPreciseRotateCmd:

    OvPreciseScaleCmd:

    OvPrintCmd:

    OvQuitCmd:

    OvRestrictedImage:

  • OvFileImage
  • OvMemoryImage
  • OvRevertCmd:

    OvRightMover:

    OvSaveCompAsCmd:

    OvSaveCompCmd:

    OvSlctAllCmd:

    OvTiledFileImage:

    OvUpMover:

    OvViewCompCmd:

  • OvOpenCmd
  • OvWindowDumpAsCmd:

    OverlayCatalog:

  • FrameCatalog
  • GraphCatalog
  • OverlayComp:

  • DrawLinkComp
  • EdgeComp
  • EllipseOvComp
  • IueServComp
  • LineOvComp
  • NodeComp
  • OverlaysComp
  • RasterOvComp
  • RectOvComp
  • StencilOvComp
  • TextOvComp
  • VerticesOvComp
  • OverlayCreator:

  • FrameCreator
  • GraphCreator
  • OverlayDamage:

    OverlayEditor:

  • ComEditor
  • OverlayFileComp:

    OverlayFileScript:

    OverlayFileView:

    OverlayGraphic:

    OverlayIdrawComp:

  • GraphIdrawComp
  • OverlayIdrawPS:

  • FrameIdrawPS
  • OverlayIdrawScript:

  • GraphIdrawScript
  • OverlayIdrawView:

  • GraphIdrawView
  • OverlayKit:

  • FrameKit
  • GraphKit
  • OverlayPS:

  • EllipsePS
  • LinePS
  • OverlayScript
  • OverlaysPS
  • RasterPS
  • RectPS
  • StencilPS
  • TextPS
  • VerticesPS
  • OverlayPage:

    OverlayPainter:

    OverlayPanner:

    OverlayRaster:

  • GrayRaster
  • OverlayRasterRect:

    OverlayScript:

  • EdgeScript
  • EllipseScript
  • LineScript
  • NodeScript
  • OverlaysScript
  • RasterScript
  • RectScript
  • StencilScript
  • TextScript
  • VerticesScript
  • OverlaySelectTool:

    OverlaySelection:

  • LinkSelection
  • OverlaySlider:

    OverlayUnidraw:

  • DrawServ
  • XtUnidraw
  • OverlayView:

  • EdgeView
  • EllipseOvView
  • LineOvView
  • NodeView
  • OverlayViewRef
  • OverlaysView
  • RasterOvView
  • RectOvView
  • StencilOvView
  • TextOvView
  • VerticesOvView
  • OverlayViewRef:

    OverlayViewer:

  • FrameViewer
  • OverlaysComp:

  • FrameComp
  • FrameOverlaysComp
  • GraphComp
  • OverlayFileComp
  • OverlayIdrawComp
  • OverlaysPS:

  • OverlayIdrawPS
  • PicturePS
  • OverlaysScript:

  • FrameOverlaysScript
  • FrameScript
  • GraphScript
  • OverlayFileScript
  • OverlayIdrawScript
  • OverlaysView:

  • FrameOverlaysView
  • FrameView
  • GraphView
  • OverlayFileView
  • OverlayIdrawView
  • PGM_Helper:

    PPM_Helper:

    PSArrowLine:

    PSArrowMultiLine:

    PSArrowSpline:

    PSBrush:

    PSClosedSpline:

    PSColor:

    PSEllipse:

    PSFont:

    PSFont31:

    PSIdraw:

    PSLine:

  • PSArrowLine
  • PSLink:

    PSMultiLine:

  • PSArrowMultiLine
  • PSPad:

    PSPattern:

    PSPin:

    PSPolygon:

    PSRaster:

    PSRect:

    PSSlot:

    PSSpline:

  • PSArrowSpline
  • PSStencil:

    PSTOEDIT:

  • Transformer
  • PSText:

    PSVertices:

  • PSClosedSpline
  • PSMultiLine
  • PSPolygon
  • PSSpline
  • PadComp:

    PadGraphic:

    PadView:

    Page:

    PageCmd:

    PageDialog:

    PageGraphic:

    Painter:

  • OverlayPainter
  • PainterDpyInfo:

    PainterRep:

    PaletteBooleanEditor:

    PanCmd:

    PanDialog:

    PanDownLargeFunc:

    PanDownSmallFunc:

    PanFunc:

    PanLeftLargeFunc:

    PanLeftSmallFunc:

    PanRightLargeFunc:

    PanRightSmallFunc:

    PanUpLargeFunc:

    PanUpSmallFunc:

    PanelControl:

  • HPanelControl
  • ToolControl
  • VPanelControl
  • PanelInteractor:

    Panner:

    ParamList:

    ParamStruct:

    Parser:

  • ComTerp
  • PasteCmd:

  • GraphPasteCmd
  • PasteFunc:

    PasteModeFunc:

    Patch:

  • AttributeListEditor
  • BoundedValueTableEditor
  • MenuEnumEditor
  • RadioEnumEditor
  • Scrollable
  • Path:

    PathRenderInfo:

    Pattern:

  • PSPattern
  • PatternCmd:

    PatternFunc:

    PatternRep:

    PatternVar:

    PatternVarView:

    Perspective:

    PiFunc:

    Picture:

    PicturePS:

    PinComp:

    PinGraphic:

    PinView:

    PixelClipFunc:

    PixelColsFunc:

    PixelFlushFunc:

    PixelPeekFunc:

    PixelPokeFunc:

    PixelPokeLineFunc:

    PixelRowsFunc:

    Placement:

    Plot:

    Point:

    PointObj:

    PointsFunc:

    PolyGlyph:

  • Box
  • Deck
  • ScrollBox
  • PolyGraphic:

  • GraphicMaster
  • Polygon:

  • F_Polygon
  • SF_Polygon
  • S_Polygon
  • Polygon31:

    PolygonComp:

    PolygonOvComp:

    PolygonOvView:

    PolygonPS:

    PolygonScript:

    PolygonView:

    Polyline:

    Polyline31:

    PopupMenu:

    PopupWindow:

    PortableImageHelper:

  • PGM_Helper
  • PPM_Helper
  • PostEvalFunc:

    PostFixFunc:

    PostScriptView:

  • EdgePS
  • OverlayPS
  • PSEllipse
  • PSLine
  • PSLink
  • PSPad
  • PSPin
  • PSRaster
  • PSRect
  • PSSlot
  • PSStencil
  • PSText
  • PSVertices
  • PostScriptViews
  • PostScriptViews:

  • PSIdraw
  • PostorderView:

    PowFunc:

    PreciseMoveCmd:

  • OvPreciseMoveCmd
  • PrecisePageCmd:

  • OvPrecisePageCmd
  • PrecisePanCmd:

    PreciseRotateCmd:

  • OvPreciseRotateCmd
  • PreciseScaleCmd:

  • OvPreciseScaleCmd
  • PreciseZoomCmd:

    PreorderView:

  • PostScriptView
  • PrintChooser:

  • ExportChooser
  • PrintChooserImpl:

  • ExportChooserImpl
  • PrintCmd:

    PrintDialog:

    PrintFunc:

    Printer:

    ProcessingCmd:

  • GrayRampCmd
  • LogScaleCmd
  • PseudocolorCmd
  • ScaleGrayCmd
  • PropertyData:

    PseudocolorCmd:

    PseudocolorFunc:

    PtrList:

  • ListItr
  • ListUpdater
  • PtrLocState:

    PullCmd:

    PulldownMenu:

    PullrightMenu:

    PushButton:

    PushCmd:

    QuitCmd:

  • OvQuitCmd
  • QuitFunc:

    RadToDegFunc:

    RadioButton:

    RadioEnumEditor:

  • ExportEnumEditor
  • RandFunc:

    Raster:

  • OverlayRaster
  • RasterComp:

    RasterFunc:

  • GrayRampFunc
  • LogScaleFunc
  • PseudocolorFunc
  • ScaleGrayFunc
  • RasterOvComp:

    RasterOvView:

    RasterPS:

    RasterRect:

  • OverlayRasterRect
  • RasterRep:

    RasterScript:

    RasterTerp:

    RasterView:

    ReadOnlyFunc:

    Reader:

    Rect:

  • F_Rect
  • SF_Rect
  • S_Rect
  • RectComp:

    RectOvComp:

    RectOvView:

    RectPS:

    RectScript:

    RectView:

    Rectangle:

    Rectangle31:

    RedToFitCmd:

    RedoCmd:

    Reducer:

    Regexp:

    RemoteConnectAction:

    RemoteConnectPopupAction:

    RemoteFunc:

    RepeatFunc:

    ReplaceCmd:

    ReplaceRasterCmd:

    ReqErr:

    Requirement:

    Requisition:

    ReshapeTool:

    Resource:

  • Action
  • AttributeList
  • AttributeValueList
  • Bitmap
  • Brush
  • Color
  • ComponentView
  • Data
  • FieldEditorAction
  • FileChooserAction
  • Font
  • FontRep
  • GFieldEditorAction
  • Glyph
  • GraphicIdList
  • Handler
  • MenuItem
  • MultiLineObj
  • OpenFileChooserAction
  • Painter
  • Pattern
  • Perspective
  • Raster
  • Rubberband
  • SelectionHandler
  • SelectionManager
  • Sensor
  • StrChooserAction
  • Style
  • Subject
  • TGlue
  • TelltaleGroup
  • TelltaleState
  • TopoElement
  • Transformer
  • RevertCmd:

  • OvRevertCmd
  • RightMover:

    RightShiftFunc:

    RotateCmd:

    RotateDialog:

    RotateFunc:

    RotateTool:

    RotatingLine:

    RotatingLineList:

    RotatingRect:

    RoundFunc:

    RpcHdr:

    RpcPeer:

    RpcReader:

  • Reader
  • RpcRegistry:

    RpcService:

  • Service
  • RpcWriter:

  • Writer
  • RubberAxis:

    RubberCircle:

    RubberClosedSpline:

    RubberEllipse:

  • RubberCircle
  • SlidingEllipse
  • RubberGroup:

    RubberHandles:

    RubberLine:

  • RotatingLine
  • RubberAxis
  • ScalingLine
  • SlidingLine
  • RubberPointList:

  • RotatingLineList
  • RubberVertex
  • ScalingLineList
  • SlidingPointList
  • RubberRect:

  • RubberSquare
  • ScalingRect
  • SlidingRect
  • StretchingRect
  • RubberSpline:

    RubberSquare:

    RubberVertex:

  • RubberClosedSpline
  • RubberHandles
  • RubberSpline
  • Rubberband:

  • FixedPin
  • GrowingVertices
  • RotatingRect
  • RubberEllipse
  • RubberGroup
  • RubberLine
  • RubberPointList
  • RubberRect
  • Rule:

  • HRule
  • VRule
  • RunFunc:

    SFH_ClosedBSpline:

    SFH_OpenBSpline:

  • ArrowOpenBSpline
  • SF_Circle:

    SF_ClosedBSpline:

  • SFH_ClosedBSpline
  • SF_Ellipse:

  • SF_Circle
  • SF_MultiLine:

  • ArrowMultiLine
  • SF_OpenBSpline:

  • SFH_OpenBSpline
  • SF_Polygon:

  • Arrowhead
  • SF_Rect:

    SMFKit:

    SRandFunc:

    S_Circle:

    S_ClosedBSpline:

    S_Ellipse:

  • S_Circle
  • S_MultiLine:

    S_OpenBSpline:

    S_Polygon:

    S_Rect:

    SaveAsChooser:

    SaveAsChooserImpl:

    SaveCompAsCmd:

  • OvImageMapCmd
  • OvSaveCompAsCmd
  • OvWindowDumpAsCmd
  • SaveCompCmd:

  • OvSaveCompCmd
  • SaveFileFunc:

    ScaleCmd:

    ScaleDialog:

    ScaleFunc:

    ScaleGrayCmd:

    ScaleGrayFunc:

    ScaleTool:

    ScalingLine:

    ScalingLineList:

    ScalingRect:

    Scanner:

    Scene:

  • Box
  • Deck
  • MonoScene
  • Tray
  • ScreenToDrawingFunc:

    ScribblePointerCmd:

    ScribbleVertexManip:

    ScrollBar:

  • HScrollBar
  • VScrollBar
  • ScrollBox:

  • TBScrollBox
  • Scrollable:

    Scroller:

  • HScroller
  • VScroller
  • Segment:

    SelectFunc:

    SelectTool:

  • OverlaySelectTool
  • Selection:

  • OverlaySelection
  • SelectionCallback:

    SelectionHandler:

  • SelectionCallback
  • SelectionManager:

    SelectionManagerRep:

    SensitizeViewsCmd:

    Sensor:

    SeqFunc:

    Service:

    Session:

  • XtSession
  • SessionId:

    SessionIdFunc:

    SetAttrByExprCmd:

    SetAttrFunc:

    Shadow:

    ShadowFrame:

    Shape:

    ShellFunc:

    ShortFunc:

    ShowFrame:

  • BorderFrame
  • TitleFrame
  • ShowFramesFunc:

    ShowOtherFrameCmd:

    SimpleCompositor:

    SinFunc:

    SlctAllCmd:

  • OvSlctAllCmd
  • SlctByAttrCmd:

    Slider:

  • XSlider
  • XYSlider
  • YSlider
  • SlidingEllipse:

  • SlidingPin
  • SlidingLine:

    SlidingLineList:

    SlidingPin:

    SlidingPointList:

  • SlidingLineList
  • SlidingRect:

    SlotComp:

  • HSlotComp
  • VSlotComp
  • SlotGraphic:

    SlotView:

  • HSlotView
  • VSlotView
  • SocketFunc:

    SocketObj:

    SplineComp:

  • ArrowSplineComp
  • SplineOvComp:

  • ArrowSplineOvComp
  • SplineOvView:

  • ArrowSplineOvView
  • SplinePS:

  • ArrowSplinePS
  • SplineScript:

  • ArrowSplineScript
  • SplineView:

  • ArrowSplineView
  • SplitStrFunc:

    SqrtFunc:

    StateVar:

  • ArrowVar
  • BrushVar
  • ColorVar
  • FontVar
  • GravityVar
  • MagnifVar
  • ModifStatusVar
  • NameVar
  • PatternVar
  • StateVarView:

  • ArrowVarView
  • BrushVarView
  • CompNameVarView
  • FileNameVarView
  • FontVarView
  • GravityVarView
  • MagnifVarView
  • ModifStatusVarView
  • NameVarView
  • PatternVarView
  • StdDevFunc:

    StdInput:

    Stencil:

    StencilComp:

    StencilOvComp:

    StencilOvView:

    StencilPS:

    StencilScript:

    StencilView:

    Stepper:

  • StepperSubclassName
  • StepperSubclassName:

    StrChooser:

    StrChooserAction:

  • StrChooserCallback
  • StrChooserCallback:

    StrEditDialog:

    StrListValue:

    StreamFunc:

    StreamNextFunc:

    StretchTool:

    StretchingRect:

    String:

  • CopyString
  • NullTerminatedString
  • UniqueString
  • StringBrowser:

  • FileBrowser
  • StringChooser:

  • FileChooser
  • UChooser
  • StringDialog:

    StringEditor:

  • CompletionEditor
  • MatchEditor
  • StrmFunc:

  • ConcatFunc
  • ConcatNextFunc
  • FilterFunc
  • FilterNextFunc
  • IterateFunc
  • NextFunc
  • RepeatFunc
  • StreamFunc
  • StreamNextFunc
  • Style:

    SubAssignFunc:

    SubFunc:

    Subject:

  • ButtonState
  • ControlState
  • SumFunc:

  • MeanFunc
  • Superpose:

    SymAddFunc:

    SymIdFunc:

    SymStrFunc:

    SymValFunc:

    SymbolFunc:

    T:

  • ActionCallback
  • EnumActionCallback
  • FieldEditorCallback
  • FileChooserCallback
  • GFieldEditorCallback
  • IOCallback
  • OpenFileChooserCallback
  • SelectionCallback
  • StrChooserCallback
  • TBComposition:

    TBScrollBox:

    TE_Adjustable:

    TE_Editor:

    TE_View:

  • ComTE_View
  • TF_2Port:

  • TF_Direct
  • TF_Direct:

    TGlue:

    TIFFRaster:

    Table:

  • TableIterator
  • Table2:

  • Table2Iterator
  • Table2Iterator:

    TableIterator:

    TanFunc:

    Target:

    TeXCompositor:

    Telltale:

  • ChoiceItem
  • TelltaleGroup:

    TelltaleState:

    TerpDialog:

  • AttrDialog
  • TerpDialogImpl:

  • AttrDialogImpl
  • Text31:

    TextBuffer:

  • EivTextBuffer
  • TextButton:

  • CheckBox
  • PushButton
  • RadioButton
  • TextComp:

    TextDisplay:

    TextEditAppWindow:

    TextEditor:

  • ClassEditor
  • TE_Editor
  • TextFileComp:

    TextFileScript:

    TextFileView:

    TextGraphic:

    TextManip:

    TextObserver:

    TextOvComp:

  • TextFileComp
  • TextOvView:

  • TextFileView
  • TextPS:

    TextRenderInfo:

    TextScript:

  • TextFileScript
  • TextView:

    Tile:

    TileFileCmd:

    TileFileFunc:

    TileFirstAligned:

    TileReversed:

    TileReversedFirstAligned:

    Time:

    TimeExprFunc:

    TimeGlyph:

    TitleFrame:

    Tool:

  • AnnotateTool
  • AttributeTool
  • ClipPolyTool
  • ClipRectTool
  • ConnectTool
  • ConvexHullTool
  • GrLocTool
  • GraphicCompTool
  • MagnifyTool
  • MoveTool
  • ReshapeTool
  • RotateTool
  • ScaleTool
  • SelectTool
  • StretchTool
  • Tool31:

    ToolButton:

    ToolControl:

    ToolSelector:

    ToolState:

    TopLevelWindow:

  • TransientWindow
  • TopoEdge:

    TopoEdgeList:

  • TopoFace
  • TopoNode
  • TopoElement:

  • TopoEdge
  • TopoEdgeList
  • TopoFace:

    TopoNode:

    TransferFunct:

  • TF_2Port
  • TransformCmd:

    TransformFitter:

    TransformSetter:

  • TransformFitter
  • Transformer:

    TransformerFunc:

    TransientWindow:

    Tray:

    TrimGroupFunc:

    TrueAttrListFunc:

    TupleFunc:

    TypeSymbolFunc:

    UArray:

    UChooser:

    UControl:

  • CommandControl
  • PanelControl
  • UControlInteractor:

  • CommandInteractor
  • PanelInteractor
  • UHashElem:

    UHashTable:

    ULabel:

  • TextGraphic
  • UList:

    UMap:

  • EditorInfo
  • ObjectMap
  • UMapElem:

    UPage:

  • OverlayPage
  • USleepFunc:

    UStencil:

    UnchainViewerCmd:

    UnchainViewersCmd:

    UndoCmd:

    UnfixViewCmd:

    UngroupCmd:

  • FrameUngroupCmd
  • UngroupData:

    UnhideViewsCmd:

    UnhighlightRasterCmd:

    Unidraw:

  • OverlayUnidraw
  • UnidrawComterpHandler:

  • DrawServHandler
  • UnidrawFunc:

  • AcknowledgeBoxFunc
  • AddToolButtonFunc
  • AlphaTransFunc
  • AutoNewFrameFunc
  • BarPlotFunc
  • BrushFunc
  • CenterFunc
  • ChangeIdFunc
  • ColorFunc
  • ColorRgbFunc
  • ConfirmBoxFunc
  • CreateFrameFunc
  • CreateGraphicFunc
  • DeleteFunc
  • DrawLinkFunc
  • DrawingToGraphicFunc
  • DrawingToScreenFunc
  • ExportFunc
  • FontByNameFunc
  • FontFunc
  • FrameFunc
  • GraphicIdFunc
  • GraphicToDrawingFunc
  • GrowGroupFunc
  • HandlesFunc
  • HighlightFunc
  • ImportFunc
  • MbrFunc
  • MoveFrameFunc
  • MoveFunc
  • NBrushesFunc
  • NColorsFunc
  • NColsFunc
  • NFontsFunc
  • NPatternsFunc
  • NRowsFunc
  • NumFramesFunc
  • PanDownLargeFunc
  • PanDownSmallFunc
  • PanFunc
  • PanLeftLargeFunc
  • PanLeftSmallFunc
  • PanRightLargeFunc
  • PanRightSmallFunc
  • PanUpLargeFunc
  • PanUpSmallFunc
  • PasteFunc
  • PasteModeFunc
  • PatternFunc
  • PixelClipFunc
  • PixelColsFunc
  • PixelFlushFunc
  • PixelPeekFunc
  • PixelPokeFunc
  • PixelPokeLineFunc
  • PixelRowsFunc
  • PointsFunc
  • ReadOnlyFunc
  • RotateFunc
  • SaveFileFunc
  • ScaleFunc
  • ScreenToDrawingFunc
  • SelectFunc
  • SessionIdFunc
  • SetAttrFunc
  • ShowFramesFunc
  • TileFileFunc
  • TransformerFunc
  • TrimGroupFunc
  • UnidrawPauseFunc
  • UpdateFunc
  • ZoomFunc
  • ZoomInFunc
  • ZoomOutFunc
  • UnidrawImportHandler:

    UnidrawPauseFunc:

    UniqueString:

    UpMover:

    UpdateFunc:

    VBorder:

    VBox:

    VGlue:

    VPanelControl:

    VRule:

    VScrollBar:

    VScroller:

    VSlotComp:

    VSlotView:

    Valuator:

    VarFunc:

  • StdDevFunc
  • VariableLayout:

    VertexManip:

  • ScribbleVertexManip
  • Vertices:

  • ClosedBSpline
  • MultiLine
  • OpenBSpline
  • Polygon
  • VerticesComp:

  • ClosedSplineComp
  • MultiLineComp
  • PolygonComp
  • SplineComp
  • VerticesOvComp:

  • ClosedSplineOvComp
  • MultiLineOvComp
  • PolygonOvComp
  • SplineOvComp
  • VerticesOvView:

  • ClosedSplineOvView
  • MultiLineOvView
  • PolygonOvView
  • SplineOvView
  • VerticesPS:

  • ClosedSplinePS
  • MultiLinePS
  • PolygonPS
  • SplinePS
  • VerticesScript:

  • ClosedSplineScript
  • MultiLineScript
  • PolygonScript
  • SplineScript
  • VerticesView:

  • ClosedSplineView
  • MultiLineView
  • PolygonView
  • SplineView
  • ViewCompCmd:

  • OpenCmd
  • OvViewCompCmd
  • ViewLeakFunc:

    Viewer:

  • OverlayViewer
  • ViewerView:

    Viewport:

    VoidData:

  • DeleteFrameData
  • WhileFunc:

    WidgetKit:

  • MFKit
  • MonoKit
  • OLKit
  • SMFKit
  • WidgetWindow:

    Window:

  • InteractorWindow
  • ManagedWindow
  • PopupWindow
  • WindowRep:

    WindowVisual:

    World:

    Writer:

    XAxis:

    XDrag:

    XSlider:

    XYMarker:

    XYSlider:

    XformFunc:

    XposeFunc:

    XtSession:

  • XtUdSession
  • XtUdSession:

    XtUnidraw:

    YAxis:

    YSlider:

    ZoomCmd:

    ZoomDialog:

    ZoomFunc:

    ZoomInFunc:

    ZoomOutFunc:

    Zoomer:

  • Enlarger
  • Reducer
  • _ArrowData:

    _IO_NEW_STREAMS:

  • rpcstream
  • basic_streambuf:

  • fdbuf
  • char:

  • fdbuf
  • char_traits:

  • fdbuf
  • defined:

  • Transformer
  • rpcstream
  • endif:

  • Transformer
  • rpcstream
  • fdbuf:

    if:

  • Transformer
  • rpcstream
  • ios:

  • iosb
  • iosb:

  • istreamb
  • ostreamb
  • iostreamb:

  • rpcstream
  • istream:

  • istreamb
  • istreamb:

  • iostreamb
  • mat3:

    mat4:

    ofdstream:

    ostream:

  • ofdstream
  • ostreamb
  • ostreamb:

  • iostreamb
  • rpcbuf:

    rpcstream:

    std:

  • fdbuf
  • ofdstream
  • streambuf:

  • rpcbuf
  • vec2:

    vec3:

    vec4:

    ivtools-doc/doc/classes/derivedtree.html0000644000076500007650000104011611324451727021247 0ustar scottscott00000000000000ACE_Event_Handler
            ACE_IO_Handler
            AckBackHandler
    ACE_NULL_SYNCH
            ComterpHandler
                    IueHandler
                    UnidrawComterpHandler
                            DrawServHandler
            UnidrawImportHandler
    ACE_SOCK_STREAM
            ComterpHandler
                    IueHandler
                    UnidrawComterpHandler
                            DrawServHandler
            UnidrawImportHandler
    ACE_Svc_Handler
            ComterpHandler
                    IueHandler
                    UnidrawComterpHandler
                            DrawServHandler
            UnidrawImportHandler
    ALIterator
    AList
    Adjustable
            BoundedValue
                    StrListValue
            ScrollBox
                    TBScrollBox
            Scrollable
            TE_Adjustable
    Allocation
    AllocationInfo
    AllocationTable
    Allotment
    Attribute
    AttributeValue
            ComValue
    BitmapRep
    BoxObj
    BrushRep
    CDownLoader
    CGlue
    CSocket
            CFtp
            CHttp
    CSolver
    CSolverState
    Canvas
            Printer
    CanvasDamage
    CanvasRep
    Catalog
            IdrawCatalog
                    OverlayCatalog
                            FrameCatalog
                                    DrawCatalog
                            GraphCatalog
    ClassBuffer
    ClassInfo
    Clipboard
    Clock
    ColorRep
    ComFunc
            ACosFunc
            ASinFunc
            ATan2Func
            ATanFunc
            AlistLeakFunc
            AssignFunc
                    AddAssignFunc
                    DecrAfterFunc
                    DecrFunc
                    DivAssignFunc
                    IncrAfterFunc
                    IncrFunc
                    ModAssignFunc
                    MpyAssignFunc
                    SubAssignFunc
            AttrListFunc
                    BothSetAttrFunc
                    DoneAttrListFunc
                    DoneSetAttrFunc
                    FalseAttrListFunc
                    NextAttrListFunc
                    NextInSelectionFunc
                    TrueAttrListFunc
            AttrvLeakFunc
            BackQuoteFunc
            CharFunc
            ClassSymbolFunc
            CommandLeakFunc
            CompLeakFunc
            ComterpPauseFunc
                    ComterpStepFunc
            ComterpStackHeightFunc
            ComterpTraceFunc
            CondFunc
            CosFunc
            CtoiFunc
            DegToRadFunc
            DotFunc
                    GrDotFunc
            DotNameFunc
            DotValFunc
            DoubleFunc
            EachFunc
            EvalFunc
            ExitFunc
            ExpFunc
            FloatFunc
            ForFunc
            GlobalSymbolFunc
            GrAttrListFunc
            GrListAtFunc
            GrListSizeFunc
            GraphicLeakFunc
            HelpFunc
            IfThenElseFunc
            IntFunc
            InvertXformFunc
            IsSpaceFunc
            IueFunc
                    IueConnCompFunc
                    IueExportFunc
                    IueGaussianFunc
                    IueGetPixelFunc
                    IueImageFunc
                    IueNcolsFunc
                    IueNrowsFunc
                    IuePixTypeFunc
                    IueThresholdFunc
            JoinStrFunc
            ListAtFunc
            ListFunc
            ListSizeFunc
            Log10Func
            LogFunc
            LongFunc
            MlineLeakFunc
            MuteFunc
            NilFunc
            NumFunc
                    AbsFunc
                    AddFunc
                    AndFunc
                    BitAndFunc
                    BitNotFunc
                    BitOrFunc
                    BitXorFunc
                    CeilFunc
                    DivFunc
                    EqualFunc
                    FloorFunc
                    GreaterThanFunc
                    GreaterThanOrEqualFunc
                    LeftShiftFunc
                    LessThanFunc
                    LessThanOrEqualFunc
                    MaxFunc
                    MinFunc
                    MinusFunc
                    ModFunc
                    MpyFunc
                    NegFunc
                    NotEqualFunc
                    OrFunc
                    RightShiftFunc
                    RoundFunc
                    SubFunc
            OptableFunc
            PiFunc
            PostEvalFunc
            PostFixFunc
            PowFunc
            PrintFunc
            QuitFunc
            RadToDegFunc
            RandFunc
            RasterFunc
                    GrayRampFunc
                    LogScaleFunc
                    PseudocolorFunc
                    ScaleGrayFunc
            RemoteFunc
            RunFunc
            SRandFunc
            SeqFunc
            ShellFunc
            ShortFunc
            SinFunc
            SocketFunc
            SplitStrFunc
            SqrtFunc
            StrmFunc
                    ConcatFunc
                    ConcatNextFunc
                    FilterFunc
                    FilterNextFunc
                    IterateFunc
                    NextFunc
                    RepeatFunc
                    StreamFunc
                    StreamNextFunc
            SumFunc
                    MeanFunc
            SymAddFunc
            SymIdFunc
            SymStrFunc
            SymValFunc
            SymbolFunc
            TanFunc
            TimeExprFunc
            TupleFunc
            TypeSymbolFunc
            USleepFunc
            UnidrawFunc
                    AcknowledgeBoxFunc
                    AddToolButtonFunc
                    AlphaTransFunc
                    AutoNewFrameFunc
                    BarPlotFunc
                    BrushFunc
                    CenterFunc
                    ChangeIdFunc
                    ColorFunc
                    ColorRgbFunc
                    ConfirmBoxFunc
                    CreateFrameFunc
                    CreateGraphicFunc
                            CreateClosedSplineFunc
                            CreateEllipseFunc
                            CreateLineFunc
                            CreateMultiLineFunc
                            CreateOpenSplineFunc
                            CreatePolygonFunc
                            CreateRasterFunc
                            CreateRectFunc
                            CreateTextFunc
                    DeleteFunc
                    DrawLinkFunc
                    DrawingToGraphicFunc
                    DrawingToScreenFunc
                    ExportFunc
                    FontByNameFunc
                    FontFunc
                    FrameFunc
                    GraphicIdFunc
                    GraphicToDrawingFunc
                    GrowGroupFunc
                    HandlesFunc
                    HighlightFunc
                    ImportFunc
                    MbrFunc
                    MoveFrameFunc
                    MoveFunc
                    NBrushesFunc
                    NColorsFunc
                    NColsFunc
                    NFontsFunc
                    NPatternsFunc
                    NRowsFunc
                    NumFramesFunc
                    PanDownLargeFunc
                    PanDownSmallFunc
                    PanFunc
                    PanLeftLargeFunc
                    PanLeftSmallFunc
                    PanRightLargeFunc
                    PanRightSmallFunc
                    PanUpLargeFunc
                    PanUpSmallFunc
                    PasteFunc
                    PasteModeFunc
                    PatternFunc
                    PixelClipFunc
                    PixelColsFunc
                    PixelFlushFunc
                    PixelPeekFunc
                    PixelPokeFunc
                    PixelPokeLineFunc
                    PixelRowsFunc
                    PointsFunc
                    ReadOnlyFunc
                    RotateFunc
                    SaveFileFunc
                    ScaleFunc
                    ScreenToDrawingFunc
                    SelectFunc
                    SessionIdFunc
                    SetAttrFunc
                    ShowFramesFunc
                    TileFileFunc
                    TransformerFunc
                    TrimGroupFunc
                    UnidrawPauseFunc
                    UpdateFunc
                    ZoomFunc
                    ZoomInFunc
                    ZoomOutFunc
            VarFunc
                    StdDevFunc
            ViewLeakFunc
            WhileFunc
            XformFunc
            XposeFunc
    ComFuncState
    ComTerpModule
            LexScan
                    Scanner
            Parser
                    ComTerp
                            ComTerpServ
                                    RasterTerp
    ComTerpState
    Command
            AboutCmd
            AlignCmd
            AlignToGridCmd
            AlphaTransparentRasterCmd
            ArrowCmd
            BackCmd
                    FrameBackCmd
                    PushCmd
            BrushCmd
            CameraMotionCmd
                    FixedPanCmd
                    PanCmd
                    PrecisePanCmd
                    PreciseZoomCmd
                    ZoomCmd
            CenterCmd
            ChainViewerCmd
            ChainViewersCmd
            CloseEditorCmd
                    OvCloseEditorCmd
            ColorCmd
            ConnectCmd
            ConvexHullCmd
            CopyCmd
                    FrameCopyCmd
                    GraphCopyCmd
            CreateFrameCmd
            CutCmd
                    GraphCutCmd
            DeleteCmd
                    OvDeleteCmd
                            GraphDeleteCmd
            DeleteFrameCmd
            DesensitizeViewCmd
            DirtyCmd
            DupCmd
                    GraphDupCmd
            EdgeConnectCmd
            EdgeUpdateCmd
            FixViewCmd
            FontCmd
            FrontCmd
                    FrameFrontCmd
                    PullCmd
            GravityCmd
            GridCmd
            GridSpacingCmd
                    IGridSpacingCmd
            GroupCmd
                    OvGroupCmd
                            FrameGroupCmd
            HideViewCmd
            ImageCmd
            ImportCmd
            MacroCmd
                    AutoNewFrameCmd
                    ClipPolyAAndBCmd
                    ClipPolyAMinusBCmd
                    ClipPolyBMinusACmd
                    ClipPolyCmd
                    ClipRectCmd
                    CopyMoveFrameCmd
                            CopyMoveGraphFrameCmd
                    CreateMoveFrameCmd
                    FrameImportPasteCmd
                            DrawImportPasteCmd
                    ProcessingCmd
                            GrayRampCmd
                            LogScaleCmd
                            PseudocolorCmd
                            ScaleGrayCmd
                    ReplaceCmd
            MobilityCmd
            MoveCmd
            MoveFrameCmd
                    FrameBeginCmd
                    FrameEndCmd
            NOPCmd
            NewCompCmd
                    OvNewCompCmd
            NewViewCmd
                    OvNewViewCmd
                            FrameNewViewCmd
                            GraphNewViewCmd
            NodeTextCmd
            NormSizeCmd
            OrientationCmd
            OvAboutCmd
            OvExportCmd
            OvImportCmd
                    FrameImportCmd
                            DrawImportCmd
                    GraphImportCmd
            OvPreciseBrushCmd
            OvPrintCmd
            PageCmd
            PasteCmd
                    GraphPasteCmd
            PatternCmd
            PreciseMoveCmd
                    OvPreciseMoveCmd
            PrecisePageCmd
                    OvPrecisePageCmd
            PreciseRotateCmd
                    OvPreciseRotateCmd
            PreciseScaleCmd
                    OvPreciseScaleCmd
            PrintCmd
            QuitCmd
                    OvQuitCmd
            RedToFitCmd
            RedoCmd
            ReplaceRasterCmd
            RevertCmd
                    OvRevertCmd
            RotateCmd
            SaveCompAsCmd
                    OvImageMapCmd
                    OvSaveCompAsCmd
                    OvWindowDumpAsCmd
            SaveCompCmd
                    OvSaveCompCmd
            ScaleCmd
            ScribblePointerCmd
            SensitizeViewsCmd
            SetAttrByExprCmd
            ShowOtherFrameCmd
            SlctAllCmd
                    OvSlctAllCmd
            SlctByAttrCmd
            TileFileCmd
            TransformCmd
            UnchainViewerCmd
            UnchainViewersCmd
            UndoCmd
            UnfixViewCmd
            UngroupCmd
                    FrameUngroupCmd
            UnhideViewsCmd
            UnhighlightRasterCmd
            ViewCompCmd
                    OpenCmd
                    OvViewCompCmd
                            OvOpenCmd
    CommandDoer
    CommandPusher
    Component
            GraphicComp
                    Connector
                            PadComp
                            PinComp
                            SlotComp
                                    HSlotComp
                                    VSlotComp
                    EllipseComp
                    GraphicComps
                            IdrawComp
                    LineComp
                            ArrowLineComp
                    LinkComp
                    OverlayComp
                            DrawLinkComp
                            EdgeComp
                            EllipseOvComp
                            IueServComp
                                    IueImageComp
                            LineOvComp
                                    ArrowLineOvComp
                            NodeComp
                            OverlaysComp
                                    FrameComp
                                            FramesComp
                                                    FrameFileComp
                                                    FrameIdrawComp
                                                            DrawIdrawComp
                                    FrameOverlaysComp
                                    GraphComp
                                    OverlayFileComp
                                    OverlayIdrawComp
                                            GraphIdrawComp
                            RasterOvComp
                            RectOvComp
                            StencilOvComp
                            TextOvComp
                                    TextFileComp
                            VerticesOvComp
                                    ClosedSplineOvComp
                                    MultiLineOvComp
                                            ArrowMultiLineOvComp
                                    PolygonOvComp
                                    SplineOvComp
                                            ArrowSplineOvComp
                    RasterComp
                    RectComp
                    StencilComp
                    TextComp
                    VerticesComp
                            ClosedSplineComp
                            MultiLineComp
                                    ArrowMultiLineComp
                            PolygonComp
                            SplineComp
                                    ArrowSplineComp
    Compositor
            ArrayCompositor
            SimpleCompositor
            TeXCompositor
    ControlInfo
    CoordinateSpace
    Creator
            IdrawCreator
                    OverlayCreator
                            FrameCreator
                                    DrawCreator
                            GraphCreator
    Cursor
    CursorRep
            CursorRepBitmap
            CursorRepData
            CursorRepFont
            CursorRepXFont
    Damage
            OverlayDamage
    Date
    DialogKit
            MFDialogKit
            OLDialogKit
    Digit
    Directory
    Dispatcher
            AceDispatcher
    Display
    DisplayRep
    Event
    EventRep
    Extension
    Extent
    FBoxObj
    FLineObj
    FMultiLineObj
            FFillPolygonObj
    FPointObj
    File
            InputFile
                    StdInput
    FontBoundingBox
    FontFamily
    FontFamilyRep
    GVUpdater
    GraphData
            EdgeData
            NodeData
    Graphic
            Ellipse
                    F_Ellipse
                            F_Circle
                    SF_Ellipse
                            SF_Circle
                    S_Ellipse
                            S_Circle
            FullGraphic
                    Picture
            Line
                    ArrowLine
            OverlayGraphic
            PadGraphic
            PageGraphic
            PinGraphic
            Point
            RasterRect
                    OverlayRasterRect
            Rect
                    F_Rect
                    SF_Rect
                    S_Rect
            SlotGraphic
            ULabel
                    TextGraphic
            UStencil
            Vertices
                    ClosedBSpline
                            F_ClosedBSpline
                            SF_ClosedBSpline
                                    SFH_ClosedBSpline
                            S_ClosedBSpline
                    MultiLine
                            SF_MultiLine
                                    ArrowMultiLine
                            S_MultiLine
                    OpenBSpline
                            F_OpenBSpline
                            SF_OpenBSpline
                                    SFH_OpenBSpline
                                            ArrowOpenBSpline
                            S_OpenBSpline
                    Polygon
                            F_Polygon
                            SF_Polygon
                                    Arrowhead
                            S_Polygon
    GraphicId
            GraphicIds
    Grid
    Hit
    Host
    IOHandler
            ComTerpIOHandler
            IOCallback
            RpcPeer
            RpcReader
                    Reader
            RpcService
                    Service
    IdrawReader
    IndexedGsMixin
            OverlayIdrawComp
                    GraphIdrawComp
    IndexedPicMixin
            OverlayIdrawComp
                    GraphIdrawComp
    IndexedPtsMixin
            OverlayIdrawComp
                    GraphIdrawComp
    Iterator
    KeyMap
    Layout
            Align
            CenterLayout
            FixedLayout
            MarginLayout
            NaturalLayout
            Superpose
            Tile
            TileFirstAligned
            TileReversed
            TileReversedFirstAligned
            VariableLayout
    LayoutKit
    LeafWalker
    LeakChecker
    LineObj
    List
            ListItr
            ListUpdater
    ManagedWindowHintInfo
    ManagedWindowRep
    Manipulator
            DragManip
                    ConnectManip
                    OpaqueDragManip
                    VertexManip
                            ScribbleVertexManip
            ManipGroup
            TextManip
    Math
    Memory
    Morpher
    Observable
            AcceptingObservable
                    ObservableBoolean
                    ObservableEnum
                            BoundedValueTable
                    ObservableText
            DragEditor
            DrawLink
            DrawLinkList
            NameState
                    FrameListState
                    FrameNumberState
                    PtrLocState
            ObservableTime
            OverlayComp
                    DrawLinkComp
                    EdgeComp
                    EllipseOvComp
                    IueServComp
                            IueImageComp
                    LineOvComp
                            ArrowLineOvComp
                    NodeComp
                    OverlaysComp
                            FrameComp
                                    FramesComp
                                            FrameFileComp
                                            FrameIdrawComp
                                                    DrawIdrawComp
                            FrameOverlaysComp
                            GraphComp
                            OverlayFileComp
                            OverlayIdrawComp
                                    GraphIdrawComp
                    RasterOvComp
                    RectOvComp
                    StencilOvComp
                    TextOvComp
                            TextFileComp
                    VerticesOvComp
                            ClosedSplineOvComp
                            MultiLineOvComp
                                    ArrowMultiLineOvComp
                            PolygonOvComp
                            SplineOvComp
                                    ArrowSplineOvComp
            TE_View
                    ComTE_View
            TelltaleState
    Observer
            BooleanObserver
            BoundedValueObserver
            BoundedValueTable
            BoundedValueTableEditor
            Browser
                    FileBrowser
            Button
                    Stepper
                            StepperSubclassName
                    TextButton
                            CheckBox
                            PushButton
                            RadioButton
                    ToolButton
            CheckBooleanEditor
            CycleEnumEditor
            DragValuator
            DrawLinkList
            EnumObserver
            MenuItem
            MeterObserver
            NameView
            ObsTextEditor
            OverlayComp
                    DrawLinkComp
                    EdgeComp
                    EllipseOvComp
                    IueServComp
                            IueImageComp
                    LineOvComp
                            ArrowLineOvComp
                    NodeComp
                    OverlaysComp
                            FrameComp
                                    FramesComp
                                            FrameFileComp
                                            FrameIdrawComp
                                                    DrawIdrawComp
                            FrameOverlaysComp
                            GraphComp
                            OverlayFileComp
                            OverlayIdrawComp
                                    GraphIdrawComp
                    RasterOvComp
                    RectOvComp
                    StencilOvComp
                    TextOvComp
                            TextFileComp
                    VerticesOvComp
                            ClosedSplineOvComp
                            MultiLineOvComp
                                    ArrowMultiLineOvComp
                            PolygonOvComp
                            SplineOvComp
                                    ArrowSplineOvComp
            PaletteBooleanEditor
            RadioEnumEditor
                    ExportEnumEditor
            Slider
                    XSlider
                    XYSlider
                    YSlider
            TE_Adjustable
            Telltale
                    ChoiceItem
            TextObserver
            TimeGlyph
            Valuator
    OpenFileChooserImpl
            ImportChooserImpl
            PrintChooserImpl
                    ExportChooserImpl
            SaveAsChooserImpl
    OptionDesc
    OvRestrictedImage
            OvFileImage
                    OvPortableFileImage
                    OvTiledFileImage
            OvMemoryImage
    OverlayKit
            FrameKit
                    DrawKit
            GraphKit
    PSTOEDIT
            Transformer
    PainterDpyInfo
    PainterRep
    ParamList
    ParamStruct
    Path
    PathRenderInfo
    PatternRep
    PointObj
    PortableImageHelper
            PGM_Helper
            PPM_Helper
    PropertyData
    PtrList
            ListItr
            ListUpdater
    RasterRep
    Regexp
    ReqErr
    Requirement
    Requisition
    Resource
            Action
                    ActionCallback
                    EditorLauncherAction
                    EnumActionCallback
                    Macro
                    RemoteConnectAction
                    RemoteConnectPopupAction
            AttributeList
            AttributeValueList
            Bitmap
            Brush
                    PSBrush
            Color
                    PSColor
            ComponentView
                    ExternView
                            InorderView
                            PostorderView
                            PreorderView
                                    PostScriptView
                                            EdgePS
                                            OverlayPS
                                                    EllipsePS
                                                    LinePS
                                                            ArrowLinePS
                                                    OverlayScript
                                                            EdgeScript
                                                            EllipseScript
                                                            LineScript
                                                                    ArrowLineScript
                                                            NodeScript
                                                            OverlaysScript
                                                                    FrameOverlaysScript
                                                                    FrameScript
                                                                            FramesScript
                                                                                    FrameFileScript
                                                                                    FrameIdrawScript
                                                                                            DrawIdrawScript
                                                                    GraphScript
                                                                    OverlayFileScript
                                                                    OverlayIdrawScript
                                                                            GraphIdrawScript
                                                            RasterScript
                                                            RectScript
                                                            StencilScript
                                                            TextScript
                                                                    TextFileScript
                                                            VerticesScript
                                                                    ClosedSplineScript
                                                                    MultiLineScript
                                                                            ArrowMultiLineScript
                                                                    PolygonScript
                                                                    SplineScript
                                                                            ArrowSplineScript
                                                    OverlaysPS
                                                            OverlayIdrawPS
                                                                    FrameIdrawPS
                                                            PicturePS
                                                    RasterPS
                                                    RectPS
                                                    StencilPS
                                                    TextPS
                                                    VerticesPS
                                                            ClosedSplinePS
                                                            MultiLinePS
                                                                    ArrowMultiLinePS
                                                            PolygonPS
                                                            SplinePS
                                                                    ArrowSplinePS
                                            PSEllipse
                                            PSLine
                                                    PSArrowLine
                                            PSLink
                                            PSPad
                                            PSPin
                                            PSRaster
                                            PSRect
                                            PSSlot
                                            PSStencil
                                            PSText
                                            PSVertices
                                                    PSClosedSpline
                                                    PSMultiLine
                                                            PSArrowMultiLine
                                                    PSPolygon
                                                    PSSpline
                                                            PSArrowSpline
                                            PostScriptViews
                                                    PSIdraw
                    GraphicView
                            ConnectorView
                                    PadView
                                    PinView
                                    SlotView
                                            HSlotView
                                            VSlotView
                            EllipseView
                            GraphicViews
                                    IdrawView
                            LineView
                                    ArrowLineView
                            LinkView
                            OverlayView
                                    EdgeView
                                    EllipseOvView
                                    LineOvView
                                            ArrowLineOvView
                                    NodeView
                                    OverlayViewRef
                                    OverlaysView
                                            FrameOverlaysView
                                            FrameView
                                                    FramesView
                                                            FrameFileView
                                                            FrameIdrawView
                                                                    DrawIdrawView
                                            GraphView
                                            OverlayFileView
                                            OverlayIdrawView
                                                    GraphIdrawView
                                    RasterOvView
                                    RectOvView
                                    StencilOvView
                                    TextOvView
                                            TextFileView
                                    VerticesOvView
                                            ClosedSplineOvView
                                            MultiLineOvView
                                                    ArrowMultiLineOvView
                                            PolygonOvView
                                            SplineOvView
                                                    ArrowSplineOvView
                            RasterView
                            RectView
                            StencilView
                            TextView
                            VerticesView
                                    ClosedSplineView
                                    MultiLineView
                                            ArrowMultiLineView
                                    PolygonView
                                    SplineView
                                            ArrowSplineView
                            ViewerView
            Data
                    ColorData
                    GSData
                    MobilityData
                    MoveData
                    UngroupData
                    VoidData
                            DeleteFrameData
                    _ArrowData
            FieldEditorAction
                    FieldEditorCallback
            FileChooserAction
                    FileChooserCallback
            Font
                    PSFont
                    PSFont31
            FontRep
            GFieldEditorAction
                    GFieldEditorCallback
            Glyph
                    Aggregate
                    ArrowSubclassName
                    Character
                    Figure
                            Circle
                            Closed_BSpline
                            Ellipse
                                    F_Ellipse
                                            F_Circle
                                    SF_Ellipse
                                            SF_Circle
                                    S_Ellipse
                                            S_Circle
                            Line
                                    ArrowLine
                            Open_BSpline
                            Polygon
                                    F_Polygon
                                    SF_Polygon
                                            Arrowhead
                                    S_Polygon
                            Polyline
                            Rectangle
                    Glue
                            HGlue
                            VGlue
                    Graphic31
                            Circle31
                            Closed_BSpline31
                            Ellipse31
                            Line31
                            Open_BSpline31
                            PolyGraphic
                                    GraphicMaster
                            Polygon31
                            Polyline31
                            Rectangle31
                            Text31
                    Group
                    Image
                    Interactor
                            Adjuster
                                    Mover
                                            DownMover
                                            LeftMover
                                            RightMover
                                            UpMover
                                    OvMover
                                            OvDownMover
                                            OvLeftMover
                                            OvRightMover
                                            OvUpMover
                                    Zoomer
                                            Enlarger
                                            Reducer
                            Banner
                            Border
                                    HBorder
                                    VBorder
                            Button
                                    Stepper
                                            StepperSubclassName
                                    TextButton
                                            CheckBox
                                            PushButton
                                            RadioButton
                                    ToolButton
                            DFace
                            Glue
                                    HGlue
                                    VGlue
                            GraphicBlock
                                    Viewer
                                            OverlayViewer
                                                    FrameViewer
                            Message
                            OverlaySlider
                            Scene
                                    Box
                                            HBox
                                                    MenuBar
                                            VBox
                                    Deck
                                    MonoScene
                                            Control
                                                    Menu
                                                            PopupMenu
                                                            PulldownMenu
                                                            PullrightMenu
                                                    MenuItem
                                                    UControl
                                                            CommandControl
                                                            PanelControl
                                                                    HPanelControl
                                                                    ToolControl
                                                                    VPanelControl
                                            Dialog
                                                    AnnotateDialog
                                                    AttributeDialog
                                                    BasicDialog
                                                            AcknowledgeDialog
                                                            ConfirmDialog
                                                            FileDialog
                                                            GridDialog
                                                            MoveDialog
                                                            PageDialog
                                                            PanDialog
                                                            RotateDialog
                                                            ScaleDialog
                                                            StringDialog
                                                            ZoomDialog
                                                    ConnectionsDialog
                                                    FileChooser
                                                            PrintDialog
                                                    GAcknowledgeDialog
                                                    GConfirmDialog
                                                    NodeDialog
                                                    ObsTextDialog
                                                    OpenFileChooser
                                                            ImportChooser
                                                            PrintChooser
                                                                    ExportChooser
                                                            SaveAsChooser
                                                    StrChooser
                                                    StrEditDialog
                                                    StringChooser
                                                            FileChooser
                                                                    PrintDialog
                                                            UChooser
                                                    TerpDialog
                                                            AttrDialog
                                            Frame
                                                    MarginFrame
                                                    ShadowFrame
                                                    ShowFrame
                                                            BorderFrame
                                                            TitleFrame
                                            IClass
                                            OverlayPanner
                                            Panner
                                            ScrollBar
                                                    HScrollBar
                                                    VScrollBar
                                            StateVarView
                                                    ArrowVarView
                                                    BrushVarView
                                                    CompNameVarView
                                                    FileNameVarView
                                                    FontVarView
                                                    GravityVarView
                                                    MagnifVarView
                                                    ModifStatusVarView
                                                    NameVarView
                                                    PatternVarView
                                            Viewport
                                    Tray
                            Scroller
                                    HScroller
                                    VScroller
                            Slider
                                    XSlider
                                    XYSlider
                                    YSlider
                            StringBrowser
                                    FileBrowser
                            StringEditor
                                    CompletionEditor
                                    MatchEditor
                            TextEditor
                                    ClassEditor
                                    TE_Editor
                            UControlInteractor
                                    CommandInteractor
                                    PanelInteractor
                    Label
                    MonoGlyph
                            Axis
                                    XAxis
                                    YAxis
                            Background
                            BevelFrame
                                    Bevel
                            BooleanObserver
                            Border
                                    HBorder
                                    VBorder
                            BoundedValueEditor
                            BoundedValueObserver
                            CheckBooleanEditor
                            Composition
                                    LRComposition
                                    TBComposition
                            CycleEnumEditor
                            DebugGlyph
                            Drag
                            DragValuator
                            DragZone
                                    DragZoneSink
                            EivTextEditor
                                    ComTextEditor
                            EnumObserver
                            GLContext
                            GlyphEditor
                            InputHandler
                                    ActiveHandler
                                            Button
                                                    Stepper
                                                            StepperSubclassName
                                                    TextButton
                                                            CheckBox
                                                            PushButton
                                                            RadioButton
                                                    ToolButton
                                            Slider
                                                    XSlider
                                                    XYSlider
                                                    YSlider
                                    Browser
                                            FileBrowser
                                    Dialog
                                            AnnotateDialog
                                            AttributeDialog
                                            BasicDialog
                                                    AcknowledgeDialog
                                                    ConfirmDialog
                                                    FileDialog
                                                    GridDialog
                                                    MoveDialog
                                                    PageDialog
                                                    PanDialog
                                                    RotateDialog
                                                    ScaleDialog
                                                    StringDialog
                                                    ZoomDialog
                                            ConnectionsDialog
                                            FileChooser
                                                    PrintDialog
                                            GAcknowledgeDialog
                                            GConfirmDialog
                                            NodeDialog
                                            ObsTextDialog
                                            OpenFileChooser
                                                    ImportChooser
                                                    PrintChooser
                                                            ExportChooser
                                                    SaveAsChooser
                                            StrChooser
                                            StrEditDialog
                                            StringChooser
                                                    FileChooser
                                                            PrintDialog
                                                    UChooser
                                            TerpDialog
                                                    AttrDialog
                                    DragEditor
                                    Editor
                                            IdrawEditor
                                                    OverlayEditor
                                                            ComEditor
                                                                    FrameEditor
                                                                            DrawEditor
                                                                    GraphEditor
                                    FieldEditor
                                            CharFieldEditor
                                    GFieldEditor
                                    GlyphViewer
                                    Graph
                                    Menu
                                            PopupMenu
                                            PulldownMenu
                                            PullrightMenu
                                    TE_View
                                            ComTE_View
                            LRMarker
                            MeterObserver
                            NameView
                            ObsTextEditor
                            PaletteBooleanEditor
                            Patch
                                    AttributeListEditor
                                    BoundedValueTableEditor
                                    MenuEnumEditor
                                    RadioEnumEditor
                                            ExportEnumEditor
                                    Scrollable
                            Placement
                            Shadow
                            Target
                            Telltale
                                    ChoiceItem
                            TextObserver
                            TimeGlyph
                            TransformSetter
                                    TransformFitter
                            Valuator
                            XYMarker
                    Page
                    Plot
                    PolyGlyph
                            Box
                                    HBox
                                            MenuBar
                                    VBox
                            Deck
                            ScrollBox
                                    TBScrollBox
                    Rule
                            HRule
                            VRule
                    Stencil
            GraphicIdList
            Handler
                    InteractorHandler
            MenuItem
            MultiLineObj
                    FillPolygonObj
            OpenFileChooserAction
                    OpenFileChooserCallback
            Painter
                    OverlayPainter
            Pattern
                    PSPattern
            Perspective
            Raster
                    OverlayRaster
                            GrayRaster
            Rubberband
                    FixedPin
                    GrowingVertices
                            GrowingBSpline
                            GrowingClosedBSpline
                            GrowingMultiLine
                            GrowingPolygon
                    RotatingRect
                    RubberEllipse
                            RubberCircle
                            SlidingEllipse
                                    SlidingPin
                    RubberGroup
                    RubberLine
                            RotatingLine
                            RubberAxis
                            ScalingLine
                            SlidingLine
                    RubberPointList
                            RotatingLineList
                            RubberVertex
                                    RubberClosedSpline
                                    RubberHandles
                                    RubberSpline
                            ScalingLineList
                            SlidingPointList
                                    SlidingLineList
                    RubberRect
                            RubberSquare
                            ScalingRect
                            SlidingRect
                            StretchingRect
            SelectionHandler
                    SelectionCallback
            SelectionManager
            Sensor
            StrChooserAction
                    StrChooserCallback
            Style
            Subject
                    ButtonState
                    ControlState
            TGlue
            TelltaleGroup
            TelltaleState
            TopoElement
                    TopoEdge
                    TopoEdgeList
                            TopoFace
                            TopoNode
            Transformer
    RpcHdr
    RpcRegistry
    RpcWriter
            Writer
    Segment
    Selection
            OverlaySelection
                    LinkSelection
    SelectionManagerRep
    Session
            XtSession
                    XtUdSession
    SessionId
    Shape
    SocketObj
    StateVar
            ArrowVar
            BrushVar
            ColorVar
            FontVar
            GravityVar
            MagnifVar
            ModifStatusVar
            NameVar
                    CompNameVar
            PatternVar
    String
            CopyString
            NullTerminatedString
            UniqueString
    T
            ActionCallback
            EnumActionCallback
            FieldEditorCallback
            FileChooserCallback
            GFieldEditorCallback
            IOCallback
            OpenFileChooserCallback
            SelectionCallback
            StrChooserCallback
    TIFFRaster
    Table
            TableIterator
    Table2
            Table2Iterator
    TerpDialogImpl
            AttrDialogImpl
    TextBuffer
            EivTextBuffer
    TextDisplay
    TextRenderInfo
    Time
    Tool
            AnnotateTool
            AttributeTool
            ClipPolyTool
            ClipRectTool
            ConnectTool
            ConvexHullTool
            GrLocTool
            GraphicCompTool
            MagnifyTool
            MoveTool
                    GraphMoveTool
            ReshapeTool
            RotateTool
            ScaleTool
            SelectTool
                    OverlaySelectTool
            StretchTool
    Tool31
    ToolSelector
    ToolState
    TransferFunct
            TF_2Port
                    TF_Direct
    UArray
    UHashElem
    UHashTable
    UList
    UMap
            EditorInfo
            ObjectMap
    UMapElem
    UPage
            OverlayPage
    Unidraw
            OverlayUnidraw
                    DrawServ
                    XtUnidraw
    WidgetKit
            MFKit
            MonoKit
            OLKit
            SMFKit
    Window
            InteractorWindow
            ManagedWindow
                    ApplicationWindow
                            TextEditAppWindow
                    IconWindow
                    TopLevelWindow
                            TransientWindow
                    WidgetWindow
            PopupWindow
    WindowRep
    WindowVisual
    World
    XDrag
    _IO_NEW_STREAMS
            rpcstream
    basic_streambuf
            fdbuf
    char
            fdbuf
    char_traits
            fdbuf
    defined
            Transformer
            rpcstream
    endif
            Transformer
            rpcstream
    if
            Transformer
            rpcstream
    ios
            iosb
                    istreamb
                            iostreamb
                                    rpcstream
                    ostreamb
                            iostreamb
                                    rpcstream
    istream
            istreamb
                    iostreamb
                            rpcstream
    mat3
    mat4
    ostream
            ofdstream
            ostreamb
                    iostreamb
                            rpcstream
    std
            fdbuf
            ofdstream
    streambuf
            rpcbuf
    vec2
    vec3
    vec4
    ivtools-doc/doc/classes/DesensitizeViewCmd.html0000644000076500007650000000717011324451724022511 0ustar scottscott00000000000000 Description of DesensitizeViewCmd

    class DesensitizeViewCmd : public Command (Return to index)

    command to desensitize a graphic view in this viewer.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovshowhide.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Dialog.html0000644000076500007650000000651111324451724020141 0ustar scottscott00000000000000 Description of Dialog
    class Dialog : public MonoScene (Return to index)

    a simple dialog box input handler (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/dialog.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Dialog__2.html0000644000076500007650000001246611324451724020527 0ustar scottscott00000000000000 Description of Dialog__2
    class Dialog__2 : public InputHandler (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/dialog.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DialogKit.html0000644000076500007650000001205111324451724020605 0ustar scottscott00000000000000 Description of DialogKit
    class DialogKit (Return to index)

    factory object for widgets.

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-look/dialogs.h

    Description:

    in reference manual

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Directory.html0000644000076500007650000001003311324451724020700 0ustar scottscott00000000000000 Description of Directory
    class Directory (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      OS/directory.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DirtyCmd.html0000644000076500007650000000616211324451724020463 0ustar scottscott00000000000000 Description of DirtyCmd
    class DirtyCmd : public Command (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/dirty.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Dispatcher.html0000644000076500007650000002514311324451724021032 0ustar scottscott00000000000000 Description of Dispatcher
    class Dispatcher (Return to index)

    wait on multiple file descriptors until a condition occurs

    Type:
      Instantiable

    Derived Classes

    Include file:

      Dispatch/dispatcher.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Display.html0000644000076500007650000002647611324451724020363 0ustar scottscott00000000000000 Description of Display
    class Display (Return to index)

    X window display object.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/display.h

    Description:

    in reference manual.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DisplayRep.html0000644000076500007650000001127211324451724021016 0ustar scottscott00000000000000 Description of DisplayRep
    class DisplayRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xdisplay.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DivAssignFunc.html0000644000076500007650000000325111324451724021443 0ustar scottscott00000000000000 Description of DivAssignFunc
    class DivAssignFunc : public AssignFunc (Return to index)

    /= (divide assign) operator .

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/assignfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DivFunc.html0000644000076500007650000000316311324451724020300 0ustar scottscott00000000000000 Description of DivFunc
    class DivFunc : public NumFunc (Return to index)

    / (divide) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DoneAttrListFunc.html0000644000076500007650000000450711324451724022135 0ustar scottscott00000000000000 Description of DoneAttrListFunc
    class DoneAttrListFunc : public AttrListFunc (Return to index)

    interpreter command for plugging together AttrDialog and SlctByAttrCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/slctbyattr.h

    Description:

    interpreter command used to indicate when done iterating over components.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DoneSetAttrFunc.html0000644000076500007650000000455611324451724021761 0ustar scottscott00000000000000 Description of DoneSetAttrFunc
    class DoneSetAttrFunc : public AttrListFunc (Return to index)

    interpreter command for plugging together AttrDialog and SetAttrByExprCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/setattrbyexpr.h

    Description:

    interpreter command used to indicate when done iterating over all the components in the current selection.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DotFunc.html0000644000076500007650000000375711324451724020315 0ustar scottscott00000000000000 Description of DotFunc
    class DotFunc : public ComFunc (Return to index)

    . (dot) operator, for compound variables | dotlst=dot(name) -- construct empty dottted pair list.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/dotfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DotNameFunc.html0000644000076500007650000000323311324451724021103 0ustar scottscott00000000000000 Description of DotNameFunc
    class DotNameFunc : public ComFunc (Return to index)

    name returns name field of a dotted pair

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/dotfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DotValFunc.html0000644000076500007650000000323011324451724020742 0ustar scottscott00000000000000 Description of DotValFunc
    class DotValFunc : public ComFunc (Return to index)

    value returns value field of a dotted pair

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/dotfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DoubleFunc.html0000644000076500007650000000343311324451724020770 0ustar scottscott00000000000000 Description of DoubleFunc
    class DoubleFunc : public ComFunc (Return to index)

    double-length floating-point conversion command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    d=double(num) -- convert any numeric to a double.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DownMover.html0000644000076500007650000000346211324451724020664 0ustar scottscott00000000000000 Description of DownMover
    class DownMover : public Mover (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/adjuster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Drag.html0000644000076500007650000001255411324451724017623 0ustar scottscott00000000000000 Description of Drag
    class Drag : public MonoGlyph (Return to index)

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      InterViews/drag.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DragEditor.html0000644000076500007650000001100711324451724020762 0ustar scottscott00000000000000 Description of DragEditor
    class DragEditor : public InputHandler, public Observable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/dragedit.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DragManip.html0000644000076500007650000002140711324451724020605 0ustar scottscott00000000000000 Description of DragManip
    class DragManip : public Manipulator (Return to index)

    drag manipulator

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/manips.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DragValuator.html0000644000076500007650000000503511324451724021335 0ustar scottscott00000000000000 Description of DragValuator
    class DragValuator : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/valuator.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DragZone.html0000644000076500007650000001037111324451724020452 0ustar scottscott00000000000000 Description of DragZone
    class DragZone : public MonoGlyph (Return to index)

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      InterViews/drag.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DragZoneSink.html0000644000076500007650000000545511324451724021306 0ustar scottscott00000000000000 Description of DragZoneSink
    class DragZoneSink : public DragZone (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/drag.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DrawCatalog.html0000644000076500007650000001120211324451724021123 0ustar scottscott00000000000000 Description of DrawCatalog
    class DrawCatalog : public FrameCatalog (Return to index)

    catalog for use with drawserv.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawcatalog.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DrawCreator.html0000644000076500007650000000323611324451724021160 0ustar scottscott00000000000000 Description of DrawCreator
    class DrawCreator : public FrameCreator (Return to index)

    creator for use with drawserv.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawcreator.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DrawEditor.html0000644000076500007650000000320411324451724021002 0ustar scottscott00000000000000 Description of DrawEditor
    class DrawEditor : public FrameEditor (Return to index)

    editor for DrawServ application

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/draweditor.h

    Description:

    return point to Selection that shadows the last setting.

    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/DrawIdrawComp.html0000644000076500007650000001253411324451724021447 0ustar scottscott00000000000000 Description of DrawIdrawComp
    class DrawIdrawComp : public FrameIdrawComp (Return to index)

    top-level component for a drawserv document.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawcomps.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DrawIdrawScript.html0000644000076500007650000000571611324451724022021 0ustar scottscott00000000000000 Description of DrawIdrawScript
    class DrawIdrawScript : public FrameIdrawScript (Return to index)

    serialized view of a DrawIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawcomps.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DrawIdrawView.html0000644000076500007650000000340111324451724021454 0ustar scottscott00000000000000 Description of DrawIdrawView
    class DrawIdrawView : public FrameIdrawView (Return to index)

    graphical view of DrawIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawviews.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DrawImportCmd.html0000644000076500007650000000575311324451724021465 0ustar scottscott00000000000000 Description of DrawImportCmd
    class DrawImportCmd : public FrameImportCmd (Return to index)

    specialized FrameImportCmd for importing graphs in frames

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawimport.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DrawImportPasteCmd.html0000644000076500007650000000571211324451724022455 0ustar scottscott00000000000000 Description of DrawImportPasteCmd
    class DrawImportPasteCmd : public FrameImportPasteCmd (Return to index)

    specialized ImportPasteCmd for DrawServ

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawimport.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DrawingToGraphicFunc.html0000644000076500007650000000361611324451724022755 0ustar scottscott00000000000000 Description of DrawingToGraphicFunc
    class DrawingToGraphicFunc : public UnidrawFunc (Return to index)

    command to convert from drawing to graphic coordinates

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    gx,gy=dtog(compview dx,dy) -- convert from drawing to graphic coordinates

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DrawingToScreenFunc.html0000644000076500007650000000357611324451724022624 0ustar scottscott00000000000000 Description of DrawingToScreenFunc
    class DrawingToScreenFunc : public UnidrawFunc (Return to index)

    command to convert from drawing to screen coordinates

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    sx,sy=dtos(dx,dy) -- convert from drawing to screen coordinates

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DrawKit.html0000644000076500007650000001245311324451724020311 0ustar scottscott00000000000000 Description of DrawKit
    class DrawKit : public FrameKit (Return to index)

    specialized FrameKit for use with drawserv.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawkit.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DrawLink.html0000644000076500007650000003162311324451724020457 0ustar scottscott00000000000000 Description of DrawLink
    class : public Observable (Return to index)

    UList based list of DrawLink's

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawlinklist.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DrawLinkComp.html0000644000076500007650000000647411324451724021304 0ustar scottscott00000000000000 Description of DrawLinkComp
    class DrawLinkComp : public OverlayComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawlinkcomp.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DrawLinkFunc.html0000644000076500007650000000360011324451724021265 0ustar scottscott00000000000000 Description of DrawLinkFunc
    class DrawLinkFunc : public UnidrawFunc (Return to index)

    command to connect to another drawserv

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawfunc.h

    Description:

    drawlink([hoststr] :port portnum :state num :lid nu :rid num :close :dump) -- connect to remote drawserv

    Public:



    (more documentation)

    ivtools-doc/doc/classes/DrawLinkList.html0000644000076500007650000002355511324451724021320 0ustar scottscott00000000000000 Description of DrawLinkList
    class DrawLinkList : public Observable, Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawlinklist.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DrawServ.html0000644000076500007650000004026711324451724020505 0ustar scottscott00000000000000 Description of DrawServ
    class DrawServ : public OverlayUnidraw (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawserv.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DrawServHandler.html0000644000076500007650000000747111324451724022003 0ustar scottscott00000000000000 Description of DrawServHandler
    class DrawServHandler : public UnidrawComterpHandler (Return to index)

    specialized UnidrawComterpHandler for integration into DrawServ

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawserv-handler.h

    Description:

    = Initialization and termination methods.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/DupCmd.html0000644000076500007650000000653511324451724020124 0ustar scottscott00000000000000 Description of DupCmd
    class DupCmd : public Command (Return to index)

    duplicate command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/EachFunc.html0000644000076500007650000000375611324451724020426 0ustar scottscott00000000000000 Description of EachFunc
    class EachFunc : public ComFunc (Return to index)

    traverse stream command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Description:

    cnt=each(strm) -- traverse list returning its length

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EdgeComp.html0000644000076500007650000003125211324451724020425 0ustar scottscott00000000000000 Description of EdgeComp
    class EdgeComp : public OverlayComp (Return to index)

    edge component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/edgecomp.h

    Description:

    component for an edge in an edge-node directed graph. Default appearance is a solid line of width 1 with arrow pointing in the direction drawn. Uses underlying TopoEdge to represent topology.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/EdgeConnectCmd.html0000644000076500007650000001075011324451724021544 0ustar scottscott00000000000000 Description of EdgeConnectCmd
    class EdgeConnectCmd : public Command (Return to index)

    command to connect an edge to one or two nodes.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/EdgeData.html0000644000076500007650000000440211324451724020375 0ustar scottscott00000000000000 Description of EdgeData
    class EdgeData : public GraphData (Return to index)

    command data for storing edge information.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphdata.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EdgePS.html0000644000076500007650000000577711324451724020066 0ustar scottscott00000000000000 Description of EdgePS
    class EdgePS : public PostScriptView (Return to index)

    "PostScript" view of EdgeComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/edgecomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EdgeScript.html0000644000076500007650000000576311324451724021003 0ustar scottscott00000000000000 Description of EdgeScript
    class EdgeScript : public OverlayScript (Return to index)

    serialized view of EdgeComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/edgecomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EdgeUpdateCmd.html0000644000076500007650000000610411324451724021373 0ustar scottscott00000000000000 Description of EdgeUpdateCmd
    class EdgeUpdateCmd : public Command (Return to index)

    command to update edge display

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/EdgeView.html0000644000076500007650000001451511324451724020444 0ustar scottscott00000000000000 Description of EdgeView
    class EdgeView : public OverlayView (Return to index)

    graphical view of EdgeComp

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/edgecomp.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Editor.html0000644000076500007650000002027011324451724020166 0ustar scottscott00000000000000 Description of Editor
    class Editor : public InputHandler (Return to index)

    base class for top-level windows in an application.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/editor.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/EditorInfo.html0000644000076500007650000001030611324451724021001 0ustar scottscott00000000000000 Description of EditorInfo
    class EditorInfo : public UMap (Return to index)

    manages persistent information contained in an editor

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/editorinfo.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/EditorLauncherAction.html0000644000076500007650000000373711324451724023017 0ustar scottscott00000000000000 Description of EditorLauncherAction
    class EditorLauncherAction : public Action (Return to index)

    action to construct and launch an OverlayEditor.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/oved.h

    Description:

    can be generalized to constructing and launching an Editor in the future, if anyone so desires.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/EivTextBuffer.html0000644000076500007650000001400411324451724021460 0ustar scottscott00000000000000 Description of EivTextBuffer
    class EivTextBuffer : public TextBuffer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/textbuff.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EivTextEditor.html0000644000076500007650000002133511324451724021502 0ustar scottscott00000000000000 Description of EivTextEditor
    class EivTextEditor : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/textedit.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Ellipse.html0000644000076500007650000001321111324451724020332 0ustar scottscott00000000000000 Description of Ellipse
    class Ellipse : public Graphic (Return to index)

    ellipse graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/ellipses.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Ellipse31.html0000644000076500007650000000410211324451724020475 0ustar scottscott00000000000000 Description of Ellipse31
    class Ellipse31 : public Graphic31 (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/EllipseComp.html0000644000076500007650000000542711324451724021163 0ustar scottscott00000000000000 Description of EllipseComp
    class EllipseComp : public GraphicComp (Return to index)

    ellipse component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/ellipse.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EllipseOvComp.html0000644000076500007650000001115011324451724021456 0ustar scottscott00000000000000 Description of EllipseOvComp
    class EllipseOvComp : public OverlayComp (Return to index)

    clone of EllipseComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovellipse.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/EllipseOvView.html0000644000076500007650000000771111324451724021502 0ustar scottscott00000000000000 Description of EllipseOvView
    class EllipseOvView : public OverlayView (Return to index)

    graphical view of EllipseOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovellipse.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EllipsePS.html0000644000076500007650000000407511324451724020605 0ustar scottscott00000000000000 Description of EllipsePS
    class EllipsePS : public OverlayPS (Return to index)

    "PostScript" view of EllipseOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovellipse.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EllipseScript.html0000644000076500007650000000505011324451724021521 0ustar scottscott00000000000000 Description of EllipseScript
    class EllipseScript : public OverlayScript (Return to index)

    serialized view of EllipseOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovellipse.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EllipseView.html0000644000076500007650000000705711324451724021200 0ustar scottscott00000000000000 Description of EllipseView
    class EllipseView : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/ellipse.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Enlarger.html0000644000076500007650000000325711324451724020505 0ustar scottscott00000000000000 Description of Enlarger
    class Enlarger : public Zoomer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/adjuster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EnumObserver.html0000644000076500007650000000515311324451724021357 0ustar scottscott00000000000000 Description of EnumObserver
    class EnumObserver : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/enumform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/EqualFunc.html0000644000076500007650000000350611324451724020626 0ustar scottscott00000000000000 Description of EqualFunc
    class EqualFunc : public NumFunc (Return to index)

    == (equality) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/boolfunc.h

    Description:

    also useful for partial string comparison with :n keyword, i.e. eq("string1" "string2" :n 6) returns true. also useful for symbol comparison with :sym keyword.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/EvalFunc.html0000644000076500007650000000347211324451724020450 0ustar scottscott00000000000000 Description of EvalFunc
    class EvalFunc : public ComFunc (Return to index)

    eval string command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    str|lst=eval(cmdstr [cmdstr ...] :symret) -- evaluate string as commands, optionally returning symbol instead of nil.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Event.html0000644000076500007650000003462711324451724020034 0ustar scottscott00000000000000 Description of Event
    class Event (Return to index)

    user input events.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/event.h

    Description:

    in reference manual.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/EventRep.html0000644000076500007650000000620011324451724020465 0ustar scottscott00000000000000 Description of EventRep
    class EventRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xevent.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ExitFunc.html0000644000076500007650000000334011324451724020464 0ustar scottscott00000000000000 Description of ExitFunc
    class ExitFunc : public ComFunc (Return to index)

    exit command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    exit() -- exit entire application.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ExpFunc.html0000644000076500007650000000337311324451724020315 0ustar scottscott00000000000000 Description of ExpFunc
    class ExpFunc : public ComFunc (Return to index)

    exponential command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=exp(x) -- returns the value e raised to the power of x.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ExportChooser.html0000644000076500007650000001012111324451724021536 0ustar scottscott00000000000000 Description of ExportChooser
    class ExportChooser : public PrintChooser (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/exportchooser.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ExportChooserImpl.html0000644000076500007650000001337511324451724022376 0ustar scottscott00000000000000 Description of ExportChooserImpl
    class ExportChooserImpl : public PrintChooserImpl (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/exportchooser.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ExportEnumEditor.html0000644000076500007650000000460311324451724022217 0ustar scottscott00000000000000 Description of ExportEnumEditor
    class ExportEnumEditor : public RadioEnumEditor (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/exportchooser.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ExportFunc.html0000644000076500007650000000675711324451724021053 0ustar scottscott00000000000000 Description of ExportFunc
    class ExportFunc : public UnidrawFunc (Return to index)

    command to export a graphic file

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    export(compview[,compview[,...compview]] [path] :host host_str :port port_int :socket :string|:str :eps :idraw) -- export in drawtool (or other) format ";

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Extension.html0000644000076500007650000001172711324451724020723 0ustar scottscott00000000000000 Description of Extension
    class Extension (Return to index)

    area where a glyph actually draws after all.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/geometry.h

    Description:

    in reference manual.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Extent.html0000644000076500007650000000464411324451724020216 0ustar scottscott00000000000000 Description of Extent
    class Extent (Return to index)

    geometric extent object

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Graphic/geomobjs.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ExternView.html0000644000076500007650000000645411324451724021050 0ustar scottscott00000000000000 Description of ExternView
    class ExternView : public ComponentView (Return to index)

    base class for external representation objects. with traversal subclasses.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/externview.h

    Description:

    base class for external representation objects and subclasses for common traversals (PreorderView, InorderView, PostorderView).

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/F_Circle.html0000644000076500007650000000315711324451724020413 0ustar scottscott00000000000000 Description of F_Circle
    class F_Circle : public F_Ellipse (Return to index)

    filled circle graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/ellipses.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/F_ClosedBSpline.html0000644000076500007650000001036511324451724021677 0ustar scottscott00000000000000 Description of F_ClosedBSpline
    class F_ClosedBSpline : public ClosedBSpline (Return to index)

    filled closed b-spline graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/splines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/F_Ellipse.html0000644000076500007650000001030311324451724020576 0ustar scottscott00000000000000 Description of F_Ellipse
    class F_Ellipse : public Ellipse (Return to index)

    filled ellipse graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/ellipses.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/F_OpenBSpline.html0000644000076500007650000001033111324451724021360 0ustar scottscott00000000000000 Description of F_OpenBSpline
    class F_OpenBSpline : public OpenBSpline (Return to index)

    filled open b-spline graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/splines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/F_Polygon.html0000644000076500007650000001025111324451724020632 0ustar scottscott00000000000000 Description of F_Polygon
    class F_Polygon : public Polygon (Return to index)

    filled polygon graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/polygons.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/F_Rect.html0000644000076500007650000001024711324451724020105 0ustar scottscott00000000000000 Description of F_Rect
    class F_Rect : public Rect (Return to index)

    filled rectangle graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/polygons.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FalseAttrListFunc.html0000644000076500007650000000377611324451724022311 0ustar scottscott00000000000000 Description of FalseAttrListFunc
    class FalseAttrListFunc : public AttrListFunc (Return to index)

    interpreter command for plugging together AttrDialog and SlctByAttrCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/slctbyattr.h

    Description:

    interpreter command used to not add a component to current selection when attribute expression evaluates to false.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FBoxObj.html0000644000076500007650000000665111324451724020240 0ustar scottscott00000000000000 Description of FBoxObj
    class FBoxObj (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      TopoFace/fgeomobjs.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FFillPolygonObj.html0000644000076500007650000001232511324451724021741 0ustar scottscott00000000000000 Description of FFillPolygonObj
    class FFillPolygonObj : public FMultiLineObj (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      TopoFace/fgeomobjs.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FieldEditor.html0000644000076500007650000001425111324451724021134 0ustar scottscott00000000000000 Description of FieldEditor
    class FieldEditor : public InputHandler (Return to index)

    field editor.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/field.h

    Description:

    in reference manual

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FieldEditorAction.html0000644000076500007650000000401611324451724022270 0ustar scottscott00000000000000 Description of FieldEditorAction
    class FieldEditorAction : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/field.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/File.html0000644000076500007650000000462111324451724017621 0ustar scottscott00000000000000 Description of File
    class File (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      OS/file.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FileBrowser.html0000644000076500007650000001411011324451724021157 0ustar scottscott00000000000000 Description of FileBrowser
    class FileBrowser : public StringBrowser (Return to index)

    a StringBrowser that displays file names (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/filebrowser.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FileBrowser__2.html0000644000076500007650000000764211324451724021553 0ustar scottscott00000000000000 Description of FileBrowser__2
    class FileBrowser__2 : public Browser (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/fbrowser.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FileChooser.html0000644000076500007650000001377111324451724021152 0ustar scottscott00000000000000 Description of FileChooser
    class FileChooser : public StringChooser (Return to index)

    a StringChooser for choosing files from a directory (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/filechooser.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FileChooser__2.html0000644000076500007650000000512111324451724021520 0ustar scottscott00000000000000 Description of FileChooser__2
    class FileChooser__2 : public Dialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/fchooser.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FileChooserAction.html0000644000076500007650000000343611324451724022305 0ustar scottscott00000000000000 Description of FileChooserAction
    class FileChooserAction : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/fchooser.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FileNameVarView.html0000644000076500007650000000374611324451724021735 0ustar scottscott00000000000000 Description of FileNameVarView
    class FileNameVarView : public StateVarView (Return to index)

    file-name state variable view

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/stateviews.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FillPolygonObj.html0000644000076500007650000000623111324451724021632 0ustar scottscott00000000000000 Description of FillPolygonObj
    class FillPolygonObj : public MultiLineObj (Return to index)

    filled polygon geometric object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/geomobjs.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FilterFunc.html0000644000076500007650000000426111324451724021003 0ustar scottscott00000000000000 Description of FilterFunc
    class FilterFunc : public StrmFunc (Return to index)

    stream filter command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FilterNextFunc.html0000644000076500007650000000400511324451724021636 0ustar scottscott00000000000000 Description of FilterNextFunc
    class FilterNextFunc : public StrmFunc (Return to index)

    hidden func used by next command for stream filter command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FixedLayout.html0000644000076500007650000000454411324451724021203 0ustar scottscott00000000000000 Description of FixedLayout
    class FixedLayout : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/place.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FixedPanCmd.html0000644000076500007650000000720311324451724021063 0ustar scottscott00000000000000 Description of FixedPanCmd
    class FixedPanCmd : public CameraMotionCmd (Return to index)

    command for panning by fixed amount.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcamcmds.h

    Description:

    Used in a set of pull-down menu items under the "View" menu of a drawing editor.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FixedPin.html0000644000076500007650000000543011324451724020447 0ustar scottscott00000000000000 Description of FixedPin
    class FixedPin : public Rubberband (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/pin.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FixViewCmd.html0000644000076500007650000001101211324451724020737 0ustar scottscott00000000000000 Description of FixViewCmd
    class FixViewCmd : public Command (Return to index)

    command for fixing size or location of a graphic view.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovfixview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FLineObj.html0000644000076500007650000001043711324451724020374 0ustar scottscott00000000000000 Description of FLineObj
    class FLineObj (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      TopoFace/fgeomobjs.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FloatFunc.html0000644000076500007650000000340611324451724020623 0ustar scottscott00000000000000 Description of FloatFunc
    class FloatFunc : public ComFunc (Return to index)

    floating-point conversion command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    f=float(num) -- convert any numeric to a float.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FloorFunc.html0000644000076500007650000000342011324451724020633 0ustar scottscott00000000000000 Description of FloorFunc
    class FloorFunc : public NumFunc (Return to index)

    floor command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    num=floor(num) -- return closest integer value less than or equal to argument

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FMultiLineObj.html0000644000076500007650000002706411324451724021413 0ustar scottscott00000000000000 Description of FMultiLineObj
    class FMultiLineObj (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      TopoFace/fgeomobjs.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Font.html0000644000076500007650000002107011324451724017645 0ustar scottscott00000000000000 Description of Font
    class Font : public Resource (Return to index)

    a font object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/font.h

    Description:

    defines a mapping between character codes and their appearance on the screen.

    in reference manual

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/FontBoundingBox.html0000644000076500007650000000457211324451724022014 0ustar scottscott00000000000000 Description of FontBoundingBox
    class FontBoundingBox (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/font.h

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/FontByNameFunc.html0000644000076500007650000000354111324451724021560 0ustar scottscott00000000000000 Description of FontByNameFunc
    class FontByNameFunc : public UnidrawFunc (Return to index)

    command for setting font state variable by font name in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    fontbyname(fontname) -- set current font by name

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FontCmd.html0000644000076500007650000000726711324451724020305 0ustar scottscott00000000000000 Description of FontCmd
    class FontCmd : public Command (Return to index)

    command for changing font in current selection and editor

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/font.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FontFamily.html0000644000076500007650000000433711324451724021016 0ustar scottscott00000000000000 Description of FontFamily
    class FontFamily (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/font.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FontFamilyRep.html0000644000076500007650000000706511324451724021466 0ustar scottscott00000000000000 Description of FontFamilyRep
    class FontFamilyRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xfont.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FontFunc.html0000644000076500007650000000346611324451724020472 0ustar scottscott00000000000000 Description of FontFunc
    class FontFunc : public UnidrawFunc (Return to index)

    command for setting font state variable in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    font(fontnum) -- set current font from menu order

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FontRep.html0000644000076500007650000000617411324451724020324 0ustar scottscott00000000000000 Description of FontRep
    class FontRep : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-X11/xfont.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FontVar.html0000644000076500007650000000755311324451724020330 0ustar scottscott00000000000000 Description of FontVar
    class FontVar : public StateVar (Return to index)

    current font state variable

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/statevars.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FontVarView.html0000644000076500007650000000423511324451724021155 0ustar scottscott00000000000000 Description of FontVarView
    class FontVarView : public StateVarView (Return to index)

    current-font state variable view

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/stateviews.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ForFunc.html0000644000076500007650000000376711324451724020316 0ustar scottscott00000000000000 Description of ForFunc
    class ForFunc : public ComFunc (Return to index)

    for-loop command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/postfunc.h

    Description:

    val=for(initexpr whileexpr [nextexpr [bodyexpr]] :body expr) -- for loop.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FPointObj.html0000644000076500007650000000331011324451724020566 0ustar scottscott00000000000000 Description of FPointObj
    class FPointObj (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      TopoFace/fgeomobjs.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Frame.html0000644000076500007650000000702111324451724017771 0ustar scottscott00000000000000 Description of Frame
    class Frame : public MonoScene (Return to index)

    surrounds another Interactor (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/frame.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameBackCmd.html0000644000076500007650000000473711324451724021211 0ustar scottscott00000000000000 Description of FrameBackCmd
    class FrameBackCmd : public BackCmd (Return to index)

    BackCmd specialized for FrameUnidraw use.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameBeginCmd.html0000644000076500007650000000465411324451724021373 0ustar scottscott00000000000000 Description of FrameBeginCmd
    class FrameBeginCmd : public MoveFrameCmd (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameCatalog.html0000644000076500007650000000563211324451724021272 0ustar scottscott00000000000000 Description of FrameCatalog
    class FrameCatalog : public OverlayCatalog (Return to index)

    catalog for retrieving flipbook documents

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecatalog.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameComp.html0000644000076500007650000001063311324451724020613 0ustar scottscott00000000000000 Description of FrameComp
    class FrameComp : public OverlaysComp (Return to index)

    single frame component.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecomps.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameCopyCmd.html0000644000076500007650000000516711324451724021261 0ustar scottscott00000000000000 Description of FrameCopyCmd
    class FrameCopyCmd : public CopyCmd (Return to index)

    CopyCmd specialized for FrameUnidraw use.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameCreator.html0000644000076500007650000000413611324451724021315 0ustar scottscott00000000000000 Description of FrameCreator
    class FrameCreator : public OverlayCreator (Return to index)

    creator for use with FrameCatalog.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecreator.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameEditor.html0000644000076500007650000001652511324451724021151 0ustar scottscott00000000000000 Description of FrameEditor
    class FrameEditor : public ComEditor (Return to index)

    ComEditor specialized for multi-frame use.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/frameeditor.h

    Description:

    set current frame.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/FrameEndCmd.html0000644000076500007650000000471011324451724021046 0ustar scottscott00000000000000 Description of FrameEndCmd
    class FrameEndCmd : public MoveFrameCmd (Return to index)

    command to move to the last frame.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameFileComp.html0000644000076500007650000001273611324451724021421 0ustar scottscott00000000000000 Description of FrameFileComp
    class FrameFileComp : public FramesComp (Return to index)

    component to indirectly refer to a flipbook document by a pathname.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framefile.h

    Description:

    similar to OverlayFileComp.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameFileScript.html0000644000076500007650000000611511324451724021761 0ustar scottscott00000000000000 Description of FrameFileScript
    class FrameFileScript : public FramesScript (Return to index)

    serialized view of FrameFileComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framefile.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameFileView.html0000644000076500007650000000325511324451724021431 0ustar scottscott00000000000000 Description of FrameFileView
    class FrameFileView : public FramesView (Return to index)

    graphical view of FrameFileComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framefile.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameFrontCmd.html0000644000076500007650000000475411324451724021440 0ustar scottscott00000000000000 Description of FrameFrontCmd
    class FrameFrontCmd : public FrontCmd (Return to index)

    FrontCmd specialized for FrameUnidraw use.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameFunc.html0000644000076500007650000000355511324451724020615 0ustar scottscott00000000000000 Description of FrameFunc
    class FrameFunc : public UnidrawFunc (Return to index)

    command to composite component for a frame, defaults to current

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    compview=frame([index]) -- return composite component for a frame, defaults to current

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameGroupCmd.html0000644000076500007650000000572411324451724021442 0ustar scottscott00000000000000 Description of FrameGroupCmd
    class FrameGroupCmd : public OvGroupCmd (Return to index)

    OvGroupCmd specialized for FrameUnidraw use.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameIdrawComp.html0000644000076500007650000002366411324451724021612 0ustar scottscott00000000000000 Description of FrameIdrawComp
    class FrameIdrawComp : public FramesComp (Return to index)

    top-level component for flipbook document.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecomps.h

    Description:

    FrameIdrawComp is a clone of OverlayIdrawComp derived from FramesComp.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameIdrawPS.html0000644000076500007650000000432711324451724021231 0ustar scottscott00000000000000 Description of FrameIdrawPS
    class FrameIdrawPS : public OverlayIdrawPS (Return to index)

    "PostScript" view of FrameIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/frameps.h

    Description:

    this generates a multi-page "PostScript" document that is not necessarily in idraw format.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameIdrawScript.html0000644000076500007650000001445511324451724022156 0ustar scottscott00000000000000 Description of FrameIdrawScript
    class FrameIdrawScript : public FramesScript (Return to index)

    serialized view of FrameIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framescripts.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameIdrawView.html0000644000076500007650000001072011324451724021613 0ustar scottscott00000000000000 Description of FrameIdrawView
    class FrameIdrawView : public FramesView (Return to index)

    graphical view of FrameIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/frameviews.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameImportCmd.html0000644000076500007650000000573311324451724021620 0ustar scottscott00000000000000 Description of FrameImportCmd
    class FrameImportCmd : public OvImportCmd (Return to index)

    specialized OvImportCmd for importing frames

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/frameimport.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameImportPasteCmd.html0000644000076500007650000000631011324451724022605 0ustar scottscott00000000000000 Description of FrameImportPasteCmd
    class FrameImportPasteCmd : public MacroCmd (Return to index)

    specialized PasteCmd for flipbook

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/frameimport.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameKit.html0000644000076500007650000001041411324451724020441 0ustar scottscott00000000000000 Description of FrameKit
    class FrameKit : public OverlayKit (Return to index)

    derived OverlayKit for use with FrameEditor.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framekit.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameListState.html0000644000076500007650000000430311324451724021626 0ustar scottscott00000000000000 Description of FrameListState
    class FrameListState : public NameState (Return to index)

    state variable for current-frame-count.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framestates.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameNewViewCmd.html0000644000076500007650000000502211324451724021721 0ustar scottscott00000000000000 Description of FrameNewViewCmd
    class FrameNewViewCmd : public OvNewViewCmd (Return to index)

    OvNewViewCmd specialized for FrameUnidraw use.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameNumberState.html0000644000076500007650000000737611324451724022160 0ustar scottscott00000000000000 Description of FrameNumberState
    class FrameNumberState : public NameState (Return to index)

    state variable for current-frame-number.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framestates.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameOverlaysComp.html0000644000076500007650000001114411324451724022336 0ustar scottscott00000000000000 Description of FrameOverlaysComp
    class FrameOverlaysComp : public OverlaysComp (Return to index)

    OverlaysComp specialized for use within a FrameIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecomps.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameOverlaysScript.html0000644000076500007650000000345511324451724022712 0ustar scottscott00000000000000 Description of FrameOverlaysScript
    class FrameOverlaysScript : OverlaysScript (Return to index)

    serialized view of FrameOverlaysComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framescripts.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameOverlaysView.html0000644000076500007650000000332211324451724022351 0ustar scottscott00000000000000 Description of FrameOverlaysView
    class FrameOverlaysView : public OverlaysView (Return to index)

    graphical view of FrameOverlaysComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/frameviews.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FramesComp.html0000644000076500007650000001064011324451724020774 0ustar scottscott00000000000000 Description of FramesComp
    class FramesComp : public FrameComp (Return to index)

    composite frame component.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecomps.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FrameScript.html0000644000076500007650000000646411324451724021170 0ustar scottscott00000000000000 Description of FrameScript
    class FrameScript : public OverlaysScript (Return to index)

    serialized view of FrameComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framescripts.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/FramesScript.html0000644000076500007650000000462311324451724021346 0ustar scottscott00000000000000 Description of FramesScript
    class FramesScript : public FrameScript (Return to index)

    serialized view of FramesComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framescripts.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FramesView.html0000644000076500007650000000441411324451724021012 0ustar scottscott00000000000000 Description of FramesView
    class FramesView : public FrameView (Return to index)

    graphical view of FramesComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/frameviews.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameUngroupCmd.html0000644000076500007650000000537511324451724022007 0ustar scottscott00000000000000 Description of FrameUngroupCmd
    class FrameUngroupCmd : public UngroupCmd (Return to index)

    UngroupCmd specialized for FrameUnidraw use.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameView.html0000644000076500007650000000332611324451724020630 0ustar scottscott00000000000000 Description of FrameView
    class FrameView : public OverlaysView (Return to index)

    graphical view of FrameComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/frameviews.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrameViewer.html0000644000076500007650000000615011324451724021155 0ustar scottscott00000000000000 Description of FrameViewer
    class FrameViewer : public OverlayViewer (Return to index)

    OverlayViewer specialized for use with FrameEditor.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/frameviewer.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FrontCmd.html0000644000076500007650000000532011324451724020453 0ustar scottscott00000000000000 Description of FrontCmd
    class FrontCmd : public Command (Return to index)

    move-to-front command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/struct.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/FullGraphic.html0000644000076500007650000001003111324451724021132 0ustar scottscott00000000000000 Description of FullGraphic
    class FullGraphic : public Graphic (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/graphic.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GAcknowledgeDialog.html0000644000076500007650000000520011324451724022406 0ustar scottscott00000000000000 Description of GAcknowledgeDialog
    class GAcknowledgeDialog : public Dialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/gdialogs.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GConfirmDialog.html0000644000076500007650000000460211324451724021565 0ustar scottscott00000000000000 Description of GConfirmDialog
    class GConfirmDialog : public Dialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/gdialogs.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GFieldEditor.html0000644000076500007650000002142311324451724021242 0ustar scottscott00000000000000 Description of GFieldEditor
    class GFieldEditor : public InputHandler (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/fieldedit.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GFieldEditorAction.html0000644000076500007650000000403711324451724022402 0ustar scottscott00000000000000 Description of GFieldEditorAction
    class GFieldEditorAction : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/fieldedit.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GLContext.html0000644000076500007650000000333611324451724020613 0ustar scottscott00000000000000 Description of GLContext
    class GLContext : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/glcontext.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GlobalSymbolFunc.html0000644000076500007650000000342611324451724022146 0ustar scottscott00000000000000 Description of GlobalSymbolFunc
    class GlobalSymbolFunc : public ComFunc (Return to index)

    command to make assign a global variable

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/symbolfunc.h

    Description:

    val=global(symbol)|global(symbol)=val -- make symbol global

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Glue.html0000644000076500007650000000375011324451724017640 0ustar scottscott00000000000000 Description of Glue
    class Glue : public Interactor (Return to index)

    variable spacing between interactors (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/glue.h

    Description:

    man page

    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Glue__2.html0000644000076500007650000000515111324451724020215 0ustar scottscott00000000000000 Description of Glue__2
    class Glue__2 : public Glyph (Return to index)

    glue glyph base class

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/glue.h

    Description:

    in reference manual

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Glyph.html0000644000076500007650000001564511324451724020035 0ustar scottscott00000000000000 Description of Glyph
    class Glyph : public Resource (Return to index)

    InterViews 3.1 lightweight glyphs

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/glyph.h

    Description:

    in reference manual.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphCatalog.html0000644000076500007650000000532111324451724021274 0ustar scottscott00000000000000 Description of GraphCatalog
    class GraphCatalog : public OverlayCatalog (Return to index)

    catalog for read/write of graphdraw documents.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcatalog.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphComp.html0000644000076500007650000002162211324451724020622 0ustar scottscott00000000000000 Description of GraphComp
    class GraphComp : public OverlaysComp (Return to index)

    component used to group a set of nodes and edges into a graph.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcomp.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphCopyCmd.html0000644000076500007650000000554111324451724021264 0ustar scottscott00000000000000 Description of GraphCopyCmd
    class GraphCopyCmd : public CopyCmd (Return to index)

    specialized CopyCmd for graphdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphCreator.html0000644000076500007650000000431211324451724021320 0ustar scottscott00000000000000 Description of GraphCreator
    class GraphCreator : public OverlayCreator (Return to index)

    creator for use of GraphCatalog.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcreator.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphCutCmd.html0000644000076500007650000000610011324451724021075 0ustar scottscott00000000000000 Description of GraphCutCmd
    class GraphCutCmd : public CutCmd (Return to index)

    specialized CutCmd for graphdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphData.html0000644000076500007650000000237011324451724020574 0ustar scottscott00000000000000 Description of GraphData
    class GraphData (Return to index)

    base class for EdgeData and NodeData.

    Type:
      Abstract

    Derived Classes

    Include file:

      GraphUnidraw/graphdata.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphDeleteCmd.html0000644000076500007650000000562411324451724021556 0ustar scottscott00000000000000 Description of GraphDeleteCmd
    class GraphDeleteCmd : public OvDeleteCmd (Return to index)

    specialized OvDeleteCmd for graphdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphDupCmd.html0000644000076500007650000000610011324451724021072 0ustar scottscott00000000000000 Description of GraphDupCmd
    class GraphDupCmd : public DupCmd (Return to index)

    specialized DupCmd for graphdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphEditor.html0000644000076500007650000000730311324451724021152 0ustar scottscott00000000000000 Description of GraphEditor
    class GraphEditor : public ComEditor (Return to index)

    editor for graphdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/grapheditor.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Graphic.html0000644000076500007650000012676211324451724020332 0ustar scottscott00000000000000 Description of Graphic
    class Graphic (Return to index)

    graphic base-classe

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Graphic/graphic.h

    Description:

    interface to Graphic base class and FullGraphic, a subclass of Graphic for which all graphics state is defined.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Graphic31.html0000644000076500007650000010161611324451725020466 0ustar scottscott00000000000000 Description of Graphic31
    class Graphic31 : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphicBlock.html0000644000076500007650000002344411324451725021277 0ustar scottscott00000000000000 Description of GraphicBlock
    class GraphicBlock : public Interactor (Return to index)

    an Interactor that contains a Picture.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/grblock.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphicComp.html0000644000076500007650000003643111324451725021143 0ustar scottscott00000000000000 Description of GraphicComp
    class GraphicComp : public Component (Return to index)

    base classes for graphical component subjects.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/grcomp.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphicComps.html0000644000076500007650000002553411324451725021330 0ustar scottscott00000000000000 Description of GraphicComps
    class GraphicComps : public GraphicComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/grcomp.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphicCompTool.html0000644000076500007650000001176311324451725022002 0ustar scottscott00000000000000 Description of GraphicCompTool
    class GraphicCompTool : public Tool (Return to index)

    graphic component tool

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Tools/grcomptool.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphicId.html0000644000076500007650000001375611324451725020606 0ustar scottscott00000000000000 Description of GraphicId
    class (Return to index)

    UList based list of GraphicId's

    Type:
      Instantiable

    Derived Classes

    Include file:

      DrawServ/gridlist.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphicIdFunc.html0000644000076500007650000000363211324451725021412 0ustar scottscott00000000000000 Description of GraphicIdFunc
    class GraphicIdFunc : public UnidrawFunc (Return to index)

    command to send message between remote selections

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawfunc.h

    Description:

    grid(id selector :state selected :request newselector :grant oldselector) -- command to send message between remote selections

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphicIdList.html0000644000076500007650000002316111324451725021431 0ustar scottscott00000000000000 Description of GraphicIdList
    class GraphicIdList : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/gridlist.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/GraphicIds.html0000644000076500007650000000560411324451725020762 0ustar scottscott00000000000000 Description of GraphicIds
    class GraphicIds : public GraphicId (Return to index)

    object to encapsulate a set of graphic ids

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/grid.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphicLeakFunc.html0000644000076500007650000000347411324451725021736 0ustar scottscott00000000000000 Description of GraphicLeakFunc
    class GraphicLeakFunc : public ComFunc (Return to index)

    command to return current number of Graphic's

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    attrvleak() -- current number of Graphic's

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphicMaster.html0000644000076500007650000001242311324451725021473 0ustar scottscott00000000000000 Description of GraphicMaster
    class GraphicMaster : public PolyGraphic (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphicToDrawingFunc.html0000644000076500007650000000361611324451725022756 0ustar scottscott00000000000000 Description of GraphicToDrawingFunc
    class GraphicToDrawingFunc : public UnidrawFunc (Return to index)

    command to convert from graphic to drawing coordinates

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    dx,dy=gtod(compview gx,gy) -- convert from graphic to drawing coordinates

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphicView.html0000644000076500007650000003741211324451725021157 0ustar scottscott00000000000000 Description of GraphicView
    class GraphicView : public ComponentView (Return to index)

    base classes for graphical component views.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/grview.h

    Description:

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/GraphicViews.html0000644000076500007650000002271211324451725021337 0ustar scottscott00000000000000 Description of GraphicViews
    class GraphicViews : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/grview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphIdrawComp.html0000644000076500007650000001340111324451724021605 0ustar scottscott00000000000000 Description of GraphIdrawComp
    class GraphIdrawComp : public OverlayIdrawComp (Return to index)

    top-level component in a graphdraw document.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcomp.h

    Description:

    Note: in the future this class could be derived from GraphComp, once the signature of OverlayIdrawComp is completely available as a mixin.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphIdrawScript.html0000644000076500007650000000512711324451724022161 0ustar scottscott00000000000000 Description of GraphIdrawScript
    class GraphIdrawScript : public OverlayIdrawScript (Return to index)

    serialized view of GraphIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphIdrawView.html0000644000076500007650000000342711324451724021630 0ustar scottscott00000000000000 Description of GraphIdrawView
    class GraphIdrawView : public OverlayIdrawView (Return to index)

    graphical view of GraphIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphImportCmd.html0000644000076500007650000000574711324451724021634 0ustar scottscott00000000000000 Description of GraphImportCmd
    class GraphImportCmd : public OvImportCmd (Return to index)

    specialized OvImportCmd for importing nested sub-graphs.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphimport.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphKit.html0000644000076500007650000001140611324451724020452 0ustar scottscott00000000000000 Description of GraphKit
    class GraphKit : public OverlayKit (Return to index)

    kit for constructing GraphEditor.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphkit.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphMoveTool.html0000644000076500007650000000473311324451724021474 0ustar scottscott00000000000000 Description of GraphMoveTool
    class GraphMoveTool : public MoveTool (Return to index)

    specialized MoveTool for graph manipulation.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphtools.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphNewViewCmd.html0000644000076500007650000000501311324451724021730 0ustar scottscott00000000000000 Description of GraphNewViewCmd
    class GraphNewViewCmd : public OvNewViewCmd (Return to index)

    specialized OvNewViewCmd for graphdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphPasteCmd.html0000644000076500007650000000652111324451724021425 0ustar scottscott00000000000000 Description of GraphPasteCmd
    class GraphPasteCmd : public PasteCmd (Return to index)

    specialized PasteCmd for graphdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GraphScript.html0000644000076500007650000000633211324451724021171 0ustar scottscott00000000000000 Description of GraphScript
    class GraphScript : public OverlaysScript (Return to index)

    serialized view of GraphComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcomp.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GraphView.html0000644000076500007650000000332511324451724020636 0ustar scottscott00000000000000 Description of GraphView
    class GraphView : public OverlaysView (Return to index)

    graphical view of GraphComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GrAttrListFunc.html0000644000076500007650000000344611324451724021621 0ustar scottscott00000000000000 Description of GrAttrListFunc
    class GrAttrListFunc : public ComFunc (Return to index)

    attrlist command, for returning the attribute list of a component.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grdotfunc.h

    Description:

    attrlist(compview) -- return attribute list of component.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GravityCmd.html0000644000076500007650000000536011324451725021015 0ustar scottscott00000000000000 Description of GravityCmd
    class GravityCmd : public Command (Return to index)

    enable/disable gravity command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/viewcmds.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GravityVar.html0000644000076500007650000000705611324451725021046 0ustar scottscott00000000000000 Description of GravityVar
    class GravityVar : public StateVar (Return to index)

    gravity-enabled state variable

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/statevars.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GravityVarView.html0000644000076500007650000000414111324451725021671 0ustar scottscott00000000000000 Description of GravityVarView
    class GravityVarView : public StateVarView (Return to index)

    gravity-enabled state variable view

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/stateviews.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GrayRampCmd.html0000644000076500007650000001056711324451725021117 0ustar scottscott00000000000000 Description of GrayRampCmd
    class GrayRampCmd : public ProcessingCmd (Return to index)

    command for embedding gray-level ramp in a gray-level raster.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GrayRampFunc.html0000644000076500007650000000534711324451725021307 0ustar scottscott00000000000000 Description of GrayRampFunc
    class GrayRampFunc : public RasterFunc (Return to index)

    ComFunc to embed a gray-level ramp in a gray-level raster.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GrayRaster.html0000644000076500007650000002441711324451725021033 0ustar scottscott00000000000000 Description of GrayRaster
    class GrayRaster : public OverlayRaster (Return to index)

    gray-level image with arbitary numeric values.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/grayraster.h

    Description:

    pixel type.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GrDotFunc.html0000644000076500007650000000407511324451724020600 0ustar scottscott00000000000000 Description of GrDotFunc
    class GrDotFunc : public DotFunc (Return to index)

    . (dot) operator, for compound variables, and access to ComponentView AttributeList's.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grdotfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GreaterThanFunc.html0000644000076500007650000000355011324451725021763 0ustar scottscott00000000000000 Description of GreaterThanFunc
    class GreaterThanFunc : public NumFunc (Return to index)

    > (greater than) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/boolfunc.h

    Description:

    also useful for partial string comparison with :n keyword, i.e. gt("string1" "string2" :n 6) returns false. also useful for symbol comparison with :sym keyword.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GreaterThanOrEqualFunc.html0000644000076500007650000000354311324451725023256 0ustar scottscott00000000000000 Description of GreaterThanOrEqualFunc
    class GreaterThanOrEqualFunc : public NumFunc (Return to index)

    >= (greater than or equal) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/boolfunc.h

    Description:

    also useful for partial string comparison with :n keyword. also useful for symbol comparison with :sym keyword.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Grid.html0000644000076500007650000000656311324451725017637 0ustar scottscott00000000000000 Description of Grid
    class Grid (Return to index)

    drawing editor grid

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/grid.h

    Description:

    constrains points to lie on a grid and provides a corresponding visual representation of the grid.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GridCmd.html0000644000076500007650000000533011324451725020252 0ustar scottscott00000000000000 Description of GridCmd
    class GridCmd : public Command (Return to index)

    enable/disable grid command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/viewcmds.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GridDialog.html0000644000076500007650000000574011324451725020753 0ustar scottscott00000000000000 Description of GridDialog
    class GridDialog : public BasicDialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/dialogs.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GridSpacingCmd.html0000644000076500007650000000647411324451725021571 0ustar scottscott00000000000000 Description of GridSpacingCmd
    class GridSpacingCmd : public Command (Return to index)

    grid-spacing command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/viewcmds.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GrListAtFunc.html0000644000076500007650000000343011324451724021244 0ustar scottscott00000000000000 Description of GrListAtFunc
    class GrListAtFunc : public ComFunc (Return to index)

    list member command for ComUnidraw

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grlistfunc.h

    Description:

    val=at(list|attrlist|compview n :set val) -- return (or set) the nth item in a list.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GrListSizeFunc.html0000644000076500007650000000343711324451724021621 0ustar scottscott00000000000000 Description of GrListSizeFunc
    class GrListSizeFunc : public ComFunc (Return to index)

    list size command for Unidraw

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grlistfunc.h

    Description:

    num=size(list|attrlist|compview) -- return size of a list.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GrLocTool.html0000644000076500007650000001032611324451724020605 0ustar scottscott00000000000000 Description of GrLocTool
    class GrLocTool : public Tool (Return to index)

    tool to display coordinates relative to a graphic.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/grloctool.h

    Description:

    For a raster or stencil the origin is 0,0. For all other graphics the origin is relative to the coordinates used to construct the graphic, i.e. the lower-left corner of the original screen canvas if created from mouse events.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Group.html0000644000076500007650000000456411324451725020045 0ustar scottscott00000000000000 Description of Group
    class Group : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/group.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GroupCmd.html0000644000076500007650000001226111324451725020462 0ustar scottscott00000000000000 Description of GroupCmd
    class GroupCmd : public Command (Return to index)

    group command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/struct.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GrowGroupFunc.html0000644000076500007650000000355511324451725021517 0ustar scottscott00000000000000 Description of GrowGroupFunc
    class GrowGroupFunc : public UnidrawFunc (Return to index)

    command to add graphic to existing group graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/groupfunc.h

    Description:

    newgroup=growgroup(groupview compview) -- add graphic to existing group graphic

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GrowingBSpline.html0000644000076500007650000000447311324451725021641 0ustar scottscott00000000000000 Description of GrowingBSpline
    class GrowingBSpline : public GrowingVertices (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubverts.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GrowingClosedBSpline.html0000644000076500007650000000453111324451725022766 0ustar scottscott00000000000000 Description of GrowingClosedBSpline
    class GrowingClosedBSpline : public GrowingVertices (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubverts.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GrowingMultiLine.html0000644000076500007650000000450511324451725022203 0ustar scottscott00000000000000 Description of GrowingMultiLine
    class GrowingMultiLine : public GrowingVertices (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubverts.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GrowingPolygon.html0000644000076500007650000000447311324451725021734 0ustar scottscott00000000000000 Description of GrowingPolygon
    class GrowingPolygon : public GrowingVertices (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubverts.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GrowingVertices.html0000644000076500007650000001652411324451725022071 0ustar scottscott00000000000000 Description of GrowingVertices
    class GrowingVertices : public Rubberband (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubverts.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/GSData.html0000644000076500007650000000326711324451724020052 0ustar scottscott00000000000000 Description of GSData
    class GSData : public Data (Return to index)

    graphic state data for command undo

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/datas.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/GVUpdater.html0000644000076500007650000001345311324451724020606 0ustar scottscott00000000000000 Description of GVUpdater
    class GVUpdater (Return to index)

    GraphicView updater

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Components/gvupdater.h

    Description:

    class for reconciling a GraphicView's state and structure with its subject's.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Handler.html0000644000076500007650000000324511324451725020321 0ustar scottscott00000000000000 Description of Handler
    class Handler : public Resource (Return to index)

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      InterViews/handler.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/HandlesFunc.html0000644000076500007650000000355611324451725021143 0ustar scottscott00000000000000 Description of HandlesFunc
    class HandlesFunc : public UnidrawFunc (Return to index)

    command to turn on or off the selection tic marks in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    handles(flag) -- enable/disable current selection tic marks and/or highlighting

    Public:



    (more documentation)

    ivtools-doc/doc/classes/HBorder.html0000644000076500007650000000365011324451725020271 0ustar scottscott00000000000000 Description of HBorder
    class HBorder : public Border (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/border.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/HBox.html0000644000076500007650000001360111324451725017601 0ustar scottscott00000000000000 Description of HBox
    class HBox : public Box (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/box.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/HelpFunc.html0000644000076500007650000000376011324451725020452 0ustar scottscott00000000000000 Description of HelpFunc
    class HelpFunc : public ComFunc (Return to index)

    help command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/helpfunc.h

    Description:

    help([command] [command...] :all :posteval) -- help for commands.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/HGlue.html0000644000076500007650000000450711324451725017752 0ustar scottscott00000000000000 Description of HGlue
    class HGlue : public Glue (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/glue.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/HideViewCmd.html0000644000076500007650000000706211324451725021075 0ustar scottscott00000000000000 Description of HideViewCmd
    class HideViewCmd : public Command (Return to index)

    command to hide a graphic view in this viewer.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovshowhide.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/HighlightFunc.html0000644000076500007650000000357511324451725021475 0ustar scottscott00000000000000 Description of HighlightFunc
    class HighlightFunc : public UnidrawFunc (Return to index)

    command to highlight a graphic given another graphic's state

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/highlightfunc.h

    Description:

    highlight(compview compviewgs) -- set the highlight graphic state for a graphic

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Hit.html0000644000076500007650000001660611324451725017475 0ustar scottscott00000000000000 Description of Hit
    class Hit (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/hit.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Host.html0000644000076500007650000000161011324451725017653 0ustar scottscott00000000000000 Description of Host
    class Host (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      OS/host.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/HPanelControl.html0000644000076500007650000000342311324451725021452 0ustar scottscott00000000000000 Description of HPanelControl
    class HPanelControl : public PanelControl (Return to index)

    horizontal-panel control

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/uctrls.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/HRule.html0000644000076500007650000000256711324451725017771 0ustar scottscott00000000000000 Description of HRule
    class HRule : public Rule (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/rule.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/HScrollBar.html0000644000076500007650000000400411324451725020731 0ustar scottscott00000000000000 Description of HScrollBar
    class HScrollBar : public ScrollBar (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/scrollbar.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/HScroller.html0000644000076500007650000000441011324451725020634 0ustar scottscott00000000000000 Description of HScroller
    class HScroller : public Scroller (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/scroller.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/HSlotComp.html0000644000076500007650000000435611324451725020620 0ustar scottscott00000000000000 Description of HSlotComp
    class HSlotComp : public SlotComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/slot.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/HSlotView.html0000644000076500007650000000445611324451725020635 0ustar scottscott00000000000000 Description of HSlotView
    class HSlotView : public SlotView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/slot.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IconWindow.html0000644000076500007650000000327011324451725021022 0ustar scottscott00000000000000 Description of IconWindow
    class IconWindow : public ManagedWindow (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/window.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IdrawCatalog.html0000644000076500007650000003432311324451725021306 0ustar scottscott00000000000000 Description of IdrawCatalog
    class IdrawCatalog : public Catalog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcatalog.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IdrawComp.html0000644000076500007650000000531311324451725020627 0ustar scottscott00000000000000 Description of IdrawComp
    class IdrawComp : public GraphicComps (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcomp.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IdrawCreator.html0000644000076500007650000000337211324451725021333 0ustar scottscott00000000000000 Description of IdrawCreator
    class IdrawCreator : public Creator (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcreator.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IdrawEditor.html0000644000076500007650000003315011324451725021157 0ustar scottscott00000000000000 Description of IdrawEditor
    class IdrawEditor : public Editor (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/ided.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IdrawReader.html0000644000076500007650000000243611324451725021136 0ustar scottscott00000000000000 Description of IdrawReader
    class IdrawReader (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IVGlyph/idraw.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IdrawView.html0000644000076500007650000000321411324451725020641 0ustar scottscott00000000000000 Description of IdrawView
    class IdrawView : public GraphicViews (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IfThenElseFunc.html0000644000076500007650000000413311324451725021543 0ustar scottscott00000000000000 Description of IfThenElseFunc
    class IfThenElseFunc : public ComFunc (Return to index)

    if-then-else command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/postfunc.h

    Description:

    val=if(testexpr :then expr :else expr) -- evaluate testexpr and execute the :then expression if true, the :else expression if false.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IGridSpacingCmd.html0000644000076500007650000000467411324451725021702 0ustar scottscott00000000000000 Description of IGridSpacingCmd
    class IGridSpacingCmd : public GridSpacingCmd (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Image.html0000644000076500007650000000465711324451725017776 0ustar scottscott00000000000000 Description of Image
    class Image : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/image.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ImageCmd.html0000644000076500007650000000727311324451725020417 0ustar scottscott00000000000000 Description of ImageCmd
    class ImageCmd : public Command (Return to index)

    utility command for storing image processing command string.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ImportChooser.html0000644000076500007650000001112311324451725021533 0ustar scottscott00000000000000 Description of ImportChooser
    class ImportChooser : public OpenFileChooser (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/importchooser.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ImportChooserImpl.html0000644000076500007650000001413511324451725022363 0ustar scottscott00000000000000 Description of ImportChooserImpl
    class ImportChooserImpl : public OpenFileChooserImpl (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/importchooser.h

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/ImportCmd.html0000644000076500007650000001271611324451725020645 0ustar scottscott00000000000000 Description of ImportCmd
    class ImportCmd : public Command (Return to index)

    command for importing graphical objects

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/import.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ImportFunc.html0000644000076500007650000000443211324451725021031 0ustar scottscott00000000000000 Description of ImportFunc
    class ImportFunc : public UnidrawFunc (Return to index)

    command to import a graphic file

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    compview=import(pathname :popen :next) -- import graphic file from pathname or URL, or from a command if :popen (:next imports next in numeric series).

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IncrAfterFunc.html0000644000076500007650000000325211324451725021433 0ustar scottscott00000000000000 Description of IncrAfterFunc
    class IncrAfterFunc : public AssignFunc (Return to index)

    (increment after)++ operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/assignfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IncrFunc.html0000644000076500007650000000322111324451725020445 0ustar scottscott00000000000000 Description of IncrFunc
    class IncrFunc : public AssignFunc (Return to index)

    ++(increment before) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/assignfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/index.html0000644000076500007650000105763411324451727020071 0ustar scottscott00000000000000ivtools class index

    back to ivtools doc page
    ivtools class index
    ACE_IO_Handler
    ACosFunc arc-cosine command for ComTerp.
    ALIterator copy of Iterator for using Attribute library without Unidraw.
    AList copy of UList for using Attribute library without Unidraw.
    ASinFunc arc-sine command for ComTerp.
    ATan2Func arc-tangent (of y over x) command for ComTerp.
    ATanFunc arc-tangent command for ComTerp.
    AboutCmd
    AbsFunc absolute-value command for ComTerp.
    AcceptingObservable
    AceDispatcher
    AckBackHandler specialized ACE_EventHandler for monitoring responses from outgoing connection
    AcknowledgeBoxFunc command to popup an acknowledge dialog box
    AcknowledgeDialog
    Action
    ActiveHandler
    AddAssignFunc *= (add assign) operator .
    AddFunc + (plus) operator.
    AddToolButtonFunc command to add button to custom toolbar
    Adjustable handles request to modify its viewing editor.
    Adjuster manipulate a perspective using a pushbutton like interface (iv-2.6).
    Aggregate
    Align
    AlignCmd align command
    AlignToGridCmd align-to-grid command
    AlistLeakFunc command to return current number of AttributeValueList's
    Allocation actual size a glyph is given.
    AllocationInfo
    AllocationTable
    Allotment
    AlphaTransFunc command to set/get raster alpha transparency
    AlphaTransparentRasterCmd command to make raster alpha-transparent
    AndFunc && (and) operator.
    AnnotateDialog dialog for entering component annotation string.
    AnnotateTool tool for annotating a component (adding a descriptive string).
    ApplicationWindow
    ArrayCompositor
    ArrowCmd
    ArrowLine
    ArrowLineComp
    ArrowLineOvComp clone of ArrowLineComp derived from OverlayComp.
    ArrowLineOvView graphical view of ArrowLineOvComp.
    ArrowLinePS "PostScript" view of ArrowLineOvComp.
    ArrowLineScript serialized view of ArrowLineOvComp.
    ArrowLineView
    ArrowMultiLine
    ArrowMultiLineComp
    ArrowMultiLineOvComp clone of ArrowMultiLineComp derived from OverlayComp.
    ArrowMultiLineOvView graphical view of ArrowMultiLineOvComp.
    ArrowMultiLinePS "PostScript" view of ArrowMultiLineOvComp.
    ArrowMultiLineScript serialized view of ArrowMultiLineOvComp.
    ArrowMultiLineView
    ArrowOpenBSpline
    ArrowSplineComp
    ArrowSplineOvComp clone of ArrowSplineComp derived from OverlayComp.
    ArrowSplineOvView graphical view of ArrowSplineOvComp.
    ArrowSplinePS "PostScript" view of ArrowSplineOvComp.
    ArrowSplineScript serialized view of ArrowSplineOvComp.
    ArrowSplineView
    ArrowSubclassName
    ArrowVar
    ArrowVarView
    Arrowhead
    AssignFunc = (assign) operator.
    AttrDialog
    AttrDialogImpl
    AttrListFunc
    Attribute generic symbol/value pair.
    AttributeDialog dialog for editing component attributes (property list).
    AttributeList list of Attribute objects, i.e. a property list.
    AttributeListEditor
    AttributeTool tool for editing attributes of a component (property list editing).
    AttributeValue multi-type attribute value object.
    AttrvLeakFunc command to return current number of AttributeValue's
    AutoNewFrameCmd command to enable/disable auto-new-frame on import.
    AutoNewFrameFunc interpreter command to toggle the autonewframe flag
    BackCmd move-to-back command
    BackQuoteFunc backquote operator, similar to LISP
    Background
    Banner one line title bar (iv-2.6
    BarPlotFunc command to plot a barchart in comdraw using plotmtv/pstoedit
    BasicDialog base class for simple, common dialog boxes (Unidraw).
    Bevel
    BevelFrame
    BitAndFunc & (bit_and) operator.
    BitNotFunc ~ (bit_not) operator.
    BitOrFunc | (bit_or) operator.
    BitXorFunc ^ (bit_xor) operator.
    Bitmap binary raster data object.
    BitmapRep
    BooleanObserver
    Border infinitely stretchable dividing line (iv-2.6)
    BorderFrame
    Border__2
    BothSetAttrFunc interpreter command for plugging together AttrDialog and SetAttrByExprCmd.
    BoundedValue
    BoundedValueEditor
    BoundedValueObserver
    BoundedValueTable
    BoundedValueTableEditor
    Box used to compose side-by-side (iv-2.6)
    BoxObj box geometric object
    Box__2 box glyph base class
    Browser
    Brush a brush style object
    BrushCmd command to change brush of editor and current selection
    BrushFunc command for setting brush state variable in comdraw.
    BrushRep
    BrushVar current brush state variable
    BrushVarView current-brush state variable view
    Button button object (iv-2_6)
    ButtonState
    Button__2
    CGlue connector glue for specifying connection behavior
    CSolver connector constraint solver
    CSolverState
    CameraMotionCmd base class for pan and zoom commands.
    Canvas 2d area for drawing.
    CanvasDamage
    CanvasRep
    Catalog stores and retrieves named objects.
    CeilFunc ceiling command for ComTerp.
    CenterCmd center command
    CenterFunc command to return center of graphics in comdraw.
    CenterLayout
    ChainViewerCmd command to add this viewer to list of chained viewers.
    ChainViewersCmd command to chain other viewers to this one under panning and/or zooming.
    ChangeIdFunc command to change session (or graphic id) to use local session id
    CharFieldEditor
    CharFunc character conversion command for ComTerp.
    Character
    CheckBooleanEditor
    CheckBox
    ChoiceItem
    Circle31
    ClassSymbolFunc command to return class symbols for values of object type
    ClipPolyAAndBCmd command to intersect two polygons.
    ClipPolyAMinusBCmd command to clip polygon A with polygon B.
    ClipPolyBMinusACmd command to clip polygon B with polygon A.
    ClipPolyCmd command for clipping arbitrary graphics with a polygon.
    ClipPolyTool tool for clipping arbitrary graphics with a polygon.
    ClipRectCmd command for clipping arbitrary graphics with a rectangle.
    ClipRectTool tool for clipping arbitrary graphics with a rectangle.
    Clipboard contains a list of component subjects
    CloseEditorCmd editor close command
    ClosedBSpline closed b-spline graphic
    ClosedSplineComp
    ClosedSplineOvComp clone of ClosedSplineComp derived from OverlayComp.
    ClosedSplineOvView graphic view of ClosedSplineOvComp.
    ClosedSplinePS "PostScript" view of ClosedSplineOvComp.
    ClosedSplineScript serialized view of ClosedSplineOvComp.
    ClosedSplineView
    Closed_BSpline31
    Color an RGB-alpha color object
    ColorCmd command to change color of current selection and editor
    ColorData color data for command undo
    ColorFunc command for setting color state variables in comdraw.
    ColorRep
    ColorRgbFunc comand for setting color state variables by RGB name in comdraw.
    ColorVar current color state variable
    ComEditor editor that integrates ComTerp into the drawing editor framework.
    ComFunc command base class for extending ComTerp.
    ComFuncState state object for holding invocation specific data about a ComFunc.
    ComTE_View
    ComTerp extendable command interpreter.
    ComTerpIOHandler class for splicing comterp into Unidraw event loop
    ComTerpModule base class for C++ wrappers of Fischer-LeBlanc style compiler pipeline.
    ComTerpServ extended ComTerp that works with buffered IO.
    ComTerpState object for holding ComTerp state
    ComTextEditor
    ComValue AttributeValue with extensions for use with ComTerp.
    Command base class for command objects.
    CommandControl command control
    CommandDoer helper object for executing command from glyph-based pull-down menus.
    CommandInfo
    CommandInteractor command "interactor" control
    CommandLeakFunc command to return current number of Command's
    CommandPusher helper object for postponing execution of commands until environment is ready.
    CompLeakFunc command to return current number of OverlayComp's
    CompNameVar component name state variable
    CompNameVarView component-name state variable view
    CompletionEditor string-editor with completion (iv-2_6)
    Component base class for objects that model domain specific elements.
    ComponentView base class for views of objects that model domain-specific elements.
    Composition
    Compositor
    ComterpHandler handler to invoke ComTerp on socket (version with ACE)
    ComterpHandler__2 version without ACE
    ComterpPauseFunc command to pause script execution until C/R
    ComterpStackHeightFunc command to return stack height for debugging
    ComterpStepFunc command to toggle step script execution
    ComterpTraceFunc command for toggling or setting trace mode
    ConcatFunc ,, (concat) operator.
    ConcatNextFunc hidden func used by next command for ,, (concat) operator.
    CondFunc conditional control command for ComTerp
    ConfirmBoxFunc command to popup a confirmation dialog box
    ConfirmDialog
    ConnectCmd connect command
    ConnectManip connection manipulator
    ConnectTool connect tool
    Connector for defining and maintaining connectivity between components.
    ConnectorView
    Control provide an interface to selecting and executing some action (iv-2.6)
    ControlInfo manages persistent information contained in a Control
    ControlState
    ConvexHullCmd command to generate generate and paste a convex hull given a polygon.
    ConvexHullTool tool to draw a polygon and invoke the ConvexHullCmd.
    CoordinateSpace
    CopyCmd copy command
    CopyMoveFrameCmd command to copy contents of current frame to create a new frame.
    CopyMoveGraphFrameCmd command to copy contents of current frame to create a new frame and reconnect graph.
    CopyString
    CosFunc cosine command for ComTerp.
    CreateClosedSplineFunc closed spline drawing command for comdraw.
    CreateEllipseFunc ellipse drawing command for comdraw.
    CreateFrameCmd command to create a frame.
    CreateFrameFunc interpreter command to create new frame.
    CreateGraphicFunc base class for graphic construction func's
    CreateLineFunc line drawing command for comdraw.
    CreateMoveFrameCmd command to create a frame and move to it.
    CreateMultiLineFunc multiline drawing command for comdraw.
    CreateOpenSplineFunc open spline drawing command for comdraw.
    CreatePolygonFunc polygon drawing command for comdraw.
    CreateRasterFunc raster creation command for comdraw.
    CreateRectFunc rectangle drawing command for comdraw.
    CreateTextFunc text drawing command for comdraw.
    Creator component factory class
    CtoiFunc
    Cursor
    CursorRep
    CursorRepBitmap
    CursorRepData
    CursorRepFont
    CursorRepXFont
    CutCmd cut command
    CycleEnumEditor
    Damage damage-repair mechanism
    Data undo information object
    Date
    DebugGlyph
    Deck a Scene for stacking one or more Interactor (iv-2.6)
    Deck__2
    DecrAfterFunc (decrement after)-- operator.
    DecrFunc --(decrement before) operator.
    DegToRadFunc degrees to radianscommand for ComTerp.
    DeleteCmd delete command
    DeleteFrameCmd command to delete a frame.
    DeleteFrameData data object for DeleteFrameCmd.
    DeleteFunc command to delete graphics in comdraw.
    DesensitizeViewCmd command to desensitize a graphic view in this viewer.
    Dialog a simple dialog box input handler (iv-2.6)
    DialogKit factory object for widgets.
    Dialog__2
    Directory
    DirtyCmd
    Dispatcher wait on multiple file descriptors until a condition occurs
    Display X window display object.
    DisplayRep
    DivAssignFunc /= (divide assign) operator .
    DivFunc / (divide) operator.
    DoneAttrListFunc interpreter command for plugging together AttrDialog and SlctByAttrCmd.
    DoneSetAttrFunc interpreter command for plugging together AttrDialog and SetAttrByExprCmd.
    DotFunc . (dot) operator, for compound variables | dotlst=dot(name) -- construct empty dottted pair list.
    DotNameFunc name returns name field of a dotted pair
    DotValFunc value returns value field of a dotted pair
    DoubleFunc double-length floating-point conversion command for ComTerp.
    DownMover
    Drag
    DragEditor
    DragManip drag manipulator
    DragValuator
    DragZone
    DragZoneSink
    DrawCatalog catalog for use with drawserv.
    DrawCreator creator for use with drawserv.
    DrawEditor editor for DrawServ application
    DrawIdrawComp top-level component for a drawserv document.
    DrawIdrawScript serialized view of a DrawIdrawComp.
    DrawIdrawView graphical view of DrawIdrawComp.
    DrawImportCmd specialized FrameImportCmd for importing graphs in frames
    DrawImportPasteCmd specialized ImportPasteCmd for DrawServ
    DrawKit specialized FrameKit for use with drawserv.
    DrawLinkComp
    DrawLinkFunc command to connect to another drawserv
    DrawLinkList
    DrawServ
    DrawServHandler specialized UnidrawComterpHandler for integration into DrawServ
    DrawingToGraphicFunc command to convert from drawing to graphic coordinates
    DrawingToScreenFunc command to convert from drawing to screen coordinates
    DupCmd duplicate command
    EachFunc traverse stream command for ComTerp.
    EdgeComp edge component
    EdgeConnectCmd command to connect an edge to one or two nodes.
    EdgeData command data for storing edge information.
    EdgePS "PostScript" view of EdgeComp.
    EdgeScript serialized view of EdgeComp.
    EdgeUpdateCmd command to update edge display
    EdgeView graphical view of EdgeComp
    Editor base class for top-level windows in an application.
    EditorInfo manages persistent information contained in an editor
    EditorLauncherAction action to construct and launch an OverlayEditor.
    EivTextBuffer
    EivTextEditor
    Ellipse ellipse graphic
    Ellipse31
    EllipseComp ellipse component
    EllipseOvComp clone of EllipseComp derived from OverlayComp.
    EllipseOvView graphical view of EllipseOvComp.
    EllipsePS "PostScript" view of EllipseOvComp.
    EllipseScript serialized view of EllipseOvComp.
    EllipseView
    Enlarger
    EnumObserver
    EqualFunc == (equality) operator.
    EvalFunc eval string command for ComTerp.
    Event user input events.
    EventRep
    ExitFunc exit command for ComTerp.
    ExpFunc exponential command for ComTerp.
    ExportChooser
    ExportChooserImpl
    ExportEnumEditor
    ExportFunc command to export a graphic file
    Extension area where a glyph actually draws after all.
    Extent geometric extent object
    ExternView base class for external representation objects. with traversal subclasses.
    FBoxObj
    FFillPolygonObj
    FLineObj
    FMultiLineObj
    FPointObj
    F_Circle filled circle graphic
    F_ClosedBSpline filled closed b-spline graphic
    F_Ellipse filled ellipse graphic
    F_OpenBSpline filled open b-spline graphic
    F_Polygon filled polygon graphic
    F_Rect filled rectangle graphic
    FalseAttrListFunc interpreter command for plugging together AttrDialog and SlctByAttrCmd.
    FieldEditor field editor.
    FieldEditorAction
    File
    FileBrowser a StringBrowser that displays file names (iv-2.6)
    FileBrowser__2
    FileChooser a StringChooser for choosing files from a directory (iv-2.6)
    FileChooserAction
    FileChooser__2
    FileNameVarView file-name state variable view
    FillPolygonObj filled polygon geometric object
    FilterFunc stream filter command
    FilterNextFunc hidden func used by next command for stream filter command
    FixViewCmd command for fixing size or location of a graphic view.
    FixedLayout
    FixedPanCmd command for panning by fixed amount.
    FixedPin
    FloatFunc floating-point conversion command for ComTerp.
    FloorFunc floor command for ComTerp.
    Font a font object
    FontBoundingBox
    FontByNameFunc command for setting font state variable by font name in comdraw.
    FontCmd command for changing font in current selection and editor
    FontFamily
    FontFamilyRep
    FontFunc command for setting font state variable in comdraw.
    FontRep
    FontVar current font state variable
    FontVarView current-font state variable view
    ForFunc for-loop command for ComTerp.
    Frame surrounds another Interactor (iv-2.6)
    FrameBackCmd BackCmd specialized for FrameUnidraw use.
    FrameBeginCmd
    FrameCatalog catalog for retrieving flipbook documents
    FrameComp single frame component.
    FrameCopyCmd CopyCmd specialized for FrameUnidraw use.
    FrameCreator creator for use with FrameCatalog.
    FrameEditor ComEditor specialized for multi-frame use.
    FrameEndCmd command to move to the last frame.
    FrameFileComp component to indirectly refer to a flipbook document by a pathname.
    FrameFileScript serialized view of FrameFileComp.
    FrameFileView graphical view of FrameFileComp.
    FrameFrontCmd FrontCmd specialized for FrameUnidraw use.
    FrameFunc command to composite component for a frame, defaults to current
    FrameGroupCmd OvGroupCmd specialized for FrameUnidraw use.
    FrameIdrawComp top-level component for flipbook document.
    FrameIdrawPS "PostScript" view of FrameIdrawComp.
    FrameIdrawScript serialized view of FrameIdrawComp.
    FrameIdrawView graphical view of FrameIdrawComp.
    FrameImportCmd specialized OvImportCmd for importing frames
    FrameImportPasteCmd specialized PasteCmd for flipbook
    FrameKit derived OverlayKit for use with FrameEditor.
    FrameListState state variable for current-frame-count.
    FrameNewViewCmd OvNewViewCmd specialized for FrameUnidraw use.
    FrameNumberState state variable for current-frame-number.
    FrameOverlaysComp OverlaysComp specialized for use within a FrameIdrawComp.
    FrameOverlaysScript serialized view of FrameOverlaysComp.
    FrameOverlaysView graphical view of FrameOverlaysComp.
    FrameScript serialized view of FrameComp.
    FrameUngroupCmd UngroupCmd specialized for FrameUnidraw use.
    FrameView graphical view of FrameComp.
    FrameViewer OverlayViewer specialized for use with FrameEditor.
    FramesComp composite frame component.
    FramesScript serialized view of FramesComp.
    FramesView graphical view of FramesComp.
    FrontCmd move-to-front command
    FullGraphic
    GAcknowledgeDialog
    GConfirmDialog
    GFieldEditor
    GFieldEditorAction
    GLContext
    GSData graphic state data for command undo
    GVUpdater GraphicView updater
    GlobalSymbolFunc command to make assign a global variable
    Glue variable spacing between interactors (iv-2.6)
    Glue__2 glue glyph base class
    Glyph InterViews 3.1 lightweight glyphs
    GrAttrListFunc attrlist command, for returning the attribute list of a component.
    GrDotFunc . (dot) operator, for compound variables, and access to ComponentView AttributeList's.
    GrListAtFunc list member command for ComUnidraw
    GrListSizeFunc list size command for Unidraw
    GrLocTool tool to display coordinates relative to a graphic.
    GraphCatalog catalog for read/write of graphdraw documents.
    GraphComp component used to group a set of nodes and edges into a graph.
    GraphCopyCmd specialized CopyCmd for graphdraw.
    GraphCreator creator for use of GraphCatalog.
    GraphCutCmd specialized CutCmd for graphdraw.
    GraphData base class for EdgeData and NodeData.
    GraphDeleteCmd specialized OvDeleteCmd for graphdraw.
    GraphDupCmd specialized DupCmd for graphdraw.
    GraphEditor editor for graphdraw.
    GraphIdrawComp top-level component in a graphdraw document.
    GraphIdrawScript serialized view of GraphIdrawComp.
    GraphIdrawView graphical view of GraphIdrawComp.
    GraphImportCmd specialized OvImportCmd for importing nested sub-graphs.
    GraphKit kit for constructing GraphEditor.
    GraphMoveTool specialized MoveTool for graph manipulation.
    GraphNewViewCmd specialized OvNewViewCmd for graphdraw.
    GraphPasteCmd specialized PasteCmd for graphdraw.
    GraphScript serialized view of GraphComp.
    GraphView graphical view of GraphComp.
    Graphic graphic base-classe
    Graphic31
    GraphicBlock an Interactor that contains a Picture.
    GraphicComp base classes for graphical component subjects.
    GraphicCompTool graphic component tool
    GraphicComps
    GraphicIdFunc command to send message between remote selections
    GraphicIdList
    GraphicIds object to encapsulate a set of graphic ids
    GraphicLeakFunc command to return current number of Graphic's
    GraphicMaster
    GraphicToDrawingFunc command to convert from graphic to drawing coordinates
    GraphicView base classes for graphical component views.
    GraphicViews
    GravityCmd enable/disable gravity command
    GravityVar gravity-enabled state variable
    GravityVarView gravity-enabled state variable view
    GrayRampCmd command for embedding gray-level ramp in a gray-level raster.
    GrayRampFunc ComFunc to embed a gray-level ramp in a gray-level raster.
    GrayRaster gray-level image with arbitary numeric values.
    GreaterThanFunc > (greater than) operator.
    GreaterThanOrEqualFunc >= (greater than or equal) operator.
    Grid drawing editor grid
    GridCmd enable/disable grid command
    GridDialog
    GridSpacingCmd grid-spacing command
    Group
    GroupCmd group command
    GrowGroupFunc command to add graphic to existing group graphic
    GrowingBSpline
    GrowingClosedBSpline
    GrowingMultiLine
    GrowingPolygon
    GrowingVertices
    HBorder
    HBox
    HGlue
    HPanelControl horizontal-panel control
    HRule
    HScrollBar
    HScroller
    HSlotComp
    HSlotView
    Handler
    HandlesFunc command to turn on or off the selection tic marks in comdraw.
    HelpFunc help command for ComTerp.
    HideViewCmd command to hide a graphic view in this viewer.
    HighlightFunc command to highlight a graphic given another graphic's state
    Hit
    Host
    IGridSpacingCmd
    IOHandler read input, write output, or handle an I/O exception or timeout
    IconWindow
    IdrawCatalog
    IdrawComp
    IdrawCreator
    IdrawEditor
    IdrawReader
    IdrawView
    IfThenElseFunc if-then-else command for ComTerp.
    Image
    ImageCmd utility command for storing image processing command string.
    ImportChooser
    ImportChooserImpl
    ImportCmd command for importing graphical objects
    ImportFunc command to import a graphic file
    IncrAfterFunc (increment after)++ operator.
    IncrFunc ++(increment before) operator.
    IndexedGsMixin mixin for graphic-state indexing mechanism used by OverlayIdrawComp, etc..
    IndexedPicMixin mixin for composite-graphic (pic) indexing mechanism used by OverlayIdrawComp, etc..
    IndexedPtsMixin mixin for point-list indexing mechanism used by OverlayIdrawComp, etc..
    InorderView
    InputFile
    InputHandler
    IntFunc integer conversion command for ComTerp.
    Interactor base class for interactive objects (iv-2.6)
    InteractorHandler
    InteractorWindow
    InvertXformFunc ComTerp command to invert an affine transform.
    IsSpaceFunc
    IterateFunc .. (iterate) operator.
    Iterator marks a position in a data structure.
    IueConnCompFunc
    IueExportFunc
    IueFunc
    IueGaussianFunc
    IueGetPixelFunc
    IueHandler
    IueImageComp
    IueImageFunc
    IueNcolsFunc
    IueNrowsFunc
    IuePixTypeFunc
    IueServComp
    IueThresholdFunc
    JoinStrFunc command to join list of characters into a string object
    KeyMap maintains a keycode-to-UControl mapping
    LRComposition
    LRMarker
    Label
    Layout
    LayoutKit factory object for layout glyphs.
    LeafWalker walk the leafs of an OverlaysComp tree
    LeftMover
    LeftShiftFunc << (left-shift) operator.
    LessThanFunc < (less than) operator.
    LessThanOrEqualFunc <= (less than or equal) operator.
    LexScan Lexical scanner for C tokens, with C-style comment skipping.
    Line line graphic
    Line31
    LineComp line component
    LineObj line geometric object
    LineOvComp clone of LineComp derived from OverlayComp.
    LineOvView graphical view of LineOvComp.
    LinePS "PostScript" view of LineOvComp.
    LineScript serialized view of LineOvComp.
    LineView
    LinkComp link component
    LinkSelection distributed Selection class
    LinkView
    ListAtFunc list member command for ComTerp.
    ListFunc create list command for ComTerp.
    ListItr
    ListSizeFunc list size command for ComTerp.
    ListUpdater
    Log10Func logarithmic (base 10) command for ComTerp.
    LogFunc logarithmic (natural) command for ComTerp.
    LogScaleCmd command for logarithmic-scaling of gray-level raster.
    LogScaleFunc ComFunc to log-scale a gray-level raster.
    LongFunc long integer conversion command for ComTerp.
    MFDialogKit
    MFKit
    Macro
    MacroCmd command containing a sequence of other commands to execute
    MagnifVar magnify factor state variable
    MagnifVarView magnify-factor state variable view
    MagnifyTool zoom in to specified region
    ManagedWindow
    ManagedWindowHintInfo
    ManagedWindowRep
    ManipGroup group manipulator
    Manipulator base class for defining direct-manipulation semantics.
    MarginFrame
    MarginLayout
    MatchEditor StringEditor with pattern matching.
    Math
    MaxFunc maximum command for ComTerp.
    MbrFunc command to return minimum-bounding rectangle of graphics in comdraw.
    MeanFunc mean-of-values command for ComTerp.
    Memory
    Menu menu derived from Control (iv-2.6)
    MenuBar
    MenuEnumEditor
    MenuItem
    MenuItem__2
    Menu__2
    Message display a string of text (iv-2.6).
    MeterObserver
    MinFunc minimum command for ComTerp.
    MinusFunc - (unary prefix minus) operator.
    MlineLeakFunc command to return current number of MultiLineObj's
    MobilityCmd mobility command
    MobilityData mobility state data for command undo
    ModAssignFunc %= (mod assign) operator .
    ModFunc modulo command for ComTerp.
    ModifStatusVar modified-status state variable
    ModifStatusVarView modified-status state variable view
    MonoGlyph
    MonoKit
    MonoScene
    MoveCmd move command
    MoveData move data for command undo
    MoveDialog
    MoveFrameCmd command to change current frame.
    MoveFrameFunc interpreter command to move current frame.
    MoveFunc command to move current selection in comdraw
    MoveTool tool for moving graphics
    Mover
    MpyAssignFunc *= (multiply assign) operator .
    MpyFunc * (multiply) operator.
    MultiLine multi-line graphic
    MultiLineComp
    MultiLineObj multi-line geometric object
    MultiLineOvComp clone of MultiLineComp derived from OverlayComp.
    MultiLineOvView graphical view of MultiLineOvComp.
    MultiLinePS "PostScript" view of MultiLineOvComp.
    MultiLineScript serialized view of LineOvComp.
    MultiLineView
    MuteFunc mute command for ComTerp
    NBrushesFunc command to return number of brushes in comdraw menu.
    NColorsFunc command to return number of colors in comdraw menus.
    NColsFunc command to return number of onscreen columns in comdraw.
    NFontsFunc command to return number of fonts in comdraw menu.
    NOPCmd null command
    NPatternsFunc command to return number of patterns in comdraw menu.
    NRowsFunc command to return number of onscreen rows in comdraw.
    NameState
    NameVar name state variable
    NameVarView name state variable view
    NameView
    NaturalLayout
    NegFunc ! (negate) operator.
    NewCompCmd new component command
    NewViewCmd
    NextAttrListFunc interpreter command for plugging together AttrDialog and SlctByAttrCmd.
    NextFunc next command from stream for ComTerp
    NextInSelectionFunc interpreter command for plugging together AttrDialog and SetAttrByExprCmd.
    NilFunc nil command for ComTerp.
    NodeComp node component
    NodeData command data for storing node information.
    NodeDialog dialog box to prompt for text label for node.
    NodeScript serialized view of NodeComp.
    NodeTextCmd command to set text of a node component.
    NodeView graphical view of NodeComp.
    NormSizeCmd normal-size command
    NotEqualFunc != (non-equality) operator.
    NullTerminatedString
    NumFramesFunc interpreter command to return number of frames in viewer
    NumFunc base class for all numeric ComTerp commands.
    OLDialogKit
    OLKit
    ObjectMap
    ObsTextDialog
    ObsTextEditor
    Observable observable mixin.
    ObservableBoolean
    ObservableEnum
    ObservableText
    ObservableTime
    Observer observer mixin.
    OpaqueDragManip manipulator for opaque move.
    OpenBSpline open b-spline graphic
    OpenCmd
    OpenFileChooser
    OpenFileChooserAction
    OpenFileChooserImpl
    Open_BSpline31
    OptableFunc print contents of operator table
    OptionDesc
    OrFunc || (or) operator.
    OrientationCmd landscape/portrait orientation command
    OvAboutCmd command to display 'about' message for drawing editors.
    OvCloseEditorCmd
    OvDeleteCmd derived delete command that can be made irreversable.
    OvDownMover clone of DownMover.
    OvExportCmd command to export selection in idraw "PostScript" or drawtool serialized format.
    OvFileImage file-based image object for large-image handling.
    OvGroupCmd derived group command.
    OvImageMapCmd command to create clickable imagemap from viewer canvas.
    OvImportCmd command for importing arbitrary graphical files.
    OvLeftMover clone of LeftMover.
    OvMemoryImage in-memory image object for large-image handling.
    OvMover clone of Mover.
    OvNewCompCmd derived new command.
    OvNewViewCmd derived new-view command.
    OvOpenCmd derived open command with grid support.
    OvPortableFileImage specialization of OvFileImage for untiled pbmplus image formats.
    OvPreciseBrushCmd precise brush-width (line-width) command.
    OvPreciseMoveCmd glyphified PreciseMoveCmd.
    OvPrecisePageCmd glyphified PrecisePageCmd.
    OvPreciseRotateCmd glyphified PreciseRotateCmd.
    OvPreciseScaleCmd glyphified PreciseScaleCmd.
    OvPrintCmd evolved clone of PrintCmd.
    OvQuitCmd derived quit command.
    OvRestrictedImage base class image object for large-image handling.
    OvRevertCmd derived revert command.
    OvRightMover clone of RightMover.
    OvSaveCompAsCmd derived save-as command.
    OvSaveCompCmd derived save command.
    OvSlctAllCmd derived select-all command.
    OvTiledFileImage specialization of OvFileImage for internally tiled pbmplus image formats.
    OvUpMover clone of UpMover.
    OvViewCompCmd derived open command.
    OvWindowDumpAsCmd command to dump current viewer canvas as .xwd file.
    OverlayCatalog catalog for read/write of "PostScript" and ASCII script documents
    OverlayComp derived GraphicComp
    OverlayCreator factory object for use of OverlayCatalog
    OverlayDamage double-buffered damage repair mechanism.
    OverlayEditor editor derived from IdrawEditor.
    OverlayFileComp component used to import a sub-tree by pathname.
    OverlayFileScript serialized view of OverlayFileComp.
    OverlayFileView graphical view of OverlayFileComp.
    OverlayGraphic for the purpose of sliding in a derived Painter
    OverlayIdrawComp top-level OverlaysComp, the root of a component tree or document.
    OverlayIdrawPS "PostScript" view of OverlayIdrawComp.
    OverlayIdrawScript serialized view of top-level OverlayIdrawComp.
    OverlayIdrawView graphical view of OverlayIdrawComp.
    OverlayKit helper class for constructing an OverlayEditor.
    OverlayPS base class of "PostScript" views for OverlayComp objects.
    OverlayPage drawing page object.
    OverlayPainter specialized Painter for use with OverlayUnidraw.
    OverlayPanner flexible panner/zoomer/slider window.
    OverlayRaster specialized Raster object for use with RasterOvComp.
    OverlayRasterRect derived RasterRect Graphic for use with OverlayRaster and GrayRaster.
    OverlayScript serialized view of OverlayComp.
    OverlaySelectTool derived SelectTool.
    OverlaySelection derived Selection object
    OverlaySlider slider window within an OverlayPanner.
    OverlayUnidraw derived Unidraw object with extra mechanisms.
    OverlayView base class for graphic view of an OverlayComp.
    OverlayViewRef OverlayView used as Resource
    OverlayViewer specialized Viewer.
    OverlaysComp composite component, clone of GraphicComps derived from OverlayComp
    OverlaysPS "PostScript" view of an OverlaysComp.
    OverlaysScript composite version of OverlayScript.
    OverlaysView graphical view of OverlaysComp.
    PGM_Helper helper class for reading PGM images.
    PPM_Helper helper class for reading PPM images.
    PSArrowLine
    PSArrowMultiLine
    PSArrowSpline
    PSBrush "PostScript" brush object
    PSClosedSpline
    PSColor "PostScript" color object
    PSEllipse
    PSFont "PostScript" font object
    PSFont31
    PSIdraw
    PSLine
    PSLink
    PSMultiLine
    PSPad
    PSPattern "PostScript" pattern object
    PSPin
    PSPolygon
    PSRaster
    PSRect
    PSSlot
    PSSpline
    PSStencil
    PSText
    PSVertices
    PadComp pad component
    PadGraphic
    PadView
    Page glyph for arbitrary placements
    PageCmd command to toggle page graphic visibility.
    PageDialog dialog box for precision page sizing.
    PageGraphic
    Painter graphics rendering interface (iv-2.6)
    PainterDpyInfo
    PainterRep
    PaletteBooleanEditor
    PanCmd command for panning viewer.
    PanDialog dialog box for precision panning.
    PanDownLargeFunc command to pan viewer downward a large fixed amount in comdraw.
    PanDownSmallFunc command to pan viewer downward a small fixed amount in comdraw.
    PanFunc command to pan viewer in comdraw.
    PanLeftLargeFunc command to pan viewer to the left a large fixed amount in comdraw.
    PanLeftSmallFunc command to pan viewer to the left a small fixed amount in comdraw.
    PanRightLargeFunc command to pan viewer to the right a large fixed amount in comdraw.
    PanRightSmallFunc command to pan viewer to the right a small fixed amount in comdraw.
    PanUpLargeFunc command to pan viewer upward a large fixed amount in comdraw.
    PanUpSmallFunc command to pan viewer upward a small fixed amount in comdraw.
    PanelControl panel control
    PanelInteractor panel "interactor" control
    Panner an Interactor for two-dimensional scrolling and zooming (iv-2.6)
    ParamList list of ParamStruct objects for de-serialization of a previously serialized object.
    ParamStruct parameter definition structure for ParamList.
    Parser C++ wrapper for ComUtil parser capability.
    PasteCmd paste command
    PasteFunc command to paste a graphic in comdraw.
    PasteModeFunc command for toggling or setting paste mode
    Patch glyph able to redraw itself.
    Path transmission path for state variable propagation
    PathRenderInfo
    Pattern a pattern object
    PatternCmd command to change pattern of current selection and editor.
    PatternFunc command for setting pattern state variable in comdraw.
    PatternRep
    PatternVar current pattern state variable
    PatternVarView current-pattern state variable view
    Perspective indicates portion of total view shown (iv-2.6).
    PiFunc Pi command for ComTerp.
    Picture composite Graphic
    PicturePS general purpose "PostScript" view for any OverlayComp with a composite graphic.
    PinComp pin component
    PinGraphic
    PinView
    PixelClipFunc command to clip raster with polygon
    PixelColsFunc command to return number of columns in a raster
    PixelFlushFunc command to flush pixels poked in a raster
    PixelPeekFunc command to peek pixel values from raster
    PixelPokeFunc command to poke pixel values into raster
    PixelPokeLineFunc command to poke a line of pixel values into raster
    PixelRowsFunc command to return number of rows in a raster
    Placement
    Point point graphic
    PointObj point geometric object
    PointsFunc command to return point list associated with a graphic
    PolyGlyph
    PolyGraphic
    Polygon polygon graphic
    Polygon31
    PolygonComp polygon component
    PolygonOvComp clone of PolygonComp derived from OverlayComp.
    PolygonOvView graphical view of PolygonOvComp.
    PolygonPS "PostScript" view of PolygonOvComp.
    PolygonScript serialized view of PolygonOvComp.
    PolygonView
    Polyline31
    PopupMenu
    PopupWindow
    PortableImageHelper helper class for reading PGM or PPM images.
    PostEvalFunc post-evaluate command for ComTerp.
    PostFixFunc echo postfix output of parser.
    PostScriptView PostScript serialization
    PostScriptViews
    PostorderView
    PowFunc power command for ComTerp.
    PreciseMoveCmd
    PrecisePageCmd command to set page size.
    PrecisePanCmd command for precision panning of the viewer.
    PreciseRotateCmd
    PreciseScaleCmd
    PreciseZoomCmd command for zooming other than by powers of 2.
    PreorderView
    PrintChooser
    PrintChooserImpl
    PrintCmd print command
    PrintDialog
    PrintFunc value printing command for ComTerp.
    Printer
    ProcessingCmd base class for image processing commands.
    PropertyData
    PseudocolorCmd command for pseudo-coloring of gray-level raster.
    PseudocolorFunc ComFunc to pseudo-color a gray-level raster.
    PtrList
    PtrLocState state variable to display pointer location in drawing coordinates.
    PullCmd command to pull up one level in the graphical structure
    PulldownMenu
    PullrightMenu
    PushButton
    PushCmd command to push down one level in the graphical structure
    QuitCmd quit command
    QuitFunc quit command for ComTerp.
    RadToDegFunc radians to degrees command for ComTerp.
    RadioButton
    RadioEnumEditor
    RandFunc random-number command for ComTerp.
    Raster raster data object.
    RasterComp raster component
    RasterFunc ComFunc base class to hold a raster component.
    RasterOvComp
    RasterOvView graphical view of RasterOvComp.
    RasterPS "PostScript" view of RasterOvComp.
    RasterRect raster graphic
    RasterRep
    RasterScript serialized view of RasterOvComp.
    RasterTerp ComTerp specialized for image processing operations.
    RasterView
    ReadOnlyFunc command to make a graphic read-only in comdraw.
    Rect rectangle graphic
    RectComp rectangle component
    RectOvComp clone of RectComp derived from OverlayComp.
    RectOvView graphical view of RectOvComp.
    RectPS "PostScript" view of RectOvComp.
    RectScript serialized view of RectOvComp.
    RectView
    Rectangle31
    RedToFitCmd reduce-to-fit command
    RedoCmd redo command
    Reducer
    Regexp regular expression searching
    RemoteFunc remote execution command for ComTerp.
    RepeatFunc ** (repeat) operator.
    ReplaceCmd replace command
    ReplaceRasterCmd command to replace raster in a component.
    ReqErr Handling errors from window server.
    Requirement
    Requisition
    ReshapeTool reshape tool
    Resource shared reference-counted objects.
    RevertCmd revert command
    RightMover
    RightShiftFunc >> (right-shift) operator.
    RotateCmd rotate command
    RotateDialog
    RotateFunc command to rotate current selection in comdraw
    RotateTool rotate tool
    RotatingLine
    RotatingLineList
    RotatingRect
    RoundFunc ceiling command for ComTerp.
    RpcHdr header for remote procedure calls
    RpcPeer support bi-directional RPC between two services
    RpcReader read RPC requests from a client
    RpcRegistry name space for finding RPC services
    RpcService support RPC between a service and its clients
    RpcWriter write RPC requests to a server
    RubberAxis
    RubberCircle
    RubberClosedSpline
    RubberEllipse
    RubberGroup
    RubberHandles
    RubberLine
    RubberPointList
    RubberRect
    RubberSpline
    RubberSquare
    RubberVertex
    Rubberband rubberbanding graphical objects (iv-2.6)
    Rule
    RunFunc run command for ComTerp.
    SFH_ClosedBSpline stroked-filled closed b-spline graphic with control-point hit detection
    SFH_OpenBSpline stroked-filled open b-spline graphic with control-point hit detection.
    SF_Circle stroked-filled circle graphic
    SF_ClosedBSpline stroked-filled closed b-spline graphic
    SF_Ellipse stroke-filled ellipse graphic
    SF_MultiLine stroked-filled multi-line graphic
    SF_OpenBSpline stroked-filled open b-spline graphic
    SF_Polygon stroked-filled polygon graphic
    SF_Rect stroked-filled rectangle graphic
    SMFKit
    SRandFunc command to seed ComTerp random number generator.
    S_Circle stroked circle graphic
    S_ClosedBSpline stroked closed b-spline graphic
    S_Ellipse stroked ellipse graphic
    S_MultiLine stroked multi-line graphic
    S_OpenBSpline stroked open b-spline graphic
    S_Polygon stroked polygon graphic
    S_Rect stroked rectangle graphic
    SaveAsChooser
    SaveAsChooserImpl
    SaveCompAsCmd save-as component command
    SaveCompCmd save component command
    SaveFileFunc command to save document (to pathname)
    ScaleCmd scale command
    ScaleDialog
    ScaleFunc command to scale current selection in comdraw
    ScaleGrayCmd command for linear-scaling of gray-level raster.
    ScaleGrayFunc ComFunc to linearly scale a gray-level raster.
    ScaleTool scale tool
    ScalingLine
    ScalingLineList
    ScalingRect
    Scanner C++ wrapper for ComUtil scanner capability.
    Scene basic composite object for interaction.
    ScreenToDrawingFunc command to convert from screen to drawing coordinates
    ScribblePointerCmd command to enable/disable continuous mode drawing with pointer (mouse).
    ScribbleVertexManip continuous vertex manipulator
    ScrollBar
    ScrollBox
    Scrollable
    Scroller general scrolling interface (iv-2.6)
    SelectFunc command to select graphics in comdraw.
    SelectTool select tool
    Selection manages a set of selected components.
    SelectionHandler
    SelectionManager
    SelectionManagerRep
    SensitizeViewsCmd command to sensitize a graphic view in all other viewers.
    Sensor describe input events of interest (iv-2.6)
    SeqFunc ; (sequence) operator.
    Session
    SessionIdFunc command to reserve unique session id
    SetAttrByExprCmd command to set attributes on a component by evaluating an expression.
    SetAttrFunc command to set attributes on a graphic
    Shadow
    ShadowFrame
    Shape for defining "infinite" stretchability or shrinkability (iv-2.6)
    ShellFunc shell escape command for ComTerp.
    ShortFunc short integer conversion command for ComTerp.
    ShowFrame
    ShowFramesFunc interpreter command to show a set of frames at once
    ShowOtherFrameCmd command to enable/disable display of previous frame
    SimpleCompositor
    SinFunc sine command for ComTerp.
    SlctAllCmd select-all command
    SlctByAttrCmd command to select components by evaluating an expression.
    Slider
    Slider__2
    SlidingEllipse
    SlidingLine
    SlidingLineList
    SlidingPin
    SlidingPointList
    SlidingRect
    SlotComp slot component
    SlotGraphic
    SlotView
    SocketFunc create socket object
    SocketObj
    SplineComp spline component
    SplineOvComp clone of SplineComp derived from OverlayComp.
    SplineOvView graphic view of SplineOvComp.
    SplinePS "PostScript" view of SplineOvComp.
    SplineScript serialized view of SplineOvComp.
    SplineView
    SplitStrFunc command to split a symbol or string into a list of character objects
    SqrtFunc square-root command for ComTerp.
    StateVar state variable
    StateVarView state variable view
    StdDevFunc standard-deviation-of-values command for ComTerp.
    StdInput
    Stencil
    StencilComp stencil component
    StencilOvComp clone of StencilComp derived from OverlayComp.
    StencilOvView graphical view of StencilOvComp.
    StencilPS "PostScript" view of StencilOvComp.
    StencilScript serialized view of StencilOvComp.
    StencilView
    Stepper
    StrChooser
    StrChooserAction
    StrEditDialog
    StrListValue
    StreamFunc stream command
    StreamNextFunc hidden func used by next command for stream command
    StretchTool stretch tool
    StretchingRect
    String
    StringBrowser for choosing from list of strings (iv-2.6)
    StringChooser dialog box for choosing from list of strings (iv-2.6)
    StringEditor interactive editor for character strings (iv-2.6)
    StrmFunc base class for ComTerp stream commands.
    Style user interface attribute object.
    SubAssignFunc += (subtract assign) operator .
    SubFunc - (subtraction) operator.
    Subject object with one or more views to notify when it changes (iv-2.6)
    SumFunc sum-of-values command for ComTerp.
    Superpose
    SymAddFunc create symbol command for ComTerp.
    SymIdFunc symbol id command for ComTerp.
    SymStrFunc return string version of symbol
    SymValFunc lookup symbol value command for ComTerp.
    SymbolFunc symbol command for ComTerp.
    TBComposition
    TBScrollBox
    TE_Adjustable
    TE_Editor
    TE_View
    TE_ViewKeyInfo
    TE_ViewKeySymInfo
    TF_2Port to-port transfer function
    TF_Direct direct transfer function
    TGlue
    TIFFRaster
    TanFunc tangent command for ComTerp.
    Target
    TeXCompositor
    Telltale
    TelltaleGroup
    TelltaleState
    TerpDialog
    TerpDialogImpl
    Text31
    TextBuffer editable text buffer (iv-2.6)
    TextButton
    TextComp
    TextDisplay basic text display (iv-2.6)
    TextEditAppWindow
    TextEditor basic interactive editor for mulit-line text (iv-2.6)
    TextFileComp TextOvComp constructed by reading text from a file.
    TextFileScript serialized view of a TextOvComp.
    TextFileView graphical view of a TextOvComp.
    TextGraphic
    TextManip text manipulator
    TextObserver
    TextOvComp clone of TextComp derived from OverlayComp.
    TextOvView graphical view of TextOvComp.
    TextPS "PostScript" view of TextOvComp.
    TextRenderInfo
    TextScript serialized view of TextOvComp.
    TextView
    Tile
    TileFileCmd command to internally tile a PGM or PPM image.
    TileFileFunc command to generate an internally tiled PGM/PPM file for drawtool or comdraw.
    TileFirstAligned
    TileReversed
    TileReversedFirstAligned
    Time
    TimeExprFunc timer expression command for ComTerp.
    TimeGlyph
    TitleFrame
    Tool base class for tool objects.
    Tool31
    ToolButton
    ToolControl derived PanelControl.
    ToolSelector helper object for selecting tool button when pressed.
    ToolState
    TopLevelWindow
    TopoEdge
    TopoEdgeList
    TopoElement
    TopoFace
    TopoNode
    TransferFunct transfer function
    TransformCmd transform command
    TransformFitter
    TransformSetter
    Transformer a 3x2 matrix for use in translating 2d coordinates.
    TransformerFunc command to access a graphic's transformer
    TransientWindow
    Tray composes interactors into (possibly) overlapping layouts (iv-2.6)
    TrimGroupFunc command to remove graphic from existing group graphic
    TrueAttrListFunc interpreter command for plugging together AttrDialog and SlctByAttrCmd.
    TupleFunc , (tuple) operator.
    TypeSymbolFunc command to return type symbols for values
    UArray
    UChooser
    UControl
    UControlInteractor
    UHashElem
    UHashTable
    ULabel
    UList
    UMap
    UMapElem
    UPage
    USleepFunc usleep sleep microseconds
    UStencil
    UnchainViewerCmd command to remove this viewer from list of chained viewers.
    UnchainViewersCmd command to unchain other viewers from this one under panning and/or zooming.
    UndoCmd undo command
    UnfixViewCmd command for unfixing size or location of a graphic view.
    UngroupCmd ungroup command
    UngroupData ungroup data for command undo
    UnhideViewsCmd command to unhide a graphic view in all other viewers.
    UnhighlightRasterCmd command to unhighlight a raster.
    Unidraw singleton for coordinating and controlling a Unidraw application.
    UnidrawComterpHandler specialized ComterpHandler for integration into Unidraw event loop.
    UnidrawFunc base class for interpreter commands in comdraw.
    UnidrawImportHandler handler for import by socket into OverlayUnidraw.
    UnidrawPauseFunc command to pause script execution until C/R
    UniqueString
    UpMover
    UpdateFunc command to update Unidraw from comdraw.
    VBorder
    VBox
    VGlue
    VPanelControl vertical-panel control
    VRule
    VScrollBar
    VScroller
    VSlotComp
    VSlotView
    Valuator
    VarFunc variance-of-values command for ComTerp.
    VariableLayout
    VertexManip vertex manipulator
    Vertices
    VerticesComp
    VerticesOvComp clone of VerticesComp derived from OverlayComp.
    VerticesOvView graphical view of VerticesOvComp.
    VerticesPS "PostScript" view of VerticesOvComp.
    VerticesScript serialized view of VerticesOvComp.
    VerticesView
    ViewCompCmd view component command
    ViewLeakFunc command to return current number of OverlayView's
    Viewer displays a graphical component view hierarchy.
    ViewerView
    Viewport Interactor that shows a portion of another Interactor (iv-2.6)
    VoidData void data for command undo
    WhileFunc while-loop command for ComTerp.
    WidgetKit factory object for widgets.
    Window object that can be mapped onto a screen.
    WindowOverlayInfo
    WindowRep
    WindowVisual
    WindowVisualInfo
    World object representing a display (iv-2.6)
    XDrag
    XSlider
    XYMarker
    XYSlider
    XformFunc ComTerp command to apply an affine-transform to a 2d coordinate.
    XposeFunc ComTerp command to transpose a matrix
    YSlider
    ZoomCmd command for viewer zoom/de-zoom.
    ZoomDialog dialog box for precision zooming.
    ZoomFunc command to zoom viewer in comdraw.
    ZoomInFunc command to zoom-in by 2 in comdraw.
    ZoomOutFunc command to zoom-out by 2 in comdraw.
    Zoomer
    _ArrowData
    _XDisplay
    _dmmwalk
    _oper_stack
    _paren_stack
    _xdllink
    arrayval_struct pointer to list of values, plus optional type id.
    com_struct
    iosb Modify ios to store extra state information for binary I/O.
    iostreamb unformatted input/output stream
    istreamb unformatted input stream
    keyval_struct keyword symbol id, plus number of arguments that follow.
    objval_struct void* pointer plus object classid (see macro in OverlayUnidraw/ovcomps.h)
    ostreamb unformatted output stream
    regexp
    rpcbuf streambuf specialized for sending and receiving RPC requests
    rpcstream iostreamb specialized to RPC requests
    streamval_struct void* pointer to ComFunc object plus optional type id
    symval_struct struct for symbol value, symid + global flag for symbol value
    tiff
    token
    Other Documented Items Other non-class items documented by PERCEPS
    back to ivtools doc page ivtools-doc/doc/classes/IndexedGsMixin.html0000644000076500007650000000550311324451725021622 0ustar scottscott00000000000000 Description of IndexedGsMixin

    class IndexedGsMixin (Return to index)

    mixin for graphic-state indexing mechanism used by OverlayIdrawComp, etc..

    Type:
      Instantiable

    Derived Classes

    Include file:

      OverlayUnidraw/indexmixins.h

    Description:

    When a tree of graphical components is saved to disk (translated to ASCII), the graphic states are output first as 'gs' records, to allow for replicated graphic states to appear only once in a file. When reading these documents back in, the istream constructor of OverlayIdrawComp (and other top-level components) uses this mixin to manage a table of graphic states, building it up as each 'gs' record is read, and accessing entries for each ":gs id" field found in subsequent records.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IndexedPicMixin.html0000644000076500007650000000644611324451725021773 0ustar scottscott00000000000000 Description of IndexedPicMixin
    class IndexedPicMixin (Return to index)

    mixin for composite-graphic (pic) indexing mechanism used by OverlayIdrawComp, etc..

    Type:
      Instantiable

    Derived Classes

    Include file:

      OverlayUnidraw/indexmixins.h

    Description:

    When a tree of graphical components is saved to disk (translated to ASCII), it is possible to enable the output of common composite-graphics as 'pic' records, to allow for compression of replicated composite-graphics within a single document. When reading these documents back in, the istream constructor of OverlayIdrawComp (and other top-level components) uses this mixin to manage a table of pics, building it up as each 'pic' record is read, and accessing entries for each ":pics id" field found in subsequent records.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IndexedPtsMixin.html0000644000076500007650000000644611324451725022026 0ustar scottscott00000000000000 Description of IndexedPtsMixin
    class IndexedPtsMixin (Return to index)

    mixin for point-list indexing mechanism used by OverlayIdrawComp, etc..

    Type:
      Instantiable

    Derived Classes

    Include file:

      OverlayUnidraw/indexmixins.h

    Description:

    When a tree of graphical components is saved to disk (translated to ASCII), it is possible to enable the output of point-lists first as 'pts' records, to allow for compression of replicated point lists within a single document. When reading these documents back in, the istream constructor of OverlayIdrawComp (and other top-level components) uses this mixin to manage a table of point lists, building it up as each 'pts' record is read, and accessing entries for each ":pts id" field found in subsequent records.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/InorderView.html0000644000076500007650000000376711324451725021212 0ustar scottscott00000000000000 Description of InorderView
    class InorderView : public ExternView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/externview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/InputFile.html0000644000076500007650000000375011324451725020644 0ustar scottscott00000000000000 Description of InputFile
    class InputFile : public File (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OS/file.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/InputHandler.html0000644000076500007650000002530311324451725021340 0ustar scottscott00000000000000 Description of InputHandler
    class InputHandler : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/input.h

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/Interactor.html0000644000076500007650000004534711324451725021067 0ustar scottscott00000000000000 Description of Interactor
    class Interactor : public Glyph (Return to index)

    base class for interactive objects (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/interactor.h

    Description:

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/InteractorHandler.html0000644000076500007650000000332011324451725022346 0ustar scottscott00000000000000 Description of InteractorHandler
    class InteractorHandler : public Handler (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/ihandler.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/InteractorWindow.html0000644000076500007650000000620711324451725022247 0ustar scottscott00000000000000 Description of InteractorWindow
    class InteractorWindow : public Window (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/iwindow.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IntFunc.html0000644000076500007650000000336211324451725020312 0ustar scottscott00000000000000 Description of IntFunc
    class IntFunc : public ComFunc (Return to index)

    integer conversion command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    i=int(num) -- convert any numeric to an int.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/InvertXformFunc.html0000644000076500007650000000347111324451725022044 0ustar scottscott00000000000000 Description of InvertXformFunc
    class InvertXformFunc : public ComFunc (Return to index)

    ComTerp command to invert an affine transform.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/xformfunc.h

    Description:

    affine=invert(a00,a01,a10,a11,a20,a21) -- invert affine transform.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IOHandler.html0000644000076500007650000000552011324451725020547 0ustar scottscott00000000000000 Description of IOHandler
    class IOHandler (Return to index)

    read input, write output, or handle an I/O exception or timeout

    Type:
      Instantiable

    Derived Classes

    Include file:

      Dispatch/iohandler.h

    Description:

    Derived classes read input on a file number, write output on a file number, handle an exception raised on a file number, or handle a timers expiration.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/iosb.html0000644000076500007650000000560611324451727017705 0ustar scottscott00000000000000 Description of iosb
    class iosb : public virtual ios (Return to index)

    Modify ios to store extra state information for binary I/O.

    Type:
      Instantiable

    Base Classes:
      public virtual ios

    Derived Classes

    Include file:

      Dispatch/iostreamb.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/iostreamb.html0000644000076500007650000000437611324451727020741 0ustar scottscott00000000000000 Description of iostreamb
    class iostreamb : public istreamb, public ostreamb (Return to index)

    unformatted input/output stream

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Dispatch/iostreamb.h

    Description:

    Replace iostream with a stream that inserts and extracts unformatted data where possible for faster I/O throughput and delimits formatted data automatically.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IsSpaceFunc.html0000644000076500007650000000315411324451725021106 0ustar scottscott00000000000000 Description of IsSpaceFunc
    class IsSpaceFunc : public ComFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/charfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/istreamb.html0000644000076500007650000001423411324451727020554 0ustar scottscott00000000000000 Description of istreamb
    class istreamb : public virtual iosb, public istream (Return to index)

    unformatted input stream

    Type:
      Instantiable

    Base Classes:
      public virtual iosb, public istream

    Derived Classes

    Include file:

      Dispatch/iostreamb.h

    Description:

    Modify istream to extract unformatted data where possible for faster I/O throughput and to discard delimiters automatically.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IterateFunc.html0000644000076500007650000000321611324451725021153 0ustar scottscott00000000000000 Description of IterateFunc
    class IterateFunc : public StrmFunc (Return to index)

    .. (iterate) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Iterator.html0000644000076500007650000000455211324451725020537 0ustar scottscott00000000000000 Description of Iterator
    class Iterator (Return to index)

    marks a position in a data structure.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/iterator.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IueConnCompFunc.html0000644000076500007650000000317711324451725021743 0ustar scottscott00000000000000 Description of IueConnCompFunc
    class IueConnCompFunc : public IueFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/roifunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IueExportFunc.html0000644000076500007650000000317011324451725021501 0ustar scottscott00000000000000 Description of IueExportFunc
    class IueExportFunc : public IueFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/exportfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IueFunc.html0000644000076500007650000000303011324451725020272 0ustar scottscott00000000000000 Description of IueFunc
    class IueFunc : public ComFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/iuefunc.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IueGaussianFunc.html0000644000076500007650000000317611324451725022000 0ustar scottscott00000000000000 Description of IueGaussianFunc
    class IueGaussianFunc : public IueFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/ipfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IueGetPixelFunc.html0000644000076500007650000000317711324451725021750 0ustar scottscott00000000000000 Description of IueGetPixelFunc
    class IueGetPixelFunc : public IueFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/iuefunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IueHandler.html0000644000076500007650000000231711324451725020763 0ustar scottscott00000000000000 Description of IueHandler
    class IueHandler : public ComterpHandler (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/iuehandler.h

    Description:

    = Initialization and termination methods.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IueImageComp.html0000644000076500007650000000770411324451725021254 0ustar scottscott00000000000000 Description of IueImageComp
    class IueImageComp : public IueServComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/iuecomps.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IueImageFunc.html0000644000076500007650000000316011324451725021241 0ustar scottscott00000000000000 Description of IueImageFunc
    class IueImageFunc : public IueFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/iuefunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IueNcolsFunc.html0000644000076500007650000000316011324451725021275 0ustar scottscott00000000000000 Description of IueNcolsFunc
    class IueNcolsFunc : public IueFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/iuefunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IueNrowsFunc.html0000644000076500007650000000316011324451725021327 0ustar scottscott00000000000000 Description of IueNrowsFunc
    class IueNrowsFunc : public IueFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/iuefunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IuePixTypeFunc.html0000644000076500007650000000317211324451725021624 0ustar scottscott00000000000000 Description of IuePixTypeFunc
    class IuePixTypeFunc : public IueFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/iuefunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/IueServComp.html0000644000076500007650000000471111324451725021144 0ustar scottscott00000000000000 Description of IueServComp
    class IueServComp : public OverlayComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/iuecomps.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/IueThresholdFunc.html0000644000076500007650000000320311324451725022151 0ustar scottscott00000000000000 Description of IueThresholdFunc
    class IueThresholdFunc : public IueFunc (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IueServ/ipfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/JoinStrFunc.html0000644000076500007650000000340711324451725021150 0ustar scottscott00000000000000 Description of JoinStrFunc
    class JoinStrFunc : public ComFunc (Return to index)

    command to join list of characters into a string object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/symbolfunc.h

    Description:

    str=join(clist) -- join list of characters into string

    Public:



    (more documentation)

    ivtools-doc/doc/classes/KeyMap.html0000644000076500007650000001013711324451725020130 0ustar scottscott00000000000000 Description of KeyMap
    class KeyMap (Return to index)

    maintains a keycode-to-UControl mapping

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/keymap.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/keyval_struct.html0000644000076500007650000000240411324451727021641 0ustar scottscott00000000000000 Description of keyval_struct
    struct keyval_struct (Return to index)

    keyword symbol id, plus number of arguments that follow.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/attrvalue.h

    Description:

    used in attr_value.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Label.html0000644000076500007650000000726711324451725017773 0ustar scottscott00000000000000 Description of Label
    class Label : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/label.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Layout.html0000644000076500007650000000421611324451725020220 0ustar scottscott00000000000000 Description of Layout
    class Layout (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/layout.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LayoutKit.html0000644000076500007650000012245211324451725020673 0ustar scottscott00000000000000 Description of LayoutKit
    class LayoutKit (Return to index)

    factory object for layout glyphs.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/layout.h

    Description:

    in reference manual

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LeafWalker.html0000644000076500007650000000426011324451725020757 0ustar scottscott00000000000000 Description of LeafWalker
    class LeafWalker (Return to index)

    walk the leafs of an OverlaysComp tree

    Type:
      Instantiable

    Derived Classes

    Include file:

      OverlayUnidraw/leafwalker.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LeakChecker.html0000644000076500007650000000444407374262636021122 0ustar scottscott00000000000000 Description of LeakChecker
    class LeakChecker (Return to index)

    utility for counting undestroyed instances of a class.

    Type:
      Instantiable

    Derived Classes

    Include file:

      OverlayUnidraw/leakchecker.h

    Description:

    To use create a static instance initialized with the class name, i.e. 'static LeakChecker checker("OverlayRaster")', then add a 'checker.create()' call to each constructor and a 'checker.destroy()' call to each destructor. When the program is terminated the static instance of the leak checker will be destructed, and a count of un-destructed (alive) instances will be printed to stderr.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LeftMover.html0000644000076500007650000000346211324451725020650 0ustar scottscott00000000000000 Description of LeftMover
    class LeftMover : public Mover (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/adjuster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LeftShiftFunc.html0000644000076500007650000000322611324451725021447 0ustar scottscott00000000000000 Description of LeftShiftFunc
    class LeftShiftFunc : public NumFunc (Return to index)

    << (left-shift) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/bitfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LessThanFunc.html0000644000076500007650000000352611324451725021303 0ustar scottscott00000000000000 Description of LessThanFunc
    class LessThanFunc : public NumFunc (Return to index)

    < (less than) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/boolfunc.h

    Description:

    also useful for partial string comparison with :n keyword, i.e. lt("string2" "string1" :n 6) returns false. also useful for symbol comparison with :sym keyword.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LessThanOrEqualFunc.html0000644000076500007650000000352111324451725022567 0ustar scottscott00000000000000 Description of LessThanOrEqualFunc
    class LessThanOrEqualFunc : public NumFunc (Return to index)

    <= (less than or equal) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/boolfunc.h

    Description:

    also useful for partial string comparison with :n keyword. also useful for symbol comparison with :sym keyword.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LexScan.html0000644000076500007650000001117411324451725020301 0ustar scottscott00000000000000 Description of LexScan
    class LexScan : public ComTerpModule (Return to index)

    Lexical scanner for C tokens, with C-style comment skipping.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Attribute/lexscan.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Line.html0000644000076500007650000001244511324451725017635 0ustar scottscott00000000000000 Description of Line
    class Line : public Graphic (Return to index)

    line graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/lines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Line31.html0000644000076500007650000000406111324451725017774 0ustar scottscott00000000000000 Description of Line31
    class Line31 : public Graphic31 (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LineComp.html0000644000076500007650000000577211324451725020461 0ustar scottscott00000000000000 Description of LineComp
    class LineComp : public GraphicComp (Return to index)

    line component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/line.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LineObj.html0000644000076500007650000000501411324451725020262 0ustar scottscott00000000000000 Description of LineObj
    class LineObj (Return to index)

    line geometric object

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Graphic/geomobjs.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LineOvComp.html0000644000076500007650000001104611324451725020755 0ustar scottscott00000000000000 Description of LineOvComp
    class LineOvComp : public OverlayComp (Return to index)

    clone of LineComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LineOvView.html0000644000076500007650000001107411324451725020772 0ustar scottscott00000000000000 Description of LineOvView
    class LineOvView : public OverlayView (Return to index)

    graphical view of LineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LinePS.html0000644000076500007650000000402511324451725020073 0ustar scottscott00000000000000 Description of LinePS
    class LinePS : public OverlayPS (Return to index)

    "PostScript" view of LineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovline.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LineScript.html0000644000076500007650000000476611324451725021031 0ustar scottscott00000000000000 Description of LineScript
    class LineScript : public OverlayScript (Return to index)

    serialized view of LineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovline.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LineView.html0000644000076500007650000001030111324451725020455 0ustar scottscott00000000000000 Description of LineView
    class LineView : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/line.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LinkComp.html0000644000076500007650000001533511324451725020463 0ustar scottscott00000000000000 Description of LinkComp
    class LinkComp : public GraphicComp (Return to index)

    link component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/link.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LinkSelection.html0000644000076500007650000001140111324451725021500 0ustar scottscott00000000000000 Description of LinkSelection
    class LinkSelection : public OverlaySelection (Return to index)

    distributed Selection class

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/linkselection.h

    Description:

    specialized Selection class with support for coordinating the selection of graphics between two remote drawing editors that are linked together.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LinkView.html0000644000076500007650000001755211324451725020502 0ustar scottscott00000000000000 Description of LinkView
    class LinkView : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/link.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ListAtFunc.html0000644000076500007650000000343211324451725020756 0ustar scottscott00000000000000 Description of ListAtFunc
    class ListAtFunc : public ComFunc (Return to index)

    list member command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/listfunc.h

    Description:

    val=at(list|attrlist n :set val) -- return (or set) the nth item in a list.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ListFunc.html0000644000076500007650000000400511324451725020466 0ustar scottscott00000000000000 Description of ListFunc
    class ListFunc : public ComFunc (Return to index)

    create list command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/listfunc.h

    Description:

    lst=list([olst|strm|val] :strmlst) -- create list, copy list, or convert stream

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ListItr.html0000644000076500007650000000113511324451725020332 0ustar scottscott00000000000000 Description of ListItr
    class ListItr (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      OS/list.h

    (more documentation)

    ivtools-doc/doc/classes/ListSizeFunc.html0000644000076500007650000000341011324451725021320 0ustar scottscott00000000000000 Description of ListSizeFunc
    class ListSizeFunc : public ComFunc (Return to index)

    list size command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/listfunc.h

    Description:

    num=size(list|attrlist) -- return size of a list.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ListUpdater.html0000644000076500007650000000115111324451725021176 0ustar scottscott00000000000000 Description of ListUpdater
    class ListUpdater (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      OS/list.h

    (more documentation)

    ivtools-doc/doc/classes/Log10Func.html0000644000076500007650000000340711324451725020442 0ustar scottscott00000000000000 Description of Log10Func
    class Log10Func : public ComFunc (Return to index)

    logarithmic (base 10) command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=log10(x) -- returns the base-10 logarithm of x.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LogFunc.html0000644000076500007650000000337311324451725020303 0ustar scottscott00000000000000 Description of LogFunc
    class LogFunc : public ComFunc (Return to index)

    logarithmic (natural) command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=log(x) -- returns the natural logarithm of x.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LogScaleCmd.html0000644000076500007650000001026011324451725021054 0ustar scottscott00000000000000 Description of LogScaleCmd
    class LogScaleCmd : public ProcessingCmd (Return to index)

    command for logarithmic-scaling of gray-level raster.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LogScaleFunc.html0000644000076500007650000000500211324451725021242 0ustar scottscott00000000000000 Description of LogScaleFunc
    class LogScaleFunc : public RasterFunc (Return to index)

    ComFunc to log-scale a gray-level raster.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LongFunc.html0000644000076500007650000000337511324451725020463 0ustar scottscott00000000000000 Description of LongFunc
    class LongFunc : public ComFunc (Return to index)

    long integer conversion command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    l=long(num) -- convert any numeric to a long.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/LRComposition.html0000644000076500007650000000413311324451725021502 0ustar scottscott00000000000000 Description of LRComposition
    class LRComposition : public Composition (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/composition.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/LRMarker.html0000644000076500007650000000674411324451725020432 0ustar scottscott00000000000000 Description of LRMarker
    class LRMarker : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/lrmarker.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Macro.html0000644000076500007650000000655611324451725020015 0ustar scottscott00000000000000 Description of Macro
    class Macro : public Action (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/action.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MacroCmd.html0000644000076500007650000002253411324451725020433 0ustar scottscott00000000000000 Description of MacroCmd
    class MacroCmd : public Command (Return to index)

    command containing a sequence of other commands to execute

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/macro.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MagnifVar.html0000644000076500007650000000703411324451725020616 0ustar scottscott00000000000000 Description of MagnifVar
    class MagnifVar : public StateVar (Return to index)

    magnify factor state variable

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/statevars.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MagnifVarView.html0000644000076500007650000000412611324451725021450 0ustar scottscott00000000000000 Description of MagnifVarView
    class MagnifVarView : public StateVarView (Return to index)

    magnify-factor state variable view

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/stateviews.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MagnifyTool.html0000644000076500007650000000546011324451725021175 0ustar scottscott00000000000000 Description of MagnifyTool
    class MagnifyTool : public Tool (Return to index)

    zoom in to specified region

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Tools/magnify.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ManagedWindow.html0000644000076500007650000001224111324451725021464 0ustar scottscott00000000000000 Description of ManagedWindow
    class ManagedWindow : public Window (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/window.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ManagedWindowHintInfo.html0000644000076500007650000000121611324451725023123 0ustar scottscott00000000000000 Description of ManagedWindowHintInfo
    class ManagedWindowHintInfo (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xwindow.h

    (more documentation)

    ivtools-doc/doc/classes/ManagedWindowRep.html0000644000076500007650000001553611324451725022145 0ustar scottscott00000000000000 Description of ManagedWindowRep
    class ManagedWindowRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xwindow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ManipGroup.html0000644000076500007650000002220011324451725021015 0ustar scottscott00000000000000 Description of ManipGroup
    class ManipGroup : public Manipulator (Return to index)

    group manipulator

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/manips.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Manipulator.html0000644000076500007650000000636011324451725021240 0ustar scottscott00000000000000 Description of Manipulator
    class Manipulator (Return to index)

    base class for defining direct-manipulation semantics.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/manip.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MarginFrame.html0000644000076500007650000001332211324451725021131 0ustar scottscott00000000000000 Description of MarginFrame
    class MarginFrame : public Frame (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/frame.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MarginLayout.html0000644000076500007650000000725311324451725021362 0ustar scottscott00000000000000 Description of MarginLayout
    class MarginLayout : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/place.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MatchEditor.html0000644000076500007650000000626111324451725021150 0ustar scottscott00000000000000 Description of MatchEditor
    class MatchEditor : public StringEditor (Return to index)

    StringEditor with pattern matching.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/matcheditor.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Math.html0000644000076500007650000001126311324451725017634 0ustar scottscott00000000000000 Description of Math
    class Math (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      OS/math.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MaxFunc.html0000644000076500007650000000334311324451725020304 0ustar scottscott00000000000000 Description of MaxFunc
    class MaxFunc : public NumFunc (Return to index)

    maximum command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    n=max(a b) -- return maximum of a and b.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MbrFunc.html0000644000076500007650000000356411324451725020304 0ustar scottscott00000000000000 Description of MbrFunc
    class MbrFunc : public UnidrawFunc (Return to index)

    command to return minimum-bounding rectangle of graphics in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grstatfunc.h

    Description:

    rectlist=mbr(compview :lbrt :lrbt :scrn) -- minimum-bounding rectangle of compview (dflt :lbrt)

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MeanFunc.html0000644000076500007650000000303011324451725020430 0ustar scottscott00000000000000 Description of MeanFunc
    class MeanFunc : public SumFunc (Return to index)

    mean-of-values command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/statfunc.h

    Description:

    val=mean(val1[,val2[,...,valn]]) -- return mean of values.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Memory.html0000644000076500007650000000316111324451725020211 0ustar scottscott00000000000000 Description of Memory
    class Memory (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      OS/memory.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Menu.html0000644000076500007650000001442611324451725017653 0ustar scottscott00000000000000 Description of Menu
    class Menu : public Control (Return to index)

    menu derived from Control (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/menu.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Menu__2.html0000644000076500007650000001301011324451725020217 0ustar scottscott00000000000000 Description of Menu__2
    class Menu__2 : public InputHandler (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/menu.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MenuBar.html0000644000076500007650000000420611324451725020273 0ustar scottscott00000000000000 Description of MenuBar
    class MenuBar : public HBox (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/menu.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MenuEnumEditor.html0000644000076500007650000000673011324451725021646 0ustar scottscott00000000000000 Description of MenuEnumEditor
    class MenuEnumEditor : public Patch (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/enumform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MenuItem.html0000644000076500007650000000552311324451725020470 0ustar scottscott00000000000000 Description of MenuItem
    class MenuItem : public Control (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/menu.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MenuItem__2.html0000644000076500007650000001177211324451725021053 0ustar scottscott00000000000000 Description of MenuItem__2
    class MenuItem__2 : public Resource, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/menu.h

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/Message.html0000644000076500007650000000671511324451725020335 0ustar scottscott00000000000000 Description of Message
    class Message : public Interactor (Return to index)

    display a string of text (iv-2.6).

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/message.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MeterObserver.html0000644000076500007650000000526511324451725021534 0ustar scottscott00000000000000 Description of MeterObserver
    class MeterObserver : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/bdfltform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MFDialogKit.html0000644000076500007650000000477011324451725021042 0ustar scottscott00000000000000 Description of MFDialogKit
    class MFDialogKit : public DialogKit (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/mf_dialogs.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MFKit.html0000644000076500007650000002442611324451725017722 0ustar scottscott00000000000000 Description of MFKit
    class MFKit : public WidgetKit (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/mf_kit.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MinFunc.html0000644000076500007650000000334311324451725020302 0ustar scottscott00000000000000 Description of MinFunc
    class MinFunc : public NumFunc (Return to index)

    minimum command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    n=min(a b) -- return minimum of a and b.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MinusFunc.html0000644000076500007650000000321111324451725020644 0ustar scottscott00000000000000 Description of MinusFunc
    class MinusFunc : public NumFunc (Return to index)

    - (unary prefix minus) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MlineLeakFunc.html0000644000076500007650000000350611324451725021421 0ustar scottscott00000000000000 Description of MlineLeakFunc
    class MlineLeakFunc : public ComFunc (Return to index)

    command to return current number of MultiLineObj's

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    attrvleak() -- current number of MultiLineObj's

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MobilityCmd.html0000644000076500007650000000655711324451725021171 0ustar scottscott00000000000000 Description of MobilityCmd
    class MobilityCmd : public Command (Return to index)

    mobility command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MobilityData.html0000644000076500007650000000373111324451725021326 0ustar scottscott00000000000000 Description of MobilityData
    class MobilityData : public Data (Return to index)

    mobility state data for command undo

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/datas.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ModAssignFunc.html0000644000076500007650000000324611324451725021445 0ustar scottscott00000000000000 Description of ModAssignFunc
    class ModAssignFunc : public AssignFunc (Return to index)

    %= (mod assign) operator .

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/assignfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ModFunc.html0000644000076500007650000000322611324451725020276 0ustar scottscott00000000000000 Description of ModFunc
    class ModFunc : public NumFunc (Return to index)

    modulo command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ModifStatusVar.html0000644000076500007650000001226511324451725021661 0ustar scottscott00000000000000 Description of ModifStatusVar
    class ModifStatusVar : public StateVar (Return to index)

    modified-status state variable

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/statevars.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ModifStatusVarView.html0000644000076500007650000000517311324451725022514 0ustar scottscott00000000000000 Description of ModifStatusVarView
    class ModifStatusVarView : public StateVarView (Return to index)

    modified-status state variable view

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/stateviews.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MonoGlyph.html0000644000076500007650000001544311324451725020663 0ustar scottscott00000000000000 Description of MonoGlyph
    class MonoGlyph : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/monoglyph.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MonoKit.html0000644000076500007650000002565411324451725020334 0ustar scottscott00000000000000 Description of MonoKit
    class MonoKit : public WidgetKit (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/mono_kit.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MonoScene.html0000644000076500007650000000777311324451725020644 0ustar scottscott00000000000000 Description of MonoScene
    class MonoScene : public Scene (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/scene.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MoveCmd.html0000644000076500007650000000665511324451725020306 0ustar scottscott00000000000000 Description of MoveCmd
    class MoveCmd : public Command (Return to index)

    move command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/transforms.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MoveData.html0000644000076500007650000000265511324451725020450 0ustar scottscott00000000000000 Description of MoveData
    class MoveData : public Data (Return to index)

    move data for command undo

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/datas.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MoveDialog.html0000644000076500007650000000573111324451725020774 0ustar scottscott00000000000000 Description of MoveDialog
    class MoveDialog : public BasicDialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/iddialogs.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MoveFrameCmd.html0000644000076500007650000002454411324451725021256 0ustar scottscott00000000000000 Description of MoveFrameCmd
    class MoveFrameCmd : public Command (Return to index)

    command to change current frame.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/MoveFrameFunc.html0000644000076500007650000000352611324451725021443 0ustar scottscott00000000000000 Description of MoveFrameFunc
    class MoveFrameFunc : public UnidrawFunc (Return to index)

    interpreter command to move current frame.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framefunc.h

    Description:

    moveframe([num] :abs) -- move frame by num or to num if :abs

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MoveFunc.html0000644000076500007650000000344311324451725020466 0ustar scottscott00000000000000 Description of MoveFunc
    class MoveFunc : public UnidrawFunc (Return to index)

    command to move current selection in comdraw

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    move(dx dy) -- move current selection

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Mover.html0000644000076500007650000000454511324451725020040 0ustar scottscott00000000000000 Description of Mover
    class Mover : public Adjuster (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/adjuster.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MoveTool.html0000644000076500007650000000543011324451725020506 0ustar scottscott00000000000000 Description of MoveTool
    class MoveTool : public Tool (Return to index)

    tool for moving graphics

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Tools/move.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MpyAssignFunc.html0000644000076500007650000000325311324451725021471 0ustar scottscott00000000000000 Description of MpyAssignFunc
    class MpyAssignFunc : public AssignFunc (Return to index)

    *= (multiply assign) operator .

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/assignfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MpyFunc.html0000644000076500007650000000420111324451725020316 0ustar scottscott00000000000000 Description of MpyFunc
    class MpyFunc : public NumFunc (Return to index)

    * (multiply) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    multiplies numerics and matrices

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MultiLine.html0000644000076500007650000000534711324451725020653 0ustar scottscott00000000000000 Description of MultiLine
    class MultiLine : public Vertices (Return to index)

    multi-line graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/lines.h

    Description:

    man page

    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MultiLineComp.html0000644000076500007650000000531111324451725021461 0ustar scottscott00000000000000 Description of MultiLineComp
    class MultiLineComp : public VerticesComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/line.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/MultiLineObj.html0000644000076500007650000002245311324451725021303 0ustar scottscott00000000000000 Description of MultiLineObj
    class MultiLineObj : public Resource (Return to index)

    multi-line geometric object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/geomobjs.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MultiLineOvComp.html0000644000076500007650000001003711324451725021767 0ustar scottscott00000000000000 Description of MultiLineOvComp
    class MultiLineOvComp : public VerticesOvComp (Return to index)

    clone of MultiLineComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MultiLineOvView.html0000644000076500007650000000663011324451725022007 0ustar scottscott00000000000000 Description of MultiLineOvView
    class MultiLineOvView : public VerticesOvView (Return to index)

    graphical view of MultiLineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MultiLinePS.html0000644000076500007650000000420111324451725021102 0ustar scottscott00000000000000 Description of MultiLinePS
    class MultiLinePS : public VerticesPS (Return to index)

    "PostScript" view of MultiLineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MultiLineScript.html0000644000076500007650000000571611324451725022040 0ustar scottscott00000000000000 Description of MultiLineScript
    class MultiLineScript : public VerticesScript (Return to index)

    serialized view of LineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MultiLineView.html0000644000076500007650000000617611324451725021507 0ustar scottscott00000000000000 Description of MultiLineView
    class MultiLineView : public VerticesView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/line.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/MuteFunc.html0000644000076500007650000000334411324451725020472 0ustar scottscott00000000000000 Description of MuteFunc
    class MuteFunc : public ComFunc (Return to index)

    mute command for ComTerp

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    mute([flag]) -- set or toggle mute flag

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NameState.html0000644000076500007650000000421011324451725020616 0ustar scottscott00000000000000 Description of NameState
    class NameState : public Observable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/namestate.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/NameVar.html0000644000076500007650000000640011324451725020271 0ustar scottscott00000000000000 Description of NameVar
    class NameVar : public StateVar (Return to index)

    name state variable

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/statevars.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NameVarView.html0000644000076500007650000000364311324451725021132 0ustar scottscott00000000000000 Description of NameVarView
    class NameVarView : public StateVarView (Return to index)

    name state variable view

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/stateviews.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/NameView.html0000644000076500007650000000701011324451725020451 0ustar scottscott00000000000000 Description of NameView
    class NameView : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/namestate.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/NaturalLayout.html0000644000076500007650000000457011324451725021552 0ustar scottscott00000000000000 Description of NaturalLayout
    class NaturalLayout : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/place.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NBrushesFunc.html0000644000076500007650000000350011324451725021303 0ustar scottscott00000000000000 Description of NBrushesFunc
    class NBrushesFunc : public UnidrawFunc (Return to index)

    command to return number of brushes in comdraw menu.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/nfunc.h

    Description:

    nbrushes() -- return size of brush menu

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NColorsFunc.html0000644000076500007650000000347411324451725021143 0ustar scottscott00000000000000 Description of NColorsFunc
    class NColorsFunc : public UnidrawFunc (Return to index)

    command to return number of colors in comdraw menus.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/nfunc.h

    Description:

    ncolors() -- return size of color menus.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NColsFunc.html0000644000076500007650000000350111324451725020571 0ustar scottscott00000000000000 Description of NColsFunc
    class NColsFunc : public UnidrawFunc (Return to index)

    command to return number of onscreen columns in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/nfunc.h

    Description:

    ncols() -- onscreen horizontal extent in pixels or

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NegFunc.html0000644000076500007650000000316411324451725020271 0ustar scottscott00000000000000 Description of NegFunc
    class NegFunc : public NumFunc (Return to index)

    ! (negate) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/boolfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NewCompCmd.html0000644000076500007650000001034011324451725020732 0ustar scottscott00000000000000 Description of NewCompCmd
    class NewCompCmd : public Command (Return to index)

    new component command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/catcmds.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/NewViewCmd.html0000644000076500007650000000516011324451725020752 0ustar scottscott00000000000000 Description of NewViewCmd
    class NewViewCmd : public Command (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NextAttrListFunc.html0000644000076500007650000000373211324451725022166 0ustar scottscott00000000000000 Description of NextAttrListFunc
    class NextAttrListFunc : public AttrListFunc (Return to index)

    interpreter command for plugging together AttrDialog and SlctByAttrCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/slctbyattr.h

    Description:

    interpreter command used to iterate over all the components in an editor. selection.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NextFunc.html0000644000076500007650000000544611324451725020503 0ustar scottscott00000000000000 Description of NextFunc
    class NextFunc : public StrmFunc (Return to index)

    next command from stream for ComTerp

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/NextInSelectionFunc.html0000644000076500007650000000364011324451725022632 0ustar scottscott00000000000000 Description of NextInSelectionFunc
    class NextInSelectionFunc : public AttrListFunc (Return to index)

    interpreter command for plugging together AttrDialog and SetAttrByExprCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/setattrbyexpr.h

    Description:

    interpreter command used to iterate over all the components in the current selection.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NFontsFunc.html0000644000076500007650000000346111324451725020767 0ustar scottscott00000000000000 Description of NFontsFunc
    class NFontsFunc : public UnidrawFunc (Return to index)

    command to return number of fonts in comdraw menu.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/nfunc.h

    Description:

    nfonts() -- return size of font menu

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NilFunc.html0000644000076500007650000000373311324451725020304 0ustar scottscott00000000000000 Description of NilFunc
    class NilFunc : public ComFunc (Return to index)

    nil command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    nil([...]) -- accept any arguments and return nil.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NodeComp.html0000644000076500007650000004702211324451725020451 0ustar scottscott00000000000000 Description of NodeComp
    class NodeComp : public OverlayComp (Return to index)

    node component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/nodecomp.h

    Description:

    component for a node in an edge-node directed graph. Default appearance is a single ellipse with centered text for regular nodes, a double ellipse with centered text for nodes with nested graphs inside them. Uses underlying TopoNode to represent topology.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/NodeData.html0000644000076500007650000000427411324451725020426 0ustar scottscott00000000000000 Description of NodeData
    class NodeData : public GraphData (Return to index)

    command data for storing node information.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphdata.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NodeDialog.html0000644000076500007650000000366511324451725020757 0ustar scottscott00000000000000 Description of NodeDialog
    class NodeDialog : public Dialog (Return to index)

    dialog box to prompt for text label for node.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphdialog.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NodeScript.html0000644000076500007650000001227311324451725021017 0ustar scottscott00000000000000 Description of NodeScript
    class NodeScript : public OverlayScript (Return to index)

    serialized view of NodeComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/nodecomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NodeTextCmd.html0000644000076500007650000001100311324451725021111 0ustar scottscott00000000000000 Description of NodeTextCmd
    class NodeTextCmd : public Command (Return to index)

    command to set text of a node component.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/graphcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/NodeView.html0000644000076500007650000001650311324451725020465 0ustar scottscott00000000000000 Description of NodeView
    class NodeView : public OverlayView (Return to index)

    graphical view of NodeComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      GraphUnidraw/nodecomp.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/NOPCmd.html0000644000076500007650000000527311324451725020027 0ustar scottscott00000000000000 Description of NOPCmd
    class NOPCmd : public Command (Return to index)

    null command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/nop.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NormSizeCmd.html0000644000076500007650000000535411324451725021141 0ustar scottscott00000000000000 Description of NormSizeCmd
    class NormSizeCmd : public Command (Return to index)

    normal-size command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/viewcmds.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NotEqualFunc.html0000644000076500007650000000352611324451725021312 0ustar scottscott00000000000000 Description of NotEqualFunc
    class NotEqualFunc : public NumFunc (Return to index)

    != (non-equality) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/boolfunc.h

    Description:

    also useful for partial string comparison with :n keyword. neq("string1" "string2" :n 6) returns false. also useful for symbol comparison with :sym keyword.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NPatternsFunc.html0000644000076500007650000000351111324451725021472 0ustar scottscott00000000000000 Description of NPatternsFunc
    class NPatternsFunc : public UnidrawFunc (Return to index)

    command to return number of patterns in comdraw menu.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/nfunc.h

    Description:

    npatterns() -- return size of pattern menu

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NRowsFunc.html0000644000076500007650000000347011324451725020630 0ustar scottscott00000000000000 Description of NRowsFunc
    class NRowsFunc : public UnidrawFunc (Return to index)

    command to return number of onscreen rows in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/nfunc.h

    Description:

    nrows() -- onscreen vertical extent in pixels

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NullTerminatedString.html0000644000076500007650000000522511324451725023062 0ustar scottscott00000000000000 Description of NullTerminatedString
    class NullTerminatedString : public String (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OS/string.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NumFramesFunc.html0000644000076500007650000000353011324451725021452 0ustar scottscott00000000000000 Description of NumFramesFunc
    class NumFramesFunc : public UnidrawFunc (Return to index)

    interpreter command to return number of frames in viewer

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framefunc.h

    Description:

    numframes() -- return number of frames in viewer

    Public:



    (more documentation)

    ivtools-doc/doc/classes/NumFunc.html0000644000076500007650000000314111324451725020312 0ustar scottscott00000000000000 Description of NumFunc
    class NumFunc : public ComFunc (Return to index)

    base class for all numeric ComTerp commands.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ObjectMap.html0000644000076500007650000001237311324451725020612 0ustar scottscott00000000000000 Description of ObjectMap
    class ObjectMap : public UMap (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/catalog.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/objval_struct.html0000644000076500007650000000244711324451727021632 0ustar scottscott00000000000000 Description of objval_struct
    struct objval_struct (Return to index)

    void* pointer plus object classid (see macro in OverlayUnidraw/ovcomps.h)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/attrvalue.h

    Description:

    used in attr_value.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Observable.html0000644000076500007650000000403611324451725021027 0ustar scottscott00000000000000 Description of Observable
    class Observable (Return to index)

    observable mixin.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/observe.h

    Description:

    in reference manual.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ObservableBoolean.html0000644000076500007650000000655211324451725022334 0ustar scottscott00000000000000 Description of ObservableBoolean
    class ObservableBoolean : public AcceptingObservable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/observables.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ObservableEnum.html0000644000076500007650000001457011324451725021660 0ustar scottscott00000000000000 Description of ObservableEnum
    class ObservableEnum : public AcceptingObservable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/observables.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ObservableText.html0000644000076500007650000000557711324451725021707 0ustar scottscott00000000000000 Description of ObservableText
    class ObservableText : public AcceptingObservable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/observables.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ObservableTime.html0000644000076500007650000001222111324451725021641 0ustar scottscott00000000000000 Description of ObservableTime
    class ObservableTime : public Observable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Time/obstime.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Observer.html0000644000076500007650000000361211324451725020531 0ustar scottscott00000000000000 Description of Observer
    class Observer (Return to index)

    observer mixin.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/observe.h

    Description:

    in reference manual.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ObsTextDialog.html0000644000076500007650000000337511324451725021460 0ustar scottscott00000000000000 Description of ObsTextDialog
    class ObsTextDialog : public Dialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/odialogs.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ObsTextEditor.html0000644000076500007650000000646611324451725021513 0ustar scottscott00000000000000 Description of ObsTextEditor
    class ObsTextEditor : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/textform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OLDialogKit.html0000644000076500007650000000477011324451725021052 0ustar scottscott00000000000000 Description of OLDialogKit
    class OLDialogKit : public DialogKit (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/ol_dialogs.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OLKit.html0000644000076500007650000004017011324451725017724 0ustar scottscott00000000000000 Description of OLKit
    class OLKit : public WidgetKit (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/ol_kit.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OpaqueDragManip.html0000644000076500007650000001460611324451725021764 0ustar scottscott00000000000000 Description of OpaqueDragManip
    class OpaqueDragManip : public DragManip (Return to index)

    manipulator for opaque move.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovmanips.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Open_BSpline31.html0000644000076500007650000000457711324451725021436 0ustar scottscott00000000000000 Description of Open_BSpline31
    class Open_BSpline31 : public Graphic31 (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OpenBSpline.html0000644000076500007650000000620511324451725021121 0ustar scottscott00000000000000 Description of OpenBSpline
    class OpenBSpline : public Vertices (Return to index)

    open b-spline graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/splines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OpenCmd.html0000644000076500007650000000503411324451725020267 0ustar scottscott00000000000000 Description of OpenCmd
    class OpenCmd : public ViewCompCmd (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OpenFileChooser.html0000644000076500007650000001357211324451725021774 0ustar scottscott00000000000000 Description of OpenFileChooser
    class OpenFileChooser : public Dialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/ofilechooser.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OpenFileChooserAction.html0000644000076500007650000000351211324451725023123 0ustar scottscott00000000000000 Description of OpenFileChooserAction
    class OpenFileChooserAction : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/ofilechooser.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OpenFileChooserImpl.html0000644000076500007650000002265211324451725022615 0ustar scottscott00000000000000 Description of OpenFileChooserImpl
    class OpenFileChooserImpl (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IVGlyph/ofilechooser.h

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/OptableFunc.html0000644000076500007650000000335711324451725021152 0ustar scottscott00000000000000 Description of OptableFunc
    class OptableFunc : public ComFunc (Return to index)

    print contents of operator table

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/helpfunc.h

    Description:

    optable() -- print contents of operator table to stdout

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OptionDesc.html0000644000076500007650000000277711324451725021024 0ustar scottscott00000000000000 Description of OptionDesc
    class OptionDesc (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/session.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OrFunc.html0000644000076500007650000000315411324451725020137 0ustar scottscott00000000000000 Description of OrFunc
    class OrFunc : public NumFunc (Return to index)

    || (or) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/boolfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OrientationCmd.html0000644000076500007650000000542411324451725021664 0ustar scottscott00000000000000 Description of OrientationCmd
    class OrientationCmd : public Command (Return to index)

    landscape/portrait orientation command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/viewcmds.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ostreamb.html0000644000076500007650000001455211324451727020565 0ustar scottscott00000000000000 Description of ostreamb
    class ostreamb : public virtual iosb, public ostream (Return to index)

    unformatted output stream

    Type:
      Instantiable

    Base Classes:
      public virtual iosb, public ostream

    Derived Classes

    Include file:

      Dispatch/iostreamb.h

    Description:

    Modify ostream to insert unformatted data where possible for faster I/O throughput and to delimit formatted data automatically.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/other.html0000644000076500007650000000723711324451727020074 0ustar scottscott00000000000000Other Documented Items

    Other Documented Items



    FUNCTIONS

    GLOBALS

    TYPEDEFS

      class AttributeValue_AV;
      for quick casting in debugger

      ACE_Singleton<ACE_Test_and_Set <ACE_Null_Mutex, sig_atomic_t>, ACE_Null_Mutex> COMTERP_QUIT_HANDLER;
      An ACE_Test_and_Set Singleton.

      ACE_Acceptor <ComterpHandler, ACE_SOCK_ACCEPTOR> ComterpAcceptor;
      Specialize a ComterpAcceptor.

      ACE_Acceptor <UnidrawComterpHandler, ACE_SOCK_ACCEPTOR> UnidrawComterpAcceptor;
      Acceptor specialized for use with Unidraw and ComTerp.

      ACE_Acceptor <DrawServHandler, ACE_SOCK_ACCEPTOR> DrawServAcceptor;
      Acceptor specialized for use with DrawServ and ComTerp.

      ACE_Singleton<ACE_Test_and_Set <ACE_Null_Mutex, sig_atomic_t>, ACE_Null_Mutex> IMPORT_QUIT_HANDLER;
      an ACE_Test_and_Set Singleton for Ctrl-C.

      ACE_Acceptor <UnidrawImportHandler, ACE_SOCK_ACCEPTOR> UnidrawImportAcceptor;
      acceptor specialized on UnidrawImportHandler.

    MACROS

      CLASS_SYMID(name) : public: static const char* class_name() {return name;} static int class_symid() { if (_symid<0) _symid=symbol_add((char*)class_name()); return _symid;} virtual int classid() { if (_symid<0) _symid=symbol_add((char*)class_name()); return _symid;} protected: static int _symid;
      define methods for a class name and class symbol id.
      adds ::class_name() and ::class_symid() based on 'name' to any class definition. For use in servers built on ComTerp for generating a unique id for a given type of component.

    ivtools-doc/doc/classes/OvAboutCmd.html0000644000076500007650000000640611324451725020751 0ustar scottscott00000000000000 Description of OvAboutCmd
    class OvAboutCmd : public Command (Return to index)

    command to display 'about' message for drawing editors.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovabout.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvCloseEditorCmd.html0000644000076500007650000000500711324451725022107 0ustar scottscott00000000000000 Description of OvCloseEditorCmd
    class OvCloseEditorCmd : public CloseEditorCmd (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvDeleteCmd.html0000644000076500007650000000666711324451725021112 0ustar scottscott00000000000000 Description of OvDeleteCmd
    class OvDeleteCmd : public DeleteCmd (Return to index)

    derived delete command that can be made irreversable.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvDownMover.html0000644000076500007650000000360411324451725021170 0ustar scottscott00000000000000 Description of OvDownMover
    class OvDownMover : public OvMover (Return to index)

    clone of DownMover.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovadjuster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OverlayCatalog.html0000644000076500007650000002670011324451725021661 0ustar scottscott00000000000000 Description of OverlayCatalog
    class OverlayCatalog : public IdrawCatalog (Return to index)

    catalog for read/write of "PostScript" and ASCII script documents

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcatalog.h

    Description:

    One of these is used by the editor to save and restore drawing editor documents in idraw "PostScript" format or in an ASCII variable-length record format (each record enclosed in parenthesis separated by commas, with nesting for hierarchical objects). Reading in "PostScript" is done with the balance of "Read" methods below. Reading in the ASCII script files is done with the istream constructors of classes derived from OverlayComp. Only writing in script is supported by this class. Writing in idraw "PostScript" is handled by IdrawCatalog.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayComp.html0000644000076500007650000005532611324451725021213 0ustar scottscott00000000000000 Description of OverlayComp
    class OverlayComp : public GraphicComp, public Observer, public Observable (Return to index)

    derived GraphicComp

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcomps.h

    Description:

    derived GraphicComp with extensions for property lists of arbitrary AttributeValue objects, event propagation inherited from Observer and Observable, and new persistence mechanisms (serialization) derived from ExternView (OverlayScript).

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/OverlayCreator.html0000644000076500007650000000361011324451725021701 0ustar scottscott00000000000000 Description of OverlayCreator
    class OverlayCreator : public IdrawCreator (Return to index)

    factory object for use of OverlayCatalog

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcreator.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OverlayDamage.html0000644000076500007650000000323311324451725021461 0ustar scottscott00000000000000 Description of OverlayDamage
    class OverlayDamage : public Damage (Return to index)

    double-buffered damage repair mechanism.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovdamage.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayEditor.html0000644000076500007650000004162711324451725021542 0ustar scottscott00000000000000 Description of OverlayEditor
    class OverlayEditor : public IdrawEditor (Return to index)

    editor derived from IdrawEditor.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/oved.h

    Description:

    return pointer to default viewer.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/OverlayFileComp.html0000644000076500007650000002015611324451725022004 0ustar scottscott00000000000000 Description of OverlayFileComp
    class OverlayFileComp : public OverlaysComp (Return to index)

    component used to import a sub-tree by pathname.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovfile.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayFileScript.html0000644000076500007650000000617411324451725022356 0ustar scottscott00000000000000 Description of OverlayFileScript
    class OverlayFileScript : public OverlaysScript (Return to index)

    serialized view of OverlayFileComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovfile.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OverlayFileView.html0000644000076500007650000000330211324451725022012 0ustar scottscott00000000000000 Description of OverlayFileView
    class OverlayFileView : public OverlaysView (Return to index)

    graphical view of OverlayFileComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovfile.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OverlayGraphic.html0000644000076500007650000000260211324451725021657 0ustar scottscott00000000000000 Description of OverlayGraphic
    class OverlayGraphic : public Graphic (Return to index)

    for the purpose of sliding in a derived Painter

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcomps.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OverlayIdrawComp.html0000644000076500007650000002411011324451725022165 0ustar scottscott00000000000000 Description of OverlayIdrawComp
    class OverlayIdrawComp : public OverlaysComp, public IndexedGsMixin, public IndexedPtsMixin, public IndexedPicMixin (Return to index)

    top-level OverlaysComp, the root of a component tree or document.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcomps.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/OverlayIdrawPS.html0000644000076500007650000001027211324451725021615 0ustar scottscott00000000000000 Description of OverlayIdrawPS
    class OverlayIdrawPS : public OverlaysPS (Return to index)

    "PostScript" view of OverlayIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpsview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayIdrawScript.html0000644000076500007650000001650211324451725022541 0ustar scottscott00000000000000 Description of OverlayIdrawScript
    class OverlayIdrawScript : public OverlaysScript (Return to index)

    serialized view of top-level OverlayIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/scriptview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayIdrawView.html0000644000076500007650000000343311324451725022206 0ustar scottscott00000000000000 Description of OverlayIdrawView
    class OverlayIdrawView : public OverlaysView (Return to index)

    graphical view of OverlayIdrawComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovviews.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OverlayKit.html0000644000076500007650000006602311324451725021040 0ustar scottscott00000000000000 Description of OverlayKit
    class OverlayKit (Return to index)

    helper class for constructing an OverlayEditor.

    Type:
      Instantiable

    Derived Classes

    Include file:

      OverlayUnidraw/ovkit.h

    Description:

    this class (or something derived from it) is supplied to the constructor of an OverlayEditor (or any class derived from an OverlayEditor). The idea behind OverlayKit is it facilitates a much more flexible construction of an OverlayEditor, the central object in any ivtools drawing editor, by allow the use of virtual functions during the construction. Normally virtual functions can't be used by a constructor, but virtual functions on a pre-constructed helper class, like OverlayKit, can be used.

    In this way other classes can be derived from OverlayKit with different virtual methods for initializing the pull-down menus and toolbars, and can completely change the appearance and functionality of essentially the same OverlayEditor.

    Another feature of the OverlayKit idea is it solves the problem of what to do when a particular vertical application wants to use the features of two different derivations of an OverlayEditor. Prior to OverlayKit you would need to use multiple-inheritance, which can have problems, or permanently decide on the ordering of one derived editor relative to the other, which may be undesirable in future circumstances. With an OverlayKit it is easier to mix and match the desirable features of one lineage of derived OverlayEditor classes with the features of another lineage, pushing capability as needed from the editor to the kit.

    There is support for a default OverlayKit for use when constructing an OverlayEditor. In general any editor-specific state should reside in the editor, not the kit, but this is not a hard-and-fast rule.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayPage.html0000644000076500007650000000354211324451725021162 0ustar scottscott00000000000000 Description of OverlayPage
    class OverlayPage : public UPage (Return to index)

    drawing page object.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpage.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OverlayPainter.html0000644000076500007650000000565611324451725021720 0ustar scottscott00000000000000 Description of OverlayPainter
    class OverlayPainter : public Painter (Return to index)

    specialized Painter for use with OverlayUnidraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpainter.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayPanner.html0000644000076500007650000001022511324451725021525 0ustar scottscott00000000000000 Description of OverlayPanner
    class OverlayPanner : public MonoScene (Return to index)

    flexible panner/zoomer/slider window.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpanner.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayPS.html0000644000076500007650000001267611324451725020640 0ustar scottscott00000000000000 Description of OverlayPS
    class OverlayPS : public PostScriptView (Return to index)

    base class of "PostScript" views for OverlayComp objects.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpsview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayRaster.html0000644000076500007650000005605611324451725021556 0ustar scottscott00000000000000 Description of OverlayRaster
    class OverlayRaster : public Raster (Return to index)

    specialized Raster object for use with RasterOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovraster.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/OverlayRasterRect.html0000644000076500007650000003107611324451725022367 0ustar scottscott00000000000000 Description of OverlayRasterRect
    class OverlayRasterRect : public RasterRect (Return to index)

    derived RasterRect Graphic for use with OverlayRaster and GrayRaster.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovraster.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/OverlaysComp.html0000644000076500007650000005177111324451725021376 0ustar scottscott00000000000000 Description of OverlaysComp
    class OverlaysComp : public OverlayComp (Return to index)

    composite component, clone of GraphicComps derived from OverlayComp

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcomps.h

    Description:

    composite component that manages a list of sub-components.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/OverlayScript.html0000644000076500007650000005646711324451725021570 0ustar scottscott00000000000000 Description of OverlayScript
    class OverlayScript : public OverlayPS (Return to index)

    serialized view of OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/scriptview.h

    Description:

    the OverlayScript class hierarchy is a tree of ExternView classes that are derived from OverlayPS and PostScriptView for convenience, to inherit a complete mechanism for writing and reading graphical data.

    This capability is similar to the serialization mechanism of JavaBeans, but there is no need for a versioning system because the format used for the ASCII serialization supports arbitrary extension of an object's format by adding defaulted keyword-prefixed arguments.

    An older program can read newer formats, because the deserialization is set up to convert unknown keyword arguments into attributes on in a property list. A newer program can read older formats by using default values for missing keyword-prefixed arguments.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlaySelection.html0000644000076500007650000001744411324451725022241 0ustar scottscott00000000000000 Description of OverlaySelection
    class OverlaySelection : public Selection (Return to index)

    derived Selection object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovselection.h

    Description:

    specialized Selection object with support for highlighting by changing graphic state (as opposed to only using tic mark handles). Also adds ability to globally disable tic mark handles.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlaySelectTool.html0000644000076500007650000000767011324451725022371 0ustar scottscott00000000000000 Description of OverlaySelectTool
    class OverlaySelectTool : public SelectTool (Return to index)

    derived SelectTool.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovselect.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlaySlider.html0000644000076500007650000000726211324451725021533 0ustar scottscott00000000000000 Description of OverlaySlider
    class OverlaySlider : public Interactor (Return to index)

    slider window within an OverlayPanner.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpanner.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlaysPS.html0000644000076500007650000001551611324451725021017 0ustar scottscott00000000000000 Description of OverlaysPS
    class OverlaysPS : public OverlayPS (Return to index)

    "PostScript" view of an OverlaysComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpsview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlaysScript.html0000644000076500007650000002747411324451725021747 0ustar scottscott00000000000000 Description of OverlaysScript
    class OverlaysScript : public OverlayScript (Return to index)

    composite version of OverlayScript.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/scriptview.h

    Description:

    a serialized view of OverlaysComp.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlaysView.html0000644000076500007650000003015711324451725021405 0ustar scottscott00000000000000 Description of OverlaysView
    class OverlaysView : public OverlayView (Return to index)

    graphical view of OverlaysComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovviews.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayUnidraw.html0000644000076500007650000002324211324451725021716 0ustar scottscott00000000000000 Description of OverlayUnidraw
    class OverlayUnidraw : public Unidraw (Return to index)

    derived Unidraw object with extra mechanisms.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovunidraw.h

    Description:

    derived Unidraw object with extra mechanisms for logging and deferred execution of commands.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayView.html0000644000076500007650000003560711324451725021227 0ustar scottscott00000000000000 Description of OverlayView
    class OverlayView : public GraphicView (Return to index)

    base class for graphic view of an OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovviews.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayViewer.html0000644000076500007650000003740111324451725021550 0ustar scottscott00000000000000 Description of OverlayViewer
    class OverlayViewer : public Viewer (Return to index)

    specialized Viewer.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovviewer.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OverlayViewRef.html0000644000076500007650000000303611324451725021653 0ustar scottscott00000000000000 Description of OverlayViewRef
    class OverlayViewRef : public OverlayView (Return to index)

    OverlayView used as Resource

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovviews.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvExportCmd.html0000644000076500007650000001223311324451725021153 0ustar scottscott00000000000000 Description of OvExportCmd
    class OvExportCmd : public Command (Return to index)

    command to export selection in idraw "PostScript" or drawtool serialized format.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovexport.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvFileImage.html0000644000076500007650000001335311324451725021074 0ustar scottscott00000000000000 Description of OvFileImage
    class OvFileImage : public OvRestrictedImage (Return to index)

    file-based image object for large-image handling.

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovrestimage.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvGroupCmd.html0000644000076500007650000000736311324451725020776 0ustar scottscott00000000000000 Description of OvGroupCmd
    class OvGroupCmd : public GroupCmd (Return to index)

    derived group command.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvImageMapCmd.html0000644000076500007650000001156411324451725021360 0ustar scottscott00000000000000 Description of OvImageMapCmd
    class OvImageMapCmd : public SaveCompAsCmd (Return to index)

    command to create clickable imagemap from viewer canvas.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvImportCmd.html0000644000076500007650000006731011324451725021152 0ustar scottscott00000000000000 Description of OvImportCmd
    class OvImportCmd : public Command (Return to index)

    command for importing arbitrary graphical files.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovimport.h

    Description:

    command for importing arbitrary graphical files: a wide variety of raster files, idraw "PostScript" and regular "PostScript", compressed or not compressed, by URL or pathname. Useful static methods for constructing components, as well as full-on command for hooking into a file menu.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvLeftMover.html0000644000076500007650000000360411324451725021153 0ustar scottscott00000000000000 Description of OvLeftMover
    class OvLeftMover : public OvMover (Return to index)

    clone of LeftMover.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovadjuster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvMemoryImage.html0000644000076500007650000000475711324451725021475 0ustar scottscott00000000000000 Description of OvMemoryImage
    class OvMemoryImage : public OvRestrictedImage (Return to index)

    in-memory image object for large-image handling.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovrestimage.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvMover.html0000644000076500007650000000600011324451725020331 0ustar scottscott00000000000000 Description of OvMover
    class OvMover : public Adjuster (Return to index)

    clone of Mover.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovadjuster.h

    Description:

    Partial attempt to change the appearance or location of the panner buttons on a drawing editor. Perhaps there is a unremembered bugfix in this subtree (which includes OvLeftMover, OvRightMover, OvUpMover, and OvDownMover) but an inspection of the methods doesn't show one up. These classes could be factored out in the future, or used to improve the appearance and feel of the panner buttons in drawing editors other than idraw.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvNewCompCmd.html0000644000076500007650000000523411324451725021245 0ustar scottscott00000000000000 Description of OvNewCompCmd
    class OvNewCompCmd : public NewCompCmd (Return to index)

    derived new command.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvNewViewCmd.html0000644000076500007650000001246211324451725021262 0ustar scottscott00000000000000 Description of OvNewViewCmd
    class OvNewViewCmd : public NewViewCmd (Return to index)

    derived new-view command.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvOpenCmd.html0000644000076500007650000000534611324451725020602 0ustar scottscott00000000000000 Description of OvOpenCmd
    class OvOpenCmd : public OvViewCompCmd (Return to index)

    derived open command with grid support.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvPortableFileImage.html0000644000076500007650000000531511324451725022564 0ustar scottscott00000000000000 Description of OvPortableFileImage
    class OvPortableFileImage : public OvFileImage (Return to index)

    specialization of OvFileImage for untiled pbmplus image formats.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovrestimage.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/OvPreciseBrushCmd.html0000644000076500007650000000534311324451725022274 0ustar scottscott00000000000000 Description of OvPreciseBrushCmd
    class OvPreciseBrushCmd : public Command (Return to index)

    precise brush-width (line-width) command.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovprecise.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvPreciseMoveCmd.html0000644000076500007650000000747311324451725022125 0ustar scottscott00000000000000 Description of OvPreciseMoveCmd
    class OvPreciseMoveCmd : public PreciseMoveCmd (Return to index)

    glyphified PreciseMoveCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovprecise.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvPrecisePageCmd.html0000644000076500007650000000541211324451725022062 0ustar scottscott00000000000000 Description of OvPrecisePageCmd
    class OvPrecisePageCmd : public PrecisePageCmd (Return to index)

    glyphified PrecisePageCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovprecise.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvPreciseRotateCmd.html0000644000076500007650000000545011324451725022446 0ustar scottscott00000000000000 Description of OvPreciseRotateCmd
    class OvPreciseRotateCmd : public PreciseRotateCmd (Return to index)

    glyphified PreciseRotateCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovprecise.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvPreciseScaleCmd.html0000644000076500007650000000543111324451725022236 0ustar scottscott00000000000000 Description of OvPreciseScaleCmd
    class OvPreciseScaleCmd : public PreciseScaleCmd (Return to index)

    glyphified PreciseScaleCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovprecise.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvPrintCmd.html0000644000076500007650000001120011324451725020757 0ustar scottscott00000000000000 Description of OvPrintCmd
    class OvPrintCmd : public Command (Return to index)

    evolved clone of PrintCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovprint.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvQuitCmd.html0000644000076500007650000000473511324451725020624 0ustar scottscott00000000000000 Description of OvQuitCmd
    class OvQuitCmd : public QuitCmd (Return to index)

    derived quit command.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvRestrictedImage.html0000644000076500007650000000355211324451725022325 0ustar scottscott00000000000000 Description of OvRestrictedImage
    class OvRestrictedImage (Return to index)

    base class image object for large-image handling.

    Type:
      Abstract

    Derived Classes

    Include file:

      OverlayUnidraw/ovrestimage.h

    Description:

    N.B. 0,0 is the upper left corner, NOT IV conventions.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvRevertCmd.html0000644000076500007650000000474511324451725021152 0ustar scottscott00000000000000 Description of OvRevertCmd
    class OvRevertCmd : public RevertCmd (Return to index)

    derived revert command.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvRightMover.html0000644000076500007650000000361711324451725021342 0ustar scottscott00000000000000 Description of OvRightMover
    class OvRightMover : public OvMover (Return to index)

    clone of RightMover.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovadjuster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvSaveCompAsCmd.html0000644000076500007650000001144311324451725021675 0ustar scottscott00000000000000 Description of OvSaveCompAsCmd
    class OvSaveCompAsCmd : public SaveCompAsCmd (Return to index)

    derived save-as command.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvSaveCompCmd.html0000644000076500007650000001044111324451725021406 0ustar scottscott00000000000000 Description of OvSaveCompCmd
    class OvSaveCompCmd : public SaveCompCmd (Return to index)

    derived save command.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvSlctAllCmd.html0000644000076500007650000000504011324451725021226 0ustar scottscott00000000000000 Description of OvSlctAllCmd
    class OvSlctAllCmd : public SlctAllCmd (Return to index)

    derived select-all command.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvTiledFileImage.html0000644000076500007650000000552511324451725022060 0ustar scottscott00000000000000 Description of OvTiledFileImage
    class OvTiledFileImage : public OvFileImage (Return to index)

    specialization of OvFileImage for internally tiled pbmplus image formats.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovrestimage.h

    Description:

    Note that this class is optimized for iterations that begin at 0,0 and proceed 1,0 2,0 3,0 ... 0,1 1,1 2,1 ...

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/OvUpMover.html0000644000076500007650000000355611324451725020653 0ustar scottscott00000000000000 Description of OvUpMover
    class OvUpMover : public OvMover (Return to index)

    clone of UpMover.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovadjuster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/OvViewCompCmd.html0000644000076500007650000000601311324451725021422 0ustar scottscott00000000000000 Description of OvViewCompCmd
    class OvViewCompCmd : public ViewCompCmd (Return to index)

    derived open command.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/OvWindowDumpAsCmd.html0000644000076500007650000000665411324451725022265 0ustar scottscott00000000000000 Description of OvWindowDumpAsCmd
    class OvWindowDumpAsCmd : public SaveCompAsCmd (Return to index)

    command to dump current viewer canvas as .xwd file.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PadComp.html0000644000076500007650000001063711324451725020272 0ustar scottscott00000000000000 Description of PadComp
    class PadComp : public Connector (Return to index)

    pad component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/pad.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PadGraphic.html0000644000076500007650000001053411324451725020745 0ustar scottscott00000000000000 Description of PadGraphic
    class PadGraphic : public Graphic (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/pad.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PadView.html0000644000076500007650000001353211324451725020303 0ustar scottscott00000000000000 Description of PadView
    class PadView : public ConnectorView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/pad.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Page.html0000644000076500007650000002076311324451725017624 0ustar scottscott00000000000000 Description of Page
    class Page : public Glyph (Return to index)

    glyph for arbitrary placements

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/page.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PageCmd.html0000644000076500007650000000536311324451725020247 0ustar scottscott00000000000000 Description of PageCmd
    class PageCmd : public Command (Return to index)

    command to toggle page graphic visibility.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PageDialog.html0000644000076500007650000000542711324451725020744 0ustar scottscott00000000000000 Description of PageDialog
    class PageDialog : public BasicDialog (Return to index)

    dialog box for precision page sizing.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovdialog.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PageGraphic.html0000644000076500007650000000745311324451725021123 0ustar scottscott00000000000000 Description of PageGraphic
    class PageGraphic : public Graphic (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/upage.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Painter.html0000644000076500007650000003447711324451725020361 0ustar scottscott00000000000000 Description of Painter
    class Painter : public Resource (Return to index)

    graphics rendering interface (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/painter.h

    Description:

    man page

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/PainterDpyInfo.html0000644000076500007650000000753711324451725021647 0ustar scottscott00000000000000 Description of PainterDpyInfo
    class PainterDpyInfo (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      OverlayUnidraw/ovpainter.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PainterRep.html0000644000076500007650000000653411324451725021021 0ustar scottscott00000000000000 Description of PainterRep
    class PainterRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xpainter.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PaletteBooleanEditor.html0000644000076500007650000000523711324451725023014 0ustar scottscott00000000000000 Description of PaletteBooleanEditor
    class PaletteBooleanEditor : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/boolform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PanCmd.html0000644000076500007650000001023211324451725020100 0ustar scottscott00000000000000 Description of PanCmd
    class PanCmd : public CameraMotionCmd (Return to index)

    command for panning viewer.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcamcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PanDialog.html0000644000076500007650000000541611324451725020604 0ustar scottscott00000000000000 Description of PanDialog
    class PanDialog : public BasicDialog (Return to index)

    dialog box for precision panning.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovdialog.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PanDownLargeFunc.html0000644000076500007650000000353111324451725022077 0ustar scottscott00000000000000 Description of PanDownLargeFunc
    class PanDownLargeFunc : public UnidrawFunc (Return to index)

    command to pan viewer downward a large fixed amount in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    largepandown() -- large pan down

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PanDownSmallFunc.html0000644000076500007650000000353111324451725022115 0ustar scottscott00000000000000 Description of PanDownSmallFunc
    class PanDownSmallFunc : public UnidrawFunc (Return to index)

    command to pan viewer downward a small fixed amount in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    smallpandown() -- small pan down

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PanelControl.html0000644000076500007650000000665311324451725021352 0ustar scottscott00000000000000 Description of PanelControl
    class PanelControl : public UControl (Return to index)

    panel control

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/uctrls.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PanelInteractor.html0000644000076500007650000000415511324451725022037 0ustar scottscott00000000000000 Description of PanelInteractor
    class PanelInteractor : public UControlInteractor (Return to index)

    panel "interactor" control

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/uctrls.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PanFunc.html0000644000076500007650000000340611324451725020275 0ustar scottscott00000000000000 Description of PanFunc
    class PanFunc : public UnidrawFunc (Return to index)

    command to pan viewer in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    pan(px py) -- pan viewer

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PanLeftLargeFunc.html0000644000076500007650000000353411324451725022065 0ustar scottscott00000000000000 Description of PanLeftLargeFunc
    class PanLeftLargeFunc : public UnidrawFunc (Return to index)

    command to pan viewer to the left a large fixed amount in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    largepanleft() -- large pan left

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PanLeftSmallFunc.html0000644000076500007650000000353411324451725022103 0ustar scottscott00000000000000 Description of PanLeftSmallFunc
    class PanLeftSmallFunc : public UnidrawFunc (Return to index)

    command to pan viewer to the left a small fixed amount in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    smallpanleft() -- small pan left

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Panner.html0000644000076500007650000000465511324451725020175 0ustar scottscott00000000000000 Description of Panner
    class Panner : public MonoScene (Return to index)

    an Interactor for two-dimensional scrolling and zooming (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/panner.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PanRightLargeFunc.html0000644000076500007650000000354411324451725022251 0ustar scottscott00000000000000 Description of PanRightLargeFunc
    class PanRightLargeFunc : public UnidrawFunc (Return to index)

    command to pan viewer to the right a large fixed amount in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    largepanright() -- large pan right

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PanRightSmallFunc.html0000644000076500007650000000354411324451725022267 0ustar scottscott00000000000000 Description of PanRightSmallFunc
    class PanRightSmallFunc : public UnidrawFunc (Return to index)

    command to pan viewer to the right a small fixed amount in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    smallpanright() -- small pan right

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PanUpLargeFunc.html0000644000076500007650000000351111324451725021552 0ustar scottscott00000000000000 Description of PanUpLargeFunc
    class PanUpLargeFunc : public UnidrawFunc (Return to index)

    command to pan viewer upward a large fixed amount in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    largepanup() -- large pan up

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PanUpSmallFunc.html0000644000076500007650000000351111324451725021570 0ustar scottscott00000000000000 Description of PanUpSmallFunc
    class PanUpSmallFunc : public UnidrawFunc (Return to index)

    command to pan viewer upward a small fixed amount in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    smallpanup() -- small pan up

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ParamList.html0000644000076500007650000006324311324451725020644 0ustar scottscott00000000000000 Description of ParamList
    class ParamList (Return to index)

    list of ParamStruct objects for de-serialization of a previously serialized object.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/paramlist.h

    Description:

    list of ParamStruct objects that defines the possible signature of a serialized object, for use in de-serialization (istream constructors).

    See OverlayScript and OverlayComp for an example of how this is used. OverlayScript is a serializing view of an OverlayComp, and generates a variable length, ASCII record (with arguments enclosed in parenthesis following the object name) that describes the internal state of an OverlayComp. Then later, the istream constructor of an OverlayComp uses the static ParamList object of its class to reverse the process (called de-serialization), to set the internal state of a newly constructed OverlayComp to mirror the internal state of the original object. This mechanism can be used for any struct or C++ class that needs to be saved out to disk for persistent storage, or transmitted over a socket.

    Keep in mind that only relative addresses are used to construct the ParamStruct objects that make up the ParamList, and the actual base address used to resolve where to place data is different when the final object is constructed (except for the very first time an object of a given class gets constructed -- at that time the addresses used to build up the ParamList are the same ones used to populate the object).

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ParamStruct.html0000644000076500007650000002107411324451725021211 0ustar scottscott00000000000000 Description of ParamStruct
    class ParamStruct (Return to index)

    parameter definition structure for ParamList.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/paramlist.h

    Description:

    structure for defining an argument to be read out of a serialized view of an object written out for persistent storage or interprocess communication.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Parser.html0000644000076500007650000002757511324451725020214 0ustar scottscott00000000000000 Description of Parser
    class Parser : public ComTerpModule (Return to index)

    C++ wrapper for ComUtil parser capability.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/parser.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PasteCmd.html0000644000076500007650000000713611324451725020447 0ustar scottscott00000000000000 Description of PasteCmd
    class PasteCmd : public Command (Return to index)

    paste command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PasteFunc.html0000644000076500007650000000442511324451725020635 0ustar scottscott00000000000000 Description of PasteFunc
    class PasteFunc : public UnidrawFunc (Return to index)

    command to paste a graphic in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    compview=paste(compview [xscale yscale xoff yoff | a00,a01,a10,a11,a20,a21]) -- paste graphic into the viewer"

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PasteModeFunc.html0000644000076500007650000000521311324451725021436 0ustar scottscott00000000000000 Description of PasteModeFunc
    class PasteModeFunc : public UnidrawFunc (Return to index)

    command for toggling or setting paste mode

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    val=paste([flag] :val) -- toggle or set paste mode, default is 0, always paste new graphics

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Patch.html0000644000076500007650000001051511324451725020001 0ustar scottscott00000000000000 Description of Patch
    class Patch : public MonoGlyph (Return to index)

    glyph able to redraw itself.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/patch.h

    Description:

    in reference manual.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Path.html0000644000076500007650000000435211324451725017640 0ustar scottscott00000000000000 Description of Path
    class Path (Return to index)

    transmission path for state variable propagation

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/path.h

    Description:

    accumulates information about the transmission path during state variable propagation.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PathRenderInfo.html0000644000076500007650000000301711324451725021611 0ustar scottscott00000000000000 Description of PathRenderInfo
    class PathRenderInfo (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xcanvas.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Pattern.html0000644000076500007650000000544411324451725020364 0ustar scottscott00000000000000 Description of Pattern
    class Pattern : public Resource (Return to index)

    a pattern object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/pattern.h

    Description:

    defines a pattern for rendering operations

    pspaint(3).

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PatternCmd.html0000644000076500007650000000736411324451725021013 0ustar scottscott00000000000000 Description of PatternCmd
    class PatternCmd : public Command (Return to index)

    command to change pattern of current selection and editor.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/patcmd.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PatternFunc.html0000644000076500007650000000352111324451725021172 0ustar scottscott00000000000000 Description of PatternFunc
    class PatternFunc : public UnidrawFunc (Return to index)

    command for setting pattern state variable in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    pattern(patternnum) -- set current pattern from menu order

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PatternRep.html0000644000076500007650000000161111324451725021023 0ustar scottscott00000000000000 Description of PatternRep
    class PatternRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xpattern.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PatternVar.html0000644000076500007650000000766311324451725021042 0ustar scottscott00000000000000 Description of PatternVar
    class PatternVar : public StateVar (Return to index)

    current pattern state variable

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/statevars.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PatternVarView.html0000644000076500007650000000561511324451725021670 0ustar scottscott00000000000000 Description of PatternVarView
    class PatternVarView : public StateVarView (Return to index)

    current-pattern state variable view

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/stateviews.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Perspective.html0000644000076500007650000001241611324451725021235 0ustar scottscott00000000000000 Description of Perspective
    class Perspective : public Resource (Return to index)

    indicates portion of total view shown (iv-2.6).

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/perspective.h

    Description:

    A Perspective describes what portion of the total view an Interactor shows.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PGM_Helper.html0000644000076500007650000000567311324451725020675 0ustar scottscott00000000000000 Description of PGM_Helper
    class PGM_Helper : public PortableImageHelper (Return to index)

    helper class for reading PGM images.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovimport.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Picture.html0000644000076500007650000003231611324451725020360 0ustar scottscott00000000000000 Description of Picture
    class Picture : public FullGraphic (Return to index)

    composite Graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/picture.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PicturePS.html0000644000076500007650000000502611324451725020621 0ustar scottscott00000000000000 Description of PicturePS
    class PicturePS : public OverlaysPS (Return to index)

    general purpose "PostScript" view for any OverlayComp with a composite graphic.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpspict.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PiFunc.html0000644000076500007650000000332711324451725020131 0ustar scottscott00000000000000 Description of PiFunc
    class PiFunc : public ComFunc (Return to index)

    Pi command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=pi() -- returns the value of pi.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PinComp.html0000644000076500007650000001063711324451725020314 0ustar scottscott00000000000000 Description of PinComp
    class PinComp : public Connector (Return to index)

    pin component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/pin.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PinGraphic.html0000644000076500007650000001030611324451725020764 0ustar scottscott00000000000000 Description of PinGraphic
    class PinGraphic : public Graphic (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/pin.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PinView.html0000644000076500007650000001353211324451725020325 0ustar scottscott00000000000000 Description of PinView
    class PinView : public ConnectorView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/pin.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PixelClipFunc.html0000644000076500007650000000353211324451725021450 0ustar scottscott00000000000000 Description of PixelClipFunc
    class PixelClipFunc : public UnidrawFunc (Return to index)

    command to clip raster with polygon

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/pixelfunc.h

    Description:

    pclip(compview x1,y1,x2,y2,x3,y3[,...,xn,yn]) -- clip raster with polygon

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PixelColsFunc.html0000644000076500007650000000351511324451725021462 0ustar scottscott00000000000000 Description of PixelColsFunc
    class PixelColsFunc : public UnidrawFunc (Return to index)

    command to return number of columns in a raster

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/pixelfunc.h

    Description:

    pcols(compview) -- number of columns in a raster

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PixelFlushFunc.html0000644000076500007650000000352011324451725021637 0ustar scottscott00000000000000 Description of PixelFlushFunc
    class PixelFlushFunc : public UnidrawFunc (Return to index)

    command to flush pixels poked in a raster

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/pixelfunc.h

    Description:

    pflush(compview) -- flush pixels poked into a raster

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PixelPeekFunc.html0000644000076500007650000000351411324451725021445 0ustar scottscott00000000000000 Description of PixelPeekFunc
    class PixelPeekFunc : public UnidrawFunc (Return to index)

    command to peek pixel values from raster

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/pixelfunc.h

    Description:

    val=peek(compview x y) -- peek pixel value into raster

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PixelPokeFunc.html0000644000076500007650000000351411324451725021457 0ustar scottscott00000000000000 Description of PixelPokeFunc
    class PixelPokeFunc : public UnidrawFunc (Return to index)

    command to poke pixel values into raster

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/pixelfunc.h

    Description:

    poke(compview x y val) -- poke pixel value into raster

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PixelPokeLineFunc.html0000644000076500007650000000362011324451725022265 0ustar scottscott00000000000000 Description of PixelPokeLineFunc
    class PixelPokeLineFunc : public UnidrawFunc (Return to index)

    command to poke a line of pixel values into raster

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/pixelfunc.h

    Description:

    pokeline(compview x y vallist) -- poke pixel values of a line listed in vallist into raster.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PixelRowsFunc.html0000644000076500007650000000350711324451725021515 0ustar scottscott00000000000000 Description of PixelRowsFunc
    class PixelRowsFunc : public UnidrawFunc (Return to index)

    command to return number of rows in a raster

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/pixelfunc.h

    Description:

    pcols(compview) -- number of rows in a raster

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Placement.html0000644000076500007650000000644611324451725020662 0ustar scottscott00000000000000 Description of Placement
    class Placement : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/place.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Point.html0000644000076500007650000001150611324451725020034 0ustar scottscott00000000000000 Description of Point
    class Point : public Graphic (Return to index)

    point graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/lines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PointObj.html0000644000076500007650000000345711324451725020475 0ustar scottscott00000000000000 Description of PointObj
    class PointObj (Return to index)

    point geometric object

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Graphic/geomobjs.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PointsFunc.html0000644000076500007650000000353011324451725021031 0ustar scottscott00000000000000 Description of PointsFunc
    class PointsFunc : public UnidrawFunc (Return to index)

    command to return point list associated with a graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grstatfunc.h

    Description:

    ptlist=points(compview) -- return point list from compview graphic

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PolyGlyph.html0000644000076500007650000000775311324451725020703 0ustar scottscott00000000000000 Description of PolyGlyph
    class PolyGlyph : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/polyglyph.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Polygon.html0000644000076500007650000000534011324451725020371 0ustar scottscott00000000000000 Description of Polygon
    class Polygon : public Vertices (Return to index)

    polygon graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/polygons.h

    Description:

    man page

    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Polygon31.html0000644000076500007650000000405511324451725020537 0ustar scottscott00000000000000 Description of Polygon31
    class Polygon31 : public Graphic31 (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PolygonComp.html0000644000076500007650000000544011324451725021211 0ustar scottscott00000000000000 Description of PolygonComp
    class PolygonComp : public VerticesComp (Return to index)

    polygon component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/polygon.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PolygonOvComp.html0000644000076500007650000001046311324451725021517 0ustar scottscott00000000000000 Description of PolygonOvComp
    class PolygonOvComp : public VerticesOvComp (Return to index)

    clone of PolygonComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpolygon.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/PolygonOvView.html0000644000076500007650000000660011324451725021531 0ustar scottscott00000000000000 Description of PolygonOvView
    class PolygonOvView : public VerticesOvView (Return to index)

    graphical view of PolygonOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpolygon.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PolygonPS.html0000644000076500007650000000416611324451725020641 0ustar scottscott00000000000000 Description of PolygonPS
    class PolygonPS : public VerticesPS (Return to index)

    "PostScript" view of PolygonOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpolygon.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PolygonScript.html0000644000076500007650000000515011324451725021555 0ustar scottscott00000000000000 Description of PolygonScript
    class PolygonScript : public VerticesScript (Return to index)

    serialized view of PolygonOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovpolygon.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PolygonView.html0000644000076500007650000000615111324451725021225 0ustar scottscott00000000000000 Description of PolygonView
    class PolygonView : public VerticesView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/polygon.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PolyGraphic.html0000644000076500007650000002306611324451725021170 0ustar scottscott00000000000000 Description of PolyGraphic
    class PolyGraphic : public Graphic31 (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Polyline31.html0000644000076500007650000000406411324451725020703 0ustar scottscott00000000000000 Description of Polyline31
    class Polyline31 : public Graphic31 (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PopupMenu.html0000644000076500007650000000306211324451725020671 0ustar scottscott00000000000000 Description of PopupMenu
    class PopupMenu : public Menu (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/menu.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PopupWindow.html0000644000076500007650000000326311324451725021237 0ustar scottscott00000000000000 Description of PopupWindow
    class PopupWindow : public Window (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/window.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PortableImageHelper.html0000644000076500007650000000770511324451725022624 0ustar scottscott00000000000000 Description of PortableImageHelper
    class PortableImageHelper (Return to index)

    helper class for reading PGM or PPM images.

    Type:
      Abstract

    Derived Classes

    Include file:

      OverlayUnidraw/ovimport.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PostEvalFunc.html0000644000076500007650000000407611324451725021320 0ustar scottscott00000000000000 Description of PostEvalFunc
    class PostEvalFunc : public ComFunc (Return to index)

    post-evaluate command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/postfunc.h

    Description:

    arr=posteval(arg1 [arg2 [arg3 ... [argn]]]) -- post-evaluate every fixed argument (until nil) then return array.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PostFixFunc.html0000644000076500007650000000413011324451725021146 0ustar scottscott00000000000000 Description of PostFixFunc
    class PostFixFunc : public ComFunc (Return to index)

    echo postfix output of parser.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/postfunc.h

    Description:

    postfix(arg1 [arg2 [arg3 ... [argn]]]) -- echo unevaluated postfix arguments (with [narg|nkey] after defined commands, {narg|nkey} after undefined commands (narg) after keys).

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PostorderView.html0000644000076500007650000000400111324451725021547 0ustar scottscott00000000000000 Description of PostorderView
    class PostorderView : public ExternView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/externview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PostScriptView.html0000644000076500007650000004314211324451725021711 0ustar scottscott00000000000000 Description of PostScriptView
    class PostScriptView : public PreorderView (Return to index)

    PostScript serialization

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/psview.h

    Description:

    idraw-compatible PostScript external representation for graphical components.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PostScriptViews.html0000644000076500007650000001413711324451725022076 0ustar scottscott00000000000000 Description of PostScriptViews
    class PostScriptViews : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/psview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PowFunc.html0000644000076500007650000000337211324451725020326 0ustar scottscott00000000000000 Description of PowFunc
    class PowFunc : public ComFunc (Return to index)

    power command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=pow(x y) -- returns the value of x raised to the power of y.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PPM_Helper.html0000644000076500007650000000567311324451725020706 0ustar scottscott00000000000000 Description of PPM_Helper
    class PPM_Helper : public PortableImageHelper (Return to index)

    helper class for reading PPM images.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovimport.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PreciseMoveCmd.html0000644000076500007650000000630611324451725021612 0ustar scottscott00000000000000 Description of PreciseMoveCmd
    class PreciseMoveCmd : public Command (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PrecisePageCmd.html0000644000076500007650000000651611324451725021563 0ustar scottscott00000000000000 Description of PrecisePageCmd
    class PrecisePageCmd : public Command (Return to index)

    command to set page size.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PrecisePanCmd.html0000644000076500007650000000662111324451725021422 0ustar scottscott00000000000000 Description of PrecisePanCmd
    class PrecisePanCmd : public CameraMotionCmd (Return to index)

    command for precision panning of the viewer.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcamcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PreciseRotateCmd.html0000644000076500007650000000633411324451725022143 0ustar scottscott00000000000000 Description of PreciseRotateCmd
    class PreciseRotateCmd : public Command (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PreciseScaleCmd.html0000644000076500007650000000632111324451725021730 0ustar scottscott00000000000000 Description of PreciseScaleCmd
    class PreciseScaleCmd : public Command (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PreciseZoomCmd.html0000644000076500007650000000712311324451725021626 0ustar scottscott00000000000000 Description of PreciseZoomCmd
    class PreciseZoomCmd : public CameraMotionCmd (Return to index)

    command for zooming other than by powers of 2.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcamcmds.h

    Description:

    Although this command works, it has yet to be useful because other parts of the framework constrain the resultant zoom to a power of 2 anyways.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PreorderView.html0000644000076500007650000000377411324451725021370 0ustar scottscott00000000000000 Description of PreorderView
    class PreorderView : public ExternView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/externview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PrintChooser.html0000644000076500007650000000426011324451725021361 0ustar scottscott00000000000000 Description of PrintChooser
    class PrintChooser : public OpenFileChooser (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/printchooser.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PrintChooserImpl.html0000644000076500007650000000633311324451725022206 0ustar scottscott00000000000000 Description of PrintChooserImpl
    class PrintChooserImpl : public OpenFileChooserImpl (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/printchooser.h

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/PrintCmd.html0000644000076500007650000000732611324451725020470 0ustar scottscott00000000000000 Description of PrintCmd
    class PrintCmd : public Command (Return to index)

    print command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/catcmds.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PrintDialog.html0000644000076500007650000000704611324451725021163 0ustar scottscott00000000000000 Description of PrintDialog
    class PrintDialog : public FileChooser (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/dialogs.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Printer.html0000644000076500007650000002073111324451725020366 0ustar scottscott00000000000000 Description of Printer
    class Printer : public Canvas (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/printer.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PrintFunc.html0000644000076500007650000000352611324451725020656 0ustar scottscott00000000000000 Description of PrintFunc
    class PrintFunc : public ComFunc (Return to index)

    value printing command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/iofunc.h

    Description:

    [str]=print(fmtstr val :string|:str :symbol|:sym :err) -- print value with format string [str]=print(val :string|:str :err) -- print value

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ProcessingCmd.html0000644000076500007650000001176711324451725021514 0ustar scottscott00000000000000 Description of ProcessingCmd
    class ProcessingCmd : public MacroCmd (Return to index)

    base class for image processing commands.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Description:

    The classes derived from ProcessingCmd (ScaleGrayCmd, PseudocolorCmd, LogScaleCmd, GrayRampCmd) are image processing operators useful for controlling the appearance of an image in a drawing editor or similar display. They are not necessarily intended for use in computational imaging algorithms.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PropertyData.html0000644000076500007650000000214311324451725021356 0ustar scottscott00000000000000 Description of PropertyData
    class PropertyData (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/session.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSArrowLine.html0000644000076500007650000000422411324451725021107 0ustar scottscott00000000000000 Description of PSArrowLine
    class PSArrowLine : public PSLine (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSArrowMultiLine.html0000644000076500007650000000432011324451725022117 0ustar scottscott00000000000000 Description of PSArrowMultiLine
    class PSArrowMultiLine : public PSMultiLine (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSArrowSpline.html0000644000076500007650000000425411324451725021455 0ustar scottscott00000000000000 Description of PSArrowSpline
    class PSArrowSpline : public PSSpline (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idarrow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSBrush.html0000644000076500007650000001142311324451725020267 0ustar scottscott00000000000000 Description of PSBrush
    class PSBrush : public Brush (Return to index)

    "PostScript" brush object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/pspaint.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSClosedSpline.html0000644000076500007650000000376711324451725021604 0ustar scottscott00000000000000 Description of PSClosedSpline
    class PSClosedSpline : public PSVertices (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/spline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSColor.html0000644000076500007650000000660611324451725020271 0ustar scottscott00000000000000 Description of PSColor
    class PSColor : public Color (Return to index)

    "PostScript" color object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/pspaint.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSEllipse.html0000644000076500007650000000366011324451725020605 0ustar scottscott00000000000000 Description of PSEllipse
    class PSEllipse : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/ellipse.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PseudocolorCmd.html0000644000076500007650000001001411324451725021656 0ustar scottscott00000000000000 Description of PseudocolorCmd
    class PseudocolorCmd : public ProcessingCmd (Return to index)

    command for pseudo-coloring of gray-level raster.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PseudocolorFunc.html0000644000076500007650000000503211324451725022052 0ustar scottscott00000000000000 Description of PseudocolorFunc
    class PseudocolorFunc : public RasterFunc (Return to index)

    ComFunc to pseudo-color a gray-level raster.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSFont.html0000644000076500007650000000773511324451725020125 0ustar scottscott00000000000000 Description of PSFont
    class PSFont : public Font (Return to index)

    "PostScript" font object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/pspaint.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSFont31.html0000644000076500007650000000566111324451725020265 0ustar scottscott00000000000000 Description of PSFont31
    class PSFont31 : public Font (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/psfont.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSFont__2.html0000644000076500007650000000774607374262636020522 0ustar scottscott00000000000000 Description of PSFont__2
    class PSFont__2 : public Font (Return to index)

    "PostScript" font object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/pspaint.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSIdraw.html0000644000076500007650000001010611324451725020247 0ustar scottscott00000000000000 Description of PSIdraw
    class PSIdraw : public PostScriptViews (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/idcomp.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSLine.html0000644000076500007650000000362511324451725020100 0ustar scottscott00000000000000 Description of PSLine
    class PSLine : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/line.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSLink.html0000644000076500007650000000362511324451725020106 0ustar scottscott00000000000000 Description of PSLink
    class PSLink : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/link.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSMultiLine.html0000644000076500007650000000373511324451725021115 0ustar scottscott00000000000000 Description of PSMultiLine
    class PSMultiLine : public PSVertices (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/line.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSPad.html0000644000076500007650000000361411324451725017713 0ustar scottscott00000000000000 Description of PSPad
    class PSPad : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/pad.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSPattern.html0000644000076500007650000000722311324451725020624 0ustar scottscott00000000000000 Description of PSPattern
    class PSPattern : public Pattern (Return to index)

    "PostScript" pattern object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/pspaint.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSPin.html0000644000076500007650000000361411324451725017735 0ustar scottscott00000000000000 Description of PSPin
    class PSPin : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/pin.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSPolygon.html0000644000076500007650000000372011324451725020634 0ustar scottscott00000000000000 Description of PSPolygon
    class PSPolygon : public PSVertices (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/polygon.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSRaster.html0000644000076500007650000000365311324451725020452 0ustar scottscott00000000000000 Description of PSRaster
    class PSRaster : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/rastercomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSRect.html0000644000076500007650000000362511324451725020106 0ustar scottscott00000000000000 Description of PSRect
    class PSRect : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/rect.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSSlot.html0000644000076500007650000000362511324451725020132 0ustar scottscott00000000000000 Description of PSSlot
    class PSSlot : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/slot.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSSpline.html0000644000076500007650000000370711324451725020444 0ustar scottscott00000000000000 Description of PSSpline
    class PSSpline : public PSVertices (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/spline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSStencil.html0000644000076500007650000000366411324451725020615 0ustar scottscott00000000000000 Description of PSStencil
    class PSStencil : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/stencilcomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PSText.html0000644000076500007650000000436711324451725020141 0ustar scottscott00000000000000 Description of PSText
    class PSText : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/text.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PSVertices.html0000644000076500007650000000436711324451725021001 0ustar scottscott00000000000000 Description of PSVertices
    class PSVertices : public PostScriptView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/vertices.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PtrList.html0000644000076500007650000000113511324451725020341 0ustar scottscott00000000000000 Description of PtrList
    class PtrList (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      OS/list.h

    (more documentation)

    ivtools-doc/doc/classes/PtrLocState.html0000644000076500007650000000654411324451725021155 0ustar scottscott00000000000000 Description of PtrLocState
    class PtrLocState : public NameState (Return to index)

    state variable to display pointer location in drawing coordinates.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovstates.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PullCmd.html0000644000076500007650000000430711324451725020304 0ustar scottscott00000000000000 Description of PullCmd
    class PullCmd : public FrontCmd (Return to index)

    command to pull up one level in the graphical structure

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PulldownMenu.html0000644000076500007650000000441211324451725021372 0ustar scottscott00000000000000 Description of PulldownMenu
    class PulldownMenu : public Menu (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/menu.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PullrightMenu.html0000644000076500007650000000442711324451726021547 0ustar scottscott00000000000000 Description of PullrightMenu
    class PullrightMenu : public Menu (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/menu.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/PushButton.html0000644000076500007650000000664511324451726021067 0ustar scottscott00000000000000 Description of PushButton
    class PushButton : public TextButton (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/button.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/PushCmd.html0000644000076500007650000000430511324451726020306 0ustar scottscott00000000000000 Description of PushCmd
    class PushCmd : public BackCmd (Return to index)

    command to push down one level in the graphical structure

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/QuitCmd.html0000644000076500007650000000530411324451726020311 0ustar scottscott00000000000000 Description of QuitCmd
    class QuitCmd : public Command (Return to index)

    quit command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/catcmds.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/QuitFunc.html0000644000076500007650000000333611324451726020504 0ustar scottscott00000000000000 Description of QuitFunc
    class QuitFunc : public ComFunc (Return to index)

    quit command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    quit() -- quit this interpreter.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RadioButton.html0000644000076500007650000000666211324451726021205 0ustar scottscott00000000000000 Description of RadioButton
    class RadioButton : public TextButton (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/button.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RadioEnumEditor.html0000644000076500007650000001103711324451726021775 0ustar scottscott00000000000000 Description of RadioEnumEditor
    class RadioEnumEditor : public Patch, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/enumform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RadToDegFunc.html0000644000076500007650000000341711324451726021213 0ustar scottscott00000000000000 Description of RadToDegFunc
    class RadToDegFunc : public ComFunc (Return to index)

    radians to degrees command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=radtodeg(dbl) -- convert radians to degrees

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RandFunc.html0000644000076500007650000000410311324451726020437 0ustar scottscott00000000000000 Description of RandFunc
    class RandFunc : public ComFunc (Return to index)

    random-number command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/randfunc.h

    Description:

    val=rand([minval,maxval]) -- return random number between 0 and 1 or minval,maxval.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Raster.html0000644000076500007650000001530011324451726020200 0ustar scottscott00000000000000 Description of Raster
    class Raster : public Resource (Return to index)

    raster data object.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/raster.h

    Description:

    in reference manual

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RasterComp.html0000644000076500007650000000714011324451726021022 0ustar scottscott00000000000000 Description of RasterComp
    class RasterComp : public GraphicComp (Return to index)

    raster component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/rastercomp.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RasterFunc.html0000644000076500007650000000415211324451726021017 0ustar scottscott00000000000000 Description of RasterFunc
    class RasterFunc : public ComFunc (Return to index)

    ComFunc base class to hold a raster component.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RasterOvComp.html0000644000076500007650000002443711324451726021337 0ustar scottscott00000000000000 Description of RasterOvComp
    class RasterOvComp : public OverlayComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovraster.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/RasterOvView.html0000644000076500007650000000625011324451726021344 0ustar scottscott00000000000000 Description of RasterOvView
    class RasterOvView : public OverlayView (Return to index)

    graphical view of RasterOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovraster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RasterPS.html0000644000076500007650000000373711324451726020456 0ustar scottscott00000000000000 Description of RasterPS
    class RasterPS : public OverlayPS (Return to index)

    "PostScript" view of RasterOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovraster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RasterRect.html0000644000076500007650000001010311324451726021012 0ustar scottscott00000000000000 Description of RasterRect
    class RasterRect : public Graphic (Return to index)

    raster graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/rasterrect.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RasterRep.html0000644000076500007650000001021711324451726020651 0ustar scottscott00000000000000 Description of RasterRep
    class RasterRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xraster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RasterScript.html0000644000076500007650000002206311324451726021371 0ustar scottscott00000000000000 Description of RasterScript
    class RasterScript : public OverlayScript (Return to index)

    serialized view of RasterOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovraster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RasterTerp.html0000644000076500007650000000514011324451726021034 0ustar scottscott00000000000000 Description of RasterTerp
    class RasterTerp : public ComTerpServ (Return to index)

    ComTerp specialized for image processing operations.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Description:

    command interpreter that takes a pointer to an editor, and uses it execute interpreted commands on a raster component.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RasterView.html0000644000076500007650000000465211324451726021043 0ustar scottscott00000000000000 Description of RasterView
    class RasterView : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/rastercomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ReadOnlyFunc.html0000644000076500007650000000356611324451726021304 0ustar scottscott00000000000000 Description of ReadOnlyFunc
    class ReadOnlyFunc : public UnidrawFunc (Return to index)

    command to make a graphic read-only in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    compview=readonly(compview :clear) -- set or clear the readonly attribute of a graphic component

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Rect.html0000644000076500007650000001113511324451726017637 0ustar scottscott00000000000000 Description of Rect
    class Rect : public Graphic (Return to index)

    rectangle graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/polygons.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Rectangle31.html0000644000076500007650000000411411324451726021011 0ustar scottscott00000000000000 Description of Rectangle31
    class Rectangle31 : public Graphic31 (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RectComp.html0000644000076500007650000000536411324451726020465 0ustar scottscott00000000000000 Description of RectComp
    class RectComp : public GraphicComp (Return to index)

    rectangle component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/rect.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RectOvComp.html0000644000076500007650000001103111324451726020756 0ustar scottscott00000000000000 Description of RectOvComp
    class RectOvComp : public OverlayComp (Return to index)

    clone of RectComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovrect.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/RectOvView.html0000644000076500007650000001143111324451726020776 0ustar scottscott00000000000000 Description of RectOvView
    class RectOvView : public OverlayView (Return to index)

    graphical view of RectOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovrect.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RectPS.html0000644000076500007650000000403311324451726020101 0ustar scottscott00000000000000 Description of RectPS
    class RectPS : public OverlayPS (Return to index)

    "PostScript" view of RectOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovrect.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RectScript.html0000644000076500007650000000477411324451726021037 0ustar scottscott00000000000000 Description of RectScript
    class RectScript : public OverlayScript (Return to index)

    serialized view of RectOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovrect.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RectView.html0000644000076500007650000001050511324451726020472 0ustar scottscott00000000000000 Description of RectView
    class RectView : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/rect.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RedoCmd.html0000644000076500007650000000530111324451726020255 0ustar scottscott00000000000000 Description of RedoCmd
    class RedoCmd : public Command (Return to index)

    redo command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RedToFitCmd.html0000644000076500007650000000535611324451726021056 0ustar scottscott00000000000000 Description of RedToFitCmd
    class RedToFitCmd : public Command (Return to index)

    reduce-to-fit command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/viewcmds.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Reducer.html0000644000076500007650000000324611324451726020337 0ustar scottscott00000000000000 Description of Reducer
    class Reducer : public Zoomer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/adjuster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Regexp.html0000644000076500007650000000563311324451726020202 0ustar scottscott00000000000000 Description of Regexp
    class Regexp (Return to index)

    regular expression searching

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/regexp.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RemoteFunc.html0000644000076500007650000000350511324451726021013 0ustar scottscott00000000000000 Description of RemoteFunc
    class RemoteFunc : public ComFunc (Return to index)

    remote execution command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    remote(hoststr portnum cmdstr :nowait) -- remotely evaluate command string then locally evaluate result string.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RepeatFunc.html0000644000076500007650000000321011324451726020771 0ustar scottscott00000000000000 Description of RepeatFunc
    class RepeatFunc : public StrmFunc (Return to index)

    ** (repeat) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ReplaceCmd.html0000644000076500007650000000604011324451726020740 0ustar scottscott00000000000000 Description of ReplaceCmd
    class ReplaceCmd : public MacroCmd (Return to index)

    replace command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ReplaceRasterCmd.html0000644000076500007650000001153711324451726022130 0ustar scottscott00000000000000 Description of ReplaceRasterCmd
    class ReplaceRasterCmd : public Command (Return to index)

    command to replace raster in a component.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/rastercmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ReqErr.html0000644000076500007650000000564211324451726020150 0ustar scottscott00000000000000 Description of ReqErr
    class ReqErr (Return to index)

    Handling errors from window server.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/reqerr.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Requirement.html0000644000076500007650000001064611324451726021250 0ustar scottscott00000000000000 Description of Requirement
    class Requirement (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/geometry.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Requisition.html0000644000076500007650000001124011324451726021252 0ustar scottscott00000000000000 Description of Requisition
    class Requisition (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/geometry.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ReshapeTool.html0000644000076500007650000000544211324451726021173 0ustar scottscott00000000000000 Description of ReshapeTool
    class ReshapeTool : public Tool (Return to index)

    reshape tool

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Tools/reshape.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Resource.html0000644000076500007650000001026711324451726020536 0ustar scottscott00000000000000 Description of Resource
    class Resource (Return to index)

    shared reference-counted objects.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/resource.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RevertCmd.html0000644000076500007650000000532411324451726020640 0ustar scottscott00000000000000 Description of RevertCmd
    class RevertCmd : public Command (Return to index)

    revert command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/catcmds.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RightMover.html0000644000076500007650000000347311324451726021036 0ustar scottscott00000000000000 Description of RightMover
    class RightMover : public Mover (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/adjuster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RightShiftFunc.html0000644000076500007650000000323411324451726021632 0ustar scottscott00000000000000 Description of RightShiftFunc
    class RightShiftFunc : public NumFunc (Return to index)

    >> (right-shift) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/bitfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RotateCmd.html0000644000076500007650000000650311324451726020627 0ustar scottscott00000000000000 Description of RotateCmd
    class RotateCmd : public Command (Return to index)

    rotate command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/transforms.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RotateDialog.html0000644000076500007650000000531211324451726021320 0ustar scottscott00000000000000 Description of RotateDialog
    class RotateDialog : public BasicDialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/iddialogs.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RotateFunc.html0000644000076500007650000000346411324451726021022 0ustar scottscott00000000000000 Description of RotateFunc
    class RotateFunc : public UnidrawFunc (Return to index)

    command to rotate current selection in comdraw

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    rotate(degflt) -- rotate current selection

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RotateTool.html0000644000076500007650000000543111324451726021040 0ustar scottscott00000000000000 Description of RotateTool
    class RotateTool : public Tool (Return to index)

    rotate tool

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Tools/rotate.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RotatingLine.html0000644000076500007650000000742611324451726021351 0ustar scottscott00000000000000 Description of RotatingLine
    class RotatingLine : public RubberLine (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RotatingLineList.html0000644000076500007650000001171211324451726022176 0ustar scottscott00000000000000 Description of RotatingLineList
    class RotatingLineList : public RubberPointList (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RotatingRect.html0000644000076500007650000001130411324451726021345 0ustar scottscott00000000000000 Description of RotatingRect
    class RotatingRect : public Rubberband (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubrect.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RoundFunc.html0000644000076500007650000000336311324451726020651 0ustar scottscott00000000000000 Description of RoundFunc
    class RoundFunc : public NumFunc (Return to index)

    ceiling command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    num=round(num) -- return closest integer value

    Public:



    (more documentation)

    ivtools-doc/doc/classes/rpcbuf.html0000644000076500007650000002562311324451727020233 0ustar scottscott00000000000000 Description of rpcbuf
    class rpcbuf : public streambuf (Return to index)

    streambuf specialized for sending and receiving RPC requests

    Type:
      Instantiable

    Base Classes:
      public streambuf

    Derived Classes

    Include file:

      Dispatch/rpcbuf.h

    Description:

    Specialize streambuf to sending and receiving RPC requests to and from remote machines.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RpcHdr.html0000644000076500007650000000734411324451726020133 0ustar scottscott00000000000000 Description of RpcHdr
    class RpcHdr (Return to index)

    header for remote procedure calls

    Type:
      Instantiable

    Derived Classes

    Include file:

      Dispatch/rpchdr.h

    Description:

    Insert or extract this header to send or receive a RPC request.

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/RpcHdr::NONAME.html0000644000076500007650000000234107374262636021217 0ustar scottscott00000000000000 Description of RpcHdr::NONAME
    union RpcHdr::NONAME (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Dispatch/rpchdr.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RpcHdr___NONAME.html0000644000076500007650000000234111324451726021456 0ustar scottscott00000000000000 Description of RpcHdr::NONAME
    union RpcHdr::NONAME (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Dispatch/rpchdr.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RpcPeer.html0000644000076500007650000001250211324451726020301 0ustar scottscott00000000000000 Description of RpcPeer
    class RpcPeer : public IOHandler (Return to index)

    support bi-directional RPC between two services

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      Dispatch/rpcpeer.h

    Description:

    Support bi-directional RPC between two peers. Derived classes create both a reader and a writer so each peer can send RPC requests to its opposite over the same connection.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RpcReader.html0000644000076500007650000001200511324451726020606 0ustar scottscott00000000000000 Description of RpcReader
    class RpcReader : public IOHandler (Return to index)

    read RPC requests from a client

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      Dispatch/rpcreader.h

    Description:

    Read RPC requests from a client. Derived classes initialize the function array with addresses of static member functions to unmarshall RPC requests and implement the virtual function called when the client closes the connection.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RpcRegistry.html0000644000076500007650000000346211324451726021223 0ustar scottscott00000000000000 Description of RpcRegistry
    class RpcRegistry (Return to index)

    name space for finding RPC services

    Type:
      Instantiable

    Derived Classes

    Include file:

      Dispatch/rpcregistry.h

    Description:

    Store or retrieve a RPC service's hostname and port number so that clients can contact the RPC service.

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RpcService.html0000644000076500007650000001067511324451726021017 0ustar scottscott00000000000000 Description of RpcService
    class RpcService : public IOHandler (Return to index)

    support RPC between a service and its clients

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      Dispatch/rpcservice.h

    Description:

    Support communication between a RPC service and its clients. Derived classes create readers to read RPC requests from connections with clients.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/rpcstream.html0000644000076500007650000001113611324451727020744 0ustar scottscott00000000000000 Description of rpcstream
    class rpcstream : public #if !defined(_IO_NEW_STREAMS) virtual #endif iostreamb (Return to index)

    iostreamb specialized to RPC requests

    Type:
      Instantiable

    Base Classes:
      public #if !defined(_IO_NEW_STREAMS) virtual #endif iostreamb

    Derived Classes

    Include file:

      Dispatch/rpcstream.h

    Description:

    Modify iostreamb to store a rpcbuf and provide operations on the rpcbuf, therefore specializing iostreamb to RPC requests. man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RpcWriter.html0000644000076500007650000000771511324451726020674 0ustar scottscott00000000000000 Description of RpcWriter
    class RpcWriter (Return to index)

    write RPC requests to a server

    Type:
      Instantiable

    Derived Classes

    Include file:

      Dispatch/rpcwriter.h

    Description:

    Write RPC requests to a server. Derived classes should add member functions corresponding to the RPC service's protocol.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RubberAxis.html0000644000076500007650000000452311324451726021013 0ustar scottscott00000000000000 Description of RubberAxis
    class RubberAxis : public RubberLine (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubline.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Rubberband.html0000644000076500007650000001577011324451726021021 0ustar scottscott00000000000000 Description of Rubberband
    class Rubberband : public Resource (Return to index)

    rubberbanding graphical objects (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubband.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RubberCircle.html0000644000076500007650000000541611324451726021312 0ustar scottscott00000000000000 Description of RubberCircle
    class RubberCircle : public RubberEllipse (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RubberClosedSpline.html0000644000076500007650000000427411324451726022476 0ustar scottscott00000000000000 Description of RubberClosedSpline
    class RubberClosedSpline : public RubberVertex (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RubberEllipse.html0000644000076500007650000001014011324451726021474 0ustar scottscott00000000000000 Description of RubberEllipse
    class RubberEllipse : public Rubberband (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RubberGroup.html0000644000076500007650000001430311324451726021200 0ustar scottscott00000000000000 Description of RubberGroup
    class RubberGroup : public Rubberband (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubgroup.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RubberHandles.html0000644000076500007650000000535411324451726021470 0ustar scottscott00000000000000 Description of RubberHandles
    class RubberHandles : public RubberVertex (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RubberLine.html0000644000076500007650000000675611324451726021010 0ustar scottscott00000000000000 Description of RubberLine
    class RubberLine : public Rubberband (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RubberPointList.html0000644000076500007650000000630611324451726022035 0ustar scottscott00000000000000 Description of RubberPointList
    class RubberPointList : public Rubberband (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RubberRect.html0000644000076500007650000000675611324451726021016 0ustar scottscott00000000000000 Description of RubberRect
    class RubberRect : public Rubberband (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubrect.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/RubberSpline.html0000644000076500007650000000423611324451726021342 0ustar scottscott00000000000000 Description of RubberSpline
    class RubberSpline : public RubberVertex (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RubberSquare.html0000644000076500007650000000453511324451726021352 0ustar scottscott00000000000000 Description of RubberSquare
    class RubberSquare : public RubberRect (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubrect.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RubberVertex.html0000644000076500007650000000665011324451726021367 0ustar scottscott00000000000000 Description of RubberVertex
    class RubberVertex : public RubberPointList (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Rule.html0000644000076500007650000000475611324451726017664 0ustar scottscott00000000000000 Description of Rule
    class Rule : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/rule.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/RunFunc.html0000644000076500007650000000334211324451726020323 0ustar scottscott00000000000000 Description of RunFunc
    class RunFunc : public ComFunc (Return to index)

    run command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    run(filename) -- run commands from a file.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/S_Circle.html0000644000076500007650000000316011324451726020424 0ustar scottscott00000000000000 Description of S_Circle
    class S_Circle : public S_Ellipse (Return to index)

    stroked circle graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/ellipses.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/S_ClosedBSpline.html0000644000076500007650000001033611324451726021714 0ustar scottscott00000000000000 Description of S_ClosedBSpline
    class S_ClosedBSpline : public ClosedBSpline (Return to index)

    stroked closed b-spline graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/splines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/S_Ellipse.html0000644000076500007650000001025411324451726020622 0ustar scottscott00000000000000 Description of S_Ellipse
    class S_Ellipse : public Ellipse (Return to index)

    stroked ellipse graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/ellipses.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/S_MultiLine.html0000644000076500007650000001025211324451726021125 0ustar scottscott00000000000000 Description of S_MultiLine
    class S_MultiLine : public MultiLine (Return to index)

    stroked multi-line graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/lines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/S_OpenBSpline.html0000644000076500007650000001030611324451726021401 0ustar scottscott00000000000000 Description of S_OpenBSpline
    class S_OpenBSpline : public OpenBSpline (Return to index)

    stroked open b-spline graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/splines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/S_Polygon.html0000644000076500007650000001022211324451726020647 0ustar scottscott00000000000000 Description of S_Polygon
    class S_Polygon : public Polygon (Return to index)

    stroked polygon graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/polygons.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/S_Rect.html0000644000076500007650000001022011324451726020113 0ustar scottscott00000000000000 Description of S_Rect
    class S_Rect : public Rect (Return to index)

    stroked rectangle graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/polygons.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SaveAsChooser.html0000644000076500007650000000710611324451726021452 0ustar scottscott00000000000000 Description of SaveAsChooser
    class SaveAsChooser : public OpenFileChooser (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/saveaschooser.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SaveAsChooserImpl.html0000644000076500007650000000751211324451726022275 0ustar scottscott00000000000000 Description of SaveAsChooserImpl
    class SaveAsChooserImpl : public OpenFileChooserImpl (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/saveaschooser.h

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/SaveCompAsCmd.html0000644000076500007650000000673311324451726021377 0ustar scottscott00000000000000 Description of SaveCompAsCmd
    class SaveCompAsCmd : public Command (Return to index)

    save-as component command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/catcmds.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SaveCompCmd.html0000644000076500007650000000535211324451726021107 0ustar scottscott00000000000000 Description of SaveCompCmd
    class SaveCompCmd : public Command (Return to index)

    save component command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/catcmds.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SaveFileFunc.html0000644000076500007650000000421211324451726021252 0ustar scottscott00000000000000 Description of SaveFileFunc
    class SaveFileFunc : public UnidrawFunc (Return to index)

    command to save document (to pathname)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    error=save([path]) -- save editor document (to pathname).

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ScaleCmd.html0000644000076500007650000000773511324451726020430 0ustar scottscott00000000000000 Description of ScaleCmd
    class ScaleCmd : public Command (Return to index)

    scale command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/transforms.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ScaleDialog.html0000644000076500007650000000534611324451726021120 0ustar scottscott00000000000000 Description of ScaleDialog
    class ScaleDialog : public BasicDialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      UniIdraw/iddialogs.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ScaleFunc.html0000644000076500007650000000345711324451726020615 0ustar scottscott00000000000000 Description of ScaleFunc
    class ScaleFunc : public UnidrawFunc (Return to index)

    command to scale current selection in comdraw

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    scale(xflt yflt) -- scale current selection

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ScaleGrayCmd.html0000644000076500007650000000776111324451726021252 0ustar scottscott00000000000000 Description of ScaleGrayCmd
    class ScaleGrayCmd : public ProcessingCmd (Return to index)

    command for linear-scaling of gray-level raster.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ScaleGrayFunc.html0000644000076500007650000000501611324451726021431 0ustar scottscott00000000000000 Description of ScaleGrayFunc
    class ScaleGrayFunc : public RasterFunc (Return to index)

    ComFunc to linearly scale a gray-level raster.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovipcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ScaleTool.html0000644000076500007650000000542111324451726020630 0ustar scottscott00000000000000 Description of ScaleTool
    class ScaleTool : public Tool (Return to index)

    scale tool

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Tools/scale.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ScalingLine.html0000644000076500007650000000624311324451726021136 0ustar scottscott00000000000000 Description of ScalingLine
    class ScalingLine : public RubberLine (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ScalingLineList.html0000644000076500007650000001122011324451726021761 0ustar scottscott00000000000000 Description of ScalingLineList
    class ScalingLineList : public RubberPointList (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ScalingRect.html0000644000076500007650000000624311324451726021144 0ustar scottscott00000000000000 Description of ScalingRect
    class ScalingRect : public RubberRect (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubrect.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Scanner.html0000644000076500007650000000601111324451726020330 0ustar scottscott00000000000000 Description of Scanner
    class Scanner : public LexScan (Return to index)

    C++ wrapper for ComUtil scanner capability.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/scanner.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Scene.html0000644000076500007650000001751711324451726020011 0ustar scottscott00000000000000 Description of Scene
    class Scene : public Interactor (Return to index)

    basic composite object for interaction.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/scene.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ScreenToDrawingFunc.html0000644000076500007650000000357611324451726022626 0ustar scottscott00000000000000 Description of ScreenToDrawingFunc
    class ScreenToDrawingFunc : public UnidrawFunc (Return to index)

    command to convert from screen to drawing coordinates

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    dx,dy=stod(sx,sy) -- convert from screen to drawing coordinates

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ScribblePointerCmd.html0000644000076500007650000000550311324451726022456 0ustar scottscott00000000000000 Description of ScribblePointerCmd
    class ScribblePointerCmd : public Command (Return to index)

    command to enable/disable continuous mode drawing with pointer (mouse).

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ScribbleVertexManip.html0000644000076500007650000000422511324451726022654 0ustar scottscott00000000000000 Description of ScribbleVertexManip
    class ScribbleVertexManip : public VertexManip (Return to index)

    continuous vertex manipulator

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/manips.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Scrollable.html0000644000076500007650000002250611324451726021030 0ustar scottscott00000000000000 Description of Scrollable
    class Scrollable : public Patch, public Adjustable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/scrollable.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ScrollBar.html0000644000076500007650000000473011324451726020630 0ustar scottscott00000000000000 Description of ScrollBar
    class ScrollBar : public MonoScene (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/scrollbar.h

    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ScrollBox.html0000644000076500007650000000434011324451726020651 0ustar scottscott00000000000000 Description of ScrollBox
    class ScrollBox : public PolyGlyph, public Adjustable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/scrbox.h

    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Scroller.html0000644000076500007650000001037411324451726020533 0ustar scottscott00000000000000 Description of Scroller
    class Scroller : public Interactor (Return to index)

    general scrolling interface (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/scroller.h

    Description:

    man page

    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SelectFunc.html0000644000076500007650000000356711324451726021007 0ustar scottscott00000000000000 Description of SelectFunc
    class SelectFunc : public UnidrawFunc (Return to index)

    command to select graphics in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    select([compview ...] :all :clear) -- make these graphics the current selection, default returns current selection.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Selection.html0000644000076500007650000002266511324451726020701 0ustar scottscott00000000000000 Description of Selection
    class Selection (Return to index)

    manages a set of selected components.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/selection.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SelectionHandler.html0000644000076500007650000000337311324451726022172 0ustar scottscott00000000000000 Description of SelectionHandler
    class SelectionHandler : public Resource (Return to index)

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      InterViews/selection.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SelectionManager.html0000644000076500007650000000754211324451726022171 0ustar scottscott00000000000000 Description of SelectionManager
    class SelectionManager : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/selection.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SelectionManagerRep.html0000644000076500007650000000771511324451726022642 0ustar scottscott00000000000000 Description of SelectionManagerRep
    class SelectionManagerRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xselection.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SelectTool.html0000644000076500007650000000630011324451726021015 0ustar scottscott00000000000000 Description of SelectTool
    class SelectTool : public Tool (Return to index)

    select tool

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Tools/select.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SensitizeViewsCmd.html0000644000076500007650000000574711324451726022375 0ustar scottscott00000000000000 Description of SensitizeViewsCmd
    class SensitizeViewsCmd : public Command (Return to index)

    command to sensitize a graphic view in all other viewers.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovshowhide.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Sensor.html0000644000076500007650000001653611324451726020225 0ustar scottscott00000000000000 Description of Sensor
    class Sensor : virtual public Resource (Return to index)

    describe input events of interest (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/sensor.h

    Description:

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/SeqFunc.html0000644000076500007650000000354711324451726020316 0ustar scottscott00000000000000 Description of SeqFunc
    class SeqFunc : public ComFunc (Return to index)

    ; (sequence) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/postfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Session.html0000644000076500007650000001566611324451726020402 0ustar scottscott00000000000000 Description of Session
    class Session (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/session.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SessionIdFunc.html0000644000076500007650000000361711324451726021464 0ustar scottscott00000000000000 Description of SessionIdFunc
    class SessionIdFunc : public UnidrawFunc (Return to index)

    command to reserve unique session id

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      DrawServ/drawfunc.h

    Description:

    sid([sid osid :pid pid :user namestr :host hoststr :hostid hostid :remap] | :all) -- command to manage session id's

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SetAttrByExprCmd.html0000644000076500007650000001241211324451726022105 0ustar scottscott00000000000000 Description of SetAttrByExprCmd
    class SetAttrByExprCmd : public Command (Return to index)

    command to set attributes on a component by evaluating an expression.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/setattrbyexpr.h

    Description:

    This command checks for a non-empty selection in the current editor, then pops up a dialog box for entering attribute expressions to evaluate. symbols on the right hand side of an assigment operator are used to look up and return values from the property list (AttributeList) of a component. symbols on the left-hand side of an assignment operator are used to create or modify an entry in the same component property list.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SetAttrFunc.html0000644000076500007650000000356411324451726021153 0ustar scottscott00000000000000 Description of SetAttrFunc
    class SetAttrFunc : public UnidrawFunc (Return to index)

    command to set attributes on a graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    compview=setattr(compview [:keyword value [:keyword value [...]]]) -- set attributes of a graphic component.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SF_Circle.html0000644000076500007650000000320011324451726020525 0ustar scottscott00000000000000 Description of SF_Circle
    class SF_Circle : public SF_Ellipse (Return to index)

    stroked-filled circle graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/ellipses.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SF_ClosedBSpline.html0000644000076500007650000001201611324451726022017 0ustar scottscott00000000000000 Description of SF_ClosedBSpline
    class SF_ClosedBSpline : public ClosedBSpline (Return to index)

    stroked-filled closed b-spline graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/splines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SF_Ellipse.html0000644000076500007650000001231211324451726020725 0ustar scottscott00000000000000 Description of SF_Ellipse
    class SF_Ellipse : public Ellipse (Return to index)

    stroke-filled ellipse graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/ellipses.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SF_MultiLine.html0000644000076500007650000001230411324451726021233 0ustar scottscott00000000000000 Description of SF_MultiLine
    class SF_MultiLine : public MultiLine (Return to index)

    stroked-filled multi-line graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/lines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SF_OpenBSpline.html0000644000076500007650000001176611324451726021522 0ustar scottscott00000000000000 Description of SF_OpenBSpline
    class SF_OpenBSpline : public OpenBSpline (Return to index)

    stroked-filled open b-spline graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/splines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SF_Polygon.html0000644000076500007650000001226111324451726020762 0ustar scottscott00000000000000 Description of SF_Polygon
    class SF_Polygon : public Polygon (Return to index)

    stroked-filled polygon graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/polygons.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SF_Rect.html0000644000076500007650000001225711324451726020235 0ustar scottscott00000000000000 Description of SF_Rect
    class SF_Rect : public Rect (Return to index)

    stroked-filled rectangle graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/polygons.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SFH_ClosedBSpline.html0000644000076500007650000000534111324451726022132 0ustar scottscott00000000000000 Description of SFH_ClosedBSpline
    class SFH_ClosedBSpline : public SF_ClosedBSpline (Return to index)

    stroked-filled closed b-spline graphic with control-point hit detection

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/splines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SFH_OpenBSpline.html0000644000076500007650000000531611324451726021624 0ustar scottscott00000000000000 Description of SFH_OpenBSpline
    class SFH_OpenBSpline : public SF_OpenBSpline (Return to index)

    stroked-filled open b-spline graphic with control-point hit detection.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/splines.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Shadow.html0000644000076500007650000000661511324451726020176 0ustar scottscott00000000000000 Description of Shadow
    class Shadow : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/shadow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ShadowFrame.html0000644000076500007650000000437311324451726021150 0ustar scottscott00000000000000 Description of ShadowFrame
    class ShadowFrame : public Frame (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/frame.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Shape.html0000644000076500007650000000747411324451726020015 0ustar scottscott00000000000000 Description of Shape
    class Shape (Return to index)

    for defining "infinite" stretchability or shrinkability (iv-2.6)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-2_6/InterViews/shape.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ShellFunc.html0000644000076500007650000000336611324451726020634 0ustar scottscott00000000000000 Description of ShellFunc
    class ShellFunc : public ComFunc (Return to index)

    shell escape command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    shell(cmdstr) -- evaluate command in shell.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ShortFunc.html0000644000076500007650000000340511324451726020656 0ustar scottscott00000000000000 Description of ShortFunc
    class ShortFunc : public ComFunc (Return to index)

    short integer conversion command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Description:

    s=short(num) -- convert any numeric to a short.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ShowFrame.html0000644000076500007650000000673111324451726020643 0ustar scottscott00000000000000 Description of ShowFrame
    class ShowFrame : public Frame (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/frame.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ShowFramesFunc.html0000644000076500007650000000354011324451726021635 0ustar scottscott00000000000000 Description of ShowFramesFunc
    class ShowFramesFunc : public UnidrawFunc (Return to index)

    interpreter command to show a set of frames at once

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framefunc.h

    Description:

    showframes(fnum[,fnum[...,fnum]]) -- show list of frames

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ShowOtherFrameCmd.html0000644000076500007650000000737711324451726022300 0ustar scottscott00000000000000 Description of ShowOtherFrameCmd
    class ShowOtherFrameCmd : public Command (Return to index)

    command to enable/disable display of previous frame

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      FrameUnidraw/framecmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SimpleCompositor.html0000644000076500007650000000411611324451726022253 0ustar scottscott00000000000000 Description of SimpleCompositor
    class SimpleCompositor : public Compositor (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/simplecomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SinFunc.html0000644000076500007650000000334511324451726020313 0ustar scottscott00000000000000 Description of SinFunc
    class SinFunc : public ComFunc (Return to index)

    sine command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=sin(x) -- returns the sine of x radians.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SlctAllCmd.html0000644000076500007650000000533411324451726020730 0ustar scottscott00000000000000 Description of SlctAllCmd
    class SlctAllCmd : public Command (Return to index)

    select-all command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SlctByAttrCmd.html0000644000076500007650000001167411324451726021431 0ustar scottscott00000000000000 Description of SlctByAttrCmd
    class SlctByAttrCmd : public Command (Return to index)

    command to select components by evaluating an expression.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/slctbyattr.h

    Description:

    This command pops up a dialog box for entering attribute expressions to evaluate on all the components in an editor. unknown symbols are replaced with the corresponding AttributeValue on the AttributeList associated with the component. expressions that evaluate to non-zero cause that component to be added to the current selection of the drawing editor.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Slider.html0000644000076500007650000000704411324451726020170 0ustar scottscott00000000000000 Description of Slider
    class Slider : public Interactor (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/panner.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Slider__2.html0000644000076500007650000002176311324451726020554 0ustar scottscott00000000000000 Description of Slider__2
    class Slider__2 : public ActiveHandler, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/slider.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SlidingEllipse.html0000644000076500007650000000677111324451726021663 0ustar scottscott00000000000000 Description of SlidingEllipse
    class SlidingEllipse : public RubberEllipse (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SlidingLine.html0000644000076500007650000000562311324451726021150 0ustar scottscott00000000000000 Description of SlidingLine
    class SlidingLine : public RubberLine (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SlidingLineList.html0000644000076500007650000000435411324451726022004 0ustar scottscott00000000000000 Description of SlidingLineList
    class SlidingLineList : public SlidingPointList (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SlidingPin.html0000644000076500007650000000411211324451726020777 0ustar scottscott00000000000000 Description of SlidingPin
    class SlidingPin : public SlidingEllipse (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/pin.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SlidingPointList.html0000644000076500007650000000730611324451726022206 0ustar scottscott00000000000000 Description of SlidingPointList
    class SlidingPointList : public RubberPointList (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubcurve.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SlidingRect.html0000644000076500007650000000562311324451726021156 0ustar scottscott00000000000000 Description of SlidingRect
    class SlidingRect : public RubberRect (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubrect.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SlotComp.html0000644000076500007650000001023611324451726020503 0ustar scottscott00000000000000 Description of SlotComp
    class SlotComp : public Connector (Return to index)

    slot component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/slot.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SlotGraphic.html0000644000076500007650000001210411324451726021156 0ustar scottscott00000000000000 Description of SlotGraphic
    class SlotGraphic : public Graphic (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/slot.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/SlotView.html0000644000076500007650000001356311324451726020525 0ustar scottscott00000000000000 Description of SlotView
    class SlotView : public ConnectorView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/slot.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SMFKit.html0000644000076500007650000002506711324451726020050 0ustar scottscott00000000000000 Description of SMFKit
    class SMFKit : public WidgetKit (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/smf_kit.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/smindex.html0000644000076500007650000024742711324451727020431 0ustar scottscott00000000000000Example Class Index ACE_IO_Handler
    ACosFunc
    ALIterator
    AList
    ASinFunc
    ATan2Func
    ATanFunc
    AboutCmd
    AbsFunc
    AcceptingObservable
    AceDispatcher
    AckBackHandler
    AcknowledgeBoxFunc
    AcknowledgeDialog
    Action
    ActiveHandler
    AddAssignFunc
    AddFunc
    AddToolButtonFunc
    Adjustable
    Adjuster
    Aggregate
    Align
    AlignCmd
    AlignToGridCmd
    AlistLeakFunc
    Allocation
    AllocationInfo
    AllocationTable
    Allotment
    AlphaTransFunc
    AlphaTransparentRasterCmd
    AndFunc
    AnnotateDialog
    AnnotateTool
    ApplicationWindow
    ArrayCompositor
    ArrowCmd
    ArrowLine
    ArrowLineComp
    ArrowLineOvComp
    ArrowLineOvView
    ArrowLinePS
    ArrowLineScript
    ArrowLineView
    ArrowMultiLine
    ArrowMultiLineComp
    ArrowMultiLineOvComp
    ArrowMultiLineOvView
    ArrowMultiLinePS
    ArrowMultiLineScript
    ArrowMultiLineView
    ArrowOpenBSpline
    ArrowSplineComp
    ArrowSplineOvComp
    ArrowSplineOvView
    ArrowSplinePS
    ArrowSplineScript
    ArrowSplineView
    ArrowSubclassName
    ArrowVar
    ArrowVarView
    Arrowhead
    AssignFunc
    AttrDialog
    AttrDialogImpl
    AttrListFunc
    Attribute
    AttributeDialog
    AttributeList
    AttributeListEditor
    AttributeTool
    AttributeValue
    AttrvLeakFunc
    AutoNewFrameCmd
    AutoNewFrameFunc
    BackCmd
    BackQuoteFunc
    Background
    Banner
    BarPlotFunc
    BasicDialog
    Bevel
    BevelFrame
    BitAndFunc
    BitNotFunc
    BitOrFunc
    BitXorFunc
    Bitmap
    BitmapRep
    BooleanObserver
    Border
    BorderFrame
    Border__2
    BothSetAttrFunc
    BoundedValue
    BoundedValueEditor
    BoundedValueObserver
    BoundedValueTable
    BoundedValueTableEditor
    Box
    BoxObj
    Box__2
    Browser
    Brush
    BrushCmd
    BrushFunc
    BrushRep
    BrushVar
    BrushVarView
    Button
    ButtonState
    Button__2
    CGlue
    CSolver
    CSolverState
    CameraMotionCmd
    Canvas
    CanvasDamage
    CanvasRep
    Catalog
    CeilFunc
    CenterCmd
    CenterFunc
    CenterLayout
    ChainViewerCmd
    ChainViewersCmd
    ChangeIdFunc
    CharFieldEditor
    CharFunc
    Character
    CheckBooleanEditor
    CheckBox
    ChoiceItem
    Circle31
    ClassSymbolFunc
    ClipPolyAAndBCmd
    ClipPolyAMinusBCmd
    ClipPolyBMinusACmd
    ClipPolyCmd
    ClipPolyTool
    ClipRectCmd
    ClipRectTool
    Clipboard
    CloseEditorCmd
    ClosedBSpline
    ClosedSplineComp
    ClosedSplineOvComp
    ClosedSplineOvView
    ClosedSplinePS
    ClosedSplineScript
    ClosedSplineView
    Closed_BSpline31
    Color
    ColorCmd
    ColorData
    ColorFunc
    ColorRep
    ColorRgbFunc
    ColorVar
    ComEditor
    ComFunc
    ComFuncState
    ComTE_View
    ComTerp
    ComTerpIOHandler
    ComTerpModule
    ComTerpServ
    ComTerpState
    ComTextEditor
    ComValue
    Command
    CommandControl
    CommandDoer
    CommandInfo
    CommandInteractor
    CommandLeakFunc
    CommandPusher
    CompLeakFunc
    CompNameVar
    CompNameVarView
    CompletionEditor
    Component
    ComponentView
    Composition
    Compositor
    ComterpHandler
    ComterpHandler__2
    ComterpPauseFunc
    ComterpStackHeightFunc
    ComterpStepFunc
    ComterpTraceFunc
    ConcatFunc
    ConcatNextFunc
    CondFunc
    ConfirmBoxFunc
    ConfirmDialog
    ConnectCmd
    ConnectManip
    ConnectTool
    Connector
    ConnectorView
    Control
    ControlInfo
    ControlState
    ConvexHullCmd
    ConvexHullTool
    CoordinateSpace
    CopyCmd
    CopyMoveFrameCmd
    CopyMoveGraphFrameCmd
    CopyString
    CosFunc
    CreateClosedSplineFunc
    CreateEllipseFunc
    CreateFrameCmd
    CreateFrameFunc
    CreateGraphicFunc
    CreateLineFunc
    CreateMoveFrameCmd
    CreateMultiLineFunc
    CreateOpenSplineFunc
    CreatePolygonFunc
    CreateRasterFunc
    CreateRectFunc
    CreateTextFunc
    Creator
    CtoiFunc
    Cursor
    CursorRep
    CursorRepBitmap
    CursorRepData
    CursorRepFont
    CursorRepXFont
    CutCmd
    CycleEnumEditor
    Damage
    Data
    Date
    DebugGlyph
    Deck
    Deck__2
    DecrAfterFunc
    DecrFunc
    DegToRadFunc
    DeleteCmd
    DeleteFrameCmd
    DeleteFrameData
    DeleteFunc
    DesensitizeViewCmd
    Dialog
    DialogKit
    Dialog__2
    Directory
    DirtyCmd
    Dispatcher
    Display
    DisplayRep
    DivAssignFunc
    DivFunc
    DoneAttrListFunc
    DoneSetAttrFunc
    DotFunc
    DotNameFunc
    DotValFunc
    DoubleFunc
    DownMover
    Drag
    DragEditor
    DragManip
    DragValuator
    DragZone
    DragZoneSink
    DrawCatalog
    DrawCreator
    DrawEditor
    DrawIdrawComp
    DrawIdrawScript
    DrawIdrawView
    DrawImportCmd
    DrawImportPasteCmd
    DrawKit
    DrawLinkComp
    DrawLinkFunc
    DrawLinkList
    DrawServ
    DrawServHandler
    DrawingToGraphicFunc
    DrawingToScreenFunc
    DupCmd
    EachFunc
    EdgeComp
    EdgeConnectCmd
    EdgeData
    EdgePS
    EdgeScript
    EdgeUpdateCmd
    EdgeView
    Editor
    EditorInfo
    EditorLauncherAction
    EivTextBuffer
    EivTextEditor
    Ellipse
    Ellipse31
    EllipseComp
    EllipseOvComp
    EllipseOvView
    EllipsePS
    EllipseScript
    EllipseView
    Enlarger
    EnumObserver
    EqualFunc
    EvalFunc
    Event
    EventRep
    ExitFunc
    ExpFunc
    ExportChooser
    ExportChooserImpl
    ExportEnumEditor
    ExportFunc
    Extension
    Extent
    ExternView
    FBoxObj
    FFillPolygonObj
    FLineObj
    FMultiLineObj
    FPointObj
    F_Circle
    F_ClosedBSpline
    F_Ellipse
    F_OpenBSpline
    F_Polygon
    F_Rect
    FalseAttrListFunc
    FieldEditor
    FieldEditorAction
    File
    FileBrowser
    FileBrowser__2
    FileChooser
    FileChooserAction
    FileChooser__2
    FileNameVarView
    FillPolygonObj
    FilterFunc
    FilterNextFunc
    FixViewCmd
    FixedLayout
    FixedPanCmd
    FixedPin
    FloatFunc
    FloorFunc
    Font
    FontBoundingBox
    FontByNameFunc
    FontCmd
    FontFamily
    FontFamilyRep
    FontFunc
    FontRep
    FontVar
    FontVarView
    ForFunc
    Frame
    FrameBackCmd
    FrameBeginCmd
    FrameCatalog
    FrameComp
    FrameCopyCmd
    FrameCreator
    FrameEditor
    FrameEndCmd
    FrameFileComp
    FrameFileScript
    FrameFileView
    FrameFrontCmd
    FrameFunc
    FrameGroupCmd
    FrameIdrawComp
    FrameIdrawPS
    FrameIdrawScript
    FrameIdrawView
    FrameImportCmd
    FrameImportPasteCmd
    FrameKit
    FrameListState
    FrameNewViewCmd
    FrameNumberState
    FrameOverlaysComp
    FrameOverlaysScript
    FrameOverlaysView
    FrameScript
    FrameUngroupCmd
    FrameView
    FrameViewer
    FramesComp
    FramesScript
    FramesView
    FrontCmd
    FullGraphic
    GAcknowledgeDialog
    GConfirmDialog
    GFieldEditor
    GFieldEditorAction
    GLContext
    GSData
    GVUpdater
    GlobalSymbolFunc
    Glue
    Glue__2
    Glyph
    GrAttrListFunc
    GrDotFunc
    GrListAtFunc
    GrListSizeFunc
    GrLocTool
    GraphCatalog
    GraphComp
    GraphCopyCmd
    GraphCreator
    GraphCutCmd
    GraphData
    GraphDeleteCmd
    GraphDupCmd
    GraphEditor
    GraphIdrawComp
    GraphIdrawScript
    GraphIdrawView
    GraphImportCmd
    GraphKit
    GraphMoveTool
    GraphNewViewCmd
    GraphPasteCmd
    GraphScript
    GraphView
    Graphic
    Graphic31
    GraphicBlock
    GraphicComp
    GraphicCompTool
    GraphicComps
    GraphicIdFunc
    GraphicIdList
    GraphicIds
    GraphicLeakFunc
    GraphicMaster
    GraphicToDrawingFunc
    GraphicView
    GraphicViews
    GravityCmd
    GravityVar
    GravityVarView
    GrayRampCmd
    GrayRampFunc
    GrayRaster
    GreaterThanFunc
    GreaterThanOrEqualFunc
    Grid
    GridCmd
    GridDialog
    GridSpacingCmd
    Group
    GroupCmd
    GrowGroupFunc
    GrowingBSpline
    GrowingClosedBSpline
    GrowingMultiLine
    GrowingPolygon
    GrowingVertices
    HBorder
    HBox
    HGlue
    HPanelControl
    HRule
    HScrollBar
    HScroller
    HSlotComp
    HSlotView
    Handler
    HandlesFunc
    HelpFunc
    HideViewCmd
    HighlightFunc
    Hit
    Host
    IGridSpacingCmd
    IOHandler
    IconWindow
    IdrawCatalog
    IdrawComp
    IdrawCreator
    IdrawEditor
    IdrawReader
    IdrawView
    IfThenElseFunc
    Image
    ImageCmd
    ImportChooser
    ImportChooserImpl
    ImportCmd
    ImportFunc
    IncrAfterFunc
    IncrFunc
    IndexedGsMixin
    IndexedPicMixin
    IndexedPtsMixin
    InorderView
    InputFile
    InputHandler
    IntFunc
    Interactor
    InteractorHandler
    InteractorWindow
    InvertXformFunc
    IsSpaceFunc
    IterateFunc
    Iterator
    IueConnCompFunc
    IueExportFunc
    IueFunc
    IueGaussianFunc
    IueGetPixelFunc
    IueHandler
    IueImageComp
    IueImageFunc
    IueNcolsFunc
    IueNrowsFunc
    IuePixTypeFunc
    IueServComp
    IueThresholdFunc
    JoinStrFunc
    KeyMap
    LRComposition
    LRMarker
    Label
    Layout
    LayoutKit
    LeafWalker
    LeftMover
    LeftShiftFunc
    LessThanFunc
    LessThanOrEqualFunc
    LexScan
    Line
    Line31
    LineComp
    LineObj
    LineOvComp
    LineOvView
    LinePS
    LineScript
    LineView
    LinkComp
    LinkSelection
    LinkView
    ListAtFunc
    ListFunc
    ListItr
    ListSizeFunc
    ListUpdater
    Log10Func
    LogFunc
    LogScaleCmd
    LogScaleFunc
    LongFunc
    MFDialogKit
    MFKit
    Macro
    MacroCmd
    MagnifVar
    MagnifVarView
    MagnifyTool
    ManagedWindow
    ManagedWindowHintInfo
    ManagedWindowRep
    ManipGroup
    Manipulator
    MarginFrame
    MarginLayout
    MatchEditor
    Math
    MaxFunc
    MbrFunc
    MeanFunc
    Memory
    Menu
    MenuBar
    MenuEnumEditor
    MenuItem
    MenuItem__2
    Menu__2
    Message
    MeterObserver
    MinFunc
    MinusFunc
    MlineLeakFunc
    MobilityCmd
    MobilityData
    ModAssignFunc
    ModFunc
    ModifStatusVar
    ModifStatusVarView
    MonoGlyph
    MonoKit
    MonoScene
    MoveCmd
    MoveData
    MoveDialog
    MoveFrameCmd
    MoveFrameFunc
    MoveFunc
    MoveTool
    Mover
    MpyAssignFunc
    MpyFunc
    MultiLine
    MultiLineComp
    MultiLineObj
    MultiLineOvComp
    MultiLineOvView
    MultiLinePS
    MultiLineScript
    MultiLineView
    MuteFunc
    NBrushesFunc
    NColorsFunc
    NColsFunc
    NFontsFunc
    NOPCmd
    NPatternsFunc
    NRowsFunc
    NameState
    NameVar
    NameVarView
    NameView
    NaturalLayout
    NegFunc
    NewCompCmd
    NewViewCmd
    NextAttrListFunc
    NextFunc
    NextInSelectionFunc
    NilFunc
    NodeComp
    NodeData
    NodeDialog
    NodeScript
    NodeTextCmd
    NodeView
    NormSizeCmd
    NotEqualFunc
    NullTerminatedString
    NumFramesFunc
    NumFunc
    OLDialogKit
    OLKit
    ObjectMap
    ObsTextDialog
    ObsTextEditor
    Observable
    ObservableBoolean
    ObservableEnum
    ObservableText
    ObservableTime
    Observer
    OpaqueDragManip
    OpenBSpline
    OpenCmd
    OpenFileChooser
    OpenFileChooserAction
    OpenFileChooserImpl
    Open_BSpline31
    OptableFunc
    OptionDesc
    OrFunc
    OrientationCmd
    OvAboutCmd
    OvCloseEditorCmd
    OvDeleteCmd
    OvDownMover
    OvExportCmd
    OvFileImage
    OvGroupCmd
    OvImageMapCmd
    OvImportCmd
    OvLeftMover
    OvMemoryImage
    OvMover
    OvNewCompCmd
    OvNewViewCmd
    OvOpenCmd
    OvPortableFileImage
    OvPreciseBrushCmd
    OvPreciseMoveCmd
    OvPrecisePageCmd
    OvPreciseRotateCmd
    OvPreciseScaleCmd
    OvPrintCmd
    OvQuitCmd
    OvRestrictedImage
    OvRevertCmd
    OvRightMover
    OvSaveCompAsCmd
    OvSaveCompCmd
    OvSlctAllCmd
    OvTiledFileImage
    OvUpMover
    OvViewCompCmd
    OvWindowDumpAsCmd
    OverlayCatalog
    OverlayComp
    OverlayCreator
    OverlayDamage
    OverlayEditor
    OverlayFileComp
    OverlayFileScript
    OverlayFileView
    OverlayGraphic
    OverlayIdrawComp
    OverlayIdrawPS
    OverlayIdrawScript
    OverlayIdrawView
    OverlayKit
    OverlayPS
    OverlayPage
    OverlayPainter
    OverlayPanner
    OverlayRaster
    OverlayRasterRect
    OverlayScript
    OverlaySelectTool
    OverlaySelection
    OverlaySlider
    OverlayUnidraw
    OverlayView
    OverlayViewRef
    OverlayViewer
    OverlaysComp
    OverlaysPS
    OverlaysScript
    OverlaysView
    PGM_Helper
    PPM_Helper
    PSArrowLine
    PSArrowMultiLine
    PSArrowSpline
    PSBrush
    PSClosedSpline
    PSColor
    PSEllipse
    PSFont
    PSFont31
    PSIdraw
    PSLine
    PSLink
    PSMultiLine
    PSPad
    PSPattern
    PSPin
    PSPolygon
    PSRaster
    PSRect
    PSSlot
    PSSpline
    PSStencil
    PSText
    PSVertices
    PadComp
    PadGraphic
    PadView
    Page
    PageCmd
    PageDialog
    PageGraphic
    Painter
    PainterDpyInfo
    PainterRep
    PaletteBooleanEditor
    PanCmd
    PanDialog
    PanDownLargeFunc
    PanDownSmallFunc
    PanFunc
    PanLeftLargeFunc
    PanLeftSmallFunc
    PanRightLargeFunc
    PanRightSmallFunc
    PanUpLargeFunc
    PanUpSmallFunc
    PanelControl
    PanelInteractor
    Panner
    ParamList
    ParamStruct
    Parser
    PasteCmd
    PasteFunc
    PasteModeFunc
    Patch
    Path
    PathRenderInfo
    Pattern
    PatternCmd
    PatternFunc
    PatternRep
    PatternVar
    PatternVarView
    Perspective
    PiFunc
    Picture
    PicturePS
    PinComp
    PinGraphic
    PinView
    PixelClipFunc
    PixelColsFunc
    PixelFlushFunc
    PixelPeekFunc
    PixelPokeFunc
    PixelPokeLineFunc
    PixelRowsFunc
    Placement
    Point
    PointObj
    PointsFunc
    PolyGlyph
    PolyGraphic
    Polygon
    Polygon31
    PolygonComp
    PolygonOvComp
    PolygonOvView
    PolygonPS
    PolygonScript
    PolygonView
    Polyline31
    PopupMenu
    PopupWindow
    PortableImageHelper
    PostEvalFunc
    PostFixFunc
    PostScriptView
    PostScriptViews
    PostorderView
    PowFunc
    PreciseMoveCmd
    PrecisePageCmd
    PrecisePanCmd
    PreciseRotateCmd
    PreciseScaleCmd
    PreciseZoomCmd
    PreorderView
    PrintChooser
    PrintChooserImpl
    PrintCmd
    PrintDialog
    PrintFunc
    Printer
    ProcessingCmd
    PropertyData
    PseudocolorCmd
    PseudocolorFunc
    PtrList
    PtrLocState
    PullCmd
    PulldownMenu
    PullrightMenu
    PushButton
    PushCmd
    QuitCmd
    QuitFunc
    RadToDegFunc
    RadioButton
    RadioEnumEditor
    RandFunc
    Raster
    RasterComp
    RasterFunc
    RasterOvComp
    RasterOvView
    RasterPS
    RasterRect
    RasterRep
    RasterScript
    RasterTerp
    RasterView
    ReadOnlyFunc
    Rect
    RectComp
    RectOvComp
    RectOvView
    RectPS
    RectScript
    RectView
    Rectangle31
    RedToFitCmd
    RedoCmd
    Reducer
    Regexp
    RemoteFunc
    RepeatFunc
    ReplaceCmd
    ReplaceRasterCmd
    ReqErr
    Requirement
    Requisition
    ReshapeTool
    Resource
    RevertCmd
    RightMover
    RightShiftFunc
    RotateCmd
    RotateDialog
    RotateFunc
    RotateTool
    RotatingLine
    RotatingLineList
    RotatingRect
    RoundFunc
    RpcHdr
    RpcPeer
    RpcReader
    RpcRegistry
    RpcService
    RpcWriter
    RubberAxis
    RubberCircle
    RubberClosedSpline
    RubberEllipse
    RubberGroup
    RubberHandles
    RubberLine
    RubberPointList
    RubberRect
    RubberSpline
    RubberSquare
    RubberVertex
    Rubberband
    Rule
    RunFunc
    SFH_ClosedBSpline
    SFH_OpenBSpline
    SF_Circle
    SF_ClosedBSpline
    SF_Ellipse
    SF_MultiLine
    SF_OpenBSpline
    SF_Polygon
    SF_Rect
    SMFKit
    SRandFunc
    S_Circle
    S_ClosedBSpline
    S_Ellipse
    S_MultiLine
    S_OpenBSpline
    S_Polygon
    S_Rect
    SaveAsChooser
    SaveAsChooserImpl
    SaveCompAsCmd
    SaveCompCmd
    SaveFileFunc
    ScaleCmd
    ScaleDialog
    ScaleFunc
    ScaleGrayCmd
    ScaleGrayFunc
    ScaleTool
    ScalingLine
    ScalingLineList
    ScalingRect
    Scanner
    Scene
    ScreenToDrawingFunc
    ScribblePointerCmd
    ScribbleVertexManip
    ScrollBar
    ScrollBox
    Scrollable
    Scroller
    SelectFunc
    SelectTool
    Selection
    SelectionHandler
    SelectionManager
    SelectionManagerRep
    SensitizeViewsCmd
    Sensor
    SeqFunc
    Session
    SessionIdFunc
    SetAttrByExprCmd
    SetAttrFunc
    Shadow
    ShadowFrame
    Shape
    ShellFunc
    ShortFunc
    ShowFrame
    ShowFramesFunc
    ShowOtherFrameCmd
    SimpleCompositor
    SinFunc
    SlctAllCmd
    SlctByAttrCmd
    Slider
    Slider__2
    SlidingEllipse
    SlidingLine
    SlidingLineList
    SlidingPin
    SlidingPointList
    SlidingRect
    SlotComp
    SlotGraphic
    SlotView
    SocketFunc
    SocketObj
    SplineComp
    SplineOvComp
    SplineOvView
    SplinePS
    SplineScript
    SplineView
    SplitStrFunc
    SqrtFunc
    StateVar
    StateVarView
    StdDevFunc
    StdInput
    Stencil
    StencilComp
    StencilOvComp
    StencilOvView
    StencilPS
    StencilScript
    StencilView
    Stepper
    StrChooser
    StrChooserAction
    StrEditDialog
    StrListValue
    StreamFunc
    StreamNextFunc
    StretchTool
    StretchingRect
    String
    StringBrowser
    StringChooser
    StringEditor
    StrmFunc
    Style
    SubAssignFunc
    SubFunc
    Subject
    SumFunc
    Superpose
    SymAddFunc
    SymIdFunc
    SymStrFunc
    SymValFunc
    SymbolFunc
    TBComposition
    TBScrollBox
    TE_Adjustable
    TE_Editor
    TE_View
    TE_ViewKeyInfo
    TE_ViewKeySymInfo
    TF_2Port
    TF_Direct
    TGlue
    TIFFRaster
    TanFunc
    Target
    TeXCompositor
    Telltale
    TelltaleGroup
    TelltaleState
    TerpDialog
    TerpDialogImpl
    Text31
    TextBuffer
    TextButton
    TextComp
    TextDisplay
    TextEditAppWindow
    TextEditor
    TextFileComp
    TextFileScript
    TextFileView
    TextGraphic
    TextManip
    TextObserver
    TextOvComp
    TextOvView
    TextPS
    TextRenderInfo
    TextScript
    TextView
    Tile
    TileFileCmd
    TileFileFunc
    TileFirstAligned
    TileReversed
    TileReversedFirstAligned
    Time
    TimeExprFunc
    TimeGlyph
    TitleFrame
    Tool
    Tool31
    ToolButton
    ToolControl
    ToolSelector
    ToolState
    TopLevelWindow
    TopoEdge
    TopoEdgeList
    TopoElement
    TopoFace
    TopoNode
    TransferFunct
    TransformCmd
    TransformFitter
    TransformSetter
    Transformer
    TransformerFunc
    TransientWindow
    Tray
    TrimGroupFunc
    TrueAttrListFunc
    TupleFunc
    TypeSymbolFunc
    UArray
    UChooser
    UControl
    UControlInteractor
    UHashElem
    UHashTable
    ULabel
    UList
    UMap
    UMapElem
    UPage
    USleepFunc
    UStencil
    UnchainViewerCmd
    UnchainViewersCmd
    UndoCmd
    UnfixViewCmd
    UngroupCmd
    UngroupData
    UnhideViewsCmd
    UnhighlightRasterCmd
    Unidraw
    UnidrawComterpHandler
    UnidrawFunc
    UnidrawImportHandler
    UnidrawPauseFunc
    UniqueString
    UpMover
    UpdateFunc
    VBorder
    VBox
    VGlue
    VPanelControl
    VRule
    VScrollBar
    VScroller
    VSlotComp
    VSlotView
    Valuator
    VarFunc
    VariableLayout
    VertexManip
    Vertices
    VerticesComp
    VerticesOvComp
    VerticesOvView
    VerticesPS
    VerticesScript
    VerticesView
    ViewCompCmd
    ViewLeakFunc
    Viewer
    ViewerView
    Viewport
    VoidData
    WhileFunc
    WidgetKit
    Window
    WindowOverlayInfo
    WindowRep
    WindowVisual
    WindowVisualInfo
    World
    XDrag
    XSlider
    XYMarker
    XYSlider
    XformFunc
    XposeFunc
    YSlider
    ZoomCmd
    ZoomDialog
    ZoomFunc
    ZoomInFunc
    ZoomOutFunc
    Zoomer
    _ArrowData
    _XDisplay
    _dmmwalk
    _oper_stack
    _paren_stack
    _xdllink
    arrayval_struct
    com_struct
    iosb
    iostreamb
    istreamb
    keyval_struct
    objval_struct
    ostreamb
    regexp
    rpcbuf
    rpcstream
    streamval_struct
    symval_struct
    tiff
    token
    ivtools-doc/doc/classes/SocketFunc.html0000644000076500007650000000340611324451726021010 0ustar scottscott00000000000000 Description of SocketFunc
    class SocketFunc : public ComFunc (Return to index)

    create socket object

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    sockobj=socket(hoststr portnum) -- create and open socket object create and open socket object

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SocketObj.html0000644000076500007650000000727111324451726020633 0ustar scottscott00000000000000 Description of SocketObj
    class SocketObj (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SplineComp.html0000644000076500007650000000545711324451726021025 0ustar scottscott00000000000000 Description of SplineComp
    class SplineComp : public VerticesComp (Return to index)

    spline component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/spline.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SplineOvComp.html0000644000076500007650000001047311324451726021324 0ustar scottscott00000000000000 Description of SplineOvComp
    class SplineOvComp : public VerticesOvComp (Return to index)

    clone of SplineComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovspline.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/SplineOvView.html0000644000076500007650000000654711324451726021347 0ustar scottscott00000000000000 Description of SplineOvView
    class SplineOvView : public VerticesOvView (Return to index)

    graphic view of SplineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovspline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SplinePS.html0000644000076500007650000000415611324451726020444 0ustar scottscott00000000000000 Description of SplinePS
    class SplinePS : public VerticesPS (Return to index)

    "PostScript" view of SplineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovspline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SplineScript.html0000644000076500007650000000515111324451726021362 0ustar scottscott00000000000000 Description of SplineScript
    class SplineScript : public VerticesScript (Return to index)

    serialized view of SplineOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovspline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SplineView.html0000644000076500007650000000613411324451726021032 0ustar scottscott00000000000000 Description of SplineView
    class SplineView : public VerticesView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/spline.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SplitStrFunc.html0000644000076500007650000000345611324451726021351 0ustar scottscott00000000000000 Description of SplitStrFunc
    class SplitStrFunc : public ComFunc (Return to index)

    command to split a symbol or string into a list of character objects

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/symbolfunc.h

    Description:

    lst=split(symbol|string) -- split symbol or string into list of characters.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SqrtFunc.html0000644000076500007650000000335511324451726020514 0ustar scottscott00000000000000 Description of SqrtFunc
    class SqrtFunc : public ComFunc (Return to index)

    square-root command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=sqrt(x) -- returns square root of x.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SRandFunc.html0000644000076500007650000000341111324451726020563 0ustar scottscott00000000000000 Description of SRandFunc
    class SRandFunc : public ComFunc (Return to index)

    command to seed ComTerp random number generator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/randfunc.h

    Description:

    srand(seedval) -- seed random number generator.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/StateVar.html0000644000076500007650000001236111324451726020475 0ustar scottscott00000000000000 Description of StateVar
    class StateVar (Return to index)

    state variable

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/statevar.h

    Description:

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/StateVarView.html0000644000076500007650000000711511324451726021331 0ustar scottscott00000000000000 Description of StateVarView
    class StateVarView : public MonoScene (Return to index)

    state variable view

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/stateview.h

    Description:

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/StdDevFunc.html0000644000076500007650000000310011324451726020740 0ustar scottscott00000000000000 Description of StdDevFunc
    class StdDevFunc : public VarFunc (Return to index)

    standard-deviation-of-values command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/statfunc.h

    Description:

    val=stddev(val1[,val2[,...,valn]]) -- return standard deviation of values.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/StdInput.html0000644000076500007650000000346411324451726020522 0ustar scottscott00000000000000 Description of StdInput
    class StdInput : public InputFile (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OS/file.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Stencil.html0000644000076500007650000000476311324451726020354 0ustar scottscott00000000000000 Description of Stencil
    class Stencil : public Glyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/stencil.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/StencilComp.html0000644000076500007650000000713211324451726021164 0ustar scottscott00000000000000 Description of StencilComp
    class StencilComp : public GraphicComp (Return to index)

    stencil component

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/stencilcomp.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/StencilOvComp.html0000644000076500007650000001515411324451726021474 0ustar scottscott00000000000000 Description of StencilOvComp
    class StencilOvComp : public OverlayComp (Return to index)

    clone of StencilComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovstencil.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/StencilOvView.html0000644000076500007650000000510311324451726021501 0ustar scottscott00000000000000 Description of StencilOvView
    class StencilOvView : public OverlayView (Return to index)

    graphical view of StencilOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovstencil.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/StencilPS.html0000644000076500007650000000404011324451726020603 0ustar scottscott00000000000000 Description of StencilPS
    class StencilPS : public OverlayPS (Return to index)

    "PostScript" view of StencilOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovstencil.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/StencilScript.html0000644000076500007650000001023511324451726021530 0ustar scottscott00000000000000 Description of StencilScript
    class StencilScript : public OverlayScript (Return to index)

    serialized view of StencilOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovstencil.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/StencilView.html0000644000076500007650000000466711324451726021212 0ustar scottscott00000000000000 Description of StencilView
    class StencilView : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/stencilcomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Stepper.html0000644000076500007650000000560511324451726020371 0ustar scottscott00000000000000 Description of Stepper
    class Stepper : public Button (Return to index)

    Type:
      Abstract

    Base Classes:

    Derived Classes

    Include file:

      IV-look/stepper.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/StrChooser.html0000644000076500007650000000442311324451726021037 0ustar scottscott00000000000000 Description of StrChooser
    class StrChooser : public Dialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/strchooser.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/StrChooserAction.html0000644000076500007650000000342611324451726022177 0ustar scottscott00000000000000 Description of StrChooserAction
    class StrChooserAction : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/strchooser.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/StreamFunc.html0000644000076500007650000000425211324451726021013 0ustar scottscott00000000000000 Description of StreamFunc
    class StreamFunc : public StrmFunc (Return to index)

    stream command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/StreamNextFunc.html0000644000076500007650000000377611324451726021664 0ustar scottscott00000000000000 Description of StreamNextFunc
    class StreamNextFunc : public StrmFunc (Return to index)

    hidden func used by next command for stream command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/streamval_struct.html0000644000076500007650000000252111324451727022344 0ustar scottscott00000000000000 Description of streamval_struct
    struct streamval_struct (Return to index)

    void* pointer to ComFunc object plus optional type id

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/attrvalue.h

    Description:

    used in attr_value.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/StrEditDialog.html0000644000076500007650000001263411324451726021445 0ustar scottscott00000000000000 Description of StrEditDialog
    class StrEditDialog : public Dialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/stredit.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/StretchingRect.html0000644000076500007650000000562211324451726021676 0ustar scottscott00000000000000 Description of StretchingRect
    class StretchingRect : public RubberRect (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/rubrect.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/StretchTool.html0000644000076500007650000000544111324451726021217 0ustar scottscott00000000000000 Description of StretchTool
    class StretchTool : public Tool (Return to index)

    stretch tool

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Tools/stretch.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/String.html0000644000076500007650000003174411324451726020220 0ustar scottscott00000000000000 Description of String
    class String (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      OS/string.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/StringBrowser.html0000644000076500007650000003164111324451726021560 0ustar scottscott00000000000000 Description of StringBrowser
    class StringBrowser : public Interactor (Return to index)

    for choosing from list of strings (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/strbrowser.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/StringChooser.html0000644000076500007650000001560611324451726021542 0ustar scottscott00000000000000 Description of StringChooser
    class StringChooser : public Dialog (Return to index)

    dialog box for choosing from list of strings (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/strchooser.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/StringEditor.html0000644000076500007650000001635611324451726021371 0ustar scottscott00000000000000 Description of StringEditor
    class StringEditor : public Interactor (Return to index)

    interactive editor for character strings (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/streditor.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/StrListValue.html0000644000076500007650000000523711324451726021351 0ustar scottscott00000000000000 Description of StrListValue
    class StrListValue : public BoundedValue (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/bdvalue.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/StrmFunc.html0000644000076500007650000000231111324451726020477 0ustar scottscott00000000000000 Description of StrmFunc
    class StrmFunc : public ComFunc (Return to index)

    base class for ComTerp stream commands.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/strmfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Style.html0000644000076500007650000003307511324451726020051 0ustar scottscott00000000000000 Description of Style
    class Style : public Resource (Return to index)

    user interface attribute object.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/style.h

    Description:

    in reference manual

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/SubAssignFunc.html0000644000076500007650000000325311324451726021456 0ustar scottscott00000000000000 Description of SubAssignFunc
    class SubAssignFunc : public AssignFunc (Return to index)

    += (subtract assign) operator .

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/assignfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SubFunc.html0000644000076500007650000000317011324451726020307 0ustar scottscott00000000000000 Description of SubFunc
    class SubFunc : public NumFunc (Return to index)

    - (subtraction) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/numfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Subject.html0000644000076500007650000000517211324451726020345 0ustar scottscott00000000000000 Description of Subject
    class Subject : virtual public Resource (Return to index)

    object with one or more views to notify when it changes (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/subject.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/SumFunc.html0000644000076500007650000000404011324451726020317 0ustar scottscott00000000000000 Description of SumFunc
    class SumFunc : public ComFunc (Return to index)

    sum-of-values command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/statfunc.h

    Description:

    val=sum(val1[,val2[,...,valn]]) -- return sum of values.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Superpose.html0000644000076500007650000000507711324451726020737 0ustar scottscott00000000000000 Description of Superpose
    class Superpose : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/superpose.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SymAddFunc.html0000644000076500007650000000353411324451726020743 0ustar scottscott00000000000000 Description of SymAddFunc
    class SymAddFunc : public ComFunc (Return to index)

    create symbol command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/symbolfunc.h

    Description:

    sym|lst=symadd(syml|str [sym|str ...]) -- create symbol(s) and return without lookup

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SymbolFunc.html0000644000076500007650000000343711324451727021032 0ustar scottscott00000000000000 Description of SymbolFunc
    class SymbolFunc : public ComFunc (Return to index)

    symbol command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/symbolfunc.h

    Description:

    sym|lst=symbol(symid [symid ...]) -- return symbol(s) associated with integer id(s)

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SymIdFunc.html0000644000076500007650000000351311324451727020605 0ustar scottscott00000000000000 Description of SymIdFunc
    class SymIdFunc : public ComFunc (Return to index)

    symbol id command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/symbolfunc.h

    Description:

    int|lst=symid(symbol [symbol ...]) -- return id(s) associated with symbol(s)

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SymStrFunc.html0000644000076500007650000000334611324451727021025 0ustar scottscott00000000000000 Description of SymStrFunc
    class SymStrFunc : public ComFunc (Return to index)

    return string version of symbol

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/symbolfunc.h

    Description:

    str=symstr(sym) -- return string version of symbol

    Public:



    (more documentation)

    ivtools-doc/doc/classes/symval_struct.html0000644000076500007650000000241211324451727021660 0ustar scottscott00000000000000 Description of symval_struct
    struct symval_struct (Return to index)

    struct for symbol value, symid + global flag for symbol value

    Type:
      Instantiable

    Derived Classes

    Include file:

      Attribute/attrvalue.h

    Description:

    used in attr_value.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/SymValFunc.html0000644000076500007650000000347211324451727020777 0ustar scottscott00000000000000 Description of SymValFunc
    class SymValFunc : public ComFunc (Return to index)

    lookup symbol value command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/symbolfunc.h

    Description:

    val|lst=symval(symbol_var [symbol_var ...]) -- return value(s) associated with symbol variable(s)

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TanFunc.html0000644000076500007650000000335311324451727020304 0ustar scottscott00000000000000 Description of TanFunc
    class TanFunc : public ComFunc (Return to index)

    tangent command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/mathfunc.h

    Description:

    dbl=tan(x) -- returns the tangent of x radians.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Target.html0000644000076500007650000000352511324451727020175 0ustar scottscott00000000000000 Description of Target
    class Target : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/target.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TBComposition.html0000644000076500007650000000413511324451727021476 0ustar scottscott00000000000000 Description of TBComposition
    class TBComposition : public Composition (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/composition.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TBScrollBox.html0000644000076500007650000001663211324451727021107 0ustar scottscott00000000000000 Description of TBScrollBox
    class TBScrollBox : public ScrollBox (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/scrbox.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TE_Adjustable.html0000644000076500007650000001142511324451727021413 0ustar scottscott00000000000000 Description of TE_Adjustable
    class TE_Adjustable : public Adjustable, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/textedit.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TE_Editor.html0000644000076500007650000000464311324451727020567 0ustar scottscott00000000000000 Description of TE_Editor
    class TE_Editor : public TextEditor (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/texteditor.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TE_View.html0000644000076500007650000005507711324451727020262 0ustar scottscott00000000000000 Description of TE_View
    class TE_View : public InputHandler, public Observable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/textview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TE_ViewKeyInfo.html0000644000076500007650000000213611324451727021533 0ustar scottscott00000000000000 Description of TE_ViewKeyInfo
    struct TE_ViewKeyInfo (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IVGlyph/textview.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TE_ViewKeySymInfo.html0000644000076500007650000000216611324451727022227 0ustar scottscott00000000000000 Description of TE_ViewKeySymInfo
    struct TE_ViewKeySymInfo (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IVGlyph/textview.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Telltale.html0000644000076500007650000000754411324451727020522 0ustar scottscott00000000000000 Description of Telltale
    class Telltale : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/telltale.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TelltaleGroup.html0000644000076500007650000000366111324451727021533 0ustar scottscott00000000000000 Description of TelltaleGroup
    class TelltaleGroup : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/telltale.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TelltaleState.html0000644000076500007650000000733211324451727021516 0ustar scottscott00000000000000 Description of TelltaleState
    class TelltaleState : public Resource, public Observable (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/telltale.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TerpDialog.html0000644000076500007650000000662411324451727021004 0ustar scottscott00000000000000 Description of TerpDialog
    class TerpDialog : public Dialog (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComGlyph/terpdialog.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TerpDialogImpl.html0000644000076500007650000003204711324451727021624 0ustar scottscott00000000000000 Description of TerpDialogImpl
    class TerpDialogImpl (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComGlyph/terpdialog.h

    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/TeXCompositor.html0000644000076500007650000000411311324451727021520 0ustar scottscott00000000000000 Description of TeXCompositor
    class TeXCompositor : public Compositor (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/texcomp.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Text31.html0000644000076500007650000001223411324451727020034 0ustar scottscott00000000000000 Description of Text31
    class Text31 : public Graphic31 (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TextBuffer.html0000644000076500007650000003026311324451727021024 0ustar scottscott00000000000000 Description of TextBuffer
    class TextBuffer (Return to index)

    editable text buffer (iv-2.6)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-2_6/InterViews/textbuffer.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TextButton.html0000644000076500007650000000632111324451727021064 0ustar scottscott00000000000000 Description of TextButton
    class TextButton : public Button (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/button.h

    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TextComp.html0000644000076500007650000000632511324451727020513 0ustar scottscott00000000000000 Description of TextComp
    class TextComp : public GraphicComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/text.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TextDisplay.html0000644000076500007650000002313011324451727021213 0ustar scottscott00000000000000 Description of TextDisplay
    class TextDisplay (Return to index)

    basic text display (iv-2.6)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-2_6/InterViews/textdisplay.h

    Description:

    man page

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/TextEditAppWindow.html0000644000076500007650000000276211324451727022334 0ustar scottscott00000000000000 Description of TextEditAppWindow
    class TextEditAppWindow : public ApplicationWindow (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/textwindow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TextEditor.html0000644000076500007650000002512511324451727021042 0ustar scottscott00000000000000 Description of TextEditor
    class TextEditor : public Interactor (Return to index)

    basic interactive editor for mulit-line text (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/texteditor.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TextFileComp.html0000644000076500007650000001524111324451727021310 0ustar scottscott00000000000000 Description of TextFileComp
    class TextFileComp : public TextOvComp (Return to index)

    TextOvComp constructed by reading text from a file.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/textfile.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/TextFileScript.html0000644000076500007650000000510211324451727021651 0ustar scottscott00000000000000 Description of TextFileScript
    class TextFileScript : public TextScript (Return to index)

    serialized view of a TextOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/textfile.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TextFileView.html0000644000076500007650000000554711324451727021334 0ustar scottscott00000000000000 Description of TextFileView
    class TextFileView : public TextOvView (Return to index)

    graphical view of a TextOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/textfile.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TextGraphic.html0000644000076500007650000001446611324451727021177 0ustar scottscott00000000000000 Description of TextGraphic
    class TextGraphic : public ULabel (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/text.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TextManip.html0000644000076500007650000004156711324451727020670 0ustar scottscott00000000000000 Description of TextManip
    class TextManip : public Manipulator (Return to index)

    text manipulator

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/manips.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TextObserver.html0000644000076500007650000000462011324451727021400 0ustar scottscott00000000000000 Description of TextObserver
    class TextObserver : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/textform.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TextOvComp.html0000644000076500007650000001240311324451727021012 0ustar scottscott00000000000000 Description of TextOvComp
    class TextOvComp : public OverlayComp (Return to index)

    clone of TextComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovtext.h

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/TextOvView.html0000644000076500007650000001025311324451727021027 0ustar scottscott00000000000000 Description of TextOvView
    class TextOvView : public OverlayView (Return to index)

    graphical view of TextOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovtext.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TextPS.html0000644000076500007650000000455211324451727020137 0ustar scottscott00000000000000 Description of TextPS
    class TextPS : public OverlayPS (Return to index)

    "PostScript" view of TextOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovtext.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TextRenderInfo.html0000644000076500007650000000530311324451727021643 0ustar scottscott00000000000000 Description of TextRenderInfo
    class TextRenderInfo (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xcanvas.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TextScript.html0000644000076500007650000000476611324451727021070 0ustar scottscott00000000000000 Description of TextScript
    class TextScript : public OverlayScript (Return to index)

    serialized view of TextOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovtext.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TextView.html0000644000076500007650000000751411324451727020530 0ustar scottscott00000000000000 Description of TextView
    class TextView : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/text.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TF_2Port.html0000644000076500007650000001026611324451727020346 0ustar scottscott00000000000000 Description of TF_2Port
    class TF_2Port : public TransferFunct (Return to index)

    to-port transfer function

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/transfns.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TF_Direct.html0000644000076500007650000001244211324451727020550 0ustar scottscott00000000000000 Description of TF_Direct
    class TF_Direct : public TF_2Port (Return to index)

    direct transfer function

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/transfns.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TGlue.html0000644000076500007650000000406311324451727017765 0ustar scottscott00000000000000 Description of TGlue
    class TGlue : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/tray.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/tiff.html0000644000076500007650000002162611324451727017701 0ustar scottscott00000000000000 Description of tiff
    struct tiff (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      TIFF/tiffioP.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TIFFRaster.html0000644000076500007650000000203611324451727020654 0ustar scottscott00000000000000 Description of TIFFRaster
    class TIFFRaster (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/tiff.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Tile.html0000644000076500007650000000440411324451727017641 0ustar scottscott00000000000000 Description of Tile
    class Tile : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/tile.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TileFileCmd.html0000644000076500007650000000754611324451727021077 0ustar scottscott00000000000000 Description of TileFileCmd
    class TileFileCmd : public Command (Return to index)

    command to internally tile a PGM or PPM image.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TileFileFunc.html0000644000076500007650000000357011324451727021260 0ustar scottscott00000000000000 Description of TileFileFunc
    class TileFileFunc : public UnidrawFunc (Return to index)

    command to generate an internally tiled PGM/PPM file for drawtool or comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    tilefile(inpath outpath [xsize] [ysiz]) -- tile pgm or ppm image file

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TileFirstAligned.html0000644000076500007650000000453011324451727022135 0ustar scottscott00000000000000 Description of TileFirstAligned
    class TileFirstAligned : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/tile.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TileReversed.html0000644000076500007650000000447411324451727021350 0ustar scottscott00000000000000 Description of TileReversed
    class TileReversed : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/tile.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TileReversedFirstAligned.html0000644000076500007650000000462011324451727023635 0ustar scottscott00000000000000 Description of TileReversedFirstAligned
    class TileReversedFirstAligned : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/tile.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Time.html0000644000076500007650000002226311324451727017645 0ustar scottscott00000000000000 Description of Time
    class Time (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Time/Time_.h

    Description:

    type definitions

    Public:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/TimeExprFunc.html0000644000076500007650000000344011324451727021314 0ustar scottscott00000000000000 Description of TimeExprFunc
    class TimeExprFunc : public ComFunc (Return to index)

    timer expression command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    timeexpr(comstr :sec n) -- command string to execute at intervals.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TimeGlyph.html0000644000076500007650000001561511324451727020654 0ustar scottscott00000000000000 Description of TimeGlyph
    class TimeGlyph : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Time/timeglyph.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TitleFrame.html0000644000076500007650000000540711324451727021004 0ustar scottscott00000000000000 Description of TitleFrame
    class TitleFrame : public ShowFrame (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/frame.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/token.html0000644000076500007650000000310011324451727020054 0ustar scottscott00000000000000 Description of token
    struct token (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComUtil/util.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/token::tok_val.html0000644000076500007650000000332507374262637021643 0ustar scottscott00000000000000 Description of token::tok_val
    union token::tok_val (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComUtil/util.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/token___tok_val.html0000644000076500007650000000332511324451727022102 0ustar scottscott00000000000000 Description of token::tok_val
    union token::tok_val (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      ComUtil/util.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Tool.html0000644000076500007650000001140311324451727017656 0ustar scottscott00000000000000 Description of Tool
    class Tool (Return to index)

    base class for tool objects.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/Tools/tool.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Tool31.html0000644000076500007650000000635111324451727020030 0ustar scottscott00000000000000 Description of Tool31
    class Tool31 (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ToolButton.html0000644000076500007650000000761011324451727021057 0ustar scottscott00000000000000 Description of ToolButton
    class ToolButton : public Button (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/toolbutton.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ToolControl.html0000644000076500007650000000351511324451727021224 0ustar scottscott00000000000000 Description of ToolControl
    class ToolControl : public PanelControl (Return to index)

    derived PanelControl.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovctrl.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ToolSelector.html0000644000076500007650000000350511324451727021363 0ustar scottscott00000000000000 Description of ToolSelector
    class ToolSelector (Return to index)

    helper object for selecting tool button when pressed.

    Type:
      Instantiable

    Derived Classes

    Include file:

      OverlayUnidraw/ovdoer.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ToolState.html0000644000076500007650000000310511324451727020657 0ustar scottscott00000000000000 Description of ToolState
    class ToolState (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IVGlyph/figure.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TopLevelWindow.html0000644000076500007650000000441611324451727021671 0ustar scottscott00000000000000 Description of TopLevelWindow
    class TopLevelWindow : public ManagedWindow (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/window.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TopoEdge.html0000644000076500007650000001402011324451727020445 0ustar scottscott00000000000000 Description of TopoEdge
    class TopoEdge : public TopoElement (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      TopoFace/topoedge.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TopoEdgeList.html0000644000076500007650000001516411324451727021313 0ustar scottscott00000000000000 Description of TopoEdgeList
    class TopoEdgeList : public TopoElement (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      TopoFace/topoedgelist.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TopoElement.html0000644000076500007650000002023311324451727021175 0ustar scottscott00000000000000 Description of TopoElement
    class TopoElement : public Resource (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      TopoFace/topoelt.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TopoFace.html0000644000076500007650000000623211324451727020445 0ustar scottscott00000000000000 Description of TopoFace
    class TopoFace : public TopoEdgeList (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      TopoFace/topoface.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TopoNode.html0000644000076500007650000000344111324451727020473 0ustar scottscott00000000000000 Description of TopoNode
    class TopoNode : public TopoEdgeList (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      TopoFace/toponode.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TransferFunct.html0000644000076500007650000000667211324451727021541 0ustar scottscott00000000000000 Description of TransferFunct
    class TransferFunct (Return to index)

    transfer function

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/transfn.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TransformCmd.html0000644000076500007650000000602111324451727021340 0ustar scottscott00000000000000 Description of TransformCmd
    class TransformCmd : public Command (Return to index)

    transform command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/transforms.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Transformer.html0000644000076500007650000004176511324451727021261 0ustar scottscott00000000000000 Description of Transformer
    class Transformer (Return to index)

    a 3x2 matrix for use in translating 2d coordinates.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/transformer.h

    Description:

    in reference manual

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TransformerFunc.html0000644000076500007650000000362011324451727022061 0ustar scottscott00000000000000 Description of TransformerFunc
    class TransformerFunc : public UnidrawFunc (Return to index)

    command to access a graphic's transformer

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    a00,a01,a10,a11,a20,a21=trans(compview [a00,a01,a10,a11,a20,a21]) -- set/get transformer associated with a graphic

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TransformFitter.html0000644000076500007650000000377411324451727022106 0ustar scottscott00000000000000 Description of TransformFitter
    class TransformFitter : public TransformSetter (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/tformsetter.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TransformSetter.html0000644000076500007650000001212311324451727022103 0ustar scottscott00000000000000 Description of TransformSetter
    class TransformSetter : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/tformsetter.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TransientWindow.html0000644000076500007650000000503011324451727022077 0ustar scottscott00000000000000 Description of TransientWindow
    class TransientWindow : public TopLevelWindow (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/window.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Tray.html0000644000076500007650000001643311324451727017670 0ustar scottscott00000000000000 Description of Tray
    class Tray : public Scene (Return to index)

    composes interactors into (possibly) overlapping layouts (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/tray.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/TrimGroupFunc.html0000644000076500007650000000356711324451727021521 0ustar scottscott00000000000000 Description of TrimGroupFunc
    class TrimGroupFunc : public UnidrawFunc (Return to index)

    command to remove graphic from existing group graphic

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/groupfunc.h

    Description:

    newgroup=trimgroup(groupview compview) -- remove graphic from existing group graphic

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TrueAttrListFunc.html0000644000076500007650000000376111324451727022173 0ustar scottscott00000000000000 Description of TrueAttrListFunc
    class TrueAttrListFunc : public AttrListFunc (Return to index)

    interpreter command for plugging together AttrDialog and SlctByAttrCmd.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/slctbyattr.h

    Description:

    interpreter command for adding component to current selection when attribute expression evaluates to true.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TupleFunc.html0000644000076500007650000000366211324451727020656 0ustar scottscott00000000000000 Description of TupleFunc
    class TupleFunc : public ComFunc (Return to index)

    , (tuple) operator.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/listfunc.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/TypeSymbolFunc.html0000644000076500007650000000342111324451727021665 0ustar scottscott00000000000000 Description of TypeSymbolFunc
    class TypeSymbolFunc : public ComFunc (Return to index)

    command to return type symbols for values

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/typefunc.h

    Description:

    sym|lst=type(val [val ...]) -- return type symbol(s) for value(s)

    Public:



    (more documentation)

    ivtools-doc/doc/classes/UArray.html0000644000076500007650000000667511324451727020163 0ustar scottscott00000000000000 Description of UArray
    class UArray (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/uarray.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UChooser.html0000644000076500007650000001114611324451727020474 0ustar scottscott00000000000000 Description of UChooser
    class UChooser : public StringChooser (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/dialogs.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UControl.html0000644000076500007650000000515311324451727020513 0ustar scottscott00000000000000 Description of UControl
    class UControl : public Control (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/uctrl.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UControlInteractor.html0000644000076500007650000001121311324451727022540 0ustar scottscott00000000000000 Description of UControlInteractor
    class UControlInteractor : public Interactor (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/uctrl.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UHashElem.html0000644000076500007650000000357011324451727020562 0ustar scottscott00000000000000 Description of UHashElem
    class UHashElem (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/uhash.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UHashTable.html0000644000076500007650000001237311324451727020730 0ustar scottscott00000000000000 Description of UHashTable
    class UHashTable (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/uhash.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ULabel.html0000644000076500007650000001173411324451727020114 0ustar scottscott00000000000000 Description of ULabel
    class ULabel : public Graphic (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/ulabel.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UList.html0000644000076500007650000001204611324451727020005 0ustar scottscott00000000000000 Description of UList
    class UList (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/ulist.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UMap.html0000644000076500007650000000672411324451727017615 0ustar scottscott00000000000000 Description of UMap
    class UMap (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/umap.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UMapElem.html0000644000076500007650000000321311324451727020406 0ustar scottscott00000000000000 Description of UMapElem
    class UMapElem (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/umap.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UnchainViewerCmd.html0000644000076500007650000001003711324451727022136 0ustar scottscott00000000000000 Description of UnchainViewerCmd
    class UnchainViewerCmd : public Command (Return to index)

    command to remove this viewer from list of chained viewers.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovchainview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UnchainViewersCmd.html0000644000076500007650000001070511324451727022323 0ustar scottscott00000000000000 Description of UnchainViewersCmd
    class UnchainViewersCmd : public Command (Return to index)

    command to unchain other viewers from this one under panning and/or zooming.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovchainview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UndoCmd.html0000644000076500007650000000530111324451727020272 0ustar scottscott00000000000000 Description of UndoCmd
    class UndoCmd : public Command (Return to index)

    undo command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/edit.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/UnfixViewCmd.html0000644000076500007650000001104611324451727021314 0ustar scottscott00000000000000 Description of UnfixViewCmd
    class UnfixViewCmd : public Command (Return to index)

    command for unfixing size or location of a graphic view.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovfixview.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UngroupCmd.html0000644000076500007650000001032611324451727021027 0ustar scottscott00000000000000 Description of UngroupCmd
    class UngroupCmd : public Command (Return to index)

    ungroup command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/struct.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UngroupData.html0000644000076500007650000000404011324451727021171 0ustar scottscott00000000000000 Description of UngroupData
    class UngroupData : public Data (Return to index)

    ungroup data for command undo

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/datas.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/UnhideViewsCmd.html0000644000076500007650000000571111324451727021624 0ustar scottscott00000000000000 Description of UnhideViewsCmd
    class UnhideViewsCmd : public Command (Return to index)

    command to unhide a graphic view in all other viewers.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovshowhide.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/UnhighlightRasterCmd.html0000644000076500007650000000526511324451727023031 0ustar scottscott00000000000000 Description of UnhighlightRasterCmd
    class UnhighlightRasterCmd : public Command (Return to index)

    command to unhighlight a raster.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/rastercmds.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Unidraw.html0000644000076500007650000003666411324451727020372 0ustar scottscott00000000000000 Description of Unidraw
    class Unidraw (Return to index)

    singleton for coordinating and controlling a Unidraw application.

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/unidraw.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UnidrawComterpHandler.html0000644000076500007650000000273611324451727023213 0ustar scottscott00000000000000 Description of UnidrawComterpHandler
    class UnidrawComterpHandler : public ComterpHandler (Return to index)

    specialized ComterpHandler for integration into Unidraw event loop.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/comterp-acehandler.h

    Description:

    = Initialization and termination methods.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/UnidrawFunc.html0000644000076500007650000000514411324451727021173 0ustar scottscott00000000000000 Description of UnidrawFunc
    class UnidrawFunc : public ComFunc (Return to index)

    base class for interpreter commands in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UnidrawImportHandler.html0000644000076500007650000000727411324451727023056 0ustar scottscott00000000000000 Description of UnidrawImportHandler
    class UnidrawImportHandler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> (Return to index)

    handler for import by socket into OverlayUnidraw.

    Type:
      Instantiable

    Base Classes:
      public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>

    Derived Classes

    Include file:

      OverlayUnidraw/aceimport.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UnidrawPauseFunc.html0000644000076500007650000000351711324451727022173 0ustar scottscott00000000000000 Description of UnidrawPauseFunc
    class UnidrawPauseFunc : public UnidrawFunc (Return to index)

    command to pause script execution until C/R

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    pause -- pause script execution until C/R

    Public:



    (more documentation)

    ivtools-doc/doc/classes/UniqueString.html0000644000076500007650000000646411324451727021411 0ustar scottscott00000000000000 Description of UniqueString
    class UniqueString : public String (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OS/ustring.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/UPage.html0000644000076500007650000000374311324451727017752 0ustar scottscott00000000000000 Description of UPage
    class UPage (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      Unidraw/upage.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/UpdateFunc.html0000644000076500007650000000347211324451727021006 0ustar scottscott00000000000000 Description of UpdateFunc
    class UpdateFunc : public UnidrawFunc (Return to index)

    command to update Unidraw from comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/unifunc.h

    Description:

    update() -- update viewers

    Public:



    (more documentation)

    ivtools-doc/doc/classes/UpMover.html0000644000076500007650000000344011324451727020340 0ustar scottscott00000000000000 Description of UpMover
    class UpMover : public Mover (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/adjuster.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/USleepFunc.html0000644000076500007650000000331611324451727020756 0ustar scottscott00000000000000 Description of USleepFunc
    class USleepFunc : public ComFunc (Return to index)

    usleep sleep microseconds

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/ctrlfunc.h

    Description:

    usleep(msec) -- sleep microseconds

    Public:



    (more documentation)

    ivtools-doc/doc/classes/UStencil.html0000644000076500007650000001200111324451727020462 0ustar scottscott00000000000000 Description of UStencil
    class UStencil : public Graphic (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/ustencil.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Valuator.html0000644000076500007650000000603711324451727020545 0ustar scottscott00000000000000 Description of Valuator
    class Valuator : public MonoGlyph, public Observer (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IVGlyph/valuator.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/VarFunc.html0000644000076500007650000000405611324451727020313 0ustar scottscott00000000000000 Description of VarFunc
    class VarFunc : public ComFunc (Return to index)

    variance-of-values command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/statfunc.h

    Description:

    val=var(val1[,val2[,...,valn]]) -- return variance of values.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VariableLayout.html0000644000076500007650000000464611324451727021677 0ustar scottscott00000000000000 Description of VariableLayout
    class VariableLayout : public Layout (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/place.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/VBorder.html0000644000076500007650000000365011324451727020311 0ustar scottscott00000000000000 Description of VBorder
    class VBorder : public Border (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/border.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VBox.html0000644000076500007650000001360111324451727017621 0ustar scottscott00000000000000 Description of VBox
    class VBox : public Box (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/box.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VertexManip.html0000644000076500007650000000414211324451727021205 0ustar scottscott00000000000000 Description of VertexManip
    class VertexManip : public DragManip (Return to index)

    vertex manipulator

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/manips.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Vertices.html0000644000076500007650000001663211324451727020536 0ustar scottscott00000000000000 Description of Vertices
    class Vertices : public Graphic (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Graphic/verts.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VerticesComp.html0000644000076500007650000000377411324451727021360 0ustar scottscott00000000000000 Description of VerticesComp
    class VerticesComp : public GraphicComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/vertices.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VerticesOvComp.html0000644000076500007650000000711611324451727021657 0ustar scottscott00000000000000 Description of VerticesOvComp
    class VerticesOvComp : public OverlayComp (Return to index)

    clone of VerticesComp derived from OverlayComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovvertices.h

    Description:

    base class for all multi-point components.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VerticesOvView.html0000644000076500007650000001003511324451727021665 0ustar scottscott00000000000000 Description of VerticesOvView
    class VerticesOvView : public OverlayView (Return to index)

    graphical view of VerticesOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovvertices.h

    Description:

    base class for all multi-point OverlayView objects.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VerticesPS.html0000644000076500007650000000475111324451727021000 0ustar scottscott00000000000000 Description of VerticesPS
    class VerticesPS : public OverlayPS (Return to index)

    "PostScript" view of VerticesOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovvertices.h

    Description:

    base class for all multi-point OverlayPS objects.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VerticesScript.html0000644000076500007650000000604011324451727021713 0ustar scottscott00000000000000 Description of VerticesScript
    class VerticesScript : public OverlayScript (Return to index)

    serialized view of VerticesOvComp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovvertices.h

    Description:

    base class for all multi-point OverlayScript objects.

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VerticesView.html0000644000076500007650000000750411324451727021367 0ustar scottscott00000000000000 Description of VerticesView
    class VerticesView : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/vertices.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VGlue.html0000644000076500007650000000450711324451727017772 0ustar scottscott00000000000000 Description of VGlue
    class VGlue : public Glue (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/glue.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ViewCompCmd.html0000644000076500007650000000670611324451727021130 0ustar scottscott00000000000000 Description of ViewCompCmd
    class ViewCompCmd : public Command (Return to index)

    view component command

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/catcmds.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Viewer.html0000644000076500007650000004112011324451727020201 0ustar scottscott00000000000000 Description of Viewer
    class Viewer : public GraphicBlock (Return to index)

    displays a graphical component view hierarchy.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/viewer.h

    Description:

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ViewerView.html0000644000076500007650000000506611324451727021045 0ustar scottscott00000000000000 Description of ViewerView
    class ViewerView : public GraphicView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/viewer.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ViewLeakFunc.html0000644000076500007650000000347411324451727021275 0ustar scottscott00000000000000 Description of ViewLeakFunc
    class ViewLeakFunc : public ComFunc (Return to index)

    command to return current number of OverlayView's

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    viewleak() -- current number of OverlayView's

    Public:



    (more documentation)

    ivtools-doc/doc/classes/Viewport.html0000644000076500007650000002150011324451727020557 0ustar scottscott00000000000000 Description of Viewport
    class Viewport : public MonoScene (Return to index)

    Interactor that shows a portion of another Interactor (iv-2.6)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/viewport.h

    Description:

    A viewport contains another interactor. Unlike a MonoScene or Frame, a viewport always gives the interactor its desired shape. However, the interactor may not be entirely viewable through the viewport. The viewport's Perspective can be used to adjust what portion is visible.

    man page

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/VoidData.html0000644000076500007650000000261611324451727020442 0ustar scottscott00000000000000 Description of VoidData
    class VoidData : public Data (Return to index)

    void data for command undo

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Commands/datas.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/VPanelControl.html0000644000076500007650000000342111324451727021470 0ustar scottscott00000000000000 Description of VPanelControl
    class VPanelControl : public PanelControl (Return to index)

    vertical-panel control

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/uctrls.h

    Description:

    man page

    Public:



    (more documentation)

    ivtools-doc/doc/classes/VRule.html0000644000076500007650000000256711324451727020011 0ustar scottscott00000000000000 Description of VRule
    class VRule : public Rule (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/rule.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/VScrollBar.html0000644000076500007650000000400411324451727020751 0ustar scottscott00000000000000 Description of VScrollBar
    class VScrollBar : public ScrollBar (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/scrollbar.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/VScroller.html0000644000076500007650000000441011324451727020654 0ustar scottscott00000000000000 Description of VScroller
    class VScroller : public Scroller (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/scroller.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/VSlotComp.html0000644000076500007650000000435611324451727020640 0ustar scottscott00000000000000 Description of VSlotComp
    class VSlotComp : public SlotComp (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/slot.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/VSlotView.html0000644000076500007650000000445611324451727020655 0ustar scottscott00000000000000 Description of VSlotView
    class VSlotView : public SlotView (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      Unidraw/Components/slot.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/WhileFunc.html0000644000076500007650000000400411324451727020624 0ustar scottscott00000000000000 Description of WhileFunc
    class WhileFunc : public ComFunc (Return to index)

    while-loop command for ComTerp.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/postfunc.h

    Description:

    val=while([testexpr [bodyexpr]] :nilchk :until :body expr ) -- while loop.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/WidgetKit.html0000644000076500007650000010571211324451727020643 0ustar scottscott00000000000000 Description of WidgetKit
    class WidgetKit (Return to index)

    factory object for widgets.

    Type:
      Abstract

    Derived Classes

    Include file:

      IV-look/kit.h

    Description:

    in reference manual

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Window.html0000644000076500007650000002776411324451727020231 0ustar scottscott00000000000000 Description of Window
    class Window (Return to index)

    object that can be mapped onto a screen.

    Type:
      Instantiable

    Derived Classes

    Include file:

      InterViews/window.h

    Description:

    in reference manual.

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/WindowOverlayInfo.html0000644000076500007650000000300711324451727022367 0ustar scottscott00000000000000 Description of WindowOverlayInfo
    struct WindowOverlayInfo (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xwindow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/WindowRep.html0000644000076500007650000002544411324451727020671 0ustar scottscott00000000000000 Description of WindowRep
    class WindowRep (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xwindow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/WindowVisual.html0000644000076500007650000000763211324451727021405 0ustar scottscott00000000000000 Description of WindowVisual
    class WindowVisual (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xwindow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/WindowVisualInfo.html0000644000076500007650000000373611324451727022222 0ustar scottscott00000000000000 Description of WindowVisualInfo
    struct WindowVisualInfo (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xwindow.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/World.html0000644000076500007650000004545711324451727020050 0ustar scottscott00000000000000 Description of World
    class World (Return to index)

    object representing a display (iv-2.6)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-2_6/InterViews/world.h

    Description:

    man page

    Public:



    Protected:



    Friend methods:



    (more documentation)

    ivtools-doc/doc/classes/XDrag.html0000644000076500007650000000255211324451727017753 0ustar scottscott00000000000000 Description of XDrag
    class XDrag (Return to index)

    Type:
      Instantiable

    Derived Classes

    Include file:

      IV-X11/xdrag.h

    Description:

    these are used by xevent to detect and interpret a drag client message.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/XformFunc.html0000644000076500007650000000347311324451727020660 0ustar scottscott00000000000000 Description of XformFunc
    class XformFunc : public ComFunc (Return to index)

    ComTerp command to apply an affine-transform to a 2d coordinate.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/xformfunc.h

    Description:

    point=xform(x,y a00,a01,a10,a11,a20,a21) -- affine transform of x,y coordinates.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/XposeFunc.html0000644000076500007650000000340511324451727020656 0ustar scottscott00000000000000 Description of XposeFunc
    class XposeFunc : public ComFunc (Return to index)

    ComTerp command to transpose a matrix

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComTerp/xformfunc.h

    Description:

    matrix=xpose(matrix) -- transpose an arbitrary matrix

    Public:



    (more documentation)

    ivtools-doc/doc/classes/XSlider.html0000644000076500007650000000505611324451727020322 0ustar scottscott00000000000000 Description of XSlider
    class XSlider : public Slider (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/slider.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/XYMarker.html0000644000076500007650000000613411324451727020450 0ustar scottscott00000000000000 Description of XYMarker
    class XYMarker : public MonoGlyph (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      InterViews/xymarker.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/XYSlider.html0000644000076500007650000000520011324451727020442 0ustar scottscott00000000000000 Description of XYSlider
    class XYSlider : public Slider (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/slider.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/YSlider.html0000644000076500007650000000505611324451727020323 0ustar scottscott00000000000000 Description of YSlider
    class YSlider : public Slider (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-look/slider.h

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ZoomCmd.html0000644000076500007650000000757611324451727020331 0ustar scottscott00000000000000 Description of ZoomCmd
    class ZoomCmd : public CameraMotionCmd (Return to index)

    command for viewer zoom/de-zoom.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovcamcmds.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ZoomDialog.html0000644000076500007650000000536011324451727021012 0ustar scottscott00000000000000 Description of ZoomDialog
    class ZoomDialog : public BasicDialog (Return to index)

    dialog box for precision zooming.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      OverlayUnidraw/ovdialog.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/Zoomer.html0000644000076500007650000000413111324451727020214 0ustar scottscott00000000000000 Description of Zoomer
    class Zoomer : public Adjuster (Return to index)

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      IV-2_6/InterViews/adjuster.h

    Public:



    Protected:



    (more documentation)

    ivtools-doc/doc/classes/ZoomFunc.html0000644000076500007650000000342311324451727020504 0ustar scottscott00000000000000 Description of ZoomFunc
    class ZoomFunc : public UnidrawFunc (Return to index)

    command to zoom viewer in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    zoom(zoomflt) -- zoom by factor

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ZoomInFunc.html0000644000076500007650000000343011324451727020771 0ustar scottscott00000000000000 Description of ZoomInFunc
    class ZoomInFunc : public UnidrawFunc (Return to index)

    command to zoom-in by 2 in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    zoomin() -- zoom-in by 2.

    Public:



    (more documentation)

    ivtools-doc/doc/classes/ZoomOutFunc.html0000644000076500007650000000344011324451727021173 0ustar scottscott00000000000000 Description of ZoomOutFunc
    class ZoomOutFunc : public UnidrawFunc (Return to index)

    command to zoom-out by 2 in comdraw.

    Type:
      Instantiable

    Base Classes:

    Derived Classes

    Include file:

      ComUnidraw/grfunc.h

    Description:

    zoomout() -- zoom-out by 2.

    Public:



    (more documentation)

    ivtools-doc/doc/CVS/0000755000076500007650000000000010747654610015056 5ustar scottscott00000000000000ivtools-doc/doc/CVS/Entries0000644000076500007650000000152110747654610016411 0ustar scottscott00000000000000/animatedgifs.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /animatedgifs.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /geo-data.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /geo-data.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /imagemaps.gif/1.1.1.1/Tue Nov 13 18:25:32 2001// /imagemaps.html/1.1.1.1/Tue Nov 13 18:25:32 2001// /index.html/1.5/Tue Jul 9 22:04:15 2002// /ivtools-doc-COPYRIGHT.txt/1.1.1.1/Tue Nov 13 18:25:32 2001// /plotting.gif/1.1.1.1/Tue Nov 13 18:25:33 2001// /plotting.html/1.1.1.1/Tue Nov 13 18:25:33 2001// /postscript.gif/1.1.1.1/Tue Nov 13 18:25:33 2001// /postscript.html/1.2/Tue Jun 18 17:53:21 2002// /rasters.gif/1.1.1.1/Tue Nov 13 18:25:33 2001// /rasters.html/1.1.1.1/Tue Nov 13 18:25:33 2001// /thingstodo.html/1.1.1.1/Tue Nov 13 18:25:33 2001// /top40.html/1.1.1.1/Tue Nov 13 18:25:33 2001// D/classes//// D/man3.1//// D/refman3.1//// ivtools-doc/doc/CVS/Repository0000644000076500007650000000002010747654203017146 0ustar scottscott00000000000000ivtools-doc/doc ivtools-doc/doc/CVS/Root0000644000076500007650000000007310747654203015722 0ustar scottscott00000000000000:ext:johnston@ivtools.cvs.sourceforge.net:/cvsroot/ivtools ivtools-doc/doc/geo-data.gif0000644000076500007650000000377407374262634016611 0ustar scottscott00000000000000GIF87ab((6XM@nXOX(X$H @OO>%G@"HOh9@@8N @% @@XKNXTvG XvnI @@{ ϣB2ӥFF*ҩXjPV\ÂKkVgǾl֬[o ZKmݴލ/Ͳ{mߞ+^̸ǐe8J;1_|X^31th>)fkamxH4q#m;a/5.xp] hdsϙ6٬b׸nmOߓTGygߐ|a'uJ4jED!AWQ7r|>4A#bU_bB+ btOxׁѨHwph!D)GXH !!?׋Ua"H"(f XfN-Y@^fp:I x2$" QyY*.%^`6zc)Oj5䥘>6'Nv'KڤNh_ꡆ&*&BJ뭒fk(V5t lRo8>jI6V'jeBKTº@ߛn?:@&Bg:^^?)Jk,ZADr"'9oD$#6L7 r!;1+EOBS' ~\vDllK1J0?^RNjY-r+MGJ뇷hl*-COWWMSi31k8R x&i "ݻѲnnn#ۼ.f<ط>tҢf |쫏|>bh!㟽~o])7!AZ>10k`=Uzӻ`4,YG $Nblj΅BGzp`zD(% 7DݭW{9@*<ң`(E):×z,<$0Lb W2ïφplq^b"pi|cbeqG; ?5bGE;[#5)BE&5# VްN:,$gy ꖲ.H˰1eC()`3,2I.s3b2%5g^֑79;ivtools-doc/doc/geo-data.html0000644000076500007650000000101607374262634016773 0ustar scottscott00000000000000 Geo-Data and ivtools drawing editors

    Geo-Data and ivtools drawing editors

    import DLG into drawing editors

    import VPF into drawing editors


    up to things to do with ivtools drawing editors

    ivtools-doc/doc/imagemaps.gif0000644000076500007650000000421207374262634017057 0ustar scottscott00000000000000GIF87ab((6XM &@&nO:(a$H@*O?%G@"HOh9@@8\ @% @@XYNXTvG XvnI @@{ ϣB2ӥFF*ҩXjPV\ÂKkVgǾlV)pʝKݻwZEN*,M|Ź8e㙏KFj⛗Mfyd*?@tO5QTro[=^9b퍷ssrGSxŲm~ָbs1Fw6-IسgȚeypy.7M_>KwzSՉgwr D 2X^%A7BR{I8}߈xPYg,y oA"m'Cޏ!$c dD)64 M/ReLP2TY%'y`NhH]`j>dPhbHҝ&EIGNI@^Ֆz駡 IZcMuVy(VE`iV>K4~9fy5[;Ė:,<Ήk|ֺPB癐YR[m_N[)r*jBƮf2dDe1"z/{fTf+j`lZKک Tal 𣣖p ,)ԑ΋~&i4E)᫮s4 &]WO5k[.֭SC3OjNf X:3@{BEaZYՎ;imvvx3{13~/ʺ☷[Vk~z*\"|L''n}Nn1{{|xnϮ?HQ 0윛0F{rcn1ee>ǐ$h/C ТfJu쾆3yKe`*X v(4[E+:hS <&j̡5#]0fKY鄨5LiSaɶD怉FH8$ *xC p^ڠ`R9,^Tp %<eepxL[@.Pb .:#B".GL 82h%fGa4EEP<.$ A0jiB$FAґj269n2~RUQ(̤lFtl8MЖkܚ (Z҉3 ?a:GhRP<diF6Jƞ]t379Gq+&vT<ҥ2ϼ>Sy2.d.QrhVJQb4hG2яFI=ѕTKYR4)M1ҝ1 P_ڥ9R;ivtools-doc/doc/imagemaps.html0000644000076500007650000000165507374262634017266 0ustar scottscott00000000000000 Clickable imagemaps and ivtools drawing editors

    clickable imagemaps and ivtools drawing editors

    Two items under the File menu on each ivtools drawing editor support authoring clickable image maps for web pages:

    the "Dump Window As" menu item brings up a dialog box to enter the name of an xwd file to save the current drawing to as a raster. "xwdtopnm | ppmtogif" can then convert it to a gif.

    the "Save ImageMap As" menu item brings up a dialog box to enter the name of a clickable imagemap file to generate, one entry for each graphic with a "url" attribute defined, which can be done with the Attribute tool.


    up to things to do with ivtools drawing editors

    ivtools-doc/doc/index.html0000644000076500007650000001304407512656737016432 0ustar scottscott00000000000000 Documentation for ivtools

    Documentation for ivtools

    Download ivtools HTML documentation copyright

    text files from the tar file

  • COPYRIGHT
  • README
  • INSTALL
  • MANIFEST
  • user web pages

  • ivtools drawing editors
  • ivtools command interpreters
  • comterp man page
  • comdraw man page
  • ivtools MIME types
  • ivtools FAQ
  • change log history
  • hierarchical drawings by URL
  • automated slideshows
  • large image tiling
  • other tools that work with ivtools
  • things to do with the drawing editors
  • export/import to drawing editors over the net
  • how to use idraw [PDF]

    programmer web pages

  • ivtools source background and history
  • ivtools class library info
  • ivtools class documentation (231K) extracted by PERCEPS
  • ivtools class tree index (255K)
  • alphabetic list of classes followed by their immediate derivative classes (124K)
  • description of framework layers
  • glyph programming examples
  • InterViews information
  • InterViews 3.1 reference manual (no frames) (193K)
  • InterViews 3.1 man pages
  • Unidraw information
  • things to program
  • other related technical info
  • page on alternate multi-layer framework: ET++
  • papers

  • Applying Object-Oriented Design to Structured Graphics (libgraphic.ps or ftp://interviews.stanford.edu/pub/papers/libgraphic.ps.Z), John M. Vlissides and Mark A. Linton, Stanford University
  • Unidraw: A Framework for Building Domain-Specific Graphical Editors (unidraw.ps or ftp://interviews.stanford.edu/pub/papers/unidraw.ps.Z), John M. Vlissides and Mark A. Linton, Stanford University.
  • Glyphs: Flyweight Objects for User Interfaces (glyphs.ps or ftp://interviews.stanford.edu/pub/papers/glyphs.ps.Z), Paul R. Calder and Mark A. Linton, Stanford University.
  • Reusing Unidraw and idraw, Scott E. Johnston and Jorge A. Gautier, Vectaport Inc.

    related books

  • Design Patterns, by Gamma, Helm, Johnson, Vlissides.
  • Object Oriented Application Frameworks by Lewis, Rosenstein, Pree, Weinand, Gamma, Calder, Andert, Vlissides, Shumucker.

    related web pages

  • Doug Schmidt's home page
  • Ralph Johnson's Framework Page
  • Don Robert's and Ralph Johnson's Evolving Frameworks
  • Dirk Riehle's Framework Layering
  • Vince Huston's Design Pattern page
  • Kent Beck and Ward Cunningham's Extreme Programming

    search www.vectaport.com   back to ivtools page ivtools-doc/doc/ivtools-doc-COPYRIGHT.txt0000644000076500007650000000544407374262634021006 0ustar scottscott00000000000000/* * Copyright (c) 1994-2000 Vectaport Inc. * * Permission to use, copy, modify, distribute, and sell this software and its * related documentation and data files for any purpose is hereby granted * without fee, provided that the above copyright notice appear in all copies * and that both that copyright notice and this permission notice appear in * supporting documentation, and that the names of the copyright holders not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holders * make no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ Portions of ivtools documentation (the 3.1 man pages and the 3.1 reference manual) are reused whole and unmodified from the InterViews 3.1 distribution, which was distributed with this copyright and permission notice: /* * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * Copyright (c) 1991 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Stanford and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Stanford and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL STANFORD OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ Also included are three PostScript papers (libgraphic.ps, unidraw.ps, glyphs.ps) written by the original InterViews developers and made available on ftp://interviews.stanford.edu. ivtools-doc/doc/man3.1/0000755000076500007650000000000010747654211015415 5ustar scottscott00000000000000ivtools-doc/doc/man3.1/Adjuster.html0000644000076500007650000000763307374262637020106 0ustar scottscott00000000000000

    
           Adjuster   -   button-like   interactors  for  incremental
           scrolling and zooming
    
    
    

    SYNOPSIS

           #include <InterViews/adjuster.h>
    
    
    

    DESCRIPTION

           Adjuster objects manipulate a perspective using a pushbut-
           ton-like interface.  Adjusters also provide an auto-repeat
           capability.  Depressing and holding down any mouse  button
           on  an  adjuster for a specified time causes it to repeat-
           edly perform its operation.   The  auto-repeat  terminates
           when the button is released.
    
           Predefined  subclasses  of  Adjuster  include  Zoomer  and
           Mover.  Zoomers  adjust  the  perspective's  curwidth  and
           curheight  members  to  suggest  magnification.   The user
           clicks on a zoomer to magnify or reduce  the  contents  of
           the  interactor  through  its  perspective.   The Enlarger
           zoomer subclass halves the perspective  values  while  the
           Reducer class doubles them.  Movers provide an incremental
           movement of the perspective in  one  of  four  directions;
           left,  right,  down, or up.  The user clicks on a mover to
           move the perspective.
    
    
    

    PUBLIC OPERATIONS

           Adjuster(Interactor*, int = NO_AUTOREPEAT)
                  Adjuster constructors take a pointer to the  inter-
                  actor  whose  perspective  will  be  adjusted and a
                  delay (in tenths of a  second)  after  which  auto-
                  repeat will begin once the adjuster is ``pressed''.
    
           virtual void Highlight()
           virtual void UnHighlight()
                  These  functions  define  how  the  adjuster  draws
                  itself  when  it is pressed.  The adjuster is high-
                  lighted when it is pressed with  any  mouse  button
                  and unhighlighted when the button is released.  The
                  default is to invert the adjuster when highlighted.
    
    
    

    PROTECTED OPERATIONS

           virtual void AdjustView(Event&)
                  This  function defines how the adjuster adjusts the
                  interactor's perspective.  It is called  after  the
                  adjuster  is  pressed  and  released, or repeatedly
                  during auto-repeat.  Derived classes  should  rede-
                  fine  this function to implement the desired behav-
                  ior.
    
    
    

    DERIVED CLASSES

           Enlarger(Interactor*)
           Reducer(Interactor*)
                  by factors of one half and two, respectively.  This
                  suggests  to an interactor to enlarge or reduce its
                  contents.   Auto-repeat  is   disabled   on   these
                  adjusters.
    
           LeftMover(Interactor*, int delay = NO_AUTOREPEAT)
           RightMover(Interactor*, int delay = NO_AUTOREPEAT)
           DownMover(Interactor*, int delay = NO_AUTOREPEAT)
           UpMover(Interactor*, int delay = NO_AUTOREPEAT)
                  These subclasses of Mover adjust the current origin
                  of the interactor's perspective by an amount in the
                  corresponding  direction.  If the shift key is down
                  while the mover is pressed, the amount  corresponds
                  to  the  perspective's  lx  or ly member variables;
                  otherwise, the sx or sy values are used.
    
    
    

    SEE ALSO

           Interactor(3I), Perspective(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/align.html0000644000076500007650000001200507374262640017376 0ustar scottscott00000000000000
    
           AlignCmd,  AlignToGridCmd - commands for aligning interac-
           tors to each other and to a grid
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/align.h>
    
    
    

    DESCRIPTION

           AlignCmd is a purely  interpretive  command  for  aligning
           selected components with respect to one another. For exam-
           ple, it can align the left sides of selected components so
           that  they  coincide.   AlignToGridCmd  is  interpreted by
           selected GraphicView objects to align  themselves  to  the
           grid  (if  any)  associated  with the viewer in which they
           appear.  Each component can thus define what it  means  to
           align itself to the grid.
    
    
    

    ALIGNCMD PUBLIC OPERATIONS

           AlignCmd(
               ControlInfo*,
               Alignment reference = Left, Alignment affected = Left
           )
    
           AlignCmd(Editor* = nil, Alignment = Left, Alignment =
                  Left)
                  The constructor takes optional arguments for speci-
                  fying  the alignment desired. The reference parame-
                  ter specifies a point on a fixed  reference  compo-
                  nent.   The affected parameter specifies a point on
                  components that will move to realize the alignment.
                  The  defaults for these parameters specify that all
                  affected components should align their  left  sides
                  to reference's left side.
    
           void GetAlignment(Alignment&, Alignment&)
                  Return  the  alignment  parameters specified in the
                  constructor.
    
           GraphicComp* GetReference(GraphicComp* affected)
                  Return the reference component given a  potentially
                  affected  component.   If  affected  appears in the
                  AlignCmd's clipboard, then GetReference returns the
                  GraphicComp  preceding  it  in  the  clipboard.  If
                  affected is the first component in the clipboard or
                  if  it  is  not on the clipboard, then GetReference
                  returns the first component on the clipboard.
    
    
    

    ALIGNTOGRIDCMD PUBLIC OPERATIONS

           AlignToGridCmd(ControlInfo*)
           AlignToGridCmd(Editor* = nil)
                  Construct an AlignToGridCmd.
    
           virtual void Execute()
                  AlignToGridCmd  redefines  Execute   to   let   the
                  selected  GraphicView objects interpret the command
                  the first time.  This lets the components determine
                  the  proper grid with which to align themselves and
                  the amount of movement required.   Execute  assumes
                  that  GraphicView objects will use the Align opera-
                  tion (described below) to  compute  the  amount  of
                  movement,  store  it  in  a  MoveData  object,  and
                  finally issue a MoveCmd to the subject  for  inter-
                  pretation.     Unexecute    simply   calls   Unmove
                  (described below) to reverse the Align's effects.
    
           virtual void Align(GraphicView*, float, float)
           virtual void Unalign(GraphicView*)
                  GraphicView objects interpreting the AlignToGridCmd
                  should  use  the Align operation to specify a point
                  to align to the grid that affects them.  Align will
                  effectively  move  the  component so that the given
                  point falls on the grid.  It will  also  store  the
                  amount  of movement in this by calling Store with a
                  MoveData  object.   Finally,   Align   calls   Move
                  (described  below)  to  actually move the component
                  that amount.  Unalign provides a  public  interface
                  to reversing the effects of Align by simply calling
                  Unmove with its argument's subject.
    
    
    

    ALIGNTOGRIDCMD PROTECTED OPERATIONS

           void Move(GraphicComp*)
           void Unmove(GraphicComp*)
                  Move produces  a  MoveCmd  based  on  the  MoveData
                  stored  for  the  given  GraphicComp  and tells the
                  GraphicComp to interpret the MoveCmd.   Conversely,
                  Unmove  produces  a  MoveCmd  based on the the same
                  information and tells the GraphicComp  to  uninter-
                  pret it.
    
    
    

    SEE ALSO

           Command(3U),  GraphicComp(3U),  GraphicView(3U), Grid(3U),
           Viewer(3U), datas(3U), transforms(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Banner.html0000644000076500007650000000310107374262637017514 0ustar scottscott00000000000000
    
           Banner - one line title bar
    
    
    

    SYNOPSIS

           #include <InterViews/banner.h>
    
    
    

    DESCRIPTION

           A  banner is an interactor that draws a one line title bar
           with optional left-justified, centered,  and  right-justi-
           fied  headings.   The member variable highlight can be set
           to cause drawing to be performed with the  foreground  and
           background colors reversed.
    
           The  natural  size  of a banner depends on the size of its
           headings.  Banners  are  infinitely  stretchable  horizon-
           tally, but fixed size vertically.
    
    
    

    PUBLIC OPERATIONS

           Banner(char* left, char* middle, char* right)
                  The  left string will be left-justified, the middle
                  string centered, and right  string  right-justified
                  in  the banner.  A header can be omitted by passing
                  a nil string.
    
           void Update()
                  The strings can be set through  the  left,  middle,
                  and  right  member variables.  The Update operation
                  should be called after one or more of  the  strings
                  is changed.
    
    
    

    SEE ALSO

           Interactor(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/BasicDialog.html0000644000076500007650000002351107374262637020457 0ustar scottscott00000000000000
    
           AcknowledgeDialog, BasicDialog, ConfirmDialog, GridDialog,
           PrintDialog, UChooser - an  assortment  of  useful  dialog
           boxes
    
    
    

    SYNOPSIS

           #include <Unidraw/dialogs.h>
    
    
    

    DESCRIPTION

           BasicDialog  is  the base class for subclasses that imple-
           ment simple but common  dialog  boxes.   AcknowledgeDialog
           simply  displays a one or two line message with a PushBut-
           ton for dismissing the dialog.  ConfirmDialog displays one
           or  two  lines  of descriptive text with three pushbuttons
           marked ``Yes,'' ``No,'' and ``Cancel'', all of which  dis-
           miss  the dialog. ConfirmDialog also provides an interface
           for retrieving the button  pushed.   GridDialog  lets  the
           user specify the resolution of a cartesian grid. PrintDia-
           log is a FileChooser for specifying the name of a file  or
           a  printer.   Finally,  UChooser extends the StringChooser
           protocol to provide additional useful features,  including
           support for alphabetizing its StringBrowser's contents and
           for embellishing the dialog with descriptive text.
    
    
    

    BASICDIALOG PUBLIC OPERATIONS

           void SetTitle(const char*)
           void SetSubtitle(const char*)
                  BasicDialogs  can  display  one  or  two  lines  of
                  descriptive  text.  These functions change the text
                  appearing in these lines.  The change appears imme-
                  diately if the dialog is visible.
    
    
    

    BASICDIALOG PROTECTED OPERATIONS

           BasicDialog(
               ButtonState*, const char* title = ``'',
               const char* subtitle = ``'', Alignment = Center
           )
    
           BasicDialog(
               const char*, ButtonState*, const char* title = ``'',
               const char* subtitle = ``'', Alignment = Center
           )
                  Instantiate  a  BasicDialog,  supplying an optional
                  instance name, a button state, title  and  subtitle
                  strings,  and the dialog's alignment, which is used
                  by its Popup operation.  These operations will ini-
                  tialize two protected MarginFrame member variables,
                  _title and _subtitle, which will contain  either  a
                  Message  instance  with  the  specified string or a
                  piece of glue if the string is null.  These Margin-
                  Frames  will  be  composed vertically at the top of
                  the dialog, and no vertical space will be taken  up
                  by a null title or subtitle string.
    
           boolean IsAChild(Interactor*)
                  These  functions  are useful for rejecting spurious
                  events while the  dialog  is  visible,  effectively
                  locking  out  the rest of the application.  If For-
                  ward's event argument has x and y coordinates  that
                  fall within the dialog's canvas, then Forward calls
                  Handle on the event's target.  Otherwise the Basic-
                  Dialog's  Handle  is called.  IsAChild returns true
                  if the given interactor is a child of the dialog.
    
    
    

    ACKNOWLEDGEDIALOG PUBLIC OPERATIONS

           AcknowledgeDialog(const char* title, const char* subtitle)
                  Construct  an  AcknowledgeDialog  instance with the
                  given title and subtitle.
    
           virtual void Acknowledge()
                  Call this function when the application should wait
                  for the user to acknowledge the dialog.  It returns
                  when the user has pressed and released the dialog's
                  push  button.   This  function  does not pop up the
                  dialog.
    
    
    

    CONFIRMDIALOG PUBLIC OPERATIONS

           ConfirmDialog(const char* title, const char* subtitle)
                  Construct a ConfirmDialog instance with  the  given
                  title and subtitle.
    
           virtual char Confirm()
                  Call this function when the application should wait
                  for the user to confirm  the  dialog.   It  returns
                  'y',  'n',  or '^G' ('\007'), depending whether the
                  ``Yes,'' ``No,''  or  ``Cancel''  push  button  was
                  pressed,  respectively.  This function does not pop
                  up the dialog.
    
    
    

    GRIDDIALOG PUBLIC OPERATIONS

           GridDialog()
                  Construct a GridDialog  instance.   The  GridDialog
                  contains  a MatchEditor instance for specifying the
                  size of the grid's graduations in the x and y axes.
                  The  user  can  specify  these  values  in  pixels,
                  points, centimeters, or inches by clicking  on  the
                  appropriate radio button.
    
           virtual void GetValues(float& xincr, float& yincr)
                  Return  the  user-specified  values for the size of
                  the grid's graduations, in pixel units.
    
           void SelectMessage()
                  Highlight the values in the dialog's MatchEditor.
    
    
    

    PRINTDIALOG PUBLIC OPERATIONS

                  Construct a PrintDialog instance, optionally speci-
                  fying  whether  the  dialog  should  prompt  for  a
                  printer name or a file name.
    
           void ToPrinter(boolean)
           boolean ToPrinter()
                  Specify and Return whether or not the string speci-
                  fied in the PrintDialog refers to a printer name.
    
    
    

    UCHOOSER PUBLIC OPERATIONS

           UChooser(
               const char* title, const char* subtitle,
               const char* acceptLabel, const char* sample
           )
                  Construct  a UChooser instance.  The title and sub-
                  title parameters specify the  descriptive  text  at
                  the  top  of the dialog box.  This constructor ini-
                  tializes two protected MarginFrame member variables
                  _title and _subtitle that are analogous to the cor-
                  responding BasicDialog members described above.
    
           void Clear()
                  Removes all  strings  from  the  UChooser's  string
                  browser.
    
           void Include(const char*)
           void Exclude(const char*)
                  Include inserts a string into the string browser at
                  a position defined by the UChooser's Position func-
                  tion,  described  below.  Exclude removes the given
                  string from the  string  browser.   If  the  string
                  browser  contains more than one copy of the string,
                  then Exclude removes  the  one  with  the  smallest
                  index.
    
           void SetTitle(const char*)
           void SetSubtitle(const char*)
                  These   functions  change  the  text  appearing  in
                  UChooser's title or subtitle.  The  change  appears
                  immediately if the dialog is visible.
    
    
    

    UCHOOSER PROTECTED OPERATIONS

           UChooser(ButtonState*, int rows, int cols, Alignment)
                  Direct  the  UChooser  to  initialize itself with a
                  string browser of the given size without initializ-
                  ing   the  MarginFrame  members.   Subclasses  that
                  require a different look-and-feel can use this con-
                  structor to avoid creating MarginFrames or Messages
                  they  don't  need.    The   Init,   Interior,   and
                  AddScroller  functions (described below) factor out
                  different parts  of  the  default  look  and  feel,
                  allowing subclasses to use parts of it.
                  Explicitly  initialize  the  MarginFrame members to
                  display the given title and/or subtitle strings.
    
           Interactor* Interior(const char* acceptLabel)
                  Return an interactor that composes  the  UChooser's
                  default look and feel.
    
           Interactor* AddScroller(Interactor*)
                  Return  a composition containing the given interac-
                  tor with a vertical scroll bar and adjusters  along
                  its  right  side,  initializing  them to scroll the
                  interactor.  The Interior function uses this opera-
                  tion  to  provide  the  string browser's  scrolling
                  interface.
    
           virtual int Position(const char*)
                  Return an appropriate string browser index for  the
                  given  string.   By  default, this function returns
                  the index that will place the string in  alphabeti-
                  cal order among those in the string browser.
    
    
    

    SEE ALSO

           Button(3I),    Dialog(3I),   Event(3I),   FileChooser(3I),
           Frame(3I),    MatchEditor(3I),    Message(3I),     String-
           Browser(3I), StringChooser(3I), StringEditor(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Border.html0000644000076500007650000000220007374262637017523 0ustar scottscott00000000000000
    
           Border, HBorder, VBorder - visual separators
    
    
    

    SYNOPSIS

           #include <InterViews/border.h>
    
    
    

    DESCRIPTION

           Border  is the base class for interactors that simply dis-
           play a line of a  given  thickness,  usually  to  separate
           other  interactors  in  a  scene.   HBorder objects have a
           fixed height and are infinitely stretchable and shrinkable
           horizontally.   VBorder objects have a fixed width and are
           infinitely stretchable and shrinkable vertically.
    
    
    

    PUBLIC OPERATIONS

           HBorder(int thickness = 1)
           VBorder(int thickness = 1)
                  Construct a border with a given thickness  (default
                  is one pixel).
    
    
    

    SEE ALSO

           Interactor(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Box2_6.html0000644000076500007650000000537007374262637017360 0ustar scottscott00000000000000
    
           Box, HBox, VBox - tile interactors in a box
    
    
    

    SYNOPSIS

           #include <InterViews/box.h>
    
    
    

    DESCRIPTION

           A  box  is  a scene of interactors that are tiled side-by-
           side in the available space.  Interactors are placed left-
           to-right  in a horizontal box, and top-to-bottom in a ver-
           tical box.
    
           A box will try to stretch or shrink the interactors inside
           it  to fit the available space.  The natural size of a box
           is the sum of its elements along the major axis,  and  the
           maximum  along  its  minor  axis.   A box's stretchability
           (shrinkability) is the sum of its elements along its major
           axis and the minimum of its elements along its minor axis.
    
    
    

    PUBLIC OPERATIONS

           HBox(...)
           VBox(...)
                  Create a new box.  Zero to seven interactors may be
                  passed  as  arguments; the interactors are inserted
                  into the box.
    
           void Align(Alignment)
                  Set the alignment mode that the box uses  to  place
                  elements  along the minor axis.  The default align-
                  ment for an hbox is Bottom; other choices  are  Top
                  and  Center.   The  default alignment for a vbox is
                  Left; other choices are Right and Center.
    
           void Insert(Interactor*)
                  Append an interactor to the box.  Components of  an
                  hbox  (vbox) will appear left-to-right (top-to-bot-
                  tom) in the order in which they are inserted.
    
           void Change(Interactor*)
                  Notify the box that the  given  interactor's  shape
                  has  changed.   If  change propagation is true, the
                  box will modify its own shape to reflect the change
                  and  notify its parent.  Regardless of propagation,
                  the box will recompute the positions of the  compo-
                  nent  interactors and update any that have changed.
    
           void Remove(Interactor*)
                  Take an element of out  a  box.   Remove  does  not
                  cause  any immediate change to the other components
                  in the box; the Change  operation  must  be  called
                  after  one  or more Removes to update the component
                  positions.
    
           Glue(3I), Interactor(3I), Scene(3I), Shape(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/BrushCmd.html0000644000076500007650000000240307374262637020022 0ustar scottscott00000000000000
    
           BrushCmd - command for setting components' brush attribute
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/brushcmd.h>
    
    
    

    DESCRIPTION

           BrushCmd is a purely interpretive command for setting  the
           brush attribute of selected components.
    
    
    

    PUBLIC OPERATIONS

           BrushCmd(ControlInfo*, PSBrush* = nil)
           BrushCmd(Editor* = nil, PSBrush* = nil)
                  Create   a   BrushCmd,  optionally  specifying  the
                  PSBrush that components should adopt.
    
           virtual void Execute()
                  BrushCmd extends Execute to set the  value  of  the
                  affected  editor's BrushVar instance, if it defines
                  one.
    
           PSBrush* GetBrush()
                  Return the PSBrush supplied in the constructor.
    
    
    

    SEE ALSO

           Command(3U), pspaint(3U), statevars(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Button2_6.html0000644000076500007650000001570307374262637020104 0ustar scottscott00000000000000
    
           ButtonState,  Button, TextButton, PushButton, RadioButton,
           CheckBox - interactive buttons
    
    
    

    SYNOPSIS

           #include <InterViews/button.h>
    
    
    

    DESCRIPTION

           Button is a class of interactors that can set the value of
           a  piece of state.  ButtonState is a class of objects that
           contain a value and a list of buttons  that  can  set  its
           value.   A  value  is  either  an  integer or an arbitrary
           pointer.
    
           TextButton is a subclass of Button that has an  associated
           text  label  to be displayed inside or to the right of the
           button.  PushButton, RadioButton, and  CheckBox  are  sub-
           classes of TextButton that provide particular displays for
           buttons.  Each kind of button will display itself  differ-
           ently  for  each  of the five possible cases: ``enabled'',
           when the button is listening to input, ``disabled'',  when
           the button is not listening, ``chosen'', when the button's
           value is equal to its button state's value, ``hit'',  when
           a  button  that  is not chosen first receives a DownEvent,
           and ``same-hit'', when a button that is chosen receives  a
           DownEvent.
    
           When  a  button receives a DownEvent, it calls the virtual
           Refresh() to update its  display.   It  then  reads  input
           waiting  for  an  UpEvent.  If the UpEvent coordinates are
           also within the button, then it calls the virtual Press().
           The  default  Press  operation sets the associated state's
           value to the button's value.
    
           A button can have a list of attached buttons.  When a but-
           ton  is  not chosen its attached buttons are ``disabled'',
           meaning they ignore all input events.
    
    
    

    BUTTONSTATE OPERATIONS

           ButtonState()
           ButtonState(int)
           ButtonState(void*)
                  Define a button state optionally  with  an  initial
                  value.
    
           void Attach(Button*)
                  Add  a  button to the list associated with a button
                  state.  The button will be notified when the button
                  state's value is modified.
    
           void Detach(Button*)
                  Remove  a  button  from  the list associated with a
                  button state.
    
           void GetValue(void*&)
                  Get the value of a button.
    
           void SetValue(int)
           void SetValue(void*)
                  Set the value of a button state and notify all  the
                  buttons associated with the state.
    
           void operator=(ButtonState&)
                  Copy the value of one button state to another.  The
                  button list associated with the source button state
                  is not copied.
    
    
    

    BUTTON OPERATIONS

           void PushButton(const char* text, ButtonState* s, int v)
           void PushButton(const char* text, ButtonState* s, void* v)
                  Construct a button with text in the  center  and  a
                  polygon  on  the  outside.   The  polygon is like a
                  rectangle, but with rounded corners.  When  chosen,
                  the  entire  button  is  drawn  with foreground and
                  background colors reversed.
    
           void RadioButton(const char* text, ButtonState* s, int v)
           void RadioButton(const char* text, ButtonState* s, void*
                  v)
                  Construct  a  button  with a circle on the left and
                  text on the right.  When hit, a  second  circle  is
                  drawn inside the first.  When chosen, a filled cir-
                  cle is drawn inside the outer circle.
    
           void CheckBox(const char* text, ButtonState* s, int on,
                  int off)
           void  CheckBox(const  char* text, ButtonState* s, void*
                  on, void* off)
                  Construct a button with a rectangle on the left and
                  text on the right.  When hit, a second rectangle is
                  drawn  inside the first.  When chosen, two diagonal
                  lines are drawn connecting the opposite corners  of
                  the  rectangle.   When  a  checkbox  is pressed the
                  first time, it sets s to off if the value is on and
                  sets  s  to  on otherwise.  Subsequent presses swap
                  the values of the checkbox and s.
    
           void Attach(Button*)
                  Add to this button's list  of  associated  buttons.
                  These buttons are enabled when the button is chosen
                  and disabled when it is not chosen.
    
           void Detach(Button*)
                  Remove a button from this button's list of  associ-
                  ated buttons.
    
                  Stop  listening  to input events.  Disabled buttons
                  are typically ``grayed out''  by  drawing  a  half-
                  filled rectangle in the background.
    
           void Enable()
                  Start listening to input events.
    
           void Choose()
                  Make  the button as chosen, enabling any associated
                  buttons.
    
           void Handle(Event&)
                  If the event type is DownEvent and  the  button  is
                  enabled,  call  Refresh  and  read  events until an
                  UpEvent occurs.  If the button is the target of the
                  UpEvent, then call Press.
    
           virtual void Press()
                  Take  the  appropriate  action for the button being
                  pressed.  The default  is  to  set  the  associated
                  state to the button's value, which will trigger all
                  related buttons to update their display.
    
           virtual void Refresh()
                  Update the button display.
    
           void SetDimensions(int width, int height)
                  Specify  the  natural  size  of  the  button.   The
                  default size is a function of the size of the text.
                  This routine is obsolete;  use  Interactor::Reshape
                  instead.
    
           void UnChoose()
                  Mark  the button as not chosen, disabling any asso-
                  ciated buttons.
    
    
    

    SEE ALSO

           Event(3I), Interactor(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Catalog.html0000644000076500007650000004103107374262637017665 0ustar scottscott00000000000000
    
           Catalog - stores and retrieves named objects
    
    
    

    SYNOPSIS

           #include <Unidraw/catalog.h>
    
    
    

    DESCRIPTION

           A catalog provides independent name-to-object mappings for
           component  subjects,  commands,  tools,  and  editor  info
           objects.   Once  named,  an object can be retrieved later,
           even if the application has  been  exited  and  restarted.
           The  catalog  thus  provides a means for saving objects in
           non-volatile form for subsequent retrieval.
    
    
    

    PUBLIC OPERATIONS

           Catalog(const char* domainName, Creator*, float version)
                  Construct  a  catalog,  supplying  an  application-
                  unique domain name, a creator object, and a version
                  number.  Unidraw objects may use  the  domain  name
                  for  file type checking purposes, and they may rely
                  on the version number to  handle  evolving  storage
                  formats.
    
           virtual boolean Save(EditorInfo*, const char*)
           virtual boolean Save(Component*, const char*)
           virtual boolean Save(Command*, const char*)
           virtual boolean Save(Tool*, const char*)
                  Save  an  object instance under the specified name.
                  The catalog stores a textual representation for the
                  object  in  a file with the given name; therefore a
                  name with embedded slashes corresponds to the  path
                  name  for the file containing the textual represen-
                  tation.  These operations return false if the  file
                  could not be written.
    
           virtual boolean Retrieve(const char*, EditorInfo*&)
           virtual boolean Retrieve(const char*, Component*&)
           virtual boolean Retrieve(const char*, Command*&)
           virtual boolean Retrieve(const char*, Tool*&)
                  Retrieve  an  object  instance having the specified
                  name.  The catalog reconstructs an instance of  the
                  object   from   the  corresponding  file  when  the
                  instance is first retrieved.  Subsequent retrievals
                  with  the  same  name  return  a  reference  to the
                  instance  already  in  memory.   These   operations
                  return  false  if  the instance could not be recon-
                  structed from the file.
    
           virtual void Forget(EditorInfo*, const char* = nil)
           virtual void Forget(Component*, const char* = nil)
           virtual void Forget(Command*, const char* = nil)
           virtual void Forget(Tool*, const char* = nil)
                  Forget the name-to-object  mapping  for  the  given
                  which  is  useful  when  an instance has been saved
                  under different names.
    
           virtual const char* GetName(EditorInfo*)
           virtual const char* GetName(Component*)
           virtual const char* GetName(Command*)
           virtual const char* GetName(Tool*)
                  Get a name  associated  with  an  instance.   These
                  operations  do  not  specify which name is returned
                  for instances that have been saved under more  than
                  one name.
    
           virtual boolean Valid(const char*, EditorInfo*&)
           virtual boolean Valid(const char*, Component*&)
           virtual boolean Valid(const char*, Command*&)
           virtual boolean Valid(const char*, Tool*&)
                  Return  whether  the  given  name  has  an instance
                  already associated with it (i.e., it has been saved
                  or retrieved) and if so return that instance in the
                  second parameter.
    
           virtual Component* Copy(Component*)
           virtual Command* Copy(Command*)
           virtual Tool* Copy(Tool*)
                  Copy an instance by saving  it  under  a  temporary
                  name,  then  retrieving  it, and finally forgetting
                  the temporary name.  A component, command, or tools
                  subclass  can  use  the  corresponding  function to
                  implement their Copy function easily,  possibly  at
                  the expense of run-time performance.
    
           virtual boolean Exists(const char*)
                  Return  whether  a file with the given name exists.
                  A return value of true does  not  necessarily  mean
                  that  an  object has been saved under the specified
                  name.
    
           virtual boolean Writable(const char*)
                  Return whether it is permitted to  save  an  object
                  under the given name.
    
           void SetClipboard(Clipboard*)
           Clipboard* GetClipboard()
                  Set  or get a globally-accessible clipboard object.
    
           void SetEditorInfo(EditorInfo*)
           EditorInfo* GetEditorInfo()
                  Set  or  get  a  globally-accessible  editor   info
                  object.
    
           const char* GetName()
           Creator* GetCreator()
                  Return  the values of constructor-specified parame-
                  ters.
    
           float FileVersion()
                  Return the Unidraw version number of the file being
                  read currently.
    
           const char* GetAttribute(const char*)
                  Return  the  value  of  a  user preference with the
                  given name as stored in the  global  PropertySheet.
                  This operation is equivalent to the World operation
                  of the same name.
    
           void WriteVersion(int, ostream&)
           void WriteClassId(ClassId, ostream&, int id = 0)
           void WriteComponent(Component*, ostream&)
           void WriteCommand(Command*, ostream&)
           void WriteTool(Tool*, ostream&)
           void WriteStateVar(StateVar*, ostream&)
           void WriteTransferFunct(TransferFunct*, ostream&)
           void WriteBgFilled(boolean, ostream&)
           void WriteBrush(PSBrush*, ostream&)
           void WriteColor(PSColor*, ostream&)
           void WriteFont(PSFont*, ostream&)
           void WritePattern(PSPattern*, ostream&)
           void WriteTransformer(Transformer*, ostream&)
           void WriteString(const char*, ostream&)
           void WriteControlInfo(ControlInfo*, ostream&)
           void WriteEditorInfo(EditorInfo*, ostream&)
           void WriteBitmap(Bitmap*, ostream&)
           void WriteBitmapData(Bitmap*, ostream&)
           void WriteGraymap(Raster*, ostream&)
           void WriteGraymapData(Raster*, ostream&)
           void WriteRaster(Raster*, ostream&)
           void WriteRasterData(Raster*, ostream&)
    
           int ReadVersion(istream&)
           ClassId ReadClassId(istream&, int& id)
           Component* ReadComponent(istream&)
           Command* ReadCommand(istream&)
           Tool* ReadTool(istream&)
           StateVar* ReadStateVar(istream&)
           TransferFunct* ReadTransferFunct(istream&)
           int ReadBgFilled(istream&)
           PSBrush* ReadBrush(istream&)
           PSColor* ReadColor(istream&)
           PSFont* ReadFont(istream&)
           PSPattern* ReadPattern(istream&)
           Transformer* ReadTransformer(istream&)
           char* ReadString(istream&)
           ControlInfo* ReadControlInfo(istream&)
           EditorInfo* ReadEditorInfo(istream&)
           Bitmap* ReadBitmapData(istream&)
           Raster* ReadGraymap(istream&)
           Raster* ReadGraymapData(istream&)
           Raster* ReadRaster(istream&)
           Raster* ReadRasterData(istream&)
                  Write and read information via  streams.   Catalog-
                  managed classes use these operations in their Write
                  and Read functions to write and  read  the  objects
                  they contain.  The operations for writing and read-
                  ing bitmaps and rasters  have  accompanying  opera-
                  tions  that  write  and  read  only  the ASCII data
                  (i.e., omitting transformation  and  other  Unidraw
                  format-specific  data)  that encodes their informa-
                  tion content.
    
           PSBrush* ReadBrush(const char* definition, int index)
           PSColor* ReadColor(const char* definition, int index)
           PSFont* ReadFont(const char* definition, int index)
           PSPattern* ReadPattern(const char*, int index)
                  Return a PostScript paint object  corresponding  to
                  the value of a user preference with the given defi-
                  nition and index number as  stored  in  the  global
                  PropertySheet.   Each  string  in  the  X  defaults
                  database    of     the     form     ``<application-
                  Name>.resource:definition''  sets  a resource.  The
                  resource names and their definitions are  specified
                  as follows:
    
                  brushi:  Define  the ith brush resource.  The Read-
                  Brush operation retrieves the brush object for this
                  resource  given  a definition.  The definition usu-
                  ally specifies two numbers:  a  16-bit  hexadecimal
                  number to define the brush's line style (each 1 bit
                  draws a dash and each 0 bit produces a gap), and  a
                  decimal integer to define the brush's width in pix-
                  els.  For example,  ``ffff  1''  defines  a  single
                  pixel  wide solid line. If the definition specifies
                  only the  string  ``none'',  then  it  defines  the
                  nonexistent brush.
    
                  fgcolori: Define the ith foreground color resource.
                  The ReadColor operation retrieves the color  object
                  for  this resource given a definition.  The defini-
                  tion contains a string defining  the  name  of  the
                  color, optionally followed by three decimal numbers
                  between 0 and 65535 to define the red,  green,  and
                  blue  components  of  the  color's  intensity.  The
                  intensities override the name; that is, the catalog
                  will  look  the  name  up in the database of common
                  colors only if you omit the intensities.  For exam-
                  ple, ``Indigo 48896 0 65280'' defines a color which
                  is a mixture of red and blue. You can define shades
    
                  bgcolori: The background color resource  definition
                  is  specified  in the same manner as the foreground
                  color.
    
                  fonti: Define the ith font resource.  The  ReadFont
                  operation   retrieves  the  font  object  for  this
                  resource given a definition.  The  definition  con-
                  tains  three  strings separated by whitespace.  The
                  first string defines the font's  name,  the  second
                  string  the corresponding print font, and the third
                  string the print  size.   For  example,  ``8x13bold
                  Courier-Bold 13'' defines the third font entry.
    
                  patterni:  Define  the  ith  pattern  resource. The
                  ReadPattern operation retrieves the pattern  object
                  for  this resource given a definition.  The defini-
                  tion can specify the pattern for a 16x16 bitmap,  a
                  8x8  bitmap,  a  4x4 bitmap, a grayscale number, or
                  the string ``none''.  You specify the 16x16  bitmap
                  with  sixteen  16-bit  hexadecimal numbers, the 8x8
                  bitmap with eight 8-bit  hexadecimal  numbers,  the
                  4x4 bitmap with a single 16-bit hexadecimal number,
                  and the grayscale number  with  a  single  floating
                  point  number.  The floating point number must con-
                  tain a period to distinguish itself from the single
                  hexadecimal number, and it must lie between 0.0 and
                  1.0, where 0.0 corresponds to a solid  pattern  and
                  1.0 to a clear pattern.  On the printer, the bitmap
                  patterns appear as bitmaps, the grayscale  patterns
                  appear  as  halftoned shades, and the ``none'' pat-
                  terns never obscure underlying graphics.  For exam-
                  ple, ``pattern8:8421'' defines a diagonally hatched
                  pattern.
    
    
           PSBrush* FindNoneBrush()
           PSBrush* FindBrush(int, int)
           PSColor* FindColor(const char*, int = 0, int = 0, int = 0)
           PSFont* FindFont(const char*, const char*, const char*)
           PSPattern* FindNonePattern()
           PSPattern* FindGrayLevel(float)
           PSPattern* FindPattern(int[], int)
                  Return  a  PostScript  paint object with the corre-
                  sponding attributes.  These operations return a new
                  paint object if no object with the given attributes
                  already exists; otherwise the operations return  an
                  existing instance with matching attributes.
    
           void Skip(istream&)
           void Mark(ostream&)
                  Mark  injects a synchronization sequence defined by
                  input stream and position  the  stream  immediately
                  after that sequence.
    
    
    

    PROTECTED OPERATIONS

           void Register(EditorInfo*, const char*)
           void Register(Component*, const char*)
           void Register(Command*, const char*)
           void Register(Tool*, const char*)
                  Register  an  object under a particular name in the
                  catalog's internal maps.  Objects are normally reg-
                  istered  automatically  when  they  are  stored  or
                  retrieved.
    
           int GetToken(istream&, char* buf, int buf_size)
                  Search an input stream for a sequence of characters
                  defined in the buffer buf of size buf_size.  GetTo-
                  ken returns the number of characters matched.
    
    
    

    SEE ALSO

           Clipboard(3U),    Command(3U),     Component(3U),     Con-
           trolInfo(3U),  Creator(3U),  EditorInfo(3U),  Graphic(3U),
           PropertySheet(3I),   StateVar(3U),   Tool(3U),   Transfer-
           Funct(3U),    World(3I),    globals(3U),    istream(3C++),
           ostream(3C++)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/catcmds.html0000644000076500007650000001216107374262640017725 0ustar scottscott00000000000000
    
           NewCompCmd,  PrintCmd,  QuitCmd,  RevertCmd,  SaveCompCmd,
           SaveCompAsCmd, ViewCompCmd - catalog-oriented commands
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/catcmds.h>
    
    
    

    DESCRIPTION

           The Unidraw library predefines a set  of  non-interpretive
           commands that let a user specify components to open, view,
           and save, plus commands for generating a PostScript exter-
           nal representation and for quitting the application.  New-
           CompCmd re-initializes its editor's component to  let  the
           user  start  editing afresh.  If the existing component is
           modified, NewCompCmd prompts the user to save it.   Print-
           Cmd  generates  a PostScriptView of the editor's component
           and lets the user send it to  a  file  or  to  a  printer.
           QuitCmd  quits the application, prompting the user to save
           modified components.  RevertCmd lets the user re-open  the
           current  component,  discarding  changes since it was last
           saved.  SaveCompAsCmd lets the user save a component under
           a  particular  name,  while  SaveCompCmd saves a component
           named previously.   Finally,  ViewCompCmd  lets  the  user
           specify another component to view in its editor.
    
    
    

    NEWCOMPCMD PUBLIC OPERATIONS

           NewCompCmd(ControlInfo*, Component* prototype = nil)
           NewCompCmd(Editor* = nil, Component* = nil)
                  Create  a  new NewCompCmd instance, optionally sup-
                  plying a prototype component.  When executed,  New-
                  CompCmd  will  make  its  editor edit a copy of the
                  prototype.  The editor's original component will be
                  deleted if no other editor refers to it.
    
           virtual boolean Reversible()
                  NewCompCmd is not reversible.
    
           Component* GetPrototype()
                  Return  the  prototype  component  specified in the
                  constructor.
    
    
    

    PRINTCMD PUBLIC OPERATIONS

           PrintCmd(ControlInfo*, PrintDialog* = nil)
           PrintCmd(Editor* = nil, PrintDialog* = nil)
                  Create a new PrintCmd instance, optionally  supply-
                  ing the PrintDialog to display when executed.
    
           virtual boolean Reversible()
                  PrintCmd is not reversible.
    
    
    

    PRINTCMD PROTECTED OPERATIONS

           void print(const char* print_cmd, const char* file)
                  Concatenates print_cmd and file and calls system(3)
    
           QuitCmd(ControlInfo*)
           QuitCmd(Editor* = nil)
                  Create a new QuitCmd instance.
    
           virtual boolean Reversible()
                  QuitCmd is not reversible.
    
    
    

    REVERTCMD PUBLIC OPERATIONS

           RevertCmd(ControlInfo*)
           RevertCmd(Editor* = nil)
                  Create a new RevertCmd instance.
    
           virtual boolean Reversible()
                  RevertCmd is not reversible.
    
    
    

    SAVECOMPCMD PUBLIC OPERATIONS

           SaveCompCmd(ControlInfo*)
           SaveCompCmd(Editor* = nil)
                  Create a new SaveCompCmd instance.
    
           virtual boolean Reversible()
                  SaveCompCmd is not reversible.
    
    
    

    SAVECOMPASCMD PUBLIC OPERATIONS

           SaveCompAsCmd(ControlInfo*, FileChooser* = nil)
           SaveCompAsCmd(Editor* = nil, FileChooser* = nil)
                  Create a  new  SaveCompAsCmd  instance,  optionally
                  supplying the FileChooser that will prompt the user
                  to name the component.
    
           virtual boolean Reversible()
                  SaveCompAsCmd is not reversible.
    
    
    

    VIEWCOMPCMD PUBLIC OPERATIONS

           ViewCompCmd(ControlInfo*, FileChooser* = nil)
           ViewCompCmd(Editor* = nil, FileChooser* = nil)
                  Create a new ViewCompCmd instance, optionally  sup-
                  plying the FileChooser that will prompt the user to
                  specify the component to view.  After the new  com-
                  ponent  is opened successfully, the editor's origi-
                  nal component will be deleted if  no  other  editor
                  refers to it.
    
           virtual boolean Reversible()
                  ViewCompCmd is not reversible.
    
    
    

    SEE ALSO

           BasicDialog(3U),  Command(3U),  Component(3U), Editor(3U),
           PostScriptView(3U), lpr(1).
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/CGlue.html0000644000076500007650000000620007374262637017311 0ustar scottscott00000000000000
    
           CGlue - connector glue
    
    
    

    SYNOPSIS

           #include <Unidraw/cglue.h>
    
    
    

    DESCRIPTION

           CGlue  defines  a  natural  size,  elasticity (its rate of
           stretching and shrinking relative  to  other  CGlue),  and
           deformation  limits  (total  amount  it  can  stretch  and
           shrink) in both the horizontal  and  vertical  dimensions.
           CGlue  can  be interposed between two connected connectors
           to augment their connectivity semantics; it acts like  two
           non-linear  springs, one horizontal and one vertical, con-
           necting the connectors' centers.
    
    
    

    PUBLIC OPERATIONS

           CGlue(
    
               float hnat = 0, float vnat = 0,
               float hshr = 0, float hstr = 0,
               float vshr = 0, float vstr = 0,
               float hshrlim = 0, float hstrlim = 0,
               float vshrlim = 0, float vstrlim = 0
           )
    
           CGlue(const Shape&)
                  Instantiate CGlue, providing the requisite  parame-
                  ters  explicitly  or  inferring  them  from a Shape
                  object.  If a shape is  supplied,  then  the  CGlue
                  adopts the shape's natural size, and it assigns the
                  shape's stretchability and shrinkability values  to
                  its   corresponding  CGlue  elasticity  members  to
                  obtain a proportionately equivalent elasticity.  It
                  also assigns the shape's stretchability and shrink-
                  ability values to its  deformation  limit  members.
                  The parameters are described below:
    
                  hnat,  vnat: horizontal and vertical natural sizes,
                  screen units
    
                  hshr, vshr: horizontal and vertical shrinking rate,
                  constant units
    
                  hstr,  vstr:  horizontal  and  vertical  stretching
                  rate, constant units
    
                  hshrlim, vshrlim: horizontal  and  vertical  shrink
                  limit, screen units
    
                  hstrlim,  vstrlim:  horizontal and vertical stretch
                  limit, screen units
    
                  Create a copy of this CGlue instance.
    
           void Rigid()
                  Set all elasticity and deformation limits equal  to
                  zero.
    
           void Interpose(const CGlue* glue)
                  Change  this  instance's  attributes to reflect the
                  series combination of this and glue.
    
    
    

    SEE ALSO

           Connector(3U), Shape(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/classes.html0000644000076500007650000000622207374262640017745 0ustar scottscott00000000000000
    
           classes  -  unique identifiers for catalog-managed objects
           and component views
    
    
    

    SYNOPSIS

           #include <Unidraw/classes.h>
    
    
    

    DESCRIPTION

           Classes for catalog-managed objects, including components,
           commands,  tools, state variables, and transfer functions,
           must be associated with mutually-unique class  identifiers
           that  can  be  written  onto  disk.  This allows a creator
           object to call the  appropriate  constructor  as  part  of
           recreating an object from disk.
    
           Also,  there must be a mechanism for creating an appropri-
           ate view given a subject; that is, there must be an  asso-
           ciation between a subject class and allowable view classes
           for that subject.   This  association  is  established  by
           defining  class  identifiers  for  component views.  These
           identifiers are formed by concatenating the identifier for
           a  given  component  subject class with an identifier that
           specifies a ``view category.''   For  example,  the  class
           identifier for the PostScript external view of a line com-
           ponent is the concatenation of the identifier for the line
           component  subject  class  and POSTSCRIPT_VIEW identifier,
           which specifies the category of external views for  gener-
           ating  PostScript.   This  makes  it possible to create an
           instance of the appropriate PostScript external view  sub-
           class given a line component subject.
    
           The  class identifiers for the Unidraw base and predefined
           derived classes are specified  in  the  classes.h  include
           file.    Applications   that  define  new  catalog-managed
           objects or component  views  should  define  unique  class
           identifiers  in  a  similar manner.  Class identifiers for
           catalog-managed objects are simply integers with  mnemonic
           macro  definitions,  usually  the class name in all-upper-
           case.  For example, the identifier for the LineComp compo-
           nent subject class is
    
           #define LINE_COMP 9030
    
           View  class  identifiers  are  specified using the Combine
           macro, which takes as its first argument the macro defini-
           tion  of  the  corresponding component subject identifier;
           its second argument is an identifier for  the  view  cate-
           gory.   The  Combine  macro  itself is then defined with a
           mnemonic  name.   For  example,  the  identifier  for  the
           PostScript  external  view  class  PSLine (which generates
           PostScript for the line component subject) is defined as
    
           #define PS_LINE Combine(LINE_COMP, POSTSCRIPT_VIEW)
           defined as
    
           #define POSTSCRIPT_VIEW 9103
    
           N.B.: All class identifiers in a given application must be
           unique.
    
    
    

    SEE ALSO

           Catalog(3U), Creator(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Clipboard.html0000644000076500007650000001154507374262637020221 0ustar scottscott00000000000000
    
           Clipboard - manages a list of graphical component subjects
    
    
    

    SYNOPSIS

           #include <Unidraw/clipboard.h>
    
    
    

    DESCRIPTION

           A Clipboard maintains a list of  GraphicComp  objects  and
           provides  operations  for  manipulating the list.  Catalog
           and Command classes use clipboards to store graphical com-
           ponents they affect.
    
    
    

    PUBLIC OPERATIONS

           Clipboard(GraphicComp* = nil)
                  Construct a new clipboard object, optionally with a
                  GraphicComp that should  appear  initially  on  the
                  list.
    
           virtual ~Clipboard()
                  Delete  the clipboard.  Deleting the clipboard does
                  not delete the GraphicComp objects it contains.
    
           void Init(Selection*)
           void CopyInit(Selection*)
                  Init initializes the clipboard  with  the  subjects
                  belonging  to  the  graphical  views  in  the given
                  selection object.   CopyInit  initializes  it  with
                  copies of the subjects.
    
           void Clear()
                  Remove  all GraphicComp objects from the clipboard.
                  The objects are not deleted.
    
           void DeleteComps()
                  Delete each GraphicComp  in  the  clipboard.   This
                  operation  does not delete the list itself; thus it
                  will still be possible to iterate through the  list
                  afterwards.   DeleteComps  is generally called just
                  before the clipboard is destroyed.
    
           void Append(GraphicComp*)
           void Prepend(GraphicComp*)
           void InsertAfter(Iterator, GraphicComp*)
           void InsertBefore(Iterator, GraphicComp*)
           void Remove(GraphicComp*)
           void Remove(Iterator&)
                  Operations  for  adding  and  removing  GraphicComp
                  objects   from   the  clipboard.   InsertAfter  and
                  InsertBefore take an iterator  that  specifies  the
                  point  before  or after which the given GraphicComp
                  should be inserted.  Remove(Iterator&) removes  the
                  GraphicComp to which the iterator refers and incre-
                  ments the iterator to point to the following Graph-
    
           void SetComp(GraphicComp*, Iterator&)
                  GetComp   effectively   dereferences  an  iterator,
                  returning the GraphicComp to which it points.  Set-
                  Comp  initializes an iterator to point to the given
                  GraphicComp object, assuming the object is  in  the
                  clipboard.
    
           void First(Iterator&)
           void Last(Iterator&)
           void Next(Iterator&)
           void Prev(Iterator&)
           boolean Done(Iterator&)
                  Operations  for  iterating through the GraphicComps
                  in the clipboard.  First and Last modify the itera-
                  tor  to  point  to  the  first and last GraphicComp
                  objects.  Next and Prev make the iterator point  to
                  the  succeeding  and preceding GraphicComp objects.
                  Done returns whether the  iterator  points  to  the
                  sentinel object on the list, which marks the begin-
                  ning and the end of list.
    
           boolean IsEmpty()
           boolean Includes(GraphicComp*)
                  Return whether or not the  clipboard  is  empty  or
                  whether it includes the given GraphicComp object.
    
           virtual Clipboard* Copy()
           virtual Clipboard* DeepCopy()
                  Copy  creates  a  new  clipboard with a list of the
                  same GraphicComp objects as this.  DeepCopy creates
                  a new clipboard containing copies of the objects in
                  this.
    
    
    

    PROTECTED OPERATIONS

           UList* Elem(Iterator)
           GraphicComp* Comp(UList*)
                  The Clipboard class stores its GraphicComp  objects
                  in a UList.  These convenience functions convert an
                  iterator into a UList  element  and  dereference  a
                  UList  element  to  obtain  a  GraphicComp  object,
                  respectively.
    
    
    

    SEE ALSO

           Catalog(3U), Command(3U),  GraphicComp(3U),  Iterator(3U),
           Selection(3U), UList(3U)
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ColorCmd.html0000644000076500007650000000305607374262637020022 0ustar scottscott00000000000000
    
           ColorCmd   -   command   for   setting  components'  color
           attributes
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/color.h>
    
    
    

    DESCRIPTION

           ColorCmd is a purely interpretive command for setting  the
           foreground  and  background  color  attributes of selected
           components.
    
    
    

    PUBLIC OPERATIONS

           ColorCmd(ControlInfo*, PSColor* fg = nil, PSColor* bg =
                  nil)
           ColorCmd(Editor* = nil, PSColor* fg = nil, PSColor* bg =
                  nil)
                  Create a ColorCmd, optionally specifying the  fore-
                  ground  (fg) and background (bg) PSColors that com-
                  ponents should adopt.
    
           virtual void Execute()
                  ColorCmd extends Execute to set the  value  of  the
                  affected  editor's ColorVar instance, if it defines
                  one.
    
           PSColor* GetFgColor()
           PSColor* GetBgColor()
                  Return the PSColors supplied in the constructor.
    
    
    

    SEE ALSO

           Command(3U), pspaint(3U), statevars(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Command.html0000644000076500007650000002743707374262637017707 0ustar scottscott00000000000000
    
           Command - base class for command objects
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/command.h>
    
    
    

    DESCRIPTION

           Command  is an abstract base class for objects that define
           operations on components and other objects.  Commands  are
           similar to messages in traditional object-oriented systems
           in that components can receive and respond to them.   Com-
           mands  can  also be executed in isolation to perform arbi-
           trary computation, and they can  reverse  the  effects  of
           such execution to support undo.
    
           Some  commands  (termed  purely interpretive commands) are
           interpreted by components but never executed in isolation,
           some  are executed but never interpreted (non-interpretive
           commands), and some are used in both ways.  Some  commands
           may  be  directly  accessible  to  the user through menus,
           while others are internal to the application.  In general,
           an  undoable  operation should be carried out by a command
           object.
    
    
    

    PUBLIC OPERATIONS

           virtual void Execute()
           virtual void Unexecute()
           virtual boolean Reversible()
                  Execute performs computation to carry out the  com-
                  mand's  semantics.   Unexecute performs computation
                  to reverse the effects of a previous Execute, based
                  on  whatever  internal state the command maintains.
                  A command is  responsible  for  maintaining  enough
                  state  to  reverse  one Execute operation; repeated
                  Unexecute operations will not undo the  effects  of
                  more than one Execute.
    
                  By  default, Execute examines the current selection
                  maintained in the  command's  editor  (see  below).
                  Execute  will do nothing if the nothing is selected
                  and the command's clipboard (see below) is empty or
                  non-existent.   Otherwise, if something is selected
                  and the command's clipboard is  non-existent,  then
                  Execute creates a clipboard containing the selected
                  component subjects.   Finally,  Execute  will  tell
                  each component on the command's clipboard to inter-
                  pret this.  Conversely, Unexecute tells each compo-
                  nent  on the clipboard (if any) to Uninterpret this
                  this.  Thus, commands are  purely  interpretive  by
                  default.
    
                  It  may  not be meaningful or appropriate, however,
                  for some commands to  reverse  their  effect.   For
                  The Reversible operation returns whether or not the
                  command is unexecutable  and  uninterpretable.   If
                  the  command  is  irreversible,  then it is ignored
                  during the undo process.   By  default,  Reversible
                  examines  the  command's  clipboard; if the command
                  doesn't have one, then the command is reversible if
                  the  user has at least one component view selected.
                  If the command has a non-empty clipboard,  then  it
                  is  deemed  reversible.   Subclasses  may  redefine
                  Reversible to base the command's  reversibility  on
                  their own criteria.
    
           virtual void Store(Component*, Data* = nil)
           virtual Data* Recall(Component*)
                  Since a command can affect more than one component,
                  commands must let components  that  interpret  them
                  store  undo  information  somewhere.   The commands
                  must also let  components  recall  the  information
                  during  uninterpretation.   Store  lets a component
                  store a Data object in the command itself  as  part
                  of  the  component's  interpretation  process.  The
                  component can later  retrieve  the  data  with  the
                  Recall  operation.  Store and Recall require a Com-
                  ponent argument to distinguish requests from poten-
                  tially many components.
    
           virtual void Log()
                  A  convenience  function for calling the equivalent
                  function on the global unidraw object.
    
           virtual void SetControlInfo(ControlInfo*)
           virtual void SetEditor(Editor*)
           virtual void SetClipboard(Clipboard*)
    
           virtual ControlInfo* GetControlInfo()
           virtual Editor* GetEditor()
           virtual Clipboard* GetClipboard()
                  Operations for  setting  and  getting  constructor-
                  specified  state  stored  in the command.  Commands
                  use a ControlInfo object to store information  from
                  which  to  build a user interface for executing the
                  command.  Commands keep a  pointer  to  the  Editor
                  instance  they potentially affect.  Finally, a com-
                  mand uses a clipboard to store  the  components  it
                  affects  or  affected.   A clipboard containing the
                  components to be affected can be  supplied  in  the
                  constructor, but more often the command itself cre-
                  ates and primes a clipboard based on  the  editor's
                  selected  components.  The Set... operations do not
                  delete the object being replaced.
    
           virtual void First(Iterator&)
           virtual void Next(Iterator&)
           virtual void Prev(Iterator&)
           virtual boolean Done(Iterator)
                  Operations for iterating over the  command's  chil-
                  dren,  if  any.   These  operations  do  nothing by
                  default.  Commands  that  compose  other   commands
                  should  redefine these operations to permit traver-
                  sal of their children.  First and  Last  initialize
                  an  iterator  to  point to the beginning and end of
                  the list of children,  respectively.   Next  incre-
                  ments the iterator to point to the following child,
                  while Prev decrements the iterator to point to  the
                  preceding  child.   Done returns whether or not the
                  iterator points beyond the first or last  child  in
                  the list.
    
           virtual Component* Copy()
                  Return  a  copy  of the command.  Subclasses should
                  redefine this operation to return  an  instance  of
                  their type.
    
           virtual void Read(istream&)
           virtual void Write(ostream&)
                  Read  and  write the command's contents to a stream
                  to support catalog operations.  Read and write typ-
                  ically  call  first  the  corresponding  operations
                  defined by their parent class, and then  they  read
                  or write their class-specific state.  Note that you
                  must ensure that the objects are read in  the  same
                  order they are written.
    
           virtual ClassId GetClassId()
           virtual boolean IsA(ClassId)
                  GetClassId  returns the unique class identifier for
                  the Command subclass, while IsA returns whether the
                  instance is of a class or subclass corresponding to
                  the given identifier.   IsA  typically  checks  the
                  given  identifier  against  the  instance's own (as
                  defined by its GetClassId operation)  and,  failing
                  that, calls its parent classes' IsA operation.  All
                  subclasses must  redefine  GetClassId  and  IsA  to
                  ensure  that  their identifiers are unique and that
                  instances are written and read properly.
    
           virtual ClassId GetSubstId(const char*& delim)
                  A Command subclasses  can  redefine  GetSubstId  to
                  specify a command that can substitute for it.  This
                  lets applications that do not define  a  particular
                  command subclass still read in a substitute that is
                  compatible with the subclass.  The substitute class
                  should  be  one  of  the predefined commands in the
                  Unidraw library.  This guarantees that all applica-
                  substitute.  When an another Unidraw  application's
                  catalog   reads  this  object,  it  can  create  an
                  instance of the substitute (which it is  guaranteed
                  to  define)  instead  of the original (which it may
                  not define).
    
                  The original should read and write  a  superset  of
                  the  substitute's  data.   The catalog will read to
                  the end of the substitute's data and  then  advance
                  the  stream  to the point following the sequence of
                  characters specified by  delim,  saving  the  extra
                  characters  between  the  two points in the stream.
                  When the substitute object is  saved  subsequently,
                  the original class identifier will be written along
                  with the substitute's data plus the  extra  charac-
                  ters saved previously.  Thus information needn't be
                  lost as a result of being read and  written  by  an
                  unsophisticated application.
    
    
    

    PROTECTED OPERATIONS

           Command(ControlInfo*, Clipboard* = nil)
           Command(Editor* = nil, Clipboard* = nil)
                  The constructors are protected to prevent instatia-
                  tion of the abstract base class.  You can supply  a
                  ControlInfo  or  Editor  and an optional clipboard.
                  Only commands that will be accessible to  the  user
                  need  a ControlInfo object.  All commands should be
                  given an editor object before they are used.
    
           void InitCopy(Command*)
           ControlInfo* CopyControlInfo()
           Clipboard* CopyClipboard()
           Clipboard* DeepCopyClipboard()
                  Convenience functions  for  use  by  subclasses  in
                  their  Copy  operation.  InitCopy gives this a copy
                  of  the  given  command's  editor,  clipboard,  and
                  interpretation  data  stored by the components that
                  interpreted it, if any. CopyControlInfo  and  Copy-
                  Clipboard  return  copies  of  the  command's  Con-
                  trolInfo and Clipboard  objects,  respectively,  if
                  they  are  non-nil.  Both CopyControlInfo and Copy-
                  Clipboard simply check for a  nil  argument  before
                  calling  the  corresponding  Copy operations on the
                  objects.  DeepCopyClipboard checks for a nil  clip-
                  board  before  calling  DeepCopy  on  the command's
                  clipboard and returning the result.
    
           GraphicComp* GetGraphicComp()
                  A convenience function that returns the GraphicComp
                  in the editor that the command affects.
    
    
    

    SEE ALSO

           classes(3U), globals(3U), istream(3C++), ostream(3C++)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/CompletionEditor.html0000644000076500007650000000453307374262637021601 0ustar scottscott00000000000000
    
           MatchEditor - StringEditor with string completion
    
    
    

    SYNOPSIS

           #include <InterViews/compeditor.h>
    
    
    

    DESCRIPTION

           CompletionEditor is a StringEditor subclass with the added
           ability to complete  the  current  contents  of  the  edit
           buffer  against  a  specified  set  of strings.  A Comple-
           tionEditor is often useful when  a  user  must  specify  a
           selection from a large set of well-known strings--the user
           need only type the first few characters of the string;  he
           types  the completion character to fill out the remainder.
    
           When the user  types  the  completion  character,  Comple-
           tionEditor  checks  the current string against the list of
           possible completions.  If the current string is  a  prefix
           of one or more completion strings, characters are appended
           so that the edit string contains the longest  common  pre-
           fix;  if  the current string does not match any completion
           string, trailing characters are removed until  the  string
           matches at least one completion.  In any case, if there is
           more than one possible completion  of  a  string,  Comple-
           tionEditor rings the workstation bell.
    
    
    

    PUBLIC OPERATIONS

           CompletionEditor(ButtonState*,  const  char*  sample,
                  const char* done)
                  Create  a new CompletionEditor object.  The Button-
                  State, sample string, and  termination  string  are
                  passed to the StringEditor constructor.
    
           void  Completions(const char* completions[], int count,
                  char com- plete)
                  Specify the list of completion strings and the com-
                  pletion character.  The initial completion list  is
                  empty,  and  the completion character defaults to a
                  space.  CompletionEditor does not copy the  strings
                  in the list.
    
    
    

    SEE ALSO

           StringEditor(3I)
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Component.html0000644000076500007650000002314507374262637020263 0ustar scottscott00000000000000
    
           Component  - base class for objects that model domain-spe-
           cific elements
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/component.h>
    
    
    

    DESCRIPTION

           Component is an abstract base class for objects  that  are
           created,  edited,  and  composed  to  form domain-specific
           drawings.  Components represent the objects of interest in
           an  editing  domain,  encapsulating  their  appearance and
           semantics.  Components are partitioned into a subject  and
           zero  or more views: the subject encapsulates the context-
           independent state and operations of a component, and  each
           view supports a context-dependent presentation of the sub-
           ject.  A subject notifies its views whenever its state  is
           modified to allow them to change their state or appearance
           to reflect the modification.  The Component class  defines
           the  protocol  for component subjects, while ComponentView
           is the abstract base class defining the protocol for  com-
           ponent  views.  See ComponentView(3U) for more information
           on the component view class.
    
    
    

    PUBLIC OPERATIONS

           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  Interpret performs a  component-specific  operation
                  based  on  the type of command passed.  Uninterpret
                  reverses the effects of a preceding Interpret.  The
                  component  is  responsible for storing enough state
                  (either in itself or in the command) to  carry  out
                  the Uninterpret operation.
    
           virtual void Attach(ComponentView*)
           virtual void Detach(ComponentView*)
                  Attach  adds  a  component  view to the component's
                  list of views.  Note that by default  these  opera-
                  tions  do not check to ensure that the view is com-
                  patible with the subject.  Detach removes the argu-
                  ment from the component's list of views.
    
           virtual void Notify()
                  Notify  the  component's  views  that its state has
                  changed.  This operation calls Update on each  view
                  in the component's list of attached views.
    
           virtual void Update()
                  Other  classes may use this operation to notify the
                  component subject of a  possible  change  in  state
                  that  the  component  depends  upon. This operation
                  does nothing by default.
    
           virtual TransferFunct* GetTransferFunct()
                  Return the component's parent  and  transfer  func-
                  tion,  if  any.   These  operations  return  nil by
                  default.
    
           virtual Component* GetRoot()
                  Return the root component in this hierarchy.   Get-
                  Root  calls  GetParent  recursively and returns the
                  last non-nil parent, if any.
    
           virtual StateVar* GetState(const char*)
                  The component may maintain a string-to-state  vari-
                  able  mapping  to  provide  external  access to any
                  state variables it defines.  The GetState operation
                  returns  a  state  variable  given  an  identifying
                  string.  Defining such a mapping lets other objects
                  (typically  commands) query the component for state
                  variables that it may define without extending  the
                  component  protocol,  potentially  allowing  inter-
                  change of components from  different  applications.
                  This operation returns nil by default.
    
           virtual void First(Iterator&)
           virtual void Last(Iterator&)
           virtual void Next(Iterator&)
           virtual void Prev(Iterator&)
           virtual boolean Done(Iterator)
                  Operations  for  iterating  over the component sub-
                  ject's children, if any.  First and Last initialize
                  an  iterator  to  point to the beginning and end of
                  the list of children,  respectively.   Next  incre-
                  ments the iterator to point to the following child,
                  while Prev decrements the iterator to point to  the
                  preceding  child.   Done returns whether or not the
                  iterator points beyond the first or last  child  in
                  the list.
    
           virtual Component* Copy()
                  Return  a copy of the component.  Subclasses should
                  redefine this operation to return  an  instance  of
                  their type.
    
           virtual void Read(istream&)
           virtual void Write(ostream&)
                  Read and write the component's contents to a stream
                  to support catalog operations.  Read and write typ-
                  ically  call  first  the  corresponding  operations
                  defined by their parent class, and then  they  read
                  or write their class-specific state.  Note that you
                  must ensure that the objects are read in  the  same
                  order they are written.
    
           virtual boolean IsA(ClassId)
                  GetClassId  returns the unique class identifier for
                  the Component subclass, while IsA  returns  whether
                  the  instance is of a class or subclass correspond-
                  ing to the given identifier.  IsA typically  checks
                  the given identifier against the instance's own (as
                  defined by its GetClassId operation)  and,  failing
                  that, calls its parent classes' IsA operation.  All
                  subclasses must  redefine  GetClassId  and  IsA  to
                  ensure  that  their identifiers are unique and that
                  instances are written and read properly.
    
           virtual ClassId GetSubstId(const char*& delim)
                  A Component subclasses can redefine  GetSubstId  to
                  specify  a  component  that  can substitute for it.
                  This lets applications that do not define a partic-
                  ular  component subclass still read in a substitute
                  that is compatible with the subclass.  The  substi-
                  tute  class  should be one of the predefined compo-
                  nents in the Unidraw library.  This guarantees that
                  all applications can instantiate the substitute.
    
                  GetSubstId  returns  the  class  identifier for the
                  substitute.  When an another Unidraw  application's
                  catalog   reads  this  object,  it  can  create  an
                  instance of the substitute (which it is  guaranteed
                  to  define)  instead  of the original (which it may
                  not define).
    
                  The original should read and write  a  superset  of
                  the  substitute's  data.   The catalog will read to
                  the end of the substitute's data and  then  advance
                  the  stream  to the point following the sequence of
                  characters specified by  delim,  saving  the  extra
                  characters  between  the  two points in the stream.
                  When the substitute object is  saved  subsequently,
                  the original class identifier will be written along
                  with the substitute's data plus the  extra  charac-
                  ters saved previously.  Thus information needn't be
                  lost as a result of being read and  written  by  an
                  unsophisticated application.
    
           ComponentView* Create(ClassId)
                  Create  a view instance that is appropriate for the
                  component subject given a view category.  The rela-
                  tionship  between  subjects,  views, and view cate-
                  gories is encoded in their class identifiers.   See
                  classes(3U)  for  more information on class identi-
                  fiers and view categories.
    
    
    

    PROTECTED OPERATIONS

           void Component()
    
           ComponentView* View(UList*)
                  Each  component  maintains  a  list  of  its views,
                  implemented with a UList.  This  operation  returns
                  the component view associated with a given entry in
                  the UList.
    
           virtual void SetParent(Component* child, Component* par-
                  ent)
                  Notify  a child component that it has a new or dif-
                  ferent parent.   This  operation  does  nothing  by
                  default.   Composite  components  should  call this
                  function in their  structure-modifying  operations,
                  and  components  that  keep information about their
                  parents should redefine it to update this  informa-
                  tion.
    
    
    

    SEE ALSO

           Catalog(3U),  Command(3U), ComponentView(3U), Creator(3U),
           Iterator(3U), StatVar(3U),  TransferFunct(3U),  UList(3U),
           classes(3U), istream(3C++), ostream(3C++)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ComponentView.html0000644000076500007650000001137307374262637021116 0ustar scottscott00000000000000
    
           ComponentView - base class for views of objects that model
           domain-specific elements
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/compview.h>
    
    
    

    DESCRIPTION

           ComponentView is an abstract base class for views of  com-
           ponent  subjects.   Component  views provide a specialized
           presentation of the information in the  component  subject
           to which they are attached.  Usually there is at least one
           view subclass defined for each subclass of component  sub-
           ject.
    
    
    

    PUBLIC OPERATIONS

           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  These  operations  call  the  corresponding subject
                  operations by default.  They are  included  in  the
                  component  view  protocol  for  convenience,  since
                  other  objects  often  deal  with  component  views
                  rather than their subjects.
    
           virtual void Update()
                  Notify  the  view of a change in some state that it
                  depends on, normally state in  the  subject.   This
                  operation does nothing by default.
    
           virtual Component* GetParent()
                  Return  the  view's parent, if any.  Like component
                  subjects, component views may be structured hierar-
                  chically,  and  their  structure  may  or  may  not
                  reflect that of their subject.
    
           Component* GetSubject()
                  Return the component view's subject.
    
           virtual void First(Iterator&)
           virtual void Last(Iterator&)
           virtual void Next(Iterator&)
           virtual void Prev(Iterator&)
           virtual boolean Done(Iterator)
                  Operations for iterating over the component  view's
                  children,  if  any.   First  and Last initialize an
                  iterator to point to the beginning and end  of  the
                  list  of  children,  respectively.  Next increments
                  the iterator to point to the following child, while
                  Prev  decrements  the iterator to point to the pre-
                  ceding child.  Done  returns  whether  or  not  the
                  iterator  points  beyond the first or last child in
                  the list.
    
           virtual boolean IsA(ClassId)
                  GetClassId returns the unique class identifier  for
                  the   ComponentView  subclass,  while  IsA  returns
                  whether the instance is of a class or subclass cor-
                  responding  to the given identifier.  IsA typically
                  checks the given identifier against the  instance's
                  own  (as  defined by its GetClassId operation) and,
                  failing that, calls its parent classes' IsA  opera-
                  tion.   All subclasses must redefine GetClassId and
                  IsA to ensure that their identifiers are unique and
                  that view category information is defined properly.
                  See classes(3U) for more information on class iden-
                  tifiers and view categories.
    
    
    

    PROTECTED OPERATIONS

           ComponentView(Component* subject = nil)
                  The  constructor  initializes  the component view's
                  subject pointer to the given value.  The view  will
                  also  attach  itself to the subject if the argument
                  is non-nil.
    
           virtual void SetSubject(Component*)
                  Set the component's subject pointer  to  the  given
                  value.   By  default,  this operation does not call
                  Attach or Detach on the subject(s).
    
           virtual void SetParent(Component* child, Component* par-
                  ent)
                  Notify  a child component that it has a new or dif-
                  ferent parent.   This  operation  does  nothing  by
                  default.   Composite  components  should  call this
                  function in their  structure-modifying  operations,
                  and  components  that  keep information about their
                  parents should redefine it to update this  informa-
                  tion.
    
    
    

    SEE ALSO

           Command(3U), Component(3U), Iterator(3U), classes(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Connector.html0000644000076500007650000001447107374262637020255 0ustar scottscott00000000000000
    
           Connector, ConnectorView - base classes for connector sub-
           jects and views
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/connector.h>
    
    
    

    DESCRIPTION

           Connector is an abstract base class for  graphical  compo-
           nent  subjects  that enforce different connectivity seman-
           tics depending on the particular connector subclass.  Con-
           nectorView is the abstract base class for views of connec-
           tor subjects.  A connector can be connected to one or more
           other  connectors.   Once  connected,  two  connectors can
           affect each other's position in specific ways  as  defined
           by the semantics of the connection.
    
           Connectors  also  participate  in the propagation of state
           variable values during dataflow.  Two connected connectors
           with  bound  state  variables will assign the value of one
           state variable to other, and  the  direction  of  transfer
           depends on the connectors' transmission method.  For exam-
           ple, if the transmission method of connector C1 with bound
           state variable S1 is In, and if the transmission method of
           connector C2 with bound state variable S2 is Out,  and  if
           C1  and  C2  are  connected,  then S1 will be assigned the
           value of S2 during dataflow.
    
    
    

    CONNECTOR PUBLIC OPERATIONS

           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  In addition to (un)interpreting the commands Graph-
                  icComp  (un)interprets,  connectors also (un)inter-
                  pret DeleteCmd and CutCmd to sever and restore  any
                  connections to them.
    
           virtual void Connect(Connector*, CGlue* = nil);
                  Connect this connector to the given one, optionally
                  with a piece of CGlue interposed.   This  operation
                  allows redundant connections by default.
    
           virtual void Disconnect(Connector*)
           void DisconnectAll()
                  Disconnect  the  given  connector from this one, if
                  they are connected.  DisconnectAll calls Disconnect
                  on  all  connected  connectors until no connections
                  remain.
    
           virtual boolean ConnectedTo(Connector*)
                  Return whether this connector is connected  to  the
                  given one.
    
           virtual void GetCenter(float&, float&)
    
           virtual void SetBinding(StateVar*)
           virtual StateVar* GetBinding()
                  Assign and return the state variable bound  to  the
                  connector,  if any.  Only one state variable can be
                  bound to a connector at a time.
    
           virtual void SetTransMethod(TransMethod)
           virtual TransMethod GetTransMethod()
                  Assign  and  return  the  connector's  transmission
                  method.
    
           virtual void Transmit(Path* = nil)
                  Initiate  dataflow originating from this connector,
                  optionally based on  information  supplied  in  the
                  given  path  object.   Other Unidraw or application
                  objects call this operation whenever data modifica-
                  tions should be propagated.
    
    
    

    CONNECTOR PROTECTED OPERATIONS

           Connector(Graphic* = nil)
                  Initialize  the connector instance, optionally with
                  a graphic  whose  center  defines  the  connector's
                  position.
    
           virtual void ConnectMe(Connector*)
           virtual void DisconnectMe(Connector*)
                  Connectors  maintain  a  list  of the connectors to
                  which they are connected.  The Connect and  Discon-
                  nect operations update this connector's list, while
                  the ConnectMe and  DisconnectMe  operations  inform
                  their argument to update their lists.
    
           void Retransmit(Path*)
           void Retransmit(Connector* peer, Path*)
           boolean Transferable(Connector* peer)
                  The  Transmit  operation  uses  these operations to
                  propagate  state  variable   values.    The   first
                  Retransmit function calls the second one on each of
                  the connector's  peers  (i.e.,  the  connectors  to
                  which  it  is  connected)  if the path records that
                  this connector has not already been visited (other-
                  wise  propagation  ceases).   The  first Retransmit
                  copies the path if necessary to avoid  accumulating
                  visit information from multiple branches.  The sec-
                  ond Retransmit calls  Transferable,  which  returns
                  whether  the  value of this connector's state vari-
                  able can be transferred to the given  peer's  state
                  variable  based on the two connectors' transmission
                  methods.  If the values are transferable, then  the
                  Transferable  operation  carries out the assignment
                  to the peer's state variable as a side-effect.  The
                  parent  and  by calling the first Retransmit opera-
                  tion on the peer.
    
    
    

    CONNECTORVIEW PUBLIC OPERATIONS

           Connector* GetConnector()
                  Return the view's subject, if any.
    
    
    

    CONNECTORVIEW PROTECTED OPERATIONS

           ConnectorView(Connector* = nil)
                  The constructor takes  a  subject  as  an  optional
                  argument.   The view will attach itself to the sub-
                  ject if one is specified.
    
    
    

    SEE ALSO

           CGlue(3U),  GraphicComp(3U),  GraphicView(3U),   Path(3U),
           StateVar(3U), edit(3U0, globals(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ConnectTool.html0000644000076500007650000000260507374262637020546 0ustar scottscott00000000000000
    
           ConnectTool - tool for connecting connectors
    
    
    

    SYNOPSIS

           #include <Unidraw/Tools/connect.h>
    
    
    

    DESCRIPTION

           ConnectTool  lets  the user establish a connection between
           two connectors by direct manipulation.
    
    
    

    PUBLIC OPERATIONS

           ConnectTool(ControlInfo* = nil)
                  Create a new ConnectTool.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  CreateManipulator detects whether the user  clicked
                  on  a  connector.   If so, it delegates manipulator
                  creation to that connector, and  InterpretManipula-
                  tor  in  turn  delegates interpretation to the same
                  connector.  CreateManipulator clears  the  editor's
                  selection  and  returns a nil value if the user did
                  not click on a connector.
    
    
    

    SEE ALSO

           Connector(3U), Tool(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Control.html0000644000076500007650000001270207374262637017736 0ustar scottscott00000000000000
    
           Control, ControlState - select and execute an action
    
    
    

    SYNOPSIS

           #include <InterViews/control.h>
    
    
    

    DESCRIPTION

           A  control  is  a  monoscene  that  allows an action to be
           selected and executed.  The component of a control  deter-
           mines  the appearance associated with the control.  A con-
           trol state is  a  subject  that  coordinates  a  group  of
           related controls.  The control state contains a pointer to
           the currently selected control (if any).
    
           Controls are useful for grabbing  input  and  moving  over
           potentially   selectable   items.   Examples  of  controls
           include popup menus, pull-down menus, and menu items.   It
           is generally not necessary to call functions directly on a
           control.
    
    
    

    PUBLIC OPERATIONS

           Control(Interactor*)
                  Construct a new control with the  given  interactor
                  as the component.
    
           ~Control
                  Destruct   a  control.   Because  a  control  is  a
                  monoscene, deleting it implies deleting its  compo-
                  nent interactor.
    
           ControlState* State()
           void SetState(ControlState*)
                  Get or set the control state associated with a con-
                  trol.
    
           virtual void Handle(Event&)
                  Controls  are  initially  inactive.   A   DownEvent
                  causes  a  control  to become active.  If an active
                  control receives an EnterEvent,  it  will  set  the
                  current  selection to itself.  If an active control
                  receives a LeaveEvent,  it  will  set  the  current
                  selection to nil.
    
           virtual void Enable(boolean)
           boolean Enabled()
                  Depending on the argument, Enable enables (true) or
                  disables (false) the control.   Control  subclasses
                  can  check  whether the control is enabled with the
                  Enabled operation and then take whatever action  is
                  appropriate.
    
           virtual void Select()
                  Highlight  the  control and call the protected vir-
                  Call the protected virtual function Close and  then
                  unhighlight the control.
    
           virtual void Do()
                  Implement  a  selected action.  When a control sees
                  an UpEvent, it calls Do on the current selection.
    
           Control* ParentControl()
           Control* RootControl()
                  The control hierarchy does not  necessarily  corre-
                  spond  to  the  interactor hierarchy.  These opera-
                  tions return the control's parent  control  or  the
                  root  of  the control hierarchy, if any, as defined
                  by control subclasses.
    
    
    

    PROTECTED OPERATIONS

           virtual void Down()
           virtual void Up()
                  Down and Up are called when the control receives  a
                  DownEvent   and   an   UpEvent,  respectively.   By
                  default,  Down  activates  the  control  if  it  is
                  enabled,  and  Up deactivates the control and calls
                  Do on the current selection.
    
           virtual void Enter()
           virtual void Leave()
                  Enter makes the control the current selection if it
                  is  enabled  and  active, while Leave nullifies the
                  current selection if the  control  is  enabled  and
                  active.
    
           virtual void Open()
           virtual void Close()
                  The  base class Open and Close do nothing, but sub-
                  classes may insert and remove an  interactor,  such
                  as a pull-down menu.
    
           virtual void Grab()
                  Grab  reads  input and only passes through an event
                  if its target is an active control.
    
           virtual void Skip()
                  Skip reads and discards input events until it reads
                  an  event targetted for a control that is currently
                  grabbing input, as  indicated  by  IsGrabbing  (see
                  below).
    
           virtual void Busy()
           virtual void Done()
                  The Up operation calls Busy just before it calls Do
                  on the target, and it calls Done immediately after-
                  wards.   These  operations  do  nothing by default;
    
           virtual boolean IsGrabbing(Interactor*)
                  IsGrabbing returns true if the given interactor  is
                  grabbing control.
    
           void Reparent(Control* target, Control* parent)
                  Set  target's parent to parent.  Controls that com-
                  pose child controls should call this  operation  on
                  their children.
    
    
    

    SEE ALSO

           Event(3I), Interactor(3I), Menu(3I), Scene(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ControlInfo.html0000644000076500007650000000632107374262640020544 0ustar scottscott00000000000000
    
           ControlInfo  - object for storing control-related informa-
           tion
    
    
    

    SYNOPSIS

           #include <Unidraw/ctrlinfo.h>
    
    
    

    DESCRIPTION

           A ControlInfo object  stores  information  from  which  to
           build  a  Control  for executing a command or engaging the
           current tool. The ControlInfo object is  stored  with  the
           command or tool, thus providing all the information neces-
           sary to recreate the interface when the command or tool is
           retrieved  from  disk  through  a catalog. The ControlInfo
           object also defines the mapping between a  keycode  and  a
           UControl  instance to support keyboard equivalents via the
           KeyMap class.
    
    
    

    PUBLIC OPERATIONS

           ControlInfo(
               GraphicComp* label, const char* keylabel = ``'',
               const char* keycode = ``'', void* owner = nil
           )
    
           ControlInfo(
               const char* label , const char* = ``'',
               const char* = ``'', void* = nil
           )
                  Create a new ControlInfo instance, supplying either
                  a  GraphicComp  or a character string to define its
                  label's appearance.   The  label  parameter  is  an
                  iconic  or  textual  cue that a control displays to
                  identify the command or  tool  it  activates.   The
                  keylabel  parameter  specifies  a string to be dis-
                  played in the control that identifies the control's
                  keyboard  equivalent,  while  the keycode parameter
                  defines the mapping between a  keyboard  event  and
                  the  ControlInfo.   Finally,  the  owner  parameter
                  specifies the command or tool instance to which the
                  ControlInfo object corresponds.
    
           void SetLabel(GraphicComp*)
           void SetLabel(const char*)
           void SetKeyLabel(const char*)
           void SetKeyCode(const char*)
           void SetOwner(void*)
    
           GraphicComp* GetLabel()
           const char* GetKeyLabel()
           const char* GetKeyCode()
           void* GetOwner()
                  Explicitly   set  or  get  a  constructor-specified
                  parameter.  The Set  operations  delete  the  value
    
           virtual ControlInfo* Copy()
                  Return  a  copy of this ControlInfo object, copying
                  its constituent members.
    
    
    

    SEE ALSO

           Catalog(3U),  Command(3U),  KeyMap(3U),  Tool(3U),   UCon-
           trol(3U), uctrls(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Creator.html0000644000076500007650000000664507374262640017720 0ustar scottscott00000000000000
    
           Creator  - recreates catalog-managed objects from disk and
           instantiates component views from their class identifiers
    
    
    

    SYNOPSIS

           #include <Unidraw/creator.h>
    
    
    

    DESCRIPTION

           A creator object can reconstruct a catalog-managed  object
           from  disk  and  can  instantiate a component view given a
           class identifier.  Generally only the Catalog  class  uses
           the  creator  to reconstruct objects from disk, but it may
           be useful for other  classes  (e.g.,  the  Component  base
           class)  to  use  the  creator to create views of component
           subjects.
    
           Applications that derive new  catalog-managed  classes  or
           component  views  must  also  derive a subclass of Creator
           that extends the base class operations to support the  new
           classes.
    
    
    

    PUBLIC OPERATIONS

           Creator()
                  Instantiate  an  new  creator  object.  The Catalog
                  constructor  requires  an  instance  of  a  creator
                  object,  either  an  instance  of  the Creator base
                  class or an  instance  of  an  application-specific
                  Creator subclass.
    
           virtual void* Create(
               ClassId, istream& in, ObjectMap* objmap, int objid
           )
                  Create  an  instance  of the class corresponding to
                  the given class identifier.  Normally  this  opera-
                  tion will be used by the Catalog class exclusively.
                  This operation contains  a  switch  statement  that
                  calls  a CREATE macro for each possible class iden-
                  tifier.   The  CREATE  macro  takes  the   istream,
                  ObjectMap,  and  int arguments as parameters; it is
                  not important to  understand  how  the  macro  uses
                  these  arguments.   For  example, the entry for the
                  LineComp line component subject class is
    
                  case  LINE_COMP:   CREATE(LineComp,   in,   objmap,
                  objid);
    
                  Derived  Creator  classes must redefine this opera-
                  tion to include a switch statement for application-
                  specific classes, with the default case calling the
                  parent class's Create operation.
    
           virtual void* Create(ClassId id)
                  Create an instance of the view class  corresponding
                  ments of the form
    
                  if  (id  ==  <identifier  name>)  return new <class
                  name>;
    
                  For example, the entry for the PostScript  external
                  view class identifier for line components is
    
                  if (id == PS_LINE) return new PSLine;
    
                  Derived  Creator  classes must redefine this opera-
                  tion to include if statements for  application-spe-
                  cific  view classes, with the final statement being
                  a call to the parent classes's Create operation.
    
    
    

    SEE ALSO

           Catalog(3U), classes(3U), globals(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/CSolver.html0000644000076500007650000001112307374262637017667 0ustar scottscott00000000000000
    
           CSolver - enforces connector semantics
    
    
    

    SYNOPSIS

           #include <Unidraw/csolver.h>
    
    
    

    DESCRIPTION

           A CSolver object defines and implements a model for speci-
           fying connectivity semantics that connector subclasses can
           build upon to implement their specialized semantics.  Nor-
           mally, only one CSolver instance is used per  application,
           and only connector subclasses need access it.  The Unidraw
           class constructor initializes the csolver global to  point
           to  a  CSolver  instance  it  creates.   Thus applications
           should not instantiate CSolver directly.
    
           CSolver  models  a  connection  between   two   connectors
           (regardless  of their particular subclass or semantics) as
           a pair of generic connectors with a piece of CGlue  inter-
           posed.   The  CGlue characterizes the relationship between
           the connectors' centers in terms of a natural size  (which
           corresponds to the distance between the centers), elastic-
           ity, and deformation limits.  Connector subclasses specify
           their connectivity behavior with a CGlue instance and sub-
           sequently rely on the CSolver to reorient them to  conform
           to that behavior.  For example, when a pin is told to con-
           nect itself to another pin, it registers with  the  global
           csolver  a  connection  containing the two connectors (the
           pins themselves) and a piece of CGlue having zero  natural
           size, elasticity, and deformation limits.  This specifica-
           tion effectively constrains  the  connectors'  centers  to
           coincide.   The  connectivity semantics of other connector
           combinations, including those  involving  application-spe-
           cific connectors, must be specified using CGlue.
    
    
    

    PUBLIC OPERATIONS

           CSolver()
                  Create a new instance.  Application programs do not
                  normally instantiate CSolver explicitly.
    
           virtual void Connect(Connector*, Connector*, CGlue* = nil)
                  Specify   a   connection  between  two  connectors,
                  optionally with a piece of CGlue interposed.  Omit-
                  ting  the CGlue parameter is equivalent to specify-
                  ing a connection with  CGlue  having  zero  natural
                  size, elasticity, and deformation limits.
    
           void Disconnect(Connector*, Connector*)
           void Disconnect(Connector*)
                  Destroy  the  connection(s) established between two
                  connectors (the two-parameter form), or destroy all
                  connections to a given connector (the one-parameter
                  form).
                  Solve instructs the CSolver to  reorient  connected
                  connectors  to conform to their connectivity seman-
                  tics as reflected by its connection specifications.
                  Normally  this function is called automatically and
                  only in response to Unidraw::Update.
    
           CSolverState* GetState(Connector*)
           void SetState(CSolverState*)
                  CSolverState is a class that encapsulates  all  the
                  information  about  the connections in which a con-
                  nector participates.  Only CSolver can create or do
                  anything  with  a  CSolverState  instance. GetState
                  initializes and returns a CSolverState instance for
                  the  given  connector, and SetState establishes the
                  connections that a CSolverState instance  specifies
                  without  disturbing  existing  connections.   These
                  operations are  useful  when  it  is  necessary  to
                  reestablish  a  connector's  connections after they
                  have been lost, for example, by removing  the  con-
                  nector from the component hierarchy (as caused by a
                  command to delete the component).
    
           void Read(istream&)
           void Write(ostream&)
                  Explicitly  read/write   the   csolver's   contents
                  from/to  disk.  Normally only a catalog calls these
                  operations.
    
    
    

    SEE ALSO

           Catalog(3U), GGlue(3U), Connector(3U), globals(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/CVS/0000755000076500007650000000000010747654211016050 5ustar scottscott00000000000000ivtools-doc/doc/man3.1/CVS/Entries0000644000076500007650000001640410747654211017411 0ustar scottscott00000000000000/Adjuster.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /Banner.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /BasicDialog.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /Border.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /Box2_6.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /BrushCmd.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /Button2_6.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /CGlue.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /CSolver.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /Catalog.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /Clipboard.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /ColorCmd.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /Command.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /CompletionEditor.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /Component.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /ComponentView.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /ConnectTool.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /Connector.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /Control.html/1.1.1.1/Tue Nov 13 18:25:35 2001// /ControlInfo.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Creator.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Damage.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Data.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Deck2_6.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Dialog.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Dispatcher.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Editor.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /EditorInfo.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /EllipseComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /ExternView.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /FileBrowser.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /FileChooser.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /FontCmd.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Frame.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /GVUpdater.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Glue2_6.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Graphic.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /GraphicBlock.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /GraphicComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /GraphicCompTool.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /GraphicView.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Grid.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /IOCallback.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /IOHandler.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /ImportCmd.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Interactor.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Iterator.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /KeyMap.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /LineComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /LinkComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /MacroCmd.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /MagnifyTool.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Manipulator.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /MatchEditor.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Menu2_6.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Message.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /MoveTool.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /NOPCmd.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /PadComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Page.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Painter.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Panner.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Path.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Pattern.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /PatternCmd.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Perspective.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Picture.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /PinComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /PolygonComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /PostScriptView.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /RasterComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /RasterRect.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /RectComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Regexp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /ReqErr.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /ReshapeTool.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Resource.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /RotateTool.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /RpcHdr.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /RpcPeer.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /RpcReader.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /RpcRegistry.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /RpcService.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /RpcWriter.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Rubband.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /ScaleTool.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Scene.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Scroller.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /SelectTool.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Selection.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Sensor.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Shape.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /SlotComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /SplineComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /StateVar.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /StateVarView.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /StencilComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /StrBrowser.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /StrChooser.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /StretchTool.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /StringEditor.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Subject.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /TextBuffer.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /TextComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /TextDisplay.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /TextEditor.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Tool.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /TransferFunct.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Tray.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /UArray.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /UControl.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /UHashTable.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /ULabel.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /UList.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /UMap.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /UStencil.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Unidraw.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /UnidrawIntro.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Vertices.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /VerticesComp.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Viewer.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /Viewport.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /World.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /align.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /catcmds.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /classes.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /datas.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /edit.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /ellipses.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /geomobjs.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /globals.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /index.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /iostreamb.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /kybd.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /lines.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /manips.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /polygons.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /pspaint.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /rpcbuf.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /rpcstream.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /splines.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /statevars.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /stateviews.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /struct.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /transfns.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /transforms.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /uctrls.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /viewcmds.html/1.1.1.1/Tue Nov 13 18:25:36 2001// D ivtools-doc/doc/man3.1/CVS/Repository0000644000076500007650000000002710747654211020151 0ustar scottscott00000000000000ivtools-doc/doc/man3.1 ivtools-doc/doc/man3.1/CVS/Root0000644000076500007650000000007310747654211016716 0ustar scottscott00000000000000:ext:johnston@ivtools.cvs.sourceforge.net:/cvsroot/ivtools ivtools-doc/doc/man3.1/Damage.html0000644000076500007650000001261307374262640017467 0ustar scottscott00000000000000
    
           Damage - repairs damaged graphics
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/damage.h>
    
    
    

    DESCRIPTION

           Damage objects store damaged areas of a graphic for subse-
           quent incremental repair.  Areas of a  graphic  are  "dam-
           aged"  if they need to be redrawn for any reason, e.g., if
           their state has  been  modified  or  if  under/overlapping
           graphics  change  their appearance.  Damage objects try to
           minimize the  amount  of  redrawing  needed  to  repair  a
           graphic.  They are most useful when the graphic is compli-
           cated enough that it would be undesirable  to  redraw  the
           entire  canvas  when  the  graphic  is  modified.   Damage
           objects do not eliminate  the  need  for  an  interactor's
           Redraw  member  function,  though  they  could  be used to
           implement it.
    
    
    

    PUBLIC OPERATIONS

           Damage(Canvas* = nil, Painter* = nil, Graphic* = nil)
                  Create a new Damage object for  a  graphic  on  the
                  given canvas.  The painter is used to erase damaged
                  areas using its ClearRect function prior to redraw-
                  ing them.
    
           virtual void Incur(Graphic*)
           virtual void Incur(BoxObj&)
           virtual void Incur(
               Coord left, Coord bottom, Coord right, Coord top
           )
                  Notify  the  damage  object that a rectangular area
                  has been damaged, either  by  passing  the  graphic
                  that contributed the area or the area itself.
    
           virtual void Added(Graphic*)
                  Notify the damage object that the given graphic was
                  appended (not inserted) to the  graphic  but  never
                  drawn.   The  damage object can thus be responsible
                  for drawing newly added graphics as well.
    
           virtual void Repair()
                  Repair all damage incurred since  the  last  Repair
                  (or  since the damage object was created if this is
                  the first Repair).
    
           virtual void Reset()
                  Reset the damage object.  Any  damage  incurred  is
                  lost.
    
           virtual boolean Incurred()
                  Returns true if any damage has been incurred.
    
           void SetPainter(Painter*)
           void SetGraphic(Graphic*)
    
           Canvas* GetCanvas()
           Painter* GetPainter()
           Graphic* GetGraphic()
                  Set and get attributes of the damage object.
    
    
    

    PROTECTED OPERATIONS

           int Area(BoxObj&)
                  A  helper  function that returns the area in square
                  pixels occupied by the given BoxObj.
    
           virtual void DrawAreas()
           virtual void DrawAdditions()
                  Explicitly draw the areas  of  incurred  and  added
                  damage, respectively.
    
           virtual void Merge(BoxObj&)
                  Merge  the given BoxObj into the list of incur-dam-
                  aged areas, coalescing it into an existing area  if
                  the number of non-overlapping areas exceeds 2.
    
           void FirstArea(Iterator&)
           void FirstAddition(Iterator&)
           void Next(Iterator&)
           boolean Done(Iterator)
           BoxObj* GetArea(Iterator)
           Graphic* GetAddition(Iterator)
                  Operations  for iterating over the lists of damaged
                  areas (represented with BoxObj objects)  and  added
                  Graphics.   FirstArea  and FirstAddition initialize
                  the iterator to point to the first item on the cor-
                  responding  list,  Next  advances the iterator, and
                  Done returns true if the iterator points beyond the
                  end  of  the  list.  GetArea and GetAddition return
                  the BoxObj or Graphic to which the iterator points.
    
           UList* Elem(Iterator)
                  A  helper function for returning the UList to which
                  an iterator points.  The _areas protected member is
                  a  UList that stores the list of damaged areas, and
                  the _additions protected stores the list  of  added
                  graphics.
    
           void DeleteArea(BoxObj*)
           void DeleteAreas()
                  DeleteArea  is  a  helper function for deleting the
                  storage associated with a damaged  area,  including
                  the area itself and the UList element.  DeleteAreas
                  is a helper function that deletes the list of  dam-
                  aged areas.
    
           Canvas(3I),    Graphic(3U),   Iterator(3U),   Painter(3I),
           UList(3U), geomobjs(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Data.html0000644000076500007650000000163607374262640017165 0ustar scottscott00000000000000
    
           Data - object containing undo information for storage in a
           command
    
    
    

    SYNOPSIS

           #include <Unidraw/Command/data.h>
    
    
    

    DESCRIPTION

           Data is an abstract base class for objects that components
           store in commands they (un)interpret.  Components use Data
           subclasses to store  whatever  information  they  need  to
           uninterpret the command.
    
    
    

    PROTECTED OPERATIONS

           Data() The  constructor is protected to prevent instantia-
                  tion.
    
    
    

    SEE ALSO

           Command(3U), Component(3U), Resource(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/datas.html0000644000076500007650000000516107374262640017405 0ustar scottscott00000000000000
    
           ColorData, GSData, MobilityData, MoveData, VoidData - Data
           subclasses for storing common undo information
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/datas.h>
    
    
    

    DESCRIPTION

           The Unidraw library predefines several Data subclasses for
           storing  common  undo  information:  ColorData  stores two
           PSColors (usually representing foreground  and  background
           colors),  while  GSData  stores a complete set of graphics
           state in a FullGraphic object.   MobilityData  stores  the
           mobility  and  graphics state information needed to undo a
           change in mobility. MoveData stores a horizontal and  ver-
           tical  distance.  VoidData stores a void pointer as a use-
           ful alternative to deriving trivially from  Data  just  to
           store one word of information.
    
    
    

    COLORDATA PUBLIC OPERATIONS

           ColorData(PSColor*, PSColor*)
                  Create  a ColorData instance, supplying the PSColor
                  objects it stores.
    
    
    

    GSDATA PUBLIC OPERATIONS

           GSData(Graphic*)
                  Create a GSData  instance,  supplying  the  Graphic
                  object  from which to copy a complete set of graph-
                  ics state.   The  GSData  constructor  copies  this
                  information into its _gs member, from whence it can
                  be retrieved later.
    
    
    

    MOBILITYDATA PUBLIC OPERATIONS

           MobilityData(Mobility, Graphic*)
                  Create  a  MobilityData  instance,  supplying   the
                  mobility  and a Graphic object from which to copy a
                  complete set of graphics state.   The  MobilityData
                  constructor copies the graphic into its _gs member,
                  from whence it can be retrieved later.
    
    
    

    MOVEDATA PUBLIC OPERATIONS

           MoveData(float, float)
                  Create a MoveData instance, supplying two  floating
                  point  numbers  that  normally represent horizontal
                  and vertical movement.
    
    
    

    VOIDDATA PUBLIC OPERATIONS

           VoidData(void*)
                  Create a VoidData instance, supplying a pointer  to
                  an object of unknown type.
    
    
    

    SEE ALSO

           Data(3U), Graphic(3U), globals(3U)
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Deck2_6.html0000644000076500007650000000562007374262640017466 0ustar scottscott00000000000000
    
           Deck - a stack of interactors on top of each other
    
    
    

    SYNOPSIS

           #include <InterViews/deck.h>
    
    
    

    DESCRIPTION

           A  deck is a scene containing interactors that are concep-
           tually stacked on top of each other.  Only one  interactor
           is  visible  at  a  time.   A  deck is useful to implement
           ``paging'' through a document, or where only one  of  sev-
           eral similar components should be visible at a time, as in
           applications using alternate tool pallets  or  menus  with
           alternate entries.
    
           A  deck will try to stretch or shrink the visible interac-
           tor to fill the total space.  The natural size of  a  deck
           is the maximum of its components.
    
           A  deck uses its perspective to specify which component is
           visible.  The components are  numbered  in  the  order  in
           which  they are inserted into the deck, starting with one.
           A scroller or other interactor which operates on the  per-
           spective can be used to allow a user to specify the compo-
           nent to view.  Either horizontal or vertical scrolling can
           be used.
    
    
    

    PUBLIC OPERATIONS

           Deck() Construct a new deck.
    
           void Insert(Interactor*)
                  Add an interactor to the deck.
    
           void Change(Interactor*)
                  Notify  the  deck  that  an  interactor's shape has
                  changed.  If propagation is on, the deck recomputes
                  its own shape and notifies its parent.
    
           void Remove(Interactor*)
                  Take an interactor out of a deck.
    
           void Flip(int count = 1)
           void FlipTo(int position)
           void Top()
           void Bottom()
                  Perform  operations  on  the perspective to specify
                  the component to view.  Flip specifies  the  compo-
                  nent relative to the current component.  A positive
                  value of count specifies a component nearer to  the
                  ``bottom''  of  the  deck  (the components inserted
                  last), and a negative value specifies  a  component
                  nearer  to  the ``top''.  FlipTo specifies a compo-
                  nent by its absolute position in the deck.  A posi-
                  a  position  from  the bottom, starting at -1.  Top
                  and  Bottom  are  equivalent   to   FlipTo(1)   and
                  FlipTo(-1) respectively.
    
    
    

    SEE ALSO

           Interactor(3I), Scene(3I), Shape(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Dialog.html0000644000076500007650000000375107374262640017513 0ustar scottscott00000000000000
    
           Dialog - popup dialog interactor
    
    
    

    SYNOPSIS

           #include <InterViews/dialog.h>
    
    
    

    DESCRIPTION

           A  dialog is an interactor that handles input for a dialog
           box.  The dialog layout is specified by a separate  inter-
           actor  passed  to the dialog constructor.  The dialog com-
           pletes when  the  value  of  an  associated  button  state
           becomes  non-zero.   This button state is typically set by
           one or more buttons in the component interactor.
    
    
    

    PUBLIC OPERATIONS

           Dialog(ButtonState*, Interactor*, Alignment = Center)
                  Construct a new dialog with the given button  state
                  and interactor.  The alignment is used by the Popup
                  operation.
    
           virtual boolean Accept()
                  Set the dialog button state to zero and loop  read-
                  ing  events  until the button state's value becomes
                  non-zero.  Each event is passed to is target's Han-
                  dle  operation.   Return  true if the value is one,
                  false otherwise.
    
           virtual boolean Popup(Event&, boolean placed = true)
                  Insert the dialog into the  world  associated  with
                  the given event.  If placed is true, align the dia-
                  log around the event's (x, y)  coordinate.   Other-
                  wise,  the  dialog is inserted without specifying a
                  position.  Popup then calls  the  Accept  operation
                  and returns its value.
    
    
    

    SEE ALSO

           Button(3I), Interactor(3I), World(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Dispatcher.html0000644000076500007650000000761507374262640020405 0ustar scottscott00000000000000
    
           Dispatcher  -  wait  on  multiple file descriptors until a
           condition occurs
    
    
    

    SYNOPSIS

           #include <Dispatch/dispatcher.h>
    
    
    

    DESCRIPTION

           Conceptually, the dispatcher plays the role  of  detecting
           new  data on multiple input file descriptors and dispatch-
           ing the data to  the  appropriate  iohandlers.   The  dis-
           patcher also notifies iohandlers of expired timers.  Noti-
           fication of either an I/O condition or  an  expired  timer
           occurs by calling one of the iohandler's virtual functions
           (see IOHandler(3I)).   Since  a  program  needs  only  one
           instance  of  Dispatcher, a static member function is pro-
           vided to create that instance if necessary and return  it.
    
    
    

    PUBLIC OPERATIONS

           enum DispatcherMask { ReadMask, WriteMask, ExceptMask }
           virtual IOHandler* handler(int fd, DispatcherMask)
           virtual void link(int fd, DispatcherMask, IOHandler*)
           virtual void unlink(int fd)
                  Return  a  file descriptor's iohandler, link a file
                  descriptor  to  an  iohandler,  or  unlink  a  file
                  descriptor from its iohandlers.  The DispatcherMask
                  describes the I/O condition that the  iohandler  is
                  interested  in, such as whether the file descriptor
                  has new data available for  reading.   If  the  I/O
                  condition occurs, the iohandler will be expected to
                  read data from the file descriptor, write  data  to
                  the   file  descriptor,  or  handle  the  exception
                  depending on the I/O condition.
    
           virtual void startTimer(long sec, long usec, IOHandler*)
           virtual void stopTimer(IOHandler*)
                  Attach an iohandler to a timer or  remove  a  timer
                  before it expires.  A timer expires after the given
                  number of seconds and  microseconds  have  elapsed.
                  If  a timer expires, the dispatcher will notify the
                  attached iohandler.  Timers will not  expire  until
                  the   program   calls   either   variant   of  Dis-
                  patcher::dispatch.
    
           virtual void dispatch()
           virtual boolean dispatch(long& sec, long& usec)
                  With no arguments, block indefinitely until an  I/O
                  condition occurs or a timer expires and then notify
                  the attached iohandler.  With two arguments,  block
                  no  longer  than  the  given  number of seconds and
                  microseconds.  If both numbers are zero, the  func-
                  tion  will  return  immediately  after checking all
                  file descriptors and timers.  The return value will
                  timer  expired  or it exceeded the given poll time.
                  The function will decrease the given poll  time  by
                  the amount of time it spent blocking.
    
           static Dispatcher& instance()
           static void instance(Dispatcher*)
                  With no arguments, create an instance of Dispatcher
                  if it doesn't already exist and return it.  With an
                  argument,  set the instance of Dispatcher that will
                  be used throughout the program.
    
    
    

    SEE ALSO

           select(2), IOHandler(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/edit.html0000644000076500007650000002060707374262640017240 0ustar scottscott00000000000000
    
           ConnectCmd,  CopyCmd, CutCmd, DeleteCmd, DupCmd, Mobility-
           Cmd, PasteCmd, RedoCmd, ReplaceCmd, SlctAllCmd, UndoCmd  -
           editing commands
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/edit.h>
    
    
    

    DESCRIPTION

           The  Unidraw  library  defines several commands that offer
           common component editing functionality.  ConnectCmd  is  a
           non-interpretive  command  that  connects  two connectors.
           CopyCmd copies selected components onto its clipboard  (if
           it  defines  one)  or  onto the global clipboard.  CutCmd,
           DeleteCmd, DupCmd, and PasteCmd  are  purely  interpretive
           commands  that  are  always  interpreted by their editor's
           component.  MobilityCmd  gives  selected  components   the
           opportunity  to  set  their mobility based on the value it
           provides.  UndoCmd and RedoCmd are  non-interpretive  com-
           mands  that  simply  undo  and  redo the last command that
           affected their editor's  component.   ReplaceCmd  replaces
           selected   components   with   the  component  it  stores.
           Finally, SlctAllCmd is  a  non-interpretive  command  that
           selects all the components displayed in its editor.
    
    
    

    CONNECTCMD PUBLIC OPERATIONS

           ConnectCmd(
               ControlInfo*,
               Connector* source = nil, Connector* target = nil
           )
    
           ConnectCmd(Editor* = nil, Connector* = nil, Connector* =
                  nil)
                  The ConnectCmd  constructor  optionally  takes  two
                  connectors  as  parameters, the source and the tar-
                  get.  When executed, it will call Connect on source
                  with  target as its argument.  It will also set the
                  source's mobility to floating.
    
           void GetConnectors(Connector*& source, Connector*& target)
                  Return  the connectors supplied in the constructor.
    
    
    

    COPYCMD PUBLIC OPERATIONS

           CopyCmd(ControlInfo*, Clipboard* = nil)
           CopyCmd(Editor* = nil, Clipboard* = nil)
                  Create a CopyCmd instance, optionally specifying  a
                  clipboard in which to store copied components.
    
           virtual void Execute()
                  Execute does nothing if no components are selected.
                  Otherwise, Execute places a copy  of  the  selected
                  components  onto the CopyCmd's clipboard if is non-
                  nil or else onto  the  global  clipboard  (obtained
                  CopyCmd is not reversible.
    
    
    

    CUTCMD PUBLIC OPERATIONS

           CutCmd(ControlInfo*, Clipboard* = nil)
           CutCmd(Editor* = nil, Clipboard* = nil)
                  Create  a  CutCmd instance, optionally specifying a
                  clipboard in which to  store  the  components  that
                  were cut.
    
           virtual void Execute()
           virtual void Unexecute()
                  CutCmd  redefines  these operations to let the edi-
                  tor's component interpret it.  Execute will set the
                  value of the _executed protected member variable to
                  true as a side effect.  Similarly,  Unexecute  will
                  reset the value to false as a side effect.
    
    
    

    DELETECMD PUBLIC OPERATIONS

           DeleteCmd(ControlInfo*, Clipboard* = nil)
           DeleteCmd(Editor* = nil, Clipboard* = nil)
                  Create  a DeleteCmd instance, optionally specifying
                  a clipboard in which to store the  components  that
                  were deleted.
    
           virtual void Execute()
           virtual void Unexecute()
                  DeleteCmd  redefines  these  operations  to let the
                  editor's component interpret it. Execute  will  set
                  the  value  of the _executed protected member vari-
                  able to true as a side effect.   Similarly,  Unexe-
                  cute  will  reset  the  value  to  false  as a side
                  effect.
    
    
    

    DUPCMD PUBLIC OPERATIONS

           DupCmd(ControlInfo*, Clipboard* = nil)
           DupCmd(Editor* = nil, Clipboard* = nil)
                  Create a DupCmd instance, optionally  specifying  a
                  clipboard  in  which  to  store the components that
                  were duplicated.
    
           virtual void Execute()
           virtual void Unexecute()
                  DupCmd redefines these operations to let  the  edi-
                  tor's  component interpret it. Execute will set the
                  value of the _executed protected member variable to
                  true  as  a side effect.  Similarly, Unexecute will
                  reset the value to false as a side effect.
    
    
    

    MOBILITYCMD PUBLIC OPERATIONS

           MobilityCmd(ControlInfo*, Mobility = Fixed)
           MobilityCmd(Editor* = nil, Mobility = Fixed)
                  Create a MobilityCmd instance, optionally  specify-
    
           Mobility GetMobility()
                  Return the mobility specified in the constructor.
    
    
    

    PASTECMD PUBLIC OPERATIONS

           PasteCmd(ControlInfo*, Clipboard* = nil)
           PasteCmd(Editor* = nil, Clipboard* = nil)
                  Create a PasteCmd instance, optionally specifying a
                  clipboard  in  which  to  store the components that
                  will be pasted.
    
           virtual void Execute()
           virtual void Unexecute()
                  PasteCmd redefines these operations to let the edi-
                  tor's component interpret it.  Execute will set the
                  value of the _executed protected member variable to
                  true  as  a side effect.  Similarly, Unexecute will
                  reset the value to false as a side effect.
    
           virtual boolean Reversible()
                  PasteCmd is reversible if either its  clipboard  or
                  the global clipboard is non-empty.
    
    
    

    REDOCMD PUBLIC OPERATIONS

           RedoCmd(ControlInfo*)
           RedoCmd(Editor* = nil)
                  Construct a new RedoCmd.
    
           virtual boolean Reversible()
                  RedoCmd is not reversible.
    
    
    

    REPLACECMD PUBLIC OPERATIONS

           ReplaceCmd(ControlInfo*, GraphicComp* replacement = nil)
           ReplaceCmd(Editor* = nil, GraphicComp* replacement = nil)
                  Create  a  new ReplaceCmd, optionally supplying the
                  GraphicComp  that  will  replace  those  that   are
                  selected.
    
           GraphicComp* GetReplacement()
                  Return  the replacement GraphicComp supplied in the
                  constructor.
    
    
    

    SLCTALLCMD PUBLIC OPERATIONS

           SlctAllCmd(ControlInfo*)
           SlctAllCmd(Editor* = nil)
                  Construct a new SlctAllCmd.
    
           virtual boolean Reversible()
                  SlctAllCmd is not reversible.
    
    
    

    UNDOCMD PUBLIC OPERATIONS

           UndoCmd(ControlInfo*)
                  Construct a new UndoCmd.
    
           virtual boolean Reversible()
                  UndoCmd is not reversible.
    
    
    

    SEE ALSO

           Catalog(3U),  Clipboard(3U),  Command(3U),  Connector(3U),
           GraphicComp(3U), globals(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Editor.html0000644000076500007650000001635007374262640017541 0ustar scottscott00000000000000
    
           Editor  -  base class for top-level windows in an applica-
           tion
    
    
    

    SYNOPSIS

           #include <Unidraw/editor.h>
    
    
    

    DESCRIPTION

           An editor provides a complete user interface for editing a
           component  subject.   It  unites  one or more viewers with
           commands and tools that act upon  the  component  and  its
           subcomponents.   Editor  is an abstract class derived from
           MonoScene; the Editor class adds the protocol for  associ-
           ating  tools,  commands, and viewers with the component(s)
           they affect.  A programmer normally derives  one  or  more
           application-specific  editors  from  the Editor base class
           and defines their appearance with a composition of  inter-
           actors.   Each  window of a Unidraw application is usually
           an instance of an editor subclass designed for the editing
           domain,  and  it is these windows that the user recognizes
           as the application program.
    
    
    

    PUBLIC OPERATIONS

           virtual ~Editor()
                  Editors should not be  deleted  explicitly  if  the
                  Unidraw  object  is  used  to  open and close them.
                  Moreover, Editor subclasses should  not  explicitly
                  delete the component they edit.  The Unidraw object
                  will delete the editor's component after the editor
                  is  closed, provided no other editor references the
                  component (or its relatives) and the  component  is
                  not known to the catalog.
    
           virtual void Open()
           virtual void Close()
                  Open  informs  the  editor  that it has just become
                  visible and accessible to  the  user,  in  case  it
                  needs to know, and Close signals the editor that it
                  is no longer needed and should  perform  any  final
                  housekeeping  operations.   For example, the editor
                  may display a copyright message when  it  is  first
                  opened, or it make take the opportunity when closed
                  to warn the user  to  save  a  modified  component.
                  These operations simply notify the editor of a con-
                  dition and are not usually called by  the  applica-
                  tion; instead, the application makes editors appear
                  and disappear with the Unidraw object, which  calls
                  these operations as appropriate.
    
           virtual void Handle(Event&)
                  Editor  redefines Handle to interpret key events as
                  keyboard equivalents via  the  HandleKey  operation
                  (described below).  This is appropriate in the com-
                  keyboard events.
    
           virtual void Update()
                  By default, the  editor's  Update  operation  calls
                  Update on its viewer(s).
    
           virtual void SetComponent(Component*)
           virtual void SetViewer(Viewer*, int = 0)
           virtual void SetSelection(Selection*)
           virtual void SetKeyMap(Viewer*, int = 0)
           virtual void SetCurTool(Tool*)
    
           virtual Component* GetComponent()
           virtual Viewer* GetViewer(int = 0)
           virtual KeyMap* GetKeyMap()
           virtual Selection* GetSelection()
           virtual Tool* GetCurTool()
                  Assign  and  return  various objects managed by the
                  editor.  These operations are undefined by default.
    
                  The  component  is  the  object that the user edits
                  through the editor.  The editor can have any number
                  of  viewers,  identified  serially.   An editor can
                  maintain a key map for  defining  keyboard  equiva-
                  lents  and  a selection object for keeping track of
                  selected components (typically subcomponents of the
                  component  being  edited).   The  editor also has a
                  notion of the tool that is currently engaged,  that
                  is, the tool that would be used if the user clicked
                  in a viewer.  The SetCurTool and GetCurTool  opera-
                  tions assign and return this tool, respectively.
    
           virtual StateVar* GetState(const char*)
                  The  editor may maintain a string-to-state variable
                  mapping to provide external  access  to  any  state
                  variables   it  defines.   The  GetState  operation
                  returns  a  state  variable  given  an  identifying
                  string.   Defining  such  a mapping lets components
                  query the  editor  for  state  variables  that  may
                  affect  them without extending the editor protocol,
                  potentially allowing interchange of components from
                  different applications.  This operation returns nil
                  by default.
    
           virtual void InsertDialog(Interactor*)
           virtual void RemoveDialog(Interactor*)
                  Insert or remove  an  interactor  that  provides  a
                  modal interface, such as a dialog box.  By default,
                  these operations insert the dialog into  the  world
                  as  a  transient  window centered atop the editor's
                  canvas.  Subclasses can redefine them to insert and
                  remove  an  interactor (suitably embellished with a
                  will always be separated by a  RemoveDialog  opera-
                  tion; that is, multiple dialogs might be visible at
                  once.
    
    
    

    PROTECTED OPERATIONS

           Editor()
                  You cannot create instances of  the  Editor  class;
                  rather, you define subclasses that suit your appli-
                  cation.  The constructor is thus protected to  dis-
                  allow instantiation.
    
           virtual void HandleKey(Event&)
                  Executes  a command given a valid keyboard event as
                  defined by the key-to-command mapping in the KeyMap
                  object.
    
           virtual boolean DependsOn(Component*)
                  Return whether the editor depends on the given com-
                  ponent in any way.  Unidraw may destroy the  compo-
                  nent if no editor depends on it.
    
           void SetWindow(ManagedWindow*)
           ManagedWindow* GetWindow()
                  Get  and set the window associated with the editor.
    
    
    

    SEE ALSO

           Catalog(3U), Command(3U),  Component(3U),  Interactor(3I),
           KeyMap(3U),  MonoScene(3I),  Selection(3U),  StateVar(3U),
           Tool(3U), Unidraw(3U), Viewer(3U), Window(3I), World(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/EditorInfo.html0000644000076500007650000000565007374262640020356 0ustar scottscott00000000000000
    
           EditorInfo - stores information about an editor's contents
    
    
    

    SYNOPSIS

           #include <Unidraw/editorinfo.h>
    
    
    

    DESCRIPTION

           An EditorInfo object is a  UMap  that  stores  a  list  of
           strings  and/or  string tuples.  Application-specific edi-
           tors can use these objects to store information about what
           components,  commands, and tools they incorporate in their
           interface.  The programmer can write out this  information
           with  a  catalog  object  and  read it back in later.  The
           application can then let the user change the editor's con-
           figuration  by  editing  the  catalog-generated file.  For
           example, an EditorInfo object could have a list  of  names
           for  tools  in the editor's interface that have been saved
           with the catalog. When the application is  restarted,  the
           EditorInfo  object can be read first, and then the catalog
           can reconstruct the tools given their names.
    
    
    

    PUBLIC OPERATIONS

           EditorInfo()
                  Construct an EditorInfo instance.
    
           void Register(const char* name, const char* info = ``'')
           void UnregisterName(const char*)
           void UnregisterInfo(const char*)
           boolean Registered(const char* name)
                  Register enters a name or name-info tuple into  the
                  EditorInfo object.  UnregisterName removes an entry
                  whose name string  matches  the  given  one,  while
                  UnregisterInfo  removes  an entry whose info string
                  matches the given  one.  The  Registered  operation
                  returns  whether  or  not  an entry with a matching
                  name exists.
    
           const char* GetName(const char* info)
           const char* GetInfo(const char* name)
                  Name-info  tuple  lookup  operations.  The  GetName
                  operation returns the name corresponding to a given
                  info string, while the  GetInfo  operation  returns
                  the info string for a given name.
    
           const char* GetName(int index)
           const char* GetInfo(int index)
                  Name  or  info  strings can be accessed by an index
                  that reflects the order in which they  were  regis-
                  tered.   These  operations  return the name or info
                  string for a given index.
    
    
    

    SEE ALSO

           Catalog(3U), Editor(3U), UMap(3U)
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/EllipseComp.html0000644000076500007650000000500407374262640020521 0ustar scottscott00000000000000
    
           EllipseComp,  EllipseView,  PSEllipse  - ellipse component
           subject, view, and PostScript external representation
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/ellipse.h>
    
    
    

    DESCRIPTION

           EllipseComp is a GraphicComp that defines an ellipse.   It
           uses an Ellipse graphic to store its graphical attributes.
           EllipseView is a GraphicView for displaying  the  ellipse.
           PSEllipse  is  a PostScriptView that externalizes the sub-
           ject's information in PostScript form.
    
    
    

    ELLIPSECOMP PUBLIC OPERATIONS

           EllipseComp(SF_Ellipse* = nil)
                  The constructor takes  an  optional  stroked-filled
                  ellipse that defines the attributes of the ellipse.
    
           SF_Ellipse* GetEllipse()
                  Return the  SF_Ellipse  graphic  that  defines  the
                  ellipse's  attributes.  GetEllipse is simply a more
                  specific form of the GetGraphic operation.
    
    
    

    ELLIPSEVIEW PUBLIC OPERATIONS

           EllipseView(EllipseComp* = nil)
                  Create an  EllipseView,  optionally  supplying  the
                  subject.
    
           virtual void Interpret(Command*)
                  EllipseView  interprets AlignToGridCmd to align its
                  center to the grid.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  EllipseView redefines its response to  manipulation
                  with a GraphicCompTool.  The user clicks to specify
                  the center of the ellipse and then  drags  to  vary
                  its  axes.   The  center  and the axes will be con-
                  strained by gravity, if any.
    
           EllipseComp* GetEllipseComp()
                  Return the subject.
    
    
    

    PSELLIPSE PUBLIC OPERATIONS

           PSEllipse(EllipseComp* = nil)
                  Construct a PostScript external  representation  of
                  the given subject, if any.
    
    
    

    SEE ALSO

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ellipses.html0000644000076500007650000001056707374262640020137 0ustar scottscott00000000000000
    
           Ellipse,   S_Ellipse,   F_Ellipse,  SF_Ellipse,  S_Circle,
           F_Circle, SF_Circle - abstract base class  and  predefined
           subclasses for elliptical structured graphics
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/ellipses.h>
    
    
    

    DESCRIPTION

           Ellipse  is  an  abstract base class for elliptical struc-
           tured graphics objects.  It stores  geometric  information
           that  such  graphics require and provides helper functions
           for calculating extents and for hit detection.  Predefined
           subclasses  include  S_Ellipse, F_Ellipse, and SF_Ellipse,
           which draw stroked, filled, and  stroked-filled  ellipses,
           respectively; and S_Circle, F_Circle, and SF_Circle, which
           draw stroked, filled, and stroked-filled circles,  respec-
           tively.   The  stroked  subclasses  store  a  PSBrush, the
           filled subclasses store  a  PSPattern,  and  the  stroked-
           filled subclasses store one of each.
    
    
    

    ELLIPSE PUBLIC OPERATIONS

           void GetOriginal(Coord& x, Coord& y, int& rx, int& ry)
                  Return  the ellipse's geometry.  (x, y) defines the
                  ellipse's center, while rx and ry define its  hori-
                  zontal and vertical radii, respectively.
    
    
    

    ELLIPSE PROTECTED OPERATIONS

           Ellipse(Coord x, Coord y, int rx, int ry, Graphic* = nil)
                  The constructor is protected to disallow instantia-
                  tion of the  abstract  base  class.   An  ellipse's
                  geometry  is defined in terms of its center and its
                  horizontal and  vertical  radii.   The  constructor
                  also takes an optional graphic from which to obtain
                  an initial set of graphics state.
    
           void s_getExtent(
               float&, float&, float&, float&, float&, Graphic*
           )
    
           void f_getExtent(
               float&, float&, float&, float&, float&, Graphic*
           )
    
           boolean s_contains(PointObj&, Graphic*)
           boolean f_contains(PointObj&, Graphic*)
           boolean s_intersects(BoxObj&, Graphic*)
           boolean f_intersects(BoxObj&, Graphic*)
                  Helper functions that return extent and hit  detec-
                  tion information based on the bounding box that the
                  ellipse  defines.   s_getExtent,  s_contains,   and
                  s_intersects  return  information that accounts for
                  the width of a brush, as would be necessary if  the
                  filled.   Subclasses can use the operations to help
                  implement their getExtent, contains, and intersects
                  operations.
    
    
    

    SUBCLASS PUBLIC OPERATIONS

           S_Ellipse(Coord x, Coord y, int rx, int ry, Graphic* =
                  nil)
           F_Ellipse(Coord x, Coord y, int rx, int ry, Graphic* =
                  nil)
           SF_Ellipse(Coord x, Coord y, int rx, int ry, Graphic* =
                  nil)
           S_Circle(Coord x, Coord y, int radius, Graphic* = nil)
           F_Circle(Coord x, Coord y, int radius, Graphic* = nil)
           SF_Circle(Coord x, Coord y, int radius, Graphic* = nil)
                  Constructors for  the  various  predefined  Ellipse
                  subclasses.
    
    
    

    SEE ALSO

           Graphic(3U), geomobjs(3U), pspaint(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ExternView.html0000644000076500007650000000677107374262640020421 0ustar scottscott00000000000000
    
           ExternView,  PreorderView,  InorderView,  PostorderView  -
           base class for external representation  objects  and  sub-
           classes for common traversals
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/externview.h>
    
    
    

    DESCRIPTION

           ExternView  is the abstract base class for external repre-
           sentation objects.  Generally speaking, external represen-
           tation  objects convey domain-specific information outside
           the editor.  They are simply component views that  extract
           information  from  their  subject  and externalize it as a
           stream of bytes; thus the ExternView base class is derived
           from ComponentView.
    
           There  are  three  predefined  ExternView subclasses: Pre-
           orderView, InorderView,  and  PostorderView.   These  sub-
           classes  manage  subviews and support three common traver-
           sals of the external view hierarchy.
    
    
    

    EXTERNVIEW PUBLIC OPERATIONS

           virtual boolean Emit(ostream&)
           virtual boolean Definition(ostream&)
                  Emit and Definition make up  the  basic  ExternView
                  protocol.   Emit  initiates external representation
                  generation and calls  Definition  on  each  of  its
                  children.   Emit normally calls the external view's
                  own Definition operation first.  Then if the exter-
                  nal  view contains subviews, Emit invokes the chil-
                  dren's Definition operations in the proper order to
                  ensure a syntactically correct external representa-
                  tion.   Both  of  these  operation  do  nothing  by
                  default,  and  both return a boolean that indicates
                  whether the stream of bytes was generated  success-
                  fully.
    
           ExternView* GetView(Iterator)
           void SetView(ExternView*, Iterator&)
                  These operations do nothing by default.  Subclasses
                  that contain children should redefine them as  fol-
                  lows: GetView should return the ExternView to which
                  an iterator points.  SetView should initialize  the
                  iterator to point to a particular ExternView in the
                  list of children; it should initialize the iterator
                  to  point to a nil instance if the given ExternView
                  is not a child.
    
    
    

    EXTERNVIEW PROTECTED OPERATIONS

           ExternView(Component* = nil)
                  The abstract base class constructor is protected to
                  guard  against instantiation.  It takes the subject
    
           PreorderView,  InorderView,  and  PostorderView   redefine
           their  Definition operations to perform preorder, inorder,
           and postorder traversals of their children,  respectively.
           Each  child's  Definition  operation  is called during the
           traversal.  Note that every child must be an  instance  of
           the  same  ExternView  subclass  to  ensure  a  consistent
           traversal order.
    
    
    

    SEE ALSO

           Component(3U),      ComponentView(3U),       Iterator(3U),
           ostream(3C++)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/FileBrowser.html0000644000076500007650000001306007374262640020531 0ustar scottscott00000000000000
    
           FileBrowser - browse and/or select file names
    
    
    

    SYNOPSIS

           #include <InterViews/filebrowser.h>
    
    
    

    DESCRIPTION

           FileBrowser  is  a StringBrowser that displays file names.
           In addition  to  the  standard  StringBrowser  constructor
           parameters,  the FileBrowser constructor takes a directory
           name as an argument.  The  FileBrowser  scans  the  corre-
           sponding  directory,  appending the file names to its list
           of strings.  FileBrowser lets the user choose a file name,
           and the application queries the FileBrowser for the chosen
           file.
    
    
    

    PUBLIC OPERATIONS

           FileBrowser(ButtonState*, const char* dir, int  rows,  int
                  cols, boolean uniqueSel, int highlight, const char*
                  done)
           FileBrowser(const  char*  name,  ButtonState*,  const
                  char*, int, int, boolean, int, const char*)
                  Create  a new FileBrowser object.  The ButtonState,
                  rows, cols, uniqueSel, highlight,  done,  and  name
                  parameters have semantics identical to those of the
                  corresponding StringBrowser  parameters.   The  dir
                  parameter  specifies  the  directory  to search for
                  file names.  Internally, FileBrowser  prepends  dir
                  to  relative path specifications in operations that
                  require them, thus avoiding a chdir(2).
    
           boolean IsADirectory(const char*)
                  Return whether or not the given relative path  cor-
                  responds to a valid directory.
    
           boolean SetDirectory(const char* newdir)
                  Change  the  search  directory  to  newdir  if that
                  directory is accessible.  The function returns true
                  if successful.
    
           const char* GetDirectory()
                  Return the name of the search directory.
    
           const char* ValidDirectories(const char* path)
                  Given  a  path string, return the largest substring
                  (starting from the beginning of path)  that  repre-
                  sents a valid path.  The substring is returned in a
                  static buffer and should be copied before use.
    
           const char* Normalize(const char* path)
                  Return a normalized version of path with all spuri-
                  ous  slashes,  dots,  and  tildes interpreted.  The
                  normalized path is returned in a static buffer  and
                  Return  the  ith  string as it appears in the File-
                  Browser.  This function prepends the search  direc-
                  tory  to  the string, normalizes the concatenation,
                  and returns the result.
    
           void RereadDirectory()
                  Rescan the current directory without  updating  the
                  FileBrowser's appearance.
    
           virtual void Update()
                  Rescan  the  current directory and update the File-
                  Browser's appearance to reflect any changes in  the
                  set of files it should display.
    
           void SetTextFilter(const char*)
           void SetDirectoryTextFilter(const char*)
           void SetModeFilter(int)
           void SetDirectoryModeFilter(int)
                  By  default, FileBrowser displays all the files and
                  directories  it  finds  in  the  search  directory.
                  These  functions  provide  some  control  over  the
                  entries that FileBrowser  displays.   SetTextFilter
                  specifies  a regular expression (see Regexp(3I)) to
                  match against file  names.   SetDirectoryTextFilter
                  serves a similar role for directory names.  SetMod-
                  eFilter and SetDirectoryModeFilter specify the mode
                  (see chmod(1)) that displayed files and directories
                  should have.  Only files and directories that match
                  both  the  regular  expression  and  the  mode will
                  appear in the FileBrowser.   Passing  nil  for  the
                  regular  expression  or 0 for the mode restores the
                  default behavior.
    
    
    

    PROTECTED OPERATIONS

           void UpdateStrings()
                  Explicitly update the FileBrowser's  appearance  to
                  reflect  any  changes in the set of files it should
                  display without rescanning the directory.
    
           virtual boolean Acceptable(const char*)
                  Return whether the given file name is an acceptable
                  name.   By  default, files that conform to the text
                  or mode filter specifications are acceptable.  Only
                  acceptable   files  will  be  displayed  by  Updat-
                  eStrings.
    
    
    

    SEE ALSO

           Interactor(2I), Button(3I), StringBrowser(3I), Regexp(3I),
           chmod(1)
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/FileChooser.html0000644000076500007650000000713507374262640020516 0ustar scottscott00000000000000
    
           FileChooser - dialog box for choosing a file name
    
    
    

    SYNOPSIS

           #include <InterViews/filechooser.h>
    
    
    

    DESCRIPTION

           FileChooser  is  a  StringChooser that provides a complete
           dialog box interface to selecting a file name.  The inter-
           face   consists  of  two  lines  of  descriptive  text,  a
           StringEditor for entering  the  file  name  explicitly,  a
           FileBrowser,  and  two  PushButtons, one for accepting and
           one for canceling the dialog.
    
    
    

    PUBLIC OPERATIONS

           FileChooser(const char* title, const char* subtitle, const
                  char*          dir, int rows, int cols, const char*
                  acceptLabel, Alignment)
           FileChooser(const  char*  name,  const  char*, const
                  char*, const   char*, int, int, const char* accept,
                  Alignment)
                  Construct a new FileChooser with  the  given  title
                  and  subtitle,  search  directory  dir, FileBrowser
                  size specification rows and  cols,  label  for  the
                  accept  PushButton  acceptLabel,  and pop-up align-
                  ment.  These constructors create all  the  elements
                  of  the  dialog box and compose them into a default
                  layout.
    
           void SetTitle(const char*)
           void SetSubtitle(const char*)
                  Change the text in title or the subtitle.  The  new
                  text  will  appear  immediately  in the dialog when
                  either function is called.
    
           void SelectFile()
                  Highlight the text in the StringEditor.
    
           void Update()
                  FileChooser's Update simply  calls  Update  on  the
                  FileBrowser  instance  to rescan the current direc-
                  tory and update its appearance.
    
    
    

    PROTECTED OPERATIONS

           FileChooser(ButtonState*, Alignment = Center)
                  Construct a new FileChooser with the  given  button
                  state  and  pop-up alignment without creating File-
                  Browser, StringEditor, title, subtitle, or PushBut-
                  ton  instances.   This constructor should be called
                  in subclasses requiring a specialized  StringEditor
                  or FileBrowser.
    
           FileChooser(ButtonState*,  const  char*  dir, int rows,
                  StringEditor and its FileBrowser)  with  the  given
                  button  state,  search  directory, FileBrowser size
                  specification, and pop-up alignment without compos-
                  ing them into the default layout and without creat-
                  ing the title, subtitle, or PushButtons. This  con-
                  structor  should  be used by FileChooser subclasses
                  that define a specialized look and feel.
    
    
    

    SEE ALSO

           Button(3I),    Dialog(3I),    FileBrowser(3I),     String-
           Chooser(3I), StringEditor(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/FontCmd.html0000644000076500007650000000235507374262640017645 0ustar scottscott00000000000000
    
           FontCmd - command for setting components' font attribute
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/font.h>
    
    
    

    DESCRIPTION

           FontCmd  is  a purely interpretive command for setting the
           font attribute of selected components.
    
    
    

    PUBLIC OPERATIONS

           FontCmd(ControlInfo*, PSFont* = nil)
           FontCmd(Editor* = nil, PSFont* = nil)
                  Create a FontCmd, optionally specifying the  PSFont
                  that components should adopt.
    
           virtual void Execute()
                  FontCmd  extends  Execute  to  set the value of the
                  affected editor's FontVar instance, if  it  defines
                  one.
    
           PSFont* GetFont()
                  Return the PSFont supplied in the constructor.
    
    
    

    SEE ALSO

           Command(3U), pspaint(3U), statevars(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Frame.html0000644000076500007650000001067607374262640017352 0ustar scottscott00000000000000
    
           Frame,  ShadowFrame,  MarginFrame,  ShowFrame, TitleFrame,
           BorderFrame - surrounding interactor
    
    
    

    SYNOPSIS

           #include <InterViews/frame.h>
    
    
    

    DESCRIPTION

           A frame is a  monoscene  subclass  that  outlines  another
           interactor.   A  shadow frame draws an outline with a drop
           shadow.  A margin frame surrounds its component with hori-
           zontal and vertical glue.
    
           A show frame is an abstract class that changes its appear-
           ance in response to an EnterEvent or LeaveEvent.  A  title
           frame  provides a banner that it displays in reverse video
           when it receives an EnterEvent.  A border frame  draws  an
           outline   using  a  solid  pattern  when  it  receives  an
           EnterEvent and draws the outline using a gray pattern when
           it receives a LeaveEvent.
    
    
    

    PUBLIC OPERATIONS

           Frame(Interactor*, int width = 1)
                  Construct  a frame.  If the given interactor is not
                  nil, it is inserted as the frame's component.   The
                  frame  extends width pixels outside of the interac-
                  tor.
    
           ShadowFrame(Interactor*, int h = 1, int v = 1)
                  Construct a shadow frame.  The h and v  ShadowFrame
                  parameters  specify the width of the horizontal and
                  vertical shadows,  respectively.   Positive  values
                  for these parameters specify shadows falling to the
                  right and below the interactor, respectively; nega-
                  tive values specify shadows falling to the left and
                  above.
    
           MarginFrame(Interactor* = nil, int margin = 0)
           MarginFrame(Interactor*, int margin, int shrink, int
                  stretch)
           MarginFrame(Interactor*, int hmargin, int vmargin)
           MarginFrame(Interactor*,  int hm, int hshr, int hstr, int
                  vm, int vshr, int vstr)
                  Construct  a  margin  frame.  The first constructor
                  puts rigid, fixed-sized glue around the  component,
                  while the second surrounds it with fixed-sized glue
                  of  the  given  shrinkability  and  stretchability.
                  Independent horizontal and vertical margins are set
                  with the third constructor.  The  last  constructor
                  allows  full  specification  of  the margin frame's
                  horizontal and vertical  margins,  shrinkabilities,
                  and stretchabilities.
    
                  ShowFrame   objects   listen   for  EnterEvent  and
                  LeaveEvent.   When  an  EnterEvent   is   received,
                  ShowFrame::Handle  calls InsideFrame(true); when an
                  LeaveEvent   is   received,   it   calls    Inside-
                  Frame(false).   For  any other event, it calls Han-
                  dleInput.   ShowFrame::InsideFrame  does   nothing.
                  ShowFrame::HandleInput  calls Handle on the frame's
                  component.
    
           TitleFrame(Banner*, Interactor*, int width = 1)
                  Construct a title  frame  with  the  given  banner.
                  TitleFrame::InsideFrame highlights and unhighlights
                  the banner.
    
           BorderFrame(Interactor*, int width = 1)
                  Construct a border frame.  BorderFrame::InsideFrame
                  highlights and unhighlights the border.
    
    
    

    PROTECTED OPERATIONS

           Frame(Interactor*, int, int, int, int)
                  This  constructor  is used by subclasses to explic-
                  itly set the widths of each line  in  the  outline.
                  The integers specify the width of the left, bottom,
                  right, and top lines, respectively.
    
    
    

    SEE ALSO

           Banner(3I), Event(3I), Glue(3I), Scene(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/geomobjs.html0000644000076500007650000002530307374262640020116 0ustar scottscott00000000000000
    
           PointObj,  LineObj,  BoxObj, MultiLineObj, FillPolygonObj,
           Extent - helper classes that manage geometric  information
           for structured graphics
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/geomobjs.h>
    
    
    

    DESCRIPTION

           Unidraw defines several helper classes that store and man-
           age geometric information.   Structured  graphics  objects
           may  use  these helper classes to support their semantics.
           PointObj stores a point, LineObj stores  two  points,  and
           MultiLineObj  stores  any  number  of  points.  BoxObj and
           FillPolygonObj define  rectangular  and  polygonal  areas,
           respectively.   Extent stores extent information, that is,
           the lower left corner and center of a bounding box plus  a
           fixed  amount of extra space around the bounding box.  All
           these classes provide operations for  computing  geometric
           information.
    
    
    

    POINTOBJ PUBLIC OPERATIONS

           PointObj(Coord = 0, Coord = 0)
           PointObj(PointObj*)
                  Construct  a  PointObj, supplying either two Coords
                  or another PointObj to specify the instance's coor-
                  dinates,  which  are stored in its _x and _y public
                  members.
    
           float Distance(PointObj&)
                  Return the distance  between  this  and  the  given
                  PointObj.
    
    
    

    LINEOBJ PUBLIC OPERATIONS

           LineObj(Coord = 0, Coord = 0, Coord = 0, Coord = 0)
           LineObj(LineObj*)
                  Construct  a  LineObj, supplying either two coordi-
                  nate  pairs  or  another  LineObj  to  specify  the
                  instance's  endpoints,  which are stored in its _p1
                  and _p2 public members.
    
           boolean Contains(PointObj&)
           boolean Intersects(LineObj&)
                  Return whether this contains the  given  point  and
                  intersects the given line, respectively.
    
           int Same(PointObj& p1, PointObj& p2)
                  A  helper function used in Intersects. Same returns
                  a positive value if p1 and p2 fall on the same side
                  of  the line, 0 if both points fall on the line, or
                  a negative value if  the  points  are  on  opposite
                  sides of the line.
    
           BoxObj(Coord = 0, Coord = 0, Coord = 0, Coord = 0)
           BoxObj(BoxObj*)
                  Construct a BoxObj, supplying either two coordinate
                  pairs or another BoxObj to specify  the  instance's
                  bottom-left and top-right corners, which are stored
                  in its _left, _bottom, _right, and _top public mem-
                  bers.
    
           boolean Contains(PointObj&)
           boolean Intersects(BoxObj&)
           boolean Intersects(LineObj&)
                  Return  whether  this  contains the given point and
                  intersects the given box or line, respectively.
    
           BoxObj operator - (BoxObj&)
           BoxObj operator + (BoxObj&)
                  Compute the intersection (-) or union (+)  of  this
                  and  the  given  box,  returning the result.  These
                  operations do not affect this or their argument.
    
           boolean Within(BoxObj&)
                  Return true if this  falls  completely  within  the
                  given  box.   Within  will  also return true if the
                  boxes are identical.
    
    
    

    MULTILINEOBJ PUBLIC OPERATIONS

           MultiLineObj(Coord* = nil, Coord* = nil, int = 0)
                  Create a MultiLineObj, optionally supplying coordi-
                  nate  arrays  (and their size) that define the ver-
                  tices of the multiline. The MultiLineObj  does  not
                  copy  these  arrays  but  stores them directly. The
                  MultiLineObj stores this information in its _x, _y,
                  and _count public members.
    
           void GetBox(BoxObj&)
                  Calculate  the bounding box circumscribing the Mul-
                  tiLineObj's vertices and store it in the  argument.
    
           boolean Contains(PointObj&)
           boolean Intersects(BoxObj&)
           boolean Intersects(LineObj&)
                  Return  whether  this  contains the given point and
                  intersects the given box or line, respectively.
    
           boolean Within(BoxObj&)
                  Return true if this  falls  completely  within  the
                  MultiLineObj's   bounding  box.  Within  will  also
                  return true if the boxes are identical.
    
           void SplineToMultiLine(Coord* cpx, Coord* cpy, int count)
           void ClosedSplineToMultiLine(Coord* cpx, Coord* cpy, int
                  count)
                  result  in  this.   These operations store the lin-
                  earized result in internal buffers and  assign  the
                  addresses  of  these  buffers to _x and _y; they do
                  not delete _x and _y if they are non-nil  prior  to
                  assignment.
    
    
    

    MULTILINEOBJ PROTECTED OPERATIONS

           void GrowBuf()
                  Increase  the  size of the internal buffers used to
                  store linearized splines.
    
           boolean CanApproxWithLine(
               double x0, double, y0,
               double x1, double y1,
               double x2, double y2
           )
                  Return whether two connected line segments  defined
                  by the given three points can be approximated visu-
                  ally with a single line between the endpoints.
    
           void AddLine(double x0, double y0, double x1, double y1)
                  Add a line to the internal buffer of vertices.
    
           void AddBezierArc(
               double x0, double y0, double x1, double y1,
               double x2, double y2, double x3, double y3
           )
                  Add lines approximating the appearance of a  Bezier
                  arc  defined  by  the  given points to the internal
                  buffer of vertices.
    
           void CalcSection(
               Coord cminus1x, Coord cminus1y, Coord cx, Coord cy,
               Coord cplus1x, Coord cplus1y, Coord cplus2x, Coord
                  cplus2y
           )
                  Add a Bezier arc to the internal buffer of vertices
                  based on a series of four B-spline control  points,
                  the one before and the two after (cx, cy).
    
    
    

    FILLPOLYGONOBJ PUBLIC OPERATIONS

           FillPolygonObj(Coord* = nil, Coord* = nil, int = 0)
                  Create  a new FillPolygonObj, optionally specifying
                  its vertices.  If vertices are supplied,  then  the
                  constructor  uses  Normalize  (described  below) to
                  store a normalized set of vertices in the FillPoly-
                  gonObj's _normx, _normy, and _normCount public mem-
                  bers.  FillPolygonObj is  a  subclass  of  MultiLi-
                  neObj;  thus it stores the constructor arguments in
                  its _x, _y, and _count public members.
    
           virtual ~FillPolygonObj()
    
           boolean Contains(PointObj&)
           boolean Intersects(BoxObj&)
           boolean Intersects(LineObj&)
                  Return  whether  this  contains the given point and
                  intersects the given box or line, respectively.
    
    
    

    FILLPOLYGONOBJ PROTECTED OPERATIONS

           void Normalize()
                  Copy the vertices defined by  _x,  _y,  and  _count
                  into  _normx,  _normy,  and  _normCount  such  that
                  (_normx[0], _normy[0]) is the lower-leftmost vertex
                  and there are no redundant vertices.
    
    
    

    EXTENT PUBLIC OPERATIONS

           Extent(
               float left = 0, float bottom = 0,
               float cx = 0, float cy = 0, float tol = 0
           )
    
           Extent(Extent&)
                  Construct  a  new  Extent, optionally supplying its
                  parameters  explicitly  or  providing  a   existing
                  Extent  to  copy.  The parameters are stored in the
                  Extent's _left, _bottom, _cx, _cy, and _tol  public
                  members.
    
           boolean Undefined()
                  Return whether the extent is undefined, that is, if
                  (_left, _bottom) and (_cx, _cy) are the same point.
    
           boolean Within(Extent&)
                  Return true if the given extent circumscribes this.
                  Within will also return true  if  the  extents  are
                  identical.
    
           void Merge(Extent&)
                  Enlarge  this  extent  to subsume area of the given
                  extent.
    
    
    

    SEE ALSO

           Graphic(3U)
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/globals.html0000644000076500007650000001444107374262640017735 0ustar scottscott00000000000000
    
           globals  - Unidraw global constants, types, instances, and
           functions.
    
    
    

    SYNOPSIS

           #include <Unidraw/globals.h>
    
    
    

    DESCRIPTION

           Several  constants  and  types  are  used  throughout  the
           Unidraw  library.   It also provides global access to one-
           of-a-kind instances such as the unidraw object as well  as
           shared  graphics  resources.   Finally,  there are several
           global functions for common data  manipulations.   All  of
           these are declared one file for inclusion into other files
           where they are needed.
    
    
    

    CONSTANTS

           static const int CHARBUFSIZE
                  Size of standard character buffer.
    
           static const int HANDLE_SIZE
                  Size of selection handles, in pixels.
    
           static const char MARK[]
                  String that delineates data boundaries in the ASCII
                  representation  that  Catalog  generates.  Used for
                  error checking.
    
           static const int PIN_RAD
                  The radius of a pin, used in its default  graphical
                  representation, in pixels.
    
           static const int SLOP
                  Tolerance  within which a hit on a graphical object
                  will be detected, in pixels.
    
    
    

    TYPES

           enum DragConstraint
                  Enumerates orthogonal ways in which cursor movement
                  may be constrained, usually during direct manipula-
                  tion.   Possible  values  include   None,   XFixed,
                  YFixed, XYEqual, HorizOrVert, or Gravity.
    
           enum Mobility
                  Enumerates the three possible component mobilities:
                  Fixed, Floating, or Undef (undefined).
    
           typedef unsigned Orientation
                  Specifies two kinds  of  orientation:  Portrait  or
                  Vertical  (synonymous), and Landscape or Horizontal
                  (synonymous).
    
           enum TransMethod
    
           typedef unsigned long ClassId
                  Type  for representing unique class names for cata-
                  log-managed objects.
    
    
    

    INSTANCES

           extern Unidraw* unidraw
           extern CSolver* csolver
                  The global unidraw and csolver objects.  These  and
                  all other global instances are initialized automat-
                  ically.
    
           extern PSColor* psblack
           extern PSColor* pswhite
           extern PSPattern* pssolid
           extern PSPattern* psclear
           extern PSPattern* psnonepat
           extern PSBrush* pssingle
           extern PSBrush* psnonebr
           extern PSFont* psstdfont
                  Predefined graphics  resource  objects.   The  None
                  operation on psnonepat and psnonebr returns true.
    
           extern Graphic* stdgraphic
                  A  FullGraphic instance with its graphics state set
                  to  the  global  values  listed  above,   excluding
                  psnonepat and psnonebr.
    
    
    

    FUNCTIONS

           extern void NormalRect(Coord& l, Coord& b, Coord& r,
                  Coord& t)
                  Given two coordinate pairs (l, b) and  (r,  t),  it
                  checks  whether  l < r and b < t.  If not, it swaps
                  the values in  the  offending  inequalities.   This
                  function is useful for ensuring that a rectangle is
                  defined by its lower-left and upper-right vertices.
    
           extern void GetLine(
               const char* buf, int len, int beg, int& end,
               int& size, int& nextBeg
           )
                  This  function  is  convenient for extracting lines
                  from a buffer with a  minimum  of  additional  math
                  operations.  Given  a  buffer  of characters buf of
                  length len, search for the first newline  character
                  (or  the  last  character  in the buffer) after the
                  character at index beg; return the newline's  posi-
                  tion in end, the size of the run of text terminated
                  by a newline (end + 1 - beg), and  the  index  with
                  which  to begin a search for the next newline char-
                  acter (nextBeg).
    
               Graphic*, Alignment, float&, float&
           )
                  Return the point (in floating point canvas  coordi-
                  nates)  on  a  graphic  corresponding  to the given
                  alignment.  For example, to obtain the  coordinates
                  of  the  lower-left of a rectangle graphic, specify
                  the graphic and a BottomLeft alignment.
    
           extern void Ref(Resource*)
                  Call the Reference operation on the given  instance
                  of a resource subclass if the pointer is non-nil.
    
           extern char* strnew(const char*)
                  Duplicate  the given null-terminated string, creat-
                  ing a buffer of the appropriate size and  returning
                  the null-terminated result.
    
    
    

    SEE ALSO

           CSolver(3U),  Catalog(3U),  Graphic(3U),  GraphicView(3U),
           Pin(3U),   Resource(3I),   Unidraw(3U),    InterViews(3I),
           pspaint(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Glue2_6.html0000644000076500007650000000353707374262640017521 0ustar scottscott00000000000000
    
           Glue, HGlue, VGlue - open space between interactors
    
    
    

    SYNOPSIS

           #include <InterViews/glue.h>
    
    
    

    DESCRIPTION

           A  glue  object  is  an  interactor that is used to define
           variable-size space between  interactors  in  boxes.   The
           HGlue subclass is for space in a horizontal box; VGlue for
           space in a vertical box.  Along its minor  axis  (vertical
           for  HGlue, horizontal for VGlue), glue has a natural size
           of zero and infinite stretchability.
    
    
    

    PUBLIC OPERATIONS

           HGlue(int natural = 0, int stretch = hfil)
           VGlue(int natural = 0, int stretch = vfil)
                  Construct  glue  with  a  given  natural  size  and
                  stretchability.    The   glue's   shrinkability  is
                  defined to be the same as the natural size, meaning
                  it can shrink to zero.
    
           HGlue(int natural, int shrink, int stretch)
           VGlue(int natural, int shrink, int stretch)
                  Construct  glue with a given natural size, shrinka-
                  bility, and stretchability.  If  shrink  is  larger
                  than  natural the glue potentially can have ``nega-
                  tive size'', meaning interactors will overlap in  a
                  box.
    
    
    

    SEE ALSO

           Box(3I), Interactor(3I), Shape(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Graphic.html0000644000076500007650000006370607374262640017677 0ustar scottscott00000000000000
    
           Graphic,  FullGraphic  -  structured graphic abstract base
           class and subclass that stores a complete set of  graphics
           state attributes
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/graphic.h>
    
    
    

    DESCRIPTION

           Graphic  is an abstract base class for structured graphics
           objects.  Graphic objects maintain graphics state and geo-
           metric  information,  which  lets  them draw themselves on
           demand and support hit detection.
    
           Graphic subclasses can implement graphical objects such as
           lines, rectangles, ellipses, and polygons.  Subclasses can
           also   support   hierarchical   composition   of   Graphic
           instances,  thus providing an object-oriented rendition of
           traditional structured graphics functionality.
    
    
    

    GRAPHIC PUBLIC OPERATIONS

           virtual void Draw(Canvas*)
           virtual void Draw(Canvas*, Coord, Coord, Coord, Coord)
           virtual void DrawClipped(Canvas*, Coord, Coord, Coord,
                  Coord)
    
           virtual void Erase(Canvas*)
           virtual void Erase(Canvas*, Coord, Coord, Coord, Coord)
           virtual void EraseClipped(Canvas*, Coord, Coord, Coord,
                  Coord)
                  Draw or erase the graphic on the given canvas.  The
                  one-parameter  Draw  and  Erase operations draw and
                  erase the graphic in its entirety.  The five-param-
                  eter forms take four coordinates defining a rectan-
                  gular area with which to cull  drawing.   Composite
                  graphics  in particular can use this information to
                  avoid drawing children falling entirely outside the
                  given  area.  DrawClipped and EraseClipped draw the
                  graphic strictly within a  rectangular  area.   All
                  Coord parameters are in canvas coordinates.
    
           virtual void FillBg(boolean)
           virtual void SetBrush(PSBrush*)
           virtual void SetColors(PSColor* fg, PSColor* bg)
           virtual void SetFont(PSFont*)
           virtual void SetPattern(PSPattern*)
    
           virtual int BgFilled()
           virtual PSBrush* GetBrush()
           virtual PSColor* GetFgColor()
           virtual PSColor* GetBgColor()
           virtual PSFont* GetFont()
           virtual PSPattern* GetPattern()
                  class  implements  the  operations  for setting and
                  getting the fill mode and colors; the other  opera-
                  tions  should  be redefined in subclasses that need
                  them.
    
           void Translate(float dx, float dy)
           void Scale(float x, float y, float cx = 0.0, float cy =
                  0.0)
           void Rotate(float angle, float cx = 0.0, float cy = 0.0)
           void SetTransformer(Transformer*)
           Transformer* GetTransformer()
           void TotalTransformation(Transformer& t)
                  Coordinates passed to drawing operations are trans-
                  formed according to the current translation,  rota-
                  tion,  and  scale  factor.  Optionally, scaling and
                  rotation can be performed relative to a point  (cx,
                  cy).   The  base class stores a transformer _t that
                  can be directly set  and  accessed  with  SetTrans-
                  former and GetTransformer.  The default transformer
                  is nil, meaning no transformations  are  performed.
                  TotalTransformation      uses     concatTransformer
                  (described below) to  concatenate  t  (usually  the
                  identity  transformation)  and  the transformers of
                  the graphic's parents to obtain the graphic's total
                  transformation, which it then stores in t.
    
                  Unless  otherwise  noted,  input and output coordi-
                  nates are affected by the concatentation of  this's
                  transformer, its parent's transformer, its parent's
                  parent's, and so on up to the root of  the  graphic
                  instance hierarchy.  Prior to transformation, coor-
                  dinates reflect the  graphic's  coordinate  system.
                  Following  transformation,  the coordinates reflect
                  the canvas coordinate system (i.e., they are canvas
                  coordinates).   The  coordinates  that Graphic sub-
                  class constructors require are normally in  graphic
                  coordinates,   while  operations  for  returning  a
                  graphic's bounding box (see below)  are  in  canvas
                  coordinates.
    
           void Align(Alignment, Graphic*, Alignment)
                  Position  the given graphic relative to this, which
                  stays fixed, while  the  graphic  supplied  as  the
                  argument  is  translated  appropriately.  The first
                  Alignment parameter specifies  the  alignment  with
                  respect  to  this,  while  the second specifies the
                  alignment with respect to the given graphic.
    
           virtual void GetBounds(
               float& left, float& bottom, float& right, float& top
           )
                  Return the exact coordinates of  the  smallest  box
    
           void GetBox(Coord& left, Coord& bottom, Coord& right,
                  Coord& top)
           void GetBox(BoxObj&)
                  Return the smallest bounding box circumscribing the
                  graphic.   The  return values are in canvas coordi-
                  nates.  The BoxObj represents a  rectangle  defined
                  by lower left and upper right coordinates (see geo-
                  mobjs(3U) for details).
    
           virtual void GetCenter(float& x, float& y)
                  Return the center point of the  graphic  in  canvas
                  coordinates.
    
           virtual boolean Contains(PointObj&)
           virtual boolean Intersects(BoxObj&)
                  Return  whether  or  not  the  graphic contains the
                  given point or  intersects  the  given  rectangular
                  area  specified  in  canvas  coordinates.  PointObj
                  describes a point (see geomobjs(3U)).  These opera-
                  tions  are  used  most  often  for fine-grained hit
                  detection.
    
           void SetTag(void*)
           void* GetTag()
                  Set or return a tag associated with the graphic.
    
           Graphic* Parent()
                  Return the graphic's parent, if any.
    
           virtual void First(Iterator&)
           virtual void Last(Iterator&)
           virtual void Next(Iterator&)
           virtual void Prev(Iterator&)
           virtual boolean Done(Iterator)
                  Operations for iterating over the  graphic's  chil-
                  dren,  if  any.   These  operations  do  nothing by
                  default.  Graphics  that  compose  other   graphics
                  should  redefine these operations to permit traver-
                  sal of their children.  First and  Last  initialize
                  an  iterator  to  point to the beginning and end of
                  the list of children,  respectively.   Next  incre-
                  ments the iterator to point to the following child,
                  while Prev decrements the iterator to point to  the
                  preceding  child.   Done returns whether or not the
                  iterator points beyond the first or last  child  in
                  the list.
    
           Graphic* GetGraphic(Iterator)
           void SetGraphic(Graphic*, Iterator&)
                  These operations do nothing by default.  Subclasses
                  that contain children should redefine them as  fol-
                  the  iterator  to  point to a particular graphic in
                  the list of  children;  it  should  initialize  the
                  iterator  to  point  to a nil instance if the given
                  graphic is not a child.
    
           virtual void Bequeath()
                  Bequeath  does  nothing  by   default.    Composite
                  graphic  subclasses  should  redefine it so that it
                  propagates to the children all the  graphics  state
                  in  this that can affect them.  This will prevent a
                  change in a child's appearance should it be removed
                  from  this.   Following  the call to Bequeath, this
                  should  no  longer  define   any   graphics   state
                  attributes.
    
           virtual Graphic* FirstGraphicContaining(PointObj&)
           virtual Graphic* LastGraphicContaining(PointObj&)
           virtual Graphic* FirstGraphicIntersecting(BoxObj&)
           virtual Graphic* LastGraphicIntersecting(BoxObj&)
           virtual Graphic* FirstGraphicWithin(BoxObj&)
           virtual Graphic* LastGraphicWithin(BoxObj&)
                  These  operation  do nothing by default.  Composite
                  graphic subclasses should  redefine  them  so  that
                  they return the first or last child that contains a
                  point, intersects a rectangular area, or  does  not
                  extend  beyond  the given rectangular area, respec-
                  tively.
    
           virtual Graphic& operator = (Graphic&)
                  Assign   the   given   graphic's   graphics   state
                  attributes to this.
    
           virtual Graphic* Copy()
                  Return  a  copy  of the graphic.  Subclasses should
                  redefine this operation to return  an  instance  of
                  their type.
    
    
    

    GRAPHIC PROTECTED MEMBERS

           Graphic(Graphic* gr = nil)
                  Initialize  the  graphics,  optionally  supplying a
                  graphic from which to  obtain  an  initial  set  of
                  graphics  state attributes.  Graphic is an abstract
                  base class.  Therefore its constructor is protected
                  to prevent instantiation.
    
           virtual void draw(Canvas*, Graphic* gs)
           virtual void drawClipped(
               Canvas*, Coord, Coord, Coord, Coord, Graphic*
           )
    
           virtual void erase(Canvas*, Graphic*)
           virtual void eraseClipped(
           )
                  Graphic subclasses redefine these stateless drawing
                  operations to render themselves.  These  operations
                  are  called by the corresponding capitalized opera-
                  tions, which supply them with  the  extra  trailing
                  Graphic  parameter  gs.  This parameter defines the
                  graphics state with which to draw the graphic.  The
                  graphic state is normally computed using the concat
                  functions described below.  Subclasses normally use
                  the  graphics state passed to them without ignoring
                  or modifying it, though they may safely  do  so  if
                  they must override one or more attributes.
    
           void update(Graphic* gs)
                  Graphics  ultimately  use  a  Painter to draw them-
                  selves.  The Graphic class  maintains  a  protected
                  static  painter  _p that subclasses can use to draw
                  themselves.  The update operation sets _p's  graph-
                  ics  state  attributes  to match those of the given
                  graphic to ensure that the  painter  will  generate
                  graphics  with  the  proper color, font, etc.  Sub-
                  classes should call update in their stateless draw-
                  ing operations (normally supplying the graphic they
                  were passed) before they call  any  drawing  opera-
                  tions  on  _p.   The  graphics  that  _p generates,
                  therefore, will reflect the graphics state that was
                  passed to the stateless drawing operation.
    
           virtual void getExtent(
               float& left, float& bottom, float& cx, float& cy,
               float& tol, Graphic* gs
           )
    
           void GetExtent(Extent&)
                  A graphic's extent defines its physical boundaries.
                  Subclasses redefine getExtent to return this bound-
                  ary  information  based  on the graphics state sup-
                  plied in gs.  The left, bottom, cx, and cy  parame-
                  ters  define  the  graphic's  lower left corner and
                  center, respectively, in canvas  coordinates.   The
                  tol  parameter  specifies  a  fixed amount of space
                  around the boundary to account  for  parts  of  the
                  graphic's  appearance  that  do  not scale linearly
                  (e.g.,  brush  width).   The  relationship  between
                  getExtent and GetExtent is the same as that between
                  draw and Draw: getExtent is the  stateless  version
                  of   GetExtent,  which  concatenates  the  parent's
                  graphics state and calls getExtent with the result.
    
           void getBounds(
               float& left, float& bottom, float& right, float& top,
               Graphic* gs
               Coord& left, Coord& bottom, Coord& right, Coord& top,
               Graphic*
           )
    
           void getBox(BoxObj&, Graphic*)
                  Stateless versions of the corresponding capitalized
                  bounding box operations, which call  the  stateless
                  versions  with  the  cumulative  graphics  state of
                  this's ancestors.  These operations are defined  in
                  terms  of  getExtent  and  therefore  should not be
                  reimplemented by subclasses.
    
           virtual boolean contains(PointObj&, Graphic* gs)
           virtual boolean intersects(BoxObj&, Graphic*)
                  Stateless versions of the corresponding capitalized
                  operations  for  fine-grained  hit  detection.   By
                  default, these operations return true if the  argu-
                  ment  is contained in or intersects this's bounding
                  box.  Subclasses can redefine these  operations  to
                  make a more discerning decision.
    
           Graphic* getRoot()
           void totalGS(Graphic& g)
           void parentXform(Transformer& t)
                  Helper  functions  for  parent-related  operations.
                  getRoot returns the root graphic in this's  hierar-
                  chy.  totalGS uses concat (described below) to con-
                  catenate the graphics state of  this  and  all  its
                  ancestors,  returning the result in g. Any graphics
                  state that g stored initially will  be  lost.   The
                  parentXform    operation    uses    concatTransform
                  (described below) to  concatenate  the  transforma-
                  tions  of  all  ancestors  of  this,  returning the
                  result in t.  Any  transformations  that  t  stored
                  initially will be lost.
    
           void setParent(Graphic* g, Graphic* parent)
           void unsetParent(Graphic* g)
                  Operations  for  setting  and  getting the value of
                  another graphic's (g's) parent  as  stored  in  the
                  _parent  protected  member variable.  Normally only
                  composite graphics change this attribute of another
                  graphic, usually a newly-acquired child.
    
           void cachingOn()
           void cachingOff()
           virtual boolean extentCached()
           virtual void uncacheExtent()
           virtual void uncacheParents()
           virtual void uncacheChildren()
           virtual void invalidateCaches()
                  Operations   that  support  extent  caching.   Some
                  improving performance.   For  example,  it  may  be
                  expensive  to  compute  the  extent  for  composite
                  graphics that have many children; thus caching  the
                  extent  will improve performance if the extent does
                  not change often.
    
                  cachingOn  and  cachingOff  change  the  value   of
                  _caching,  a  protected  static  boolean  member of
                  Graphic that indicates whether caching is active on
                  a  global  basis.  Extent-caching subclasses should
                  check this member  to  avoid  caching  when  it  is
                  false.   Caching subclasses should redefine extent-
                  Cached to return whether or not  they  have  cached
                  their  extent  (in  whatever  form  they store it).
                  They should redefine uncacheExtent to  discard  any
                  extent  information  they've  cached.   By default,
                  uncacheParents simply calls uncacheExtent  on  each
                  ancestor  of this, while uncacheChildren does noth-
                  ing  by  default.    Subclasses   should   redefine
                  uncacheChildren  to make any children uncache their
                  extents.
    
           virtual void concatGS(Graphic* a, Graphic* b, Graphic*
                  dest)
           virtual void concatTransformer(
               Transformer* a, Transformer* b, Transformer* dest
           )
    
           virtual void concat(Graphic* a, Graphic* b, Graphic* dest)
                  Operations for concatenting graphics  state.   con-
                  catGS concatenates a's graphics state (brush, font,
                  pattern, etc., but not transformation matrix)  with
                  b's  and  assigns  the result to dest. According to
                  the  default  concatenation  semantics,  dest  will
                  receive  graphics  state  attributes  defined by b;
                  dest will receive only those attributes from a that
                  b  does not define (i.e., those for which b returns
                  nil).  By default, concatTransformer does a  matrix
                  multiply of a and b and assigns the result to dest.
                  The concat operation concatenates both the graphics
                  state  and transformation of its arguments, assign-
                  ing the results to dest.
    
           void transform(Coord&, Coord&, Graphic*)
           void transform(Coord, Coord, Coord&, Coord&, Graphic*)
           void transform(float, float, float&, float&, Graphic*)
           void transformList(
               Coord[], Coord[], int, Coord[], Coord[], Graphic*
           )
    
           void transformRect(
               float, float, float, float,
    
           )
    
           void invTransform(Coord&, Coord&, Graphic*)
           void invTransform(Coord, Coord, Coord&, Coord&, Graphic*)
           void invTransform(float, float, float&, float&, Graphic*)
           void invTransformList(
               Coord[], Coord[], int, Coord[], Coord[], Graphic*
           )
    
           void invTransformRect(
               float, float, float, float,
               float&, float&, float&, float&, Graphic*
           )
                  Convenience functions analogous to the  Transformer
                  operations of the same name.  These operations sim-
                  ply check if _t is nil before  calling  the  corre-
                  sponding Transformer operation on it.
    
           virtual void drawGraphic(Graphic* g, Canvas*, Graphic* gs)
           virtual void drawClippedGraphic(
               Graphic* g, Canvas*, Coord, Coord, Coord, Coord,
                  Graphic*
           )
    
           virtual void eraseGraphic(Graphic* g, Canvas*, Graphic*)
           virtual void eraseClippedGraphic(
               Graphic* g, Canvas*, Coord, Coord, Coord, Coord,
                  Graphic*
           )
    
           virtual void getExtentGraphic(
               Graphic* g, float& left, float& bottom, float& cx,
                  float& cy,
               float& tol, Graphic* gs
           )
    
           virtual boolean containsGraphic(
               Graphic* g, PointObj&, Graphic* gs
           )
    
           virtual boolean intersectsGraphic(Graphic* g, BoxObj&,
                  Graphic*)
    
           virtual boolean extentCachedGraphic(Graphic* g)
           virtual void uncacheExtentGraphic(Graphic* g)
           virtual void uncacheParentsGraphic(Graphic* g)
           virtual void uncacheChildrenGraphic(Graphic* g)
           virtual void invalidateCachesGraphic(Graphic* g)
    
           virtual void concatGSGraphic(
               Graphic* g, Graphic* a, Graphic* b, Graphic* dest
           )
               Graphic* g, Transformer* a, Transformer* b,
               Transformer* dest
           )
    
           virtual void concatGraphic(
               Graphic* g, Graphic* a, Graphic* b, Graphic* dest
           )
                  Helper  functions  that let graphic subclasses call
                  the protected  member  functions  on  instances  of
                  other  subclasses  that  redefine  them.  All these
                  helper functions  take  the  affected  instance  as
                  their  first parameter.  All are semantically iden-
                  tical  to  the  corresponding  functions  described
                  above  (which  omit  the  "Graphic"  suffix and the
                  leading g parameter).  Composite graphics  are  the
                  most likely users of such helper functions, calling
                  them on their children.
    
    
    

    FULLGRAPHIC PUBLIC OPERATIONS

           FullGraphic(Graphic* = nil)
                  Construct  a  full  graphic,  optionally  supplying
                  another  graphic  from which to copy an initial set
                  of graphics state attributes.  FullGraphic  objects
                  store   a   full   complement   of  graphics  state
                  attributes; consequently, FullGraphic redefines all
                  the   operations  for  setting  and  getting  these
                  attributes.  The FullGraphic class can be used as a
                  base  class  from  which  to  derive  graphics that
                  require a complete set of graphics state and  store
                  such state.  It is also useful to instantiate Full-
                  Graphics and use them as graphics  state  reposito-
                  ries.
    
    
    

    SEE ALSO

           Canvas(3I),   Iterator(3U),  Painter(3I)  Transformer(3I),
           geomobjs(3U), pspaint(3U)
    
           "Applying Object-Oriented Design to Structured  Graphics,"
           John  M.  Vlissides  and Mark A. Linton, in Proceedings of
           the 1988 USENIX C++ Conference, Denver, CO, October  1988,
           pp. 81-94.
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/GraphicBlock.html0000644000076500007650000001556307374262640020650 0ustar scottscott00000000000000
    
           GraphicBlock - interactor that displays a graphic
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/grblock.h>
    
    
    

    DESCRIPTION

           A  GraphicBlock  is an interactor that displays a graphic.
           GraphicBlocks are useful for interactors whose  appearance
           is  most  conveniently  defined  with structured graphics.
           The GraphicBlock will draw its graphic in response to Draw
           and Redraw calls.
    
           The  graphic  can  be  aligned  with respect to the Graph-
           icBlock's canvas.  The GraphicBlock positions its  graphic
           so  that  its bounding box is aligned with the canvas when
           the canvas is allocated.  On subsequent resizes, the  por-
           tion  of  the  graphic within the canvas is aligned.  With
           the default alignment, for example, a graphic will be cen-
           tered  in the canvas initially.  If the canvas is resized,
           then the part of the graphic in the center of  the  canvas
           prior  to resizing will appear in the center of the canvas
           after resizing.
    
           The graphic can be scrolled and zoomed as well.   Changing
           either  the curwidth/curheight or the width/height members
           of the GraphicBlock's perspective  effectively  zooms  the
           graphic.   For example, calling the Adjust member function
           with a perspective whose curwidth and curheight  are  half
           that of the GraphicBlock's canvas will enlarge the graphic
           by a factor of two. Zooming can be limited  to  magnifica-
           tions  that are powers of two by specifying Binary for the
           Zooming parameter.
    
           A GraphicBlock's natural size depends on the size  of  the
           graphic  it  displays and on any padding (white space sur-
           rounding  the  graphic)  specified.    GraphicBlocks   are
           infinitely  stretchable  horizontally  and  vertically  by
           default.
    
    
    

    PUBLIC OPERATIONS

           GraphicBlock(
               Graphic*, Coord pad = 0,
               Alignment = Center, Zooming = Continuous
           )
    
           GraphicBlock(
               const char*, Graphic*, Coord pad = 0,
               Alignment = Center, Zooming = Continuous
           )
                  Create  a  new  GraphicBlock  with  the   specified
                  graphic,  padding, alignment, and zooming behavior.
                  You can also specify  the  GraphicBlock's  instance
                  Update  updates  the  GraphicBlock's perspective to
                  reflect any change in the values returned  by  Get-
                  GraphicBox  (described  below),  which  defines the
                  extremities of the scrolling area.   Update  should
                  be called after the graphic is changed.
    
           virtual void Highlight(boolean)
                  When  highlighted,  GraphicBlock  draws itself with
                  the foreground and background colors of its graphic
                  and  its  painter  reversed.  GraphicBlock uses its
                  output painter to fill its canvas  with  background
                  color, thus providing a background for the graphic.
    
           Graphic* GetGraphic()
                  Return the graphic in the GraphicBlock,  stored  in
                  the _graphic protected member variable.
    
           float GetMagnification()
           void SetMagnification(float)
                  Get  and  set  the  magnification  applied  to  the
                  graphic, relative to  its  magnification  when  the
                  GraphicBlock was created (1x).
    
    
    

    PROTECTED OPERATIONS

           void Init()
                  Initialize   the   GraphicBlock,   positioning  its
                  graphic according to the alignment specified in the
                  constructor.  The constructor calls this operation.
                  Subclasses should call Init if they should  replace
                  the displayed graphic with another.
    
           void UpdatePerspective()
                  Change  the  GraphicBlock's  perspective to reflect
                  the bounding box of the graphic.  UpdatePerspective
                  encapsulates   this   functionality  to  facilitate
                  redefinition of  the  Update  function  in  derived
                  classes.
    
           void GrabScroll(Event&)
           void RateScroll(Event&)
                  Initiate  grab  scrolling  or rate scrolling.  Once
                  called, GrabScroll (RateScroll) polls  the  current
                  mouse position as long as the middle (right) button
                  is pressed.  As GrabScroll polls,  it  scrolls  the
                  GraphicBlock  to  follow the mouse position, making
                  it appear as though the user is dragging the Graph-
                  icBlock's  graphic  itself.   Each  time RateScroll
                  polls the mouse, it scrolls the GraphicBlock by  an
                  amount  corresponding  to  the differential between
                  the current and initial mouse positions.  This cre-
                  ates the illusion of a joystick interface: the fur-
                  ther away the mouse is from its  initial  position,
                  down,  stops,  and  reverses  direction as the user
                  drags the mouse back towards and past  the  initial
                  position.
    
           virtual void GetGraphicBox(Coord&, Coord&, Coord&, Coord&)
                  Return the lower-left and  upper-right  coordinates
                  of  the total area in which to scroll.  By default,
                  this area is corresponds to the graphic's  bounding
                  box.
    
           virtual void Zoom(Perspective&)
           virtual void Scroll(Perspective&)
                  These  functions  define  how zooming and scrolling
                  are  inferred  from  the  perspective  supplied  to
                  Adjust.   The  default behaviors implement standard
                  scrolling semantics and zooming as described above.
    
           virtual float LimitMagnification(float)
                  Limit  the  amount  of  magnification  that  can be
                  applied to the graphic.  This function is used as a
                  filter to convert desired magnifications into legal
                  ones.  By default, the  argument  is  returned;  no
                  limits are imposed.
    
    
    

    SEE ALSO

           Graphic(3U), Interactor(3I), Perspective(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/GraphicComp.html0000644000076500007650000003536607374262640020517 0ustar scottscott00000000000000
    
           GraphicComp,  GraphicComps  -  base  classes for graphical
           component subjects
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/grcomp.h>
    
    
    

    DESCRIPTION

           GraphicComp is an abstract base class for components  that
           store graphical information in a Graphic object.  Graphic-
           Comp is derived from Component  and  adds  operations  for
           manipulating  its graphical attributes.  GraphicComps is a
           non-abstract subclass of GraphicComp for composite graphi-
           cal component subjects.
    
    
    

    GRAPHICCOMP PUBLIC OPERATIONS

           virtual ~GraphicComp()
                  The  destructor  deletes the GraphicComp's graphic,
                  if any.
    
           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  GraphicComp objects can (un)interpret the following
                  commands:
    
                  AlignCmd  aligns  the  GraphicComp's  graphic  with
                  respect to the graphic in the GraphicComp  returned
                  by  AlignCmd::GetReference.   The alignment's sense
                  is defined by  the  alignments  that  the  AlignCmd
                  specifies:  The  first Alignment parameter returned
                  by AlignCmd::GetAlignment specifies  the  alignment
                  with  respect  to  the reference graphic, while the
                  second Alignment parameter specifies the  alignment
                  with respect to this's graphic.
    
                  BrushCmd sets the graphic's brush to the BrushCmd's
                  value.
    
                  ColorCmd sets the graphic's  foreground  and  back-
                  ground colors.
    
                  FontCmd sets the graphic's font.
    
                  MobilityCmd  sets the GraphicComp's mobility to the
                  MobilityCmd's value.
    
                  MoveCmd translates the GraphicComp's graphic by the
                  amounts in the MoveCmd.
    
                  PatternCmd sets the graphic's pattern.
    
                  RotateCmd  rotates the GraphicComp's graphic by the
                  amount in the RotateCmd.
                  amounts in the ScaleCmd.
    
           virtual Graphic* GetGraphic()
                  Return the GraphicComp's graphic.  GraphicComp sub-
                  class normally redefine this  operation  to  return
                  the graphic that defines their appearance.
    
           virtual Component* GetParent()
                  GraphicComp  redefines GetParent to return its par-
                  ent.  However, GraphicComp does not store a pointer
                  to  the  parent explicitly; instead, it obtains its
                  graphic's parent and obtains the GraphicComp  asso-
                  ciated with the parent graphic.  The graphic stores
                  the GraphicComp that contains it in  its  tag  (see
                  SetGraphic below).
    
           GraphicComp* GetComp(Iterator)
           void SetComp(GraphicComp*, Iterator&)
                  These operations do nothing by default.  Subclasses
                  that contain children should redefine them as  fol-
                  lows:  GetComp  should  return  the  GraphicComp to
                  which an iterator points.  SetComp should  initial-
                  ize  the iterator to point to a particular Graphic-
                  Comp in the list of children; it should  initialize
                  the  iterator  to  point  to  a nil instance if the
                  given GraphicComp is not a child.
    
           void Append(GraphicComp*)
           void Prepend(GraphicComp*)
           void InsertAfter(Iterator, GraphicComp*)
           void InsertBefore(Iterator, GraphicComp*)
           void Remove(GraphicComp*)
           void Remove(Iterator&)
                  Unimplemented operations that composite  subclasses
                  should  redefine  for  modifying the their (concep-
                  tual)  list  of  children.   Note  that  subclasses
                  needn't  necessarily store their children in a list
                  data structure, but a  list  maps  closely  to  the
                  semantics of these operations.
    
                  Append and Prepend add a GraphicComp to the end and
                  the   beginning   of   the   list,    respectively.
                  InsertAfter  and  InsertBefore insert a GraphicComp
                  after and before the GraphicComp pointed to by  the
                  iterator,   respectively.   The  Remove  operations
                  remove a view from the list  without  deleting  it.
                  You  can  remove a view instance by referring to it
                  explicitly or by specifying  an  iterator.   If  an
                  iterator  is  supplied, the Remove operation should
                  advance it to point to the following view as a side
                  effect.
    
                  Modify  the  GraphicComp's graphic state by calling
                  Bequeath on its Graphic.  Graphic::Bequeath  propa-
                  gates  this's  graphic state to its immediate chil-
                  dren,  nullifying  its  own  graphics  state;   see
                  Graphic(3U) for a more complete description.
    
           virtual Mobility GetMobility()
           virtual void SetMobility(Mobility)
                  Get  and set the GraphicComp's mobility.  GetMobil-
                  ity returns Undef by default, and SetMobility  does
                  nothing.
    
    
    

    GRAPHICCOMP PROTECTED OPERATIONS

           GraphicComp(Graphic* = nil)
                  The Graphic instance that defines the GraphicComp's
                  graphical attributes can be specified in  the  con-
                  structor,  which  is  protected  to  guard  against
                  instantiation.
    
           virtual void SetGraphic(Graphic*)
           virtual GraphicComp* GetGraphicComp(Graphic*)
                  SetGraphic sets the GraphicComp's  graphic  to  the
                  given  one,  and  store  this  in the graphic using
                  Graphic::SetTag.  This makes it possible to  obtain
                  the  GraphicComp  that  owns  the  graphic from the
                  graphic itself.  GetGraphicComp returns the  Graph-
                  icComp associated with the given graphic.
    
           void Skip(istream&)
           void Mark(ostream&)
                  Convenience  functions that simply call their Cata-
                  log counterparts.
    
           int ReadBgFilled(istream&)
           PSBrush* ReadBrush(istream&)
           PSColor* ReadColor(istream&)
           PSFont* ReadFont(istream&)
           PSPattern* ReadPattern(istream&)
           PSTransformer* ReadTransformer(istream&)
           char* ReadString(istream&)
           Bitmap* ReadBitmap(istream&)
           Raster* ReadGraymap(istream&)
           Raster* ReadRaster(istream&)
           void ReadVertices(istream&, Coord*&, Coord*&, int&)
    
           void WriteBgFilled(boolean, ostream&)
           void WriteBrush(PSBrush*, ostream&)
           void WriteColor(PSColor*, ostream&)
           void WriteFont(PSFont*, ostream&)
           void WritePattern(PSPattern*, ostream&)
           void WriteTransformer(PSTransformer*, ostream&)
           void WriteString(const char*, ostream&)
           void WriteGraymap(Raster*, ostream&)
           void WriteRaster(Raster*, ostream&)
           void WriteVertices(const Coord*, const Coord*, int,
                  ostream&)
                  Convenience  functions for reading and writing com-
                  mon GraphicComp information.  These operations  are
                  most  often  used  in  the  Read and Write calls of
                  GraphicComp subclasses.   The  Write...  operations
                  send  a  stream of bytes characterizing their first
                  parameter to the ostream.  The  Read...  operations
                  reconstruct  the  object(s) from the bytes that the
                  istream supplies.
    
    
    

    GRAPHICCOMPS PUBLIC OPERATIONS

           GraphicComps()
           GraphicComps(Graphic*)
           virtual ~GraphicComps()
                  The parameterless  constructor  sets  the  Graphic-
                  Comps' graphic to a new Picture instance, while the
                  other lets you specify the graphic explicitly.  The
                  destructor deletes its children.
    
           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  GraphicComps  can  (un)interpret the following com-
                  mands in addition to those that GraphicComp objects
                  (un)interpret:
    
                  BackCmd  and  FrontCmd  change  the position of the
                  GraphicComps' children that are  in  the  command's
                  clipboard object.  If the command has no clipboard,
                  it will create one and fill it with the subjects of
                  GraphicViews  that  are  selected  currently in the
                  command's editor.  Interpreting a BackCmd will move
                  the  children  on the clipboard so that they appear
                  behind the others, preserving their relative order;
                  the opposite occurs when interpreting a FrontCmd.
    
                  CutCmd removes the components in the CutCmd's clip-
                  board from the GraphicComps and places them in  the
                  catalog's  global clipboard.  Interpret will create
                  a clipboard containing  the  subjects  of  selected
                  GraphicViews  if  the  CutCmd has no clipboard ini-
                  tially.
    
                  DeleteCmd removes the components in the DeleteCmd's
                  clipboard  from  the GraphicComps and destroys them
                  when the DeleteCmd is destroyed if it has not  been
                  uninterpreted.   Interpret  will create a clipboard
                  containing the subjects of selected GraphicViews if
                  the DeleteCmd has no clipboard initially.
    
                  Interpret  will  create  a clipboard containing the
                  subject of selected GraphicViews if the DupCmd  has
                  no clipboard initially.
    
                  GroupCmd  removes  the components in the GroupCmd's
                  clipboard from the GraphicComps  and  inserts  them
                  into   the   destination  GraphicComp  returned  by
                  GroupCmd::GetGroup.  The destination is inserted at
                  the  position  formerly occupied by the last compo-
                  nent in the clipboard.   If  the  GroupCmd  has  no
                  clipboard  initially, interpret will create a clip-
                  board containing the subjects  of  selected  Graph-
                  icViews. If GroupCmd does not define a destination,
                  Interpret will create a GraphicComps  instance  and
                  set  the GroupCmd's destination explicitly.  Inter-
                  pret does nothing if the  clipboard  contains  less
                  than two components.
    
                  UngroupCmd extracts the children from components in
                  the UngroupCmd's  clipboard  and  inserts  them  in
                  order immediately after their parents.  The parents
                  are then removed from the GraphicComps.   The  par-
                  ents  are destroyed along with the UngroupCmd if it
                  has not been Uninterpreted.
    
                  PasteCmd appends copies of the  components  in  the
                  PasteCmd's  clipboard  to the GraphicComps.  If the
                  PasteCmd has no clipboard initially,  it  will  use
                  the global clipboard from the catalog.
    
    
    

    GRAPHICCOMPS PROTECTED OPERATIONS

           GraphicComp* Comp(UList*)
           UList* Elem(Iterator)
                  Convenience  functions for extracting a GraphicComp
                  from a UList element and a UList from an  iterator.
    
           void SelectViewsOf(GraphicComp*, Editor*)
                  A  convenience function for selecting all the views
                  of the given GraphicComp that appear in  the  given
                  editor.  SelectViewsOf clears the original contents
                  of the selection.
    
           void SelectClipboard(Clipboard*, Editor)
                  A convenience function for selecting all the  views
                  of  all  the components in the given Clipboard that
                  appear in the given editor.   SelectViewsOf  clears
                  the original contents of the selection.
    
           void StorePosition(GraphicComp*, Command*)
                  Store  the  given  child's  position into the given
                  Command with Command::Store.
    
                  Insert the given GraphicComp  into  this  based  on
                  position  information  stored in the given command.
                  The position information must have been stored with
                  StorePosition.
    
           void Group(Clipboard*, GraphicComp* destination, Command*)
           void Ungroup(GraphicComp* parent, Clipboard*, Command*)
                  Helper functions  used  in  the  interpretation  of
                  GroupCmd   and   UngroupCmd,  respectively.   Group
                  inserts the components in the clipboard into desti-
                  nation  and  inserts destination into this, storing
                  undo information in the command.   Ungroup  removes
                  all  children  from  parent, puts them on the clip-
                  board, and then removes parent from this.   Ungroup
                  also stores undo information in the command.
    
    
    

    SEE ALSO

           BrushCmd(3U),  Catalog(3U),  Clipboard(3U),  ColorCmd(3U),
           Component(3U), Editor(3U), FontCmd(3U), Iterator(3U), Pat-
           ternCmd(3U),    Picture(3U),   Selection(3U),   UList(3U),
           align(3U),  edit(3U),  globals(3U),   struct(3U),   trans-
           forms(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/GraphicCompTool.html0000644000076500007650000000331707374262640021344 0ustar scottscott00000000000000
    
           GraphicCompTool  - tool for instantiating graphical compo-
           nents
    
    
    

    SYNOPSIS

           #include <Unidraw/Tools/grcomptool.h>
    
    
    

    DESCRIPTION

           A GraphicCompTool lets the user instantiate graphical com-
           ponents by direct manipulation.  The GraphicCompTool keeps
           a prototypical component that defines the type  of  compo-
           nent it can instantiate.
    
    
    

    PUBLIC OPERATIONS

           GraphicCompTool(ControlInfo*, GraphicComp* prototype)
           GraphicCompTool()
                  Create  a new GraphicCompTool, supplying the proto-
                  typical GraphicComp.  (You should not normally call
                  the   parameterless   constructor,   which  Creator
                  requires.)  The first constructor creates a graphi-
                  cal view of the prototype for internal use.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  CreateManipulator clears the editor's selection and
                  delegates manipulator creation  and  interpretation
                  to the graphical view of the prototype.
    
           GraphicComp* GetPrototype()
                  Return the prototypical GraphicComp.
    
    
    

    SEE ALSO

           GraphicComp(3U), Tool(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/GraphicView.html0000644000076500007650000003631007374262640020521 0ustar scottscott00000000000000
    
           GraphicView,  GraphicViews  -  base  classes for graphical
           component views
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/grview.h>
    
    
    

    DESCRIPTION

           GraphicView is an abstract base class for graphical  views
           of  GraphicComp objects.  GraphicView is derived from Com-
           ponentView and adds operations for manipulating its graph-
           ical  attributes.  GraphicViews is a non-abstract subclass
           of GraphicView for composite graphical component views.
    
    
    

    GRAPHICVIEW PUBLIC OPERATIONS

           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  GraphicView objects can (un)interpret the following
                  command:
    
                  AlignToGridCmd  aligns  the  graphical component to
                  the grid that affects  the  view.   Interpret  uses
                  AlignToGridCmd::Align  to  carry out the alignment,
                  while Uninterpret uses  AlignToGridCmd::Unalign  to
                  reverse Interpret's effects.
    
           virtual void DrawHandles()
           virtual void RedrawHandles()
           virtual void InitHandles()
           virtual void EraseHandles()
                  Operations  for  displaying  and  hiding the view's
                  selection   handles.    All    use    CreateHandles
                  (described below) to create component-specific rub-
                  berbands that draw  the  handles  if  they  do  not
                  already  exist.   The  rubberband  is stored in the
                  _handles protected member.  DrawHandles  makes  the
                  handles  visible  if  they are not already visible.
                  RedrawHandles forces the handles to draw themselves
                  even if they are already drawn, which may make them
                  disappear if the rubberband draws them in XOR mode.
                  InitHandles  deletes  and  recreates the rubberband
                  defining the handles if it existed when InitHandles
                  was  called.   EraseHandles  erases the handles and
                  deletes the rubberband.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  Operations that define how the  GraphicView  reacts
                  when  it  is manipulated by a tool and how the tool
                  affects  that  component  following   manipulation.
                  and  interpretation  to  the view.  This allows the
                  same tool to behave differently  depending  on  the
                  component it manipulates.
    
                  CreateManipulator  creates  a  manipulator  that is
                  appropriate for the given tool.   It  receives  the
                  viewer  in  which the manipulation will take place,
                  an event with which to initialize  the  manipulator
                  if  necessary,  and  the  coordinate transformation
                  that maps canvas  coordinates  into  the  subject's
                  coordinate  space.   InterpretManipulator is called
                  following manipulation and defines how to construct
                  a  command  that  carries  out  the  manipulation's
                  desired effect.   GraphicView  objects  create  and
                  interpret manipulators for the following tools:
    
                  GraphicCompTool will let the user position a fixed-
                  sized outline reflecting the view's bounding box on
                  the  screen.  Interpretation will produce a command
                  that inserts a copy of the subject  into  the  edi-
                  tor's  component at the specified position.  Place-
                  ment will be constrained by gravity, if active.
    
                  MoveTool will let the user move a fixed-sized  out-
                  line  reflecting  the  view's  bounding  box on the
                  screen.  Interpretation will produce a command that
                  moves  the subject to the specified position. Hold-
                  ing down the Shift key will constrain the  movement
                  to purely horizontal or vertical, and movement will
                  be constrained by gravity.
    
                  ScaleTool will let the user drag a scaling  rectan-
                  gular  outline  corresponding  to  the view's scale
                  following manipulation with the tool.  Scaling will
                  be constrained by gravity.
    
                  StretchTool will let the user drag a variable-sized
                  rectangular outline corresponding to  a  two-dimen-
                  sional stretch that the component will undergo fol-
                  lowing manipulation.  Holding the  Shift  key  down
                  will   constrain  the  stretch  to  one  dimension.
                  Stretching will be constrained by gravity.
    
                  RotateTool will let the user rotate  a  fixed-sized
                  rectangular  outline reflecting the view's bounding
                  box.  The rotation of the  outline  corresponds  to
                  the  rotation  that the component will undergo fol-
                  lowing manipulation.  Rotation will be  constrained
                  by gravity.
    
           virtual Graphic* GetGraphic()
                  Return  the  graphic that defines the GraphicView's
    
           virtual Viewer* GetViewer()
                  Return  the viewer (if any) that displays the view.
    
           GraphicComp* GetGraphicComp()
                  Return the view's subject.
    
           boolean Includes(GraphicView*)
                  A convenience function that returns whether or  not
                  the  GraphicView  includes the given view, that is,
                  whether the view is a child of this.
    
           GraphicView* GetGraphicView(Component*)
                  A convenience function that returns the view of the
                  given  component  (if any) that appears in the same
                  viewer as this.
    
           GraphicView* GetView(Iterator)
           void SetView(GraphicView*, Iterator&)
                  These operations do nothing by default.  Subclasses
                  that  contain children should redefine them as fol-
                  lows: GetView  should  return  the  GraphicView  to
                  which  an iterator points.  SetView should initial-
                  ize the iterator to point to  a  particular  Graph-
                  icView  in the list of children; it should initial-
                  ize the iterator to point to a nil instance if  the
                  given GraphicView is not a child.
    
           virtual Selection* SelectAll()
           virtual Selection* ViewContaining(Coord, Coord)
           virtual Selection* ViewsContaining(Coord, Coord)
           virtual Selection* ViewIntersecting(Coord, Coord, Coord,
                  Coord)
           virtual Selection* ViewsIntersecting(Coord, Coord, Coord,
                  Coord)
           virtual Selection* ViewsWithin(Coord, Coord, Coord, Coord)
           virtual ConnectorView* ConnectorIntersecting(
               Coord, Coord, Coord, Coord
           )
                  These convenience operations do nothing by default.
                  Subclasses containing children should redefine them
                  to do the  following:  SelectAll  should  return  a
                  selection  object  containing (pointers to) all its
                  children; ViewContaining  should  return  the  last
                  (visibly  topmost)  child view containing the given
                  point,  while  ViewsContaining  should  return  all
                  children  containing  the  point;  ViewIntersecting
                  should return the last (visibly topmost) child view
                  intersecting  a rectangular area, while ViewsInter-
                  secting   should   return   all   such    children;
                  ViewsWithin  should  return  all  the  child  views
                  falling strictly within  a  rectangular  area;  and
                  lar area.
    
    
    

    GRAPHICVIEW PROTECTED OPERATIONS

           GraphicView(GraphicComp* = nil)
                  The  constructor  is  protected  to  guard  against
                  instantiation. It takes the view's  subject  as  an
                  optional  argument, passing it to the ComponentView
                  constructor.
    
           virtual void SetGraphic(Graphic*)
                  Set the GraphicView's graphic to the given one, and
                  store  this  in  the graphic using Graphic::SetTag.
                  This makes it possible to  obtain  the  GraphicView
                  that  owns  the  graphic  from  the graphic itself,
                  e.g., after hit detection.
    
           virtual void CreateHandles()
                  Initialize the _handles member  with  a  rubberband
                  that   will   draw  the  appropriate  handles.   By
                  default,  CreateHandles  creates  a   RubberHandles
                  object  with  eight handles around the periphery of
                  the view's bounding box.
    
           virtual int ClosestPoint(
               Coord x[], Coord y[], int n, Coord px, Coord py
           )
                  A convenience function that returns  the  index  of
                  the  point  closest  to  (px,  py) in an array of n
                  points.
    
           GraphicView* View(UList*)
           GraphicView* GetGraphicView(Graphic*)
                  Convenience functions that return  the  GraphicView
                  in  a  UList element and the GraphicView associated
                  with a graphic, respectively.
    
           Manipulator* CreateGraphicCompManip(
               Viewer*, Event&, Transformer*, Tool*
           )
    
           Manipulator* CreateStretchManip(
               Viewer*, Event&, Transformer*, Tool*
           )
    
           Command* InterpretGraphicCompManip(Manipulator*)
           Command* InterpretStretchManip(Manipulator*)
                  Helper  functions  used  by  CreateManipulator  and
                  InterpretManipulator  to  create  and interpret the
                  manipulators associated  with  GraphicCompTool  and
                  StretchTool.
    
           void AddDamage(Graphic*)
                  GraphicViews  should  incur damage in response to a
                  change in their appearance, which generally happens
                  in  their Update function.  AddDamage and IncurDam-
                  age produce damage by calling  the  related  opera-
                  tions  on  the  enclosing  viewer's  damage object.
                  Subclasses can use these functions for  convenience
                  to  avoid  accessing  the enclosing viewer's damage
                  object directly.
    
           void Unselect(GraphicView*)
                  A convenience function  that  unselects  the  given
                  view,  which entails erasing its handles and remov-
                  ing  it  from  the  enclosing  editor's   selection
                  object.
    
           virtual void Add(GraphicView*)
           virtual void Append(GraphicView*)
           virtual void InsertBefore(Iterator, GraphicView*)
           virtual void Remove(Iterator&)
           virtual void DeleteView(Iterator&)
                  Unimplemented  operations that composite subclasses
                  should redefine for modifying  the  their  (concep-
                  tual)  list  of  children.   Note  that  subclasses
                  needn't necessarily store their children in a  list
                  data  structure,  but  a  list  maps closely to the
                  semantics of these  operations.   These  operations
                  are  not  public because only the view itself knows
                  how to keep its structure consistent with  that  of
                  the subject and/or its semantics.
    
                  Add  adds  a  GraphicView to the end of the list of
                  children.   InsertBefore  inserts   a   GraphicView
                  before  the GraphicView pointed to by the iterator.
                  Remove removes a view to which the  given  iterator
                  refers  from  the  list  without deleting it, while
                  DeleteView removes it and deletes it.   Remove  and
                  DeleteView  should advance the iterator to point to
                  the following view as a side effect.
    
    
    

    GRAPHICVIEWS PUBLIC OPERATIONS

           GraphicViews(GraphicComps* = nil)
           virtual ~GraphicViews()
                  The constructor creates a GraphicViews,  optionally
                  supplying  the subject.  The destructor deletes the
                  GraphicViews' children.
    
           virtual void Interpret(Command*)
                  GraphicViews objects interpret the  following  com-
                  mand:
    
                  AlignToGridCmd  aligns  the  graphical component to
                  the grid that affects the view.  The overall align-
                  component to the grid and then moves all other sub-
                  components by the amount that the leaf moved.
    
           virtual void Update()
                  Automatically update the  GraphicViews'  state  and
                  structure  to match the subject's.  Update will not
                  necessarily detect restructurings or state  modifi-
                  cations  made  to  the subject's children more than
                  one level deep.  Update uses GVUpdater  to  do  its
                  work.
    
           virtual Graphic* GetGraphic()
                  Return  the  GraphicViews' graphic, which (like its
                  subject's graphic) is a Picture.
    
           GraphicComps* GetGraphicComps()
                  Return the subject.
    
    
    

    GRAPHICVIEWS PROTECTED OPERATIONS

           UList* Elem(Iterator)
                  A convenience function for extracting a UList  from
                  an iterator.
    
    
    

    SEE ALSO

           Command(3U), ComponentView(3U), Connector(3U), Damage(3U),
           GVUpdater(3U),    GraphicComp(3U),    GraphicCompTool(3U),
           Grid(3U),  Event(3I),  Manipulator(3U), MoveTool(3U), Pic-
           ture(3U),  RotateTool(3U),   Rubband(3I),   ScaleTool(3U),
           Selection(3U),      StretchTool(3U),      Transformer(3I),
           Viewer(3U), align(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Grid.html0000644000076500007650000000464107374262640017200 0ustar scottscott00000000000000
    
           Grid  -  displays a grid in a viewer and constrains points
           to lie on it
    
    
    

    SYNOPSIS

           #include <Unidraw/grid.h>
    
    
    

    DESCRIPTION

           The Grid object performs two functions: it displays a grid
           in  a  viewer,  and  it can constrain points to lie on the
           grid.  The base class draws the grid as a simple array  of
           dots; subclasses can draw arbitrarily complex grids.
    
    
    

    PUBLIC OPERATIONS

           Grid(float w, float h, float xincr, float yincr)
                  The constructor parameters correspond to a width, a
                  height, and independent units of graduation for the
                  horizontal  and  vertical axes, all in pixels.  The
                  Grid base class employs a  special-purpose  graphic
                  to  render  itself, one that draws an array of dots
                  based on the information supplied in this construc-
                  tor.
    
           virtual Graphic* GetGraphic()
                  Return the graphic used to render the grid.
    
           virtual void Constrain(Coord&, Coord&)
                  Constrain  the given coordinate pair to fall on the
                  grid.  The pair is changed to fall on  the  nearest
                  grid point by default.
    
           virtual void Visiblity(boolean)
                  Make  the  grid visible (specify true) or invisible
                  (specify false).
    
           virtual boolean IsVisible()
                  Return whether the grid is visible or not.
    
           virtual void SetSpacing(float xincr, float yincr)
                  Reset the grid's units of graduation.
    
    
    

    PROTECTED OPERATIONS

           Grid(Graphic*)
                  The  protected  constructor  allows  subclasses  to
                  specify  an  arbitrary  graphic  for  rendering the
                  grid.  Subclasses that use  this  constructor  must
                  also redefine the Constrain operation.
    
    
    

    SEE ALSO

           Graphic(3U), Viewer(3U)
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/GVUpdater.html0000644000076500007650000000560407374262640020154 0ustar scottscott00000000000000
    
           GVUpdater  -  updates  GraphicViews structure to match its
           subject
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/gvupdater.h>
    
    
    

    DESCRIPTION

           GVUpdater is an  implementation  class  that  GraphicViews
           uses  to  keep its state and structure consistent with its
           GraphicComps subject.  GVUpdater  ensures  that  subject's
           immediate  children  are identical to the view's in number
           and graphics state attributes. It also  ensures  that  the
           root  GraphicViews  and  GraphicComps  themselves have the
           same graphics state.  GVUpdater does not  ensure  that  it
           will detect and update changes made to deeper child nodes.
    
    
    

    PUBLIC OPERATIONS

           GVUpdater(GraphicView*)
                  The constructor takes the GraphicView that it  will
                  be  updating  as  a  parameter and stores it in the
                  protected member _gv.  Normally,  GraphicViews  are
                  the only objects that will instantiate GVUpdater.
    
           virtual void Update()
                  Update  the  GraphicView to make it consistent with
                  its subject.
    
    
    

    PROTECTED OPERATIONS

           void UpdateStructure()
           void UpdateState()
                  The Update procedure takes  place  in  two  stages.
                  The  subject's and view's structures are reconciled
                  first  by  UpdateStructure,  and  then  the  view's
                  graphic state is changed to match the subjects with
                  UpdateState.
    
           void AddDamage(Graphic*)
           void IncurDamage(Graphic*)
           void Unselect(GraphicView*)
           virtual void Add(GraphicView*)
           virtual void Append(GraphicView*)
           virtual void InsertBefore(Iterator, GraphicView*)
            virtual void Remove(Iterator&)
           virtual void DeleteView(Iterator&)
                  GVUpdater is a friend of GraphicViews.  These  con-
                  venience  operations  provide  an  interface to the
                  corresponding protected GraphicViews operations.
    
           virtual ClassId ViewCategory()
                  Returns the view category (see  classes(3U))  GVUp-
                  dater  will  use  to instantiate views of subjects.
                  ViewCategory returns COMPONENT_VIEW by default.
    
           GraphicComp(3U), GraphicView(3U), classes(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ImportCmd.html0000644000076500007650000000536107374262640020211 0ustar scottscott00000000000000
    
           ImportCmd - import a graphical component
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/import.h>
    
    
    

    DESCRIPTION

           ImportCmd  imports  a graphical image from a file into the
           drawing being edited.  ImportCmd  supports  the  following
           file  formats:  TIFF;  PostScript generated by pgmtops and
           ppmtops; X bitmap format; and Unidraw format.
    
    
    

    PUBLIC OPERATIONS

           ImportCmd(ControlInfo*, FileChooser* = nil)
           ImportCmd(Editor* = nil, FileChooser* = nil)
                  Create a new ImportCmd instance, optionally supply-
                  ing  the  FileChooser  that will prompt the user to
                  specify the file to import.  After the user  speci-
                  fies  the  file,  ImportCmd  reads  it,  creates an
                  appropriate graphical component, and pastes it into
                  the component being edited in the enclosing editor.
    
           static GraphicComp* Import(const char*)
           static GraphicComp* TIFF_Image(const char*)
           static GraphicComp* PGM_Image(const char*)
           static GraphicComp* PPM_Image(const char*)
           static GraphicComp* XBitmap_Image(const char*)
                  Operations for reading data from various file  for-
                  mats  and  creating an appropriate graphical compo-
                  nent.   TIFF_Image,   PGM_Image,   PPM_Image,   and
                  XBitmap_Image  assume that the specified file is in
                  the corresponding format.  Import is more  general:
                  it  determines  the  format  from the file and then
                  calls one of the other functions.
    
    
    

    PROTECTED OPERATIONS

           void Init(FileChooser*)
                  Specify the FileChooser  instance  (stored  in  the
                  _dialog  protected member) explicitly.  This opera-
                  tion does not delete the existing instance, if any.
    
           GraphicComp* PostDialog()
                  Post  the FileChooser and return the graphical com-
                  ponent created from  the  user-specified  file,  if
                  any.
    
    
    

    SEE ALSO

           Catalog(3U),    Command(3U),   FileChooser(3I),   Graphic-
           Comp(3U), bitmap(1), pgmtops(1), ppmtops(1)
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/index.html0000644000076500007650000006303207374262640017421 0ustar scottscott00000000000000InterViews 3.1 and Unidraw man pages:

    to ivtools doc page

  • Dispatch Dispatcher  (web page)
  • Dispatch IOCallback
  • Dispatch IOHandler  (web page)
  • Dispatch RpcHdr  (web page)
  • Dispatch RpcPeer  (web page)
  • Dispatch RpcReader  (web page)
  • Dispatch RpcRegistry  (web page)
  • Dispatch RpcService  (web page)
  • Dispatch RpcWriter  (web page)
  • Dispatch iostreamb  (web page)
  • Dispatch rpcbuf  (web page)
  • Dispatch rpcstream  (web page)
  • InterViews Adjuster  (web page)
  • InterViews Banner  (web page)
  • InterViews Border  (web page)
  • InterViews Box2_6  (web page)
  • InterViews Button2_6  (web page)
  • InterViews CompletionEditor  (web page)
  • InterViews Control  (web page)
  • InterViews Deck2_6  (web page)
  • InterViews Dialog  (web page)
  • InterViews FileBrowser  (web page)
  • InterViews FileChooser  (web page)
  • InterViews Frame  (web page)
  • InterViews Glue2_6  (web page)
  • InterViews Interactor  (web page)
  • InterViews MatchEditor  (web page)
  • InterViews Menu2_6  (web page)
  • InterViews Message  (web page)
  • InterViews Painter  (web page)
  • InterViews Panner  (web page)
  • InterViews Pattern  (web page)
  • InterViews Perspective  (web page)
  • InterViews Regexp  (web page)
  • InterViews ReqErr  (web page)
  • InterViews Resource  (web page)
  • InterViews Rubband  (web page)
  • InterViews Scene  (web page)
  • InterViews Scroller  (web page)
  • InterViews Sensor  (web page)
  • InterViews Shape  (web page)
  • InterViews StrBrowser  (web page)
  • InterViews StrChooser  (web page)
  • InterViews StringEditor  (web page)
  • InterViews Subject  (web page)
  • InterViews TextBuffer  (web page)
  • InterViews TextDisplay  (web page)
  • InterViews TextEditor  (web page)
  • InterViews Tray  (web page)
  • InterViews Viewport  (web page)
  • InterViews World  (web page)
  • Unidraw BasicDialog  (web page)
  • Unidraw BrushCmd  (web page)
  • Unidraw CGlue  (web page)
  • Unidraw CSolver  (web page)
  • Unidraw Catalog  (web page)
  • Unidraw Clipboard  (web page)
  • Unidraw ColorCmd  (web page)
  • Unidraw Command  (web page)
  • Unidraw Component  (web page)
  • Unidraw ComponentView  (web page)
  • Unidraw ConnectTool  (web page)
  • Unidraw Connector  (web page)
  • Unidraw ControlInfo  (web page)
  • Unidraw Creator  (web page)
  • Unidraw Damage  (web page)
  • Unidraw Data  (web page)
  • Unidraw Editor  (web page)
  • Unidraw EditorInfo  (web page)
  • Unidraw EllipseComp  (web page)
  • Unidraw ExternView  (web page)
  • Unidraw FontCmd  (web page)
  • Unidraw GVUpdater  (web page)
  • Unidraw Graphic  (web page)
  • Unidraw GraphicBlock  (web page)
  • Unidraw GraphicComp  (web page)
  • Unidraw GraphicCompTool  (web page)
  • Unidraw GraphicView  (web page)
  • Unidraw Grid  (web page)
  • Unidraw ImportCmd  (web page)
  • Unidraw Iterator  (web page)
  • Unidraw KeyMap  (web page)
  • Unidraw LineComp  (web page)
  • Unidraw LinkComp  (web page)
  • Unidraw MacroCmd  (web page)
  • Unidraw MagnifyTool  (web page)
  • Unidraw Manipulator  (web page)
  • Unidraw MoveTool  (web page)
  • Unidraw NOPCmd  (web page)
  • Unidraw PadComp  (web page)
  • Unidraw Page  (web page)
  • Unidraw Path  (web page)
  • Unidraw PatternCmd  (web page)
  • Unidraw Picture  (web page)
  • Unidraw PinComp  (web page)
  • Unidraw PolygonComp  (web page)
  • Unidraw PostScriptView  (web page)
  • Unidraw RasterComp  (web page)
  • Unidraw RasterRect  (web page)
  • Unidraw RectComp  (web page)
  • Unidraw ReshapeTool  (web page)
  • Unidraw RotateTool  (web page)
  • Unidraw ScaleTool  (web page)
  • Unidraw SelectTool  (web page)
  • Unidraw Selection  (web page)
  • Unidraw SlotComp  (web page)
  • Unidraw SplineComp  (web page)
  • Unidraw StateVar  (web page)
  • Unidraw StateVarView  (web page)
  • Unidraw StencilComp  (web page)
  • Unidraw StretchTool  (web page)
  • Unidraw TextComp  (web page)
  • Unidraw Tool  (web page)
  • Unidraw TransferFunct  (web page)
  • Unidraw UArray  (web page)
  • Unidraw UControl  (web page)
  • Unidraw UHashTable  (web page)
  • Unidraw ULabel  (web page)
  • Unidraw UList  (web page)
  • Unidraw UMap  (web page)
  • Unidraw UStencil  (web page)
  • Unidraw Unidraw  (web page)
  • Unidraw UnidrawIntro  (web page)
  • Unidraw Vertices  (web page)
  • Unidraw VerticesComp  (web page)
  • Unidraw Viewer  (web page)
  • Unidraw align commands  (web pages: AlignCmd, AlignToGridCmd)
  • Unidraw cat commands  (web pages: NewCompCmd, PrintCmd, QuitCmd, RevertCmd, SaveCompCmd, SaveCompAsCmd, ViewCompCmd)
  • Unidraw classes  (web page)
  • Unidraw datas  (web pages: ColorData, GSData, MobilityData, MoveData, VoidData )
  • Unidraw edit commands  (web pages: ConnectCmd, CopyCmd, CutCmd, DeleteCmd, DupCmd, MobilityCmd, PasteCmd, RedoCmd, ReplaceCmd, SlctAllCmd, UndoCmd)
  • Unidraw ellipse graphics  (web pages: Ellipse, S_Ellipse, F_Ellipse, SF_Ellipse, S_Circle, F_Circle, SF_Circle)
  • Unidraw geometric objects  (web pages: PointObj, LineObj, BoxObj, MultiLineObj, FillPolygonObj, Extent)
  • Unidraw globals
  • Unidraw keyboard equivalents
  • Unidraw line graphics  (web pages: Point, Line, MultiLine, S_MultiLine, S_MultiLine)
  • Unidraw manipulators  (web pages: ConnectManip, DragManip, ManipGroup, TextManip, VertexManip)
  • Unidraw polygon graphics  (web pages: Rect, S_Rect, F_Rect, SF_Rect, Polygon, S_Polygon, F_Polygon, SF_Polygon)
  • Unidraw PostScript graphic state objects  (web pages: PSBrush, PSColor, PSFont, PSPattern)
  • Unidraw spline graphics  (web pages: OpenBSpline, S_OpenBSpline, F_OpenBSpline, SF_OpenBSpline, SFH_OpenBSpline, ClosedBSpline, S_ClosedBSpline, F_ClosedBSpline, SF_ClosedBSpline, SFH_ClosedBSpline)
  • Unidraw state variables  (web pages: BrushVar, ColorVar, CompNameVar, FontVar, GravityVar, MagnifVar, ModifStatusVar, NameVar, PatternVar)
  • Unidraw state variables views  (web pages: BrushVarView, CompNameVarView, FileNameVarView, FontVarView, GravityVarView, MagnifVarView, ModifStatusVarView, NameVarView, PatternVarView )
  • Unidraw structure commands  (web pages: BackCmd, FrontCmd, GroupCmd, UngroupCmd)
  • Unidraw transfer functions  (web pages: TransferFunct, TF_2Port, TF_Direct)
  • Unidraw transform commands  (web pages: MoveCmd, RotateCmd, ScaleCmd)
  • Unidraw controls for Unidraw GUI  (web pages: CommandControl, PanelControl, HPanelControl, VPanelControl, CommandInteractor, PanelInteractor)
  • Unidraw view commands  (web pages: CenterCmd, CloseEditorCmd, GravityCmd, GridCmd, GridSpacingCmd, NormSizeCmd, OrientationCmd, RedToFitCmd)
  • to ivtools doc page ivtools-doc/doc/man3.1/Interactor.html0000644000076500007650000004317207374262640020427 0ustar scottscott00000000000000

    
           Interactor - base class for interactive objects
    
    
    

    SYNOPSIS

           #include <InterViews/interactor.h>
    
    
    

    DESCRIPTION

           In  2.6, Interactor was the base class for all interactive
           objects.  It is currently provided for  backward  compati-
           bility.
    
           Every  interactor has a shape member variable that defines
           the desired characteristics of screen space  in  terms  of
           size, shrinkability, and stretchability.  This information
           is used to allocate display space for the  interactor  and
           the  interactor's  canvas  member  variable  is set to the
           actual space obtained.  The lower left corner of the  can-
           vas  is addressed by (0, 0); the upper right by the member
           variables (xmax, ymax).
    
           The input member variable is the normal sensor for reading
           events.   The  output  member  variable  is  the  standard
           painter for performing graphics  operations.   Interactors
           generally  should not set output; it will either be inher-
           ited (and shared) from the interactor's parent or  set  by
           user customization attributes.
    
           An interactor may optionally define the perspective member
           variable to represent the portion of total area  that  the
           interactor  is displaying.  Perspectives allow interactors
           to coordinate with other interactors, such  as  scrollers,
           that want to control the display area.
    
           An  interactor also may specify certain characteristics of
           the interactor's canvas, such as whether it  is  read-only
           or  read/write,  whether its contents should be saved when
           not visible.  Interactors also may specify the visual for-
           mat and interpretation of the input pointing device (e.g.,
           mouse cursor) when it is inside the interactor's canvas.
    
           To be mapped to some portion of the display, an interactor
           must  have  been inserted into a scene, called its parent.
           The interactor will be mapped when its parent  is  mapped.
           The  root  scene for the display can be accessed through a
           World(3I) object.
    
    
    

    CONSTRUCTORS

           Interactor()
                  Construct an interactor.  The input sensor and out-
                  put painters are initialized to nil.
    
           Interactor(const char* name)
                  Construct  an interactor associated with the string
                  Behavior can also  be  customized  on  a  per-class
                  basis   using  the  subclass  name.   Although  not
                  explicitly documented, an instance  of  any  object
                  inheriting  from interactor may be constructed with
                  an additional argument (appearing first) containing
                  the  string  name.  For example, both ``HGlue(natu-
                  ral, stretch)''  and  ``HGlue("somename",  natural,
                  stretch)'' are valid.
    
           ~Interactor()
                  The  base destructor automatically deletes the base
                  fields, including shape, canvas, input, and output.
    
    
    

    CONFIGURATION

           void Align(Alignment, int w, int h, Coord& l, Coord& b)
                  Return  the coordinates at which an object with the
                  given width and height will have the  given  align-
                  ment within the interactor's canvas.
    
           void SetClassName(const char*)
           const char* GetClassName()
           void SetInstance(const char*)
           const char* GetInstance()
                  Set/get  the class or instance name for an interac-
                  tor.  The names are used to  determine  user  style
                  preferences.  SetClassName and SetInstance can only
                  be performed by subclasses.
    
           void Config(Scene* s)
                  Configure  this  interactor  and  its   descendants
                  according  to  user  preferences.   The  scene s is
                  assumed to be the interactor's parent and  is  used
                  to  inherit  attribute values.  This operation need
                  not be called explicitly; it  is  called  automati-
                  cally  when  the  ancestors of an interactor become
                  known (e.g., when the interactor or an ancestor  is
                  inserted into a world).
    
           Configuration involves a traversal of the interactor hier-
           archy.  For each interactor in the hierarchy,  the  output
           painter is either inherited from its parent or copied from
           its parent if there are user preferences specific  to  the
           interactor  for  painter  attributes such as colors, font,
           and brush.  For example, suppose the  user  preference  is
           ``A*B*font:9x15''   and   the   interactor   hierarchy  is
           ``A.B.C.D'' (each ``.'' representing a  nesting  level  in
           the  hierarchy).   Interactors A and B will share the same
           output painter, C will copy B's output and change the font
           to ``9x15'', and D will share C's output.
    
           After  assigning the output painter, configuration is per-
           formed recursively on any children interactors.  The final
    
           virtual void Reconfig()
                  Perform any configuration specific to a  particular
                  interactor.   This  operation should minimally com-
                  pute the interactor's shape based on the  shape  of
                  its children and/or the characteristics of its out-
                  put painter (e.g., font).   It  can  also  retrieve
                  user  preferences  specific  to  this  interactor's
                  class or instance name using GetAttribute.
    
           const char* GetAttribute(const char*)
                  Retrieve the value of a user  preference  with  the
                  given  name.   GetAttribute  searches  for the most
                  specific match to the current context.
    
           virtual void Reshape(Shape&)
           Shape* GetShape()
                  Set/get the shape of an interactor.  Reshape is a a
                  suggestion that an interactor's shape should change
                  to the given one.  The default operation  sets  the
                  interactor's  shape  to  the  new  shape  and calls
                  Scene::Change on  the  interactor's  parent.   Sug-
                  gested shape information may be lost when an inter-
                  actor is configured; thus, it is best to avoid  use
                  of   Reshape.   The  same  affect  can  usually  be
                  achieved by putting the interactor in a  box  along
                  with a particular shape of glue.
    
           void SetCursor(Cursor*)
           Cursor* GetCursor()
                  Set/get  the cursor that will be displayed when the
                  pointing device is inside the interactor's  canvas.
                  If  the interactor does not explicitly set its cur-
                  sor, it will use its  parent's  cursor.   GetCursor
                  returns nil in this case.
    
    
    

    INTERACTOR HIERARCHY

           Scene* Parent()
                  Return the interactor's parent or nil if the inter-
                  actor has not been inserted into a scene.
    
           World* GetWorld()
                  Return a pointer to the world  the  interactor  has
                  been  inserted into or nil if the interactor's root
                  ancestor is not mapped.
    
           void GetRelative(Coord& x, Coord& y, Interactor* = nil)
                  Map coordinates that are relative to this  interac-
                  tor's canvas to be relative to another interactor's
                  canvas.  If the other interactor is nil,  then  the
                  coordinates are made relative to the world.
    
                  actor**&, int&)
                  Construct  an  array of pointers to the interactors
                  contained within this interactor.   The  first  and
                  second  parameters  specify an array of interactors
                  that is already allocated.  This array is  used  if
                  it  is large enough, otherwise a new array is allo-
                  cated from free store.  The third and fourth param-
                  eters  return  the  which  array  was  used and the
                  actual number of  components.   This  operation  is
                  only  defined by scenes; the default operation sets
                  the number of elements to zero.
    
    
    

    OUTPUT

           Canvas* GetCanvas() const
                  Return the interactor's canvas, which may be nil if
                  the interactor is not mapped to a display.
    
           ManagedWindow* GetTopLevelWindow() const
                  Return  the  top-level  window  associated with the
                  interactor, if it is mapped and top-level.
    
           virtual void Draw()
                  Draw is used to display the contents of an interac-
                  tor,  including the contents of any interior inter-
                  actors.    The   default   Draw   operation   calls
                  Redraw(0, 0, xmax, ymax).     Interactors   usually
                  don't need to redefine  Draw  unless  they  contain
                  interior interactors (i.e., scene subclasses); most
                  simple interactors redefine only Redraw.
    
           virtual void Highlight(boolean)
                  Turn highlighting on or off, depending  on  whether
                  the parameter is true or false.  The default opera-
                  tion is a nop.
    
           void SetCanvasType(CanvasType)
           CanvasType GetCanvasType()
                  Set/get the type of canvas desired for an  interac-
                  tor.   This  operation  must be performed before an
                  interactor is mapped.  The  possible  canvas  types
                  are  CanvasShapeOnly,  meaning  the interactor per-
                  forms no input or output (e.g., glue),  CanvasInpu-
                  tOnly,  meaning  the interactor performs no output,
                  CanvasInputOutput, which is  the  default,  Canvas-
                  SaveUnder,  which suggests that the interactor will
                  be mapped for a short time (e.g., a popup menu) and
                  that  the  information  under  the canvas should be
                  saved,  CanvasSaveContents,  which  suggests   that
                  Redraw calls are expensive and should be avoided by
                  caching  the  display,  and  CanvasSaveBoth,  which
                  requests  both  CanvasSaveUnder  and CanvasSaveCon-
                  tents.
    
           void Flush()
                  Sync waits until any pending operations  have  com-
                  pleted.  Flush makes sure the local buffer of pend-
                  ing operations (if any) is sent to the display.  An
                  input  operation will do a Sync automatically if it
                  would block; thus, applications generally need  not
                  call Sync or Flush explicitly.
    
    
    

    INPUT

           void Listen(Sensor*)
                  When  an  interactor  is mapped onto a display, its
                  input interest is determined by its  input  sensor.
                  A different sensor can be specified with the Listen
                  operation.  To switch  back  to  input,  call  Lis-
                  ten(input).
    
           void Read(Event&)
           boolean Read(long sec, long usec, Event&)
                  Each  application  has  a  single  input  queue  of
                  events.  Any interactor can use Read  to  take  the
                  next event from the queue.  Redraw and Resize oper-
                  ations may be called as a side effect of a Read (or
                  any  input  operation).   The  target  field of the
                  event specifies the interactor for which the  event
                  is  intended,  which is not necessarily the same as
                  the interactor that performed the Read.  The target
                  is  normally  the  interactor whose canvas is under
                  the pointing  device.   The  second  form  of  Read
                  behaves  differently if there are no events to read
                  in that it times out after the given number of sec-
                  onds  and  microseconds  have  elapsed  and returns
                  false to the calling program.
    
           void UnRead(Event&)
                  UnRead puts an event back on the input queue as  if
                  it had never been read.
    
           virtual void Handle(Event&)
                  When  an  interactor  wishes  to  pass  an event to
                  another interactor, it calls the other interactor's
                  Handle  operation.  Thus, input flow control can be
                  either procedural with Read  or  event-driven  with
                  Handle.
    
           void Run()
                  Run implements a simple event dispatching loop.  It
                  calls Read to get the next  event  and  passes  the
                  event  to  the  target  interactor via Handle.  The
                  loop terminates if the Handle  operation  sets  the
                  event's target to nil.
    
           void QuitRunning(Event&)
                  event dispatching loop.
    
           boolean Check()
                  Check  determines  whether an event of interest has
                  occurred.
    
           void Poll(Event&)
                  Poll sets an event to  reflect  the  current  input
                  state.  Input polling can be wasteful of cycles and
                  should be avoided if possible.
    
           int CheckQueue()
                  CheckQueue returns the number of input packets that
                  have been queued within the application.  The event
                  queue manager always reads as much  information  as
                  possible  from  input;  thus,  a  single Read might
                  store many events in a  local  buffer.   Subsequent
                  reads  can  simply  access the buffer.  This buffer
                  can include  out-of-band  packets,  such  as  those
                  requiring  a Redraw.  The number returned by Check-
                  Queue does not correspond, therefore, to the actual
                  number of input events.
    
    
    

    VIEWS

           virtual void Adjust(Perspective&)
                  Adjust  suggests to an interactor that its perspec-
                  tive should change to the  given  perspective;  the
                  interactor may choose to accept any part of the new
                  perspective and  must  ensure  that  the  parameter
                  matches  its  (new)  perspective  before returning.
                  Adjust can be used by another interactor to scroll,
                  pan, or zoom an interactor.
    
           Perspective* GetPerspective()
                  GetPerspective  returns  the perspective associated
                  with an interactor or nil if the interactor has not
                  assigned one.
    
           virtual void Update()
                  Change  the display to reflect some change in state
                  that the interactor depends on.  This operation  is
                  used  in  a  number of contexts.  One example is in
                  managing perspectives.  If  an  interactor  changes
                  its perspective (e.g., the total of size of what it
                  is displaying changes), it must notify its perspec-
                  tive, which in turn calls Update on the interactors
                  that access the perspective (such as a scroller).
    
    
    

    PROTECTED OPERATIONS

           virtual void Redraw(Coord l, Coord b, Coord r, Coord t)
                  The Redraw operation is called when some portion of
                  the  Interactor  needs  to  be  redrawn, presumably
                  the Interviews library or the Draw  operation  will
                  call  their  Redraw  operations automatically.  The
                  default Redraw operation does nothing.
    
           virtual void RedrawList(int n, Coord l[], Coord b[],
                  Coord  r[], Coord t[])
                  RedrawList  notifies  an  interactor  that  several
                  areas  of its canvas need to be redrawn, presumably
                  because it was raised to the top of other canvases.
                  The  default RedrawList operation redraws each area
                  separately with Redraw.
    
           virtual void Resize()
                  Resize notifies an interactor that its  canvas  has
                  been  created  or  modified.  Only scenes are typi-
                  cally concerned with Resize,  as  they  must  place
                  their  component  interactors  within  the  new  or
                  resized canvas.  The default Resize operation  does
                  nothing.
    
    
    

    SEE ALSO

           InterViews  Reference  Manual, Perspective(3I), Scene(3I),
           Sensor(3I), Shape(3I), World(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/IOCallback.html0000644000076500007650000000463607374262640020243 0ustar scottscott00000000000000
    
           IOCallback  - generic callback class for readers, writers,
           or I/O exception handlers
    
    
    

    SYNOPSIS

           #include <Dispatch/iocallback.h>
    
    
    

    DESCRIPTION

           For convenience, the macros defined in iocallback.h  allow
           the  user  to  define an iohandler which does nothing more
           than call an  arbitrary  object's  member  function.   The
           actual  code  to  read  data from a file descriptor, write
           data to a file descriptor, handle an I/O  exception  on  a
           file descriptor, or handle a timer's expiration can reside
           in any arbitrary class rather than in the iohandler.
    
    
    

    MACROS

           declareIOCallback(T)
                  Declare an iocallback type for the given class type
                  T.
    
           implementIOCallback(T)
                  Emit  code  at  this point to implement the iocall-
                  back's member functions.
    
           IOCallback(T)* instance = new IOCallback(T)(...)
                  Define an instance of the iocallback type  for  the
                  given class type T.
    
    
    

    CONSTRUCTORS

           typedef int T::IOReady(T)(int fd)
           typedef void T::IOTimer(T)(long sec, long usec)
    
           IOCallback(T)(T*,  IOReady(T)*  in,  IOReady(T)* out =
                  nil, IORe- ady(T)* ex = nil)
           IOCallback(T)(T*,  IOTimer(T)*, IOReady(T)* in = nil,
                  IOReady(T)* out = nil, IOReady(T)* ex = nil)
                  Construct  an  instance of the iocallback type that
                  will call the given member functions of  the  given
                  class type T's instance.  Note that you do not have
                  to use the IOReady(T) or IOTimer(T) macros; rather,
                  you  only  have  to  pass the address of a T member
                  function, such as &T::inputReady.
    
    
    

    SEE ALSO

           Dispatcher(3I), IOHandler(3I)
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/IOHandler.html0000644000076500007650000000633207374262640020117 0ustar scottscott00000000000000
    
           IOHandler  -  read  input,  write output, or handle an I/O
           exception or timeout
    
    
    

    SYNOPSIS

           #include <Dispatch/iohandler.h>
    
    
    

    DESCRIPTION

           An iohandler reads data from  a  file  descriptor,  writes
           data  to  a file descriptor, handles an I/O exception on a
           file descriptor, or handles a  timer's  expiration.   Once
           the  user has requested the dispatcher to attach an iohan-
           dler to a file descriptor or a timer, the dispatcher  will
           automatically  notify the iohandler when the file descrip-
           tor's I/O condition changes or the timer expires.
    
           For convenience, the user can use a derived generic  class
           (see IOCallback(3I)) to make the iohandler do nothing more
           than call an arbitrary object's member function.
    
    
    

    PUBLIC OPERATIONS

           virtual int inputReady(int fd)
           virtual int outputReady(int fd)
           virtual int exceptionRaised(int fd)
                  The dispatcher will call one of these functions  to
                  notify  an  iohandler  that it can read data from a
                  file descriptor, write data to a  file  descriptor,
                  or  handle  an  I/O exception on a file descriptor.
                  The iohandler should perform the appropriate action
                  and  tell  the dispatcher what to do next.  A nega-
                  tive return value means that the iohandler  encoun-
                  tered  an error or it doesn't want to read or write
                  anything more.   The  dispatcher  will  unlink  the
                  iohandler  from  its file descriptor automatically.
                  A positive return value means  that  the  iohandler
                  didn't read or write everything that it could have.
                  The dispatcher will call  the  iohandler  again  in
                  round  robin fashion WITHOUT checking select, which
                  means that the iohandler will be  called  again  as
                  soon  as  the rest of the iohandlers have performed
                  their actions.  A zero return value means that  the
                  iohandler finished reading or writing everything it
                  was  able  to.   The  dispatcher  must  check   the
                  descriptor's  status with the select call before it
                  can call the iohandler again.
    
           virtual void timerExpired(long sec, long usec)
                  The dispatcher will call this function to notify an
                  iohandler  that  a timer has expired.  For informa-
                  tional purposes, the parameters  give  the  current
                  time  in  seconds  and  microseconds since midnight
                  January 1, 1970.  If the iohandler wants  to  reset
                  the  timer,  it  must  tell the dispatcher to start
    
           Dispatcher(3I), IOCallback(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/iostreamb.html0000644000076500007650000000221107374262640020267 0ustar scottscott00000000000000
    
           istreamb, ostreamb, iostreamb - unformatted streams
    
    
    

    SYNOPSIS

           #include <Dispatch/iostreamb.h>
    
    
    

    DESCRIPTION

           istreamb,  ostreamb,  and  iostreamb are streams just like
           istream, ostream, and iostream except  for  two  features.
           First,  they  automatically  insert and extract delimiters
           around datums where necessary so you never have  to  sepa-
           rate  datums  by  whitespace  yourself.   Second, they can
           insert and extract integers as either unformatted (binary)
           bytes  or  formatted  characters  so you can eliminate the
           time needed to convert integers to strings and back.  Both
           of  these  features  make these classes easier to use than
           the base stream classes  for  inter-process  communication
           (IPC).
    
    
    

    SEE ALSO

           IOS.INTRO(3C++)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Iterator.html0000644000076500007650000000253307374262640020102 0ustar scottscott00000000000000
    
           Iterator - marks a position in a data structure
    
    
    

    SYNOPSIS

           #include <Unidraw/iterator.h>
    
    
    

    DESCRIPTION

           An  iterator  marks a position in a data structure, gener-
           ally during a traversal of some  sort.   For  example,  an
           iterator  keeps track of the current position when iterat-
           ing through a list of elements.  Unidraw's Iterator  class
           serves  this purpose in conjunction with ULists or objects
           that use them.
    
    
    

    PUBLIC OPERATIONS

           Iterator()
           Iterator(Iterator&)
                  Construct a new iterator.  The  second  constructor
                  initializes  the  iterator's  value  to that of the
                  given iterator.
    
           virtual void SetValue(void*)
           virtual void* GetValue()
                  Classes that use an iterator  must  store  position
                  information  in  it.   These operations set and get
                  the this information.
    
    
    

    SEE ALSO

           UList(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/KeyMap.html0000644000076500007650000000412507374262640017476 0ustar scottscott00000000000000
    
           KeyMap  -  activates controls given their keyboard equiva-
           lents
    
    
    

    SYNOPSIS

           #include <Unidraw/keymap.h>
    
    
    

    DESCRIPTION

           KeyMap supports keyboard equivalents, which allow the user
           of  a  Unidraw  application  to  execute  menu commands or
           select from a palette of controls by  typing  rather  than
           pointing and clicking with the mouse. The KeyMap can acti-
           vate a control given its key code as defined by  its  Con-
           trolInfo  object.  Only those controls registered with the
           KeyMap can be activated through the KeyMap.   By  default,
           the  Editor  base  class  handles key events by having its
           KeyMap execute the key code.
    
    
    

    PUBLIC OPERATIONS

           KeyMap()
                  Construct a new keymap, initially  with  no  regis-
                  trants.
    
           void Register(UControl*)
           void Register(KeyMap*)
           void Unregister(UControl*)
           void Unregister(KeyMap*)
                  Register   and  unregister  a  control  or  another
                  KeyMap.  Registering a KeyMap is equivalent to reg-
                  istering  all its registered controls individually.
    
           void Execute(const char* keyCode)
                  Execute the given key code by activating the corre-
                  sponding  control.   Each  UControl contains a Con-
                  trolInfo object that specifies its key  code;  thus
                  the  mapping  between  key  codes  and  controls is
                  defined by the  ControlInfo  objects  collectively.
                  Key  codes  among  registered  controls  should  be
                  unique.
    
    
    

    SEE ALSO

           ControlInfo(3U), KeyMap(3U), UControl(3U), kybd(3U)
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/kybd.html0000644000076500007650000000202207374262640017233 0ustar scottscott00000000000000
    
           kybd - predefined keyboard equivalents
    
    
    

    SYNOPSIS

           #include <Unidraw/kybd.h>
    
    
    

    DESCRIPTION

           The  hybd  header  file provides external declarations for
           predefined keyboard equivalents corresponding to the  pre-
           defined  components,  commands,  and  tools in the Unidraw
           library.  These declarations take the form
    
           #extern const char* KLBL_name, *CODE_name
    
           where KLBL denotes the  printable  representation  of  the
           keyboard  equivalent,  and  CODE  denotes the code against
           which the key event is matched to find  the  corresponding
           control.
    
    
    

    SEE ALSO

           ControlInfo(3U), KeyMap(3U), UControl(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/LineComp.html0000644000076500007650000001406507374262640020022 0ustar scottscott00000000000000
    
           LineComp,  LineView, PSLine, MultiLineComp, MultiLineView,
           PSMultiLine - line and multiline component subject,  view,
           and PostScript external representation
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/line.h>
    
    
    

    DESCRIPTION

           LineComp is a GraphicComp that defines a line.  It uses an
           Line graphic to store its graphical attributes.   LineView
           is  a  GraphicView  for  displaying the line.  PSLine is a
           PostScriptView that externalizes the subject's information
           in  PostScript  form.  The MultiLine counterparts of these
           classes define the component and  external  representation
           for a contiguous set of line segments, i.e., an open poly-
           gon.  MultiLineComp is derived from  VerticesComp,  Multi-
           LineView  is  a  VerticesView, and PSMultiLine is a PSVer-
           tices.
    
    
    

    LINECOMP PUBLIC OPERATIONS

           LineComp(Line* = nil)
                  The constructor takes an optional line graphic that
                  defines the attributes of the line.
    
           virtual void Interpret(Command*)
                  LineComp redefines Interpret to ignore PatternCmds.
    
           Line* GetLine()
                  Return the Line graphic  that  defines  the  line's
                  attributes.  GetLine is simply a more specific form
                  of the GetGraphic operation.
    
    
    

    LINEVIEW PUBLIC OPERATIONS

           LineView(LineComp* = nil)
                  Create an LineView, optionally supplying  the  sub-
                  ject.
    
           virtual void Interpret(Command*)
                  LineView  interprets  AlignToGridCmd  to  align its
                  first endpoint to the grid.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  LineView redefines  its  response  to  manipulation
                  with a GraphicCompTool.  The user clicks to specify
                  the first endpoint of the line and  then  drags  to
                  position remaining endpoint.  The endpoints will be
                  constrained by  gravity,  if  any.   LineView  also
                  defines a response to the ReshapeTool, allowing the
                  ReplaceCmd) with a new LineComp subject  reflecting
                  the  repositioned  endpoint.  Repositioning will be
                  influenced by gravity.
    
           virtual void GetEndpoints(Coord&, Coord&, Coord&, Coord&)
                  Return the line's endpoints, in canvas coordinates.
    
           LineComp* GetLineComp()
                  Return the subject.
    
    
    

    LINEVIEW PROTECTED OPERATIONS

           virtual void CreateHandles()
                  LineView  redefines  CreateHandles to use a Rubber-
                  Handles object with two handles, one at  each  end-
                  point of the line.
    
    
    

    PSLINE PUBLIC OPERATIONS

           PSLine(LineComp* = nil)
                  Construct  a  PostScript external representation of
                  the given subject, if any.
    
    
    

    MULTILINECOMP PUBLIC OPERATIONS

           MultiLineComp(SF_MultiLine* = nil)
                  The constructor takes  an  optional  stroked-filled
                  multiline  graphic  that  defines the attributes of
                  the multiline.
    
           SF_MultiLine* GetMultiLine()
                  Return the MultiLine graphic that defines the  mul-
                  tiline's attributes.  GetMultiLine is simply a more
                  specific form of the GetGraphic operation.
    
    
    

    MULTILINEVIEW PUBLIC OPERATIONS

           MultiLineView(MultiLineComp* = nil)
                  Create an MultiLineView, optionally  supplying  the
                  subject.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  MultiLineView  redefines  its response to manipula-
                  tion with a GraphicCompTool.  The user  clicks  the
                  left mouse button to specify each vertex and clicks
                  with the middle mouse button to specify  the  final
                  vertex.   Vertex positioning will be constrained by
                  gravity, if  any.   MultiLineView  also  defines  a
                  response  to  the ReshapeTool, allowing the user to
                  click on one of its vertices to reposition it.  The
                  subject  is actually replaced (via ReplaceCmd) with
                  a new MultiLineComp subject reflecting the  reposi-
    
           MultiLineComp* GetMultiLineComp()
                  Return the subject.
    
    
    

    PSMULTILINE PUBLIC OPERATIONS

           PSMultiLine(MultiLineComp* = nil)
                  Construct a PostScript external  representation  of
                  the given subject, if any.
    
    
    

    PSMULTILINE PROTECTED OPERATIONS

           virtual const char* Name()
                  PSMultiLine  identifies  itself  as  "MLine" in the
                  PostScript output.
    
    
    

    SEE ALSO

           Event(3I),  GraphicComp(3U),  GraphicCompTool(3U),  Graph-
           icView(3U),  Grid(3U), PatternCmd(3U), PostScriptView(3U),
           ReshapeTool(3U),   Rubband(3I),   Transformer(3I),    Ver-
           ticesComp(3U), Viewer(3U), align(3U), edit(3U), lines(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/lines.html0000644000076500007650000000613407374262640017424 0ustar scottscott00000000000000
    
           Point, Line, MultiLine, S_MultiLine, SF_MultiLine - struc-
           tured graphics classes for points, lines, and  open  poly-
           gons
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/lines.h>
    
    
    

    DESCRIPTION

           Point and Line are subclasses of Graphic that draw a point
           and a line, respectively.  MultiLine is  a  Vertices  sub-
           class that serves as an abstract base class for open poly-
           gons: S_MultiLine is a MultiLine subclass for stroked open
           polygons,  while  SF_MultiLine  is  a  stroked-filled open
           polygon.  Point, Line, and S_MultiLine  store  a  PSBrush,
           while SF_MultiLine also stores a PSPattern.
    
    
    

    POINT PUBLIC OPERATIONS

           Point(Coord x, Cord y, Graphic* = nil)
                  Construct  a  Point  object, optionally supplying a
                  graphic from which to  obtain  an  initial  set  of
                  graphics state.
    
           void GetOriginal(Coord&, Coord&)
                  Return the coordinates supplied in the constructor.
    
    
    

    LINE PUBLIC OPERATIONS

           Line(Coord x0, Cord y0, Coord x1, Coord y1, Graphic* =
                  nil)
                  Construct  a  Line  object,  optionally supplying a
                  graphic from which to  obtain  an  initial  set  of
                  graphics state.
    
           void GetOriginal(Coord& x0, Coord& y0, Coord& x1, Coord&
                  y1)
                  Return the line's endpoints as supplied in the con-
                  structor.
    
    
    

    MULTILINE PROTECTED OPERATIONS

           MultiLine(Coord* x, Coord* y, int count, Graphic* = nil)
                  MultiLine's  constructor  is  protected  to prevent
                  instantiation of  the  abstract  base  class.   The
                  parameters are passed directly to the Vertices con-
                  structor.
    
    
    

    S_MULTILINE PUBLIC OPERATIONS

           S_MultiLine(Coord* x, Coord* y, int count, Graphic* = nil)
                  Construct an S_MultiLine object, optionally supply-
                  ing a graphic from which to obtain an  initial  set
                  of graphics state.
    
    
    

    SF_MULTILINE PUBLIC OPERATIONS

           SF_MultiLine(Coord* x, Coord* y, int count, Graphic* =
                  plying  a  graphic  from which to obtain an initial
                  set of graphics state.
    
    
    

    SEE ALSO

           Graphic(3U), Vertices(3U), pspaint(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/LinkComp.html0000644000076500007650000001574307374262640020034 0ustar scottscott00000000000000
    
           LinkComp,  LinkView, PSLink - component subject, view, and
           PostScript external representation  for  lines  with  con-
           nectable endpoints
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/link.h>
    
    
    

    DESCRIPTION

           LinkComp is a GraphicComp defining a line with two pins on
           each end.  The line's endpoints will always coincide  with
           the  pins,  even  if they are moved, thereby maintaining a
           graphical link between the objects to  which  it  is  con-
           nected.   LinkComp uses an Line graphic to define its ini-
           tial geometry and graphical  attributes.   LinkView  is  a
           GraphicView   for   displaying  the  link.   PSLink  is  a
           PostScriptView that externalizes the subject's information
           in PostScript form.
    
    
    

    LINKCOMP PUBLIC OPERATIONS

           LinkComp(Line* = nil)
                  The  constructor  takes an optional line graphic to
                  define its initial appearance.
    
           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  In addition to (un)interpreting the commands Graph-
                  icComp (un)interprets, LinkComp also (un)interprets
                  DeleteCmd and CutCmd by passing these  commands  to
                  its pins for (un)interpretation.
    
           virtual void Update()
                  When  the  LinkComp's pins move to maintain connec-
                  tivity, LinkComp will reorient the line so that its
                  endpoints and the pins coincide.
    
           virtual void First(Iterator&)
           virtual void Last(Iterator&)
           virtual void Next(Iterator&)
           virtual void Prev(Iterator&)
           virtual boolean Done(Iterator)
           GraphicComp* GetComp(Iterator)
           void SetComp(GraphicComp*, Iterator&)
                  LinkComp  redefines  GraphicComp's traversal opera-
                  tions to make its pins accessible  to  the  Unidraw
                  library.  Thus Unidraw can determine the connectors
                  that belong to the component and  call  its  Update
                  operation  only once for efficiency.  The traversal
                  does not include the line.
    
           Line* GetLine()
                  Return the Line graphic  that  defines  the  link's
                  attributes.  GetLine is simply a more specific form
                  Return the LinkView's pins, which are stored in the
                  _conn1 and _conn2 protected members.
    
    
    

    LINKVIEW PUBLIC OPERATIONS

           LinkView(LinkComp* = nil)
                  Create  an  LinkView, optionally supplying the sub-
                  ject.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  LinkView redefines  its  response  to  manipulation
                  with a GraphicCompTool.  The user clicks to specify
                  the first endpoint of the link and  then  drags  to
                  position  the  remaining endpoint.  (Up)clicking on
                  an existing connector will establish  a  connection
                  between  it  and the LinkComp's first (second) pin.
                  LinkView uses a ConnectManip to produce a  gravita-
                  tional  attraction  between existing connectors and
                  the second pin as the user drags  to  position  it.
                  The  endpoints  will not be constrained by gravity.
                  LinkView will use ConnectCmds to connect the pin(s)
                  to  their  target(s).  Pin(s) connected in this way
                  will receive floating mobility; unconnected  pin(s)
                  will be fixed.
    
           virtual void First(Iterator&)
           virtual void Last(Iterator&)
           virtual void Next(Iterator&)
           virtual void Prev(Iterator&)
           virtual boolean Done(Iterator)
           GraphicView* GetView(Iterator)
           void SetView(GraphicView*, Iterator&)
                  LinkView  redefines  GraphicView's traversal opera-
                  tions to make its pins accessible  to  the  Unidraw
                  library.  Thus Unidraw can determine the connectors
                  that belong to the component, for example, to  sup-
                  port    ConnectManip's   gravitational   attraction
                  effect.
    
           virtual void GetEndpoints(Coord&, Coord&, Coord&, Coord&)
                  Return the link's endpoints, in canvas coordinates.
    
           LinkComp* GetLinkComp()
                  Return the subject.
    
    
    

    LINKVIEW PROTECTED OPERATIONS

           virtual void CreateHandles()
                  LinkView  redefines  CreateHandles to use a Rubber-
                  Handles object with two handles, one at  each  end-
                  Return  the  line  that  LinkView draws between its
                  pins.
    
           virtual LinkComp* NewSubject(Line*)
                  A helper function that creates a  LinkComp  subject
                  with the given line graphic. This function produces
                  the  proper  subject  when  the   GraphicCompTool's
                  manipulator  is  interpreted.  Subclasses can rede-
                  fine this operation to return a LinkComp  subclass,
                  thus eliminating the need to reimplement Interpret-
                  Manipulator.
    
           Manipulator* CreateLinkCompManip(
               Viewer*, Event&, Transformer*, Tool*
           )
    
           Command* InterpretLinkCompManip(Manipulator*)
                  Helper functions that CreateManipulator and  Inter-
                  pretManipulator  use  to  create  and interpret the
                  manipulator for GraphicCompTool.
    
    
    

    PSLINK PUBLIC OPERATIONS

           PSLink(LinkComp* = nil)
                  Construct a PostScript external  representation  of
                  the given subject, if any.
    
    
    

    SEE ALSO

           Event(3I),   Graphic(3U),   GraphicComp(3U),  GraphicComp-
           Tool(3U),    GraphicView(3U),    Grid(3U),    PinComp(3U),
           PostScriptView(3U),  Transformer(3I), align(3U), edit(3U),
           manips(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/MacroCmd.html0000644000076500007650000000727307374262640020004 0ustar scottscott00000000000000
    
           MacroCmd - a command that composes other commands
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/macro.h>
    
    
    

    DESCRIPTION

           MacroCmd  composes  other  commands  in  a linear fashion.
           Executing a MacroCmd is equivalent to executing its  chil-
           dren in preorder.
    
    
    

    PUBLIC OPERATIONS

           MacroCmd(ControlInfo*)
           MacroCmd(
               Editor* = nil,
               Command* first = nil, Command* second = nil,
               Command* third = nil, Command* fourth = nil
           )
                  Construct a MacroCmd instance, optionally supplying
                  up to four of its child commands.
    
           virtual void Execute()
           virtual void Unexecute()
           virtual boolean Reversible()
                  Execute simply executes each child, from  first  to
                  last.   Unexecute  calls  Unexecute  on each child,
                  from last to first.  The MacroCmd is reversible  if
                  any of its children are.
    
           virtual void SetEditor(Editor*)
                  SetEditor  calls  SetEditor  on each child with the
                  given argument.
    
           Command* GetCommand(Iterator)
           void SetCommand(Command*, Iterator&)
                  GetCommand returns the child Command  to  which  an
                  iterator points.  SetCommand initializes the itera-
                  tor to point to a particular child Command; it ini-
                  tializes the iterator to point to a nil instance if
                  the given Command is not a child.
    
           void Append(
               Command*, Command* = nil, Command* = nil, Command* =
                  nil
           )
    
           void Prepend(
               Command*, Command* = nil, Command* = nil, Command* =
                  nil
           )
    
           void InsertAfter(Iterator, Command*)
           void InsertBefore(Iterator, Command*)
           void Remove(Iterator&)
                  Operations that modify the MacroCmd's list of chil-
                  dren. Append and Prepend add up to four Commands to
                  the end and the  beginning  of  the  list,  respec-
                  tively.  InsertAfter and InsertBefore insert a Com-
                  mand after and before the Command pointed to by the
                  iterator,   respectively.   The  Remove  operations
                  remove a child from the list without  deleting  it.
                  You  can  remove a child by referring to it explic-
                  itly or by specifying an iterator.  If an  iterator
                  is supplied, the Remove operation should advance it
                  to point to the following child as a side effect.
    
    
    

    PROTECTED OPERATIONS

           Command* Cmd(UList*)
           UList* Elem(Iterator)
                  Convenience functions for extracting a Command from
                  a  UList  element a UList from an iterator, respec-
                  tively.
    
    
    

    SEE ALSO

           Command(3U), Iterator(3U), UList(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/MagnifyTool.html0000644000076500007650000000312007374262640020532 0ustar scottscott00000000000000
    
           MagnifyTool  - tool for magnifying a portion of the Graph-
           icView displayed in a viewer
    
    
    

    SYNOPSIS

           #include <Unidraw/Tools/magnify.h>
    
    
    

    DESCRIPTION

           MagnifyTool lets the user magnify  a  portion  a  viewer's
           contents.  The user sweeps out a rectangular area with the
           MagnifyTool, and the  viewer  will  magnify  the  area  to
           occupy the entire screen, if possible.
    
    
    

    PUBLIC OPERATIONS

           MagnifyTool(ControlInfo* = nil)
                  Instantiate a MagnifyTool.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  CreateManipulator generates a DragManip with a Rub-
                  berRect to provide visual feedback  for  specifying
                  the rectangular area to be magnified.  InterpretMa-
                  nipulator does not create  a  command;  rather,  it
                  examines the DragManipulator's RubberRect and calls
                  Magnify on the viewer with the  RubberRect's  final
                  coordinates.
    
    
    

    SEE ALSO

           Rubband(3I), Tool(3U), Viewer(3U), manips(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/manips.html0000644000076500007650000005144007374262640017601 0ustar scottscott00000000000000
    
           ConnectManip,  DragManip, ManipGroup, TextManip, VertexMa-
           nip - Manipulator subclasses for defining  common  direct-
           manipulation semantics
    
    
    

    SYNOPSIS

           #include <Unidraw/manips.h>
    
    
    

    DESCRIPTION

           Manipulator  is  an  abstract  base class for objects that
           encapsulate the mechanics of  direct  manipulation.   Sub-
           classes  support  different  manipulation  semantics.  The
           DragManip  subclass  implements  a  downclick-drag-upclick
           style  of interaction, with optional constraints on motion
           (for example, horizontal or vertical only).   ConnectManip
           is  a  DragManip  subclass  that adds a gravitational bias
           towards connector views.  VertexManip is a DragManip  that
           supports  multiple  downclick-and-drag interactions termi-
           nated by a distinguished downclick.  TextManip provides  a
           text  editing  interface.   Finally,  ManipGroup  composes
           manipulator instances so that their interaction  may  pro-
           ceed concurrently.
    
    
    

    DRAGMANIP PUBLIC OPERATIONS

           DragManip(
               Viewer*, Rubberband*, Transformer* = nil, Tool* = nil,
               DragConstraint = None
           )
    
           DragManip(
               Viewer*, Rubberband*, Transformer*, Tool*,
               DragConstraint, Coord, Coord
           )
                  A DragManip uses a rubberband to animate the manip-
                  ulation.  The constructor takes the rubberband as a
                  parameter along with the viewer in which it  should
                  appear, a transformer reflecting the transformation
                  that component views undergo  in  the  viewer,  the
                  tool  that  created the manipulator, and a DragCon-
                  straint that effectively restricts mouse motion  in
                  one  or  more  ways.   By  default,  motion is con-
                  strained when the Shift key is held down.  The sec-
                  ond  constructor  adds  two  Coord parameters.  The
                  DragManip will use these  values  to  override  the
                  event coordinates when Grasp is first called.
    
           virtual void Grasp(Event&)
                  DragManip  redefines  Grasp  operation  to call the
                  rubberband's Track operation, supplying the coordi-
                  nates   in   the   event.   Grasp  calls  Constrain
                  (described below) on the event prior to passing the
                  coordinate information.  The rubberband will not be
                  drawn until Grasp is called.
                  If the event is a MotionEvent,  Manipulating  calls
                  Track  with  the  event's  coordinates  and returns
                  true.  Manipulating simply  returns  false  if  the
                  event  is  an UpEvent.  Like DragManip::Grasp, this
                  operation calls Constrain on  the  event  prior  to
                  passing the coordinate information.
    
           virtual void Effect(Event&)
                  Effect  simply erases the rubberband by calling its
                  Erase operation.
    
           virtual void SetViewer(Viewer*)
           virtual void SetRubberband(Rubberband*)
           virtual void SetTransformer(Transformer*)
           virtual void SetTool(Tool*)
           virtual void SetConstraint(DragConstraint)
    
           virtual Viewer* GetViewer()
           virtual Rubberband* GetRubberband()
           virtual Transformer* GetTransformer()
           virtual Tool* GetTool()
           virtual DragConstraint GetConstraint()
                  Set and get the various parameters supplied to  the
                  DragManip in its constructor.
    
           const Event& GraspEvent()
                  Return  the  event  supplied  to  the  last call to
                  Grasp.
    
    
    

    DRAGMANIP PROTECTED OPERATIONS

           void Init(
               Viewer*, Rubberband*, Transformer*, Tool*, DragCon-
                  straint
           )
                  Assign  the  various  constructor  values common to
                  both DragManip constructors.
    
           virtual void Constrain(Event&)
                  Constrain the event to reflect the  DragConstraint.
                  The  event  coordinates  are  constrained  when the
                  event indicates that the shift key is held down for
                  all  DragConstraint  values  except  Gravity, which
                  constrains the coordinates unconditionally with the
                  viewer's Constrain operation.
    
    
    

    CONNECTMANIP PUBLIC OPERATIONS

           ConnectManip(
               Viewer*, Rubberband*, Transformer* = nil, Tool* = nil
           )
                  ConnectManip  supports the same type of interaction
                  as DragManip, except  the  rubberband  tracking  is
                  affected  by  a graviational bias towards connector
                  strained to coincide with the center of the connec-
                  tor  view.   The  rubberband  will  not  change its
                  appearance thereafter until the user  drags  beyond
                  the  gravity  threshold,  which corresponds to SLOP
                  (see globals(3U)) units beyond the nearest point on
                  the connector view.
    
           virtual boolean Manipulating(Event&)
                  ConnectManip  redefines Manipulating to support the
                  gravitational effect.
    
           ConnectorView* GetTarget()
                  Return the connector view  that  has  captured  the
                  rubberband, if any.
    
    
    

    VERTEXMANIP PUBLIC OPERATIONS

           VertexManip(
               Viewer*, GrowingVertices*, Transformer* = nil,
               Tool* = nil, DragConstraint = None
           )
                  VertexManip is like DragManip but supports multiple
                  drags and clicks in one manipulation.  The  Vertex-
                  Manip constructor restricts the rubberband to be an
                  instance of GrowingVertices.
    
           virtual boolean Manipulating(Event&)
                  This operation is similar to DragManip's, except it
                  calls  AppendVertex  on the GrowingVertices rubber-
                  band on each down-click and returns  false  if  and
                  only if the middle button is pressed.
    
           GrowingVertices* GetGrowingVertices()
                  Return  the  GrowingVertices  instance.   Use  this
                  operation as an alternative to  GetRubberband  when
                  that operation isn't specific enough.
    
    
    

    TEXTMANIP PUBLIC OPERATIONS

           TextManip(Viewer*, Painter*, Coord tabwidth, Tool* = nil)
           TextManip(
               Viewer*, Painter*, Coord lineheight, Coord tabwidth,
               Tool* = nil
           )
                  Create   a  TextManip,  supplying  (at  minimum)  a
                  viewer, a  painter  with  which  to  draw  (usually
                  reflecting   graphics  attributes  defined  by  the
                  enclosing editor object), and the width  of  a  tab
                  character.   Tab  characters in the text will posi-
                  tion the following character at an integral  multi-
                  ple  of  tabwidth  from  the beginning of the line.
                  The distance between baselines in the text  can  be
                  specified  with  the second constructor; this value
                  corresponds to the font height by  default.   These
                  line  of  text  (including  the  descender) will be
                  positioned at the coordinates in the  event  passed
                  to the Grasp operation.
    
           TextManip(
               Viewer*, const char* buf, int bufsize, Coord x, Coord
                  y,
               Painter*, Coord tabwidth, Tool* = nil
           )
    
           TextManip(
               Viewer*, const char* buf, int bufsize, Coord x, Coord
                  y,
               Painter*, Coord lineheight, Coord tabwidth, Tool* =
                  nil
           )
                  Create text manipulators initialized with  text  by
                  passing  a  buffer of text and its size.  A copy of
                  the buffer is used internally.  The x and y parame-
                  ters  specify the position of the lower left corner
                  of the first line of text  (including  the  descen-
                  der).   These coordinates will override the coordi-
                  nates specified by the event passed to Grasp.
    
           virtual void Grasp(Event&)
                  Positions and draws the  text.   If  the  position-
                  specifing  constructors  were  used  to  create the
                  instance, then the manipulator will use  the  event
                  coordinates  to  set the insertion point's position
                  in the text.
    
           virtual boolean Manipulating(Event&)
                  Handle keystrokes and/or  mouse  motion  events  to
                  support  basic  text  editing.   Motion  events are
                  interpreted to  support  text  selection;  selected
                  text  is  displayed in reverse colors.  The Manipu-
                  lating operation returns false if  a  downclick  is
                  detected   outside   the   text   or  if  HandleKey
                  (described below) returns false.
    
           virtual void Effect(Event&)
                  Effect damages the viewer area that TextManip  cor-
                  rupted during editing.
    
           virtual Painter* GetPainter()
           virtual Coord GetLineHeight()
           virtual Coord GetTabWidth()
           virtual const char* GetText(int&)
           virtual void GetPosition(Coord&, Coord&)
                  Return  various  parameters  specified  in the con-
                  structor.  GetText returns a pointer to the  inter-
                  nal  buffer  containing  the  text;  the  reference
                  Return the event  supplied  to  the  last  call  to
                  Grasp.
    
    
    

    TEXTMANIP PROTECTED OPERATIONS

           virtual boolean HandleKey(Event&)
                  This  operation  defines  TextManip's  default  key
                  bindings  as  described  below.   Unless  otherwise
                  noted below, this function returns true.
    
                  (^P) backward line
    
                  (^N) forward line
    
                  (^B) backward character
    
                  (^F) forward character
    
                  (ESC)  terminate  text  entry, causing HandleKey to
                  return false
    
                  (^A) beginning of line
    
                  (^E) end of line
    
                  (^D) delete character
    
                  (DEL) (^H) delete backward character
    
           int Dot()
           int Mark()
                  The current selection is  bounded  by  two  indices
                  into  the text buffer.  By convention these indices
                  are called dot and mark.  Dot is  the  position  at
                  which  text  will  be  inserted  and deleted.  Mark
                  locates the end of the selection that moves as  the
                  selection is modified.  When the selection is empty
                  (an insertion point), dot and mark are equal.
    
           void InsertText(const char* string, int count)
           void InsertCharacter(char)
           void DeleteText(int count)
           void DeleteCharacter(int)
           void DeleteLine()
           void DeleteSelection()
                  Edit the text  buffer  at  the  current  selection.
                  InsertText  inserts  count  characters  from string
                  after dot.   The  selection  becomes  an  insertion
                  point    following   the   newly   inserted   text.
                  InsertCharacter replaces  the  selected  characters
                  with  a  single character. DeleteText deletes count
                  characters at dot.  If count is positive, the char-
                  acters following dot are deleted; if count is nega-
                  of the deleted text.  DeleteSelection  deletes  the
                  text  between  dot and mark, changing the selection
                  to an insertion point.  DeleteCharacter is  identi-
                  cal  to  DeleteText if the dot and mark are not the
                  same; otherwise it is identical to DeleteSelection.
                  DeleteCharacter   provides   a  convenient  way  to
                  express the behavior of the  backspace  and  delete
                  operations.   Finally,  DeleteLine deletes the line
                  of text containing mark.  The selection becomes  an
                  insertion point at mark.
    
           void BackwardCharacter(int count)
           void ForwardCharacter(int count)
           void BackwardLine(int count)
           void ForwardLine(int count)
           void BackwardWord(int count)
           void ForwardWord(int count)
                  Move  the  current selection forward or backward by
                  the specified number of the specified  units.   The
                  default movement is one unit.  The selection is not
                  moved before the beginning of after the end of  the
                  text.
    
           void BeginningOfLine()
           void EndOfLine()
           void BeginningOfWord()
           void EndOfWord()
           void BeginningOfSelection()
           void EndOfSelection()
           void BeginningOfText()
           void EndOfText()
                  Move the current selection forwards or backwards to
                  the specified feature of the text.
    
           void Select(int dot)
           void Select(int dot, int mark)
           void SelectMore(int mark)
           void SelectAll()
                  Modify the  current  selection  in  terms  of  text
                  indices.   With  a  single  parameter, Select moves
                  both dot and mark to the specified index.  With two
                  parameters, dot and mark can be controlled indepen-
                  dently.  SelectMore leaves dot unchanged and  moves
                  mark.   SelectAll  sets  dot to the end of the text
                  and mark to the beginning.
    
           int Locate(Coord x, Coord y)
           boolean Contains(Coord, Coord)
                  Locate returns the text index most closely matching
                  the  point  (x,  y).   Contains returns whether the
                  text contains the point (x, y).
    
           ManipGroup(Viewer* = nil, Tool* = nil)
                  Create a ManipGroup, optionally supplying a  viewer
                  and a tool.
    
           virtual void Grasp(Event&)
                  The  Grasp  operation  simply  calls  Grasp on each
                  child in insertion order.
    
           virtual boolean Manipulating(Event&)
                  Manipulating calls the corresponding  operation  on
                  each  child,  skipping  those  children  that  have
                  returned false in previous calls (up  to  the  last
                  Grasp).  This function returns false when all chil-
                  dren have done so.
    
           virtual void Effect(Event&)
                  ManipGroup's Effect operation calls Effect on  each
                  child.
    
           virtual void SetViewer(Viewer*)
           virtual void SetTool(Tool*)
           virtual Viewer* GetViewer()
           virtual Tool* GetTool()
                  Set  and get the ManipGroup's viewer and tool.  The
                  set operations  set  the  ManipGroup's  values  for
                  these  parameters and call the corresponding opera-
                  tions on their children.  The get operations simply
                  return the ManipGroup's values.
    
           virtual void First(Iterator&)
           virtual void Last(Iterator&)
           virtual void Next(Iterator&)
           virtual void Prev(Iterator&)
           virtual boolean Done(Iterator)
                  Operations  for  iterating  over  the  ManipGroup's
                  children, if any.  First  and  Last  initialize  an
                  iterator  to  point to the beginning and end of the
                  list of children,  respectively.   Next  increments
                  the iterator to point to the following child, while
                  Prev decrements the iterator to point to  the  pre-
                  ceding  child.   Done  returns  whether  or not the
                  iterator points beyond the first or last  child  in
                  the list.
    
           Manipulator* GetManip(Iterator)
           void SetManip(Manipulator*, Iterator&)
                  GetManip  returns the child manipulator to which an
                  iterator points.  SetManip initializes an  iterator
                  to  point to a particular child; it initializes the
                  iterator to point to a nil instance  if  the  given
                  Manipulator is not a child of the ManipGroup.
    
               Manipulator*,
               Manipulator* = nil, Manipulator* = nil, Manipulator* =
                  nil
           )
    
           void Prepend(
               Manipulator*,
               Manipulator* = nil, Manipulator* = nil, Manipulator* =
                  nil
           )
    
           void InsertBefore(Iterator, Manipulator*)
           void InsertAfter(Iterator, Manipulator*)
           void Remove(Manipulator*)
           void Remove(Iterator&)
                  Operations  for  modifying the ManipGroup's list of
                  children.  Append and Prepend add up to four  child
                  manipulators,  in  order, to the end and the begin-
                  ning of the list,  respectively.   InsertAfter  and
                  InsertBefore  insert  a  child after and before the
                  manipulator pointed to  by  the  iterator,  respec-
                  tively.   The Remove operations remove a child from
                  the list (without deleting it).  You can  remove  a
                  child  by referring to it explicitly or by specify-
                  ing an iterator.  If an iterator is  supplied,  the
                  Remove  operation  will  advance it to point to the
                  following child as a side effect.
    
    
    

    MANIPGROUP PROTECTED OPERATIONS

           UList* Elem(Iterator)
           Manipulator* Manip(UList*)
                  ManipGroup stores its children on a UList, which is
                  accessible  via  the  _kids  protected member.  The
                  Selection's iteration operations  store  the  UList
                  containing  the  current  child  in their iterator.
                  Elem is a convenience function  for  returning  the
                  UList  to  which  an  iterator  points,  and  Manip
                  extracts the child that a UList element contains.
    
    
    

    SEE ALSO

           Connector(3U), Event(3I),  Iterator(3U),  Manipulator(3U),
           Painter(3I),   Rubband(3I),   Tool(3U),   Transformer(3I),
           UList(3U), Viewer(3U), globals(3U)
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Manipulator.html0000644000076500007650000000620507374262640020604 0ustar scottscott00000000000000
    
           Manipulator  - base class for defining direct-manipulation
           semantics
    
    
    

    SYNOPSIS

           #include <Unidraw/manip.h>
    
    
    

    DESCRIPTION

           Tools use manipulator objects to encapsulate the mechanics
           of  direct  manipulation.   Manipulators  turn  user input
           events into an animation sequence  that  characterize  the
           manipulation.  Manipulators abstract the manipulation into
           three phases: the grasping  phase,  which  occurs  at  the
           start  of  the  manipulation and lets the manipulator ini-
           tialize state it will need in later phases; the manipulat-
           ing  phase,  during  which  the  manipulator accepts input
           events and generates graphical output  that  characterizes
           successive frames of the animation; and finally the effect
           phase, which occurs at the end  of  the  manipulation  and
           lets  the  manipulator finalize its state.  Manipulator is
           an abstract  base  class.   Subclasses  support  different
           manipulation semantics.
    
    
    

    MANIPULATOR PUBLIC OPERATIONS

           virtual void Grasp(Event&)
                  Grasp  is  called  once  at the beginning of direct
                  manipulation to allow the manipulator to initialize
                  its internal state based on the initiating event.
    
           virtual boolean Manipulating(Event&)
                  Manipulating is called repeatedly during the manip-
                  ulation whenever a  new  event  arrives,  until  it
                  returns  false.   Each  call to Manipulating should
                  produce a new frame of the animation  that  charac-
                  terizes the manipulation.
    
           virtual void Effect(Event&)
                  Effect  is called once at the end of direct manipu-
                  lation to allow the  manipulator  to  finalize  its
                  internal  state based on the last event supplied to
                  the Manipulating operation.
    
           virtual void SetViewer(Viewer*)
           virtual Viewer* GetViewer()
           virtual void SetTool(Tool*)
           virtual Tool* GetTool()
                  Get and set the viewer, in  which  the  manipulator
                  generates  graphical output, and the tool that cre-
                  ated the manipulator.  These operations do  nothing
                  by  default;  subclasses that require this informa-
                  tion must redefine these operations to  assign  and
                  retrieve the state they require.
    
           Manipulator()
                  The constructor is protected to disallow instantia-
                  tion of abstract base class objects.
    
    
    

    SEE ALSO

           Event(3I), Tool(3U), Viewer(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/MatchEditor.html0000644000076500007650000000450507374262640020515 0ustar scottscott00000000000000
    
           MatchEditor - StringEditor with pattern matching
    
    
    

    SYNOPSIS

           #include <InterViews/matcheditor.h>
    
    
    

    DESCRIPTION

           MatchEditor  is  a  StringEditor  subclass that checks the
           validity of its contents against a specified pattern.   It
           is  suitable  for  entering strings that must conform to a
           particular format such as a number or a  file  name.   The
           matching  pattern  is  specified according to the rules of
           scanf(3).  For example, a pattern of "%3d"  will  match  a
           3-digit  integer, a pattern of "%[ab]" will match a string
           containing only a's and b's, and a pattern of  "(%f,  %f)"
           will match the string "(12.0, 5E23)".
    
    
    

    PUBLIC OPERATIONS

           MatchEditor(ButtonState*, const char* sample, const char*
                  done)
                  Create a new MatchEditor object.  The  ButtonState,
                  sample string, and termination string are passed to
                  the StringEditor constructor.
    
           void Match(const char* pattern, boolean keystroke = true)
                  Specify  the  pattern  to  match   against.    When
                  MatchEditor  performs  matching,  it will highlight
                  any trailing part of the edit string that does  not
                  conform  to pattern.  The user can then correct the
                  string.  If keystroke is true, matching will  occur
                  on  every  keystroke;  otherwise matching will only
                  occur on the completion of the edit.   The  initial
                  pattern  matches  any string, and the initial value
                  of keystroke is true.
    
    
    

    RESTRICTIONS

           MatchEditor uses sscanf internally to  check  the  pattern
           match.   Different versions of sscanf have different scan-
           ning capabilities; check with your local  version  to  see
           what patterns you can use.
    
    
    

    SEE ALSO

           StringEditor(3I)
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Menu2_6.html0000644000076500007650000001157707374262640017534 0ustar scottscott00000000000000
    
           Menu,  MenuItem,  MenuBar,  PopupMenu, PulldownMenu, Pull-
           rightMenu - menus
    
    
    

    SYNOPSIS

           #include <InterViews/menu.h>
    
    
    

    DESCRIPTION

           N.B.: This Menu class is  completely  different  from  the
           Menu class in version 2.5.  No attempt has been made to be
           compatible, as this class and its subclasses are more pow-
           erful and easier to use than the original class.
    
           Menu  is  a  subclass  of Control that contains a scene of
           other controls, called its body.  When a menu  is  opened,
           it  inserts  the  body  into the world with a drop shadow.
           The appearance of the menu itself is defined by its inter-
           actor  component.  For example, a menu in a menu bar might
           appear as ``File'' and insert a pulldown  menu  with  com-
           mands such as ``Save'' when opened.
    
           MenuItem  is a subclass of Control for defining the leaves
           of a menu hierarchy.  Normally, an application will derive
           a  command  class  from MenuItem and implement the virtual
           function Do as appropriate.  One technique is to pass  the
           Command  an application object and pointer to member func-
           tion; the Do function calls the  member  function  on  the
           application object.
    
           PopupMenu,  PulldownMenu, and PullrightMenu are subclasses
           of Menu that implement a common styles of menus.   MenuBar
           is a subclass of HBox that manages the control state asso-
           ciated with a set of menus.  PopupMenu has no  appearance;
           it  is  opened  explicitly  in response to an input event.
           PulldownMenu and PullrightMenu open the  menu  body  below
           and to the right of the menu, respectively.  These classes
           make it possible to use menus in  an  application  without
           creating or passing control states explicitly.
    
    
    
    

    PUBLIC OPERATIONS

           Menu::Menu(Interactor*)
                  Construct a new menu.
    
           Menu::~Menu()
                  The destructor deletes the menu body in addition to
                  its appearance component.
    
           virtual void Menu::Include(Control*)
                  Add an item to the menu.  If no scene is specified,
                  Menu will create a vbox and insert items into it.
    
           virtual void Menu::Popup(Event&)
                  the controls in the body.  The menu is removed from
                  the world when the controls are  deactivated  (nor-
                  mally when a button is released).
    
           void Menu::SetBody(Interactor*)
           Interactor* Menu::GetBody()
           void Menu::SetAlign(Alignment)
           Alignment Menu::GetAlign()
           void Menu::SetDepth(int)
           int GetDepth()
           void Menu::SetBodyState(ControlState*)
           ControlState* Menu::GetBodyState()
           void Menu::SetScene(Scene*)
           Scene* Menu::GetScene()
                  Set  or get attributes of the menu.  The depth of a
                  menu is the number of pixels  separating  the  body
                  and the drop shadow.
    
           Coord Menu::InsertX()
           Coord Menu::InsertY()
                  Return  the  coordinates  where the menu's body was
                  last inserted into the world.
    
           MenuItem::MenuItem(Interactor*)
           MenuItem::MenuItem(const char* str, Alignment = Left)
                  Construct a new menu item.  The second  constructor
                  defines  the appearance of the item to be a message
                  containing the text in str.
    
           PulldownMenu::PulldownMenu(Interactor*)
           PulldownMenu::PulldownMenu(const char* str)
           PullrightMenu::PullrightMenu(Interactor*)
           PullrightMenu::PullrightMenu(const char* str)
                  Construct a new pulldown or  pullright  menu.   The
                  second  constructor  defines  the appearance of the
                  menu to be a message containing the text in str.
    
           PopupMenu::PopupMenu()
                  Construct a new popup menu.
    
           MenuBar::MenuBar()
                  Construct a new menu bar.
    
           virtual void MenuBar::Include(Control*)
                  Add a control  to  a  menu  bar.   In  addition  to
                  inserting  the  control  into  the bar's hbox, this
                  operation attaches the control to the bar's control
                  state.
    
    
    

    SEE ALSO

           Control(3I), Event(3I)
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Message.html0000644000076500007650000000237007374262640017674 0ustar scottscott00000000000000
    
           Message - interactor containing text
    
    
    

    SYNOPSIS

           #include <InterViews/message.h>
    
    
    

    DESCRIPTION

           A  message  is an interactor that contains a line of text.
           The alignment of the text with respect to the interactor's
           canvas can be specified in the constructor.
    
    
    

    PUBLIC OPERATIONS

           Message(const  char*,  Alignment  =  Center,  int  pad  =
                  0, int hstretch = 0, int vstretch = 0)
                  Construct  a  new message interactor with the given
                  text string and alignment.  The text will  be  sur-
                  rounded  on  all  sides by whitespace of width pad,
                  and the horizontal and vertical  stretchability  of
                  the message will be set to the indicated values.
    
    
    

    SEE ALSO

           Interactor(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/MoveTool.html0000644000076500007650000000372107374262640020055 0ustar scottscott00000000000000
    
           MoveTool - tool for translating components
    
    
    

    SYNOPSIS

           #include <Unidraw/Tools/move.h>
    
    
    

    DESCRIPTION

           MoveTool  lets  the user translate components to new posi-
           tions by direct manipulation.
    
    
    

    PUBLIC OPERATIONS

           MoveTool(ControlInfo* = nil)
                  Create a new MoveTool.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  CreateManipulator detects whether the user  clicked
                  on  a  component.   If  not, it clears the editor's
                  selection and returns a nil manipulator.  If a com-
                  ponent was hit, and if the component was not previ-
                  ously selected, then CreateManipulator  clears  the
                  editor's  selection, selects the component the user
                  hit, and delegates manipulator creation and  inter-
                  pretation  to  it.   If  the component was the only
                  selected component, it again delegates  manipulator
                  creation  and  interpretation to the component, but
                  the selection is unaltered.  If the user clicks  on
                  one of many selected components, then CreateManipu-
                  lator will delegate manipulator creation and inter-
                  pretation without altering the selection by calling
                  GraphicView::CreateManipulator      and      Graph-
                  icView::InterpretManipulator on the component.
    
    
    

    SEE ALSO

           GraphicView(3U), Tool(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/NOPCmd.html0000644000076500007650000000153207374262640017367 0ustar scottscott00000000000000
    
           NOPCmd - do-nothing command
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/nop.h>
    
    
    

    DESCRIPTION

           NOPCmd  is a command that does no work.  It acts as a con-
           venient and harmless placeholder.  It is not reversible.
    
    
    

    PUBLIC OPERATIONS

           NOPCmd(ControlInfo*)
           NOPCmd(Editor* = nil)
                  Create a NOPCmd.
    
           virtual void Execute()
                  NOPCmd's Execute function is empty.
    
    
    

    SEE ALSO

           Command(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/PadComp.html0000644000076500007650000001344407374262640017637 0ustar scottscott00000000000000
    
           PadComp,  PadView,  PadGraphic, PSPad - pad connector sub-
           ject, view, structured graphic,  and  PostScript  external
           representation
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/pad.h>
    
    
    

    DESCRIPTION

           PadComp is a Connector subclass that supports connectivity
           with two degrees of freedom.   It  uses  a  PadGraphic  to
           store  its graphical attributes.  PadView is a GraphicView
           for displaying the pad.  PSPad is  a  PostScriptView  that
           externalizes the subject's information in PostScript form.
    
    
    

    PADCOMP PUBLIC OPERATIONS

           PadComp(PadGraphic* = nil)
                  The constructor takes an optional  PadGraphic  that
                  defines the pad's graphical attributes.
    
           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  PadComp  (un)interprets  a  subset of commands that
                  connectors can generally interpret, namely MoveCmd,
                  BrushCmd,  AlignCmd,  MobilityCmd,  DeleteCmd,  and
                  CutCmd.
    
           virtual Mobility GetMobility()
           virtual void SetMobility(Mobility)
                  PadComp redefines these  functions  to  return  and
                  assign its _mobility protected member.  The pad has
                  fixed mobility initially.
    
           Pad* GetPad()
                  Return the Pad  graphic  that  defines  the  line's
                  attributes.   GetPad is simply a more specific form
                  of the GetGraphic operation.
    
    
    

    PADVIEW PUBLIC OPERATIONS

           PadView(PadComp* = nil)
                  Create an PadView, optionally  supplying  the  sub-
                  ject.
    
           virtual void Interpret(Command*)
                  PadView  interprets  AlignToGridCmd  to  align  its
                  lower left to the grid.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  PadViews respond only to manipulation  by  Graphic-
                  GraphicCompTool will let the user sweep out a rect-
                  angle that reflects the pad's size.  Creation  will
                  be influenced by gravity, if any. PadView creates a
                  ConnectManip in response to the ConnectTool,  which
                  will  exhibit a gravational attraction to potential
                  target connectors.  PadView  will  produce  a  Con-
                  nectCmd  to  connect  the  pad to its target. A pad
                  connected in this way will receive floating  mobil-
                  ity.
    
           PadComp* GetPadComp()
                  Return the subject.
    
    
    

    PADVIEW PROTECTED OPERATIONS

           PadGraphic* GetPad()
                  Return   the  PadGraphic  that  defines  the  pad's
                  attributes.  GetPad is simply a more specific  form
                  of the GetGraphic operation.
    
           virtual PadComp* NewSubject(PadGraphic*)
                  A  helper  function  that creates a PadComp subject
                  with the given pad graphic. This function  produces
                  the   proper  subject  when  the  GraphicCompTool's
                  manipulator is interpreted.  Subclasses  can  rede-
                  fine  this  operation to return a PadComp subclass,
                  thus eliminating the need to reimplement Interpret-
                  Manipulator.
    
           Manipulator* CreateGraphicCompManip(
               Viewer*, Event&, Transformer*, Tool*
           )
    
           Manipulator* CreateConnectManip(
               Viewer*, Event&, Transformer*, Tool*
           )
    
           Command* InterpretGraphicCompManip(Manipulator*)
           Command* InterpretConnectManip(Manipulator*)
                  Helper  functions  used  by  CreateManipulator  and
                  InterpretManipulator to create  and  interpret  the
                  manipulators  associated  with  GraphicCompTool and
                  ConnectTool.
    
    
    

    PADGRAPHIC PUBLIC OPERATIONS

           PadGraphic(
               Coord = 0, Coord = 0, Coord = 0, Coord = 0,
               Graphic* = nil
           )
                  Create a PadGraphic, optionally  specifying  lower-
                  left  and  upper-right  corners  and a graphic from
                  which to obtain its default graphics attributes.
    
                  Return the  PadGraphic's  original  coordinates  as
                  specified in the constructor.
    
    
    

    PSPAD PUBLIC OPERATIONS

           PSPad(PadComp* = nil)
                  Construct  a  PostScript external representation of
                  the given subject, if any.
    
    
    

    SEE ALSO

           BrushCmd(3U),  ConnectTool(3U),   Connector(3U),   Connec-
           torView3U),  Event(3I),  Graphic(3U), GraphicCompTool(3U),
           Grid(3U),          MoveTool(3U),           PatternCmd(3U),
           PostScriptView(3U),      Transformer(3I),      Viewer(3U),
           align(3U), edit(3U), manips(3U), transforms(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Page.html0000644000076500007650000000315307374262640017164 0ustar scottscott00000000000000
    
           Page - defines and displays a visual boundary for a viewer
    
    
    

    SYNOPSIS

           #include <Unidraw/page.h>
    
    
    

    DESCRIPTION

           A Page object delineates an area of interest in a  viewer.
           The  page's  appearance  guides  the user to stay within a
           particular area, and the page's bounding box  defines  the
           total  scrollable  area  in  the  viewer.  Page displays a
           rectangle by default, but the boundary can be an arbitrary
           graphic.   The  page  occludes any graphical components in
           the viewer.  A typical use for a page  is  to  define  the
           page  boundary  in  a drawing editor; graphics beyond this
           area will not appear on the printed page.
    
    
    

    PUBLIC OPERATIONS

           Page(float width, float height)
                  Instantiate  a  rectangular  page  with  dimensions
                  width and height, in pixels.
    
           Page(Graphic*)
                  Instantiate  a  page  of  arbitrary  appearance, as
                  defined by a graphic.  The graphic's  bounding  box
                  defines the total scrollable area.
    
           virtual Graphic* GetGraphic()
                  Returns the graphic defining the page's appearance.
    
    
    

    SEE ALSO

           Graphic(3U), Viewer(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Painter.html0000644000076500007650000003071707374262640017720 0ustar scottscott00000000000000
    
           Painter - graphics output
    
    
    

    SYNOPSIS

           #include <InterViews/painter.h>
    
    
    

    DESCRIPTION

           Painter is a class that provides ``immediate-mode'' graph-
           ics operations for drawing on a canvas.  The  state  of  a
           painter defines the graphics context for the drawing oper-
           ations and includes a  brush,  foreground  and  background
           colors,  a  fill  pattern  and  mode,  a text font, a text
           style, an output origin and current position, and a trans-
           formation matrix.
    
    
    

    STATE OPERATIONS

           Painter(Painter* = stdpaint)
                  Create  a  new  painter and copy its state from the
                  given painter.
    
           void SetBrush(Brush*)
           Brush* GetBrush()
                  Set or return the painter's brush.  Default is  the
                  predefined brush ``single''.
    
           void SetColors(Color* fg, Color* bg)
           Color* GetFgColor()
           Color* GetBgColor()
                  Set  or  return  the  painter's  colors.  If either
                  argument to SetColors is nil, then the  correspond-
                  ing  color  is not changed.  Defaults are ``black''
                  for foreground and ``white'' for background.
    
           void SetFont(Font*)
           Font* GetFont()
                  Set or return the painter's text font.  Default  is
                  the predefined font ``stdfont''.
    
           void SetStyle(int style)
           int GetStyle()
                  Set  or get the painter's text style.  A text style
                  is a bit vector that can be assembled from the pre-
                  defined  constants Plain, Boldface, Underlined, and
                  Reversed.  Default is Plain.
    
           void SetPattern(Pattern*)
           Pattern* GetPattern()
           void FillBg(boolean mode)
           boolean BgFilled()
                  Set or return the painter's fill pattern and  mode.
                  If  the mode is true, fill operations will set pix-
                  els corresponding to ones in the current fill  pat-
                  tern to the foreground color and pixels correspond-
                  pattern is ``solid''; default mode is true.
    
           void SetOrigin(int x0, int y0)
           void GetOrigin(int& x0, int& y0)
                  Set or return the origin by which  all  coordinates
                  are offset.  Default is (0, 0).
    
           void Translate(float dx, float dy)
           void Rotate(float angle)
           void Scale(float x, float y)
           void SetTransformer(Transformer*)
           Transformer* GetTransformer()
                  Coordinates passed to drawing operations are trans-
                  formed according to the current origin, translation
                  (cumulative),  rotation,  and scale factor.  Inter-
                  nally, a transformation matrix is stored  that  can
                  be  directly  set and accessed using SetTransformer
                  and GetTransformer.   The  default  transformer  is
                  nil, meaning no transformations are performed.
    
           void SetPlaneMask(int mask)
                  Set which bit planes are affected by drawing opera-
                  tions.  If the Kth bit of mask is set, then display
                  operations will draw on plane K.
    
           void SetOverwrite(boolean)
                  Set  whether  a painter is allowed to write in sub-
                  canvases.  If true, drawing operations will be able
                  to  write  over  the canvases of component interac-
                  tors.  If false, drawing operations will be clipped
                  by any subcanvases.  The default is false.
    
           void Clip(Canvas*, Coord x1, Coord y1, Coord x2, Coord y2)
           void NoClip()
                  Clip restricts output operations to  the  specified
                  region  of the canvas.  NoClip removes the restric-
                  tion so that operations affect the  entire  canvas.
                  Only  one  clipping  region  may  be in effect at a
                  time.
    
           void MoveTo(Coord x, Coord y)
                  Set the current output position.  The output  posi-
                  tion is used and updated by Text and CurveTo.
    
    
    

    DRAWING OPERATIONS

           void Curve(Canvas*, Coord x0, y0, x1, y1, x2, y2, x3, y3)
           void CurveTo(Canvas*, Coord x1, y1, x2, y2, x3, y3)
                  Paint  a  Bezier curve on the canvas from the first
                  point to the last point (but not going through  the
                  intermediate  control  points).  The curve will lie
                  within the  polygon  formed  by  the  four  points.
                  CurveTo  uses  the  current  position for the first
    
           void ClosedBSpline(Canvas*, Coord x[], y[], int n)
           void FillBSpline(Canvas*, Coord x[], y[], int n)
                  Draw the B-spline defined by  the  n  control  ver-
                  tices.  If closed or filled, the last point is con-
                  nected to the first point.
    
           void Circle(Canvas*, Coord x, y, int r)
           void FillCircle(Canvas*, Coord x, y, int radius)
                  Draw a circle with center (x, y) and radius r.
    
           void Ellipse(Canvas*, Coord x, y, int xr, int yr)
           void FillEllipse(Canvas*, Coord x, y, int xr, int yr)
                  Draw an  ellipse  with  center  (x, y),  horizontal
                  radius xr, and vertical radius yr.
    
           void Line(Canvas*, Coord x1, y1, x2, y2)
           void MultiLine(Canvas*, Coord x[], y[], int n)
           void Polygon(Canvas*, Coord x[], y[], int n)
           void FillPolygon(Canvas*, Coord x[], y[], int n)
                  Draw  a  path  using  the current brush and colors.
                  The Line  operation  draws  a  vector  between  two
                  points  (inclusive);  MultiLine  draws  a number of
                  connected vectors; Polygon draws a  closed  set  of
                  vectors;  FillPolygon fills the area inside a poly-
                  gon using the current fill pattern and colors.
    
           void Point(Canvas*, Coord x, y)
           void MultiPoint(Canvas*, Coord x[], y[], int n)
                  Set a point or set of points to the  current  fore-
                  ground color.
    
           void Rect(Canvas*, Coord x1, y1, x2, y2)
           void FillRect(Canvas*, Coord x1, y1, x2, y2)
           void ClearRect(Canvas*, Coord x1, y1, x2, y2)
                  Draw  a rectangle with opposite corners specfied by
                  (x1, y1) and (x2, y2).  FillRect fills the  rectan-
                  gle using the current pattern and colors; ClearRect
                  fills the rectangle with the background color.
    
           void Text(Canvas*, const char* str, Coord x, Coord y)
           void Text(Canvas*, const char* str, int n, Coord x, Coord
                  y)
           void Text(Canvas*, const char* str)
           void Text(Canvas*, const char* str, int n)
                  Draw  a  string or substring of text using the cur-
                  rent Font and text style.  The  (x, y)  coordinates
                  specify  the  lower-left corner of the bounding box
                  of the text.  The width of the bounding box is  the
                  width  of the string as reported by the Font::Width
                  operation, and the height of the  bounding  box  is
                  the  Font height.  Most fonts will result in output
                  which only affects pixels within the bounding  box.
                  drawn.   If  the  matrix specifies a transformation
                  involving rotation or scaling, the resulting opera-
                  tion  may proceed much more slowly than normal.  If
                  background fill mode is on, then the characters are
                  drawn  in  the  foreground  color, and other pixels
                  within the bounding box are set to  the  background
                  color.   If  background  fill mode is off, only the
                  foreground pixels are set.  If no  coordinates  are
                  specified,  then  the  current position (defined by
                  MoveTo) is used and updated to reflect  the  lower-
                  right corner of the bounding box.
    
           void  Stencil(Canvas*,  Coord  x, Coord y, Bitmap* image,
                  Bitmap* mask = nil)
                  Paint  foreground  and  background colors through a
                  stencil formed by positioning the  image  and  mask
                  Bitmaps  with  their  origins  at the point (x, y).
                  Foreground color is painted where the image  Bitmap
                  has  a  true value and background color where image
                  is false.  However, only pixels corresponding to  a
                  true  value in the mask Bitmap are affected.  A nil
                  mask is equivalent to a mask of the same  size  and
                  shape as image and containing all true values.  The
                  current transformation matrix is  applied  to  both
                  the  image  and mask Bitmaps.  If the matrix speci-
                  fies a transformation involving rotation  or  scal-
                  ing,  the resulting operation may proceed much more
                  slowly than normal.
    
           void RasterRect(Canvas*, Coord x, Coord y, Raster*)
                  Render the Raster with its lower-left corner at the
                  position (x, y).  The current transformation matrix
                  is applied to the Raster.  If the matrix  specifies
                  a transformation involving rotation or scaling, the
                  resulting operation may proceed  much  more  slowly
                  than normal.
    
           void Read(Canvas*, void*, Coord x1, y1, x2, y2)
           void Write(Canvas*, const void*, Coord x1, y1, x2, y2)
           void  Copy(Canvas*  src, Coord x1, y1, x2, y2, Canvas*
                  dst, Coord x0, y0)
                  Read  copies  a  region  of  a  canvas into memory.
                  Write copies data from memory to a region of a can-
                  vas.   Copy reads a region of one canvas and writes
                  the data into a region of another canvas (or within
                  a  canvas  if src and dst are the same).  The point
                  (x0, y0) is the lower-left corner of  the  destina-
                  tion   region.    Note  that  Read  and  Write  are
                  superceded by operations that use Rasters.
    
    
    

    SEE ALSO

           Bitmap(3I), Brush(3I),  Canvas(3I),  Color(3I),  Font(3I),
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Panner.html0000644000076500007650000000666307374262640017544 0ustar scottscott00000000000000
    
           Panner - two-dimensional scrolling and zooming
    
    
    

    SYNOPSIS

           #include <InterViews/panner.h>
    
    
    

    DESCRIPTION

           A panner is an interactor that manipulates the perspective
           of another interactor to provide two-dimensional scrolling
           and zooming.  A panner is composed of a slider and several
           adjusters, including two  zoomers  and  four  movers.  The
           slider's  position  and  size  reflect the current origin,
           size, and aspect ratio in  the  interactor's  perspective.
           Dragging the slider around with the mouse changes the per-
           spective's curx and cury members.
    
    
    

    PUBLIC OPERATIONS

           Panner(Interactor*, int size = 0)
                  Create a panner for the given  interactor,  option-
                  ally  with  the  given  width.  If the size is 0, a
                  reasonable default  size  is  used.   The  panner's
                  aspect ratio reflects that of the perspective.
    
           Slider(Interactor*)
           Slider::Handle(Event&)
           Slider::Reshape(Shape&)
           Slider::Update()
                  A  slider  reflects  and  lets the user specify the
                  visible portion of the view.   A  rectangle  repre-
                  sents  the visible area, while the area surrounding
                  it represents the total area.  Clicking and holding
                  down  any  mouse button on the rectangle allows you
                  to drag it to a different position within the total
                  area.   The perspective's current origin is shifted
                  to reflect the new  position  when  the  button  is
                  released.   Holding  down the shift key while drag-
                  ging the rectangle constrains its  motion  horizon-
                  tally  or vertically.  Clicking outside the rectan-
                  gle moves it in  the  corresponding  one  of  eight
                  directions;  for  example, clicking to the right of
                  the rectangle moves it to the right.  If  the  left
                  mouse button is used, the movement increment equals
                  the perspective's sx or sy member  variables.   The
                  middle mouse button increments by lx or ly, and the
                  right mouse button centers the rectangle around the
                  cursor.   The  Reshape  call  sets the width of the
                  slider to that of the passed Shape and calls Change
                  on  the  parent  interactor.  Update redisplays the
                  slider to reflect a change in the interactor's per-
                  spective.
    
    
    

    X DEFAULTS

           The  ``syncScroll''  resource specifies whether the slider
           as the slider is dragged; otherwise the  slider's  outline
           follows  the  mouse during dragging, and the interactor is
           scrolled only after the user stops  dragging  the  slider.
           Sliders  will  scroll  synchronously  if  their syncScroll
           resource is set to ``on'' or ``true.''
    
    
    

    SEE ALSO

           Adjuster(3I), Interactor(3I), Perspective(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Path.html0000644000076500007650000000251707374262640017207 0ustar scottscott00000000000000
    
           Path - record of connectors visited during dataflow
    
    
    

    SYNOPSIS

           #include <Unidraw/path.h>
    
    
    

    DESCRIPTION

           A Path object stores a record of connectors that have been
           visited during dataflow.  Transfer functions, state  vari-
           ables, connectors, and other components can use the infor-
           mation in the path to determine  whether  data  should  be
           transmitted, for example, to avoid circular flow.
    
    
    

    PUBLIC OPERATIONS

           Path(Path* = nil)
                  Instantiate a new path, optionally with a duplicate
                  of the information contained in the given path.
    
           virtual void Visit(Connector*)
                  Register a connector as having been visited.
    
           virtual boolean Visited(Connector*)
                  Return whether or not a connector has  been  regis-
                  tered previously with the path.
    
    
    

    SEE ALSO

           Connector(3U), StateVar(3U), TransferFunct(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Pattern.html0000644000076500007650000000340307374262640017723 0ustar scottscott00000000000000
    
           Pattern - fill patterns
    
    
    

    SYNOPSIS

           #include <InterViews/pattern.h>
    
    
    

    DESCRIPTION

           A pattern defines how to fill areas during graphics opera-
           tions.  A pattern is essentially a mask for  drawing  that
           is replicated to fill the size of the destination.
    
           N.B.: Patterns are relatively low-level objects, typically
           used to implement an alpha value for a color.   Since  the
           color object now supports an alpha value, there is no need
           to use patterns.
    
    
    

    PUBLIC OPERATIONS

           Pattern()
                  Create a solid pattern.
    
           Pattern(char*, unsigned int width, unsigned int height)
                  Create a pattern with the given width  and  height,
                  using the bits described by the first parameter.
    
           Pattern(int)
                  Create a 4x4 pattern determined from the least sig-
                  nificant 16 bits of the parameter.
    
           Pattern(int*)
                  Construct a 16x16  pattern  from  the  given  data.
                  This  function is provided solely for backward com-
                  patibility and will be removed in the future.
    
           Pattern(Bitmap*)
                  Construct a pattern from the bitmap.  If necessary,
                  the  bitmap  will  be tiled or truncated to satisfy
                  window system requirements for fill pattern  sizes.
    
    
    

    SEE ALSO

           Painter(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/PatternCmd.html0000644000076500007650000000245707374262640020357 0ustar scottscott00000000000000
    
           PatternCmd  -  command  for  setting  components'  pattern
           attribute
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/patcmd.h>
    
    
    

    DESCRIPTION

           PatternCmd is a purely interpretive  command  for  setting
           the pattern attribute of selected components.
    
    
    

    PUBLIC OPERATIONS

           PatternCmd(ControlInfo*, PSPattern* = nil)
           PatternCmd(Editor* = nil, PSPattern* = nil)
                  Create  a  PatternCmd,  optionally  specifying  the
                  PSPattern that components should adopt.
    
           virtual void Execute()
                  PatternCmd extends Execute to set the value of  the
                  affected   editor's   PatternVar  instance,  if  it
                  defines one.
    
           PSPattern* GetPattern()
                  Return the PSPattern supplied in the constructor.
    
    
    

    SEE ALSO

           Command(3U), pspaint(3U), statevars(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Perspective.html0000644000076500007650000000501107374262640020574 0ustar scottscott00000000000000
    
           Perspective - visible portion of an interactor
    
    
    

    SYNOPSIS

           #include <InterViews/perspective.h>
    
    
    

    DESCRIPTION

           A  perspective  object describes which part of an interac-
           tor's total display area is visible  in  the  interactor's
           canvas.   The  main  use of perspectives is for scrolling,
           panning, and zooming interactors.   The  member  variables
           (x0, y0)  define  the  origin  of the interactor's display
           area; width and height define  the  total  height  of  the
           area.  The member variables (curx, cury) define the lower-
           left corner of the interactor's  canvas  relative  to  the
           total  area; curwidth and curheight define how much of the
           total area is displayed in the canvas.
    
           The member variables sx, sy, lx, and ly specify small  and
           large  increments in each dimension.  These increments are
           used by a scroller to implement line and page scrolling.
    
    
    

    PUBLIC OPERATIONS

           Perspective()
                  Define a new perspective with all member  variables
                  initialized to zero.
    
           void Attach(Interactor*)
                  Add  to the list of interactors that are interested
                  in updates to the perspective.   These  interactors
                  reflect  the perspective visually; examples include
                  scrollers and sliders.
    
           void Detach(Interactor*)
                  Remove an interactor from the list of those  inter-
                  ested  in updates.  This operation should be called
                  from the interactor's destructor.
    
           void Init(Coord x0, Coord y0, Coord width, Coord height)
                  Initialize the perspective display area.
    
           void Update()
                  Notify all the interactors interested in  the  per-
                  spective  that  it  has changed.  The perspective's
                  interactor should call Update after  modifying  its
                  perspective.
    
    
    

    SEE ALSO

           Adjuster(3I), Interactor(3I), Panner(3I), Scroller(3I)
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Picture.html0000644000076500007650000000444307374262640017726 0ustar scottscott00000000000000
    
           Picture - composite structured graphic
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/picture.h>
    
    
    

    DESCRIPTION

           A  Picture  defines  a  composition of graphic objects.  A
           picture has its own graphics state, which it  concatenates
           with  its  children's  state  when  it is drawn or erased.
           Picture adopts the default  concatenation  semantics  sup-
           ported  by  the Graphic base class: The picture's graphics
           state effectively overrides its children's  so  that  they
           are drawn with the picture's state information substituted
           for their own.  A child's attribute is used only when  the
           picture  does  not  already  define  it.   Moreover,  each
           child's transformer is  postmultiplied  by  the  picture's
           transformer  when  the picture is drawn; thus children are
           drawn relative to the picture's coordinate system.
    
    
    

    PUBLIC OPERATIONS

           Picture(Graphic* = nil)
                  Construct  a  new  picture,  optionally  supply   a
                  graphic from which to copy an initial set of graph-
                  ics state.  Picture is derived from FullGraphic and
                  therefore defines a full set of graphics state.
    
           virtual ~Picture()
                  The   picture  deletes  its  children  when  it  is
                  deleted.
    
           boolean IsEmpty()
                  Picture defines IsEmpty in addition to the standard
                  Graphic  child  traversal  operations  to provide a
                  convenient way to check  if  the  picture  has  any
                  children.
    
    
    

    PROTECTED OPERATIONS

           Graphic* graphic(UList*)
           UList* Elem(Iterator)
                  Convenience functions for extracting a graphic from
                  a UList element and a UList from an iterator.
    
    
    

    SEE ALSO

           Graphic(3U),  Iterator(3U),  Transformer(3I),   UList(3U),
           pspaint(3U)
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/PinComp.html0000644000076500007650000001435607374262640017664 0ustar scottscott00000000000000
    
           PinComp,  PinView,  PinGraphic, PSPin - pin connector sub-
           ject, view, structured graphic,  and  PostScript  external
           representation
    
           SlidingPin,  FixedPin  - rubberbands used in pin manipula-
           tion
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/pin.h>
    
    
    

    DESCRIPTION

           PinComp is a Connector subclass that supports connectivity
           with  zero  degrees  of  freedom.  It uses a PinGraphic to
           store its graphical attributes.  PinView is a  GraphicView
           for  displaying  the  pin.  PSPin is a PostScriptView that
           externalizes the subject's information in PostScript form.
    
           SlidingPin  and  FixedPin  are special rubberbands used to
           implement the animation effects that pins  produce  during
           direct  manipulation.   A  SlidingPin  is  a  circle  with
           crosshairs (duplicating the appearance  of  a  PinGraphic)
           that  follows the mouse position, while a FixedPin draws a
           static circle with crosshairs.
    
    
    

    PINCOMP PUBLIC OPERATIONS

           PinComp(PinGraphic* = nil)
                  The constructor takes an optional  PinGraphic  that
                  defines  the  pin's  graphical attributes.  The pad
                  has fixed mobility initially
    
           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  PinComp (un)interprets a subset  of  commands  that
                  connectors can generally interpret, namely MoveCmd,
                  BrushCmd,  AlignCmd,  MobilityCmd,  DeleteCmd,  and
                  CutCmd.
    
           virtual Mobility GetMobility()
           virtual void SetMobility(Mobility)
                  PinComp  redefines  these  functions  to return and
                  assign its _mobility protected member.  The pin has
                  fixed mobility initially.
    
           Pin* GetPin()
                  Return  the  Pin  graphic  that  defines the line's
                  attributes.  GetPin is simply a more specific  form
                  of the GetGraphic operation.
    
    
    

    PINVIEW PUBLIC OPERATIONS

           PinView(PinComp* = nil)
                  Create  an  PinView,  optionally supplying the sub-
                  ject.
                  PinView  interprets  AlignToGridCmd  to  align  its
                  lower left to the grid.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  PinViews  respond  only to manipulation by Graphic-
                  CompTools, MoveTools,  and  ConnectTools.   PinView
                  inherits  its MoveTool response from ConnectorView.
                  GraphicCompTool will let the user place the pin  at
                  a  particular  position.   Placement will be influ-
                  enced by gravity, if any.  PinView creates  a  Con-
                  nectManip  in  response  to  the ConnectTool, which
                  will exhibit a gravational attraction to  potential
                  target  connectors.   PinView  will  produce a Con-
                  nectCmd to connect the pin to  its  target.  A  pin
                  connected  in this way will receive floating mobil-
                  ity.
    
           PinComp* GetPinComp()
                  Return the subject.
    
    
    

    PINVIEW PROTECTED OPERATIONS

           PinGraphic* GetPin()
                  Return  the  PinGraphic  that  defines  the   pin's
                  attributes.   GetPin is simply a more specific form
                  of the GetGraphic operation.
    
           virtual PinComp* NewSubject(PinGraphic*)
                  A helper function that creates  a  PinComp  subject
                  with  the given pin graphic. This function produces
                  the  proper  subject  when  the   GraphicCompTool's
                  manipulator  is  interpreted.  Subclasses can rede-
                  fine this operation to return a  PinComp  subclass,
                  thus eliminating the need to reimplement Interpret-
                  Manipulator.
    
           Manipulator* CreateGraphicCompManip(
               Viewer*, Event&, Transformer*, Tool*
           )
    
           Manipulator* CreateConnectManip(
               Viewer*, Event&, Transformer*, Tool*
           )
    
           Command* InterpretGraphicCompManip(Manipulator*)
           Command* InterpretConnectManip(Manipulator*)
                  Helper  functions  used  by  CreateManipulator  and
                  InterpretManipulator  to  create  and interpret the
                  manipulators associated  with  GraphicCompTool  and
    
           PinGraphic(Coord = 0, Coord = 0, Graphic* = nil)
                  Create a PinGraphic, optionally specifying its cen-
                  ter and a graphic from which to obtain its  default
                  graphics attributes.
    
           void GetOriginal(Coord&, Coord&)
                  Return the PinGraphic's original center coordinates
                  as specified in the constructor.
    
    
    

    PSPIN PUBLIC OPERATIONS

           PSPin(PinComp* = nil)
                  Construct a PostScript external  representation  of
                  the given subject, if any.
    
    
    

    SEE ALSO

           BrushCmd(3U),   ConnectTool(3U),   Connector(3U),  Connec-
           torView3U), Event(3I),  Graphic(3U),  GraphicCompTool(3U),
           Grid(3U),           MoveTool(3U),          PatternCmd(3U),
           PostScriptView(3U),     Rubband(3I),      Transformer(3I),
           Viewer(3U),   align(3U),   edit(3U),   manips(3U),  trans-
           forms(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/PolygonComp.html0000644000076500007650000000643007374262640020557 0ustar scottscott00000000000000
    
           PolygonComp,  PolygonView,  PSPolygon  - polygon component
           subject, view, and PostScript external representation
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/polygon.h>
    
    
    

    DESCRIPTION

           PolygonComp is a VerticesComp that defines a polygon.   It
           uses   an   SF_Polygon  graphic  to  store  its  graphical
           attributes.  PolygonView is a VerticesView for  displaying
           the  polygon.  PSPolygon is a PSVertices that externalizes
           the subject's information in PostScript form.
    
    
    

    POLYGONCOMP PUBLIC OPERATIONS

           PolygonComp(SF_Polygon* = nil)
                  The constructor takes  an  optional  stroked-filled
                  polygon  graphic that defines the attributes of the
                  polygon.
    
           SF_Polygon* GetPolygon()
                  Return the Polygon graphic that defines  the  poly-
                  gon's attributes.  GetPolygon is simply a more spe-
                  cific form of the GetGraphic operation.
    
    
    

    POLYGONVIEW PUBLIC OPERATIONS

           PolygonView(PolygonComp* = nil)
                  Create an  PolygonView,  optionally  supplying  the
                  subject.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  PolygonView  redefines its response to manipulation
                  with a GraphicCompTool.  The user clicks  the  left
                  mouse button to specify each vertex and clicks with
                  the middle mouse button to specify the  final  ver-
                  tex.   Vertex  positioning  will  be constrained by
                  gravity,  if  any.   PolygonView  also  defines   a
                  response  to  the ReshapeTool, allowing the user to
                  click on one of its vertices to reposition it.  The
                  subject  is actually replaced (via ReplaceCmd) with
                  a new PolygonComp subject  reflecting  the  reposi-
                  tioned vertex.  Repositioning will be influenced by
                  gravity.
    
           PolygonComp* GetPolygonComp()
                  Return the subject.
    
    
    

    PSPOLYGON PUBLIC OPERATIONS

           PSPolygon(PolygonComp* = nil)
    
    
    

    PSPOLYGON PROTECTED OPERATIONS

           virtual const char* Name()
                  PSPolygon   identifies  itself  as  "Poly"  in  the
                  PostScript output.
    
    
    

    SEE ALSO

           Event(3I),  GraphicComp(3U),  GraphicCompTool(3U),  Graph-
           icView(3U),  Grid(3U), PatternCmd(3U), PostScriptView(3U),
           ReshapeTool(3U),   Rubband(3I),   Transformer(3I),    Ver-
           ticesComp(3U),   Viewer(3U),  align(3U),  edit(3U),  poly-
           gons(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/polygons.html0000644000076500007650000001164407374262640020166 0ustar scottscott00000000000000
    
           Rect, S_Rect, F_Rect, SF_Rect, Polygon, S_Polygon, F_Poly-
           gon, SF_Polygon - structured graphics classes for  rectan-
           gles and polygons
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/polygons.h>
    
    
    

    DESCRIPTION

           Rect  and Polygon serve as abstract base classes for rect-
           angle and polygon structured graphics.  They  are  derived
           from  Graphic and Vertices, respectively.  Predefined sub-
           classes include S_Rect, F_Rect, and  SF_Rect,  which  draw
           stroked,  filled,  and  stroked-filled rectangles, respec-
           tively; and S_Polygon, F_Polygon,  and  SF_Polygon,  which
           draw stroked, filled, and stroked-filled polygons, respec-
           tively.  The  stroked  subclasses  store  a  PSBrush,  the
           filled  subclasses  store  a  PSPattern,  and the stroked-
           filled subclasses store one of each.
    
    
    

    RECT PUBLIC OPERATIONS

           void GetOriginal(Coord& x0, Coord& y0, Coord& x1, Coord&
                  y1)
                  Return  the  rectangle's  geometry, as specified in
                  the constructor.  (x0, y0) defines  one  corner  of
                  the  rectangle, while (x1, y1) defines the opposing
                  corner.
    
    
    

    RECT PROTECTED OPERATIONS

           Rectangle(Coord x0, Coord y0, Coord x1, Coord y1, Graphic*
                  = nil)
                  The constructor is protected to disallow instantia-
                  tion  of  the  abstract  base class.  A rectangle's
                  geometry is defined by two points, corresponding to
                  opposing corners of the rectangle.  The constructor
                  also takes an optional graphic from which to obtain
                  an initial set of graphics state.
    
           void s_getExtent(
               float&, float&, float&, float&, float&, Graphic*
           )
    
           void f_getExtent(
               float&, float&, float&, float&, float&, Graphic*
           )
    
           boolean s_contains(PointObj&, Graphic*)
           boolean f_contains(PointObj&, Graphic*)
           boolean s_intersects(BoxObj&, Graphic*)
           boolean f_intersects(BoxObj&, Graphic*)
                  Helper  functions that return extent and hit detec-
                  tion information based on the bounding box that the
                  rectangle  defines.   s_getExtent,  s_contains, and
                  rectangle is  stroked,  while  f_getExtent,  f_con-
                  tains,  and f_intersects assumes that the rectangle
                  is filled.  Subclasses can use  the  operations  to
                  help   implement  their  getExtent,  contains,  and
                  intersects operations.
    
    
    

    RECT SUBCLASS PUBLIC OPERATIONS

           S_Rect(Coord x0, Coord y0, Coord x1, Coord y1, Graphic* =
                  nil)
           F_Rect(Coord x0, Coord y0, Coord x1, Coord y1, Graphic* =
                  nil)
           SF_Rect(Coord x0, Coord y0, Coord x1, Coord y1, Graphic* =
                  nil)
                  Constructors  for  the various predefined Rect sub-
                  classes.
    
    
    

    POLYGON PROTECTED OPERATIONS

           Polygon(Coord* x, Coord* y, int count, Graphic* = nil)
                  Polygon's  constructor  is  protected  to   prevent
                  instantiation  of  the  abstract  base  class.  The
                  parameters are passed directly to the Vertices con-
                  structor.
    
    
    

    POLYGON SUBCLASS PUBLIC OPERATIONS

           S_Polygon(Coord* x, Coord* y, int count, Graphic* = nil)
           F_Polygon(Coord* x, Coord* y, int count, Graphic* = nil)
           SF_Polygon(Coord* x, Coord* y, int count, Graphic* = nil)
                  Constructors  for  the various predefined Rect sub-
                  classes.
    
    
    

    SEE ALSO

           Graphic(3U), Vertices(3U), geomobjs(3U), pspaint(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/PostScriptView.html0000644000076500007650000002364107374262640021261 0ustar scottscott00000000000000
    
           PostScriptView,  PostScriptViews - base classes for exter-
           nal representation objects that generate PostScript code
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/psview.h>
    
    
    

    DESCRIPTION

           PostScriptView  is  a  PreorderView  that  serves  as  the
           abstract  base  class  for external representation objects
           for emitting PostScript code.  A PostScriptView's  subject
           is  normally a GraphicComp subclass.  PostScriptViews is a
           subclass of PostScriptView for composite PostScript exter-
           nal views.
    
    
    

    POSTSCRIPTVIEW PUBLIC OPERATIONS

           virtual boolean Emit(ostream&)
                  PostScriptView  redefines  Emit  to generate header
                  information.   Thus  you  can  call  Emit  on   any
                  PostScriptView  subclass  to  generate encapsulated
                  PostScript.  Subclasses redefine Definition to gen-
                  erate  the  PostScript  fragment that defines their
                  basic attributes.
    
           GraphicComp* GetGraphicComp()
                  Return the subject.
    
    
    

    POSTSCRIPTVIEW PROTECTED OPERATIONS

           PostScriptView(GraphicComp* = nil)
                  Initialize  a  PostScriptView,  optionally  of  the
                  given GraphicComp.  The constructor is protected to
                  disallow instantiation.
    
    
    

    PostScriptView defines numerous protected helper functions to

           make it
           easier  for  subclasses  to  generate  the PostScript that
           describes their appearance.  The output  conforms  to  the
           original idraw PostScript format.
    
           virtual void Comments(ostream&)
           virtual void PSVersion(ostream&)
           virtual void Creator(ostream&)
           virtual void FontNames(ostream&)
           virtual void Pages(ostream&)
           virtual void BoundingBox(ostream&)
                  The   Comments   operation   generates  a  standard
                  PostScript  comments  block.   Comments  calls  the
                  other operations to generate a complete set of com-
                  ments.
    
           virtual void Prologue(ostream&)
           virtual void Version(ostream&)
           virtual void GridSpacing(ostream&)
                  Operations that generate global  data,  procedures,
                  and idraw-format-specific information.
    
           virtual void MinGS(ostream&)
           virtual void FullGS(ostream&)
           virtual void TextGS(ostream&)
           virtual void Brush(ostream&)
           virtual void FgColor(ostream&)
           virtual void BgColor(ostream&)
           virtual void Font(ostream&)
           virtual void Pattern(ostream&)
           virtual void Transformation(ostream&)
                  Operations  that  generate  graphics state informa-
                  tion.  All output the graphics state attribute that
                  their  name  suggests, with three exceptions: MinGS
                  outputs a minimal set of graphics state defined  by
                  practical  graphic  objects,  namely a brush, fore-
                  ground and background  colors,  a  pattern,  and  a
                  transformation  matrix. TextGS outputs the graphics
                  state required by  textual  graphics,  including  a
                  foreground  color,  a  font,  and  a transformation
                  matrix.  FullGS generates a full  set  of  graphics
                  state.
    
           virtual void SetPSFonts(UList*)
           virtual UList* GetPSFonts()
                  Get  and  set the list of all PostScript font names
                  required by the PostScriptView.  This set of  names
                  appears in a comment near the beginning of the gen-
                  erated output as required  by  standard  PostScript
                  conventions.
    
           virtual void GetBox(Coord&, Coord&, Coord&, Coord&)
                  Return  the  bounding  box of the graphic for which
                  PostScript is being generated.  These  values  also
                  appear in a standard PostScript comment.
    
           virtual void GridSpacing(float&, float&)
                  Return  the  grid  spacing,  if  applicable.  Idraw
                  requires this information, and it is  buried  in  a
                  comment.
    
           virtual void BeginProc(ostream&)
           virtual void EndProc(ostream&)
                  Begin  and  end  a  scope  for defining a graphical
                  object.
    
           virtual void ConstProcs(ostream&)
                  Generate PostScript procedures containing  constant
                  information, such as the character encoding dictio-
                  nary, string length limit, etc.
    
           virtual void SetBrushProc(ostream&)
           virtual void SetFgColorProc(ostream&)
           virtual void SetBgColorProc(ostream&)
           virtual void SetFontProc(ostream&)
           virtual void SetPatternProc(ostream&)
                  Generate PostScript procedures for setting graphics
                  state attributes.
    
           virtual void ObjectProcs(ostream&)
           virtual void BSplineProc(ostream&)
           virtual void CircleProc(ostream&)
           virtual void ClosedBSplineProc(ostream&)
           virtual void EllipseProc(ostream&)
           virtual void LineProc(ostream&)
           virtual void MultiLineProc(ostream&)
           virtual void PolygonProc(ostream&)
           virtual void RectangleProc(ostream&)
           virtual void TextProc(ostream&)
                  Generate  PostScript  procedures  for instantiating
                  basic graphical objects.
    
           virtual void MiscProcs(ostream&)
           virtual void DefinitionProc(ostream&)
           virtual void FillProc(ostream&)
           virtual void StrokeProc(ostream&)
           virtual void ShowProc(ostream&)
           virtual void PatternProc(ostream&)
           virtual void MinMaxProcs(ostream&)
           virtual void MidpointProc(ostream&)
           virtual void ThirdpointProc(ostream&)
           virtual void SubsplineProc(ostream&)
           virtual void StoreVerticesProc(ostream&)
                  MiscProcs  encapsulates  calls  to  the  subsequent
                  PostScript  procedure-generating  operations  shown
                  above.  DefinitionProc  generates  PostScript  code
                  that  declares a procedure. FillProc and StrokeProc
                  fill and stroke the path that  a  graphical  object
                  defines.  ShowProc fine-tunes a text object's posi-
                  tion.  PatternProc creates a  PostScript  rendition
                  of a pattern.  MinMaxProcs define min and max func-
                  tions.  MidpointProc and  ThirdpointProc  calculate
                  the  point midway and one-third the way between two
                  points,  respectively.   SubsplineProc  breaks  the
                  vertices  defining  a spline into smaller pieces to
                  allow approximating the spline with Bezier  curves.
                  Finally, StoreVerticesProc stores a set of vertices
                  in arrays.
    
           PSFont* GetFont(UList*)
           PostScriptView* View(UList*)
                  Convenience functions that return  the  PSFont  and
                  PostScriptView in UList elements, respectively.
                  Create  the appropriate PostScriptView subclass for
                  the given GraphicComp.   The  relationship  between
                  subjects,  views, and view categories is encoded in
                  their class identifiers.  See classes(3U) for  more
                  information  on  class  identifiers  and view cate-
                  gories.
    
    
    

    POSTSCRIPTVIEWS PUBLIC OPERATIONS

           PostScriptViews(GraphicComps* = nil)~
                  The constructor takes the subject  as  an  optional
                  argument.
    
           virtual boolean Update()
                  For   simplicity,  PostScriptViews  reconciles  its
                  state with its subject's by destroying its children
                  and reconstructing them from scratch.
    
    
    

    POSTSCRIPTVIEWS PROTECTED OPERATIONS

           UList* Elem(Iterator)
                  A  convenience function for extracting a UList from
                  an iterator.
    
           void DeleteView(Iterator&)
           void DeleteViews()
                  DeleteView removes a child and  deletes  it,  while
                  DeleteViews removes and deletes all children.
    
    
    

    SEE ALSO

           ExternView(3U),      GraphicComp(3U),     GraphicView(3U),
           UList(3U), classes(3U), idraw(1I), pspaint(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/pspaint.html0000644000076500007650000001070507374262640017767 0ustar scottscott00000000000000
    
           PSBrush,  PSColor,  PSFont,  PSPattern  -  graphics  state
           objects with added PostScript information
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/pspaint.h>
    
    
    

    DESCRIPTION

           PSBrush, PSColor, PSFont, and PSPattern are subclasses  of
           Brush,  Color, Font, and Pattern, respectively, that store
           added  information  needed  to  generate  idraw-compatible
           PostScript.   Unidraw's  structured  graphics  objects use
           these subclasses exclusively.
    
    
    

    PSBRUSH PUBLIC OPERATIONS

           PSBrush()
           PSBrush(int pattern, int width)
                  Create an undefined PSBrush (the parameterless con-
                  structor)  or one having the specified line pattern
                  and width.  Structured graphics having an undefined
                  brush will not render their stroked portions.
    
           int GetLinePattern()
           int Width()
                  Return constructor-specified brush parameters.
    
           boolean None()
                  Return true if this is an undefined brush.
    
           const int* GetDashPattern()
           int GetDashPatternSize()
           int GetDashOffset()
                  Return values required to characterize the brush in
                  PostScript.  The equivalent PostScript dash pattern
                  is computed from the brush's line pattern.
    
    
    

    PSBRUSH PROTECTED OPERATIONS

           void CalcDashPat(int)
                  Compute the equivalent PostScript dash pattern from
                  the line pattern specified in the constructor.
    
    
    

    PSCOLOR PUBLIC OPERATIONS

           PSColor(
               Color_Intensity, Color_Intensity, Color_Intensity,
               const char* name
           )
                  Create a PSColor, supplying color intensity  infor-
                  mation  and  a  name to associate with the intensi-
                  ties.  The name is used solely to  generate  idraw-
                  compatible PostScript.
    
    
    

    PSFONT PUBLIC OPERATIONS

           PSFont(
                  PS_size
           )
                  Construct a PSFont,  supplying  the  window-system-
                  specified   font   name   and   the   corresponding
                  PostScript font name and its size.
    
           const char* GetName()
           const char* GetPrintFont()
           const char* GetPrintSize()
           const char* GetPrintFontAndSize()
                  Return constructor-supplied parameters.   GetPrint-
                  FontAndSize   returns   the  concatenation  of  the
                  PostScript font name and its  size,  with  a  space
                  interposed for legibility.
    
           int GetLineHt()
                  Return  an integer version of the PostScript font's
                  size (as supplied to the constructor).
    
    
    

    PSPATTERN PUBLIC OPERATIONS

           PSPattern()
           PSPattern(int dither, float graylevel)
           PSPattern(const int* pattern, int)
                  Create an undefined  PSPattern  (the  parameterless
                  constructor),  or  one  having  specific dither and
                  graylevel values, or one that replicates a  pattern
                  defined  by  the  given array.  Structured graphics
                  having an undefined pattern will not  render  their
                  filled portions.
    
           boolean None()
                  Return true if this is an undefined pattern.
    
           float GetGrayLevel()
                  Return the graylevel that the pattern approximates,
                  if one was specified in the constructor.
    
           const int* GetData()
           int GetSize()
                  Return the array that defines the  replicated  pat-
                  tern  and  its size, if the pattern was constructed
                  with one.
    
    
    

    SEE ALSO

           Brush(3I), Color(3I), Font(3I), Pattern(3I), idraw(1I)
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/RasterComp.html0000644000076500007650000000442007374262640020365 0ustar scottscott00000000000000
    
           RasterComp,  RasterView,  PSRaster - raster component sub-
           ject, view, and PostScript external representation
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/rastercomp.h>
    
    
    

    DESCRIPTION

           RasterComp is  a  GraphicComp  that  represents  a  raster
           image.   It uses a RasterRect graphic to store its graphi-
           cal attributes.  RasterView is a GraphicView for  display-
           ing  the  raster image.  PSRaster is a PostScriptView that
           externalizes the subject's information in PostScript form.
    
    
    

    RASTERCOMP PUBLIC OPERATIONS

           RasterComp(RasterRect* = nil, const char* filename = nil)
                  The constructor takes an optional RasterRect struc-
                  tured graphic that defines the  attributes  of  the
                  raster image.  You can also supply an optional file
                  name to associate the component with  a  file  con-
                  taining the (copious) image data.
    
           RasterRect* GetRasterRect()
                  Return  the  RasterRect  graphic  that  defines the
                  raster's attributes.  GetRaster is  simply  a  more
                  specific form of the GetGraphic operation.
    
           const char* GetFileName()
                  Return  the file name specified in the constructor,
                  if any.
    
    
    

    RASTERVIEW PUBLIC OPERATIONS

           RasterView(RasterComp* = nil)
                  Create an RasterView, optionally supplying the sub-
                  ject.
    
           RasterComp* GetRasterComp()
                  Return the subject.
    
    
    

    PSRASTER PUBLIC OPERATIONS

           PSRaster(RasterComp* = nil)
                  Construct  a  PostScript external representation of
                  the given subject, if any.
    
    
    

    SEE ALSO

           GraphicComp(3U),   GraphicView(3U),    PostScriptView(3U),
           RasterRect(3U)
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/RasterRect.html0000644000076500007650000000230407374262640020363 0ustar scottscott00000000000000
    
           RasterRect - structured graphic displaying a raster image
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/rasterrect.h>
    
    
    

    DESCRIPTION

           A  RasterRect  is  a  Graphic that displays a raster image
           defined by a Raster object.  With no  transformation,  the
           raster  will  be  drawn  with its lower-left corner at the
           origin.
    
    
    

    PUBLIC OPERATIONS

           RasterRect(Raster*, Graphic* = nil)
                  Construct a RasterRect, supplying a  Raster  object
                  and  an  optional  graphic  from which to obtain an
                  initial transformation.  The RasterRect  references
                  the given graphic.
    
           Raster* GetOriginal()
                  Return  the  raster that defines the image that the
                  RasterRect displays.
    
    
    

    SEE ALSO

           Graphic(3U), Raster(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/RectComp.html0000644000076500007650000000674207374262640020033 0ustar scottscott00000000000000
    
           RectComp,  RectView, PSRect - rectangle component subject,
           view, and PostScript external representation
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/rect.h>
    
    
    

    DESCRIPTION

           RectComp is a GraphicComp that defines  a  rectangle.   It
           uses an SF_Rect graphic to store its graphical attributes.
           RectView is a GraphicView for  displaying  the  rectangle.
           PSRect is a PostScriptView that externalizes the subject's
           information in PostScript form.
    
    
    

    RECTCOMP PUBLIC OPERATIONS

           RectComp(SF_Rect* = nil)
                  The constructor takes  an  optional  stroked-filled
                  rectangle  that defines the attributes of the rect-
                  angle.
    
           SF_Rect* GetRect()
                  Return the SF_Rect graphic that defines the rectan-
                  gle's  attributes.   GetRect  is simply a more spe-
                  cific form of the GetGraphic operation.
    
    
    

    RECTVIEW PUBLIC OPERATIONS

           RectView(RectComp* = nil)
                  Create an RectView, optionally supplying  the  sub-
                  ject.
    
           virtual void Interpret(Command*)
                  RectView  interprets  AlignToGridCmd  to  align its
                  lower-left to the grid.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  RectView redefines  its  response  to  manipulation
                  with  a  GraphicCompTool.  GraphicCompTool will let
                  the user sweep out a rectangle  that  reflects  the
                  RectComp's  size.   Creation  will be influenced by
                  gravity, if any. RectView also defines  a  response
                  to  the  ReshapeTool, allowing the user to click on
                  one of its corners to reposition it.   The  subject
                  is  actually replaced (via ReplaceCmd) with a Poly-
                  gonComp subject reflecting the repositioned corner.
                  Repositioning will be influenced by gravity.
    
           virtual void GetCorners(Coord*, Coord*)
                  GetCorners  takes  two  arrays of four Coord values
                  and stores into them the coordinates  of  its  cor-
                  Return the subject.
    
    
    

    RECTVIEW PROTECTED OPERATIONS

           virtual void CreateHandles()
                  RectView  redefines  CreateHandles to use a Rubber-
                  Handles object with four handles, one at each  cor-
                  ner of the rectangle.
    
    
    

    PSRECT PUBLIC OPERATIONS

           PSRect(RectComp* = nil)
                  Construct  a  PostScript external representation of
                  the given subject, if any.
    
    
    

    SEE ALSO

           GraphicComp(3U),   GraphicCompTool(3U),   GraphicView(3U),
           Grid(3U),       PolygonComp(3U),       PostScriptView(3U),
           ReshapeTool(3U), align(3U), edit(3U), polygons(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Regexp.html0000644000076500007650000000537707374262640017554 0ustar scottscott00000000000000
    
           Regexp - regular expression searching
    
    
    

    SYNOPSIS

           #include <InterViews/regexp.h>
    
    
    

    DESCRIPTION

           A  Regexp  encapsulates  a  regular expression pattern and
           defines operations for searching and matching the  pattern
           against  a  string.   The syntax of the regular expression
           pattern is the same as that for ed(1).  Information can be
           obtained  about  the  most  recent  match  of  the regular
           expression (and its sub-expressions).
    
    
    

    PUBLIC OPERATIONS

           Regexp(const char* pattern)
           Regexp(const char* pattern, int length)
                  Construct a new Regexp for pattern.
    
           int Match(const char* text, int length, int index)
                  Attempt a match against text (of length length)  at
                  position  index.  The return value is the length of
                  the matching string, or a negative  number  if  the
                  match failed.
    
           int Search(const char* text, int length, int index, int
                  range)
                  Search for a match in the string  text  (of  length
                  length).   Matches  are attempted starting at posi-
                  tions between index and index plus range.  If range
                  is   positive   the  first  match  after  index  is
                  reported.  If range is  negative  the  first  match
                  before  index is reported.  The return value is the
                  index of the starting position of the match,  or  a
                  negative  number if there is no match in the speci-
                  fied range.
    
           int BeginningOfMatch(int subexp)
           int EndOfMatch(int subexp)
                  Return information about the most recent match.  If
                  subexp   is  zero  (the  default),  information  is
                  reported  for  the  complete  regular   expression.
                  Other  values of subexp refer to sub-expressions in
                  the pattern.  For example, if subexp is 2, informa-
                  tion  is  returned for the sub-expression specified
                  by the second pair of \( and \) delimiters  in  the
                  pattern.
    
    
    

    SEE ALSO

           ed(1)
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ReqErr.html0000644000076500007650000000313307374262640017506 0ustar scottscott00000000000000
    
           ReqErr - handle request errors
    
    
    

    SYNOPSIS

           #include <InterViews/reqerr.h>
    
    
    

    DESCRIPTION

           Some  requests to the window server may generate an error.
           For example, if a window is destroyed while  it  is  being
           repositioned  interactively, the request to place the win-
           dow in the new position will fail.  Normally, errors cause
           a  process to terminate.  The ReqErr class is used to han-
           dle errors within an application.  The base class  defines
           the  attributes  associated  with  each error, including a
           message string describing the error,  an  integer  request
           code  that  specifies  the kind of call that generated the
           error, and a id object that was the target of the request.
           When  an  error  occurs,  the  attributes  of  the current
           request handler are assigned and the handler's Error oper-
           ation is called.
    
    
    

    PUBLIC OPERATIONS

           ReqErr* Install()
                  Use  this  error  handler for subsequent errors and
                  return the previous error handler.
    
           virtual void Error()
                  Handle a detected error.  The default handler is  a
                  nop.
    
    
    

    SEE ALSO

           Interactor(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ReshapeTool.html0000644000076500007650000000254007374262640020534 0ustar scottscott00000000000000
    
           ReshapeTool  -  tool  for  reshaping or otherwise altering
           components' structures
    
    
    

    SYNOPSIS

           #include <Unidraw/Tools/reshape.h>
    
    
    

    DESCRIPTION

           ReshapeTool  lets  the  user  perform   component-specific
           structural changes by direct manipulation.
    
    
    

    PUBLIC OPERATIONS

           ReshapeTool(ControlInfo* = nil)
                  Create a new ConnectTool.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  CreateManipulator  detects whether the user clicked
                  on a component.  If not, it returns a nil manipula-
                  tor.   If  a  component  was hit, CreateManipulator
                  clears the editor's selection, selects that  compo-
                  nent, and delegates manipulator creation and inter-
                  pretation to that component.
    
    
    

    SEE ALSO

           Tool(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Resource.html0000644000076500007650000000510107374262640020072 0ustar scottscott00000000000000
    
           Resource - shared object
    
    
    

    SYNOPSIS

           #include <InterViews/resource.h>
    
    
    

    DESCRIPTION

           Resource  is a class that provides a simple form of refer-
           ence counting for shared objects.  Every  resource  has  a
           reference  count that is initially set to zero and must be
           explicitly incremented through a  call  to  Reference.   A
           resource   should  not  be  deleted  like  other  objects;
           instead, the static member function unref should  be  used
           to unreference the object.
    
           When  a  resource  is unreferenced, the reference count is
           decremented unless it is already zero.  If  the  count  is
           zero, the object is destroyed.
    
    
    

    PUBLIC OPERATIONS

           Resource()
                  Create  a  new  resource  object with its reference
                  count set to zero.
    
           void ref()
                  Increment the resource's reference count.
    
           void unref()
                  Decrement the resource's reference count, if it  is
                  positive, and delete this if the count is zero.
    
           static void ref(Resource*)
                  If the resource is not nil, call ref on it.  Other-
                  wise do nothing.
    
           static void unref(Resource*)
                  If the resource is not nil, call unref on it.  Oth-
                  erwise do nothing.
    
           void Reference()
                  This  function is equivalent to ref and is provided
                  solely for  backward  compatibility.   It  will  be
                  removed in a future version.
    
           void Unreference()
                  This  function  is  equivalent to unref and is pro-
                  vided solely for backward compatibility.   It  will
                  be removed in a future version.
    
    
    

    FRIEND OPERATIONS

           void Unref(Resource*)
                  This  function is equivalent to static unref and is
                  provided solely  for  backward  compatibility.   It
    
           This  scheme  relies  on manual referencing, which is more
           efficient, but also more dangerous.
    
           When garbage collection is supported by the  runtime  sys-
           tem, resources will be unnecessary.
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/RotateTool.html0000644000076500007650000000351107374262640020402 0ustar scottscott00000000000000
    
           RotateTool - tool for rotating components
    
    
    

    SYNOPSIS

           #include <Unidraw/Tools/rotate.h>
    
    
    

    DESCRIPTION

           RotateTool  lets  the  user  rotate  components  by direct
           manipulation.
    
    
    

    PUBLIC OPERATIONS

           RotateTool(ControlInfo* = nil)
                  Create a new RotateTool.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  CreateManipulator detects whether the user  clicked
                  on  a  component.   If  not, it clears the editor's
                  selection and returns a nil manipulator.  If a com-
                  ponent was hit, and if the component was not previ-
                  ously selected, then CreateManipulator  clears  the
                  editor's  selection, selects the component the user
                  hit, and delegates manipulator creation and  inter-
                  pretation  to  it.   If  the component was the only
                  selected component, it again delegates  manipulator
                  creation  and  interpretation to the component, but
                  the selection is unaltered.  If the user clicks  on
                  one of many selected components, then CreateManipu-
                  lator will delegate manipulator creation and inter-
                  pretation to the hit component without altering the
                  selection.
    
    
    

    SEE ALSO

           Tool(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/rpcbuf.html0000644000076500007650000001324207374262640017571 0ustar scottscott00000000000000
    
           rpcbuf  -  streambuf specialized for sending and receiving
           RPC requests
    
    
    

    SYNOPSIS

           #include <Dispatch/rpcbuf.h>
    
    
    

    DESCRIPTION

           An rpcbuf is a streambuf specialized in two ways:  to  use
           an IPC connection as a source or sink of characters and to
           send and receive RPC requests.  The  rpcbuf  encloses  RPC
           requests  in  packets  which  begin with a length field so
           that the rpcbuf can buffer requests until  they  are  com-
           plete if the user uses non-blocking I/O.
    
    
    

    CONSTRUCTORS

           rpcbuf(iostreamb* = nil)
                  Construct  an  unopened rpcbuf, giving it a pointer
                  to an iostreamb so that the  rpcbuf  can  read  and
                  write the length field of RPC requests.
    
    
    

    IPC OPERATIONS

           const char* host()
           int port()
           int fd()
           boolean opened()
           boolean nonblocking()
                  Return information about the IPC connection.
    
           enum { anyport = 0 }
           rpcbuf* listen(int port)
                  Create  a  socket, bind the socket to a <localhost,
                  port> address, and prepare to accept incoming  con-
                  nections.   anyport  can be used in place of a spe-
                  cific port number.  Return the rpcbuf's address  if
                  successful, nil otherwise.
    
           rpcbuf* connect(const char* host, int port)
                  Create  a  socket  and  connect it to a peer at the
                  <host, port> address.  Return the rpcbuf's  address
                  if successful, nil otherwise.
    
           rpcbuf* accept(int& fd)
                  Accept  an incoming connection, allocate a new file
                  descriptor for it, and assign the new file descrip-
                  tor  to the parameter.  Return the rpcbuf's address
                  if successful, nil otherwise.  Can be  called  only
                  for rpcbufs that have already called listen.
    
           rpcbuf* attach(int fd)
                  Attach the rpcbuf to a file descriptor.  The rpcbuf
                  will not be allowed to close the file descriptor.
    
                  Enable or disable  non-blocking  I/O  on  the  file
                  descriptor (disabled by default).
    
           rpcbuf* verbose(boolean)
                  Enable  or  disable printing of error messages when
                  anything goes wrong (enabled by default).
    
           rpcbuf* close()
                  Flush  the  get  and  put  areas,  close  the  file
                  descriptor  if  it  was  created by the rpcbuf, and
                  detach the rpcbuf from the file descriptor.
    
    
    

    RPC OPERATIONS

           int start_request()
                  If a current request exists, compute its length and
                  insert  the length into the request's length field.
                  Then start a new  request,  making  sure  to  leave
                  space  for the request's length field.  Return 0 if
                  no problem occurred, EOF otherwise.
    
           int read_request()
                  Return 0 if a complete request is buffered  in  the
                  get  area, EOF otherwise.  The rpcbuf moves the get
                  pointer back to the beginning of the request  after
                  extracting  the  length field and checking that the
                  get area contains that many bytes.
    
    
    

    STREAMBUF OPERATIONS

           virtual int overflow(int c=EOF)
                  If given EOF, terminate the current request.  Flush
                  all  requests  buffered  in the put area except for
                  the last request if it's still  incomplete.   Shift
                  any  still  incomplete  request to the beginning of
                  the put area.  If given a character, append  it  to
                  the request.
    
           virtual int underflow()
                  Flush  the  put  area.   Shift  any still unread or
                  incomplete requests to the  beginning  of  the  get
                  area  and position the get pointer at the beginning
                  of the get area.  Read as much data as available to
                  fill  the  rest  of  the  get area.  Return the get
                  area's  first  character  or  EOF  if   a   problem
                  occurred.
    
           virtual int sync()
                  Discard  any  still  unread  requests  from the get
                  area.  Flush all buffered  requests  from  the  put
                  area.
    
           virtual streampos seekoff(streamoff, ios::seek_dir, int)
                  Allow  the  user  to find the get pointer's current
                  EOF if the user tries to do anything else than find
                  the get pointer's current position.
    
           virtual streambuf* setbuf(char*, int)
                  Reject  any attempt to set the buffer used to store
                  incoming and outgoing requests.  The rpcbuf dynami-
                  cally allocates separate buffers for both areas and
                  automatically resizes the buffers  whenever  neces-
                  sary.
    
    
    

    SEE ALSO

           IOS.INTRO(3C++), rpcstream(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/RpcHdr.html0000644000076500007650000000475407374262640017502 0ustar scottscott00000000000000
    
           RpcHdr - header for remote procedure calls
    
    
    

    SYNOPSIS

           #include <Dispatch/rpchdr.h>
    
    
    

    DESCRIPTION

           An  RpcHdr  enables an RPC request to be sent or received.
           To send an RPC request, you would insert an RpcHdr into an
           rpcstream  followed  by  any  arguments and then flush the
           rpcstream if you wanted the request  to  be  sent  immedi-
           ately.   The  rpcstream  automatically  fills  in each RPC
           request's length field.  To receive an  RPC  request,  you
           would  extract an RpcHdr from an rpcstream and examine the
           ``request()'' member to determine which  additional  argu-
           ments  need  to be extracted as well.  You can examine the
           ``ndata()'' member too if you need to  estimate  how  much
           space to allocate.
    
    
    

    CONSTRUCTORS

           RpcHdr(void* writer, int request)
           RpcHdr(int request)
           RpcHdr()
                  Construct an initialized header for an outgoing RPC
                  request (first two constructors)  or  construct  an
                  uninitialized  header  for  an incoming RPC request
                  (third constructor).   To  initialize  the  header,
                  you'll have to store the request's protocol number.
                  You can also store the address of the writer  send-
                  ing  the  RPC  request if you want to route the RPC
                  request to a specific reader on the peer's side.
    
    
    

    PUBLIC OPERATIONS

           unsigned long reader()
           int request()
           unsigned int ndata()
                  Get   information   about    the    RPC    request.
                  ``reader()''  identifies  the  reader  which should
                  handle the RPC request.   ``request()''  identifies
                  the  action  that should be performed.  ``ndata()''
                  gives  the  number  of  data  bytes  following  the
                  header,  which  may  be  useful  for estimating the
                  amount of space that must be allocated to store  an
                  argument.
    
    
    

    SEE ALSO

           RpcReader(3I), RpcWriter(3I), rpcstream(3I)
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/RpcPeer.html0000644000076500007650000000532407374262640017652 0ustar scottscott00000000000000
    
           RpcPeer - support bi-directional RPC between two services
    
    
    

    SYNOPSIS

           #include <Dispatch/rpcpeer.h>
    
    
    

    DESCRIPTION

           An  RpcPeer  (actually,  an  instance  of a derived class)
           tries to open a connection to  another  RpcPeer.   If  the
           other  RpcPeer is not yet running, the RpcPeer will create
           its own port and wait for the other RpcPeer to open a con-
           nection.   When  either  RpcPeer  opens a connection, each
           RpcPeer will create both a reader and  a  writer  so  each
           RpcPeer  can  send  RPC  requests to its opposite over the
           same connection.
    
    
    

    CONSTRUCTOR

           RpcPeer(const char* lPath, int lPort = 0)
                  Store the arguments for later use since a base con-
                  structor can't call a derived class's virtual func-
                  tion.  The derived class's constructor should  call
                  ``init'', described below.
    
           void init(const char* rPath)
                  Find  the  host  name and port number registered by
                  the other RpcPeer and try to open a  connection  to
                  it.   If  it's not running, create our own port and
                  wait for the other RpcPeer to open a connection.
    
    
    

    PUBLIC OPERATIONS

           void run()
           void quitRunning()
                  Read RPC  requests  continuously  until  ``quitRun-
                  ning()''  terminates  the  loop.   If  you're using
                  InterViews, you don't have to call ``run()''  since
                  the  InterViews  event-reading  code will also read
                  RPC requests.
    
    
    

    PROTECTED OPERATIONS

           virtual  boolean  createReaderAndWriter(const  char*
                  rHost,  int rPort) = 0
           virtual void createReaderAndWriter(int fd) = 0
                  You must define both functions in a  derived  class
                  in  order to start reading and writing RPC requests
                  over  the  connection.   Typically  both  functions
                  would  create  a  writer using the given parameters
                  and then attach a reader to the writer's rpcstream.
    
    
    

    SEE ALSO

           Dispatcher(3I),       RpcReader(3I),      RpcRegistry(3I),
           RpcWriter(3I)
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/RpcReader.html0000644000076500007650000000703507374262640020162 0ustar scottscott00000000000000
    
           RpcReader - read RPC requests from a client
    
    
    

    SYNOPSIS

           #include <Dispatch/rpcreader.h>
    
    
    

    DESCRIPTION

           An  RpcReader  reads  RPC requests from an rpcstream which
           represents a connection to a client.  When it reads an RPC
           request, it uses the request number to look up the address
           of a function in an  array  and  calls  that  function  to
           unmarshall   the   request's  arguments  and  execute  the
           request.
    
           An RpcReader is not instantiable; you have to implement  a
           derived  class  which  initializes the function array with
           addresses of static member  functions  to  unmarshall  RPC
           requests and which defines the action to be performed when
           the client closes  the  connection.   The  function  array
           looks like this:
    
                typedef void (*PF)(RpcReader*, RpcHdr&, rpcstream&);
                PF* _function;
    
           Each function stored in the array should extract any argu-
           ments needed by the RPC request from the  rpcstream,  exe-
           cute  the  RPC  request, and insert any return values into
           the rpcstream so they can be sent back to the client.
    
    
    

    CONSTRUCTORS

           RpcReader(rpcstream* client, int nfcns)
           RpcReader(int fd, int nfcns, boolean binary = true)
                  If given a non-nil rpcstream, prepare to  read  RPC
                  requests  from the client using it.  If given a nil
                  rpcstream, just allocate the  function  array.   If
                  given a file descriptor, create a new rpcstream and
                  prepare to read RPC requests from the client  using
                  it.   ``nfcns'' sets the size of the function array
                  that each constructor allocates.
    
    
    

    PROTECTED OPERATIONS

           virtual int inputReady(int)
                  Read an RPC request (only one request per  call  so
                  the  program can service RPC requests from multiple
                  connections in round robin fashion).  Look  up  the
                  appropriate  function  in  the  reader's or another
                  reader's function array and call it to  handle  the
                  RPC request.  Return the appropriate status to tell
                  the Dispatcher whether  to  detach  the  RpcReader,
                  call  inputReady again, or wait for new data before
                  calling inputReady again.  A derived  class  should
                  not need to redefine this function.
    
                  You  can  redefine  this  function  to change which
                  reader executes an RPC  request  after  it's  read.
                  Ordinarily  the  same  reader  that  reads  an  RPC
                  request also executes it,  but  you  can  hand  the
                  request off to another reader as well.
    
           virtual void connectionClosed(int fd) = 0
                  You  have  to  define this function since it may be
                  your only chance to perform cleanup (such as delet-
                  ing this) when the client closes the connection.
    
    
    

    SEE ALSO

           RpcHdr(3I), RpcService(3I), rpcstream(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/RpcRegistry.html0000644000076500007650000000530607374262640020567 0ustar scottscott00000000000000
    
           RpcRegistry - name space for finding RPC services
    
    
    

    SYNOPSIS

           #include <Dispatch/rpcregistry.h>
    
    
    

    DESCRIPTION

           RpcRegistry provides a name space for finding RPC services
           based on the use of  NFS  filesystems  among  a  group  of
           hosts.  When an RPC service wishes to record its host name
           and port number, it will give the path of a file in  which
           to store the information.  When a client wants to find the
           RPC service's host name and port number, it will give  the
           path  of  a file from which to read the information.  Usu-
           ally the path will be the name of a file  in  the  current
           working directory since different hosts may have different
           absolute pathnames for the same file in a NFS  filesystem.
           The  RPC  service's  name  space  is the name space of the
           host's filesystem and the  file's  contents  provides  the
           information  needed  to  open a connection to the RPC ser-
           vice.
    
    
    

    PUBLIC OPERATIONS

           Each function is a static member function, which  means  a
           program  can  call  it  without  having  to instantiate an
           RpcRegistry object.  Each function returns true if it suc-
           ceeded or false if some error occurred.
    
           boolean record(const char* path, int port)
                  Record  the RPC service's host name and port number
                  in the given file.  If the file already exists, its
                  previous contents will be lost.
    
           boolean erase(const char* path)
                  Remove the file which stores the RPC service's host
                  name and port number so that no more  clients  will
                  be able to contact the RPC service.
    
           boolean find(const char* path, char*& hostname, int& port)
                  Open the file which stores the RPC  service's  host
                  name  and port number.  If the file does not exist,
                  return failure silently.  If the file  does  exist,
                  read  the  RPC service's host name and port address
                  from it.  If ``hostname'' is  nil  upon  entry,  it
                  will contain the address of a dynamically allocated
                  string upon  exit  (which  must  be  freed  by  the
                  caller).
    
    
    

    SEE ALSO

           RpcService(3I)
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/RpcService.html0000644000076500007650000000426307374262640020360 0ustar scottscott00000000000000
    
           RpcService - support RPC between a service and its clients
    
    
    

    SYNOPSIS

           #include <Dispatch/rpcservice.h>
    
    
    

    DESCRIPTION

           An RpcService (actually, an instance of a  derived  class)
           creates  a  port  and  listens  to it for connections from
           clients.  When a client opens a connection, the RpcService
           will  create a reader to handle RPC requests from the con-
           nection.
    
    
    

    CONSTRUCTORS

           RpcService(int port)
           RpcService(const char* path, int port = 0)
                  Start up an RPC service.  If a filename  is  given,
                  record  the  RPC service's hostname and port number
                  in it so  clients  can  contact  the  service.   If
                  ``port'' is zero, the next free port number will be
                  used.
    
    
    

    PUBLIC OPERATIONS

           void run()
           void quitRunning()
                  Read RPC  requests  continuously  until  ``quitRun-
                  ning()''  terminates  the  loop.   If  you're using
                  InterViews, you don't have to call ``run()''  since
                  the  InterViews  event-reading  code will also read
                  RPC requests.
    
    
    

    PROTECTED OPERATIONS

           virtual void createReader(int fd) = 0
                  You must define this function in a derived class in
                  order  to  start  servicing RPC requests from a new
                  client.  Typically all you have to do  is  to  con-
                  struct  a  reader  using the passed file descriptor
                  and make the reader responsible for deleting itself
                  when it notices that the connection has been closed
                  by the client.
    
    
    

    SEE ALSO

           Dispatcher(3I), RpcReader(3I), RpcRegistry(3I)
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/rpcstream.html0000644000076500007650000000415107374262640020307 0ustar scottscott00000000000000
    
           rpcstream - iostreamb specialized to RPC requests
    
    
    

    SYNOPSIS

           #include <Dispatch/rpcstream.h>
    
    
    

    DESCRIPTION

           rpcstream, irpcstream, and orpcstream specialize iostream,
           istream, and ostream, respectively, to RPC requests.  That
           is,  the  associated streambuf will be an rpcbuf.  Conver-
           sions will be formatted (that is, ASCII)  so  datums  will
           need to be separated by space characters.
    
    
    

    CONSTRUCTORS

           rpcstream()
                  Construct an unopened rpcstream.
    
    
    

    PUBLIC OPERATIONS

           void listen(int port)
           void connect(const char* host, int port)
                  Create a connection.  Any failure sets ios::failbit
                  in the error state.
    
           int accept()
                  Accept a pending connection and return the new file
                  descriptor.
    
           void attach(int fd)
                  Attach to a pre-existing connection.
    
           void close()
                  Break  a  connection.   The  error state is cleared
                  except on failure.
    
           void nonblocking(boolean)
           void verbose(boolean)
                  Enable or disable non-blocking I/O and/or  printing
                  of error messages.
    
           rpcbuf* rdbuf()
                  Return  a pointer to the rpcbuf created by the rpc-
                  stream.
    
           boolean incomplete_request()
           void incomplete_request(boolean)
                  Get or set a flag.  Used  by  the  operations  that
                  insert  an  RpcHdr  into an rpcstream or extract an
                  RpcHdr from an rpcstream.
    
    
    

    SEE ALSO

           IOS.INTRO(3C++), iostreamb(3I), rpcbuf(3I)
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/RpcWriter.html0000644000076500007650000000335507374262640020235 0ustar scottscott00000000000000
    
           RpcWriter - write RPC requests to a server
    
    
    

    SYNOPSIS

           #include <Dispatch/rpcwriter.h>
    
    
    

    DESCRIPTION

           An  RpcWriter  (actually,  an  instance of a class derived
           from RpcWriter) writes RPC requests to a server.   Derived
           classes should add member functions that send RPC requests
           corresponding to the RPC service's protocol.
    
    
    

    CONSTRUCTORS

           RpcWriter(const char* path, boolean fatal, boolean binary)
           RpcWriter(const  char*  host,  int  port,  boolean fatal,
                  boolean binary)
           RpcWriter(int fd, boolean fatal, boolean binary)
           RpcWriter(rpcstream* server)
                  Open  a  connection to an RPC service at its regis-
                  tered host name and port number, or give  the  host
                  name and port number needed to open a connection to
                  the RPC service, or give the number of  an  already
                  open  file  descriptor,  or  give the address of an
                  already open rpcstream (connection).  Negotiate the
                  I/O  format (binary or formatted) if opening a con-
                  nection.  Terminate the program if errors should be
                  fatal.
    
    
    

    SEE ALSO

           RpcHdr(3I), RpcRegistry(3I), rpcstream(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Rubband.html0000644000076500007650000003615307374262640017673 0ustar scottscott00000000000000
    
           Rubband - rubberbanding graphical objects
    
    
    

    SYNOPSIS

           #include <InterViews/rubband.h>
           #include <InterViews/rubcurve.h>
           #include <InterViews/rubgroup.h>
           #include <InterViews/rubline.h>
           #include <InterViews/rubrect.h>
           #include <InterViews/rubverts.h>
    
    
    

    DESCRIPTION

           Rubband  is  the base class for a set of classes that pro-
           vide graphical feedback to a user  during  an  interactive
           operation such as sizing a rectangle.  A rubberband varies
           in appearance as its tracking point changes.  A rubberband
           is  not  an interactor itself; interactors use rubberbands
           to provide animated effects.  Because rubberbands are  not
           interactors,  rubberband  constructors  must be passed the
           painter and canvas to use for drawing.
    
    
    

    PUBLIC OPERATIONS

           RubberLine(
               Painter*, Canvas*, Coord fx, fy, mx, my, offx = 0,
                  offy = 0
           )
                  A  rubber  line  stretches  to  follow the tracking
                  point while its other endpoint stays tied down.
    
           RubberAxis(
               Painter*, Canvas*, Coord fx, fy, mx, my, offx = 0,
                  offy = 0
           )
                  A rubber axis stretches either horizontally or ver-
                  tically to follow  the  tracking  point  while  its
                  other endpoint stays tied down.  One endpoint stays
                  fixed while the other moves along either the  hori-
                  zontal or vertical axis, whichever is closer to the
                  tracking point.
    
           SlidingLine(
               Painter*, Canvas*, Coord x0, y0, x1, y1, rfx, rfy,
               Coord offx = 0, offy = 0
           )
                  A sliding line slides around without  changing  its
                  length  or angle as the tracking point moves around
                  a reference point.
    
           RotatingLine(
               Painter*, Canvas*, Coord x0, y0, x1, y1, rfx, rfy,
               Coord offx = 0, offy = 0
           )
                  A rotating line rotates around  (cx, cy)  based  on
                  tracking point.
    
           RubberRect(
               Painter*, Canvas*, Coord fx, fy, mx, my, offx = 0,
                  offy = 0
           )
                  A rubber rectangle stretches to follow the  tacking
                  point while its opposite corner stays tied down.
    
           SlidingRect(
               Painter*, Canvas*, Coord x1, y1, x2, y2, rfx, rfy,
               Coord offx = 0, offy = 0
           )
                  A  sliding rectangle slides around the screen with-
                  out changing its side or orientation as the  track-
                  ing point moves around a reference point.
    
           ScalingRect(
               Painter*, Canvas*, Coord x1, y1, x2, y2, cx, cy,
               Coord offx = 0, offy = 0
           )
                  A  scaling  rectangle scales equally in both dimen-
                  sions about (cx, cy) to keep one edge  intersecting
                  the tracking point.
    
           RotatingRect(
               Painter*, Canvas*, Coord x1, y1, x2, y2, cx, cy, rfx,
                  rfy,
               Coord offx = 0, offy = 0
           )
                  A rotating rectangle rotates about  (cx, cy)  based
                  on  the  radius from (cx, cy) to (rfx, rfy) and the
                  radius from (cx, cy) to the tracking point.
    
           StretchingRect(
               Painter*, Canvas*, Coord x1, y1, x2, y2, Side ts,
               Coord offx = 0, offy = 0
           )
                  A stretching rectangle's tracking side follows  the
                  tracking point while the opposite side stays fixed.
                  The side can be one of LeftSide, RightSide, Bottom-
                  Side, or TopSide.
    
           RubberCircle(
               Painter*, Canvas*, Coord cx, cy, rx, ry, offx = 0,
                  offy = 0
           )
                  A rubber circle's radius varies with the  magnitude
                  of the tracking point's distance from (cx, cy).
    
           RubberEllipse(
               Painter*, Canvas*, Coord cx, cy, rx, ry, offx = 0,
                  A rubber ellipse's horizontal  and  vertical  radii
                  vary  with  the  magnitude  of the tracking point's
                  distance from (cx, cy).
    
           RubberSpline(
               Painter*, Canvas*, Coord x[], y[], int n, pt,
               Coord offx = 0, offy = 0
           )
           RubberClosedSpline(
               Painter*, Canvas*, Coord x[], y[], int n, pt,
               Coord offx = 0, offy = 0
           )
                  A rubber  spline  is  the  section  of  a  B-spline
                  defined  by  n control points that changes shape as
                  the control point indexed  by  pt  is  set  to  the
                  tracking point.
    
           RubberHandles(
               Painter*, Canvas*, Coord x[], y[], int n, pt, size,
               Coord offx = 0, offy = 0
           )
                  A  rubber handles object is a set of filled squares
                  centered about each point in the list.   The  point
                  index by pt follows the tracking point.
    
           SlidingPointList(
               Painter*, Canvas*, Coord x[], y[], int n, pt, Coord
                  rfx, rfy,
               Coord offx = 0, offy = 0
           )
                  A sliding point list slides around the screen with-
                  out changing its appearance as the  tracking  point
                  moves around a reference point.
    
           SlidingLineList(
               Painter*, Canvas*, Coord x[], y[], int n, pt, Coord
                  rfx, rfy,
               Coord offx = 0, offy = 0
           )
                  A  sliding line list slides around the screen with-
                  out changing the appearance of its connected  lines
                  as the tracking point moves around (rfx, rfy).
    
           ScalingLineList(
               Painer*, Canvas*, Coord x[], Coord y[], int n,
               Coord cx, cy, rfx, rfy, offx = 0, offy = 0
           )
                  A  scaling  line  list scales a list of lines about
                  (cx, cy) to  keep  the  line  list's  bounding  box
                  intersecting the tracking point.
    
           RotatingLineList(
               Coord cx, cy, rfx, rfy, offx = 0, offy = 0
           )
                  A  rotating line list rotates a list of lines about
                  (cx, cy) based on the angle between the radius from
                  (cx, cy) to (rfx, rfy) and the radius from (cx, cy)
                  to the tracking point.
    
           GrowingVertices(
               Painter*, Canvas*, Coord x[], y[], int n,
               int pt = -1, int handleSize = -1
           )
           GrowingMultiLine(
               Painter*, Canvas*, Coord x[], y[], int n,
               int pt = -1, int handleSize = -1
           )
           GrowingPolygon(
               Painter*, Canvas*, Coord x[], y[], int n,
               int pt = -1, int handleSize = -1
           )
           GrowingBSpline(
               Painter*, Canvas*, Coord x[], y[], int n,
               int pt = -1, int handleSize = -1
           )
           GrowingClosedBSpline(
               Painter*, Canvas*, Coord x[], y[], int n,
               int pt = -1, int handleSize = -1
           )
           virtual void AddVertex(Coord, Coord)
           virtual void RemoveVertex()
                  GrowingVertices is an abstract rubberband  contain-
                  ing a list of vertices that grows or shrinks dynam-
                  ically.  The pt parameter specifies  the  index  of
                  the  vertex  that will follow the tracking point; a
                  value of -1 specifies a vertex after the  last  one
                  in  the  list.   The handleSize parameter specifies
                  the size of the handle drawn at each vertex (as  in
                  RubberHandles  above); a value of -1 specifies that
                  no handles be drawn.
    
                  The AddVertex operation adds a new  vertex  at  the
                  tracking  point  to the list and makes the next (or
                  last) vertex in the list follow the tracking point.
                  RemoveVertex  removes  the  vertex  at the tracking
                  point and makes the previous (or first) vertex  the
                  new tracking point.  GrowingMultiLine, GrowingPoly-
                  gon, GrowingBSpline, and  GrowingClosedBSpline  are
                  GrowingVertices  subclasses  that draw a multiline,
                  polygon, B-spline,  and  closed  B-spline,  respec-
                  tively.
    
           RubberGroup(Painter*, Canvas*)
           void Append(
               Rubberband* = nil
           )
           void Remove(Rubberband*)
           void RemoveCur()
           void SetCurrent(Rubberband*)
           Rubberband* GetCurrent()
           Rubberband* First()
           Rubberband* Last()
           Rubberband* Next()
           Rubberband* Prev()
           boolean IsEmpty()
           boolean AtEnd()
                  A RubberGroup composes other rubberbands, providing
                  operations for including, excluding, and traversing
                  its children. RubberGroups are useful for combining
                  the behavior of several rubberbands into one, elim-
                  inating  the need to call Track on multiple rubber-
                  bands. The RubberGroup's SetCanvas  and  SetPainter
                  operations set the children's canvas and painter as
                  well as the RubberGroup's, but the children do  not
                  otherwise  inherit  the group's canvas and painter.
                  The Track operation calls Track on each child  with
                  the same parameters.
    
           virtual void Draw()
           void Redraw()
           virtual void Erase()
                  Explicitly  draw, redraw, and erase the rubberband.
                  Multiple calls to Draw without an intervening Erase
                  will  only draw the rubberband once.  Redraw forces
                  the rubberband to be drawn.  Since rubberbands  are
                  drawn in XOR mode, Redraw will erase the rubberband
                  every other time it is called.  These functions are
                  used  only  on  occasion, for example, when part of
                  the screen is erased while a rubberband is visible.
                  The  Track  function  is  normally used to draw the
                  rubberband in response to mouse input.
    
           virtual void Track(Coord x, Coord y)
                  Erase the rubberband and redraw it  using  the  new
                  tracking point.
    
           void GetOriginal(Coord& x1, Coord& y2, Coord& x2, Coord&
                  y2)
           void GetCurrent(Coord& x1, Coord& y2, Coord& x2, Coord&
                  y2)
                  GetOriginal  obtains  the original points specified
                  for the rubberband.  GetCurrent obtains the current
                  points based on the most recent call to Track.  The
                  meaning of the points depends on the kind  of  rub-
                  berband.   For lines, the points are the endpoints;
                  for rectangles, the points  are  opposite  corners;
    
           virtual void SetPainter(Painter*)
           Painter* GetPainter()
                  Explicitly set and get the painter used by the rub-
                  berband.  By default, rubberbands use a copy of the
                  painter passed to their constructor.  The user  can
                  specify  a  particular  painter to use by passing a
                  nil painter to the constructor  and  later  calling
                  SetPainter.   N.B.:  the  rubberband  may alter the
                  painter specified via SetPainter.
    
           virtual void SetCanvas(Canvas*)
           Canvas* GetCanvas()
                  Explicitly set and get the canvas used by the  rub-
                  berband.
    
    
    

    SEE ALSO

           Canvas(3I), Painter(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ScaleTool.html0000644000076500007650000000350007374262640020171 0ustar scottscott00000000000000
    
           ScaleTool - tool for rotating components
    
    
    

    SYNOPSIS

           #include <Unidraw/Tools/scale.h>
    
    
    

    DESCRIPTION

           ScaleTool lets the user rotate components by direct manip-
           ulation.
    
    
    

    PUBLIC OPERATIONS

           ScaleTool(ControlInfo* = nil)
                  Create a new ScaleTool.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  CreateManipulator detects whether the user  clicked
                  on  a  component.   If  not, it clears the editor's
                  selection and returns a nil manipulator.  If a com-
                  ponent was hit, and if the component was not previ-
                  ously selected, then CreateManipulator  clears  the
                  editor's  selection, selects the component the user
                  hit, and delegates manipulator creation and  inter-
                  pretation  to  it.   If  the component was the only
                  selected component, it again delegates  manipulator
                  creation  and  interpretation to the component, but
                  the selection is unaltered.  If the user clicks  on
                  one of many selected components, then CreateManipu-
                  lator will delegate manipulator creation and inter-
                  pretation to the hit component without altering the
                  selection.
    
    
    

    SEE ALSO

           Tool(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Scene.html0000644000076500007650000001452407374262640017351 0ustar scottscott00000000000000
    
           Scene, MonoScene - composite interactors
    
    
    

    SYNOPSIS

           #include <InterViews/scene.h>
    
    
    

    DESCRIPTION

           Scene  is  the  base  class  for  all interactors that are
           defined in terms of one or more instances of other  inter-
           actors.  MonoScene is a subclass for scenes that contain a
           single instance.  A monoscene's shape is copied  from  its
           component  and  the  component's  canvas is given the same
           size and location as the monoscene's canvas.
    
           When a scene is deleted, it should delete all  its  compo-
           nent interactors.  A monoscene deletes its existing compo-
           nent if a new component is inserted.
    
    
    

    PUBLIC OPERATIONS

           void Insert(Interactor*)
           void Insert(Interactor*, Coord x, Coord y,  Alignment  =
                  Bottom- Left)
           virtual Interactor* Wrap(Interactor*)
           virtual void DoInsert(Interactor*, boolean, Coord& x,
                  Coord&  y, Shape*)
                  Add an interactor to the scene, optionally  aligned
                  with respect to a specific position relative to the
                  lower-left corner of the  scene.   Valid  alignment
                  types are TopLeft, TopCenter, TopRight, CenterLeft,
                  Center, CenterRight, BottomLeft, BottomCenter, Bot-
                  tomRight,  Left,  Right,  Top, Bottom, HorizCenter,
                  and VertCenter.  The scene  uses  the  interactor's
                  desired  shape,  if  it has non-zero width, to size
                  the interactor.  The base scene class always  calls
                  Wrap and DoInsert from Insert; thus subclasses only
                  implement DoInsert (and Wrap if they want  to  wrap
                  additional interactors around the inserted interac-
                  tor) and users only call Insert.  In the case of  a
                  monoscene,  the current interior interactor, if not
                  nil, is deleted and replaced by the given  interac-
                  tor.   If  an  interactor  is inserted into a scene
                  that is already  mapped,  the  interactor  and  its
                  descendants  will  be configured before DoInsert is
                  called.
    
           void Propagate(boolean)
           void Change(Interactor*)
           virtual void DoChange(Interactor*, Shape*)
                  Change notifies a scene that a given interactor has
                  changed  its  desired shape.  If the propagate flag
                  associated with the scene is true, Change will call
                  DoChange  and then Change(this) on the scene's par-
                  ent.  If the propagate flag is false,  Resize  will
                  tion.
    
           void Move(Interactor*, Coord x, Coord y, Alignment = Bot-
                  tomLeft)
           virtual void DoMove(Interactor*, Coord& x, Coord& y)
                  Request that an interactor be moved  to  the  given
                  coordinates  using  the  given  alignment.  As with
                  Insert and Change, users call Move  and  subclasses
                  implement DoMove.
    
           void Remove(Interactor*)
           virtual void DoRemove(Interactor*)
                  Remove  an  interactor  from  a  scene.  Users call
                  Remove and subclasses implement DoRemove.
    
           void Lower(Interactor*)
           virtual void DoLower(Interactor*)
                  Put the interactor's canvas below all others in the
                  scene,  potentially obscuring it.  Users call Lower
                  and subclasses implement DoLower.
    
           void Raise(Interactor*)
           virtual void DoRaise(Interactor*)
                  Put the interactor's canvas above all others in the
                  scene,  making  it fully visible.  Users call Raise
                  and subclasses implement DoRaise.
    
    
    

    PROTECTED OPERATIONS

           Scene()
           MonoScene()
                  Construct a new scene  or  monoscene.   Scenes  and
                  monoscenes  are  abstract  classes;  thus, the con-
                  structors should only be called implicitly by  sub-
                  class constructors.
    
           void  Place(Interactor*,  Coord x1, Coord y1, Coord x2,
                  Coord y2, boolean = true)
                  Assign  an interactor's canvas to be a given region
                  of the scene's canvas.  Unless the  optional  sixth
                  parameter  is false, the interactor will be mapped.
                  If the interactor is  already  assigned  the  given
                  position and size, then this operation will have no
                  effect.  This optimization means that a  scene  can
                  place  all  of its elements in response to a Change
                  and be assured that only those elements  that  have
                  really changed will be redrawn.
    
           void Map(Interactor*, boolean = true)
                  Make  the  interactor visible on the display if and
                  when the scene is  visible.   Unless  the  optional
                  second  parameter  is false, the interactor will be
                  raised to the top of the scene.
                  Make the interactor not be visible on  the  display
                  if and when the scene is visible.
    
           void UserPlace(Interactor*, int w, int h)
                  Let  the  user  interact with the window manager to
                  specify the size and location of  the  interactor's
                  canvas, whose default width and height must also be
                  supplied by the program.
    
    
    

    SEE ALSO

           Canvas(3I), Interactor(3I), Shape(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Scroller.html0000644000076500007650000000427507374262640020103 0ustar scottscott00000000000000
    
           Scroller, HScroller, VScroller - scrolling an interactor
    
    
    

    SYNOPSIS

           #include <InterViews/scroller.h>
    
    
    

    DESCRIPTION

           A  scroller is an interactor that manipulates the perspec-
           tive of another interactor.  It contains a bar whose posi-
           tion  and  size reflect the current origin and size in the
           interactor's perspective.  Clicking and  dragging  in  the
           scroller  modifies  the attached interactor's perspective.
           VScroller is a  class  for  defining  vertical  scrollers,
           HScroller for horizontal scrollers.
    
    
    

    PUBLIC OPERATIONS

           HScroller(Interactor*, int size = 0)
           VScroller(Interactor*, int size = 0)
                  Create  a  scroller  of  a given size (height for a
                  horizontal   scroller,   width   for   a   vertical
                  scroller).   A  zero  size means to use the default
                  size.
    
           virtual void Update()
                  Redisplay the scroller to reflect a change  in  the
                  interactor's perspective.
    
    
    

    X DEFAULTS

           The ``syncScroll'' resource specifies whether the scroller
           should  work  in  real-time  or  not.   When  synchronized
           scrolling is employed the interactor scrolls synchronously
           as the scroller's bar is dragged; otherwise the bar's out-
           line follows the mouse during dragging, and the interactor
           is scrolled only after the user stops  dragging  the  bar.
           Scrollers  will  scroll  synchronously if their syncScroll
           resource is set to ``on'' or ``true.''  The state  of  the
           syncScroll attribute can be toggled temporarily by holding
           down the ``control'' key while  the  scroller  is  manipu-
           lated.
    
    
    

    SEE ALSO

           Interactor(3I), Perspective(3I)
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Selection.html0000644000076500007650000001617407374262640020244 0ustar scottscott00000000000000
    
           Selection  - maintains a list of selected graphical compo-
           nent views
    
    
    

    SYNOPSIS

           #include <Unidraw/selection.h>
    
    
    

    DESCRIPTION

           A Selection manages a set of distinguished graphical  com-
           ponent   views,  usually  those  in  which  the  user  has
           expressed interest by selecting them with a tool  or  com-
           mand.  Each selection object maintains a list of graphical
           component views  and  provides  operations  for  iterating
           through  and manipulating the list.  Components, commands,
           tools, and editors often rely on  one  or  more  selection
           objects to supply the components on which they operate.
    
    
    

    PUBLIC OPERATIONS

           Selection(Selection* = nil)
                  Create  a new selection object, optionally contain-
                  ing references to  the  same  views  as  the  given
                  selection object.
    
           virtual ~Selection()
                  Destroy  a selection instance.  Deleting the selec-
                  tion does not in turn delete the view instances  it
                  maintains.
    
           void Show(Viewer* = nil)
           void Update(Viewer* = nil)
           void Hide(Viewer* = nil)
           void Init(Viewer* = nil)
                  These operations affect how the selection is repre-
                  sented visually in the viewer.  Show instructs  the
                  views to initialize and draw their handles to high-
                  light themselves, thus  indicating  that  they  are
                  selected.  To do so, it calls RedrawHandles on each
                  view.   Update  makes  handles  of  newly-selected,
                  unhighlighted  views  appear by calling DrawHandles
                  on all its views.  Hide unhighlights the  views  by
                  calling  their  EraseHandles  operation.   Finally,
                  Init initializes each view's handles without  draw-
                  ing  them (in case the handles' appearance may have
                  changed) by calling InitHandles on each.
    
           void Clear(Viewer* = nil)
                  Remove all views from the Selection object,  hiding
                  their handles in the process.
    
           void Append(GraphicView*)
           void Prepend(GraphicView*)
           void InsertAfter(Iterator, GraphicView*)
           void InsertBefore(Iterator, GraphicView*)
           void Remove(Iterator&)
                  Operations  for  modifying  the selection's list of
                  views.  Append and Prepend add a GraphicView to the
                  end  and  the  beginning of the list, respectively.
                  InsertAfter and InsertBefore insert  a  GraphicView
                  after  and before the GraphicView pointed to by the
                  iterator,  respectively.   The  Remove   operations
                  remove  a view from the list (without deleting it).
                  You can remove a view instance by referring  to  it
                  explicitly  or  by  specifying  an iterator.  If an
                  iterator is supplied,  the  Remove  operation  will
                  advance it to point to the following view as a side
                  effect.
    
           GraphicView* GetView(Iterator)
           void SetView(GraphicView*, Iterator&)
                  GetView returns  the  view  to  which  an  iterator
                  points.   SetView  initializes an iterator to point
                  to a particular view in the  list;  it  initializes
                  the  iterator  to  point  to  a nil instance if the
                  given GraphicView is not in the selection list.
    
           void First(Iterator&)
           void Last(Iterator&)
           void Next(Iterator&)
           void Prev(Iterator&)
           boolean Done(Iterator)
                  Operations for iterating over the  selection  list.
                  First  and  Last initialize an iterator to point to
                  the beginning and end of  the  list,  respectively.
                  Next  increments  the iterator to point to the fol-
                  lowing view, while Prev decrements the iterator  to
                  point  to the preceding view.  Done returns whether
                  or not the iterator points beyond the first or last
                  view in the list.
    
           boolean IsEmpty()
           boolean Includes(GraphicView*)
           int Number()
                  Operations that return information about the selec-
                  tion object's contents.   IsEmpty  returns  whether
                  the  selection  list  is  empty,  Includes  returns
                  whether the list contains the given view, and  Num-
                  ber returns the number of views in the list.
    
           void Sort(GraphicView*)
                  Sort  the views in the selection list to conform to
                  their order in  the  given  GraphicView's  list  of
                  children.    The  selection  list's  order  usually
                  reflects the order in which the user  selected  the
                  objects,  not  their order in their parent. Sort is
                  useful in operations that modify or depend  on  the
    
           void Exclusive(Selection*)
                  Operations  that change the selection object's con-
                  tents based on another selection's.  Merge adds the
                  views  in  the  given selection to those already in
                  the selection object (the union of the  two  sets),
                  while  Exclusive  adds  those  views not already in
                  this object and removes those common to  both  (the
                  union  minus  the  intersection  of  the two sets).
                  Neither of these operations change the contents  of
                  their argument.
    
           void GetBox(Coord&, Coord&, Coord&, Coord&)
                  Return the bounding box circumscribing the views in
                  the selection list.
    
    
    

    PROTECTED OPERATIONS

           UList* Elem(Iterator)
           GraphicView* View(UList*)
                  Selection stores its views on  a  UList,  which  is
                  accessible  via  the  _ulist protected member.  The
                  Selection's iteration operations  store  the  UList
                  containing  the  current  view  in  their iterator.
                  Elem is a convenience function  for  returning  the
                  UList   to  which  an  iterator  points,  and  View
                  extracts the GraphicView that a UList element  con-
                  tains.
    
    
    

    SEE ALSO

           GraphicView(3U), Iterator(3U), UList(3U), Viewer(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/SelectTool.html0000644000076500007650000000545607374262640020375 0ustar scottscott00000000000000
    
           SelectTool - tool for modifying an editor's current selec-
           tion
    
    
    

    SYNOPSIS

           #include <Unidraw/Tools/select.h>
    
    
    

    DESCRIPTION

           SelectTool lets a user change  the  current  selection  by
           direct manipulation, thus affecting the enclosing editor's
           selection object.  A single click directly on a  component
           view selects that view and unselects all others.  Clicking
           while holding the Shift key down adds the target component
           to  the  selection  if  it  was  not  already selected and
           removes it if it was selected.  The user  can  select  all
           components  within  a  rectangular  area  in the viewer by
           clicking somewhere outside the nearest component and drag-
           ging to specify the rectangular area.  All components com-
           pletely within the area will be selected.
    
    
    

    PUBLIC OPERATIONS

           SelectTool(ControlInfo* = nil)
                  Create a new SelectTool.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  If the user did not click on a component, then Cre-
                  ateManipulator  creates  a DragManip with a Rubber-
                  Rect for dragging out a rectangular  area.   Other-
                  wise,  CreateManipulator clears the editor's selec-
                  tion and selects the hit component.   If  the  user
                  holds the Shift key down in either case, the compo-
                  nents that would have otherwise been selected  will
                  be  unselected, and vice versa.  InterpretManipula-
                  tor  will  only  be  called  if   CreateManipulator
                  returned a non-nil manipulator; in this case Inter-
                  pretManipulator will examine the  DragManipulator's
                  RubberRect  and  select the component views falling
                  completely within it.
    
    
    

    PROTECTED OPERATIONS

           virtual void Localize(Selection*, Viewer*)
                  Localize ensures that the  given  selection  object
                  contains  only  those  views displayed in the given
                  viewer.  CreateManipulator calls this  function  to
                  avoid possibly shift-selecting views from different
                  components.
    
    
    

    SEE ALSO

           Editor(3U),    Rubband(3I),    Selection(3U),    Tool(3U),
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Sensor.html0000644000076500007650000000633007374262640017561 0ustar scottscott00000000000000
    
           Sensor - describe input interest
    
    
    

    SYNOPSIS

           #include <InterViews/sensor.h>
    
    
    

    DESCRIPTION

           A sensor specifies a set of input events to catch.
    
    
    

    PUBLIC OPERATIONS

           Sensor()
                  Create  a  new sensor that initially will not catch
                  any events.
    
           virtual void motion(boolean)
                  Specify the sensor should (parameter  is  true)  or
                  should  not  (parameter  is  false)  catch  pointer
                  motion events.
    
           virtual boolean motion()
                  Return  whether  the  sensor  is  catching  pointer
                  motion events.
    
           virtual void key(boolean)
                  Specify  the  sensor  should (parameter is true) or
                  should not  (parameter  is  false)  catch  keyboard
                  events.
    
           virtual boolean key()
                  Return  whether  the  sensor  is  catching keyboard
                  events.
    
           virtual void button(boolean, PointerButton = Event::any)
                  Specify the sensor should (parameter  is  true)  or
                  should   not  (parameter  is  false)  catch  button
                  events.  The pointer button may specify a  particu-
                  lar   button  or  Event::any  (meaning  all  button
                  events).
    
           virtual boolean button(PointerButton = Event::any)
                  Return  whether  the  sensor  is  catching   button
                  events.   The pointer button may specify a particu-
                  lar button or Event::any (meaning any of  the  but-
                  tons).
    
           virtual boolean caught(Event&)
                  Return  whether  the  sensor  is catching the given
                  event.
    
           void Catch(EventType)
                  Express interest in a  particular  type  of  event.
                  This  function is provided solely for backward com-
                  patibility and will be removed in a future version.
                  Express  interest  in  a  particular type of button
                  event for a specific button.  This function is pro-
                  vided solely for backward compatibility and will be
                  removed in a future version.
    
           void Ignore(EventType)
                  Remove interest in  a  particular  type  of  event.
                  This  function is provided solely for backward com-
                  patibility and will be removed in a future version.
    
           void IgnoreButton(EventType, int)
                  Remove  interest  in  a  particular  type of button
                  event for a specific button.  This function is pro-
                  vided solely for backward compatibility and will be
                  removed in a future version.
    
    
    

    SEE ALSO

           Event(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Shape.html0000644000076500007650000000551107374262640017350 0ustar scottscott00000000000000
    
           Shape - what shape a canvas should have
    
    
    

    SYNOPSIS

           #include <InterViews/shape.h>
    
    
    

    DESCRIPTION

           A shape specifies the desired characteristics of a canvas.
           An interactor should set the fields of its shape  when  it
           is  reconfigured  and  should call Change on its parent if
           any of these fields change.
    
           The dimensions of a shape are  defined  by  a  ``natural''
           size,  a  stretch  amount, and a shrink amount.  The width
           and  height  fields  indicate  the  desired  sizes.    The
           hstretch,  vstretch,  hshrink,  vshrink  fields define how
           flexible these desired sizes are.  For example, an  inter-
           actor  may  have a natural size of 100, but can adequately
           handle any size between 50 and  200.   The  stretchability
           for this case would be 100 and the shrinkability 50.
    
           The  constants  hfil  and  vfil  are  provided to indicate
           ``infinite'' stretching or  shrinking.   They  are  repre-
           sented  as  very large numbers and manipulated exactly the
           same as other stretch and shrink parameters.
    
           The aspect field specifies the desired  aspect  ratio.   A
           value of zero means any aspect is acceptable.
    
           The  hunits  and  vunits  fields  indicate that the canvas
           dimensions should be multiples of some values.
    
    
    

    PUBLIC OPERATIONS

           Shape()
                  Construct a new shape with undefined  natural  size
                  and  infinite  stretchability  and shrinkability in
                  both directions.
    
           boolean Defined()
           boolean Undefined()
                  Test if the shape's natural size is defined or not.
    
           void Rect(int width, int height)
           void Square(int side)
                  Short-hand for setting the dimensions of the shape.
                  Square sets both dimensions to side  and  sets  the
                  aspect ratio to one.
    
           void Rigid(int hshrink, int hstretch, int vshrink, int
                  vstretch)
           void Rigid()
                  Set the stretchability and shrinkability fields  of
                  the  shape.   If  no  arguments  are specified, the
                  Reset the shape's natural size to be undefined.
    
    
    

    SEE ALSO

           Interactor(3I), Scene(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/SlotComp.html0000644000076500007650000001562207374262640020054 0ustar scottscott00000000000000
    
           SlotComp,   SlotView,   HSlotComp,  HSlotView,  VSlotComp,
           VSlotView, SlotGraphic, PSSlot - abstract base  class  and
           subclasses for slot connector subject and view; and struc-
           tured  graphic  and  PostScript  external   representation
           classes for slots
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/slot.h>
    
    
    

    DESCRIPTION

           SlotComp  is a Connector subclass that supports connectiv-
           ity with one degree of freedom.  It serves as an  abstract
           base  class  from which to derive HSlotComp and VSlotComp,
           which support horizontal and vertical  orientations.   The
           slot  component  classes  use  SlotGraphics to store their
           graphical attributes.  SlotView is an abstract subclass of
           ConnectorView   for   displaying   slots.   HSlotView  and
           VSlotView are SlotViews that display slots with the corre-
           sponding    orientations.     Finally,    PSSlot    is   a
           PostScriptView that externalizes the slot subject's infor-
           mation in PostScript form.
    
    
    

    SLOTCOMP PUBLIC OPERATIONS

           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  SlotComp  (un)interprets  a subset of commands that
                  connectors can generally interpret, namely MoveCmd,
                  BrushCmd,  AlignCmd,  MobilityCmd,  DeleteCmd,  and
                  CutCmd.
    
           virtual Mobility GetMobility()
           virtual void SetMobility(Mobility)
                  SlotComp redefines these functions  to  return  and
                  assign  its _mobility protected member.  Slots have
                  fixed mobility initially.
    
           Slot* GetSlot()
                  Return the Slot graphic  that  defines  the  line's
                  attributes.  GetSlot is simply a more specific form
                  of the GetGraphic operation.
    
    
    

    SLOTCOMP PROTECTED OPERATIONS

           SlotComp(SlotGraphic* = nil)
                  The constructor takes an optional SlotGraphic  that
                  defines the slot's graphical attributes. It is pro-
                  tected to prevent instantiation, since SlotComp  is
                  an abstract class.
    
           void SetOrientation(SlotGraphic*, Orientation)
                  Define  the  orientation  of  the  SlotComp's Slot-
                  Graphic.  Only  SlotComp  can  specify  this  Slot-
                  Graphic  attribute;  HSlotComp  and  VSlotComp sub-
    
    
    

    SLOTVIEW PUBLIC OPERATIONS

           virtual void Interpret(Command*)
                  SlotView  interprets  AlignToGridCmd  to  align its
                  starting point to the grid.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  SlotViews respond only to manipulation by  Graphic-
                  CompTools,  MoveTools,  and  ConnectTools. SlotView
                  inherits its MoveTool response from  ConnectorView.
                  GraphicCompTool  will  let  the  user  sweep  out a
                  crosshaired rectangle that reflects the slot's size
                  and  orientation.   Creation  will be influenced by
                  gravity, if any. SlotView creates a ConnectManip in
                  response  to  the ConnectTool, which will exhibit a
                  gravational attraction to potential target  connec-
                  tors.   SlotView  will produce a ConnectCmd to con-
                  nect the slot to its target. A  slot  connected  in
                  this way will receive floating mobility.
    
           SlotComp* GetSlotComp()
                  Return the subject.
    
    
    

    SLOTVIEW PROTECTED OPERATIONS

           SlotView(SlotComp* = nil)
                  Create  an  SlotView, optionally supplying the sub-
                  ject.  The  constructor  is  protected  to  prevent
                  instantiation.
    
           SlotGraphic* GetSlot()
                  Return  the  SlotGraphic  that  defines  the slot's
                  attributes.  GetSlot is simply a more specific form
                  of the GetGraphic operation.
    
           virtual SlotComp* NewSubject(SlotGraphic*)
                  A  helper  function that creates a SlotComp subject
                  with the given slot graphic. This function produces
                  the   proper  subject  when  the  GraphicCompTool's
                  manipulator   is   interpreted.    HSlotView    and
                  VSlotView  redefine  this  operation  to return the
                  corresponding SlotComp subclasses, thus eliminating
                  the need to reimplement InterpretManipulator.
    
           Manipulator* CreateGraphicCompManip(
               Viewer*, Event&, Transformer*, Tool*
           )
    
           Manipulator* CreateConnectManip(
           )
    
           Command* InterpretGraphicCompManip(Manipulator*)
           Command* InterpretConnectManip(Manipulator*)
                  Helper  functions  used  by  CreateManipulator  and
                  InterpretManipulator to create  and  interpret  the
                  manipulators  associated  with  GraphicCompTool and
                  ConnectTool.
    
    
    

    SLOTGRAPHIC PUBLIC OPERATIONS

           SlotGraphic(Coord, Coord, Coord, Graphic* = nil)
                  Create  a  SlotGraphic,  specifying  the   starting
                  point,  length, and optionally a graphic from which
                  to obtain its default graphics attributes.
    
           void GetOriginal(Coord&, Coord&, Coord&)
                  Return the SlotGraphic's original geometry  parame-
                  ters as specified in the constructor.
    
    
    

    PSSLOT PUBLIC OPERATIONS

           PSSlot(SlotComp* = nil)
                  Construct  a  PostScript external representation of
                  the given subject, if any.
    
    
    

    SEE ALSO

           BrushCmd(3U),  ConnectTool(3U),   Connector(3U),   Connec-
           torView3U),  Event(3I),  Graphic(3U), GraphicCompTool(3U),
           Grid(3U),          MoveTool(3U),           PatternCmd(3U),
           PostScriptView(3U),      Transformer(3I),      Viewer(3U),
           align(3U),  edit(3U),  globals(3U),   manips(3U),   trans-
           forms(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/SplineComp.html0000644000076500007650000001370707374262640020367 0ustar scottscott00000000000000
    
           SplineComp,    SplineView,   PSSpline,   ClosedSplineComp,
           ClosedSplineView, PSClosedSpline - open and closed  spline
           component  subjects, views, and PostScript external repre-
           sentations
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/spline.h>
    
    
    

    DESCRIPTION

           SplineComp and  ClosedSplineComp  are  VerticesComps  that
           define  open and closed splines, respectively.  SplineComp
           uses an SFH_OpenBSpline graphic  to  store  its  graphical
           attributes,  while  ClosedSplineComp  uses an SFH_ClosedB-
           Spline.  SplineView and ClosedSplineView are VerticesViews
           for  displaying  open  and  closed  splines.  PSSpline and
           PSClosedSpline are PSVertices that externalize their  sub-
           ject's information in PostScript form.
    
    
    

    SPLINECOMP PUBLIC OPERATIONS

           SplineComp(SFH_OpenBSpline* = nil)
                  The  constructor  takes  an  optional control point
                  hit-detecting stroked-filled open B-spline  graphic
                  that defines the attributes of the spline.
    
           SFH_OpenBSpline* GetSpline()
                  Return the SFH_OpenBSpline graphic that defines the
                  spline's attributes.  GetSpline is  simply  a  more
                  specific form of the GetGraphic operation.
    
    
    

    SPLINEVIEW PUBLIC OPERATIONS

           SplineView(SplineComp* = nil)
                  Create  a SplineView, optionally supplying the sub-
                  ject.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  SplineView redefines its response  to  manipulation
                  with  a  GraphicCompTool.  The user clicks the left
                  mouse button to specify each vertex and clicks with
                  the  middle  mouse button to specify the final ver-
                  tex.  Vertex positioning  will  be  constrained  by
                  gravity,   if   any.   SplineView  also  defines  a
                  response to the ReshapeTool, allowing the  user  to
                  click  on  one  of its control points to reposition
                  it.   The  subject  is   actually   replaced   (via
                  ReplaceCmd)  with a new SplineComp subject reflect-
                  ing the repositioned control point.   Repositioning
                  will be influenced by gravity.
    
                  Return the subject.
    
    
    

    PSSPLINE PUBLIC OPERATIONS

           PSSpline(SplineComp* = nil)
                  Construct  a  PostScript external representation of
                  the given subject, if any.
    
    
    

    PSSPLINE PROTECTED OPERATIONS

           virtual const char* Name()
                  PSSpline  identifies  itself  as  "BSpl"   in   the
                  PostScript output.
    
    
    

    CLOSEDSPLINECOMP PUBLIC OPERATIONS

           ClosedSplineComp(SFH_ClosedBSpline* = nil)
                  The  constructor  takes  an  optional control point
                  hit-detecting   stroked-filled   closed    B-spline
                  graphic  that  defines the attributes of the closed
                  spline.
    
           SFH_ClosedBSpline* GetClosedSpline()
                  Return the SFH_ClosedBSpline graphic  that  defines
                  the closed spline's attributes.  GetClosedSpline is
                  simply a more specific form of the GetGraphic oper-
                  ation.
    
    
    

    CLOSEDSPLINEVIEW PUBLIC OPERATIONS

           ClosedSplineView(ClosedSplineComp* = nil)
                  Create a ClosedSplineView, optionally supplying the
                  subject.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  ClosedSplineView redefines its response to  manipu-
                  lation with a GraphicCompTool.  The user clicks the
                  left mouse button to specify each vertex and clicks
                  with  the  middle mouse button to specify the final
                  vertex.  Vertex positioning will be constrained  by
                  gravity,  if  any.  ClosedSplineView also defines a
                  response to the ReshapeTool, allowing the  user  to
                  click  on  one  of its control points to reposition
                  it.   The  subject  is   actually   replaced   (via
                  ReplaceCmd)  with  a  new  ClosedSplineComp subject
                  reflecting the repositioned control point.  Reposi-
                  tioning will be influenced by gravity.
    
           ClosedSplineComp* GetClosedSplineComp()
                  Return the subject.
    
    
    

    PSCLOSEDSPLINE PUBLIC OPERATIONS

                  Construct  a  PostScript external representation of
                  the given subject, if any.
    
    
    

    PSCLOSEDSPLINE PROTECTED OPERATIONS

           virtual const char* Name()
                  PSClosedSpline identifies itself as "CBSpl" in  the
                  PostScript output.
    
    
    

    SEE ALSO

           Event(3I),  GraphicComp(3U),  GraphicCompTool(3U),  Graph-
           icView(3U), Grid(3U), PatternCmd(3U),  PostScriptView(3U),
           ReshapeTool(3U),    Rubband(3I),   Transformer(3I),   Ver-
           ticesComp(3U),    Viewer(3U),     align(3U),     edit(3U),
           splines(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/splines.html0000644000076500007650000000743407374262640017773 0ustar scottscott00000000000000
    
           OpenBSpline, S_OpenBSpline, F_OpenBSpline, SF_OpenBSpline,
           SFH_OpenBSpline,      ClosedBSpline,      S_ClosedBSpline,
           F_ClosedBSpline,   SF_ClosedBSpline,  SFH_ClosedBSpline  -
           structured graphics classes for open and closed B-splines
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/splines.h>
    
    
    

    DESCRIPTION

           OpenBSpline and ClosedBSpline are Vertices subclasses that
           serve  as  abstract  base  classes  for open and closed B-
           spline structured graphics.  Predefined subclasses include
           S_OpenBSpline,  F_OpenBSpline,  and  SF_OpenBSpline, which
           draw stroked, filled, and stroked-filled  open  B-splines,
           respectively;  and  S_ClosedBSpline,  F_ClosedBSpline, and
           SF_ClosedBSpline, which draw stroked, filled, and stroked-
           filled  closed  B-splines,  respectively.   The SFH_OpenB-
           Spline and SFH_ClosedBSpline subclasses are  identical  to
           their  SF_-prefixed  counterparts,  except they can detect
           hits on their control points in addition to detecting hits
           on  their  visible  parts.  The stroked subclasses store a
           PSBrush, the filled subclasses store a PSPattern, and  the
           stroked-filled subclasses store one of each.
    
    
    

    OPENBSPLINE PROTECTED OPERATIONS

           OpenBSpline(Coord* x, Coord* y, int count, Graphic* = nil)
                  OpenBSpline's constructor is protected  to  prevent
                  instantiation  of  the  abstract  base  class.  The
                  parameters are passed directly to the Vertices con-
                  structor.
    
    
    

    OPENBSPLINE SUBCLASS PUBLIC OPERATIONS

           S_OpenBSpline(Coord* x, Coord* y, int count, Graphic* =
                  nil)
           F_OpenBSpline(Coord* x, Coord* y, int count, Graphic* =
                  nil)
           SF_OpenBSpline(Coord* x, Coord* y, int count, Graphic* =
                  nil)
           SFH_OpenBSpline(Coord* x, Coord* y, int count, Graphic* =
                  nil)
                  Constructors  for  the various predefined Rect sub-
                  classes.
    
    
    

    CLOSEDBSPLINE PROTECTED OPERATIONS

           ClosedBSpline(Coord* x, Coord* y, int count, Graphic* =
                  nil)
                  ClosedBSpline's constructor is protected to prevent
                  instantiation of  the  abstract  base  class.   The
                  parameters are passed directly to the Vertices con-
                  structor.
    
    
    

    CLOSEDBSPLINE SUBCLASS PUBLIC OPERATIONS

                  nil)
           F_ClosedBSpline(Coord* x, Coord* y, int count, Graphic* =
                  nil)
           SF_ClosedBSpline(Coord* x, Coord* y, int count, Graphic* =
                  nil)
           SFH_ClosedBSpline(Coord* x, Coord* y, int count, Graphic*
                  = nil)
                  Constructors for the various predefined  Rect  sub-
                  classes.
    
    
    

    SEE ALSO

           Graphic(3U), Vertices(3U), geomobjs(3U), pspaint(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/StateVar.html0000644000076500007650000001105207374262640020036 0ustar scottscott00000000000000
    
           StateVar - state variable subject base class
    
    
    

    SYNOPSIS

           #include <Unidraw/statevar.h>
    
    
    

    DESCRIPTION

           StateVar  is  the  base class for state variable subjects.
           State variables provide a standard way  to  represent  and
           access  state  that can be modified by the user or through
           dataflow.  State variable subjects store the state,  while
           state  variable  views  provide  a graphical interface for
           examining and potentially modifying  the  state  in  their
           subject.   The  StateVar  class  defines  the protocol for
           state variable subjects.  It is an abstract class and thus
           cannot be instantiated.
    
    
    

    PUBLIC OPERATIONS

           Connector* GetBinding()
                  Return the connector to which the state variable is
                  bound to support dataflow.  Data flows through con-
                  nected  connectors  with bound state variables: the
                  library automatically assigns one bound state vari-
                  able's  state  to another's.  The direction of this
                  assignment depends on the participating connectors.
                  See  Connector(3U) for details on how to bind state
                  variables to connectors  and  how  to  specify  the
                  direction of flow.
    
           virtual void Attach(StateVarView*)
           virtual void Detach(StateVarView*)
                  Attach  associates  the subject with a view, repre-
                  sented by an instance of a  StateVarView  subclass.
                  Detach  dissociates  a  previously  attached  view.
                  These operations do not ensure that the argument is
                  an appropriate view of the subject.
    
           virtual void Notify()
                  Notify  iterates  through  the  views, calling each
                  one's Update operation to notify the view that  the
                  subject has potentially changed.  Notify is usually
                  called by the subject's state-modifying operations.
    
           virtual StateVar& operator = (StateVar&)
                  The  assignment  operation  should  be redefined to
                  carry out subclass-specific  assignment  semantics.
                  Typically  this  operator calls the parent classes'
                  assignment operator and  then  performs  additional
                  assignments of its own.  This operator is used dur-
                  ing dataflow to transfer state variable values.
    
           virtual StateVar* Copy()
                  Return a copy of the  state  variable.   Subclasses
    
           virtual void Read(istream&)
           virtual void Write(ostream&)
                  Read and write the state variable's contents  to  a
                  stream  to  support  catalog  operations.  Read and
                  write typically call first the corresponding opera-
                  tions  defined by their parent class, and then they
                  read or write  their  class-specific  state.   Note
                  that  you  must ensure that the objects are read in
                  the same order they are written.
    
           virtual ClassId GetClassId()
           virtual boolean IsA(ClassId)
                  GetClassId returns the unique class identifier  for
                  the  StateVar  subclass,  while IsA returns whether
                  the instance is of a class or subclass  correspond-
                  ing  to the given identifier.  IsA typically checks
                  the given identifier against the instance's own (as
                  defined  by  its GetClassId operation) and, failing
                  that, calls its parent classes' IsA operation.  All
                  subclasses  must  redefine  GetClassId  and  IsA to
                  ensure that their identifiers are unique  and  that
                  instances are written and read properly.
    
    
    

    PROTECTED OPERATIONS

           StateVar()
                  The  constructor is protected to prevent instantia-
                  tion.
    
    
    

    SEE ALSO

           Catalog(3U), Connector(3U), Creator(3U), StateVarView(3U),
           classes(3U), istream(3C++), ostream(3C++)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/statevars.html0000644000076500007650000001313407374262640020324 0ustar scottscott00000000000000
    
           BrushVar, ColorVar, CompNameVar, FontVar, GravityVar, Mag-
           nifVar, ModifStatusVar, NameVar, PatternVar - state  vari-
           able subject subclasses
    
    
    

    SYNOPSIS

           #include <Unidraw/statevars.h>
    
    
    

    DESCRIPTION

           Unidraw  predefines  several  state  variable subject sub-
           classes: BrushVar, ColorVar, FontVar, and PatternVar store
           the graphics state information their names suggest; Gravi-
           tyVar records whether  gravity  is  in  effect;  MagnifVar
           records  the  current viewer magnification; ModifStatusVar
           records  whether  state-modifying  operations  have   been
           applied  to  a  component  being  edited; NameVar stores a
           string of interest; and  CompNameVar  is  a  NameVar  that
           stores  a  component  and keeps track of its catalog name.
           These variables represent state that is basic to graphical
           components  and state that is often globally accessible in
           graphics applications.
    
    
    

    PUBLIC OPERATIONS

           BrushVar(PSBrush* = nil)
           virtual PSBrush* BrushVar::GetBrush()
           virtual void BrushVar::SetBrush(PSBrush*)
    
           ColorVar(PSColor* = nil)
           virtual PSColor* ColorVar::GetColor()
           virtual void ColorVar::SetColor(PSColor*)
    
           FontVar(PSFont* = nil)
           virtual PSFont* FontVar::GetFont()
           virtual void FontVar::SetFont(PSFont*)
    
           PatternVar(PSPattern* = nil)
           virtual PSPattern* PatternVar::GetPattern()
           virtual void PatternVar::SetPattern(PSPattern*)
                  Each graphics state state variable subclass defines
                  a  constructor  that takes an initial value for the
                  state it represents and adds operations for assign-
                  ing and retrieving that state.
    
           GravityVar(boolean = false)
           virtual boolean GravityVar::IsActive();
           virtual void GravityVar::Activate(boolean)
                  The  GravityVar  constructor takes an initial value
                  that specifies whether gravity is on or off.  IsAc-
                  tive   returns  the  current  value,  and  Activate
                  changes it to the one supplied.
    
           MagnifVar(float = 1)
           virtual float MagnifVar::GetMagnif()
                  The MagnifVar constructor takes  an  initial  value
                  for  the  magnification  factor, and SetMagnify and
                  GetMagnif assign and return the current value.
    
           ModifStatusVar(Component* = nil, boolean = false)
           virtual boolean ModifStatusVar::GetModifStatus()
           virtual void ModifStatusVar::SetModifStatus(boolean)
           virtual Component* ModifStatusVar::GetComponent()
           virtual void ModifStatusVar::SetComponent(Component*)
                  The ModifStatusVar constructor  takes  a  component
                  instance  and  an  initial value as arguments.  The
                  ModifStatusVar  is   responsible   for   indicating
                  whether the given component is modified.  GetModif-
                  Status, SetModifStatus, GetComponent, and SetCompo-
                  nent get and set these arguments.  The modification
                  status will be set automatically (in  editors  that
                  maintain   a   ModifStatusVar   instance)  when  an
                  reversible operation is performed on the component.
    
           NameVar(const char* = nil)
           virtual const char* NameVar::GetName()
           virtual void NameVar::SetName(const char*)
                  The  NameVar  constructor  takes  a  string  as  an
                  optional  arguement,  while  GetName  and   SetName
                  retrieve and assign the string.
    
           CompNameVar(Component* = nil)
           virtual Component* CompNameVar::GetComponent()
           virtual void CompNameVar::SetComponent(Component*)
           virtual void CompNameVar::UpdateName()
           virtual const char* PartOf()
                  The CompNameVar constructor takes a component as an
                  optional argument.  CompNameVar inherits  the  Get-
                  Name   operation   from  NameVar;  calling  GetName
                  returns the name associated with the component that
                  the  CompNameVar stores.  The GetComponent and Set-
                  Component calls get and set the component.  Update-
                  Name  updates  the  string  that GetName returns to
                  reflect the component's catalog name.  SetComponent
                  calls  this operation automatically when it changes
                  the CompNameVar's component.   PartOf  returns  the
                  name  of the root component in the CompNameVar com-
                  ponent's hierarchy.
    
    
    

    SEE ALSO

           Catalog(3U),  Component(3U),   Editor(3U),   StateVar(3U),
           pspaint(3U)
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/StateVarView.html0000644000076500007650000000446507374262640020703 0ustar scottscott00000000000000
    
           StateVarView - state variable view base class
    
    
    

    SYNOPSIS

           #include <Unidraw/stateview.h>
    
    
    

    DESCRIPTION

           StateVarView  is  the base class for state variable views.
           State variable views  provide  a  graphical  interface  to
           examining  and potentially modifying a state variable sub-
           ject.  The StateVarView base class is  an  abstract  class
           derived  from MonoScene.  Like MonoScene, the StateVarView
           class is not instantiated; instead, subclasses  add  state
           and  behavior appropriate for displaying and editing their
           subject.  Like other  MonoScene  subclasses,  StateVarView
           subclasses  use  an interactor composition to define their
           appearance.
    
    
    

    PUBLIC OPERATIONS

           virtual void Update()
                  Update the state variable view  in  response  to  a
                  change  in  state it depends on (typically the sub-
                  ject's).  This operation  does  not  normally  need
                  redefinition  if  Init  and Stale (described below)
                  are redefined.
    
    
    

    PROTECTED OPERATIONS

           StateVarView(StateVar*)
                  Subclass constructors normally take an instance  of
                  the corresponding subject as an argument.  The base
                  class constructor automatically attaches  the  view
                  to the subject.
    
           virtual void Init()
                  Initialize  the  view  based  on information in the
                  subject.   Subclasses   redefine   this   operation
                  according  to  their  semantics; it does nothing by
                  default.
    
           virtual boolean Stale()
                  Return whether the view is in any way  inconsistent
                  with  its  subject.   This operation always returns
                  true by default; subclasses can redefine it to make
                  a more discerning decision.
    
    
    

    SEE ALSO

           MonoScene(3I), StateVar(3U)
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/stateviews.html0000644000076500007650000000770307374262640020513 0ustar scottscott00000000000000
    
           BrushVarView,   CompNameVarView,   FileNameVarView,  Font-
           VarView,   GravityVarView,   MagnifVarView,   ModifStatus-
           VarView, NameVarView, PatternVarView - various state vari-
           able view subclasses
    
    
    

    SYNOPSIS

           #include <Unidraw/stateviews.h>
    
    
    

    DESCRIPTION

           Unidraw predefines several state variable view  subclasses
           for  the  the  state  variable  subjects it predefines, as
           described below.
    
    
    

    PUBLIC OPERATIONS

           BrushVarView(BrushVar*, ColorVar* = nil)
           FontVarView(FontVar*, Alignment = Center)
           PatternVarView(PatternVar*, ColorVar* = nil)
                  Views of graphics state  state  variable  subjects.
                  BrushVarView  displays  a  short  line drawn in the
                  subject's brush and in a  color  specified  by  the
                  given  ColorVar (black if no ColorVar is supplied).
                  The BrushVarView displays ``None''  if  the  Brush-
                  Var's  brush  is  invisible.   Similarly,  Pattern-
                  VarView displays a filled rectangle  drawn  in  the
                  subject's  pattern  and in a color specified by the
                  given ColorVar (black if no ColorVar is  supplied).
                  The  PatternVarView  displays  ``None'' if the Pat-
                  ternVar's pattern is invisible.   FontVarView  dis-
                  plays  the  name  of its subject's font, aligned as
                  specified in its canvas.
    
           GravityVarView(GravityVar*, Alignment = Center)
                  Displays either ``gravity on'' or a blank,  depend-
                  ing  on  whether the subject indicates that gravity
                  is on or not.
    
           MagnifVarView(MagnifVar*, Alignment = Center)
                  Displays ``mag xx'', where x is the current modifi-
                  cation factor recorded in the subject.
    
           ModifStateVarView(ModifStateVar*, Alignment = Center)
                  Displays  either  an asterisk or a blank, depending
                  on whether the subject records that  its  component
                  is modified.
    
           NameVarView(
               NameVar*, Alignment = Center, const char* sample = nil
           )
    
           FileNameVarView(
               NameVar*, Alignment = Center,
               boolean relative = true, const char* sample = nil
               CompNameVarView*, Alignment = Center,
               boolean relative = true, const char* sample = nil
           )
                  Display the subject's string aligned  as  specified
                  with respect to the canvas.  Each constructor takes
                  an optional sample string that defines  the  view's
                  natural  size.  FileNameVarView provides a special-
                  ized view of a NameVar for displaying  file  names.
                  It adds a relative argument for displaying the file
                  name either as a  relative  or  full  path.   Comp-
                  NameVarView   provides  similar  functionality  for
                  CompNameVar subjects, except it precedes  its  sub-
                  ject's component's name with ``[part of]'' for com-
                  ponents that have a named parent but that  are  not
                  named themselves.
    
    
    

    SEE ALSO

           statevars(3U), StateVarView(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/StencilComp.html0000644000076500007650000000442507374262640020533 0ustar scottscott00000000000000
    
           StencilComp,  StencilView,  PSStencil  -  bitmap component
           subject, view, and PostScript external representation
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/stencilcomp.h>
    
    
    

    DESCRIPTION

           StencilComp is a GraphicComp that represents  a  bitmapped
           image.   It  uses a Stencil graphic to store its graphical
           attributes.  StencilView is a GraphicView  for  displaying
           the  bitmapped  image.  PSStencil is a PostScriptView that
           externalizes the subject's information in PostScript form.
    
    
    

    STENCILCOMP PUBLIC OPERATIONS

           StencilComp(Stencil* = nil, const char* filename = nil)
                  The  constructor  takes  an optional Stencil struc-
                  tured graphic that defines the  attributes  of  the
                  bitmapped  image.   You can also supply an optional
                  file name to associate the component  with  a  file
                  containing the (copious) image data.
    
           Stencil* GetStencil()
                  Return  the  Stencil graphic that defines the sten-
                  cil's attributes.  GetStencil is simply a more spe-
                  cific form of the GetGraphic operation.
    
           const char* GetFileName()
                  Return  the file name specified in the constructor,
                  if any.
    
    
    

    STENCILVIEW PUBLIC OPERATIONS

           StencilView(StencilComp* = nil)
                  Create an  StencilView,  optionally  supplying  the
                  subject.
    
           StencilComp* GetStencilComp()
                  Return the subject.
    
    
    

    PSSTENCIL PUBLIC OPERATIONS

           PSStencil(StencilComp* = nil)
                  Construct  a  PostScript external representation of
                  the given subject, if any.
    
    
    

    SEE ALSO

           GraphicComp(3U),   GraphicView(3U),    PostScriptView(3U),
           Stencil(3U)
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/StrBrowser.html0000644000076500007650000001753007374262640020430 0ustar scottscott00000000000000
    
           StringBrowser - browse and/or select items in a list
    
    
    

    SYNOPSIS

           #include <InterViews/strbrowser.h>
    
    
    

    DESCRIPTION

           StringBrowser  is  an  interactor that provides a browsing
           and selection interface to a  list  of  strings.   String-
           Browsers  are  often  used in dialog boxes to let the user
           browse  and  select  from  an  unbounded  set  of  textual
           entries.  A StringBrowser displays the list of strings and
           provides several  ways  to  scroll  the  list.   The  user
           selects strings with either the mouse or the keyboard; the
           StringBrowser can restrict selection to a single string or
           allow  multiple  selections.  The  application queries the
           StringBrowser for the selected string(s).
    
           A StringBrowser contains no entries initially; strings are
           appended consecutively or in random order, and they can be
           removed in any order.  The strings  are  accessed  with  a
           string index from 0 to n-1, where n is the total number of
           strings.  The StringBrowser maintains a separate  list  of
           strings   that  have  been  selected;  these  strings  are
           accessed with a selection index from 0 to m-1, where m  is
           the total number of selected strings.
    
           Left-clicking  inside  the  StringBrowser  (or calling the
           Browse function) makes it  interpret  subsequent  keyboard
           events   as  scrolling  or  selection  operations  on  the
           entries.   StringBrowser  relinquishes  control  when   it
           detects  a  click outside its canvas or when it receives a
           predetermined escape character.
    
           Middle-clicking inside the  StringBrowser  lets  the  user
           ``grab-scroll''  the  entries.  During grab-scrolling, the
           StringBrowser scrolls the  entries  to  follow  the  mouse
           position,  making it appear as though the user is dragging
           the entries themselves.   Right-clicking  engages  ``rate-
           scrolling,'' a joy-stick-like scrolling interface in which
           the scrolling rate increases as the user drags  the  mouse
           away  from the initial click point.  For example, dragging
           the mouse downwards after the initial  click  scrolls  the
           browser  downwards at an increasing rate; dragging upwards
           thereafter reduces the rate until scrolling stops entirely
           at the initial click point.  Dragging up beyond this point
           makes the browser scroll in the reverse direction.
    
    
    

    KEY BINDINGS

           Below are the key bindings for browsing and selection com-
           mands:
    
           g      Go to the first string.
    
    
           a      Select all.
    
    
           DEL or BS
                  Unselect all.
    
    
           p      Select previous string.
    
    
           n      Select next string.
    
    
           <      Select topmost-visible string.
    
    
           >      Select bottommost-visible string.
    
    
           j      Scroll down one string.
    
    
           k      Scroll up one string.
    
    
           SPACE  Scroll down one screenful.
    
    
           b      Scroll up one screenful.
    
    
           d      Scroll down one-half screenful.
    
    
           u      Scroll up one-half screenful.
    
    
    

    PUBLIC OPERATIONS

           StringBrowser(ButtonState*,  int  rows, int cols, boolean
                  unique- Sel, int highlight, const char* done)
           StringBrowser(const  char* name, ButtonState*, int, int,
                  boolean, int, const char*)
                  Create  a  new  StringBrowser  object.  The String-
                  Browser will use the ButtonState to communicate the
                  result  of  browsing operations.  The StringBrowser
                  bases its shape on the rows  and  cols  parameters:
                  the  height  equals  rows  multiplied  by  the font
                  height, and the width equals cols multiplied by the
                  width  of  an  average  character.   The  uniqueSel
                  parameter specifies whether  or  not  selection  is
                  limited  to one string (the default), and the high-
                  character in the string done will make the  String-
                  Browser stop interpreting keyboard events; the But-
                  tonState is set to this terminating character as  a
                  side-effect.    A   double  left-click  inside  the
                  StringBrowser is equivalent to a single  left-click
                  selection  followed  by  a key press that generates
                  the first character in done.  To be interpreted  as
                  a double-click, two clicks must occur not more than
                  clickDelay milliseconds apart.  The  default  click
                  delay is 250 ms; a different value can be specified
                  via the "clickDelay" user-preference attribute.
    
           void Browse()
                  Initiate browsing.  Subsequent keypresses  will  be
                  interpreted  as  browsing  and  selection  commands
                  according to the key bindings listed above.
    
           void Insert(const char* string, int index)
                  Insert string  at  position  index.   StringBrowser
                  makes a copy of the string for internal use.
    
           void Replace(const char* string, int index)
                  Replace  the  string at position index with string.
                  StringBrowser makes a copy of the string for inter-
                  nal  use.  This operation does nothing if the index
                  supplied is not valid.
    
           void Append(const char* string)
                  Insert a copy of string after the last string.
    
           void Remove(int index)
                  Remove the string at position index, moving  subse-
                  quent strings up to fill the gap.
    
           int Index(const char* string)
                  Return  the  index of the first string that matches
                  string.
    
           char* String(int index)
                  Return the string at the given index.
    
           int Count()
                  Return the total number of strings in  the  String-
                  Browser.
    
           void Clear()
                  Remove all strings from the StringBrowser.
    
           void Select(int index)
           void Unselect(int index)
                  Select  (unselect)  the  string at the given index.
                  The string  will  be  redrawn  in  the  appropriate
                  selecting  a  new string will unselect the original
                  string.
    
           void SelectAll()
           void UnselectAll()
                  Select  (unselect)  all  strings.   SelectAll  does
                  nothing  if  multiple  selections  have been disal-
                  lowed.
    
           int Selection(int n)
                  Return the string index of the nth selected string.
    
           int SelectionIndex(int n)
                  Return the selection index of the nth string.
    
           int Selections()
                  Return the total number of selected strings.
    
           boolean Selected(int n)
                  Return whether the nth string has been selected.
    
    
    

    SEE ALSO

           Interactor(2I), Button(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/StrChooser.html0000644000076500007650000001231407374262640020402 0ustar scottscott00000000000000
    
           StringChooser - dialog box for choosing items in a list
    
    
    

    SYNOPSIS

           #include <InterViews/strchooser.h>
    
    
    

    DESCRIPTION

           StringChooser  is  a  dialog  that  manages keyboard focus
           between a StringBrowser and a StringEditor  to  provide  a
           convenient  interface  to selecting strings.  The user can
           select strings either by selecting  them  in  the  String-
           Browser  or  by typing them in the StringEditor. Like Dia-
           log, StringChooser is an abstract class; programmers  must
           derive from StringChooser to add push buttons, etc. and to
           compose them into custom arrangements.
    
           The user can  focus  keyboard  input  towards  either  the
           StringEditor  or  the  StringBrowser.  To set focus to the
           StringEditor, for example, the  user  left-clicks  in  its
           canvas  to  make  it interpret subsequent keyboard events.
           When either the StringEditor or the  StringBrowser  relin-
           quishes  keyboard  focus, the other acquires it: for exam-
           ple, the user can toggle focus between the two by pressing
           the  tab key repeatedly.  If an entry in the StringBrowser
           is selected when it  loses  focus,  the  (first)  selected
           string will be transferred into the StringEditor.
    
    
    

    PUBLIC OPERATIONS

           StringChooser(ButtonState*,  int rows, int cols, const
                  char* sam- ple, Alignment)
           StringChooser(const char* name, ButtonState*, int rows,
                  int cols, const char* sample, Alignment)
                  Construct a new StringChooser with the given button
                  state and  pop-up  alignment.   These  constructors
                  create  a StringBrowser of the specified size and a
                  StringEditor with the  given  sample  string.   The
                  StringChooser,  StringBrowser, and StringEditor all
                  share the same button state.
    
           void Select(int point)
           void Select(int left, int right)
           void SelectMessage()
                  Select an  insertion  point,  a  subrange,  or  the
                  entire edit buffer in the StringEditor.
    
           void Message(const char* text)
                  Set  the contents of the StringEditor's edit buffer
                  to text.
    
           virtual const char* Choice()
                  Return the chosen string. The string is returned in
                  a static buffer and should be copied before use.
    
           StringChooser(ButtonState*, Alignment = Center)
                  Construct a new StringChooser with the given button
                  state and pop-up alignment without creating String-
                  Browser and StringEditor instances.  This construc-
                  tor should be called in subclasses that  require  a
                  specialized  StringEditor or StringBrowser or both.
    
           void Init(StringEditor*, StringBrowser*)
                  Initialize the StringEditor and StringBrowser  that
                  StringChooser will use.  This function is useful in
                  the constructors of StringChooser  subclasses  that
                  require a specialized StringEditor or StringBrowser
                  or both.
    
           virtual void SwitchFocus()
                  Prepare to shift  keyboard  focus  to  the  String-
                  Browser  if  the StringEditor is focused currently,
                  and vice versa.  Focus actually changes  when  Han-
                  dleFocus is called (see below).
    
           virtual boolean CanFocus(Interactor*)
                  Return  whether  or not the given interactor can be
                  focused.   This  function  is  used  to   determine
                  whether  the  StringChooser  should switch focus in
                  response to a downclick.
    
           virtual void HandleFocus()
                  Transfer event  reading  to  the  StringBrowser  or
                  StringEditor, whichever is the current focus.
    
           virtual void UpdateEditor()
           virtual void UpdateBrowser()
                  Update  StringEditor  and  StringBrowser state when
                  the dialog is accepted or in response to  a  change
                  in focus.  This function guarantees that the Choice
                  operation will return the last choice. By  default,
                  UpdateEditor changes the StringEditor's contents to
                  match the StringBrowser  selection  (if  any),  and
                  UpdateBrowser  clears  out  any selected strings in
                  the StringBrowser.
    
    
    

    SEE ALSO

           Button(3I),  Dialog(3I),   StringBrowser(3I),   StringEdi-
           tor(3I)
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/StretchTool.html0000644000076500007650000000351507374262640020564 0ustar scottscott00000000000000
    
           StretchTool - tool for rotating components
    
    
    

    SYNOPSIS

           #include <Unidraw/Tools/stretch.h>
    
    
    

    DESCRIPTION

           StretchTool  lets  the  user  rotate  components by direct
           manipulation.
    
    
    

    PUBLIC OPERATIONS

           StretchTool(ControlInfo* = nil)
                  Create a new StretchTool.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  CreateManipulator detects whether the user  clicked
                  on  a  component.   If  not, it clears the editor's
                  selection and returns a nil manipulator.  If a com-
                  ponent was hit, and if the component was not previ-
                  ously selected, then CreateManipulator  clears  the
                  editor's  selection, selects the component the user
                  hit, and delegates manipulator creation and  inter-
                  pretation  to  it.   If  the component was the only
                  selected component, it again delegates  manipulator
                  creation  and  interpretation to the component, but
                  the selection is unaltered.  If the user clicks  on
                  one of many selected components, then CreateManipu-
                  lator will delegate manipulator creation and inter-
                  pretation to the hit component without altering the
                  selection.
    
    
    

    SEE ALSO

           Tool(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/StringEditor.html0000644000076500007650000001464107374262640020731 0ustar scottscott00000000000000
    
           StringEditor - single line interactive string editor
    
    
    

    SYNOPSIS

           #include <InterViews/streditor.h>
    
    
    

    DESCRIPTION

           StringEditor  is  an interactor that provides a convenient
           mouse-based interactive editor for text  strings.   It  is
           suitable  for  incorporation into other components such as
           dialog boxes.  Clicking inside the StringEditor (or  call-
           ing the Edit function) initiates an edit.  Subsequent key-
           board events, which need not be inside  the  StringEditor,
           are interpreted as editing operations on the text.  Click-
           ing outside the StringEdit terminates the edit.  StringEd-
           itor  works  with  either  fixed  width  or proportionally
           spaced fonts.
    
    
    

    EDITING MODEL

           Text is selected with the mouse or with the  keyboard.   A
           single click of the left mouse button selects a new inser-
           tion point between characters.  Dragging across  the  text
           selects  a  range of characters.  A set of control charac-
           ters is mapped into common editing operations.  A  charac-
           ter  not specifically associated with commands is inserted
           in place of the the current selection, the  replaced  text
           is lost, and the selection becomes an insertion point fol-
           lowing the inserted character.  Commands currently defined
           include the following.
    
           CharacterLeft (^B)
           CharacterRight (^F)
           BeginningOfText (^A)
           EndOfText (^E)
                  Move  the  selection  one character position to the
                  left or right, or to the beginning or  end  of  the
                  text.
    
           Erase (^H, DEL)
           Delete (^D)
                  Delete  the  text of the current selection.  If the
                  selection is an insertion point, delete the  previ-
                  ous   character   (Erase)  or  the  next  character
                  (Delete) instead.
    
           SelectAll (^U)
           SelectWord (^W)
                  Select the entire text, or extend the selection  to
                  the  left by one whole word.  These commands enable
                  common editing operations to be  performed  without
                  using  the mouse.  For example, to replace the pre-
                  vious word in the text, do a  SelectWord  and  type
                  the new text.
    
           Strings that are too long to fit into the StringEditor can
           be  scrolled  horizontally.   Middle-clicking  inside  the
           StringBrowser  initiates  ``grab-scrolling''.   While  the
           button is held down, the StringEditor scrolls the text  to
           follow  the mouse position, making it appear as though the
           user is dragging the test.  Right-clicking engages ``rate-
           scrolling,'' a joy-stick-like scrolling interface in which
           the scrolling rate increases as the user drags  the  mouse
           away  from the initial click point.  For example, dragging
           the mouse rightwards after the initial click  scrolls  the
           browser  rightwards  at an increasing rate; dragging left-
           wards thereafter reduces the rate  until  scrolling  stops
           entirely at the initial click point.  Dragging left beyond
           this point makes the browser scroll in the reverse  direc-
           tion.
    
    
    

    PUBLIC OPERATIONS

           StringEditor(ButtonState*, const char* sample, const char*
                  done)
                  Create a new StringEditor object.  The  ButtonState
                  will  be  used to communicate the result of editing
                  operations.  An edit of the string will  be  termi-
                  nated if any character in the string done is typed,
                  and the ButtonState will be set to the  terminating
                  character.   The  shape of the new object is calcu-
                  lated from the length of the sample string.
    
           void Message(const char* text)
                  Set the contents of the edit buffer to text.
    
           void Select(int point)
           void Select(int left, int right)
                  Select an insertion point or a subrange of the edit
                  buffer.
    
           void Edit()
           void Edit(const char* text, int left, int right)
                  Initiate  an  edit.  Specifying a string and selec-
                  tion range is short hand for first calling  Message
                  and Select with the corresponding parameters.
    
           const char* Text()
                  Return  the current value of the edit buffer.  Note
                  that this buffer is owned by the StringEditor,  and
                  that its contents are subject to change.  It is the
                  caller's responsibility to copy the string  if  the
                  value will be needed in the long term.
    
           Handle(Event&)
                  Handle  the  event, and read and process subsequent
                  events until an Accept or Cancel  command  is  exe-
                  cuted or a down click occurs outside the StringEdi-
    
           virtual boolean HandleChar(char)
           void InsertText(const char* text, int length)
                  Subclasses of StringEditor can  perform  additional
                  processing  on  the  edit buffer.  For instance, an
                  editor for file names might do  file  name  comple-
                  tion,  or  an  editor for numeric input might check
                  the validity  of  the  string  as  it  is  entered.
                  Derived  classes  should redefine the virtual func-
                  tion HandleChar  as  required.   HandleChar  should
                  return true to indicate that the edit is completed,
                  or false otherwise.   InsertText  can  be  used  to
                  insert  text  into  the  edit buffer, replacing any
                  currently selected text.
    
    
    

    SEE ALSO

           Interactor(3I), Button(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/struct.html0000644000076500007650000000660607374262640017642 0ustar scottscott00000000000000
    
           BackCmd,  FrontCmd,  GroupCmd,  UngroupCmd  - commands for
           modifying components structurally
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/struct.h>
    
    
    

    DESCRIPTION

           BackCmd, FrontCmd, GroupCmd,  and  UngroupCmd  are  purely
           interpretive  commands for altering the structure of their
           editor's component.  All redefine their Execute and Unexe-
           cute  operations  to  let the editor's component interpret
           them as it wishes.
    
    
    

    BACKCMD PUBLIC OPERATIONS

           BackCmd(ControlInfo*)
           BackCmd(Editor* = nil)
                  Construct a new BackCmd.
    
    
    

    FRONTCMD PUBLIC OPERATIONS

           FrontCmd(ControlInfo*)
           FrontCmd(Editor* = nil)
                  Construct a new FrontCmd.
    
    
    

    GROUPCMD PUBLIC OPERATIONS

           GroupCmd(ControlInfo*, GraphicComp* = nil)
           GroupCmd(Editor* = nil, GraphicComp* = nil)
                  Create a new GroupCmd,  optionally  specifying  the
                  component into which components will be grouped.
    
           virtual void Execute()
           virtual void Unexecute()
                  Execute  will  set  the value of the _executed pro-
                  tected member variable to true as a side effect  if
                  anything  was  grouped.   Similarly, Unexecute will
                  set reset the value to false as a side  effect  the
                  operation was undone.
    
           GraphicComp* GetGroup()
           void SetGroup(GraphicComp*)
                  Get or set the component into which components will
                  be grouped.   SetGroup  will  not  delete  the  old
                  value.
    
    
    

    UNGROUPCMD PUBLIC OPERATIONS

           UngroupCmd(ControlInfo*)
           UngroupCmd(Editor* = nil)
                  Construct a new UngroupCmd.
    
           virtual void Execute()
           virtual void Unexecute()
                  Execute  will  set  the value of the _executed pro-
                  tected member variable to true as a side effect  if
                  operation was undone.
    
           Clipboard* GetKids()
           void SetKids(Clipboard*)
                  Explicitly  set  and get a clipboard containing the
                  child components  that  were  ungrouped,  which  is
                  stored  in  the _kids protected member.  UngroupCmd
                  does not initialize this member; it merely provides
                  the  storage  as  a  convenience to components that
                  interpret the command and need a place to store the
                  ungrouped  children  to  support reverse execution.
                  However, UngroupCmd deletes the  clipboard  (if  it
                  exists) in ~UngroupCmd. SetKids will not delete the
                  old value.
    
    
    

    SEE ALSO

           Command(3U), GraphicComp(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Subject.html0000644000076500007650000001002307374262640017701 0ustar scottscott00000000000000
    
           Subject - object with views
    
    
    

    SYNOPSIS

           #include <InterViews/subject.h>
    
    
    

    DESCRIPTION

           A  subject is an object that has one or more views that it
           wishes to notify when it  changes.   The  SubjectIteractor
           class  can  be  used if it is necessary to iterate through
           the views of a subject explicitly.
    
           Because subjects are shared,  Subject  is  a  subclass  of
           Resource.  To allow for the possibility of multiple inher-
           itance, in which case  only  a  single  copy  of  resource
           information  should  be  maintained, Resource is a virtual
           base class.
    
    
    

    PUBLIC OPERATIONS

           enum UpdateHint {
               attaching, detaching, setting, changing
           }
                  This type enumerates possible hints when a  subject
                  is  notifying  a  view  that  it  has changed.  The
                  attaching hint indicates that a view  has  attached
                  to  the subject.  The detaching hint means that the
                  subject is being deleted and the view  should  con-
                  sider itself detached.  The setting hint means that
                  the subject's value has been set,  though  possibly
                  to  the same value as it already has.  The changing
                  hint means that the value is set to something  dif-
                  ferent than it was previously.
    
           virtual void attach(View*)
                  Add a view to the subject's list.
    
           virtual void detach(View*)
                  Remove a view from the subject's list.
    
           virtual void notify(UpdateHint = changing)
                  Notify  all the views of a subject that it has been
                  updated.
    
           virtual boolean viewed_by(View*)
                  Return whether a given view  is  on  the  subject's
                  list of views.
    
           virtual void Attach(Interactor*)
                  This  function  is equivalent to attach and is pro-
                  vided solely for backward compatibility.   It  will
                  be removed in a future version.
    
           virtual void Detach(Interactor*)
                  will be removed in a future version.
    
           virtual void Notify()
                  This function is equivalent to notify(changing) and
                  is provided solely for backward compatibility.   It
                  will be removed in a future version.
    
           boolean IsView(Interactor*)
                  This  function  is  equivalent  to viewed_by and is
                  provided solely  for  backward  compatibility.   It
                  will be removed in a future version.
    
    
    

    SUBJECTITERATOR OPERATIONS

           A  subject  iterator  can  be  used to iterate through the
           views in a subject.
    
           SubjectIterator(Subject*)
                  Create a subject iterator for  the  given  subject.
                  The  iterator  is only valid as long as the subject
                  exists.
    
           virtual void init()
                  Reset the iteration to start at  the  beginning  of
                  the  list.   This  operation  is called by the con-
                  structor.
    
           virtual boolean more()
                  Return whether there are more views in the list.
    
           virtual View* cur()
                  Return the current view.
    
           virtual void remove()
                  Remove the current view from the list.
    
           virtual void next()
                  Move the iteration to the next view in the list.
    
    
    

    SEE ALSO

           View(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/TextBuffer.html0000644000076500007650000002501507374262640020367 0ustar scottscott00000000000000
    
           TextBuffer - operations on unstructured text
    
    
    

    SYNOPSIS

           #include <InterViews/textbuffer.h>
    
    
    

    DESCRIPTION

           TextBuffer  defines  common  editing,  searching, and text
           movement operations on  a  buffer  of  unstructured  text.
           Text  positions  are specified by an index into the buffer
           and logically refer to positions between characters.   For
           example, the position referred to by the index 0 is before
           the first character in the text.  Indices can be  compared
           for  equality  or ordering, but they should not be used to
           directly access the buffer because TextBuffer might  rear-
           range  the  text  to improve the efficiency of some opera-
           tions.
    
    
    

    PUBLIC OPERATIONS

           TextBuffer(char* buffer, int length, int size)
           ~TextBuffer()
                  Create or destroy an instance of  TextBuffer.   All
                  operations  on  the text contained in buffer should
                  be performed  through  TextBuffer  functions.   The
                  text  is  assumed  to  be of length length, and the
                  total available buffer size is size.
    
           int Search(Regexp* regexp, int index, int range, int stop)
           int ForwardSearch(Regexp* regexp, int index)
           int BackwardSearch(Regexp* regexp, int index)
                  Search for a match with the regular expression reg-
                  exp, beginning at position index.  Search  searches
                  the  part of the buffer specified by range and stop
                  and returns the  index  of  the  beginning  of  the
                  matched  text.   Positive  values  of range specify
                  forward searches, and negative values specify back-
                  ward  searches.   In  either case, the matched text
                  will not extend beyond the position given by  stop.
                  ForwardSearch  searches  for  matches from index to
                  the end of the text and returns the  index  of  the
                  end  of  the  match.   BackwardSearch searches from
                  index to the start of  the  text  and  returns  the
                  index  of  the  beginning  of the match.  All three
                  functions return a negative number if there was  no
                  match.
    
           int Match(Regexp* regexp, int index, int stop)
           boolean ForwardMatch(Regexp* regexp, int index)
           boolean BackwardMatch(Regexp* regexp, int index)
                  Attempt  to  match the regular expression regexp at
                  the position index.  Match returns  the  length  of
                  the  matching string, or a negative number if there
                  was no match.  Matching will not succeed beyond the
                  for a match that ends at index.
    
           int Insert(int index, const char* string, int count)
           int Delete(int index, int count)
           int Copy(int index, char* buffer, int count)
                  Edit  the text in the buffer.  Insert inserts count
                  characters from string at the position  index.   It
                  returns  the  actual number of characters inserted,
                  which might be less than count if there is insuffi-
                  cient  space  in  the buffer.  Delete deletes count
                  characters  from  the  buffer.   A  positive  count
                  deletes  characters  after  index,  and  a negative
                  value  deletes  character  before  index.    Delete
                  returns  the  actual  number of characters deleted,
                  which might be less than count if index is near the
                  beginning  or  the  end  of  the text.  Copy copies
                  count characters into  buffer.   A  positive  count
                  copies  characters after index and a negative count
                  copies characters before index.  Count returns  the
                  actual  number  of  characters  copied.   It is the
                  caller's responsibility to ensure that buffer  con-
                  tains sufficient space for the copied text.
    
           int Height()
           int Width()
           int Length()
                  Return  information about the text.  Height returns
                  the number of lines in the text, Width returns  the
                  number  of  characters  in  the  longest  line, and
                  Length returns the total number of characters.
    
           const char* Text()
           const char* Text(int index)
           const char* Text(int index1, int index2)
           char Char (int index)
                  Access the contents of the text.  Char returns  the
                  character  immediately  following index.  The three
                  Text calls return  pointers  to  character  strings
                  representing  the  text.  They make various guaran-
                  tees about the format of the returned string.  With
                  no  parameters,  Text returns a pointer to a string
                  that contains the entire text of the buffer.   With
                  a single parameter the string contains at least the
                  text from index to the end of the line.   With  two
                  parameters,  the  returned string contains at least
                  the text between index1 and index2.  In  any  case,
                  the  returned string should be considered temporary
                  and its contents subject to  change.   To  maximize
                  efficiency,  you  should prefer the more restricted
                  forms of Text.
    
           int LineIndex(int line)
           int LineNumber(int index)
           int LineOffset (int index)
                  Map between text indices and line and offset  posi-
                  tions.   LineIndex  returns the index of the begin-
                  ning of line line.  LineNumber returns  the  number
                  of   the  line  that  contains  index.   LineOffset
                  returns the offset of index from the  beginning  of
                  its containing line.  LinesBetween returns the dif-
                  ference between the numbers of the  lines  contain-
                  ings  index1  and  index2;  a  return value of zero
                  indicates that index1 and index2 are  on  the  same
                  line,  and a positive value indicates that the line
                  containing index2  is  after  the  line  containing
                  index1.  Lines are numbered starting from zero.
    
           int PreviousCharacter(int index)
           int NextCharacter(int index)
                  Return the index immediately following or preceding
                  index.  The returned  value  is  never  before  the
                  beginning or after the end of the text.
    
           boolean IsBeginningOfText(int index)
           int BeginningOfText()
           boolean IsEndOfText(int index)
           int EndOfText()
                  Return  the  index  of  the beginning or end of the
                  text, or query whether index is at the beginning or
                  end of the text.
    
           boolean IsBeginningOfLine(int index)
           int BeginningOfLine(int index)
           int BeginningOfNextLine(int index)
           boolean IsEndOfLine(int index)
           int EndOfLine(int index)
           int EndOfPreviousLine(int index)
                  Return  information about the line structure of the
                  text around  index.   BeginningOfLine  returns  the
                  index  of  the  beginning  of  the  line containing
                  index.  BeginningOfNextLine returns  the  index  of
                  the  beginning  of  the next line that begins after
                  index.  EndOfLine returns the index of the  end  of
                  the   line   containing  index.   EndOfPreviousLine
                  returns the index of the end of the last line  that
                  ends before index.  The beginning of a line is log-
                  ically immediately after a newline  character,  and
                  the end of a line is logically immediately before a
                  newline character.  The beginning and  end  of  the
                  text  are considered to be the beginning and end of
                  the first and last lines, respectively.
    
           boolean IsBeginningOfWord(int index)
           int BeginningOfWord(int index)
           boolean IsEndOfWord(int index)
           int EndOfWord(int index)
           int EndOfPreviousWord(int index)
                  Return information about the word structure of  the
                  text  around  index.   BeginningOfWord  returns the
                  index of  the  beginning  of  the  word  containing
                  index.  BeginningOfNextWord return the index of the
                  beginning of the nest word that begins after index.
                  EndOfWord  returns the index of the end of the word
                  that contains index.  EndOfPreviousWord returns the
                  index  of the end of the last word that ends before
                  index.  A word is defined as a sequence  of  alpha-
                  numeric  characters.   The beginning and end of the
                  text are considered to be the beginning and end  of
                  the first and last words, respectively.
    
    
    

    SEE ALSO

           Regexp(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/TextComp.html0000644000076500007650000001161207374262640020052 0ustar scottscott00000000000000
    
           TextComp,  TextView,  TextGraphic, PSText - multiline text
           component   subject,   view,   structured   graphic,   and
           PostScript external representation
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/text.h>
    
    
    

    DESCRIPTION

           TextComp  is  a GraphicComp that defines a piece of multi-
           line text.  It uses a TextGraphic (a subclass of Label) to
           store its graphical attributes.  TextView is a GraphicView
           for displaying the text.  PSText is a PostScriptView  that
           externalizes the subject's information in PostScript form.
    
    
    

    TEXTCOMP PUBLIC OPERATIONS

           TextComp(TextGraphic* = nil)
                  The constructor takes an optional TextGraphic  that
                  defines the attributes of the text.
    
           virtual void Interpret(Command*)
           virtual void Uninterpret(Command*)
                  TextComp redefines (Un)interpret to ignore BrushCmd
                  and PatternCmd and to (un)interpret FontCmd.
    
           TextGraphic* GetText()
                  Return the TextGraphic that defines the text compo-
                  nent's  attributes.   GetText is simply a more spe-
                  cific form of the GetGraphic operation.
    
    
    

    TEXTVIEW PUBLIC OPERATIONS

           TextView(TextComp* = nil)
                  Create an TextView, optionally supplying  the  sub-
                  ject.
    
           virtual void Interpret(Command*)
                  TextView  interprets  AlignToGridCmd  to  align its
                  lower-left to the grid.
    
           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*, Tool*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  TextView redefines  its  response  to  manipulation
                  with  a  GraphicCompTool.  GraphicCompTool will let
                  the user position and type out the component's text
                  using  TextManip.  Positioning  of the text will be
                  influenced  by  gravity,  if  any.  TextView   also
                  defines  a  response  to the ReshapeTool to let the
                  user  edit  the  text.   The  subject  is  actually
                  replaced  (via ReplaceCmd) with a new TextComp sub-
                  ject positioned at the original TextComp's location
                  Return the subject.
    
    
    

    TEXTVIEW PROTECTED OPERATIONS

           virtual boolean TextChanged()
                  Return  whether the text in the subject is any dif-
                  ferent from that in the view.
    
    
    

    TEXTGRAPHIC PUBLIC OPERATIONS

           TextGraphic(const char*, int h, Graphic* = nil)
           TextGraphic(const char*, Graphic*)
                  Create a TextGraphic, specifying its text, optional
                  inter-line spacing, and optional graphic from which
                  to obtain default graphics attributes.  TextGraphic
                  stores  a  copy  of  the  given string (behavior it
                  inherits from Label).  If inter-line spacing is not
                  specified,  then lines will be separated to reflect
                  the font height reported by PSFont.
    
           void SetLineHeight(int)
           int GetLineHeight()
                  Explicitly set and get the inter-line spacing.
    
           virtual boolean operator == (TextGraphic&)
           virtual boolean operator != (TextGraphic&)
                  Report whether the given graphic contains  or  does
                  not contain an identical copy of the text in this
    
    
    

    PSTEXT PUBLIC OPERATIONS

           PSText(TextComp* = nil)
                  Construct  a  PostScript external representation of
                  the given subject, if any.
    
    
    

    PSTEXT PROTECTED OPERATIONS

           const char* Filter(const char* string, int length)
                  Filter excapes embedded control  or  other  special
                  characters  that  would  cause syntax errors in the
                  PostScript output.
    
    
    

    SEE ALSO

           FontCmd(3U), GraphicComp(3U), GraphicCompTool(3U),  Graph-
           icView(3U),   Grid(3U),   Label(3U),   PostScriptView(3U),
           ReshapeTool(3U),    align(3U),    edit(3U),    manips(3U),
           pspaint(3U)
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/TextDisplay.html0000644000076500007650000002037607374262640020570 0ustar scottscott00000000000000
    
           TextDisplay - unstructured text display
    
    
    

    SYNOPSIS

           #include <InterViews/textdisplay.h>
    
    
    

    DESCRIPTION

           A  TextDisplay  manages  and displays an array of lines of
           text.  Operations are provided to insert and delete lines,
           to insert and delete text within a line, and to scroll the
           display.  TextDisplays are  typically  used  to  implement
           interactors  that  require non-trivial display of unstruc-
           tured text.
    
           The array is addressed by a line number and an index  into
           the  line.   Text  can be inserted or deleted at arbitrary
           positions.  By default, the first character in line number
           zero  is  positioned  with  its top left corner at the top
           left corner of the TextDisplay.  The display is  automati-
           cally  updated following modifications to the text or when
           scrolling.  Each character in the array has an  associated
           text  style.   Operations  are  provided to apply, add, or
           remove font styles to a range of  the  text.   TextDisplay
           can  be  used with both constant-width and proportionally-
           spaced fonts and with arbitrary geometric transformations.
    
    
    

    PUBLIC OPERATIONS

           TextDisplay()
           ~TextDisplay(boolean autosized = false)
                  Create  or  destroy a TextDisplay.  If autosized is
                  true, the TextDisplay will automatically  grow  its
                  size  as text is added.  The default is to keep the
                  size constant.
    
           void LineHeight(Coord lineheight)
           void TabWidth(Coord tabwidth)
                  Lines of text will  be  positioned  with  baselines
                  separated  by  lineheight.   Tab  characters in the
                  text will cause the following character to be posi-
                  tioned  an  integral  multiple of tabwidth from the
                  beginning of the line.
    
           void Resize(Coord xmin, Coord ymin, Coord xmax, Coord
                  ymax)
           void Bounds(Coord& xmin, Coord& ymin, Coord& xmax, Coord&
                  ymax)
                  Specify or query the size  of  the  display.   Only
                  lines of text that fall completely inside the spec-
                  ified region will be displayed.   TextDisplay  will
                  not  draw  on  any  part  of the canvas outside the
                  specified bounds.  Conversely, TextDisplay is  free
                  to draw on any part of the canvas within the speci-
                  fied bounds.
                  Specify the painter and canvas to use  for  drawing
                  operations; the painter specifies the font, colors,
                  and  geometric  transformation.   Draw  should   be
                  called  before  performing  any  operation  on  the
                  TextDisplay  which  produces  output  or   requires
                  graphical information, or when there is a possibil-
                  ity that the painter or canvas  has  changed  since
                  the function was last called.
    
           void Redraw(Coord left, Coord bottom, Coord right, Coord
                  top)
                  Redraw a specified region of the display.
    
           void Scroll(int line, Coord x, Coord y)
                  Scroll the display so that line line is  positioned
                  with its upper-left corner at (x, y).  There are no
                  restrictions on the arguments: it  is  possible  to
                  scroll the display so that no lines are visible.
    
           void InsertLinesAfter(int line, int count)
           void InsertLinesBefore(int line, int count)
           void DeleteLinesAfter(int line, int count)
           void DeleteLinesBefore(int line, int count)
                  Insert or delete whole lines of text.  Line line is
                  not affected by the operation.   Other  lines  will
                  move  up or down to accommodate the changes.  Newly
                  inserted lines are blank.  The specified line  need
                  not refer to an existing line.
    
           void InsertText(int line, int index, const char*, int
                  count)
           void DeleteText(int line, int index, int count)
           void ReplaceText(int line, const char*, int count)
                  Modify the text within line line.   InsertText  and
                  DeleteText  will  cause the following characters on
                  the  line  to  move  to  accommodate  the  changes.
                  ReplaceText  replaces  the entire text of the line.
                  If the specified line is non-existent, a  new  line
                  will be created.
    
           void  Style(int  line1,  int  index1,  int line2, int
                  index2, int style)
           void  AddStyle(int  line1, int index1, int line2, int
                  index2, int style)
           void  RemoveStyle(int  line1,  int index1, int line2, int
                  index2, int style)
                  Modify  the  styling  of  a  range  of  text. Style
                  replaces any existing style;  AddStyle  adds  style
                  style   in   addition   to   any  existing  styles;
                  RemoveStyle removes style style  without  affecting
                  other existing styles.  Styles are specified as any
                  combination  of  the  constants  Plain,   Boldface,
    
           void Caret(int line, int index)
                  Control  the  shape and position of a caret.  Valid
                  caret  styles  are  currently  NoCaret,   BarCaret,
                  UnderscoreCaret and OutlineCaret.  TextDisplay does
                  not automatically adjust the position of the  caret
                  following insertions and deletions.
    
           int LineNumber(Coord y)
           int LineIndex(int line, Coord x)
                  Map x and y display coordinates into line and index
                  text coordinates.  LineNumber returns the number of
                  the line that contains the specified vertical posi-
                  tion y.  LineIndex returns the index into line line
                  that  best  corresponds to the specified horizontal
                  position x.
    
           Coord Width()
           Coord Height()
                  Return the width or the height  of  the  text  cur-
                  rently displayed by the TextDisplay.  Width returns
                  the width of  the  longest  line  in  the  display.
                  Height  returns  the  distance  from the top of the
                  topmost line to the bottom of the bottommost  line.
                  Note  that these dimensions do not necessarily cor-
                  respond to the TextDisplay's bounds as returned  by
                  Bounds.
    
           Coord Base(int line)
           Coord Top(int line)
           Coord Left(int line, int index)
           Coord Right(int line, int index)
                  Map  line  and  index text coordinates into x and y
                  display coordinates.  The return  values  define  a
                  bounding  box  for  the character specified by line
                  and index.
    
    
    

    SEE ALSO

           Painter(2I), Canvas(2I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/TextEditor.html0000644000076500007650000002040307374262640020400 0ustar scottscott00000000000000
    
           TextEditor - basic unstructured text editing
    
    
    

    SYNOPSIS

           #include <InterViews/texteditor.h>
    
    
    

    DESCRIPTION

           A TextEditor is an interactor that provides an interactive
           interface for simple text editing of a TextBuffer.  TextE-
           ditor  uses  an  editing  model  based on a single current
           selection.  Editing operations operate on the text in  the
           selection, alter the position or size of the selection, or
           scroll the display  to  view  other  parts  of  the  text.
           TextEditor   interprets   a  perspective  for  interactive
           scrolling using a scroller.
    
           TextEditor does not provide  a  default  set  of  keyboard
           bindings.   You  can implement the key bindings you desire
           by subclassing and redefining the Handle operation  or  by
           handling keyboard events in an entirely separate class.
    
    
    

    PUBLIC OPERATIONS

           TextEditor(int rows, int cols, int tabsize, int highlight)
           ~TextEditor()
                  Create or destroy an instance of  TextEditor.   The
                  natural  size  of a TextEditor is specified by rows
                  and columns.  The TextEditor will be tall enough to
                  display rows lines of text in the current font, and
                  it will be wide enough to display  columns  charac-
                  ters.   For  proportionally-spaced fonts, the width
                  of the character 'n' is taken to be representative.
                  Tab  characters  in the text are expanded to multi-
                  ples of  tabsize  character  widths.   The  current
                  selection  highlighted  with  the  text style high-
                  light.
    
           void Edit(TextBuffer*, int index = 0)
                  Specify the text buffer to  edit.   A  text  buffer
                  must  be  specified  before  the TextEditor is dis-
                  played.  The optional index parameter specifies the
                  initial selection point.  If necessary, the TextEd-
                  itor is scrolled so that  the  selection  point  is
                  visible.
    
           int Dot()
           int Mark()
                  The  current  selection  is  bounded by two indices
                  into the text buffer.  By convention these  indices
                  are  called  dot  and mark.  Dot is the position at
                  which text will  be  inserted  and  deleted.   Mark
                  locates  the end of the selection that moves as the
                  selection is modified.  When the selection is empty
                  (an insertion point), dot and mark are equal.
    
           void DeleteText(int count)
           void DeleteSelection()
                  Edit  the  text  buffer  at  the current selection.
                  InsertText inserts  count  characters  from  string
                  after  dot.   The  selection  becomes  an insertion
                  point following the newly inserted  text.   Delete-
                  Text  deletes count characters at dot.  If count is
                  positive, the characters following dot are deleted;
                  if  count is negative the characters before dot are
                  deleted.  The selection becomes an insertion  point
                  in  the place of the deleted text.  DeleteSelection
                  deletes the text between dot and mark, changing the
                  selection to an insertion point.
    
           void BackwardCharacter(int count)
           void ForwardCharacter(int count)
           void BackwardLine(int count)
           void ForwardLine(int count)
           void BackwardWord(int count)
           void ForwardWord(int count)
           void BackwardPage(int count)
           void ForwardPage(int count)
                  Move  the  current selection forward or backward by
                  the specified number of the specified  units.   The
                  default movement is one unit.  The selection is not
                  moved before the beginning of after the end of  the
                  text.
    
           void BeginningOfLine()
           void EndOfLine()
           void BeginningOfWord()
           void EndOfWord()
           void BeginningOfSelection()
           void EndOfSelection()
           void BeginningOfText()
           void EndOfText()
                  Move the current selection forwards or backwards to
                  the specified feature of the text.
    
           void ScrollToSelection(boolean always = false)
           void SetScrollAlignment(Alignment)
           Alignment GetScrollAlignment()
                  ScrollToSelction scrolls the display  so  that  dot
                  will  be  visible.  If dot is currently visible and
                  always is false, no scrolling takes place;  if  dot
                  is  not  visible  or always is true, the display is
                  scrolled so that dot will be positioned as close as
                  possible  to  the  position  specified by SetScrol-
                  lAlignment.  GetScrollAlignment returns the current
                  scroll alignment.  The default alignment is Center.
    
           void ScrollToView(Coord x, Coord y)
                  ScrollToView scrolls the display so that  the  text
                  currently  at  the position (x, y) will be visible.
                  If the specified point  is  currently  visible,  no
                  scrolling   takes  place.   ScrollBy  specifies  an
                  amount by which to scroll  the  display.   Positive
                  values scroll the display upwards and to the right.
                  In each case, the final position of the display  is
                  limited so that some text will be visible.
    
           void GrabScroll(Event&)
           void RateScroll(Event&)
                  Initiate  grab  scrolling  or rate scrolling.  Once
                  called, GrabScroll (RateScroll) polls  the  current
                  mouse position as long as the middle (right) button
                  is pressed.  As GrabScroll polls,  it  scrolls  the
                  text to follow the mouse position, making it appear
                  as though the user is  dragging  the  text  itself.
                  Each  time  RateScroll  polls the mouse, it scrolls
                  the text by an amount corresponding to the  differ-
                  ential  between the current and initial mouse posi-
                  tions.  This creates the  illusion  of  a  joystick
                  interface:  the  further away the mouse is from its
                  initial position, the greater the scrolling  incre-
                  ment  and  the  faster  the text appears to scroll;
                  scrolling slows down, stops, and reverses direction
                  as  the  user drags the mouse back towards and past
                  the initial position.
    
           void Select(int dot)
           void Select(int dot, int mark)
           void SelectMore(int mark)
           void SelectAll()
                  Modify the  current  selection  in  terms  of  text
                  indices.   With  a  single  parameter, Select moves
                  both dot and mark to the specified index.  With two
                  parameters, dot and mark can be controlled indepen-
                  dently.  SelectMore leaves dot unchanged and  moves
                  mark.   SelectAll  sets  dot to the end of the text
                  and mark to the beginning.
    
           int Locate(Coord x, Coord y)
                  Return the text index  most  closely  matching  the
                  point (x, y).
    
    
    

    SEE ALSO

           Interactor(2I), TextBuffer(3I)
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Tool.html0000644000076500007650000001420407374262640017224 0ustar scottscott00000000000000
    
           Tool - base class for tool objects
    
    
    

    SYNOPSIS

           #include <Unidraw/Tools/tool.h>
    
    
    

    DESCRIPTION

           Tool  is  an  abstract base class for objects that support
           direct manipulation of components.  Tools employ animation
           and  other  visual effects for immediate feedback to rein-
           force the user's perception that he is dealing  with  real
           objects.   The  user grasps and wields a tool to achieve a
           desired effect.  The effect may involve a change to one or
           more  components' internal state, or it may change the way
           components are viewed, or there may be no  effect  at  all
           (if  for  example the tool is used in an inapropriate con-
           text).
    
           Conceptually, tools do their work within viewers, in which
           graphical  component  views are displayed and manipulated.
           Whenever a viewer receives an input event (such as a mouse
           click  or  key  press),  it  in turn asks the current tool
           (defined by the enclosing  editor  object)  to  produce  a
           manipulator  object. A tool implements its CreateManipula-
           tor operation to  create  and  initialize  an  appropriate
           manipulator,  which  encapsulates  the tool's manipulation
           semantics by defining  the  three  phases  (grasp,  wield,
           effect)  of  the manipulation.  Moreover, a tool can dele-
           gate manipulator creation to one or  more  of  the  Graph-
           icView  objects  in the viewer to allow component-specific
           interaction.   A  tool's  InterpretManipulator   operation
           accesses  and analyzes information in the manipulator that
           characterizes the manipulation and then creates a  command
           that  carries out the desired effect.  If a tool delegated
           manipulator creation to a graphical  view,  then  it  must
           delegate its interpretation to the same view.
    
    
    

    PUBLIC OPERATIONS

           virtual Manipulator* CreateManipulator(
              Viewer*, Event&, Transformer*
           )
    
           virtual void InterpretManipulator(Manipulator*)
                  Operations  that define how the tool reacts when it
                  is used and its  ultimate  effect.   The  tool  can
                  defer  manipulator creation and interpretation to a
                  GraphicView.  This allows the same tool  to  behave
                  differently  depending  on the component it manipu-
                  lates.
    
    
                  CreateManipulator creates  a  manipulator  that  is
                  appropriate  for  the tool.  It receives the viewer
                  sary, and the coordinate transformation  that  maps
                  canvas  coordinates  into  the subject's coordinate
                  space.  InterpretManipulator  is  called  following
                  manipulation and defines how to construct a command
                  that carries out the manipulation's desired effect.
    
           virtual void SetControlInfo(ControlInfo*)
           virtual ControlInfo* GetControlInfo()
                  Tools use a ControlInfo object to store information
                  from which to build a user interface  for  engaging
                  the  tool.   These  operations set and get the Con-
                  trolInfo object.  SetControlInfo  does  not  delete
                  the ControlInfo being replaced.
    
           virtual Component* Copy()
                  Return a copy of the tool.  Subclasses should rede-
                  fine this operation to return an instance of  their
                  type.
    
           virtual void Read(istream&)
           virtual void Write(ostream&)
                  Read  and  write the tool's contents to a stream to
                  support catalog operations.  Read and  write  typi-
                  cally   call  first  the  corresponding  operations
                  defined by their parent class, and then  they  read
                  or write their class-specific state.  Note that you
                  must ensure that the objects are read in  the  same
                  order they are written.
    
           virtual ClassId GetClassId()
           virtual boolean IsA(ClassId)
                  GetClassId  returns the unique class identifier for
                  the Tool subclass, while IsA  returns  whether  the
                  instance is of a class or subclass corresponding to
                  the given identifier.   IsA  typically  checks  the
                  given  identifier  against  the  instance's own (as
                  defined by its GetClassId operation)  and,  failing
                  that, calls its parent classes' IsA operation.  All
                  subclasses must  redefine  GetClassId  and  IsA  to
                  ensure  that  their identifiers are unique and that
                  instances are written and read properly.
    
    
    

    PROTECTED OPERATIONS

           Tool(ControlInfo* = nil)
                  The constructor is protected to  prevent  instatia-
                  tion  of  the abstract base class.  The ControlInfo
                  object is optional, but only  tools  that  have  no
                  visible  manifestion  in  the interface should omit
                  it.
    
           ControlInfo* CopyControlInfo()
                  CopyControlInfo is a convenience function that sub-
                  it  non-nil,  simply  checking  for  a nil argument
                  before calling the corresponding Copy on  the  Con-
                  trolInfo object.
    
    
    

    SEE ALSO

           Catalog(3U),   Command(3U),  ControlInfo(3U),  Editor(3U),
           Event(3I),   GraphicView(3U),   Manipulator(3U),    Trans-
           former(3I),    Viewer(3U),   classes(3U),   istream(3C++),
           ostream(3C++)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/TransferFunct.html0000644000076500007650000000626707374262640021105 0ustar scottscott00000000000000
    
           TransferFunct - transfer function base class
    
    
    

    SYNOPSIS

           #include <Unidraw/transfn.h>
    
    
    

    DESCRIPTION

           A  transfer  function  defines relationships between state
           variables.   A  component  uses  a  transfer  function  to
           enforce  dependencies  between  its state variables during
           dataflow. State variables whose values change as a  result
           of  data  flowing  into  the component can thus affect the
           component's dependent state variables as  defined  by  its
           transfer  function.  A transfer function can define depen-
           dencies between any number of state variables, but a  com-
           ponent can define only one transfer function.
    
    
    

    PUBLIC OPERATIONS

           virtual void Evaluate(Path* = nil)
                  Enforce   the   transfer   function's  dependencies
                  between its state variables,  optionally  depending
                  on  the information in a path.  This operation does
                  nothing by default.
    
           virtual TransferFunct* Copy()
                  Return a copy of the transfer function.  Subclasses
                  redefine  this  operation  to return an instance of
                  their type.
    
           virtual void Read(istream&)
           virtual void Write(ostream&)
                  Read and write the transfer function's contents  to
                  a  stream  to support catalog operations.  Read and
                  write typically call first the corresponding opera-
                  tions  defined by their parent class, and then they
                  read or write their class-specific state.
    
           virtual ClassId GetClassId()
           virtual boolean IsA(ClassId)
                  GetClassId returns the unique class identifier  for
                  the   TransferFunct  subclass,  while  IsA  returns
                  whether the instance is of a class or subclass cor-
                  responding  to the given identifier.  IsA typically
                  checks the given identifier against the  instance's
                  own  (as  defined by its GetClassId operation) and,
                  failing that, calls its parent classes' IsA  opera-
                  tion.   All subclasses must redefine GetClassId and
                  IsA to ensure that their identifiers are unique and
                  that instances are written and read properly.
    
    
    

    PROTECTED OPERATIONS

           TransferFunct()
                  The  constructor is protected to prevent instantia-
                  Return the connector to which a state  variable  is
                  bound.
    
    
    

    SEE ALSO

           Catalog(3U),  Component(3U),  Connector(3U),  Creator(3U),
           Path(3U),   StateVar(3U)    classes(3U),    istream(3C++),
           ostream(3C++)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/transfns.html0000644000076500007650000001156607374262640020155 0ustar scottscott00000000000000
    
           TF_2Port, TF_Direct - transfer function subclasses
    
    
    

    SYNOPSIS

           #include <Unidraw/transfns.h>
    
    
    

    DESCRIPTION

           The TransferFunct abstract base class defines the transfer
           function protocol.  The library predefines two subclasses.
           TF_2Port is a subclass that acts as an abstract base class
           for transfer functions having two sets of state variables,
           ``input''  and  ``output'',  with  output variables always
           dependent on input variables.  TF_Direct is a subclass  of
           TF_2Port that defines a one-to-one assignment relationship
           between an input and an output state variable.
    
    
    

    TF_2PORT PUBLIC OPERATIONS

           void Evaluate(Path* = nil)
                  Evaluate first  carries  out  information  transfer
                  between  dependent  state  variables by calling the
                  Transfer  operation  (described  below).   Then  it
                  iterates  through its output state variables; those
                  that have changed (according to  the  ChangedOutput
                  operation,  described below) get Transmit called on
                  the connector they're bound to.  Subclasses needn't
                  redefine  this operation if they implement Transfer
                  and ChangedOutput appropriately.
    
           virtual StateVar* GetInput(int index)
           virtual StateVar* GetOutput(int index)
           virtual void SetInput(StateVar*, int index)
           virtual void SetOutput(StateVar*, int index)
                  Retrieve and assign the TF_2Port's input and output
                  state variables, identified serially.  These opera-
                  tions do nothing by default; subclasses must  allo-
                  cate the storage they require.
    
           virtual int Inputs()
           virtual int Outputs()
                  Return  the  number of input and output state vari-
                  ables.  These operations return zero by default.
    
    
    

    TF_2PORT PROTECTED OPERATIONS

           TF_2Port()
                  The constructor is protected to prevent  instantia-
                  tion.
    
           virtual void Transfer()
                  Enforce  the subclass-specific dependencies between
                  the TF_2Port's  state  variables.   This  operation
                  does nothing by default.
    
           virtual boolean ChangedOutput(int index = 0)
                  call  to Transfer.  Subclasses redefine this opera-
                  tion according to the semantics of  their  Transfer
                  operation.
    
    
    

    TF_DIRECT PUBLIC OPERATIONS

           TF_Direct(StateVar* input = nil, StateVar* output = nil)
                  Instantiate a new object, optionally specifying the
                  input state variable and its dependent output state
                  variable.
    
           virtual StateVar* GetInput(int index = 0)
           virtual StateVar* GetOutput(int index = 0)
           virtual void SetInput(StateVar*, int index = 0)
           virtual void SetOutput(StateVar*, int index = 0)
                  Retrieve  and assign the TF_Direct's input and out-
                  put state variables.  Specifying an  index  greater
                  than  zero  does nothing, since TF_Direct defines a
                  dependency between one input and one  output  state
                  variable.
    
           virtual int Inputs()
           virtual int Outputs()
                  Return  the  number of input and output state vari-
                  ables.  These operations return zero by default.
    
           virtual int Inputs()
           virtual int Outputs()
                  These operations return 1.
    
    
    

    TF_DIRECT PROTECTED OPERATIONS

           virtual void Transfer()
                  Assign the input state variable to the output state
                  variable, setting a flag indicating that the output
                  value has changed.
    
           virtual boolean ChangedOutput(int index = 0)
                  Return the status of the flag set by Transfer.  The
                  flag is reset as a side-effect of this operation.
    
    
    

    SEE ALSO

           TransferFunct(3U)
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/transforms.html0000644000076500007650000000521007374262640020502 0ustar scottscott00000000000000
    
           MoveCmd,  RotateCmd,  ScaleCmd - coordinate transformation
           commands
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/transforms.h>
    
    
    

    DESCRIPTION

           The Unidraw library predefines three  purely  interpretive
           commands   for   performing   coordinate  transformations:
           MoveCmd defines a translation, RotateCmd defines  a  rota-
           tion, and ScaleCmd defines a two-dimensional scaling.
    
    
    

    MOVECMD PUBLIC OPERATIONS

           MoveCmd(ControlInfo*, float dx = 0, float dy = 0)
           MoveCmd(Editor* = nil, float = 0, float = 0)
                  Construct a new MoveCmd, specifying the translation
                  distances in the horizontal (dx) and vertical  (dy)
                  dimensions.
    
           void GetMovement(float&, float&)
                  Return  the  translation distances specified in the
                  constructor.
    
    
    

    ROTATECMD PUBLIC OPERATIONS

           RotateCmd(ControlInfo*, float = 0)
           RotateCmd(Editor* = nil, float = 0)
                  Construct a new RotateCmd, specifying the  rotation
                  angle in degrees.
    
           float GetRotation()
                  Return  the  rotation  angle  specified in the con-
                  structor.
    
    
    

    SCALECMD PUBLIC OPERATIONS

           ScaleCmd(
               ControlInfo*, float sx = 1, float sy = 1, Alignment =
                  Center
           )
    
           ScaleCmd(Editor* = nil, float = 1, float = 1, Alignment =
                  Center)
                  Construct  a  new  ScaleCmd, specifying the scaling
                  factors in the horizontal (sx)  and  vertical  (sy)
                  dimensions  and  an  alignment suggesting the point
                  about which the component should be scaled.
    
           void GetScaleing(float&, float&)
           Alignment GetAlignment()
                  Return the scaling factors and alignment  specified
                  in the constructor.
    
    
    

    SEE ALSO

    
    
    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Tray.html0000644000076500007650000001367307374262640017237 0ustar scottscott00000000000000
    
           Tray  -  compose interactors into arbitrary or constrained
           layouts
    
    
    

    SYNOPSIS

           #include <InterViews/tray.h>
    
    
    

    DESCRIPTION

           A tray is a scene of interactors that  overlap,  tile,  or
           have other constraints on their alignment relative to each
           other.  One of the interactors in a tray can  serve  as  a
           background for the other interactors.
    
           Constraints  on  the  layout  of  interactors  are made by
           aligning interactors to each other.  Two  interactors  are
           aligned  by specifying which edges coincide.  For example,
           the lower left corner of one interactor may be aligned  to
           the  upper right of another.  TGlue objects can be used to
           introduce transparent space between  aligned  interactors.
           TGlue  has a natural size, shrinkability, and stretchabil-
           ity (though TGlue objects  are  not  interactors).   Trays
           stretch  or shrink the TGlue along with the aligned inter-
           actors to satisfy the alignment constraints.
    
           The tray adopts the shape of the background interactor  if
           there  is  one; otherwise, the tray's shape depends on the
           shapes of its components and potentially on  their  align-
           ments.  By default, a tray without a background takes on a
           width and height equal to the largest of  the  widths  and
           heights  of its components.  However, alignments involving
           the tray can in effect override this default.
    
           For example, if the left and right sides of  a  particular
           component  are aligned to the tray's left and right sides,
           respectively, then the tray's  sides  are  constrained  to
           coincide  with  the component's sides.  Thus the tray will
           adopt the width, horizontal shrinkability, and  horizontal
           stretchability  of  that  component.   Another example: To
           ensure that a tray circumscribes a collection of (mutually
           aligned)  components,  align the outer edges of the compo-
           nents on the periphery of  the  collection  to  the  outer
           edges of the tray, thereby constraining the tray to assume
           the shape of the collection.
    
    
    

    TGLUE PUBLIC OPERATIONS

           TGlue(int w = 0, int h = 0, int hstretch = hfil, int
                  vstretch  = vfil);
                  Define TGlue of a  minimum  size.   The  TGlue  can
                  stretch from the given size but cannot shrink.
    
           TGlue(int,  int,  int  hshrink,  int  hstretch,  int
                  vshrink, int vstretch);
                  Define  general  TGlue  with  a  given natural size
    
    
    

    TRAY PUBLIC OPERATIONS

           Tray(Interactor* background = nil)
                  Create  a new tray, optionally having an interactor
                  as a background.
    
           void Align(Alignment, Interactor*, TGlue* = nil)
           void Align(Alignment, Interactor*, Alignment, Interactor*,
                  TGlue* = nil)
                  Align an interactor to another interactor (the tray
                  itself  by  default), optionally with TGlue between
                  them.  Align operations insert interactors into the
                  tray if they have not been inserted already.
    
           void Align(Alignment, Interactor*, ..., Interactor* = nil)
                  Apply an alignment to a set of  interactors.   This
                  operation is shorthand for aligning the interactors
                  to each other explicitly.  For example, Align(Left,
                  i1,  i2,  i3, i4) aligns the left sides of interac-
                  tors i1 through i4.  Two to seven  interactors  can
                  be aligned at once.
    
           void HBox(Interactor*, ..., Interactor* = nil)
           void VBox(Interactor*, ..., Interactor* = nil)
                  The  HBox  and  VBox operations align the specified
                  interactors such that they tile  left-to-right  and
                  top-to-bottom,   respectively.    These  operations
                  align in one dimension only.  Two to seven interac-
                  tors  can  be aligned at once.  If the first (last)
                  component is the tray or the background interactor,
                  then  the  leftmost  (rightmost)  component will be
                  aligned with the left (right) side of the tray.
    
           void Insert(Interactor*)
                  Insert an  interactor  into  the  tray  without  an
                  alignment.  The interactor will appear in the lower
                  left corner of the tray.
    
           void Change(Interactor*)
                  Notify the tray that the given  interactor's  shape
                  has changed.  The tray will recompute the layout of
                  its component interactors  to  satisfy  any  align-
                  ments.   If the tray does not contain a background,
                  then a change in the shape of one of its components
                  may  in  turn change the tray's shape.  If the tray
                  has a background, then the tray's shape will change
                  only if the shape of the background changes.
    
           void Remove(Interactor*)
                  Take  an interactor out of a tray and eliminate any
                  alignments that have been made to it.
    
           Interactor(3I), Scene(3I), Shape(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/UArray.html0000644000076500007650000000434307374262640017515 0ustar scottscott00000000000000
    
           UArray - dynamic array class
    
    
    

    SYNOPSIS

           #include <Unidraw/uarray.h>
    
    
    

    DESCRIPTION

           UArray implements a dynamic array, that is, one that grows
           as elements are added.  It can also act as a linked  list,
           allowing  insertion  and  removal  of  objects, though the
           overhead for such operations  is  generally  greater  than
           that  for conventional doubly-linked list implementations.
           However, the overhead per  stored  object  is  potentially
           much  less  for  a  UArray, and objects can be accessed by
           index in constant time.
    
    
    

    PUBLIC OPERATIONS

           UArray(int = 16)
                  Create a new UArray instance, optionally  providing
                  an  estimate of its maximum size.  While specifying
                  the size is not  required,  supplying  an  accurate
                  estimate will improve performance.
    
           void*& operator[](int index)
                  Overloading  the brackets operator allows access to
                  the UArray's elements with the standard array nota-
                  tion.   Note  that  type  information  is lost when
                  retrieving objects from the UArray, requiring cast-
                  ing.
    
           void Insert(void*, int index)
           void Remove(int index)
                  Insert  and remove an object at a particular index,
                  moving the succeeding objects up or down one  posi-
                  tion as required.
    
           int Index(void*)
                  Return  the  given  object's  index  in the UArray,
                  returning -1 if the object does not appear  in  the
                  UArray.
    
           int Count()
                  Return  the  number of objects inserted in the UAr-
                  ray.
    
           void Clear()
                  Clear the UArray, reducing the number of object  it
                  contains to zero.
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/UControl.html0000644000076500007650000000740007374262640020054 0ustar scottscott00000000000000
    
           UControl,  UControlInteractor  - base classes for menu and
           button interfaces that work with ControlInfo objects
    
    
    

    SYNOPSIS

           #include <Unidraw/uctrl.h>
    
    
    

    DESCRIPTION

           UControl is an abstract class  that  augments  InterViews'
           Control  base  class  to  deal  with Unidraw's ControlInfo
           objects, which define a keyboard equivalent for  the  con-
           trol.   UControlInteractor  is  an abstract base class for
           interactors that base their appearance on the  information
           in  a  ControlInfo  object.   UControl  subclasses can use
           UControlInteractor subclasses to define their  appearance.
    
           Unidraw-based applications needn't use UControls and UCon-
           trolInteractors to help define  their  look  and  feel  if
           Unidraw's keyboard equivalent mechanism is not needed.
    
    
    

    UCONTROL PUBLIC OPERATIONS

           virtual void SetControlInfo(ControlInfo*)
           ControlInfo* GetControlInfo()
                  Assign  and  retrieve  the  UControl's  ControlInfo
                  object.
    
    
    

    UCONTROL PROTECTED OPERATIONS

           UControl(ControlInfo*)
           UControl(const char*, ControlInfo*)
                  UControl provides protected constructors  that  let
                  subclasses  initialize  the  ControlInfo object and
                  optionally specify their instance name.
    
    
    

    UCONTROLINTERACTOR PUBLIC OPERATIONS

           virtual void SetControlInfo(ControlInfo*)
           ControlInfo* GetControlInfo()
                  Assign and retrieve the  UControlInteractor's  Con-
                  trolInfo object.
    
           virtual void Highlight(boolean)
                  The UControlInteractor's appearance is defined by a
                  Graphic object, which it builds from information in
                  its ControlInfo object.  By default, UControlInter-
                  actor highlights itself  by  drawing  this  graphic
                  with its foreground and background colors reversed.
    
    
    

    UCONTROLINTERACTOR PROTECTED OPERATIONS

           UControlInteractor(ControlInfo*)
           UControlInteractor()
                  UControlInteractor defines two protected  construc-
                  tors.   One  takes the ControlInfo object to use as
                  an argument.  This constructor also initializes the
                  UControlInteractor's  _label  protected  member  by
                  initializes _label to nil.  Both constructors  ini-
                  tialize the UControlInteractor's _picture protected
                  member to point to an instance of a Picture object,
                  which  defines the UControlInteractor's appearance.
    
           virtual void Invert()
                  Invert reverses _picture's colors  without  drawing
                  it.
    
           Graphic* InitLabel(ControlInfo*)
                  Create  a  graphic from the information stored in a
                  ControlInfo object that defines the  UControlInter-
                  actor's   appearance.   This  operation  creates  a
                  GraphicView of the  ControlInfo's  GraphicComp  and
                  returns a copy of the view's graphic.
    
    
    

    SEE ALSO

           Control(3I),    ControlInfo(3U),   Graphic(3U),   Graphic-
           Comp(3U), GraphicView(3U), KeyMap(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/uctrls.html0000644000076500007650000001171307374262640017625 0ustar scottscott00000000000000
    
           CommandControl,  PanelControl,  HPanelControl,  VPanelCon-
           trol,  CommandInteractor,  PanelInteractor  -   predefined
           UControl and UControlInteractor subclasses for common con-
           trols
    
    
    

    SYNOPSIS

           #include <Unidraw/uctrls.h>
    
    
    

    DESCRIPTION

           CommandControl is a UControl subclass that executes a Com-
           mand.   CommandControl instances are most commonly used in
           menus.  CommandInteractor is a UControlInteractor subclass
           that CommandControls create to define their appearance.
    
           PanelControl  is  a  subclass  of UControl that provides a
           radiobutton-like interface to  selecting  from  a  set  of
           mutually-exclusive  choices.   A PanelControl is passed an
           interactor when it is created to  define  its  appearance.
           PanelControls  are  often  used  to create ``palettes'' of
           interactors that engage the current Tool instance.
    
           PanelInteractor  is  a  UControlInteractor  subclass  that
           defines an appearance that is often appropriate for Panel-
           Controls.  HPanelControl and VPanelControl are  subclasses
           of  PanelControl  that  use  PanelInteractor  instances by
           default.
    
    
    

    COMMANDCONTROL PUBLIC OPERATIONS

           CommandControl(ControlInfo*)
           CommandControl(const char*, ControlInfo*)
                  Create a CommandControl,  optionally  supplying  an
                  instance name.  The constructors automatically cre-
                  ate and insert a ControlInteractor  to  define  the
                  CommandControl's appearance.
    
           virtual void Do()
                  If the ControlInfo's owner is a reversible command,
                  then Do will create a copy of the command,  execute
                  it,  and log it (if it remains reversible following
                  execution).  If the owner is an  irreversible  com-
                  mand,  then  Do  will execute it without copying or
                  logging it.
    
    
    

    COMMANDINTERACTOR PUBLIC OPERATIONS

           CommandInteractor(ControlInfo*)
                  Create a  CommandInteractor  with  the  given  Con-
                  trolInfo  object.   The  CommandInteractor displays
                  the ControlInfo's label and  keylabel  side-by-side
                  as would befit a menu entry.
    
    
    

    PANELCONTROL PUBLIC OPERATIONS

           PanelControl(Interactor*, ControlInfo*, ControlState* =
               const char*, Interactor*, ControlInfo*,
               ControlState* = nil
           )
                  Create a PanelControl, supplying an interactor that
                  defines  its  appearance, a ControlInfo object, and
                  optionally an instance  name  and  a  ControlState,
                  which  all  PanelControls in a palette should share
                  to ensure mutual exclusion.
    
           virtual void Do()
                  Do simply calls Down.  Thus when  the  KeyMap  exe-
                  cutes the keyboard equivalent specified in the Con-
                  trolInfo, it has the same effect as clicking on the
                  PanelControl instance.
    
    
    

    PANELCONTROL SUBCLASS PUBLIC OPERATIONS

           HPanelControl(ControlInfo*, ControlState* = nil)
           HPanelControl(const char*, ControlInfo*, ControlState* =
                  nil)
    
           VPanelControl(ControlInfo*, ControlState* = nil)
           VPanelControl(const char*, ControlInfo*, ControlState* =
                  nil)
                  HPanelControls  and VPanelControls simply create an
                  instance of PanelInteractor and pass it to the Pan-
                  elControl  constructor.   HPanelControls  should be
                  used in row-oriented palettes,  and  VPanelControls
                  should be used in column-oriented palettes.
    
    
    

    PANELINTERACTOR PUBLIC OPERATIONS

           PanelInteractor(ControlInfo*, Orientation)
                  Create a PanelInteractor with the given orientation
                  and ControlInfo object.  The  PanelInteractor  will
                  draw  the  ControlInfo's label in the center of its
                  canvas and the keylabel in the lower right.   Hori-
                  zontal  orientation is appropriate for row-oriented
                  instances, while Vertical orientation is  appropri-
                  ate for column-oriented instances.
    
    
    

    SEE ALSO

           Command(3U),  ControlInfo(3U), KeyMap(3U), Tool(3U), UCon-
           trol(3U), globals(3U)
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/UHashTable.html0000644000076500007650000000730007374262640020266 0ustar scottscott00000000000000
    
           UHashTable, UHashElem - hash table classes
    
    
    

    SYNOPSIS

           #include <Unidraw/uhash.h>
    
    
    

    DESCRIPTION

           UHashTable  implements a simple open hash table.  The num-
           ber of slots can be specified when the table  is  created.
           UHashTable  stores  UHashElem instances, which contain the
           key that is hashed.  Code that uses UHashTables may derive
           from  UHashElem  to  store  data  in  addition to the key.
           UHashTable also provides operations for iterating over the
           elements in the hash table.
    
    
    

    UHASHELEM OPERATIONS

           UHashElem(void* = nil)
                  Create a UHashElem with the given key value.
    
           void* GetKey()
           void SetKey(void*)
                  Explicitly get and set the element's key value.
    
    
    

    UHASHTABLE PUBLIC OPERATIONS

           UHashTable(int nslots)
                  Create  a  new UHashTable, specifying its number of
                  slots.
    
           virtual void Register(void* key, UHashElem* = nil)
                  Make an entry into the hash table.  If no UHashElem
                  is  supplied,  this  function  call  the CreateElem
                  function (described below) to create  one,  and  it
                  will  call SetKey (with key as its argument) on the
                  result.
    
           virtual void Unregister(void* key)
                  Remove the element with the matching key  from  the
                  hash table and delete it.
    
           void First(Iterator&)
           void Next(Iterator&)
           boolean Done(Iterator)
           UHashElem* GetElem(Iterator)
                  Operations  for  iterating over the elements in the
                  hash table.  These operation  do  not  guarantee  a
                  particular  ordering for the iteration.  First ini-
                  tializes an iterator to point to the first  element
                  in  the  traversal, Next increments the iterator to
                  point to the following element,  and  Done  returns
                  whether  or not the iterator points beyond the last
                  element in the traversal.  GetElem returns the ele-
                  ment to which the given iterator points.
    
                  Find  the element with the matching key (as defined
                  by the Equal operation,  described  below)  in  the
                  hash table.
    
    
    

    UHASHTABLE PROTECTED OPERATIONS

           virtual UHashElem* CreateElem()
                  Return  a  new  UHashElem  instance.  Subclasses of
                  UHashTable should redefine this  function  if  they
                  use subclasses of UHashElem.
    
           virtual int Hash(void* key)
                  Hash  the  specified  key  to  return a slot index.
                  This value should be less than  the  value  of  the
                  _nslots member variable.
    
           virtual boolean Equal(void* key1, void* key2)
                  Return  whether  the specified keys are equivalent.
                  By default, Equal simply compares the pointers  for
                  equality.   Subclasses  may redefine this operation
                  to make more sophisticated comparisons.
    
    
    

    SEE ALSO

           Iterator(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/ULabel.html0000644000076500007650000000243607374262640017457 0ustar scottscott00000000000000
    
           ULabel - structured graphic displaying one line of text
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/label.h>
    
    
    

    DESCRIPTION

           A  ULabel is a Graphic that displays one line of text.  It
           stores a PSFont to define  the  font  in  which  the  text
           appears.   With  no transformation, the text will be drawn
           with its bounding box's lower-left corner at the origin.
    
    
    

    PUBLIC OPERATIONS

           ULabel(const char* text, Graphic* = nil)
                  Construct  a  label,  supplying  a  null-terminated
                  string  in  text and an optional graphic from which
                  to obtain an initial set of graphics state.  ULabel
                  stores a copy text internally.
    
           const char* GetOriginal()
                  Return  a pointer to the text that the label stores
                  internally.
    
    
    

    SEE ALSO

           Graphic(3U), pspaint(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/UList.html0000644000076500007650000000631007374262640017346 0ustar scottscott00000000000000
    
           UList - circular, doubly-linked list class
    
    
    

    SYNOPSIS

           #include <Unidraw/ulist.h>
    
    
    

    DESCRIPTION

           UList implements a circular, doubly-linked list.  The sen-
           tinel and each entry in the  list  are  instances  of  the
           UList  class,  each  containing a void pointer to the data
           they contain as well as pointers to the next and  previous
           UList  instance  in the list.  The sentinel UList instance
           is considered to represent the list.
    
    
    

    PUBLIC OPERATIONS

           UList(void* = nil)
                  Create a new UList instance,  optionally  supplying
                  the value for the void pointer it stores.
    
           virtual ~UList()
                  Delete  the  entire  list.   Normally the sentinel,
                  which represents the list, is  the  entry  that  is
                  deleted  explicitly.   Note  that  the  data on the
                  list, stored as void*'s, cannot be deleted in  this
                  manner.
    
           void Append(UList*)
           void Prepend(UList*)
                  When  performed  on the sentinel, Append appends an
                  element to the end of the list and Prepend prepends
                  it to the beginning of the list.  When performed on
                  a UList instance other than  the  sentinel,  Append
                  has the effect of inserting its argument before the
                  instance, while Prepend has the effect of inserting
                  it after the instance.
    
           void Remove(UList*)
                  Unlink  the  specified UList instance from the list
                  it is in.  The object on which  this  operation  is
                  called is irrelevant.
    
           void Delete(void*)
                  Find the UList instance in this list containing the
                  given void pointer, remove it from the list  it  is
                  in, and delete it.
    
           UList* Find(void*)
                  Return  the  UList instance in this list containing
                  the given void pointer.
    
           UList* First()
           UList* Last()
           UList* End()
           UList* Prev()
                  Return various UList instance in the list  relative
                  to  this,  i.e.,  as  if it were the sentinel.  End
                  returns the  sentinel  (this)  and  is  useful  for
                  detecting the end of an iteration through the list;
                  the other operations are self-explanatory.
    
           boolean IsEmpty()
                  Return whether or not the list has any elements.
    
           void* operator()()
                  Return the void pointer that the UList stores.
    
           UList* operator[](int i)
                  Return the ith UList in the list,  where  the  next
                  element is the first, etc.
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/UMap.html0000644000076500007650000000664007374262640017156 0ustar scottscott00000000000000
    
           UMap - maintains a mapping between two sets of pointers
    
    
    

    SYNOPSIS

           #include <Unidraw/umap.h>
    
    
    

    DESCRIPTION

           UMap  is an abstract class for objects that store an arbi-
           trary number of pointer  pairs  and  can  search  to  find
           either  member  of  a  pair  given  the other.  A UMapElem
           object stores each pointer pair in the UMap.  UMapElem  is
           an  abstract  class  that  defines  virtuals for returning
           either member of the pair, referred to as the id  and  the
           tag.   Subclasses  of  UMapElem redefine these virtuals to
           return either member of the pair they store.
    
    
    

    UMAPELEM PUBLIC OPERATIONS

           UMapElem()
                  The base class constructor does nothing by default.
    
           virtual void* id()
           virtual void* tag()
                  Return  the id or the tag that the UMapElem stores.
                  Subclasses typically define  two  member  variables
                  that  store pair's values and redefine these opera-
                  tions to return them.
    
    
    

    UMAP PUBLIC OPERATIONS

           virtual ~UMap()
                  The destructor deletes all UMapElem objects in  the
                  UMap.
    
           int Count()
                  Return  the  number of mappings in the UMap, corre-
                  sponding to the number of UMapElems that have  been
                  registered.
    
           void Clear()
                  Delete  all the UMapElem mappings in the UMap with-
                  out destroying the UMap.
    
    
    

    UMAP PROTECTED OPERATIONS

           UMap() The base class constructor does nothing by default.
    
           void Register(UMapElem*)
           void Unregister(UMapElem*)
                  Register or remove a UMapElem from the UMap.
    
           int Index(UMapElem*)
           UMapElem* Elem(int index)
                  A  UMap  stores  its  UMapElem in its _elems UArray
                  protected member variable.   The  Index  operations
                  returns the index of the given UMapElem in the UAr-
                  sponding operations on the UArray.
    
           virtual UMapElem* FindId(void* id)
           virtual UMapElem* FindTag(void* tag)
                  FindId searches the UMap for the  UMapElem  element
                  containing the given id, while FindTag searches for
                  the one with the given tag.  These operations  per-
                  form  linear  searches  by default, comparing their
                  arguments against the values that the UMapElems' id
                  and tag operations return.  The comparison is based
                  on the  pointer  values;  subclasses  can  redefine
                  these operations to make more sophisticated compar-
                  isons based on the id or  tags  actual  type.   For
                  example,  if either the id is a string, then FindId
                  might do a string comparison to detect a match.
    
    
    

    SEE ALSO

           UArray(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Unidraw.html0000644000076500007650000002660207374262640017725 0ustar scottscott00000000000000
    
           Unidraw  -  one-of-a-kind object for coordinating and con-
           trolling a Unidraw application
    
    
    

    SYNOPSIS

           #include <Unidraw/unidraw.h>
    
    
    

    DESCRIPTION

           Unidraw applications create a single instance of a Unidraw
           object,  which  does  several things.  It creates a World,
           establishing the connection to the underlying window  sys-
           tem.   It  initializes the catalog and other objects, man-
           ages editor instances, and defines  the  application  main
           loop.   It  also maintains histories of commands that have
           be executed and reverse-executed for each component  hier-
           archy  being edited.  Finally, it cleans up internal state
           when it is deleted to ensure orderly program  termination.
    
           The Unidraw object must be created before opening any edi-
           tors but after creating a catalog.  Below is the main pro-
           gram for a typical Unidraw application:
    
           int main (int argc, char** argv) {
               AppSpecificCreator creator;
               Unidraw* unidraw = new Unidraw(
                   new Catalog("appName", &creator),
                   argc, argv, options, properties
               );
    
               unidraw->Open(new AppSpecificEditor);
               unidraw->Run();
               delete unidraw;
               return 0;
           }
    
    
    

    PUBLIC OPERATIONS

           Unidraw(
               Catalog*, int argc, char** argv,
               OptionDesc* = nil, PropertyData* = nil
           )
    
           Unidraw(Catalog*, World*)
                  The  first  constructor  form  requires  a  catalog
                  object  and  command  line  argument   information.
                  Other  arguments  include  pointers to PropertyData
                  and OptionDesc arrays.  This constructor creates  a
                  World  instance,  passing  whichever of these argu-
                  ments are supplied (except the catalog).  To  spec-
                  ify  a  World  instance  explicitly, use the second
                  constructor form.
    
           virtual void Run()
           virtual void Quit()
    
           virtual void Update(boolean immedate = false)
                  Bring  the  screen up to date with the state of the
                  application's objects.  By default,  this  involves
                  moving  connectors  to  their  proper positions (by
                  calling Solve on the  global  csolver  object)  and
                  telling  editors  to  update themselves (by calling
                  their Update functions).  Because Update may  carry
                  out potentially lengthy operations, Unidraw batches
                  Update calls by default.  This ensures that  multi-
                  ple  consecutive calls do not induce redundant com-
                  putations.  To force an  immediate  update,  simply
                  call Update(true).
    
           virtual void Open(Editor*)
           virtual boolean Opened(Editor*)
                  Open  inserts  an  editor into the world, making it
                  visible on the display.   The  user  positions  the
                  editor's window by default.  Opened returns whether
                  an editor has been opened already.
    
           virtual void Close(Editor*)
           virtual void CloseDependents(Component*)
           virtual void CloseAll()
                  Close closes a specified editor, removing  it  from
                  the  user's  view and deleting it.  CloseDependents
                  closes those editors that report  a  dependence  on
                  the  given component via their DependsOn operation.
                  CloseAll closes all open editors.   ~Unidraw  calls
                  CloseAll.
    
           void First(Iterator&)
           void Next(Iterator&)
           boolean Done(Iterator)
                  Operations  for iterating over the Unidraw object's
                  list of open editors.  First initializes an  itera-
                  tor  to  point  to  the beginning of the list, Next
                  increments the iterator to point to  the  following
                  editor,  and Done returns whether or not the itera-
                  tor points beyond the first or last editor  in  the
                  list.
    
           Editor* GetEditor(Iterator)
                  Return the editor to which an iterator points.
    
           Editor* Find(Component*)
           Editor* FindAny(Component*)
                  Operations  for  finding an (or the) editor associ-
                  ated with a given  component.   Find  searches  the
                  list  of  editors  for  the  one whose GetComponent
                  operation returns  the  given  component.   FindAny
                  returns  the first editor in the list whose GetCom-
    
           Catalog* GetCatalog()
                  Return the catalog passed to the constructor.
    
           World* GetWorld()
                  Return  the  world object, which the Unidraw object
                  creates when it is instantiated.
    
           void Log(Command*)
           void Undo(Component*, int i = 1)
           void Redo(Component*, int i = 1)
                  The Unidraw object maintains histories of  commands
                  associated with a given component hierarchy.  There
                  are two command histories per hierarchy:  the  past
                  history  and  the  future history.  These histories
                  normally contain commands that have  been  executed
                  and  unexecuted to support arbitrary level undo and
                  redo.  For example, after  a  viewer  executes  the
                  command  that  a  tool  generates by interpreting a
                  manipulator, it will record that command in a  past
                  history for possible undoing in the future.
    
                  The Log operation logs a command, placing it on the
                  past history  for  the  component  hierarchy  being
                  edited.  Log determines the past that is approprate
                  from the command's editor, which specifies the com-
                  ponent  (hence  the  hierarchy) that it is editing.
                  Undo reverse-executes the last i commands that were
                  logged  for a given component's hierarchy and moves
                  them from their past history to  the  corresponding
                  future history.  Redo re-executes the future i com-
                  mands and moves them to the past.  Note that  call-
                  ing  Redo  without a preceding Undo is meaningless;
                  thus calling Log  will  clear  the  future  history
                  associated with the affected component hierarchy.
    
           void SetHistoryLength(int)
           int GetHistoryLength()
                  Assign  and  retrieve  the  maximum command history
                  length.  No more than this  many  commands  can  be
                  undone  and  redone.   The  default  length  is 20.
                  Older commands are  deleted  automatically  as  new
                  commands are logged.
    
           void ClearHistory(Component* = nil)
                  Clear  the  past  and  future for a given component
                  hierarchy,  deleting  the  corresponding  commands.
                  All histories are cleared if no component is speci-
                  fied.
    
           void ClearHistory(Editor*)
                  Clear the history associated with  the  given  edi-
                  this  operation  to avoid clearing histories when a
                  component hierarchy is  being  edited  in  multiple
                  editors.
    
    
    

    PROTECTED OPERATIONS

           virtual void Process()
                  Process  is called once in the main loop defined by
                  the Run operation.  It  does  nothing  by  default.
                  Subclasses  may  redefine  Process to carry out any
                  processing that should be done in each pass through
                  the main loop.
    
           boolean IsClean(Editor*)
                  This  convenience function queries the given editor
                  for a ModifStatusVar instance.  If it has one, then
                  it  returns  its  status  (modified or unmodified);
                  otherwise it returns false.
    
           void Mark(Editor*)
           void Sweep(Editor*)
                  These operations support deferred editor  deletion,
                  a  mechanism to avoid deleting editors prematurely.
                  For example, if a command to close  the  editor  is
                  invoked  from  a  pull-down  menu, then the command
                  must not delete the editor, since that will  delete
                  the pull-down menu before it has a chance to close.
                  Thus Close and similar  operations  do  not  delete
                  editors  directly; instead, they call Mark to indi-
                  cate that an editor should be deleted  sometime  in
                  the  future.   Sweep  actually  deletes the editors
                  that have been marked.   By  default,  Unidraw::Run
                  calls Sweep each time an event is handled.
    
           void DoUpdate()
                  A helper function that performs an immediate update
                  independent of the batching mechanism.
    
           void GetHistory(Component*, UList*& past, UList*& future)
           void ClearHistory(UList*, int i = 1)
                  Command histories  are  stored  as  ULists.   These
                  operations  provide  a  low-level  interface to the
                  lists themselves; the corresponding  public  opera-
                  tions  are  built  on  top.  GetHistory returns the
                  past and future lists for a given component,  while
                  ClearHistory  deletes  the  first i commands on the
                  given list.
    
           UList* elem(Iterator)
           Command* command(UList*)
                  Convenience functions for extracting the list  ele-
                  ment in an iterator and the command object from the
                  list element.  These are useful in conjunction with
    
           void updated(boolean)
                  The  first  form  of  this function returns true if
                  there are pending Update(s) to be  performed.   The
                  second form sets this value explicitly.
    
           boolean alive()
           void alive(boolean)
                  The first form of this function returns true if the
                  program is in the run loop  defined  by  Run.   The
                  second form sets this value explicitly.
    
    
    

    SEE ALSO

           Catalog(3U),   Creator(3U),   Editor(3U),  Interactor(3U),
           Iterator(3U),  Viewer(3I),  UList(3U),  World(3I),  state-
           vars(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/UnidrawIntro.html0000644000076500007650000000572307374262640020742 0ustar scottscott00000000000000
    
           Unidraw library for graphical object editor development
    
    
    

    SYNOPSIS

           #include <Unidraw/class.h>
           #include <Unidraw/Components/class.h>
           #include <Unidraw/Commands/class.h>
           #include <Unidraw/Tools/class.h>
           #include <Unidraw/Graphic/class.h>
    
           CC ... -lUnidraw ... -lInterViews -lX -lm
    
    
    

    DESCRIPTION

           Unidraw  is  an  architecture for creating object-oriented
           graphical editors in domains such as technical and  artis-
           tic   drawing,  music  composition,  and  circuit  design.
           Unidraw simpifies the construction  of  these  editors  by
           providing  programming abstractions that are common across
           domains.  Unidraw defines four basic abstractions:  compo-
           nents  encapsulate the appearance and semantics of objects
           in a domain, tools support direct manipulation  of  compo-
           nents,  commands define operations on components and other
           objects, and external representations define  the  mapping
           between  components  and  the file format generated by the
           editor.  Unidraw also supports multiple  views,  graphical
           connectivity  and confinement, and dataflow between compo-
           nents.
    
           The Unidraw library contains a collection of classes  that
           implement  the  Unidraw architecture.  The Unidraw library
           is used together with the rest of InterViews,  except  the
           graphic  structured  graphics  library, to develop domain-
           specific graphical object editors.  InterViews interactors
           and  composition  mechanisms support an application's look
           and feel, while the Unidraw library supports functionality
           unique   to  graphical  object  editors.   Currently,  the
           Unidraw  library  provides  its  own  structured  graphics
           classes,  which  are  similar to but incompatible with the
           graphic library classes.  Therefore you must not use  both
           graphic and Unidraw classes in the same application.
    
           General  Unidraw  classes  are declared in header files in
           the Unidraw include file subdirectory. Component, command,
           tool, and structured graphics classes are declared in cor-
           responding subdirectories under the Unidraw  subdirectory.
    
    
    

    SEE ALSO

           InterViews(3I)
    
           Generalized  Graphical  Object Editing, John M. Vlissides,
           Technical Report CSL-TR-90-427, Stanford University,  June
           1990.
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/UStencil.html0000644000076500007650000000354307374262640020041 0ustar scottscott00000000000000
    
           UStencil - structured graphic displaying a bitmap
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/stencil.h>
    
    
    

    DESCRIPTION

           A  UStencil  is a Graphic that displays a bitmapped image.
           Two Bitmap objects, an image and a mask,  define  a  sten-
           cil's  appearance.   The  stencil potentially paints fore-
           ground color where image has a true value  and  background
           color  where  image  is false, but only pixels that have a
           corresponding true value in mask are thus  affected.   The
           stencil's  origin  coincides with the origins of the image
           and mask bitmaps. The  mask's  bounding  box  defines  the
           stencil's extent.
    
    
    

    PUBLIC OPERATIONS

           UStencil(Bitmap* image, Bitmap* mask = nil, Graphic* =
                  nil)
                  Construct a UStencil, supplying  an  image  and  an
                  optional  mask  bitmap and an optional graphic from
                  which to obtain an initial set of  graphics  state.
                  Specifying  nil for mask is equivalent to supplying
                  a mask of the same size and  shape  as  image  that
                  contains all true values.
    
           void GetOriginal(Bitamp*&, Bitmap*&)
                  Return  the  bitmap parameters supplied in the con-
                  structor.
    
    
    

    SEE ALSO

           Bitmap(3I), Graphic(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Vertices.html0000644000076500007650000000614407374262640020077 0ustar scottscott00000000000000
    
           Vertices  -  abstract base class for graphics defined by a
           set of coordinate pairs
    
    
    

    SYNOPSIS

           #include <Unidraw/Graphic/verts.h>
    
    
    

    DESCRIPTION

           Vertices is an abstract base class for  graphics  such  as
           polygons  and splines whose geometry is specified by a set
           of coordinate pairs.  The Vertices class supports  vertex-
           related  operations  common  to all such graphical objects
           and also supports extent caching.
    
    
    

    PUBLIC OPERATIONS

           virtual ~Vertices()
                  The destructor deallocates the list  of  coordinate
                  pairs stored in the graphic.
    
           virtual int GetOriginal(const Coord*& x, const Coord*& y)
                  Return  pointers  to  the  arrays  of Coords stored
                  internally  that  define  the  graphic's  vertices.
                  GetOriginal's return value reflects the size of the
                  arrays.
    
           virtual boolean operator == (Vertices&)
           virtual boolean operator != (Vertices&)
                  Compare this to the  given  Vertices  instance  and
                  return  whether  they (do not) store identical sets
                  of vertices.
    
    
    

    PROTECTED OPERATIONS

           Vertices(Graphic* = nil)
           Vertices(Coord* x, Coord* y, int count, Graphic* = nil)
                  The constructors are protected to disallow  instan-
                  tiation of the abstract class.  Subclasses can pass
                  a set of vertices to copy into internal storage and
                  an optional graphic from which to obtain an initial
                  set of graphics state.  Vertices itself  stores  no
                  additional  graphics state over that in the Graphic
                  base class.
    
           void s_getExtent(
               float&, float&, float&, float&, float&, Graphic*
           )
    
           void f_getExtent(
               float&, float&, float&, float&, float&, Graphic*
           )
                  Helper functions  that  return  extent  information
                  based on the bounding box that the vertices define.
                  s_getExtent returns an extent that accounts for the
                  width of a brush, as would be necessary if the ver-
                  extremities, as would be the case if  the  vertices
                  defined  a filled path.  These operations cache the
                  extent they compute initially.
    
    
    

    SEE ALSO

           Graphic(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/VerticesComp.html0000644000076500007650000000744707374262640020725 0ustar scottscott00000000000000
    
           VerticesComp,  VerticesView,  PSVertices  -  abstract base
           classes for  vertexed  graphical  component  subjects  and
           their views and PostScript external representations
    
    
    

    SYNOPSIS

           #include <Unidraw/Components/vertices.h>
    
    
    

    DESCRIPTION

           VerticesComp  is an abstract base class for graphical com-
           ponents whose geometry can be expressed as a list of coor-
           dinate  pairs.   VerticesComp  uses  a Vertices graphic to
           store  its  graphical  attributes.   VerticesView  is   an
           abstract   GraphicView  subclass  for  displaying  a  Ver-
           ticesComp. PSVertices is an  abstract  PostScriptView  for
           subclasses  that  externalize  VerticesComp information in
           PostScript form.
    
    
    

    VERTICESCOMP PUBLIC OPERATIONS

           Vertices* GetVertices()
                  Return the Vertices graphic that defines  the  ver-
                  tices's  attributes.   GetVertices is simply a more
                  specific form of the GetGraphic operation.
    
    
    

    VERTICESCOMP PROTECTED OPERATIONS

           VerticesComp(Vertices* = nil)
                  The constructor takes an optional vertices  graphic
                  that  defines the component's graphical attributes.
    
    
    

    VERTICESVIEW PUBLIC OPERATIONS

           virtual void Interpret(Command*)
                  VerticesView interprets AlignToGridCmd to align its
                  first vertex to the grid.
    
           virtual void GetVertices(Coord*& x, Coord*& y, int& count)
                  Return the view's vertices in  canvas  coordinates.
                  GetVertices  allocates  new  arrays each time it is
                  called.
    
           VerticesComp* GetVerticesComp()
                  Return the subject.
    
    
    

    VERTICESVIEW PROTECTED OPERATIONS

           VerticesView(VerticesComp* = nil)
                  Initialize a VerticesView, optionally supplying the
                  subject.
    
           virtual void CreateHandles()
                  VerticesView  redefines  CreateHandles  to create a
                  RubberHandles object that draws a handle coinciding
                  with each vertex.
    
           virtual boolean VertexChanged()
                  in  the subject.  The Update function relies on the
                  result to determine whether to recreate the  view's
                  structured  graphic  based  on the subject's.  Ver-
                  ticesView::VertexChanged  (conservatively)  returns
                  false  by  default; subclasses should redefine this
                  function  to  make  a  more  discerning   decision,
                  thereby  increasing  the  efficiency  of the update
                  operation.
    
    
    

    PSVERTICES PROTECTED OPERATIONS

           PSVertices(VerticesComp* = nil)
                  Initialize a PostScript external representation  of
                  the given subject, if any.
    
           virtual const char* Name()
                  Subclasses  should  redefine  Name  to  return  the
                  proper tag for the object in the PostScript  output
                  as required for idraw compatibility.
    
    
    

    SEE ALSO

           GraphicComp(3U),     GraphicView(3U),    Grid(3U),    Pat-
           ternCmd(3U), PostScriptView(3U), Vertices(3U),  align(3U),
           idraw(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/viewcmds.html0000644000076500007650000001325507374262640020135 0ustar scottscott00000000000000
    
           CenterCmd,  CloseEditorCmd, GravityCmd, GridCmd, GridSpac-
           ingCmd, NormSizeCmd, OrientationCmd,  RedToFitCmd  -  com-
           mands for modifying editor attributes
    
    
    

    SYNOPSIS

           #include <Unidraw/Commands/viewcmds.h>
    
    
    

    DESCRIPTION

           The Unidraw library predefines several commands for alter-
           ing the attributes of editors and their viewers.   Center-
           Cmd  centers each of the editor's viewers.  CloseEditorCmd
           closes the editor, removing it from the screen.   Gravity-
           Cmd  turns  gravity on by activating the editor's Gravity-
           Var, if it defines one.  GridCmd toggles the visibility of
           each  viewer's  grid,  while  GridSpacingCmd lets the user
           specify the grid spacing for all  grids.   Finally,  Norm-
           SizeCmd  sets  each  viewer's magnification to a factor of
           one,  OrientationCmd  toggles  each  viewer's  orientation
           between  landscape mode and portrait mode, and RedToFitCmd
           changes each viewer's magnification so that its  component
           view is fully visible.
    
    
    

    CENTERCMD PUBLIC OPERATIONS

           CenterCmd(ControlInfo*)
           CenterCmd(Editor* = nil)
                  Construct a new CenterCmd.
    
           virtual void Execute()
                  Execute  simply  calls CenterOp on each of the edi-
                  tor's viewers.
    
           virtual boolean Reversible()
                  CenterCmd is not reversible.
    
    
    

    CLOSEEDITORCMD PUBLIC OPERATIONS

           CloseEditorCmd(ControlInfo*)
           CloseEditorCmd(Editor* = nil)
                  Construct a new CloseEditorCmd.
    
           virtual void Execute()
                  Execute calls Close on the  global  unidraw  object
                  with  the  CloseEditorCmd's editor as its argument.
                  Execute prompts the use to save the component if it
                  does  not  appear in any other open editors.  If no
                  other editors are open at all, Execute creates  and
                  executes a QuitCmd.
    
           virtual boolean Reversible()
                  CloseEditorCmd is not reversible.
    
    
    

    GRAVITYCMD PUBLIC OPERATIONS

           GravityCmd(ControlInfo*)
                  Construct a new GravityCmd.
    
           virtual void Execute()
                  Execute  calls  Activate on the editor's GravityVar
                  (if it defines one) with the inverse of  the  value
                  returned by GravityVar's IsActive operation.
    
           virtual boolean Reversible()
                  GravityCmd is not reversible.
    
    
    

    GRIDCMD PUBLIC OPERATIONS

           GridCmd(ControlInfo*)
           GridCmd(Editor* = nil)
                  Construct a new GridCmd.
    
           virtual void Execute()
                  Execute  calls the Visibility operation on the grid
                  from each of the editor's  viewers,  supplying  the
                  inverse  of  the value returned by Grid's IsVisible
                  oepation.
    
           virtual boolean Reversible()
                  GridCmd is not reversible.
    
    
    

    GRIDSPACINGCMD PUBLIC OPERATIONS

           GridSpacingCmd(ControlInfo*)
           GridSpacingCmd(Editor* = nil)
                  Construct a new GridSpacingCmd.
    
           virtual void Execute()
                  Execute prompts the user to  specify  grid  spacing
                  information through a GridDialog.  If the user does
                  not cancel the dialog, then Execute will  pass  the
                  specified grid spacing to a SetSpacing call on each
                  viewer's grid.
    
           virtual boolean Reversible()
                  GridSpacingCmd is not reversible.
    
    
    

    NORMSIZECMD PUBLIC OPERATIONS

           NormSizeCmd(ControlInfo*)
           NormSizeCmd(Editor* = nil)
                  Construct a new NormSizeCmd.
    
           virtual void Execute()
                  Execute simply calls SetMagnification with an argu-
                  ment of 1 on each of the editor's viewers.
    
           virtual boolean Reversible()
                  NormSizeCmd is not reversible.
    
    
    

    ORIENTATIONCMD PUBLIC OPERATIONS

           OrientationCmd(Editor* = nil)
                  Construct a new OrientationCmd.
    
           virtual void Execute()
                  Execute  switches  the  orientation  of each of the
                  editor's viewers via  their  SetOrientation  opera-
                  tion.
    
           virtual boolean Reversible()
                  OrientationCmd is not reversible.
    
    
    

    REDTOFITCMD PUBLIC OPERATIONS

           RedToFitCmd(ControlInfo*)
           RedToFitCmd(Editor* = nil)
                  Construct a new RedToFitCmd.
    
           virtual void Execute()
                  Execute  simply  calls  ReduceToFit  on each of the
                  editor's viewers.
    
           virtual boolean Reversible()
                  RedToFitCmd is not reversible.
    
    
    

    SEE ALSO

           BasicDialog(3U),   Command(3U),   Grid(3U),   Unidraw(3U),
           Viewer(3U), catcmds(3U), globals(3U), statevars(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Viewer.html0000644000076500007650000002721007374262640017551 0ustar scottscott00000000000000
    
           Viewer - displays a graphical component view hierarchy
    
    
    

    SYNOPSIS

           #include <Unidraw/viewer.h>
    
    
    

    DESCRIPTION

           A  Viewer displays a graphical component view and provides
           an interface to scrolling and zooming it.  The viewer also
           processes  user input events and generates the appropriate
           calls on Unidraw objects in response.  The Viewer class is
           a  derived  from GraphicBlock; thus it can draw the struc-
           tured  graphics  hierarchy   embodied   in   GraphicView's
           graphic.  A viewer uses a damage object to keep the screen
           up to date.  Viewer's sensor catches up and  down  events,
           and its Handle implements implements the tool manipulation
           loop.
    
    
    

    PUBLIC OPERATIONS

           Viewer(
               Editor*, GraphicView*, Page*, Grid* = nil,
               Coord width = 0, Coord height = 0, Orientation = Nor-
                  mal,
               Alignment = Center, Zooming = Binary
           )
    
           Viewer(
               const char*, Editor*, GraphicView*, Page*, Grid* =
                  nil,
               Coord width = 0, Coord height = 0
               Alignment = Center, Zooming = Binary
           )
                  Both constructors take the  enclosing  editor,  the
                  GraphicView  object that the viewer will display, a
                  page object, and optionally a grid, a natural width
                  and  height,  initial  page orientation, alignment,
                  and zooming specifications.  The second form adds a
                  parameter  for  specifying  the  Viewer's  instance
                  name.
    
           virtual void Update()
                  Viewer augments GraphicBlock's Update semantics  by
                  repairing any damage that has been accumulated.  In
                  addition, Update will replace its graphical view if
                  its subject differs from the editor's component; in
                  that case, it will create a graphical view  of  the
                  editor's   component,  delete  its  own  view,  and
                  replace it with the new one.
    
           virtual void Adjust(Perspective&)
                  Viewer's Adjust operation will automatically update
                  the  editor's  MagnifVar  (if  it  defines  one) to
                  reflect the current magnification.
                  By default, Handle  employs  the  editor's  current
                  tool  on a LEFTMOUSE down event.  On MIDDLEMOUSE or
                  RIGHTMOUSE down events, it momentarily engages  the
                  editor's   MoveTool  or  SelectTool,  respectively,
                  allowing the user to move  or  select  a  graphical
                  component without changing the current tool explic-
                  itly.  Nothing  happens  if  the  editor  does  not
                  define  a  keyboard  equivalent  for engaging these
                  tools.  The Handle function calls either  the  Use-
                  Tool or MomentaryUseTool protected member functions
                  (described below) in response to these events.
    
           virtual void SetGraphicView(GraphicView*)
           virtual void SetPage(Page*)
           virtual void SetGrid(Grid*)
           virtual GraphicView* GetGraphicView()
           virtual Page* GetPage()
           virtual Grid* GetGrid()
           virtual Editor* GetEditor()
                  Explicitly  set  or  get  a   constructor-specified
                  parameter.   The  Set  operations  delete the value
                  they replace if it is different from the given one.
    
           virtual void SetMagnification(float)
                  Viewer's  SetMagnification  operation amends Graph-
                  icBlock::SetMagnification to set the value  of  the
                  enclosing editor's MagnifVar, if it defines one.
    
           virtual void SetOrientation(Orientation)
           virtual Orientation GetOrientation()
                  Set  and  get  the  viewer's orientation parameter,
                  which specifies whether the graphical  view,  page,
                  and grid will appear in portrait or landscape mode.
                  No transformation will be applied in portrait mode,
                  while  landscape  mode  will  rotate  the  page -90
                  degrees and translate it  vertically  by  an  amout
                  equal to the width of the page's bounding box.
    
           virtual Selection* GetSelection()
                  Return  the enclosing editor's selection object; it
                  is equivalent to calling GetEditor and then calling
                  GetSelection on the result.
    
           virtual Damage* GetDamage()
                  Return the viewer's damage object.
    
           virtual void InitRubberband(Rubberband*)
           virtual void InitTextDisplay(TextDisplay*, Painter*)
                  These  operations  let  Rubberband  and TextDisplay
                  instances appear to work in a  viewer  by  allowing
                  them  to  draw on the viewer's canvas.  InitRubber-
                  band sets the rubberband's canvas to  the  viewer's
                  canvas to the viewer's.  It also modifies the given
                  painter's background color to  match  the  viewer's
                  and supplies the painter to the TextDisplay for its
                  use.
    
           virtual void IncurTextDisplayDamage(TextDisplay*,
                  Painter*)
                  Incur  minimal damage on the viewer's damage object
                  to account for the TextDisplay's current size.  The
                  TextDisplay's painter must be passed explicitly.
    
           virtual void CenterOp()
           virtual void Magnify(Coord, Coord, Coord, Coord)
           virtual void ReduceToFit()
                  Convenience  functions  for  adjusting the viewer's
                  perspective.  CenterOp  centers  the  page  in  the
                  viewer's canvas without changing the magnification.
                  Magnify scrolls and magnifies the  given  area  (in
                  canvas  coordinates)  so that it fills the viewer's
                  canvas.  Magnify ensures that the area will  remain
                  fully  visible  in the viewer.  ReduceToFit scrolls
                  and reduces the view so that  the  entire  page  is
                  visible.
    
           virtual void Constrain(Coord&, Coord&)
                  Constrain  the  supplied coordinates to fall on the
                  nearest grid point if the viewer defines a grid and
                  if  the enclosing editor defines an active Gravity-
                  Var.
    
           virtual void UseTool(Tool*)
                  Commence direct-manipulation with  the  given  tool
                  without  an  explicit  action  on  the user's part.
                  Normally, direct manipulation  with  the  currently
                  engaged  tool  (as returned by the editor's GetCur-
                  Tool operation) starts automatically when the  user
                  clicks in the viewer.
    
           virtual void Align(GraphicComp*, Alignment)
                  Align  the  graphical  component  with  respect  to
                  viewer's canvas, assuming a view of  the  component
                  appears  in  the viewer.  For example, a ``Center''
                  alignment will align the  component's  center  with
                  the  canvas'; a ``BottomLeft'' alignment will align
                  the component's bottom-left corner to the  canvas'.
    
    
    

    PROTECTED OPERATIONS

           void Init(
               Editor*, GraphicView*, Page*, Grid*,
               Coord, Coord, Orientation
           )
    
                  Initialize  the  viewer's  member  variables.   The
                  first form of this operation initializes all param-
                  eters  that  can  be  passed to a constructor.  The
                  first form calls the second form, which initializes
                  a subset of the attributes that may change indepen-
                  dently of the others.
    
           Tool* CurTool()
                  A convenience function equivalent  to  calling  the
                  same operation on the enclosing editor.
    
           Transformer* GetTransformer()
                  Return  the  transformer  that  the  viewer uses to
                  implement scrolling and zooming.
    
           virtual void Manipulate(Manipulator*, Event&)
                  This operation  implements  a  direct  manipulation
                  loop  governed  by the given manipulator.  First it
                  calls Grasp  on  the  manipulator  with  the  given
                  event.  Then it reads events in a loop, calling the
                  manipulator's Manipulating operation with each  new
                  event.   When  Manipulating returns false, it calls
                  Effect on the manipulator with the event read last.
    
           virtual void UseTool(Tool*, Event&)
           virtual void MomentaryUseTool(Tool*, Event&)
                  Helper functions for initiating direct manipulation
                  with tools and  executing  their  effect.   UseTool
                  first  instructs the given tool to create a manipu-
                  lator, and then it calls Manipulate  to  carry  the
                  manipulation  through  to completion.  Next it asks
                  the tool to interpret  the  manipulator,  which  in
                  turn  may produce a command.  Finally, UseTool exe-
                  cutes and logs the command produced.  MomentaryUse-
                  Tool  simply engages the given tool, calls UseTool,
                  and re-engages the original tool.
    
           virtual void Reorient()
                  A helper function that rotates the viewer's graphic
                  to reflect its current orientation.
    
           virtual void UpdateMagnifVar()
                  A  helper  function  used  in  SetMagnification  to
                  notify the  enclosing  viewer's  MagnifVar  (if  it
                  defines one) of the change in magnification.
    
           virtual ClassId ViewCategory()
                  Returns  the  view  category  (see classes(3U)) the
                  viewer will use to instantiate a view if it is  not
                  given  one explicitly.  ViewCategory returns COMPO-
                  NENT_VIEW by default.
    
           Damage(3U),  Editor(3U),  Event(3I),  Graphic(3U),  Graph-
           icBlock(3U),  GraphicComp(3U),  GraphicView(3U), Grid(3U),
           Manipulator(3U), MoveTool(3U), Page(3U),  Perspective(3I),
           Rubband(3I),  SelectTool(3U),  Selection(3U),  Sensor(3I),
           TextDisplay(3I), Tool(3U), classes(3U), globals(3U), stat-
           evars(3U)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/Viewport.html0000644000076500007650000000630307374262640020127 0ustar scottscott00000000000000
    
           Viewport - scrollable view
    
    
    

    SYNOPSIS

           #include <InterViews/viewport.h>
    
    
    

    DESCRIPTION

           Viewport  is  a  subclass  of MonoScene that allocates its
           component exactly as much space as  it  wants  (determined
           from  its shape).  This space will be clipped to the view-
           port's size and the viewport maintains  a  perspective  to
           adjust  the portion of the component that is actually dis-
           played.  If the component is smaller than  the  viewport's
           canvas, then the viewport background will be filled with a
           light gray pattern.
    
    
    

    PUBLIC OPERATIONS

           Viewport(Interactor* = nil, Alignment = Center)
                  Construct a new viewport.  If the interactor is not
                  nil,  it  is  inserted as the viewport's component.
                  The second parameter determines where the component
                  is placed relative to the viewport.
    
           Insert(Interactor*)
                  Set the component interactor.
    
           void Change(Interactor*)
                  A  viewport  does  not propagate changes.  Thus, if
                  the component's shape changes the  viewport  simply
                  resizes the component according to the new shape.
    
           void Remove(Interactor*)
                  Take out the component interactor.
    
           virtual void Adjust(Perspective&)
                  Change the viewport's perspective to the given one.
                  This operation will cause the desired area  of  the
                  component to be drawn.
    
           void AdjustTo(float px, float py, float zx, float zy)
           void AdjustBy(float dpx, float dpy, float dzx, float dzy)
           void ScrollTo(float px, float py)
           void ScrollXTo(float px)
           void ScrollYTo(float py)
           void ScrollBy(float dpx, float dpy)
           void ScrollXBy(float dpx)
           void ScrollYBy(float dpy)
           void ZoomTo(float zx, float zy)
           void ZoomXTo(float zx)
           void ZoomYTo(float zy)
           void ZoomBy(float dzx, float dzy)
           void ZoomXBy(float dzx)
           void ZoomYBy(float dzy)
    
           float XPos()
           float YPos()
           float XMag()
           float YMag()
                  Short-hand for  retrieving  information  about  the
                  current perspective.
    
    
    

    SEE ALSO

           Perspective(3I), Scene(3I), Shape(3I)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/man3.1/World.html0000644000076500007650000001767007374262640017410 0ustar scottscott00000000000000
    
           World - control a display
    
    
    

    SYNOPSIS

           #include <InterViews/world.h>
    
    
    

    DESCRIPTION

           A  world  was  an application's connection to a particular
           display.  It is currently provided for  backward  compati-
           bility.
    
    
    

    PUBLIC OPERATIONS

           World(
    
               const char* classname, int& argc, char** argv
               OptionDesc* = nil, PropertyData* = nil
           )
                  Construct  the  world  object  for  a display.  The
                  world's instance name comes from the  -name  option
                  if  it was given; otherwise the instance name comes
                  from the environment variable RESOURCE_NAME  if  it
                  is nonnil.  If the name has still not been defined,
                  then argv[0] with all leading directories  stripped
                  is  used.   The following arguments are interpreted
                  automatically and are removed from argv:
    
                  -background    next argument sets the background color
                  -bg            same as -background
                  -display       next argument specifies the target workstation display
                  -foreground    next argument sets the foreground color
                  -fg            same as -foreground
                  -fn            same as -font
                  -font          next argument sets the text font
                  -geometry      next argument sets the first top-level interactor's position and size
                  -iconic        starts up the first top-level interactor in iconic form
                  -name          next argument sets the instance name of all top-level interactors
                                 that don't have their own instance names
                  -reverse       swaps default foreground and background colors
                  -rv            same as -reverse
                  -synchronous   force synchronous operation with the window system
                  -title         next argument sets the first top-level interactor's title bar name
                  -xrm           next argument sets an ``attribute: value'' property
           The    geometry     specification     has     the     form
           ``=WxH+XOFF+YOFF''.   A negative XOFF (YOFF) specifies the
           offset of the interactor's right (bottom)  edge  from  the
           right  (bottom)  side of the screen.  The constructor sets
           argc to the number of uninterpreted arguments that remain.
    
           If  non-nil,  the  OptionDesc*  parameter  is  an array of
           option  descriptors  used  to  parse  application-specific
           attributes.   OptionDesc contains four fields: a name used
           on the command line, a path specifying  the  attribute,  a
           style  specifying where the value is, and a default value.
           ueNext (use next argument as  value),  OptionValueImplicit
           (use  default  value),  OptionValueIsArg  (use argument as
           value), and OptionValueAfter (use remainder of argument as
           value).   If  non-nil,  the  PropertyData* parameter is an
           array of structures that each contain three string fields:
           a  path  specifying  the attribute, a value specifying the
           value, and a type specifying the  type  name.   Attributes
           are  entered in the following order: first any application
           defaults  (specified  by  the  PropertyData  array),  then
           application defaults from /usr/lib/X11/app-defaults/class-
           name, then user defaults  (usually  in  $HOME/.Xdefaults),
           and  finally  command-line  arguments.  Thus, command-line
           arguments override user defaults, and both override appli-
           cation defaults.
    
           const char* name()
                  Return the instance name associated with the world.
    
           const char* classname()
                  Return the class name associated with the world.
    
           int argc()
                  Return the number of arguments passed to the  world
                  (not  counting  those  that were interpreted by the
                  constructor).
    
           char** argv()
                  Return the argument vector passed to the world.
    
           Font* font()
                  Return the default font associated  with  the  dis-
                  play.   If  a  value for ``font'' is defined at the
                  top-level of the property sheet, then it  is  used.
                  Otherwise, a system default is used.
    
           Color* foreground()
                  Return the default foreground color associated with
                  the display.  If  a  value  for  ``foreground''  is
                  defined  at  the  top-level  of the property sheet,
                  then it is used.  Otherwise, a  system  default  is
                  used.
    
           Color* background()
                  Return the default background color associated with
                  the display.  If  a  value  for  ``background''  is
                  defined  at  the  top-level  of the property sheet,
                  then it is used.  Otherwise, a  system  default  is
                  used.
    
           boolean shaped_windows()
                  Return whether the display supports non-rectangular
                  windows.
                  Return whether windows on  the  display  should  by
                  default be double-buffered.
    
           virtual void flush()
                  Repair  all damaged windows on the display and then
                  send any pending requests to the window system.
    
           virtual void sync()
                  Repair all damaged windows on the display, send any
                  pending requests to the window system, and wait for
                  an acknowledgement from the window system.
    
           Coord width()
                  Return the width  in  coordinates  of  the  current
                  screen associated with the display.
    
           Coord height()
                  Return  the  height  in  coordinates of the current
                  screen associated with the display.
    
           virtual void run()
                  Read events from the display, handling them as they
                  arrive, and stopping when quit is called.
    
           virtual void quit()
                  Terminate the run loop.
    
           virtual boolean pending()
                  Return whether any events are waiting to be read.
    
           virtual void read(Event&)
                  Read  the next event from the world associated with
                  the event.
    
           virtual boolean read(long sec, long usec, Event&)
                  Read the next event from the world associated  with
                  the  event,  but  do not wait more than sec seconds
                  and usec microseconds.  Return whether an event was
                  found in the given time.
    
           virtual void unread(Event&)
                  Put the event back on the input queue for the world
                  associated with the event.
    
           virtual void poll(Event&)
                  Set the event to an artificial motion  event  based
                  on  the  current  pointer position and the state of
                  the   buttons   and   meta-keys.    virtual    void
                  SetScreen(int s) Set the current screen to s.
    
           static World* current()
                  Return the current world.  The current world is set
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Man(1) output converted with man2html
    ivtools-doc/doc/plotting.gif0000644000076500007650000000360507374262635016762 0ustar scottscott00000000000000GIF87ab((ra 4/ht m$@l/cd$roms/dQra:@weFdit/aplo$tHt@ing*O.gif'?>%G@"HOh9@@8F @% @@XCNXTvG XvnI @@{ ϣB2SJJ5*ͪX*rvU9g٥7u~E+ ,N)Δ˖%ѵEk/Lu = ?:ӳ/!{r`j{sGA_6xWb'QkT}M_C͚∴kCmtfW2) 8a{K,;;N]P#Qko]v_ƶAу~w GNq 6$ 6_za *GazV{i!G^ebHֈh1%bg ^bjBM6^h!Vz$yaA"^~#L*R袁q䒰 y^5fG;.!UW})& Gj8Бפolr)PXh"狄MY2&Jy♦T].y6hBhT饕ңi`BWfcuJPI)fuyiwў驱>jkh[*+϶괆*"Vq+SZZжj卩^>j&'N[oN.6ګ iG{0U C符;Gu/c%x$_*o9һ8*+Y]60-+QYq`譢Mm,TǜcJ֫eRBOU&NgvV#ˉŭu$V0Im_P=`Ǵ̸Q=Qwm͊~9amTNSul;Ÿ;&U{&]:.R4I>ybX/co8qz];bO/:G'}Hm3mxYzT Plotting and ivtools drawing editors

    plotting and ivtools drawing editors

    Plotutils from the Free Software Foundation can generate PostScript directly loadable into ivtools drawing editors with "graph -T ps"

    There is a barplot command command in comdraw. It requires use of plotmtv and pstoedit


    up to things to do with ivtools drawing editors

    ivtools-doc/doc/postscript.gif0000644000076500007650000000402307374262635017327 0ustar scottscott00000000000000GIF87ab((6(M p+p@+nOF(a$H@*O@%G@"HOh9@@8R @% @@XONXTvG XvnI @@YfI_ p"exZ,)at)^V:ةȲ,n+~r᧜ʤȚ.,po02 nコޫ-B, l и{kGj\Q} 3<)y'B|p Rز.Cnc͛tF^O r=5 Y&Ҿ[4s/ u[7-SطzڕJ ֵhe J^4>Y^W)ֱiW:[ q}ެg!2;wVy/ :=*7,,onl, V| :q9_\MHg3j|7|= kˋ g.D0-xΚfIo%sK)OSG(+'K׾9A]]GC:{gu#/GB 0l[!:q$2K)8UpV-C^>?&P/C4"ػ$Qpd!EW(E~5#`<2Eͱ脇T]R8;6U$I2i.bhnDTdXG}ZT쨖EAzK>6 f/aB ӗ1$29N0Ie%-l24f)Ù]L6|8 B;ivtools-doc/doc/postscript.html0000644000076500007650000000375107503671621017526 0ustar scottscott00000000000000 PostScript and ivtools drawing editors

    PostScript and ivtools drawing editors

  • When printing all the ivtools drawing editors can generate Enapsulated PostScript formatted in a way that can be later reloaded or imported (idraw-format EPS).
  • All ivtools drawing editors (except idraw) can export any selected list of graphics in idraw-format EPS .
  • idraw-format EPS can be loaded directly into idraw, and loaded or imported into any other ivtools drawing editor.
  • Other PostScript (and PDF) can be converted with "pstoedit -f idraw" to be importable or loadable by all the drawing editors of ivtools. This works for embedded images as well since pstoedit version 3.17. For earlier versions of pstoedit apply this patch to add raster support to the idraw output format of pstoedit.
  • All ivtools drawing editors (except idraw) can export directly to any Unix filter that accepts PostScript if "to command" is checked in the export dialog box, i.e. ghostview.
  • All ivtools drawing editors (except idraw) can import directly from any Unix filter that generates PostScript if "from command" is checked in the export dialog box, i.e. pstoedit.

  • For a more expanded discussion of this, see other tools that work with ivtools

    up to things to do with ivtools drawing editors

    ivtools-doc/doc/rasters.gif0000644000076500007650000000404507374262635016604 0ustar scottscott00000000000000GIF89ab((rraa4s/thetrmsl./g@cidfrnoms/dXOraweXdit(/Xras$tHer s@.Ogif'?O>%G@"HOh9@@8N @% @@(KNXTvG XvnI @@2o"F:fuYf5_:|R{{^c{=G=X9s-tCy&v&h=݂=Ġ Z9{§Cn|r߈_(bpT(dR2Xь88Sw">(!@(D>y^/!2lM~%L=g,]eN. cd) io9yM!iؒR>{)TJޗyeXv(@[5FzA:;&pr*'x鐄ٙ&}:jB'U9[֪(-9 {i:&쳥"jjV*ɚ ..Y 4^V:g{' 0 :0 \d*9oZo͞^b 0Lm$2l$kP*݌+뜳!s+o#LO 8,4H< C^DAcDs =5AQL,7%yemshk}͌2/+_8DR\YȘAnGL+2T⨕Oce=|S nr b77>Ѐ*x'_t{ICOEW߻iw5fjz$^>m0*߰K6f{vz<>psr>nw\>\/e΋$H R+Vy8OR_B6 6XrrZ=~S"`WB"' c0&}8a^X"*R8.{AIx*s6Қ XeNxD,#GIHf$m7H72~1ax2T2һ>ƓѣBĔ1|(Fj$_DZ/\v)6R #Ta0Kļ2yL%S T49M8Rd[.V@;ivtools-doc/doc/rasters.html0000644000076500007650000000163707374262635017007 0ustar scottscott00000000000000 Rasters and ivtools drawing editors

    Rasters and ivtools drawing editors

    import rasters

    Import rasters into any ivtools drawing editor. idraw supports importing tiff images. drawtool supports importing from tiff and the pbmplus image formats (pbm/pgm/ppm) as well as dithered conversion from a JPEG using djpeg, GIF conversion with giftopnm, and arbitrary PostScript rendered as idraw format PostScript by pstoedit.

    export rasters

    Export rasters in idraw PostScript format which can be displayed by idraw or rendered by gs back into raster form.


    up to things to do with ivtools drawing editors

    ivtools-doc/doc/refman3.1/0000755000076500007650000000000010747654211016112 5ustar scottscott00000000000000ivtools-doc/doc/refman3.1/CVS/0000755000076500007650000000000010747654211016545 5ustar scottscott00000000000000ivtools-doc/doc/refman3.1/CVS/Entries0000644000076500007650000000027610747654211020106 0ustar scottscott00000000000000/error.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /index.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /left.html/1.1.1.1/Tue Nov 13 18:25:36 2001// /refman.html/1.1.1.1/Tue Nov 13 18:25:37 2001// D ivtools-doc/doc/refman3.1/CVS/Repository0000644000076500007650000000003210747654211020642 0ustar scottscott00000000000000ivtools-doc/doc/refman3.1 ivtools-doc/doc/refman3.1/CVS/Root0000644000076500007650000000007310747654211017413 0ustar scottscott00000000000000:ext:johnston@ivtools.cvs.sourceforge.net:/cvsroot/ivtools ivtools-doc/doc/refman3.1/error.html0000644000076500007650000000064507374262640020141 0ustar scottscott00000000000000

    The following table contains objects whose interpretation might be wrong. Follow the assosiated links to check it out.

    Type of object Link to object Possibility of error
    ivtools-doc/doc/refman3.1/index.html0000644000076500007650000000031607374262640020112 0ustar scottscott00000000000000 InterViews 3.1 Reference Manual ivtools-doc/doc/refman3.1/left.html0000644000076500007650000001242407374262640017740 0ustar scottscott00000000000000 Document:
    InterViews 3.1 Reference Manual
    Number of Pages: 77
    Error file
    Indices to pages:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

    back to ivtools doc page ivtools-doc/doc/refman3.1/refman.html0000644000076500007650000060302707374262641020264 0ustar scottscott00000000000000 InterViews 3.1 Reference Manual

    Copyright (c) 1992
    The Board of Trustees of the Leland Stanford Junior University




    Permission to copy this manual or any portion thereof as necessary for use of
    this software is hereby granted provided this copyright notice and statement of
    permission are included.
      
    InterViews Reference Manual
      Version 3.1

      
    December 14, 1992

      
    Mark A. Linton
      Paul R. Calder
      John A. Interrante
      Steven Tang
      John M. Vlissides
    Release Notes
    The InterViews 3.1 distribution contains a README file and a single
    subdirectory, #iv, that contains the source and documentation. InterViews can be
    compiled with any C++ compiler that accepts the 2.0, 2.1, or 3.0 revisions of the
    language, and can run on X11R4 or X11R5. You can specify your compiler and
    other site definitions in the file #iv/src/config/InterViews/local.def.
      The README file describes how to build InterViews. Under #iv/src, the
    directory #include'' contains include directories, #bin contains applications (each
    in its own subdirectory), #lib contains libraries (each in its own subdirectory),
    #config contains configuration-specific    files, #man contains PostScript or troff
    for the manual, and #papers contains PostScript for user tutorials.
      The work at Stanford has been supported by Fujitsu America, Digital
    Equipment Corporation, and NASA CASIS project under Contract NAGW 419,
    and a grant from the Charles Lee Powell Foundation. Special thanks to Ira
    Machefsky of Digital and Charles Brauer of Fujitsu America for their assistance.
    We are also grateful to the ever-growing InterViews user community for its
    encouragement and support.
      Please address questions or comments about InterViews to
      Mark Linton
      linton@sgi.com
    Differences between 3.0 and 3.1
    InterViews 3.1 contains several improvements over 3.0.1. WidgetKit is an
    improved implementation of the Kit class that was in 3.0.1. DialogKit is a class
    that provides a file chooser dialog using WidgetKit compoments. LayoutKit is a
    class that provides convenient operations for creating layout objects such as boxes
    and glue, replacing the many independent classes such as LRBox and VGlue
    in 3.0.1. Chapter 9 of the reference manual describes WidgetKit, Chapter 10
    describes DialogKit, and Chapter 11 describes LayoutKit.
      Glyph and other subclasses of Resource are no longer derived as virtual base
    classes. This change was made primarily for efficiency and convenience because
    many C++ compilers do not generate particularly efficient code for virtual base
    classes (especially in space), and some compilers have bugs in this area.
      The Glyph protocol has been extended with an undraw operation that notifies a
    glyph that it no longer has an allocation on the canvas. This operation is primarily
    for objects that cache information or perform computation when they are visible.
      A new monoglyph subclass, called InputHandler, replaces the old Listener
    class. InputHandler is much simpler to use than the previous combination of
    Listener and PointerHandler, as well as providing limited support for focus
    management.
      The Window class now has a style object as one of its attributes. The style can
    be set to defined attributes such as name and geometry, as well as a #visual type
    for the window. On systems that support overlay planes, the attribute #overlay
    can be used to request the window be allocated in the window planes.
      InterViews 3.1 also includes a new faster implementation of the Style class and
    a copy of the latest version of Sam Leffler's TIFF library (v3.0) for reading
    images. The old 2.6 structured graphics library is no longer included, though it
    probably would still work with this distribution.
      The documentation has been reorganized to reflect some of the 3.1 changes, as
    well as provide a structure for future releases. In addition to the reference manual,
    a new collection of example programs is provided under iv/src/examples.




      0-2
    Chapter 1
    Introduction
    InterViews is a software system for window-based applications. Like most user
    environments, InterViews is object-oriented in that components such as windows,
    buttons, menus, and documents are active elements with inherited behavior. The
    name #InterViews comes from the idea of a user interface object presenting
    an interactive view of some data. For example, a text editor implements an
    interactive view of the contents of a text file.
      InterViews provides a set of classes that define the behavior of user interface
    objects. We distinguish InterViews classes into two groups: protocols and kits. A
    protocol defines the set of operations that an object can perform, such as drawing
    or handling input. A kit defines a set of operations for creating other objects. The
    idea of a kit is also sometimes referred to as an #object factory. Using kits hides
    the details of object construction and subclassing-instancing tradeoffs made by
    the implementation, as well as providing a higher-level organizational structure to
    the system.

    1.1 Organization

    In this first chapter, we define the basic notation and classes, as well as give
    an overview of the system by way of several example programs. Chapter 2
    defines the base protocol for user interface objects, called Glyph, which supports
    geometry management, rendering, picking, and structuring multiple glyphs into
    an aggregate. Chapter 3 describes the input event processing model and the
    InputHandler protocol. InputHandler is a descendant of Glyph that receives input
    events. Chapter 4 presents the View protocol, which is derived from InputHandler
    and adds additional operations for creating and updating multiple views of a
    shared data object.
      Chapter 5 defines the Window protocol for associating glyphs with a window
    on the screen and communicating with a window manager. Chapter 6 presents the
    basic protocols for rendering to the screen or a printer.
      Chapter 7 is reserved for the future to describe the FigureKit class that
    will create common 2D graphic objects, such as rectangles, circles, and
    polygons. In traditional graphics terminology, FigureKit will support #structured
    graphics, while the basic rendering protocols described in Chapter 6 support
    #immediate-mode graphics.
      Chapter 8 defines the Style protocol, which manages a collection of named
    attributes with string values. Chapter 9 presents the WidgetKit class for creating
    common user interface components such as buttons, menus, and scrollbars.
    The precise appearance and input behavior of a widget can be adjusted by the
    attributes in a style. Chapter 10 presents the DialogKit class for building common
    dialogs.
      Chapter 11 defines the LayoutKit class for creating glyphs that control
    formatting. These objects are based on the TeX document preparation system.
    Chapter 12 describes the DocumentKit class for creating and editing documents.
      Appendix A defines classes for interfacing to the underlying operating system.
    These classes are not intended to provide a complete or standard interface to the
    operating system, but merely a more convenient and portable set of protocols.

    1.2 Notation

    N.B.: The notation in this manual is somewhere between C++ and the OMG
    Interface Definition Language (IDL). We expect to use IDL in the future.
    We use a syntax similar to C++ to specify the InterViews classes and operations.
    However, the specification of a class here is not identical to its C++ declaration in
    a header file. To make the distinction clear between our specification and C++,
    we use the keyword #interface' instead of #class. We assume inheritance is
    always #public in C++ terminology.
      All operations are assumed public; we do not list the protected or private
    members. We also do not list members that are implicitly part of the
    implementation. For example, C++ destructors are normally public but often
    simply free storage allocated by the object. Thus, there is no need to document
    destructors as part of a class interface.
      Unless explicitly specified as #static, all operations are virtual functions in
    C++. In the case of an inherited operation, the choice of whether or not to
    provide the operation may depend on the implementation. We therefore do not
    list inherited operations unless the subclass extends the semantics in some way.
    1.2.1 Names
    We use identifiers that begin with an upper case letter for types; we use lower
    case for operations and parameters. In type names consisting of multiple words,
    we capitalize the beginning of each word, as in FirstSecondThird. For operations
    or parameters we use underscores to separate words, as in first_second_third.    An
    operation f for a class C is denoted by C::f.
      
    We assume that some mechanism allows us to use whatever names we wish for
    global symbols; that is, there is no need for a special prefix on all class and
    type names. Ideally, this capability would be provided by the implementation
    language, but this is not yet the case for C++. Currently, the implementation uses
    #define macros to prepend the prefix ``iv'' to all class names and global type
    names. This redefinition is hidden from the programmer, except inasmuch as it
    shows up during debugging. To undefine these macros, a source file must include
    #. After leaving the InterViews scope, InterViews
    names are specified by #_lib_iv(name), where name is the class or type name
      1-2
    defined in this manual.
    1.2.2 Use of const
    C++ allows the type modifier #const to be used in a variety of different ways.
    For concrete objects (int, float, char*), it refers to read-only storage. For abstract
    objects, however, storage access should not be visible in an interface. For
    example, an operation on a transformation matrix could be defined that returns
    whether the matrix is the identity or not. A simple implementation could compute
    the identity test and could be defined as const in the storage sense. However,
    another implementation might cache the result of the test to avoid the overhead of
    the test when the matrix is not changing. This second implementation is not const
    in the storage sense because it modifies the transformation matrix object.
      We use const for operations that do not change the behavior of an object.
    That is, an operation is const if a call to it could be omitted without changing
    the effect of subsequent operations performed on the object. This definition is
    consistent with the notion that a compiler could eliminate redundant calls to the
    same const function. The one important counter-example is reference counting,
    where incrementing and decrementing the reference count of a shared object
    changes its lifetime (an operation that could not be eliminated by the compiler)
    but does not change its behavior (the operation is considered const).
      Using our semantics of const, the transformation matrix identity function
    mentioned above should be defined as const. This approach implies that an
    implementation may be forced to cast the this pointer from const to non-const to
    avoid a compiler error message because C++ compilers normally assume that a
    function should not be const if the function does modifies storage.
      It is also possible (indeed, likely) that a function does not follow our semantics
    of const even though it does not modify the object's storage. If an object contains
    a pointer to another object and an operation performs a non-const operation on
    that object, then the first operation may also need to be defined as non-const.
    1.2.3 Common Symbols
    Several definitions are pervasive throughout the system. These definitions are
    automatically defined as a side effect of using any other InterViews classes.
    The type boolean is defined in the conventional sense of a language such as
    Pascal, as are the constants true and false. The constant nil is presumed to be
    type-equivalent to any pointer type and represents an invalid pointer value. In
    C++, we #define nil to zero.
      The type String is used as a parameter to a number of operations, though no
    specific interface or implementation is presumed. Whereever a string parameter
    appears, one can assume that a C++ #const char* type can also be passed.
    1.2.4 Coordinates
    Many objects and operations manipulate coordinates. We define the type Coord to
    represent a position or a distance. The default units for a coordinate are #printers
      1-3
    points, or 1/72 of an inch. The scaling factor can be customized on a per-screen
    basis.
      Ideally, Coord would be an abstract type with set of operations and conversions
    to concrete types. However, current C++ compilers do not make it practical
    to define a Coord class that is represented as a single word. The current
    implementation therefore defines Coord as the C++ type #float'.
      For applications with simple graphics needs, the use of floating point
    coordinates is typically not a problem. Applications with more sophisticated text
    or graphics usually need to manipulate floating point coordinates anyway.
      The use of non-pixel units allows objects to be resolution-independent, but also
    means that one cannot rely on precise output at low resolutions. Coordinates are
    rounded-off to guarantee that objects that abut in coordinates will abut on the
    screen. This choice means that a one point line might generate one or two pixels,
    depending on where it is on the screen. Objects that need to generate consistent
    pixel sizes can explicitly round to whole-pixel coordinate values using Canvas
    to_pixels_coord.
    1.2.5 Dimensions
    Many composition strategies manipulate coordinates in one dimension. To use a
    single strategy in any dimension, we define the type DimensionName and values Dimension_X , Dimension_Y, or Dimension_Z. It is possible that other dimensions
    may be defined in the future. The constant Dimension_Undefined is defined after
    any other dimensions.
    1.2.6 Parameter conventions
    In specifying an operation, we list only the parameter type unless there are several
    parameters to the operation with the same type. In this case, we list both the type
    and a name for the parameter that clarifies what it is.
      For parameters that are objects, we use a pointer type if the operation may store
    a pointer to the object with a lifetime beyond the operation's activation. If the
    operation will not store a pointer, then we pass a reference type. Therefore, one
    should never pass the expression #&x for a local or parameter object #x.
    1.2.7 Storage management
    Because C++ does not provide garbage collection, it is necessary to manage
    shared objects within a program. We make objects easier to share by deriving
    from class Resource, which manages a reference count. If we had garbage
    collection, we would not need the resource class. Therefore, we do not consider
    resource really part of the InterViews programming interface and it does not
    appear in any function type signatures. However, it is necessary to understand
    which objects can be shared and as a practical matter the implementation must
    manage references correctly.
      Figure 1.1 shows the Resource class interface. Every resource has a reference

      1-4
    count that is initially zero and must be explicitly incremented by calling
    Resource::ref. The reason the count is initially zero is that an object is often
    created and immediately passed as a parameter to another object that stores the
    reference. Since the receiver must reference the parameter anyway, it is confusing
    to force the creator to unreference the resource after passing it.
      The C++ delete operator should not be used on resources directly; instead,
    Resource::unref or Resource::unref_deferred should be called to decrement the
    reference count of an object. If the count is no longer positive, then the resource's
    cleanup operation will be called. In the case of Resource::unref, the object is
    immediately destroyed. In the case of Resource::unref_deferred, the object will
    be put on a queue of objects to be destroyed in order the next time Resource::flush
    is called. Resource deferral is useful when an object initiates a delete on one of its
    ancestors or some other object with an active member function.
    1.2.8 Callbacks
    C++ provides a pointer-to-function type, but often one wishes to encapsulate an
    object and a pointer to a member function to call on the object. Our approach is
    to define a base class containing the callback signature and a parameterized
    subclass for a callback to an object of a specific type. For example, the action
    class defines a single operation, Action::execute, with no parameters and no
    return value. A macro is an action that contains a list of actions, each of which
    is executed in order. An action callback is the subclass that is expanded for
    each destination type. The current implementation uses preprocessor macros,
    but will use templates in the future. Figure 1.2 shows the action, macro, and
    action-callback class interfaces.

    1.3 Basic concepts

    The goal of InterViews is to make it easy to compose user interfaces from
    reusable components. The central class for physical composition is Glyph because
    it defines the geometry of a user interface object. The central class for logical
    composition is InputHandler because it defines the input handling policy and
    update management. InputHandler is a subclass of glyph, normally delegating its

      1-5   
      
    interface       Resource {
      static void ref(const Resource*);
      static void unref(const Resource*);
      static void unref_deferred(const    Resource*);
      static void flush();   
      void cleanup();
      };
      Figure 1.1:          Resource class interface
    geometry and appearance to another glyph.
      The Canvas class defines a 2-dimensional surface upon to which a group of
    glyphs are attached. The glyphs negotiate for space on the canvas, draw on the
    canvas to refresh their appearance, and damage the canvas to cause an update
    traversal.
      The Window class creates a canvas for a top-level input handler and allows
    the user to control the canvas on a screen through a window manager. The
    window class does not define a window management policy, only the mechanism
    for communicating appropriate information between a window manager and the
    glyphs.
      The InterViews input model is ``top-down''. That is, an input event is first
    received by the appropriate window as determined by the window manager. The
    receiving window passes the event to the root input handler, which may pass it
    down to a nested input handler.
    1.3.1 Main event loop
    Every application creates a Session object to run an event dispatching loop.
    Sessions initially attach to the user's display and can attach to additional displays.
    A session defines a root Style object derived from user customization files and
    command-line arguments. Styles define named attributes with string values,
    wildcarding for matching classes of objects, and quick access to common
    attributes such as fonts and colors. Figure 1.3 shows the session protocol.
      The session is given an alias (class name) for the root style, an array of
    command-line arguments, an optional argument description, and optional initial
    style settings. The root style's name comes from the #-name command-line
    option (if given), or the environment variable RESOURCE_NAME (if defined),
    or the value of argv[0] with leading path entries stripped.
      1-6   
      
    typedef long MacroIndex;   
      interface Action : Resource {
      void execute() =       0;
      };
      interface Macro : Action {
      Macro(Action* = nil, Action* = nil, Action* = nil, Action* = nil);
      void prepend(Action*);
      void append(Action*);
      void insert(MacroIndex, Action*);
      void remove(MacroIndex);
      MacroIndex count() const;
      Action* action(MacroIndex) const;
      };
      interface ActionCallback(T) : Action {
      ActionCallback(T)(T*, void (T::*)());
      };
      Figure 1.2: Action and related class interfaces.
      
    The option description is an array of structures that describe command-line
    arguments. The structure contains four fields: a name that is the command-line
    string, a path specifying a style attribute, a format specifying where the associated
    value is, and a default value. Valid formats are OptionPropertyNext (use the next
    argument as an attribute-value pair), OptionValueNext (use the next argument
    as the value), OptionValueImplicit (use the default value), OptionValueIsArg
    (use the agument as the value), and OptionValueAfter (use the remainder of the
    argument as the value). If a command-line argument is found that matches an
    option description, it will be interpreted and removed from argv. The agument
    count (argc) will be set to the number of uninterpreted command-line arguments.
      In addition to the program-specified options, the Session constructor
    automatically matches the options listed in Table 1.1. The optional initial style
    settings are specified by a nil-terminated array of pairs , where s1 is an
    attribute name and s2 is the value. User defaults will override any initial settings,

      1-7   
      
    struct PropertyData {
      const char* path;
      const char* value;
      };
      struct OptionDesc {
      const char* name;
      const char* path;
      OptionStyle format;
      const char* value;
      };
      interface Session {
      Session(
      const char* name, int& argc, char** argv
      const OptionDesc* = nil, const PropertyData* = nil
      );
      static Session* instance();
      int argc() const;
      char** argv() const;
      Style* style() const;
      void default_display(Display*);
      Display* default_display() const;
      Display* connect(const String&);
      Display* connect(const char*);
      void disconnect(Display*);
      int run();
      int run_window(Window*);
      void quit();
      boolean done();
      };
      Figure 1.3: Session protocol

      Figure 1.4:
    and command-line arguments will override user defaults.
    1.3.2 Common widgets
    InterViews provides common behavior objects, such as buttons and menus, which
    are built using glyphs and input handlers. Unlike many other toolkits, InterViews
    objects are cheap enough that behavior objects are separate from appearance
    objects. For example, the button class is given a separate glyph that denotes its
    appearance; the button only implements input behavior.
      This approach of separating input and output objects makes the toolkit more
    flexible and the individual objects simpler, but it can make the task of constructing
    higher-level user interface objects more confusing. In particular, it becomes less
    obvious whether it is appropriate to subclass or instance to create a particular
    component.
      InterViews provides a widget kit object that encapsulates these decisions in a
    single programming interface while allowing various appearances and behaviors.
    A widget kit is an object that creates common user interface objects such as
    buttons, scrollbars, and menus. For example, a push button has button behavior, a
      1-8                                                                                 
      -background next argument sets the background color
      -bg same as -background
      -dbuf double-buffer windows by default
      -display next argument specifies the target workstation display
      -dpi next argument is coordinates-to-pixels ratio
      -fg same as -foreground
      -flat next argument sets the base color for bevels
      -fn same as -font
      -font next argument sets the default text font
      -foreground next argument sets the foreground color
      -geometry next argument sets the first window's position and size
      -iconic starts up first window in iconic form
      -malloc run with memory-management debugging on
      -monochrome use monochrome style
      -motif use Motif style
      -name next argument sets the instance name of the session
      -nodbuf do not double-buffer windows
      -openlook use OpenLook style
      -synchronous force synchronous operation with the window system
      -title next argument sets the session's default title bar name
      -visual next argument is visual class to use for windows
      -visual_id next argument is visual id number to use for windows
      -xrm next argument is #name:value; sets named attribute
      Table 1.1: Predefined command-line options
    beveled or highlighted appearance when pressed, and a style for customization.
    The WidgetKit class provides a function to create a push button object; the
    implementation is free to compose what objects are necessary to provide the
    appropriate functionality. Each application normally creates a single WidgetKit
    object, which is typically a subclass defined for a particular look-and-feel
    such as OpenLook or Motif. The application can call the static function
    WidgetKit:::instance to return the object and therefore be unaware which specific
    look-and-feel is being used.

    1.4 A simple example

    Figure 1.5 shows a simple InterViews application that display the text #hi mom!
    in a window. The application creates a session and runs it starting with a window
    containing the text over a background. The window is an #application window,
    meaning it is recognized by other desktop services (window manager, session
    manager) as the main window for the application.
      The window contains a background that contains a label. A background glyph
    paints a given color behind its contents. The label's font and color are obtained
    from the default style for the session.
      This application does not handle user input. It must therefore be terminated
    externally, either from a window manager menu or through the system.

    1.5 Geometry management

    See iv/src/examples/box[12].




      1-9   
      
    #include   
      #include
      #include
      #include
      int main(int argc, char** argv) {
      Session* session = new Session("Himom", argc, argv);
      WidgetKit& kit = *WidgetKit::instance();
      return session->run_window(
      new ApplicationWindow(
      new Background(
      kit.label("hi mom!"), kit.background()
      )
      )
      );
      }
      Figure 1.5: InterViews "hi mom!" program.
    1.6 Creating a push button

    See iv/src/examples/button[123].

    1.7 Summary

    This chapter has presented a broad overview of the InterViews architecture,
    introducing the basic concepts and giving some simple examples. In the next
    chapter, we focus on the semantics of glyphs as the smallest unit of user interface
    construction.




      1-10
    Chapter 2
    Glyphs
    Glyphs are the basic building blocks for the presentation side of a user
    interface, providing a unified substrate for interactive objects, structured graphics,
    and formatted text. The glyph protocol supports geometry, drawing, picking,
    composition, and structure. Glyph subclasses provide higher-level operations,
    such as input handling and update management.
      The base class defines no storage and operations are passed contextual
    information during rendering. Thus, glyphs may be shared and a glyph structure
    need not be strictly hierarchical; it may be a directed acyclic graph. Figure 2.1
    shows the glyph protocol.

    2.1 Geometry management

    Glyph::request asks a glyph to specify its desired geometry. This operation should
    be fast to allow a composite glyph to compute rather than store the desired
    geometry of its components. Glyph::allocate notifies a glyph that a portion of the
    canvas has been allocated for it and returns an area that represents a conservative
    estimate of the actual area where the glyph will draw.

    2.2 Drawing

    Glyph::draw displays the glyph on the canvas at the position and size specified by
    the allocation. No clipping or translation is implicit in this operationthe    canvas is
    the entire drawing area and the allocation is in canvas coordinates. However, a
    composite glyph may set clipping on the canvas before drawing its children.
      There is no guarantee that a call to draw will affect the screen immediately
    because of the possibility (indeed, likelihood) that the canvas is double-buffered.
    Furthermore, drawing order is important for glyphs when they are partially
    transparent and are drawn in the same plane. A glyph's draw operation therefore
    should not be called directly, but rather is implicitly called during screen update.
      Glyph::undraw notifies a glyph that its allocation is no longer valid. This
    operation is generally a performance hint to free cached information associated
    with drawing or inhibit some operation that is unnecessary while the glyph is not
    visible, such as cursor blinking. Glyph::undraw is not to be used when a glyph's
    allocation changes; in that case, allocate and draw can simply be called with
    different parameters.
      Glyph::print generates a representation of the glyph graph suitable for printing.
    The canvas and printer rendering interfaces are identical, and the default
      2-
    implementation of print is simply to call draw. Most glyphs therefore need not
    define a print operation. The reason for a distinct print operation is to allow
    a glyph to use different rendering requests for the screen and a printer. For
    example, a glyph might use 3D requests to the screen, or might compute more
    precise output for printing.
      Glyph::pick finds the glyphs that intersect a point or rectangle specified
    in canvas-relative coordinates. Conceptually, picking is like drawing and
    determining what glyphs intersect the specified point or rectangle. The
    coordinates are contained in the hit parameter. The depth parameter specifies
    which level in the Hit object to store the intersecting glyphs. When pick returns,
    the Hit parameter contains the glyphs that were hit.
      Figure 2.2 shows the hit protocol. A hit object may be constructed with a point,
    a rectangle, or an event. In the case of the event, the event pointer coordinates are
    used to detect intersection and glyphs can associate a handler with the pick result.
      Hit::event, Hit::left, Hit::bottom, Hit::right, Hit::top return information about
    the specified hit area. Hit::event returns nil if the point or rectangle constructors
    were used.
      Hit::push_transform, Hit::transform, and Hit::pop_transform modify the current
    intersection area for picking. These operations are just like the canvas operations
    with the same names except they apply to the hit information instead of a canvas.
      Glyphs record information in a hit object with Hit::begin, Hit::target and   
      
    typedef long GlyphIndex;
      typedef unsigned int GlyphBreakType;
      interface Glyph : Resource {
      void request(Requisition&) const;
      void allocate(Canvas*, const Allocation&, Extension&);
      void draw(Canvas*, const Allocation&) const;
      void undraw();
      void print(Printer*, const Allocation&) const;
      void pick(Canvas*, const Allocation&, int depth, Hit&);
      enum { no_break, pre_break, in_break, post_break };
      Glyph* compose(GlyphBreakType) const;
      void append(Glyph*);
      void prepend(Glyph*);
      void insert(GlyphIndex, Glyph*);
      void remove(GlyphIndex);
      void replace(GlyphIndex, Glyph*);
      void change(GlyphIndext);
      GlyphIndex count() const;
      Glyph* component(GlyphIndex) const;
      void allotment(GlyphIndext, DimensionName, Allotment&) const;
      };
      Figure 2.1: Glyph protocol   




      
    2-
    Hit::end. Hit::target indicates that a glyph's output intersects the hit region.
    Hit::begin and Hit::end are used by composite glyphs that should be on the hit
    list if and only if one of their components calls Hit::target. The parameters to
    Hit::begin and Hit::target have the same meaning. The depth is the level in the hit
    list where the information should be stored. The glyph is the hit glyph. The index
    is additional information about the hit. For a composite glyph, this is typically
    the index of the hit child. Hit::remove and Hit::retarget modify the current hit
    information.
      The remaining hit operations return information about a pick. The result is
    a list of paths, each of which contains a list of glyphs terminating with the
    glyphs that would draw through the pick region. Hit::count returns the number of
    paths. Hit::depth returns the index of the last glyph in a specified path. The path
    corresponding to the top-most glyph is in position zero. Hit::target and Hit::index
    return the information for a given path and depth.
      If a pick is done on a hit object constructed from an event, and one or more
    glyphs find the event of interest, they will associate a handler with the hit object.
    Hit::handler returns the top-most, deepest handler, or nil if there is none.


      2- 3   
      
    interface Hit {
      Hit(const Event*);
      Hit(Coord x, Coord y);
      Hit(Coord left, Coord bottom, Coord right, Coord top);
      const Event* event() const;
      Coord left() const, bottom() const, right() const, top() const;
      void push_transform();
      void transform(const Transformer&);
      void pop_transform();
      void begin(int depth, Glyph*, GlyphIndex, Handler* = nil);
      void target(int depth, Glyph*, GlyphIndex, Handler* = nil);
      void end();
      void remove(int depth, GlyphIndex target = 0);
      void retarget(
      int depth, Glyph*, GlyphIndex, Handler* = nil, GlyphIndex = 0
      );
      boolean any() const;
      int count() const;
      int depth(GlyphIndex target = 0) const;
      Glyph* target(int depth, GlyphIndex target = 0) const;
      GlyphIndex index(int depth, GlyphIndex = 0) const;
      Handler* handler() const;
      };
      Figure 2.2: Hit class interface.
    2.3 Composition

    BreakType defines the choices for how a composite glyph might break a group of
    glyphs in a layout. The break may occur before a glyph (pre_break), in the glyph
    (in_break), or after the glyph (post_break).
      Glyph::compose returns a new glyph that should be used to replace the target
    glyph when the break occurs. For example, discretionary white space in a
    document will turn into zero-size glue if a line-break or page-break occurs on it.

    2.4 Structure

    Several operations are provided to manipulate the list of components that make up
    a composite glyph. Primitive glyphs ignore these operations, while monoglyphs
    pass the operation through to their body. A monoglyph is therefore ``transparent''
    with respect to structure, allowing one to put a monoglyph around a composite and
    pass the result to another object that manipulates the components of the composite.
      Glyph::append (prepend) adds a given glyph to the end (beginning) of the
    component list. Glyph::insert adds a given glyph at a specified index in the list.
    Glyph::remove removes the glyph at the specified index. Glyph::replace replaces
    the glyph at the specified index with the given glyph. Glyph::change notifies a
    glyph that its component at the given index has changed, and therefore it might be
    necessary to reallocate it.
      Glyph::count returns the number of glyphs in its component list.
    Glyph::component returns the glyph in its component list at the given index.
    Glyph::allotment returns the allocation information in the given dimension for the
    glyph at the given index in its component list.

    2.5 Requisitions

    Glyphs define their geometric needs with a requisition, which specifies a
    requirement in each dimension. Figure 2.3 shows the requisition and requirement
    class interfaces.
      Requisition::penalty is overloaded to set or get the penalty associated with
    choosing a break at the position defined by the requisition. Requisition::require
    sets a requirement in a given dimension. Requisition::requirement returns the
    requirement for a given dimension.
      A requirement consists of a natural size, stretchability, shrinkability, and
    alignment. The maximum size is the natural size plus the stretchability; the
    minimum is the natural minus the shrinkability. It is possible to have negative
    minimum sizes. The alignment is a fraction that indicates the origin of the area.
    An alignment of zero means the origin is at the lower coordinate value; an

      2-
    alignment of one means it is at the upper coordinate value.
      There are four constructors for requirement: with no parameters, which makes
    the natural size undefined and the other fields zero; with a single coordinate that
    defines the natural size and makes the other fields zero; with explicit coordinates
    for the natural size, stretchability, and shrinkability, and a float value for the
    alignment; and with explicit coordinates for specifying the distances on each side
    of the origin.
      Requirement::equals compares two requirements (the target object and the
    argument) using a given tolerance for the individual coordinate comparisons.
    Requirement::defined returns whether the natural size has been defined. The
    overloaded functions natural, stretch, shrink, and alignment set and get the
    respective values.

    2.6 Allocations

    The actual size a glyph is given is defined by an allocation, which specifies
    an allotment in each dimension. Figure 2.4 shows the allocation and allotment
    class interfaces. An allotment specifies one dimension of an allocation with three
    values: an origin, a span, and an alignment. The origin is a position within the
    allotment and the span is the size of the allotment. The alignment is a fraction
    specifying the position of the origin. For example, if the origin is 1, span is 10,

      2- 5   
      
    interface Requisition {
      void penalty(int);
      int penalty() const;
      boolean equals(const Requisition&, float epsilon) const;
      void require(DimensionName, const Requirement&);
      const Requirement& requirement(DimensionName) const;
      Requirement& requirement(DimensionName);
      };
      interface Requirement {
      Requirement(Coord natural);
      Requirement(Coord natural, Coord stretch, Coord shrink, float);
      Requirement(
      Coord natural_lead, Coord max_lead, Coord min_lead,
      Coord natural_trail, Coord max_trail, Coord min_trail
      );
      boolean equals(const Requirement&, float epsilon) const;
      boolean defined() const;
      void natural(Coord), stretch(Coord), shrink(Coord);
      Coord natural() const, stretch() const, shrink() const;
      void alignment(float);
      float alignment() const;
      };
      Figure 2.3: Requisition and Requirement classes.
    and alignment is 0.5, then the allotment begins at -4 and ends at 6.
      The allocation constructor initializes each allotment to have zero values.
    Allocation::equals compares two allocations using a tolerance for individual
    coordinate comparisions. Allocation::allot sets the allotment for a given
    dimension. Allocation::allotment returns the allotment for a specified dimension.
      Several operations are provided for convenience when accessing allotments in
    the X and Y dimensions. Allocation::x and Allocation::y return the X and Y
    origins. Allocation::left and Allocation::right return the X dimension end-points,
    Allocation::bottom and Allocation::top return the Y dimension end-points.
      The Allotment class also provides an equals operation for comparing two
    allotments with a given tolerance. Allotment::origin, Allotment::span, and
    Allotment::alignment are overloaded names for setting and getting the allotment
    values. Allotment::offset adds to the current origin.
      Allotment::begin and Allotment::end return the end-points of an allotment.
    Allotment::begin is equivalent to the origin minus the alignment times the span.
    Allotment::end is equivalent to Allotment::begin plus the span.

    2.7 Extensions

    The area that defines where a glyph actually draws is called an extension. This
    area is typically used for update. If a glyph needs to be completely redrawn, the
    glyph's extension must be damaged.
      Extensions are represented in device-independent units, but must be rounded

      2- 6   
      
    interface Allocation {
      boolean equals(const Allocation&, float epsilon) const;
      void allot(DimensionName, const Allotment&);
      Allotment& allotment(DimensionName);
      const Allotment& allotment(DimensionName) const;
      Coord x() const, y() const;
      Coord left() const, right() const, bottom() const, top() const;
      };
      interface Allotment {
      Allotment(Coord origin, Coord span, float alignment);
      boolean equals(const Allotment&, float epsilon) const;
      void origin(Coord), offset(Coord), span(Coord);
      Coord origin() const, span() const;
      void alignment(float);
      float alignment() const;
      Coord begin() const;
      Coord end() const;
      };
      Figure 2.4: Allocation and allotment class interfaces
    out to the nearest device-dependent units. For example, if one of the bounds for
    one glyph's extension is 10.2 and another is 10.5, we would need to redraw
    both glyphs if the bounds translate to the same pixel coordinate. Because
    extensions are typically used to damage a canvas, the extension coordinates are
    canvas-relative.
      A glyph computes its extension as part of the allocate operation. Typically, a
    glyph will simply return its allocation rounded according to the canvas.
      Figure 2.5 shows the Extension protocol. Extension::set initializes an extension
    to the given allocation transformed and rounded for the given canvas.
    Extension::clear sets an extension to be an empty area. Extension::merge extends
    an extension to include a new area in addition to its current one.
      Extension::set_xy and Extension::merge_xy are short-hand for adjusting an
    extension to include a given bounding box. Extension::left, bottom, right, and top
    return the bounding box.

    2.8 Polyglyphs

    A composite glyph contains one or more components. Any glyph subclass
    may contain subcomponents, but composite glyphs are typically derived from
    PolyGlyph to be able to store and retrieve their children.
      The PolyGlyph protocol, shown in Figure 2.6 adds one operation beyond the
    base class, PolyGlyph::modified(GlyphIndex), which notifies the glyph that the
    given component has changed. This operation is called when a glyph is inserted
    or removed from the composite.

    2.9 MonoGlyphs

    MonoGlyph is an abstract class for glyphs that contain a single glyph, called its
    body. The default behavior of monoglyphs is to pass operations on to the body.
    For example, the implementation of MonoGlyph::draw simply calls draw on
      2- 7   
      
    interface Extension {
      void set(Canvas*, const Allocation&);
      void set_xy(Canvas*, Coord left, Coord bottom, Coord right, Coord top);
      void clear();
      void merge(const Extension&);
      void merge(Canvas*, const Allocation&);
      void merge_xy(
      Canvas*, Coord left, Coord bottom, Coord right, Coord top
      );
      Coord left() const, bottom() const, right() const, top() const;
      };
      Figure 2.5: Extension protocol
    the body. This feature is very useful because it means that a monoglyph can
    affect one aspect of the body's behavior without changing other aspects. In
    particular, monoglyphs usually do not change structure management. Therefore, a
    monoglyph can be #wrapped around a composite glyph and the result passed to
    an object that modifies the structure of the composite without knowing about the
    presence of the monoglyph. For example, suppose a prototype menu is built and
    returned to a function that appends the items. All the function need assume is that
    the prototype is some glyph; it can use Glyph::append to put in the items. The
    arrangement of the items will be defined by the aggregate and any additional
    decoration, such as a 3D borderframe or shadow, can be wrapped around the
    aggregate independently.
      Figure 2.7 shows the MonoGlyph base class interface. A non-nil glyph specifies
    the initial body. MonoGlyph::body is overloaded to set and return the body.
    2.9.1 Patches
    A patch stores its canvas and allocation for subsequent use to update its body. A
    patch is useful for objects that need to be redrawn independently, such as those
    that depend on some external data. Typically, a patch appears in the middle of a
    glyph instance graph, where a change would be too expensive to redraw the entire
    graph.
      Figure 2.8 shows the Patch class interface. Patch::canvas and Patch::allocation
    return the canvas and allocation most recently passed to Patch::draw.
    Patch::reallocate calls allocate on the body using the current allocation, usually
    because the body has changed in some way and will allocate its itself differently.
    Patch::redraw calls draw on the body using the current allocation. Patch::repick
    returns the result of calling pick on the body with the current canvas and allocation.




      2- 8   
      
    interface PolyGlyph : Glyph {
      PolyGlyph(GlyphIndex initial_size = 10);
      void modified(GlyphIndex);
      };
      Figure 2.6: Polyglyph protocol      




      interface MonoGlyph : Glyph {
      void body(Glyph*);
      Glyph* body() const;
      };
      Figure 2.7: MonoGlyph protocol
    2.10 Example

    See iv/src/examples/circle.




      2- 9   
      
    interface Patch : MonoGlyph {
      Patch(Glyph*);
      Canvas* canvas() const;
      const Allocation& allocation() const;
      void reallocate();
      void redraw() const;
      boolean repick(int depth, Hit&);
      };
      Figure 2.8: Patch protocol
    Chapter 3
    Event processing
    This chapter describes the InterViews mechanisms for processing user input. An
    event is an object that represents a user input action, such as pressing a mouse
    button or a keystroke. Events are low-level objects that application code should
    rarely need to access directly. A handler is an object that processes events. An
    input handler is a glyph that provides a handler that translates events to operations
    such as press, release, and keystroke.

    3.1 Events

    The event class interface is shown in Figure 3.1. Input events arrive in a single
    stream (per display) to an application. EventType is the kind of event (mouse
    motion, button down, etc.). An application receives all window system events,
    but Event::type is only defined for device input. Other events have the type
    Event::other_event. EventButton is the number of a button on a pointing device,
    where Event::any refers to any one of the buttons.
      Event::window returns the window that received the event. Event::pending
    tests if more events are waiting to be read. Event::unread puts the event at the
    front of the input queue for the display.




      3- 1   
      
    typedef unsigned int EventType;
      typedef unsigned long EventTime;
      typedef unsigned int EventButton;
      typedef unsigned int EventModifierKey;
      interface Event {
      enum { undefined, motion, down, up, key, other_event };
      enum { none, any, left, middle, right, other_button };
      enum { control, shift, capslock, meta };
      Window* window() const;
      boolean pending();
      void unread();
      EventType type() const;
      EventTime time() const;
      Coord pointer_x() const, pointer_y() const;
      EventButton pointer_button() const;
      boolean button_is_down(EventButton) const;
      boolean modifier_is_down(EventModifierKey) const;
      unsigned char keycode() const;
      unsigned int mapkey(char*, unsigned int len) const;
      };
      Figure 3.1: Event protocol
      
    Event::time returns a timestamp in milliseconds for the event. Event::pointer_x
    and Event::pointer_y return the pointer location for the event in coordinates
    relative to the lower-left corner of the window. Pointer locations are defined
    for motion, button, and keyboard events. Event::pointer_button returns the
    EventButton for a down or up event, Event::none for all other events.
    Event::button_is_down (Event::modifier_is_down) returns whether the given
    button (modifier key) was down before the event occurred.
      Event::keycode returns the code associated with a keystroke. Key codes are
    potentially platform-specific and should be avoided if possible. Event::mapkey
    finds the string binding for a given key. Event::mapkey is passed a buffer for
    the result and the size of the buffer; it returns the number of characters in the
    translated string. If the event is not a key event, Event::mapkey returns -1.

    3.2 Handlers

    A handler is an object that is passed an event to process. The only operation
    is Handler::event, which translates a raw event into an abstract operation.
    InputHandler is a monoglygph subclass that uses a handler to translate events.
    ActiveHandler is a subclass of input handler that detects when the input pointer
    enters or leaves its body. Figure 3.2 shows the handler, input handler, and active
    handler protocols.
      The InputHandler constructor is passed the glyph body (which can also
    be set with MonoGlyph::body) and a style. Though a glyph can in general
    have multiple parents, input handlers form a hierarchy for focus management.
    InputHandler::append_focusable adds a child, setting the child's parent to
    the target input handler. InputHandler::remove_focusable removes a child.
    InputHandler::focus sets the current focus for the input handler. The effect of
    setting focus is that key events (or in general any focusable event) will be
    processed by the focus input handler as opposed to an input handler under the
    input pointer coordinates.
      InputHandler::next_focus and InputHandler::prev_focus move the focus
    forward and backward through the children of an input handler.
    InputHandler::focus_in moves the focus #down the hierarchy and returns the
    handler that now has focus. InputHandler::focus_out notifies an input handler
    that it no longer will receive focusable events, in case it wishes to change its
    appearance.
      InputHandler::move, press, drag, release, and keystroke are called by the
    handler in response to motion, button down, motion while a button is down,
    button up, and key events. InputHandler::double_click is called when two
    button down events occurs within a threshold time. The threshold is set by the
    #clickDelay style attribute; the default is 250 milliseconds.
      InputHandler::allocation_changed is a notification that the glyph's size or
    position has changed; subclasses can override this operation and therefore

      3-
    typically do not need to define an allocate operation. InputHandler::redraw
    damages the canvas and area where the input handler was most recently drawn.
      The implementation of ActiveHandler notices when motion events first
    intersect the glyph's body, in which case ActiveHandler::enter is called, and when
    the motion next leaves the body, in which case ActiveHandler::leave is called.
    The default enter and leave operations do nothing; subclasses should define these
    operations as desired.

    3.3 Targets

    A target controls the behavior of picking on its body. A target is useful for
    defining a pick area that is not identical to the underlying object. For example, if
    one wanted to pick in a line of characters then one might wish to interpret the pick
    based on the line height instead of the heights of the individual characters. So, a
      3- 3   
      
    interface Handler : Resource {
      boolean event(Event&) ;
      };
      interface InputHandler : MonoGlyph {
      InputHandler(Glyph*, Style*);
      Handler* handler() const;
      InputHandler* parent() const;
      Style* style() const;
      void append_input_handler(InputHandler*);
      void remove_input_handler(InputHandler*);
      void focus(InputHandler*);
      void next_focus();
      void prev_focus();
      InputHandler* focus_in();
      void focus_out();
      void move(const Event&);
      void press(const Event&);
      void drag(const Event&);
      void release(const Event&);
      void keystroke(const Event&);
      void double_click(const Event&);
      void allocation_changed(Canvas*, const Allocation&);
      void redraw() const;
      };
      interface ActiveHandler : InputHandler {
      ActiveHandler(Glyph*, Style*);
      void enter();
      void leave();
      };
      Figure 3.2: Handler and InputHandler protocols
    pick lower than the top of the ``h'' in ``the'' but above the ``e'' will not miss.
      Figure 3.3 shows the target class interface. The target behavior is controlled by
    the sensitivity parameter to the constructor. TargetPrimitiveHit means the body is
    hit if the pick region intersects the target's allocation. TargetCharacterHit means
    the body is hit if the area intersects the target's allocation in the X dimension.




      3- 4   
      
    enum TargetSensitivity {
      TargetPrimitiveHit,
      TargetCharacterHit
      };
      interface Target : MonoGlyph {
      Target(Glyph* body, TargetSensitivity);
      };
      Figure 3.3: Target class interface
    Chapter 4
    Views
    This chapter describes the mechanisms for supporting multiple views of data.
    Currently, this support consists of three protocols: observable, observer, and
    adjustable. An observable object is one that has one or more observers that it can
    notify (typically when it changes). An adjustable object uses an observable for
    each dimension to keep track of observers that can scroll or zoom the visible areas
    of the object.

    4.1 Observable and Observer

    Figure 4.1 shows the observable and observer protocols. An observer can be
    attached or detached to an observable. Observable::notify calls Observer::update
    on each of the attached observers. When an observable object is destroyed, it will
    call Observer::disconnect on any attached observers.

    4.2 Adjustable

    An adjustable is an object that handles requests to modify its viewing area. For
    example, a scrollable list is adjustable in that a scrollbar or other object can
    request that a particular subrange of items in the list be shown.
      Figure 4.2 shows the adjustable protocol. Adjustable::attach and
    Adjustable::detach add an observer to the list of objects notified when a particular
    dimension changes. Adjustable::notify calls update on those observers attached to
    the given dimension. Adjustable::notify_all is equivalent to calling notify on
    every dimension.




      4- 1   
      
    interface Observable {
      void attach(Observer*);
      void detach(Observer*);
      void notify();
      };
      interface Observer {
      void update(Observable*);
      void disconnect(Observable*);
      };
      Figure 4.1: Observable and observer protocols
      
    Adjustable::lower and Adjustable::upper define a coordinate range for
    adjustment in a specific dimension. Adjustable::length is equivalent
    to Adjustable::upper minus Adjustable::lower. Adjustable::cur_lower and
    Adjustable::cur_upper define the region within a coordinate range that is currently
    in view. Adjustable::cur_length is equivalent to Adjustable::cur_upper minus
    Adjustable::cur_lower.
      Adjustable::scroll_forward and Adjustable::scroll_backward add a small fixed
    amount to Adjustable::cur_lower (where the amount is determined by the
    adjustable object). Adjustable::page_forward and Adjustable::page_backward
    add a larger fixed amount. Adjustable::scroll_to sets the adjustable's current
    lower coordinate to a specific value. Adjustable::scale_to sets the current length
    to a given fraction of the total length. Adjustable::zoom_to sets the scale in
    all dimensions at once. Adjustable::constrain restricts a value to be within the
    adjustable's lower and upper bounds.
       Example: see iv/src/examples/bvalue/main.c.

    4.3 View

    This section will be completed in the future.


      
    4- 2   
      
    interface Adjustable {
      Observable* observable(DimensionName) const;
      void attach(DimensionName, Observer*);
      void detach(DimensionName, Observer*);
      void notify(DimensionName) const;
      void notify_all() const;
      Coord lower(DimensionName) const;
      Coord upper(DimensionName) const;
      Coord length(DimensionName) const;
      Coord cur_lower(DImensionName) const;
      Coord cur_upper(DimensionName) const;
      Coord cur_length(DimensionName) const;
      void scroll_forward(DimensionName);
      void scroll_backward(DimensionName);
      void page_forward(DimensionName);
      void page_backwards(DimensionName);
      void scroll_to(DImensionName, Coord lower);
      void scale_to(DimensionName, float fraction);
      void zoom_to(float magnification);
      void constrain(DimensionName, Coord&) const;
      };
      Figure 4.2: Adjustable protocol
    4.4 Data

    This section will be completed in the future.

    4.5 Inset

    This section will be completed in the future.




      
    4-
    Chapter 5
    Windows
    The previous chapters covered the composition of physical (glyphs) and logical
    (views) objects. This chapter discusses the other objects necessary to manage
    where glyphs are drawn. A window is an object that can be mapped onto a screen
    and receive input. Associated with a window is the root of a directed acyclic graph
    of glyphs. The window creates a canvas that is bound to a portion of the screen
    when the window is mapped. The window calls Glyph::draw on the root glyph to
    refresh the canvas and Glyph::pick to determine what to do with input events
      Figure 5.1 shows the Window base class interface. Window::style sets or
    gets the style associated with the window. Several style attributes control
    characteristics of a window: #double_buffered controls whether the window is
    double-buffered by default, #visual specifies the name of a visual to use for the
    window, #visual_id specifies the id of the desired visual, and #overlay specifies
    whether overlay planes should be used for the window.




      5- 1   
      
    interface Window {
      Window(Glyph* = nil);
      void style(Style*);
      Style* style() const;
      void display(Display*);
      Display* display() const;
      Canvas* canvas() const;
      void cursor(Cursor*);
      Cursor* cursor() const;
      void push_cursor();
      void pop_cursor();
      void place(Coord left, Coord bottom);
      void align(float x, float y);
      Coord left() const, bottom() const, width() const, height() const;
      void map(), unmap();
      boolean is_mapped() const;
      void raise(), lower();
      void move(Coord left, Coord bottom);
      void resize();
      void receive(const Event&);
      void grab_pointer(Cursor* = nil) const;
      void ungrab_pointer() const;
      void repair();
      };
      Figure 5.1: Window protocol
      
    Window::display sets or gets the display that a window is mapped on (or nil if
    the window is not currently mapped). Window::canvas returns the canvas that the
    window passes to its glyph for drawing.
      Window::cursor sets or gets the image that tracks a pointing device's position
    when the it is inside the window. Cursors are defined by two bitmaps and
    a ``hot spot''. The mask bitmap specifies which pixels are to be drawn,
    and the pattern bitmap specifies which pixels are in foreground color and
    which are in background color. The hot spot specifies the location of the
    pointing device relative to the cursor's lower-left corner. The foreground and
    background colors for a cursor are defined by the attributes #pointerColor and
    #pointerColorBackground in the window's style.
      Figure 5.2 shows the cursor protocol. A cursor can be created from specific
    data, pattern and mask bitmaps, a character in a font, or an index into the standard
    cursor information for the target window system. If the cursor is specified with
    bitmaps, the hot spot is the origin of the pattern bitmap; if specified with a
    character, it is the origin of the character's bitmap in the font. An index implies
    both bitmaps as well as the hot spot. Specific values for the index are usually
    defined in an include file. For example, standard X11 cursors are defined in the
    file .
      Window::place specifies the desired screen coordinates for a window.
    Window::align specifies a desired alignment. The alignment values are fractions
    that indicate where the window should appear relative to its coordinates as
    specified by a call to Window::place. For example, an alignment of 0.0,1.0 means
    the placement specifies the upper-left corner of the window. An alignment of
    0.5,0.5 means the placement specifies the center of the window. Unless specified,
    the alignment will be 0.0,0.0, meaning the placement coordinates specify the
    lower-left corner of the window.
      Window::map requests the window to be mapped onto the screen. If no display
    has been set, then the session's default display is used. Window::map may be
    asynchronousone cannot assume the window is usable immediately after calling
    map. Window::unmap requests that the window be removed from the screen.
      Window::raise and Window::lower control the stacking order of a window on
    the screen. Window::raise makes the window above all the other windows on the
    screen; Window::lower make the window below all the others. These operations
    usually are neither necessary nor appropriate, as stacking order should normally




      5- 2   
      
    interface Cursor {
      Cursor(short x, short y, const int* pattern, const int* mask);
      Cursor(const Bitmap* pat, const Bitmap* mask);
      Cursor(const Font*, int pattern, int mask);
      Cursor(int index);
      };
      Figure 5.2: Cursor class interface
    be under control of the user through a window manager.
      The window systems delivers input events to a particular window, which in turn
    tries to find a handler to process each event. Window::receive examines an event,
    handling window maintenance events internally. For example, X expose and
    configure events are handled directly by Window::receive.
      Window::grab_pointer takes control of pointer input events for the display.
    Other applications will not receive pointer events until Window::ungrab_pointer
    is called to release control. If a cursor is passed to Window::grab_pointer, it will
    be used when the pointer is outside the window during the grab.
      If any part of a window's canvas has been damaged, Window::repair will
    call draw on the root glyph and perform the necessary screen update when
    double-buffering. All windows on a display will be repaired automatically
    before blocking for input from the display, so applications usually need not call
    Window::repair directly.

    5.1 ManagedWindow

    A managed window specifies information for a window manager to use.
    ManagedWindow is an abstract base class with four predefined descendants:
    ApplicationWindow, TopLevelWindow, TransientWindow, and IconWindow.
    An application should create one application window, which makes information
    about command-line arguments available to a session manager, if present on the
    system. After the application window, normal windows are top-level. A top-level
    window can have a ``group leader'', which is typically the application window. A
    window manager may allow quick control of all windows with the same group
    leader, such as when iconifying or deiconifying.
      A transient window is often treated specially by window managers. It may be
    decorated differently (or not at all), or automatically unmapped when the main
    window is iconified. Transient windows are used for temporary controls, such as
    dialog boxes, but not for unmanaged windows such as popups or pulldowns. A
    transient is usually associated with another managed window.
      An icon window is a window that is mapped when its associated window
    is iconified and unmapped when its associated window is deiconified. Calling
    Window::map on an icon window will therefore bind it to the window system, but
    will not map it on the screen.
      Figure 5.3 shows the ManagedWindow protocol. Most of the operations on
    a managed window set or return information associated with the window. In
    addition, ManagedWindow interprets additional attributes in its style inherited
    from the base class. The attribute #name specifies a string name for the
    window manager to use, #iconName specifies a string for the window's icon,
    #geometry specifies the desired geometry, and #iconGeometry specifies the
    desired geometry for the window's icon. Geometry specifications are strings of
    the form ``WxH+X+Y'' where W is the width, H the height, X the left corner, and

      5-
    Y the top corner of the window. Either the position or the size may be omitted,
    and the position can use ``'' instead of ``+'' to denote distance from the opposite
    of the display to the opposite side of the window. For example, a X value
    specifies that the right side of the window should be a distance of X from the right
    edge of the screen.
      ManagedWindow::icon_bitmap and ManagedWindow::icon_mask specify two
    bitmaps to use to draw an icon. The mask defines the area to be drawn and the
    bitmap defines the foreground and background areas. Pixels that correspond to a
    one in the bitmap and a one in the mask are drawn with the foreground color.
    Pixels that correspond to a zero in the bitmap and a one in the mask are draw with
    the background color. Pixels that correspond to a zero in the mask are not drawn.
      ManagedWindow::icon specifies a second window to map when the first
    window is iconified. Using a window as an icon overrides the other icon
    information. Therefore, it does not make sense to use ManagedWindow::icon
    in conjunction with icon_bitmap, icon_mask, or the #iconName and
    #iconGeometry attributes.
      ManagedWindow::iconic specifies the initial state of a window. If iconic is true,
    mapping a window will actually map its icon instead. ManagedWindow::iconic
    need not be called directly by an application; it is called automatically if specified
    by user customization information.
      ManagedWindow::iconify requests the window be unmapped and the window's
    icon be mapped to the screen. ManagedWindow::deiconify reverses the operation,
    unmapping the icon and mapping the original window. It does not make sense to
    iconify or deiconify an icon window.
      ManagedWindow::focus_event specifies handlers for the window receiving and
    losing keyboard focus from the window manager. ManagedWindow::wm_delete
    specifies a handler for a request from the window manager to delete the window.
      5- 4   
      
    interface ManagedWindow : Window {
      void icon_bitmap(Bitmap*);
      Bitmap* icon_bitmap() const;
      void icon_mask(Bitmap*);
      Bitmap* icon_mask() const;
      void icon(ManagedWindow*);
      ManagedWindow* icon() const;
      void iconic(boolean);
      boolean iconic() const;
      void iconify();
      void deiconify();
      void focus_event(Handler* in, Handler* out);
      void wm_delete(Handler*);
      };
      Figure 5.3: ManagedWindow class interface
    If the handler is nil (which is the initial value), then the response to this event will
    be to call Session::quit.
      Figure 5.4 shows the operations on the ManagedWindow subclasses.
    ApplicationWindow and IconWindow provide no additional operations beyond a
    constructor. TopLevelWindow provides an operation to set or return its group
    leader. TransientWindow is a subclass to TopLevelWindow that can additionally
    be associated with a primary window with TransientWindow::transient_for.

    5.2 PopupWindow

    A popup window is mapped directly to a screen without window manager
    interaction (or knowledge). In the X Window System, a popup window will
    override the normal redirection of map requests to window managers. Popups on
    X also will request that the pixels under the popup be saved to avoid a subsequent
    exposure when the popup is unmapped.
      Popups should only be used for temporary windows, such as popup or pulldown
    menus. Because they do not go through the window manager, popups should be
    placed explicitly. Here is an example of using a popup that appears below a
    menubar, aligning the top of the popup to the lower left corner of the menubar:
      
    void pulldown(Window* menubar, Glyph* g) {
      PopupWindow* popup = new PopupWindow(g);
      popup->place(menubar->left(), menubar()->bottom());
      popup->align(0.0, 1.0);
      popup->map();

      
    5- 5   
      
    interface ApplicationWindow : ManagedWindow {
      ApplicationWindow(Glyph*);
      };
      interface TopLevelWindow : ManagedWindow {
      TopLevelWindow(Glyph*);
      void group_leader(ManagedWindow*);
      ManagedWindow* group_leader() const;
      };
      interface TransientWindow : TopLevelWindow {
      TransientWindow(Glyph*);
      void transient_for(ManagedWindow*);
      void ManagedWindow* transient_for() const;
      };
      interface IconWindow : ManagedWindow {
      IconWindow(Glyph*);
      };
      Figure 5.4: ManagedWindow subclasses
      }


    5.3 Display

    A display is the unit of window system control; typically it consists of a single
    screen, keyboard, and a mouse or other pointing device. Application objects
    typically need not deal directly with a display; the functionality of the window
    class is normally sufficient.
      Figure 5.5 shows the display class interface. Display::open is a static member
    function that opens a connection to the display with the given name. The
    interpretation of a display name is system-dependent. On X, the name is
    host:number where host is a machine's hostname and number is the index for the
    display connected to that host (typically 0). If successful, Display::open returns
    a pointer to a display object. If not successful, it returns nil. Display::close
    terminates the connection.
      Display::width and Display::height return the dimensions in coordinates of
    the display's current screen. Display::a_width and Display::a_height return the
    dimensions in points (72 points =       one inch).




      5- 6   
      
    interface Display {
      static Display* open(const String&);
      static Display* open();
      virtual void close();
      virtual Coord width() const;
      virtual Coord height() const;
      virtual Coord a_width() const;
      virtual Coord a_height() const;
      int to_pixels(Coord) const;
      Coord to_coord(int) const;
      virtual void set_screen(int);
      virtual void style(Style*);
      virtual Style* style() const;
      virtual void repair();
      virtual void flush();
      virtual void sync()
      virtual void ring_bell(int);
      virtual void set_key_click(int);
      virtual void set_auto_repeat(boolean);
      virtual void set_pointer_feedback(int thresh, int scale);
      virtual void move_pointer(Coord x, Coord y);
      };
      Figure 5.5: Display class interface.
      
    Display::to_pixels and Display::to_coord convert between coordinates and
    pixels. The conversion is a function of the dpi attribute, which is 75 by default.
    One coordinate unit length is a printer's point, defined as 72/dpi pixels.
      Display::set_screen sets the current screen to use for display operations.
    Initially, current screen is set to 0.
      Display::repair calls Window::repair for each window on the display that has
    a canvas with damage. It is not necessary to call Display::repair directly, as
    windows will automatically be repaired before blocking for input events.
      Display::flush and Display::sync are used to synchronize with the window
    system. Display::flush repairs all damaged windows on the display and ensures
    that any pending requests have been sent to the window system. Display::sync is
    the same as Display::flush, but additionally waits for an acknowledgement from
    the window system.
      Display::ring_bell sounds the workstation's bell at a specified volume. The
    parameter should be between 0 and 100, where 0 is silent and 100 is the loudest
    possible bell.
      The operations set_key_click, set_auto_repeat, and set_pointer_feedback
    modify the key click volume, the flag determining whether keys should repeat,
    and the pointer interpretation parameters, respectively. Display::move_pointer
    changes the position of the input pointer. This operation can have surprising
    effects to the user and should generally be avoided.




      5-
    Chapter 6
    Rendering
    This chapter describes the InterViews classes for drawing on the screen and on a
    printer. The two primary classes are Canvas, which represents an area on the
    screen, and Printer, which sends output suitable for printing to an output stream.
    The drawing classes are intended to be simple and resolution-independent. The
    programming interface resembles the PostScript drawing operations.
      Printer is a subclass of Canvas, and as such implements the same drawing
    operations as Canvas. However, it is possible that glyphs may use other rendering
    operations than those provided by Canvas, such as for 3D. In this case, glyphs
    should provide distinct draw and print operations. If a glyph does not need
    operations other than those provided by Canvas then the glyph can rely on default
    implementation of drawing on a printer, which just calls the canvas-directed draw
    with the printer as the target.

    6.1 Graphics Attributes

    InterViews provides classes that represent graphics attributes such as colors
    and fonts. The instances are all sharable, meaning the classes are derived
    from Resource. The objects are also display-independent, meaning they will
    correspond to several underlying objects in applications that run on multiple
    displays. For example, a single InterViews color object might have different pixel
    values on different displays.
    6.1.1 Brush
    A brush defines the line thickness and line style for drawing operations. The
    effect of these operations is as if a line segment equal in length to the
    brush's width were dragged along an infinitely thin path between the specified
    coordinates. At each point along the path the brush is angled perpendicular to the
    path. As a special case, a brush width of zero specifies a minimal-width line.
    Many devices can render minimal-width lines more quickly than wide lines, but
    the resulting display may vary slightly across devices. A solid brush style paints
    all pixels along the path with a single color. A dashed brush defines alternating
    foreground and background segments, measured along the length of the path.
    Foreground segments are painted, while background segments are not.
      Figure 6.1 shows the Brush class interface. The first constructor creates a solid
    brush of the given width. The second constructor creates a brush with the given
    width and line style. The pattern is an array of integers that specifies the length of
    successive foreground and background segments. Even-numbered array indices
    (starting from 0) specify the length of foreground segments; odd-numbered
      6-
    indices specify background segments. The
    count is the number of entries in the
    array. The count can be zero, which specifies a solid brush. The last constructor
    defines a brush with a given width and a style specified by a bit vector. The
    least significant 16 bits of
    pattern are interpreted as a bit pattern, with one bits
    specifying foreground segments and zero bits specifying background segments.
    6.1.2 Color
    A color object defines an output color, which is specified by a mix of RGB (red,
    green, and blue) intensities, and an alpha value for blending. Figure 6.2 shows the
    Color class interface. RGB and alpha values are represented as floating point
    numbers between 0 and 1, where 1 is full intensity (or visibility in the case of
    alpha). A color object is created with the RGB intensities, an alpha value (default
    is 1.0), and a drawing operation. A color drawing operation need be specified
    only on rare occasions. The default operation, Copy, blends the color in directly.
    The Xor operation uses a pixel value computed by taking the exclusive-or of the
    color and the existing pixel value. Xor is only useful on a monochrome system.
      Color::lookup returns the color with the given name as defined on the given
    display or nil if the name is not defined. Color::distinguished determines if two
    colors are distinct on a particular display. A common use of Color::distinguished
    is to check if a highlighting color is distinct from foreground and background
    colors. Color::intensities returns the RGB values for a given color on a given
    display. Color::brightness creates a new color that is brighter or darker than
    the given color by a certain adjustment. If the adjust parameter is positive, it
    indicates the new intensity should be the given fraction of the distance between
    the current intensity and full intensity. If the parameter is negative, its absolute
    value specifies a distance to zero intensity.
      InterViews automatically translates an RGB specification to the appropriate
    pixel value for a window. This approach hides the system-dependent details of
    color management from applications, making them more portable and giving
    greater flexibility to graphics system implementors. Under the X Window System,
    color-intensive applications might not find the default color implementation
    acceptable. To assist such applications, InterViews provides a way to specify an
    X visual, either on the command-line with the ``-visual'' flag, or with a ``visual''
    X resource defined to the desired visual type. For example, on displays that
    support TrueColor (which means pixel values can be computed directly from
    RGB values) but for which the default visual is not TrueColor, a user could run an
    application with ``-visual TrueColor'' or define ``*app*visual:TrueColor'' in the
      6- 2   
      
    interface Brush : Resource {
      Brush(Coord width);
      Brush(int* pattern, int count, Coord width);
      Brush(int pattern, Coord width);
      };
      Figure 6.1: Brush class interface   




      
    6-
    application defaults file.
    6.1.3 Font
    A font defines a mapping between character codes and their appearance on the
    screen. PSFont is a subclass of Font that uses PostScript metrics for character
    widths, if the metrics are available on the system. Figure 6.3 shows the Font and
    PSFont class interfaces. The Font constructor is given the full name of the font
    and a scaling factor. If the font is used on a display that does not recognize the
    name, then a default font will be used. Font::find can be used to compute a valid
    fullname for a font from a given font family name, desired point size, and font
    style (such as italic or bold). If a font is available that matches all but the point
    size, Font::find will return the font with
    scale set to the ratio of the desired point
    size to the actual point size.
      Font::name returns the full name of the font. Font::encoding returns the
    character set identification, such as ``iso8859'' for ISO Latin. Font::size returns
    the point size of the font.
      Font::font_bbox, Font::char_bbox, and Font::string_bbox return information
    about the overall font, a specific character in the font, or a string of characters.
    Each operation returns a FontBoundingBox object, which has operations to return
    detailed information.
      FontBoundingBox::ascent returns the extent above the font's baseline;
    FontBoundingBox::descent returns the extent below the font's baseline.
    FontBoundingBox::left_bearing returns the left edge of the bitmap associated
    with a character; FontBoundingBox::right_bearing returns the right edge.
      Font::width on a single character returns the width of a character's bitmap
    and on a string it returns the sum of the widths of the individual characters.
      6- 3 6- 3   
      
    typedef float ColorIntensity;
      typedef unsigned int ColorOp;
      interface Color : Resource {
      enum { Copy, Xor };
      Color(
      ColorIntensity r, ColorIntensity g, ColorIntensity b,
      float alpha = 1.0, ColorOp = Copy
      );
      Color(const Color&, float alpha = 1.0, ColorOp = Copy);
      static const Color* lookup(Display*, const String& name);
      static const Color* lookup(Display*, const char*);
      boolean distinguished(Display*, Color*);
      void intensities(
      Display*, ColorIntensity& r, ColorIntensity& g, ColorIntensity& b
      ) const;
      const Color* brightness(float adjust) const;
      };
      Figure 6.2: Color class interface
    Font::index returns the index of the character in a string that would be offset
    coordinates from the left if the string were displayed. If between is false, the
    index of the character that contains
    offset is returned; otherwise the index of the
    character following the between-character space that is nearest
    offset is returned.
    In either case a negative offset will return an index of zero and an offset beyond
    the end of the string will return an index equal to the length of the string.
    6.1.4 Transformer
    A transformer object represents a 3x2 matrix for use in translating 2D coordinates.
    Figure 6.4 shows the Transformer class interface. The transformer constructor
    with no parameters creates an identity matrix. The other constructor takes the
    explicit matrix values as parameters. Transformer::identity returns whether the
    matrix is currently the identity matrix.

      6- 4 6- 4   
      
    interface FontBoundingBox {
      Coord left_bearing() const, right_bearing() const;
      Coord width() const, ascent() const, descent() const;
      Coord font_ascent() const, font_descent() const;
      };
      typedef long FontCharCode;
      interface Font : Resource {
      Font(const String&, float scale = 1.0);
      Font(const char* fullname, float scale = 1.0);
      static boolean find(
      const char* family, int size, const char* style,
      const char*& fullname, float& scale
      );
      static const Font* lookup(const char*);
      static const Font* lookup(const String&);
      const char* name() const;
      const char* encoding() const;
      Coord size();
      void font_bbox(FontBoundingBox&) const;
      void char_bbox(FontCharCode, FontBoundingBox&) const;
      void stringt_bbox(const char*, int, FontBoundingBox&);
      virtual Coord width(FontCharCode);
      virtual Coord width(const char*, int);
      virtual int index(const char*, int, float offset, boolean between);
      };
      interface PSFont : Font {
      PSFont(
      const char* psname, Coord size, const char* encoding, float scale
      );
      };
      Figure 6.3: Font and PSFont class interfaces
      
    Transformer::premultiply and Transformer::postmultiply set the matrix to be
    the result of multiplying the matrix and the given matrix. Two operations are
    necessary because matrix multiplication is not commutative for 2D coordinates.
    Premultiply means the current matrix is on the left-hand side of the multiplication,
    postmultiply means the current matrix is on the right. Transformer::invert sets the
    matrix to its inverse.
      Transformer::translate modifies the matrix to add
    dx to the x coordinate and dy
    to the y coordinate. Transformer::scale modifies the matrix to multiply the x and
    y coordinates by
    sx and sy, respectively. Transformer::rotate modifies the matrix
    to rotate x and y coordinates by a given angle in degrees. Transformer::skew
    modifies the matrix to skew coordinates by
    sx and sy.
      
    Transformer::transform multiplies the given coordinates by the matrix to
    compute transformed coordinates. The coordinates can either transformed in
    place stored in specific out parameters (tx, ty). Transformer::inverse_transform
    performs the inverse mapping; taking transformed coordinates and returning the
    original coordinates.
      The following example shows how to use transformers:
      
    Transformer t; // start with identity
      t.rotate(90.0);
      t.translate(20.0, 10.0);
      t.scale(0.5, 0.5);
      float x = 1.0, y = 0.0;
      float tx, ty;




      
    6- 5 6- 5   
      
    interface Transformer : Resource {
      Transformer();
      Transformer(
      float a00, float a01, float a10, float a11, float a20, float a21
      );
      boolean identity() const;
      void premultiply(const Transformer&);
      void postmultiply(const Transformer&);
      void invert();
      void translate(float dx, float dy);
      void scale(float sx, float sy);
      void rotate(float angle);
      void skew(float sx, float sy);
      void transform(floatx, floaty);
      void transform(float x, float y, floattx, floatty);
      void inverse_transform(floatx, floaty);
      void inverse_transform(float tx, float ty, floatx, floaty);
      void matrix(floata00, floata01, floata10, floata11, floata20, floata21);
      };
      Figure 6.4: Transformer protocol
      t.transform(x, y, tx, ty);
      // now tx = 10.0, ty = 5.5
    Although the transformation is a single step, one can think of it as individual steps
    for each of the rotate, translate, and scale steps. First the given point (1.0,0.0) is
    rotated to (0.0,1.0), then it is translated to (20.0,11.0), finally it is scaled to
    (10.0,5.5).
    6.1.5 Bitmap
    A bitmap is a two-dimensional array of boolean values. A bitmap is useful for
    stenciling; that is, drawing through a mask that allows some pixels to be drawn
    but prevents others from being changed. The Stencil class can be used to put a
    bitmap in a glyph graph.
      Figure 6.5 shows the Bitmap class interface. There are two constructors
    for bitmaps. One takes the bitmap data, width, height, and origin. The other
    constructor creates a bitmap for a given character in a font, optionally scaling by a
    given factor. In this case, the bitmap width and height will reflect the actual size
    of the character glyph and the bitmap origin will be the same as the character
    origin.
      Bitmap::open operation tries to open a file containing a bitmap definition in the
    format produced by the X bitmap program. If the file is found and is a valid
    format, open returns true and sets the bitmap information.
      Bitmap::peek and Bitmap::poke are used to read and write at specified positions
    in the bitmap. Bitmap::width and Bitmap::height return the width and height of
    the bitmap in coordinates, while Bitmap::pwidth and Bitmap::pheight return the
    number of bits defined in each dimension.
      Treating the bitmap origin as (0,0), Bitmap::left_bearing, Bitmap::right_bearing,
    Bitmap::ascent, and Bitmap::descent return the left, right, top, and bottom
    coordinates of the bitmap, respectively. For example, a 16x16 bitmap with its
    origin at (7,5) would have a left_bearing of -7, a right_bearing of 9, an ascent of
    12, and a descent of -5.




      6- 6 6- 6   
      
    interface Bitmap : Resource {
      Bitmap(
      void*, unsigned int width, unsigned int height, int x0 = -1, int y0 = -1
      );
      Bitmap(Font*, int code, float scale = 1.0);
      static Bitmap* open(const char* filename);
      void poke(boolean set, unsigned int x, unsigned int y);
      void peek(unsigned int x, unsigned int y);
      Coord width() const, height() const;
      unsigned int pwidth() const, pheight() const;
      Coord left_bearing() const, right_bearing() const;
      Coord ascent() const, descent() const;
      };
      Figure 6.5: Bitmap protocol
    6.1.6 Raster
    A raster is a color image specified by a two-dimensional array of colors. The
    Image class can be used to put a raster in a glyph graph. The TIFFRaster class
    provides a single operation, load, for reading a TIFF image file and creating a
    raster for it. If the file is not readable or not a valid TIFF file, TIFFRaster::load
    will return nil.
      Figure 6.6 shows the Raster and TIFFRaster class interfaces. The raster
    constructor is given the size of the array of colors. Raster::width and
    Raster::height return the dimensions of the raster in coordinates, while
    Raster::pwidth and Raster::pheight return the dimensions of the array. A raster's
    origin is always the lower left corner.
      Raster::peek and Raster::poke read and write the color array, accessing colors
    in terms of the RGB intensities and an alpha value. Peek and poke operations are
    guaranteed to be cheap; that is, any processing (especially interaction with the
    window system) will be deferred until the raster is next displayed.

    6.2 Canvas

    A canvas is a 2-dimensional area on which to draw. The base implementation
    draws on a portion of the screen, normally created by a window object rather
    than directly by an application. The Printer subclass uses the same rendering
    operations to generate PostScript to a file. Thus, it is possible to write a single
    drawing routine that can be used to generate screen or printer output.
      Figure 6.7 shows the canvas and printer operations. For screen canvases,
    Canvas::window returns the window containing the canvas; otherwise it returns




      6- 7 6- 7   
      
    interface Raster : Resource {
      Raster(unsigned int pwidth, unsigned int pheight);
      Coord width() const, height() const;
      unsigned int pwidth() const, pheight() const;
      void peek(
      unsigned int x, unsigned int y,
      ColorIntensity& r, ColorIntensity& g, ColorIntensity& b, float& alpha
      ) const;
      void poke(
      unsigned int x, unsigned int y,
      ColorIntensity r, ColorIntensity g, ColorIntensity b, float alpha
      );
      };
      interface TIFFRaster {
      static Raster* load(const char* filename);
      };
      Figure 6.6: Raster and TIFFRaster protocols
    nil. Canvas::width and Canvas::height return the dimensions of the canvas in
    coordinates.
      The canvas rendering operations are similar to the PostScript
    drawing operations. Canvas::new_path, Canvas::move_to, Canvas::line_to,
    Canvas::curve_to, and Canvas::close_path are used to define a list of coordinates
    on which to perform a drawing operation. Canvas::move_to sets the position in
    the path, and Canvas::line_to extends the path to a new position. Canvas::curve_to
    also extends the path, but with a Bezier curve between the old and new positions.
    Canvas::close_path closes the path. Canvas::stroke draws along the current path
    with a given brush and color. Canvas::fill draws inside the path with a given
    color. Canvas::clip restricts subsequent drawing to be inside the path. Clipping is
    cumulative; that is, two consecutive clip operations will result in a clipping region
    that is the intersection of the paths specified by the two requests.
      Canvas::line, Canvas::rect, Canvas::fill_rect, and Canvas::clip_rect are provided
    for convenience. Canvas::line is equivalent to stroking a path with two points,
    Canvas::rect strokes a rectangular path, Canvas::fill_rect fills a rectangular path,
    and Canvas::clip_rect restricts subsequent output to be within a rectangular path.
      Drawing operations are typically batched to improve performance. For
    example, a series of Canvas::character operations might be combined into a single
    request on many graphics systems. An application cannot determine if or when a
    particular operation has completed. No synchronization operations are defined on
    a canvas, as several canvases may be active at the same time. Display::flush or
    Display::sync can be used to wait until the display starts or finishes drawing,
    respectively.
      As an example of the drawing operations, the following code draws a filled
    triangle with corners (x1,y1), (x2,y2), and (x3,y3):
      
    canvas->new_path();
      canvas->move_to(x1, y1);
      canvas->line_to(x2, y2);
      canvas->line_to(x3, y3);
      canvas->close_path();
      canvas->fill(color);

    6.3 Printer

    A printer is a 2-D drawing surface like a canvas, but that generates output for
    hardcopy or previewing. The printer class normally generates PostScript text to a
    file; other printer formats may be available at a particular site.
      Printer is a subclass of Canvas with different implementations for the drawing
    operations. Thus, a printer can be passed to an operation expecting a canvas. The
    printer class also provides a few additional operations.
      The printer constructor takes a pointer to an output stream where the print
    representation will be written. Printer::resize specifies the boundaries of the
    printed page. Printer::comment generates text that will appear in the output
      6- 8 6-
    stream, but will not show on the printed page. Printer::page generates information
    about the current page. This operation will not result in any printed output, but is
    used by previewers. Printer::flush forces any locally-buffered data to be written.




      6- 9 6- 9   
      
    interface Canvas {
      Window* window() const;
      Coord width() const, height() const;
      PixelCoord to_pixels(Coord) const;
      Coord to_coord(PixelCoord) const;
      Coord to_pixels_coord(Coord) const;
      void new_path();
      void move_to(Coord x, Coord y);
      void line_to(Coord x, Coord y);
      void curve_to(Coord x, Coord y, Coord x1, Coord y1, Coord x2, Coord y2);
      void close_path();
      void stroke(const Color*, const Brush*);
      void rect(Coord l, Coord b, Coord r, Coord t, const Color*, const Brush*);
      void fill(const Color*);
      void fill_rect(Coord l, Coord b, Coord r, Coord t, const Color*);
      void character(
      const Font*, int ch, Coord width, const Color*, Coord x, Coord y
      );
      void stencil(const Bitmap*, const Color*, Coord x, Coord y);
      void image(const Raster*, Coord x, Coord y);
      void push_transform(), pop_transform();
      void transform(const Transformer&);
      void transformer(const Transformer&);
      const Transformer& transformer() const;
      void push_clipping(), pop_clipping();
      void clip();
      void clip_rect(Coord l, Coord b, Coord r, Coord t);
      void damage(const Extension&);
      void damage(Coord l, Coord b, Coord r, Coord t);
      boolean damaged(const Extension&) const;
      boolean damaged(Coord l, Coord b, Coord r, Coord t) const;
      };
      interface Printer : Canvas {
      Printer(ostream*);
      void resize(Coord left, Coord bottom, Coord right, Coord top);
      void comment(const char*);
      void page(const char*);
      void flush();
      };
      Figure 6.7: Canvas and printer protocols
    Chapter 8
    Styles
    User interface toolkits traditionally have coupled the management of style
    attributes such as color and font with the composition of objects in a window.
    This coupling is too rigid and inefficient for many applications because attributes
    are logical information, whereas composition is a physical organization. For
    example, a document logically contains text and graphics organized into chapters,
    sections, subsections, and paragraphs. Physically, the document contains lines,
    columns, and pages. The font of a string of characters in the document is
    independent of whether there is a line break within the string or not, thus the style
    information is orthogonal to the layout.
      InterViews provides a style class for organizing user interface attributes. A
    style is similar to an environment in a text formatting system such as Scribe.
    Styles may be nested hierarchically, and attributes defined in an outer style are
    visible in an inner style if not otherwise defined. A style consists of an optional
    name, an optional list of prefixes for wildcard-matching, a collection of attributes
    (name-value pairs), a collection of styles nested inside the style, and a parent style.

    8.1 Defining a style

    Figure 8.1 shows the style class operations for creating and accessing simple
    style information. When a style is created, its name and parent style may be
    specified. The default parent style is nil. Style::name sets or gets the style's
    name. Style::parent gets the style's parent. The parent cannot be set directly, but
    can be changed by appending the style to its (new) parent.
      Style::append and Style::remove add and delete a style from the list of styles
    nested inside another style. Style::children returns the number of nested styles.
    Style::child returns the indexed child in the list. Style::find_style returns the
    nested style with the given name or nil if there is none.
      Style::attribute adds a pair to the list of attributes in the style. If
    an attribute is already defined with the name, the value will be updated unless
    the specified priority is lower than the already-defined priority of the attribute
    Style::remove_attribute deletes the named attribute from the style's attribute list.
    Style::attributes and the get form of Style::attribute can be used to retrieve all the
    attributes defined on a style. The order of the list is arbitrary.

    8.2 Finding an attribute

    The style class provides two overloaded functions for finding an attribute value
      8-
    given the name. Style::find_attribute takes two parameters and returns a boolean
    value that is true if the attribute is found and false otherwise. The first parameter
    is the desired name, which can either be passed as a String object or a const
    char*.
    The second parameter is a reference to where the value of the attribute
    should be stored if found. If the parameter is a string, then the value is simply
    copied directly. If it is a long or double, then value string is converted to a
    number. If the result parameter is a Coord, then the value string is converted to a
    number and multiplied by the units specified in the value string after the number.
    The unit specification can be #in for inches, #cm for centimeters, #mm for
    millimeters, #em for the width in points of the character #m in the style's font,
    and #pt for points.
      The other function for finding an attribute is Style::value_is_on. This function
    is equivalent to calling Style::find_attribute and testing if the value string is #on
    or #true. The test is case-insensitive.


      8- 2   
      
    interface Style : Resource {
      Style();
      Style(const String& name);
      Style(Style* parent);
      Style(const String& name, Style* parent);
      void name(const String&);
      const String* name() const;
      void alias(const String&);
      long alias_count() const;
      const String* alias(long) const;
      Style* parent() const;
      void append(Style*);
      void remove(Style*);
      long children() const;
      Style* child(long) const;
      void attribute(const String& name, const String& value, int priority = 0);
      void remove_attribute(const String& name);
      long attributes() const;
      boolean attribute(long, String& name, String& value) const;
      void add_trigger(const String& , Action*);
      void remove_trigger(const String&, Action* = nil);
      void add_trigger_any(Action*);
      void remove_trigger_any(Action*);
      boolean find_attribute(const String&, String& value) const;
      boolean find_attribute(const String&, long&) const;
      boolean find_attribute(const String&, double&) const;
      boolean find_attribute(const String&, Coord&) const;
      boolean value_is_on(const String&);
      };
      Figure 8.1: Style protocol.
    8.3 Wildcard matching

    Attribute names may contain #* characters to specify wildcard matching. A
    name of the form A*B will match an attribute B in a nested style named A.
    Wildcard names also may begin with a #*, which matches in any descendant
    style. Thus, *A*B will match an attribute B in any descendant style named A.
    Because attributes are inherited, specifying the wildcard name *B is identical to
    specifying the normal attribute B.
      In addition to a name, styles may have a list of associated aliases. Style::alias
    prepends a string to the list. Wildcard matches search using a style's name first,
    then search using the style's aliases in the reverse order in which they are defined.
    Aliases are typically used for indicating a subclass relationship and allowing
    styles to inherit attributes specified for a superclass.
      For example, suppose the root style defines the following attributes:
      
    *Mover*autorepeat:off
      *UpMover*autorepeat:on
      
    Consider descendant styles S and T: S's aliases are UpMover and Mover; T's
    aliases are DownMover and Mover. Style::find_attribute for #autorepeat will
    return #on for S, #off for T.
      The wildcard matching algorithm is compatible with the X resource manager to
    support the same user customization functionality. Wildcard attributes typically
    are defined only on the root style, as loaded from the window system, application
    defaults files, or command-line arguments.

    8.4 Using styles with glyphs

    Glyphs that draw typically contain the specific style information they need to
    render. For example, a character glyph contains the font and color it uses to draw.
    Higher level glyphs, such as a slider for scrolling, contain a style from which
    they construct their components. When styles support trigger routines to detect
    attribute value changes, these higher-level components will be able to reconstruct
    their contents automatically.
      Figure 8.2 shows a function that builds a vertical scrollbar by creating a
    box containing an up-mover (button with up-arrow), a scroller (slider), and a
    down-mover (button with down-arrow). The function creates a new style and
    gives it the prefixes VScrollBar and ScrollBar for customization. If the attribute
    #mover_size is defined on the style, then its value will override the default (15.0).

    8.5 Summary

    User interface geometry and attribute management are two different problems that
      8-
    are best solved independently. Whereas glyphs define a physical organization
    with a directed acyclic graph, styles define a logical organization with a strict
    hierarchy. Both structures are simple and the connection between them is
    straightforward.
      Styles provide a unified framework for managing user-customizable attributes,
    document formatting information, and structured graphics state. Style prefixes
    support wildcarding and allow the decoupling of the implementation class
    hierarchy from the logical class hierarchy offered to the user for the purposes
    of customization. This approach makes applications simpler to develop, more
    consistent to use, and easier to integrate.




      8-
      8- 5   
      
    Glyph* vscroll_bar(Adjustable* a) {
      WidgetKit& kit = *WidgetKit::instance();
      const LayoutKit& layout = *LayoutKit::instance();
      kit.begin_style("VScrollBar");
      kit.alias("ScrollBar");
      Style* s = kit.style();
      Coord mover_size = 15.0;
      s->find_attribute("mover_size", mover_size);
      Glyph* sep = layout.vspace(1.0);
      return kit.inset_frame(
      layout.vbox(
      layout.v_fixed_span(up_mover(a, s), mover_size),
      sep,
      new VScroller(a, s),
      sep,
      layout.v_fixed_span(down_mover(a, s), mover_size)
      ),
      s
      );
      }
      Figure 8.2: Using styles to build glyphs.
    Chapter 9
    WidgetKit
    WidgetKit defines operations for creating user interface objects with a concrete
    look-and-feel. Typically, an application uses a widget kit to create specific
    components, such as pulldown menus, push buttons, and scrollbars. WidgetKit
    isolates the application from specific look-and-feel issues and the details of how
    a concrete component is implemented. Many components are defined using
    instances of existing classes. For example, a push button with a string label is
    created using a button, label, and two bevel objects.
      InterViews provides a base widget kit class for creating common user interface
    objects. Subclasses are provided for implementing concrete objects based on the
    Motif (default) and OpenLook user interfaces.
      WidgetKit::instance is a static member function that returns a default kit. If a
    kit has not yet been created, WidgetKit::instance creates one using the session's
    style to determine which kit subclass to construct.

    9.1 Style management

    WidgetKit maintains a current style for use in customizing widgets. The initial
    style is the root style for all windows. WidgetKit defines the operations shown in
    Figure 9.1 for querying and modifying the style.
      WidgetKit::style sets or gets the current style. When the style is set or changed
    via a Style::attribute call, WidgetKit::style_changed is called to allow WidgetKit
    subclasses to recompute information associated with the current style (such as
    colors for shading).
      WidgetKit::begin_style sets the current style to a newly-created style that is
    a child of the current style. The given string is the name of the new style.
    WidgetKit::alias adds an alias name for the current style. Widget::end_style




      9- 1   
      
    void style(Style*);
      Style* style() const;
      void begin_style(const String&), end_style();
      void alias(const String&);
      void push_style(), pop_style();
      void style_changed(Style*);
      const Font* font() const;
      const Color* foreground() const;
      const Color* background() const;
      Figure 9.1: WidgetKit operations for style management
    returns the current style to what it was before the call to WidgetKit::begin_style.
    WidgetKit::push_style and pop_style save and restore the current style on a stack.
      WidgetKit::font, foreground, and background return specific attribute
    information for the current style. These operations are equivalent to (though
    potentially faster than) finding the string value of a style attribute and then
    looking up the resource with the given name. For example, WidgetKit::font is
    the same as finding the attribute named #font and calling Font::lookup on the
    attribute's value.

    9.2 Common cursors

    WidgetKit provides operations to retrieve commonly-used cursors that might be
    shared among several widgets. Figure 9.2 shows the currently-defined operations.
    WidgetKit::hand_cursor is the outline of a small hand. WidgetKit::lfast_cursor
    is a double-arrow pointing to the left that is typically used in continuous rate
    scrolling. Similarly, the other #fast cursors are double-arrows pointing in various
    directions.

    9.3 Bevels

    On color displays, it is often desirable to frame objects with a beveled look to give
    a 3D appearance. WidgetKit provides the following three functions for creating
    beveled frames:
      Glyph* inset_frame(Glyph*) const;
      Glyph* outset_frame(Glyph*) const;
      Glyph* bright_inset_frame(Glyph*) const;
    WidgetKit:inset_frame uses dark shading in the upper left and light shading
    in the lower right to make the contents of the frame appear to be recessed.
    WidgetKit::outset_frame reverses the shading to make the contents appear to
    project out of the frame. WidgetKit::bright_inset_frame is like inset_frame but
    uses a brighter background color and is thinner.
      9- 2   
      
    Cursor* hand_cursor() const;
      Cursor* lfast_cursor() const;
      Cursor* lufast_cursor() const;
      Cursor* ufast_cursor() const;
      Cursor* rufast_cursor() const;
      Cursor* rfast_cursor() const;
      Cursor* rdfast_cursor() const;
      Cursor* dfast_cursor() const;
      Cursor* ldfast_cursor() const;
      Figure 9.2: WidgetKit cursors
    9.4 Labels

    A label is a string of text with the current style's font and color. WidgetKit
    provides two operations for creating labels:
      Glyph* label(const char*) const;
      Glyph* label(const String&) const;

    9.5 Buttons

    A button is an input handler that can perform an action when pressed. Buttons
    manipulate a telltale state object so that views (which are typically part of the
    button's body) can reflect the current state visually. The button itself is a view so
    that it can damage the canvas when appropriate, freeing other views from the need
    to store update information.
      A telltale state can be part of a telltale group. When one member of a group is
    chosen, then the currently chosen state becomes unchosen. Telltale groups are
    useful for implementing radio buttons.
      Figure 9.3 shows the button, telltale state, and telltale group protocols.
    Button just provides operations to access the associated telltale state and action.
    TelltaleState defines a set of flags that define the current state. TelltaleState::set
    and TelltaleState::test modify and query the current state, respectively.
    TelltaleState::join and TelltaleState::leave_group allow the state to be associated
    with a group.
      Figure 9.4 shows the WidgetKit operations that return buttons. Push button,
    default button, and palette button typically have a similar appearance. Neither a
    push button or a default button can be chosen, whereas a palette button can. A
    default button might have a different appearance to indicate to the user that it is
    the common choice.
      A check box is a toggle button: choosing it when already chosen will cause it to
    become unchosen. A radio button must belong to a telltale group so that within
    the group only one button is chosen at any given time.
      For application-specific actions, it is necessary to define action callbacks for the
    relevant application classes. In the case of quitting the application WidgetKit::quit
    can be used to return an action that calls Session::quit.

    9.6 Menus

    A menu is similar to a group of related buttons, called menu items. Like a button,
    the look of a menu item is dependant on a telltalestate. Menu items can have
    associated actions that are executed when the item is chosen. Menus items can
    also have associated nested menus, in which case the submenu is opened when the
      9-
    item is highlighted. Figure 9.5 shows the WidgetKit menu operations and the
    menu item and menu protocols.
      WidgetKit::menubar creates a horizontal menu with a small amount of white
    space between items. WidgetKit::pulldown and WidgetKit::pullright create
    vertical menus. The top of a pulldown menu will be aligned to the bottom of the
    menubar, while a pullright's top will be aligned to the top right of its containing
    item.
      WidgetKit::menubar_item creates an item centered horizontally with a small
    amount of white space on each side. WidgetKit::menu_item creates a left-adjusted
    item, WidgetKit::check_menu_item creates a toggle item that looks like a check
    box when chosen. WidgetKit::radio_menu_item creates an item that looks like
    a radio button. WidgetKit::menu_item_separator returns an item for visually
    separating other items (such as a horizontal line).


      9- 4   
      
    interface Button : ActiveHandler, Observer {
      Button(Glyph*, Style*, TelltaleState*, Action*);
      TelltaleState* state() const;
      Action* action() const;
      };
      typedef unsigned int TelltaleFlags;
      interface TelltaleState : Resource, Observable {
      TelltaleState(const TelltaleFlags = 0);
      enum {
    is_enabled, is_visible, is_enabled_visible, is_active, is_enabled_active,
      is_visible_active, is_enabled_visible_active, is_chosen, is_enabled_chosen,
      is_visible_chosen, is_enabled_visible_chosen,
      is_enabled_active_chosen, is_active_chosen,
      is_visible_active_chosen, is_enabled_visible_active_chosen,
      is_running, is_choosable, is_toggle,
      max_flags
      };
      TelltaleFlags flags() const;
      void set(const TelltaleFlags, boolean);
      boolean test(const TelltaleFlags) const;
      void join(TelltaleGroup*);
      void leave_group();
      };
      interface TelltaleGroup : Resource {
      void update(TelltaleState*);
      void remove(TelltaleState*);
      };
      Figure 9.3: Button, TelltaleState, and TelltaleGroup protocols.
    9.7 Adjusters

    Scrollbars and mover buttons are examples of interactive objects that #adjust the
    view shown by another object. WidgetKit provides the operations shown in
    Figure 9.6 to create common adjusters.
      WidgetKit::hscroll_bar and WidgetKit::vscroll_bar return controls for scrolling
    a view in the horizontal and vertical dimensions, respectively. WidgetKit::panner
    returns a control for scrolling two adjustables at once. One adjustable is controlled
    by the horizontal position of the panner, one by the vertical position. Typically,
    the same adjustable is passed to both parameters when creating a panners.




      9- 5   
      
    Button* push_button(const String&, Action*) const;
      Button* push_button(Glyph*, Action*) const;
      Button* default_button(const String&, Action*) const;
      Button* default_button(Glyph*, Action*) const;
      Button* palette_button(const String&, Action*) const;
      Button* palette_button(Glyph*, Action*) const;
      Button* check_box(const String&, Action*) const;
      Button* check_box(Glyph*, Action*) const;
      Button* radio_button(TelltaleGroup*, const String&, Action*) const;
      Glyph* push_button_look(Glyph*, TelltaleState*) const;
      Glyph* default_button_look(Glyph*, TelltaleState*) const;
      Glyph* palette_button_look(Glyph*, TelltaleState*) const;
      Glyph* check_box_look(Glyph*, TelltaleState*) const;
      Glyph* radio_button_look(Glyph*, TelltaleState*) const;
      Figure 9.4: WidgetKit button operations
      
    9- 6   
      
    Menu* menubar() const, * pulldown() const, * pullright() const;
      MenuItem* menubar_item(const String&) const;
      MenuItem* menubar_item(Glyph*) const;
      MenuItem* menu_item(const String&) const;
      MenuItem* menu_item(Glyph*) const;
      MenuItem* check_menu_item(const String&) const;
      MenuItem* check_menu_item(Glyph*) const;
      MenuItem* radio_menu_item(TelltaleGroup*, Glyph*) const;
      MenuItem* menu_item_separator() const;
      Glyph* menubar_look() const, pulldown_look() const, pullright_look() const;
      Glyph* menubar_item_look(Glyph*, TelltaleState*) const;
      Glyph* menu_item_look(Glyph*, TelltaleState*) const;
      Glyph* check_menu_item_look(Glyph*, TelltaleState*) const;
      Glyph* radio_menu_item _look(Glyph*, TelltaleState*) const;
      Glyph* menu_item_separator_look() const;
      interface MenuItem : Observer {
      MenuItem(Glyph*, TelltaleState*);
      Glyph* body() const;
      TelltaleState* state() const;
      void action(Action*);
      Action* action() const;
      void menu(Menu*, Window* = nil);
      Menu* menu() const;
      Window* window() const;
      };
      interface Menu : InputHandler {
      Menu(Glyph*, Style*, float x1, float y1, float x2, float y2);
      void append_item(MenuItem*);
      void prepend_item(MenuItem*);
      void insert_item(GlyphIndex, MenuItem*);
      void remove_item(GlyphIndex);
      void replace_item(GlyphIndex, MenuItem*);
      GlyphIndex item_count() const;
      MenuItem* item(GlyphIndex) const;
      void select(GlyphIndex);
      GlyphIndex selected() const;
      };
      Figure 9.5: WidgetKit menu operations, menu, and menu item protocols.
      
    9- 7   
      
    Glyph* hslider(Adjustable*) const;
      Glyph* hscroll_bar(Adjustable*) const;
      Glyph* vslider(Adjustable*) const;
      Glyph* vscroll_bar(Adjustable*) const;
      Glyph* panner(Adjustable*, Adjustable*) const;
      Stepper* enlarger(Adjustable*) const;
      Stepper* reducer(Adjustabel*) const;
      Stepper* up_mover(Adjustable*) const;
      Stepper* down_mover(Adjustable*) const;
      Stepper* left_mover(Adjustable*) const;
      Stepper* right_mover(Adjustable*) const;
      Glyph* slider_look(DimensionName, Adjustable*) const;
      Glyph* scroll_bar_look(DimensionName, Adjustable*) const;
      Glyph* panner_look(Adjustable*, Adjustable*) const;
      Glyph* enlarger_look(TelltaleState*);
      Glyph* reducer_look(TelltaleState*);
      Glyph* up_mover_look(TelltaleState*);
      Glyph* down_mover_look(TelltaleState*);
      Glyph* left_mover_look(TelltaleState*);
      Glyph* right_mover_look(TelltaleState*);
      Figure 9.6: WidgetKit adjuster operations
    Chapter 10
    DialogKit
    Whereas WidgetKit provides operations for creating common look-and-feel
    components such as scrollbars, menus, and buttons, DialogKit is creates
    higher-level dialog objects. The current implementation of DialogKit provides
    only field editors and file choosers, but in the future this kit will provide
    operations for creating confirmers, quit dialogs, and information messages. Figure
    10.1 shows the operations provided by DialogKit.

    10.1 Field editor

    Many application need simple editors for entering or browsing data. A field editor
    is suitable for incorporating into other components, such as a dialog box. Figure
    10.2 shows the field editor class interface.
      Clicking inside the editor (or calling FieldEditor::edit) initiates an edit.
    Subsequent keyboard events, regardless of the pointer location, are interpreted as
    editing operations on the text. Clicking outside the editor terminates the editing.
      Text is selected with the pointer or with the keyboard. A single click of the left
    button selects a new insertion point between characters. Dragging across the text
    selects a range of characters. A set of control characters is mapped into common
    editing operations. A character not specifically associated with commands is
    inserted in place of the current selection, the replaced text is discarded, and
    the selection becomes an insertion point following the inserted character. The
    commands defined are:
      character-left (^B)
      character-right (^F)
      beginning-of-text (^A)
      end-of-text (^E)
      erase (^H or DEL)
      delete (^D)
      select-all (^U)
      select-word(^W)
    Strings that are too long to fit into the editor can be scrolled horizontally. Clicking
    the middle button inside the editor initiates #grab-scrolling. While the button is
    down the editor scrolls the text to follow the pointer, giving the appearance that
    the user is dragging the text. Clicking the right button engages #rate-scrolling, a
    joy-stick-like scrolling interface in which the scrolling rate increases as the user
    drags the pointer away from the initial click location.
      The field editor constructor is passed a sample string, used to compute its

      10-
    natural size, a style for customization, and a field editor action to execute when
    editing returns. Editing normally completes when a carriage return or tab is
    entered; abnormally when an escape character is entered.
      FieldEditor::field sets the contents of the string being edited. FieldEditor::select
    sets the insertion point or subrange within the edit string. FieldEditor::edit
    initiates an edit. Specifying a string and selection range is short-hand for first
    calling FieldEditor::field and FieldEditor::select. FieldEditor::text returns the
    current value of the string being edited. The caller must copy the string to save
    the contents, as it will be modified by a subsequent edit.




      10- 2   
      
    interface DialogKit {
      static DialogKit* instance();
      FieldEditor* field_editor(
      const String& sample, Style*, FieldEditorAction* = nil
      ) const;
      FileChooser* file_chooser(
      constString& dir, Style*, FileChooserAction* = nil
      ) const;
      };
      Figure 10.1: DialogKit operations      




      interface FieldEditorAction Resource {
      void execute(FieldEditor*, boolean accept);
      };
      interface FieldEditorCallback(T) : FieldEditorAction {
      FieldEditorCallback(T)(T*, void (T::*)(FieldEditor*, boolean accept));
      };
      interface FieldEditor : InputHandler {
      FieldEditor(const char* sample, Style*, FieldEditorAction* = nil);
      FieldEditor(const String& sample, Style*, FieldEditorAction* = nil);
      void field(const char*);
      void field(const String&);
      void select(int pos);
      void select(int left, int right);
      void edit();
      void edit(const char*, int left, int right);
      void edit(const String&, int left, int right);
      const char* text() const;
      void text(String&) const;
      };
      Figure 10.2: Field editor class interface.
    10.2 Dialog

    A dialog is an object that can be posted temporarily and grabs input until it is
    dismissed. Figure 10.3 shows the Dialog protocol. Dialog::post_for creates a
    transient window for the dialog and aligns over the given window using the given
    x and y alignment. The default is for the dialog to be centered over the window.
      Dialog::post_at creates a top-level window aligned around the given position.
    Dialog::run blocks until Dialog::dismiss is called, and Dialog::run returns the
    value of the parameter that is passed to Dialog::dismiss.

    10.3 FileChooser

    A file chooser is a dialog subclass that allows the user to select a file in a directory
    and returns the file name. Figure 10.4 shows the FileChooser protocol.




      10- 3   
      
    interface DIalog : InputHandler {
      Dialog(Glyph*, Style*);
      boolean post_for(Window*, float = 0.5, float = 0.5);
      boolean post_at(Coord x, Coord y, float = 0.5, float = 0.5);
      boolean run();
      void dismiss(boolean accept);
      };
      Figure 10.3: Dialog protocol      




      interface FileChooserAction : Resource {
      void execute(FileChooser*, boolean accept);
      };
      interface FileChooserCallback(T) : FileChooserAction {
      FileChooserCallback(T)(T*, void (T::*)(FileChooser*, boolean accept));
      };
      interface FileChooser : Dialog {
      const String* selected() const;
      void reread();
      };
      Figure 10.4: FileChooser protocol
    Chapter 11
    LayoutKit
    Composite glyphs usually manage the physical layout of their children.
    LayoutKit provides operations for creating objects that are useful in managing the
    arrangement of one or more glyphs. The LayoutKit objects are modelled after the
    Knuth's TeX document processing system.

    11.1 Boxes

    A box is a polyglyph that uses a layout object to arrange its components. A layout
    object is not a glyph, but helps a glyph manage the requests and allocations of
    component glyphs. Figure 11.1 shows the Layout protocol and the LayoutKit
    operations that create boxes.
      Layout::request is given an array of requisitions for the individual components
    and computes a single requisition for the result. Layout::allocate is given the
    requisitions of the components and the overall allocation, returning the allocations
    of the individual components.
      A box can be constructed either with a list of up to 10 initial glyph components,
    or an initial size estimate on the number of components. The size is not a
    maximum, but can avoid growing the list dynamically.
      LayoutKit::hbox returns a box that tiles its components in the X
    dimension left-to-right and aligns the component origins in the Y dimension.
    LayoutKit::vbox returns a box that tiles top-to-bottom and aligns in the X
    dimension. LayoutKit::overlay aligns in both the X and Y dimensions, drawing
    the components in back-to-front order.
      LayoutKit::hbox returns a box with its X origin at the left side of the
    box; LayoutKit::vbox returns a box with its Y origin at the top of the box.
    Sometimes it is more convenient to have the origin correspond to the origin
    of the first component. For example, a column of text might want to have
    its Y origin correspond to the base line of the first line of text. When the
    aligment should correspond to the first component's alignment, one can use
    LayoutKit::hbox_first_aligned or LayoutKit::vbox_first_aligned.
      A deck is a polyglyph similar in some ways to an overlay box. However,
    instead of overlaying its components, a deck is a polyglyph where only one of the
    components is visible at any time. Figure 11.2 shows the deck protocol and the
    LayoutKit operations to create decks.
      Deck::flip_to sets which component should currently be visible; Deck::card
    returns the current top. The natural size of a deck is the maximum size of the
    natural sizes of its components. A deck can be stretched to be as large as its
    largest fully-stretched component.

      11-
    11.2 Glue

    Boxes stretch or shrink their components to fit the available space. However,
    many components are rigid. For example, characters in text typically do not
    stretch or shrink. Instead, we prefer to stretch or shrink the white space between
    words. In TeX, this flexible white space is referred to as #glue.
      LayoutKit provides the set of operations to create glue object shown in Figure
    11.3. LayoutKit::glue is the most general operation. It can either be passed a
    specific dimension, natural size, stretchability, shrinkability, and alignment, or it
    can be passed a complete requisition.
      LayoutKit::hglue and LayoutKit::vglue can create glue that is horizontally or
    vertically stretchable, respectively. The requirement in the minor dimension is
    undefined. If no parameters are passed to LayoutKit::hglue or vglue, then a
    natural size of zero is assumed. If no stretchability is specified, then the glue is
      11- 2   
      
    interface Layout {
      void request(GlyphIndex count, const Requisition*, Requisition& result);
      void allocate(
      const Allocation& given, GlyphIndex count, const Requisition*,
      Allocation* result
      );
      };
      PolyGlyph* box(Layout*, GlyphIndex size = 10) const;
      PolyGlyph* hbox(GlyphIndex size) const;
      PolyGlyph* hbox(
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil,
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil
      ) const;
      PolyGlyph* vbox(GlyphIndex size) const;
      PolyGlyph* vbox(
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil,
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil
      ) const;
      PolyGlyph* hbox_first_aligned(GlyphIndex size) const;
      PolyGlyph* hbox_first_aligned(
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil,
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil
      ) const;
      PolyGlyph* vbox_first_aligned(GlyphIndex size) const;
      PolyGlyph* vbox_first_aligned(
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil,
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil
      ) const;
      PolyGlyph* overlay(
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil,
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil
      ) const;
      Figure 11.1: Layout protocol and LayoutKit box operations
    assumed to be infinitely stretchable.
      LayoutKit::hspace and LayoutKit::vspace create glue with a given size that is
    rigid. LayoutKit::shape_of returns glue that has the same requisition as another
    glyph. LayoutKit::shape_of_xy returns glue that takes its X requirement from one
    glyph and its Y requirement from another glyph.
      LayoutKit::spaces returns glue that correspond to a given number of spaces in




      11- 3   
      
    interface Deck : PolyGlyph {
      GlyphIndex card() const;
      void flip_to(GlyphIndex);
      };
      Deck* deck(GlyphIndex size) const;
      Deck* deck(
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil,
      Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil, Glyph* = nil
      ) const;
      Figure 11.2: Deck protocol and LayoutKit operations      




      Glyph* glue(
    DimensionName, Coord natural, Coord stretch, Coord shrink, float alignment
      ) const;
      Glyph* glue(const Requisition&) const;
      Glyph* hglue() const;
      Glyph* hglue(Coord natural) const;
      Glyph* hglue(Coord natural, Coord stretch, Coord shrink) const;
    Glyph* hglue(Coord natural, Coord stretch, Coord shrink, float alignment) const;
      Glyph* vglue() const;
      Glyph* vglue(Coord natural);
      Glyph* vglue(Coord natural, Coord stretch, Coord shrink) const;
    Glyph* vglue(Coord natural, Coord stretch, Coord shrink, float alignment) const;
      Glyph* hspace(Coord) const;
      Glyph* vspace(Coord) const;
      Glyph* shape_of(Glyph*) const;
      Glyph* shape_of_xy(Glyph*, Glyph*) const;
      Glyph* spaces(int count, Coord each, const Font*, const Color*) const;
      Glyph* strut(
      const Font*, Coord natural = 0, Coord stretch = 0, Coord shrink = 0
      ) const;
      Glyph* hstrut(
      Coord right_bearing, Coord left_bearing = 0,
      Coord natural = 0, Coord stretch = 0, Coord shrink = 0
      ) const;
      Glyph* vstrut(
      Coord ascent, Coord descent = 0,
      Coord natural = 0, Coord stretch = 0, Coord shrink = 0
      ) const;
      Figure 11.3: LayoutKit operations for creating spacing glyphs
    the current font. Unlike other glue objects, which despite being generally referred
    to as #white space do not actually have an appearance, spaces are drawn in the
    given color.

    11.3 Alignment

    In addition to laying out a collection of glyphs, it is often desirable to modify the
    positioning of a single glyph. LayoutKit provides operations to adjust the layout
    of a glyph. These operations return a monoglyph.
      Figure 11.4 shows the operations that affect the requisition of a glyph.
    LayoutKit::center , center_dimension, hcenter, and vcenter change the origin of a
    glyph as it appears in a requisition. When the glyph body is allocated, it is given
    the origin it requested. Thus, the name #center is somewhat misleading as these
    monoglyphs merely return a glyph that asks to be centered at a particular position,
    they do not actually change the origin themselves.
      LayoutKit::fixed, fixed_dimension, hfixed, and vfixed change a glyph to appear
    rigid even if it is flexible. Fixed monoglyphs are ideal for specifying sizes
    that are otherwise undefined, such as the initial height of a file chooser. The
    inverse functionalitymaking a glyph flexible that may be rigidis provided by
    the LayoutKit::flexible, flexible_dimension, hflexible, and vflexible operations.
    The LayoutKit::natural, natural_dimension, hnatural, and vnatural operations are

      11- 4   
      
    MonoGlyph* center(Glyph*, float x = 0.5, float y = 0.5) const;
      MonoGlyph* center_dimension(Glyph*, DimensionName, float align) const;
      MonoGlyph* hcenter(Glyph*, float x = 0.5) const;
      MonoGlyph* vcenter(Glyph*, float y = 0.5) const;
      MonoGlyph* fixed(Glyph*, Coord x, Coord y) const;
      MonoGlyph* fixed_dimension(Glyph*, DimensionName, Coord) const;
      MonoGlyph* hfixed(Glyph*, Coord x) const;
      MonoGlyph* vfixed(Glyph*, Coord y) const;
      MonoGlyph* flexible(Glyph*, Coord stretch = fil, Coord shrink = fil) const;
      MonoGlyph* flexible_dimension(
      Glyph*, DimensionName, Coord stretch = fil, Coord shrink = fil
      ) const;
      MonoGlyph* hflexible(
      Glyph*, Coord stretch = fil, Coord shrink = fil
      ) const;
      MonoGlyph* vflexible(
      Glyph*, Coord stretch = fil, Coord shrink = fil
      ) const;
      MonoGlyph* natural(Glyph*, Coord x, Coord y) const;
      MonoGlyph* natural_dimension(Glyph*, DimensionName, Coord) const;
      MonoGlyph* hnatural(Glyph*, Coord) const;
      MonoGlyph* vnatural(Glyph*, Coord) const;
      Figure 11.4: LayoutKit operations that adjust alignment
    similar to the fixed operations in that they change the natural size, but they do not
    affect the flexibility.
      LayoutKit also provides a set of operations to put a margin around a glyph.
    These operations are shown in Figure 11.5. LayoutKit::margin is overloaded to
    specify a fixed margin around the entire glyph, distinct horizontal and vertical
    margins, separate left, right, bottom, and top margins, or flexible margins on
    each side. LayoutKit::hmargin specifies horizontal margins; LayoutKit::vmargin
    specifies vertical margins. LayoutKit::lmargin, rmargin, bmargin, and tmargin
    specify left, right, bottom, and top margins, respectively.




      11- 5   
      
    MonoGlyph* margin(Glyph*, Coord) const;
      MonoGlyph* margin(Glyph*, Coord hmargin, Coord vmargin) const;
      MonoGlyph* margin(
      Glyph*, Coord lmargin, Coord rmargin, Coord bmargin, Coord tmargin
      ) const;
      MonoGlyph* margin(
      Glyph*,
      Coord lmargin, Coord lstretch, Coord lshrink,
      Coord rmargin, Coord rstretch, Coord rshrink,
      Coord bmargin, Coord bstretch, Coord bshrink,
      Coord tmargin, Coord tstretch, Coord tshrink
      ) const;
      MonoGlyph* hmargin(Glyph*, Coord) const;
      MonoGlyph* hmargin(Glyph*, Coord lmargin, Coord rmargin) const;
      MonoGlyph* hmargin(
      Glyph*,
      Coord lmargin, Coord lstretch, Coord lshrink,
      Coord rmargin, Coord rstretch, Coord rshrink
      ) const;
      MonoGlyph* vmargin(Glyph*, Coord) const;
      MonoGlyph* vmargin(Glyph*, Coord lmargin, Coord rmargin) const;
      MonoGlyph* vmargin(
      Glyph*,
      Coord bmargin, Coord bstretch, Coord bshrink,
      Coord tmargin, Coord tstretch, Coord tshrink
      ) const;
      MonoGlyph* lmargin(Glyph*, Coord) const;
      MonoGlyph* lmargin(Glyph*, Coord nat, Coord stretch, Coord shrink) const;
      MonoGlyph* rmargin(Glyph*, Coord) const;
      MonoGlyph* rmargin(Glyph*, Coord nat, Coord stretch, Coord shrink) const;
      MonoGlyph* bmargin(Glyph*, Coord) const;
      MonoGlyph* bmargin(Glyph*, Coord nat, Coord stretch, Coord shrink) const;
      MonoGlyph* tmargin(Glyph*, Coord) const;
      MonoGlyph* tmargin(Glyph*, Coord nat, Coord stretch, Coord shrink) const;
      Figure 11.5: LayoutKit margin operations
    Chapter 12
    DocumentKit
    In Chapter 11, we described the LayoutKit class, which provides operations
    for creating layout objects. The DocumentKit class will provide operations
    for creating document objects that use LayoutKit objects to produce formatted
    documents. The DocumentKit class has not yet been implemented, so for now
    we describe several objects that can be useful for building document editors in
    conjunction with the LayoutKit objects.
      A discretionary can take on one of several appearances depending on whether a
    break occurs on it. A common use of a discretionary is for white space in a line of
    text, where the white space becomes zero-width glue if a break occurs on the
    discretionary. The penalty associated with a discretionary defines the relative cost
    of breaking. Currently, operations to create discretionaries are defined on the
    LayoutKit.
      An lr-marker is a glyph that can mark a region of its body. The marking is
    done by painting a color under the area or a color on top of the area (or both).
    The region is a shape normally associated with text selections. The LRMarker
    constructor takes two colors, either of which can be nil if the associated underlay
    or overlay drawing is not desired. LRMarker::mark paints the given region. If y1
    and y2 are the same, then the mark region is a single rectangle. Otherwise, the
    region is defined as starting at (x1,y1) and filling a height of h1 to (x1,right()),
    then filling (left(),y1+h1) to (right(),y2) and filling a height of h2 from (left(),y2)
    to (x2,y2). LRMarker::unmark restores the area to its unmarked appearance. An
    xy-marker is simliar to an lr-marker, but it only paints a rectangular area. While
    an lr-marker is most useful for selecting text, xy-markers are useful for selecting
    an item in a list or table. Figure 12.1 shows the LRMarker and XYMarker class
    interfaces.

    12.1 Compositions

    A composition is a glyph that uses a compositor to determine suitable breaks
    between groups of its components. Figure 12.2 shows the class interfaces for the
    composition and its subclasses. The list of components is broken into sublists
    that are put into separate composite glyphs and then inserted into the body.
    The LRComposition subclass uses LayoutKit::hbox_first_aligned to create each
    sublist, while the TBComposition subclass uses LayoutKit::vbox_first_aligned.
      Compositions can be used to break paragraphs into lines, lines into columns,
    or columns into pages. A document editor might create an lr-composition for
    characters that puts the resulting hboxes for lines into a tb-composition, which in
    turn puts the vboxes for columns into an lr-composition, which puts the resulting

      12-
    lr-boxes for pages into a deck.
      Compositions also can be used just as easily for arranging buttons in a box,
    where one wants the buttons to ``wrap-around'' if there are too many to fit
    horizontally. The code to do this could look as follows:
      
    LRComposition* c = new LRComposition(
      layout.vbox(), new SimpleCompositor, /* no separator */ nil, /* width */ 4*72.0
      );
      Discretionary* ok = layout.discretionary(0, nil, nil, nil, nil);
      for (unsigned int i = 0; i < nbuttons; i++) {
      c->append(button[i]);
      c->append(ok);
      }
      c->repair();
      
    The composition constructor takes a body in which to insert sublists, a
    compositor to determine where to break, a separator to be inserted at each break
    (unless it is nil), the dimension to use, the width in which the sublists must fit,
    and optionally the initial size of the list of components. The initial size is not
    a maximum, but the list by default starts at a small size and is dynamically
    reallocated as needed. For large lists, it can be more efficient to specify an
    estimate of the list size. Composition::repair updates the composition to reflect
    changes to its structure. Composition::item returns the index of the sublist (in
    other words, the component of the body) containing the component specified by
    the given index. For example, this function could be used to return the line that
    contains a particular character. Composition::beginning_of returns the index of
    the component that starts the sublist specified by the given item. For example,
    this function could be used to return the character that starts a particular line.
    Composition::end_of is like beginning_of except it returns the end of the sublist.
    Composition::margin causes space to be left at the beginning and end of the
    specified item in the body. For example, this function could be used to put
    margins on a line of text. Composition::view guarantees that breaks are computed
      12- 2   
      
    interface LRMarker : MonoGlyph {
      LRMarker(Glyph*, Color* overlay, Color* underlay);
      void mark(
      Coord left, Coord right, Coord x1, Coord y1,
      Coord h1, Coord x2, Coord y2, Coord h2
      );
      void unmark();
      };
      interface XYMarker : MonoGlyph {
      XYMarker(Glyph*, Color* overlay, Color* underlay);
      void mark(Coord left, Coord bottom, Coord right, Coord top);
      void unmark();
      };
      Figure 12.1: LRMarker and XYMarker protocols
    for the components between indices first and last inclusively. By restricting
    the viewing area, this operation can eliminate the computation of breaks for
    components that are not visible.
      A compositor computes the breaks based on assessing the penalty for a possible
    breaks. Three subclasses are provided that use different levels of sophistication in
    determining breaks. An array-compositor positions breaks every N elements,
    where N is specified in the constructor. A simple-compositor finds a simple
    set of breaks quickly. It is analogous to a line-at-a-time text formatter. A
    TeX-compositor finds breaks using Knuth's TeX algorithm.
      Figure 12.3 shows the interfaces to the compositor classes.
    Compositor::compose uses the natural, stretch, shrink, penalty, and span
    information for each component as input parameters. The return value is the
    number of breaks found. The
    breaks array contains the positions of the breaks;
    that is,
    break[i] is the index of the component where the ith break occurs.




      12- 3   
      
    interface Composition : MonoGlyph {
      Composition(
      Glyph*, Compositor*, Glyph* separator, DimensionName,
      Coord width, GlyphIndex size
      );
      void repair();
      GlyphIndex item(GlyphIndex);
      lyphIndex beginning_of(GlyphIndex);
      GlyphIndex end_of(GlyphIndex);
      void margin(GlyphIndex, Coord begin, Coord end);
      void view(GlyphIndex first, GlyphIndex last);
      };
      interface LRComposition : Composition {
      LRComposition(
      Glyph*, Compositor*, Glyph* sep, Coord, GlyphIndex = 10
      );
      };
      interface TBComposition : Composition {
      TBComposition(
      Glyph*, Compositor*, Glyph* sep, Coord, GlyphIndex = 10
      );
      };
      Figure 12.2: Composition classes
    See iv/src/examples/preview.




      12- 4   
      
    interface Compositor {
      virtual int compose(
      Coord* natural, Coord* stretch, Coord* shrink,
      int* penalties, int component_count,
      Coord* spans, int span_count,
      int* breaks, int break_count
      );
      };
      interface ArrayCompositor : Compositor {
      ArrayCompositor(int N);
      };
      interface SimpleCompositor : Compositor {
      SimpleCompositor();
      };
      interface TeXCompositor : Compositor {
      TeXCompositor(int penalty);
      };
      Figure 12.3: Compositor classes
    Appendix A
    Operating System Interface
    This appendix describes the classes that abstract operating system services. These
    classes do not yet cover the entire range of operating system operations, but they
    offer higher-level abstractions in some cases, relief from name space concerns in
    other cases, and greater application portability.
      The classes are presented below in alphabetical order. A directory is a list
    of files or other directories. A file is a list of bytes. Both directories and
    files are accessed by a string name. A list is an ordered sequence of objects,
    parameterized by the element type. The math class provides an interface to
    common mathematical operations on concrete types (e.g., ints and floats). The
    memory class provides operations on variable-length arrays of bytes. A string is a
    variable-length list of characters. A table is an associative map from a key type to
    a data type.
      List and table are generic classes, parameterized by other types. Because
    few C++ implementations currently support a generic mechanism (though the
    language defines a template construct), it is necessary to define list and table
    classes using preprocessor macros and must be instantiated explicitly.

    A.1 Directory

    Figure A.1 shows the directory class interface. The static member functions
    Directory::current and Directory::open return a pointer to a Directory.
    Directory::current looks in the default directory for the application context,
    Directory::open tries to find the directory with the given name. If the name cannot
    be found or access is denied to the directory, Director::open returns nil.




      A- 1   
      
    interface Directory {
      static Directory* current();
      static Directory* open(const String&);
      int count() const;
      const char* name(int i) const;
      int index(const char*) const;
      boolean is_directory(int index) const;
      void close();
      static String* canonical(const String&);
      static boolean match(const String& name, const String& pattern);
      };
      Figure A.1: Directory class interface.
      
    Directory::count returns the number of entries (files and directories), including
    any special system entries such as #. and #.. on Unix. Directory::name returns
    the name of the specified entry. Directory::index returns the index of the entry
    that matches the given name or -1 if no match is found. Directory::close discards
    the information associated with the directory.

    A.2 File

    Figure A.2 shows the file class interface and subclasses for input handling. The
    base class File is abstract and defines no data access functions. Currently, only
    input files are implemented. File::name returns the string name of the file.
    File::length returns the number of bytes in the file. File::close releases any
    information associated with the file.
      File::limit sets an upper bound on the size of a buffer to allocate for file storage.
    By default, a file attempts to allocate contiguous storage for its entire contents.
    This approach can allow for simpler application code and can be implemented
    very efficiently on systems with memory-mapped files.
      The contents of an input file can be accessed but not modified. InputFile::open
    returns nil if the named file cannot be found or is not readable. InputFile::read
    allocates a data area for the file contents, sets the start parameter to the beginning
    of the area, and returns the length of the area. If no storage limit has been
    specified and the file is on disk (as opposed to a terminal or pipe), then read will
    return the entire file.

    A.3 List

    Figure A.3 shows the list generic class interfaces. The implementation of lists
    uses a dynamic array with an insertion gap, meaning that large lists are very




      A- 2   
      
    interface File {
      const char* name() const;
      long length() const;
      void close();
      void limit(unsigned int buffersize);
      };
      interface InputFile : File {
      static InputFile* open(const char* name);
      int read(const char*& start);
      };
      Figure A.2: InputFile protocols.
    space-efficient. The time efficiency depends on the distribution of insertionsif
    the insertion position moves frequently, the list will do excessive copying.
      The list constructor takes an optional initial size for the dynamic array. For lists
    that are known to be large, specifying an initial size avoids the cost of growing the
    array dynamically. List::count returns the number of elements in the list (not the
    size of the array). List::item returns the indexed item.
      List::prepend adds an item at the beginning of the list, List::append at the end,
    and List::insert before an indexed item. List::remove deletes the item specified by
    the given index. List::remove_all deletes all the items in the list.
      ListItr is a class for iterating through the elements of a list, parameterized
    explicitly by the list type and implicitly by the element type. The constructor is
    given the target list. ListItr::more returns true if additional elements are available
    in the iteration. ListItr::cur returns the current iteration's item. ListItr::cur_ref
    returns a reference to the item. ListItr::remove_cur deletes the current item
    from the list. ListItr::next moves the iteration to the next item in the list. No

      A- 3   
      
    interface List(T) {
      List(T)(long initial_size = 0);
      long count() const;
      T item(long index) const;
      T& item_ref(long index) const;
      void prepend(const T&);
      void append(const T&);
      void insert(long index, const T&);
      void remove(long index);
      void remove_all();
      };
      interface ListItr(ListType) {
      ListItr(ListType))(const ListType&);
      boolean more() const;
      T cur() const;
      T& cur_ref() const;
      void next();
      };
      interface ListUpdater(ListType) {
      ListUpdater(ListType)(ListType&);
      boolean more() const;
      T cur() const;
      T& cur_ref() const;
      void remove_cur();
      void next();
      };
      Figure A.3: List and iterator class interfaces.
    modifications should be made to the list during an iteration (except in the last
    step), as this may cause unexpected or erroneous results.
      As an example, consider a list of pointers to glyphs. We could declare such a
    list in a header or source file as follows:
      declarePtrList(GlyphList,Glyph)
    Only one source file may contain the expansion of the implementation:
      implementPtrList(GlyphList,Glyph)
    A loop to iterate over all the glyphs in a list could be written as follows:
      for (ListItr(GlyphList) i(list); i.more(); i.next()) {
      Glyph* g = i.cur();
      // do something with g
      }
      A list makes no assumptions about its element type. In particular, destroying a
    list of pointers will not destroy the objects that are the targets of the pointers.

    A.4 Math

    Figure A.4 shows the math class interface. One cannot create a #math object; all
    the member functions are static. Math::min and Math::max return the minimum
    and maximum of two or four numbers, respectively. For the sake of brevity only
    the floating point definitions are shown, but Math::min and Math::max are also
    defined for ints, longs, unsigned ints, unsigned longs, and doubles.
      Math::abs returns the absolute value of a number. Math::round returns the
    integer nearest to a floating point value. Math::equal compares two floating point
    numbers and returns whether they are within a given epsilon (the third parameter)
    of each other.

    A.5 Memory

    Figure A.5 shows the memory class interface. Like the math class, the memory
    class consists solely of static member functions. Memory::copy writes a specified
    number of bytes from one memory location to another. Memory::compare
    determines if a specified number of bytes at one memory location is identical to
    those at another location. If so, Memory::compare returns 0. Otherwise, it returns
    a non-zero value. Memory::zero sets a specified number of bytes to zero starting
    at a given memory location.
      In certain circumstances, memory operations are faster than a loop over a set
    of elements. Memory::zero and Memory::copy are useful for implementing a
    dynamic array, quickly clearing or copying data when the array grows.

      A-
    A.6 String

    Figure A.6 shows the string class interface. The purpose of the string class is to
    provide a convenient set of operations for manipulating variable-length character
    arrays, not to manage storage. The base class does not allocate or free any storage
    associated with the characters.
      Three string constructors are available. The first, with no arguments, creates an
    uninitialized string that should be assigned to another string before use. The
    second, with a character pointer, sets the string's data to the given pointer. The
    string's length is computed from the pointer under the assumption that the data
    is null-terminated. The third constructor takes a character pointer and explicit
    length. It does not assume the data is null-terminated.
      String::string returns a pointer to the character data, which may not be
    null-terminated. String::length returns the number of characters in the string.
    String::null_terminated returns whether the string is already known to be
    null-terminated (it does not attempt to find a null). String::hash returns a value for
    the string data suitable for indexing the strings into a hash table.
      The string class provides operators for assignment and comparison. The second
    operand for these operations can be a string or a character pointer. In the latter
    case, the data is assumed to be null-terminated. String::case_insensitive_equal
    tests for equality ignoring the case of the characters in the strings.




      A- 5   
      
    interface Math {
      static float min(float a, float b);
      static float max(float a, float b);
      static float min(float a, float b, float c, float d);
      static float max(float a, float b, float c, float d);
      static int abs(int);
      static long abs(long);
      static double abs(double);
      static int round(float);
      static int round(double);
      static boolean equal(float x, float y, float e);
      static boolean equal(double x, double y, double e);
      };
      Figure A.4: Math class interface.      




      interface Memory {
      static void copy(const void*, void* to, unsigned int nbytes);
      static int compare(const void*, const void*, unsigned int nbytes);
      static void zero(void*, unsigned int nbytes);
      };
      Figure A.5: Memory class interface.
      
    The subscript operator allows access to individual characters. It is an error to
    pass a negative index or an index greater than or equal to the length of the string.
    String::substr returns a new string representing the part of the original string
    begining at the start parameter and continuing for length characters. If start is
    negative, the beginning position is the end of the string offset by start. If length is
    1, then the remainder of the string is included. String::substr does not copy the
    data, it simply creates another string that points into the same data as the original
    string. String::left and String::right are short-hand for accessing the beginning or
    end of a string. String::set_to_substr, String::set_to_left, and String::set_to_right
    are convenience for changing a string to a particular substring instead of creating
    a new string.
      String::search returns the index of the occurrence of the given character after




      A- 6   
      
    interface String {
      String();
      String(const char*);
      String(const char*, int length);
      const char* string() const;
      int length() const;
      boolean null_terminated() const;
      unsigned long hash() const;
      String& operator =(const String&);
      boolean operator ==(const String&) const;
      boolean operator !=(const String&) const;
      boolean operator >(const String&) const;
      boolean operator >=(const String&) const;
      boolean operator <(const String&) const;
      boolean operator <=(const String&) const;
      boolean case_insensitive_equal(const String&) const;
      char operator[](int index) const;
      String substr(int start, int length) const;
      String left(int length) const;
      String right(int start) const;
      void set_to_substr(int start, int length);
      void set_to_left(int length);
      void set_to_right(int start);
      int search(int start, char) const;
      int index(char) const;
      int rindex(char) const;
      boolean convert(int&) const;
      boolean convert(long&) const;
      boolean convert(float&) const;
      boolean convert(double&) const;
      };
      Figure A.6: String class interface.
    the given starting position. If the starting position is negative, it is treated as an
    offset from the end of the string and the search is made right-to-left. String::index
    and String::rindex are short-hand for searching from the beginning and end of the
    string, respectively.
      String::convert attempts to interpret the string as a number and sets its
    parameter to the value. If the conversion is successful, String::convert returns true.
      Three string subclasses of string are provided, all of which have the same
    constructors and operations as the base class. CopyString is a subclass that
    copies the string data when constructed and frees the storage when deleted.
    When the copy is made, a null is appended to ensure the data is null-terminated.
    NullTerminatedString is a subclass that guarantees its data is null-terminated. If
    constructed with a normal string, it will copy the data much like a copy-string.
    However, if the given string is already a copy-string, then no copy is made.
    NullTerminatedString is useful for passing string data to external C functions,
    such as printf.
      The third string subclass is UniqueString, which uses a table to map identical
    strings to the same data. Comparing unique strings for equality is fast because the
    implementation can compare pointers instead of the string data. Unique strings
    are not null-terminated.

    A.7 Table

    Figure A.7 shows the table class interface. Table is a generic class that is
    parameterized by a key type and a value type. The constructor is given a size for
    the hash table implementation. For good access performance, the size should be
    roughly twice the expected number of keys.
      Table::insert stores a pair. Table::find searches an entry with
    the given key. If such an entry exists, Table::find sets value and returns true.
    Otherwise, it leaves the parameter unmodified and returns false. Table::remove
    deletes a pair from the table if one exists. Table::find_and_remove
    combines the find and remove operations in a single call.
      If the same key is inserted more than once, Table::find will return the most
    recently inserted value. Similarly, Table::remove will delete the most recently
    inserted pair.
      TableIterator allows one to iterate over all the pairs defined in a
    table. TableIterator is parameterized explicitly by the table type, implicitly by the
    key and value types. TableIterator::cur_key and TableIterator::cur_value return
    the current entry information. TableIterator::more tests if additional entries are
    defined. TableIterator::next moves to the next entry in the table.




      A-
      A- 8   
      
    unsigned long key_to_hash(Key);
      interface Table(Key,Value) {
      Table(Key,Value)(int hash_table_size);
      void insert(Key, Value);
      boolean find(Value&, Key);
      void remove(Key);
      boolean find_and_remove(Value&, Key);
      };
      interface TableIterator(Table(Key,Value)) {
      TableIterator(Table(Key,Value))(Table(Key,Value)&);
      Key& cur_key();
      Value& cur_value();
      boolean more();
      boolean next();
      };
      Figure A.7: Table class interface.
    ivtools-doc/doc/thingstodo.html0000644000076500007650000000152607374262635017503 0ustar scottscott00000000000000 Things to do with ivtools drawing editors

    Things to do with ivtools drawing editors

    [ rasters button ] [ geo-data button ] [ postscript button ]
    [ imagemaps button ] [ animatedgifs button ] [ plotting button ]
    up to ivtools         other tools that work ivtools ivtools-doc/doc/top40.html0000644000076500007650000001631507374262635016271 0ustar scottscott00000000000000 Top 40 ivtools classes by doc page hits

    Top 40 ivtools classes by doc page hits

    September 1st thru September 26th 1999
    39: Scanner
    34: CSocket
    25: Parser
    24: Unidraw
    23: Glyph
    20: ComTerp
    20: Bitmap
    18: Component
    17: ComFunc
    17: LexScan
    15: Catalog
    14: Regexp
    14: ComTerpModule
    14: Resource
    13: PSFont
    13: ComponentView
    13: Viewer
    12: Editor
    12: ComTerpServ
    12: ClipPolyAAndBCmd
    11: FrameScript
    11: Font
    11: Event
    11: Dispatcher
    11: ComValue
    11: Manipulator
    11: ExternView
    11: FixedPanCmd
    11: TextDisplay
    11: Frame
    10: PopupWindow
    10: FramesScript
    10: Painter
    10: FixViewCmd
    10: Command
    10: PreciseZoomCmd
    10: FrameOverlaysComp
    10: OverlaysComp
    10: CHttp

    July 1st thru July 15th 1999
    25: Unidraw
    15: Scanner
    14: Component
    13: Comterp
    12: Glyph
    12: Parser
    12: ComponentView
    11: Sensor
    11: Resource
    10: FrameScript
    10: Transformer
    9: FramesScript
    9: FrameView
    9: PSText
    9: Bitmap
    8: GraphicView
    8: Scene
    8: PulldownMenu
    8: Editor
    8: SF_Ellipse
    8: Painter
    8: Canvas
    8: FramesView
    8: ExternView
    8: Command
    8: UList
    8: PSBrush
    8: Viewer
    7: Font
    7: PointObj
    7: FrameEditor
    7: ComFunc
    7: IndexedGsMixin
    7: Catalog
    7: Tool
    7: MenuItem
    7: PSFont
    7: PostScriptView
    7: OverlayComp
    7: Graphic

    June 1st thru June 15th 1999
    29: IOHandler
    22: ComTerp
    21: Unidraw
    20: Scanner
    16: Command
    16: Bitmap
    15: Component
    14: Graphic
    13: Editor
    13: Parser
    13: TopoFace
    12: FrameIdrawComp
    12: FrameEditor
    12: Dispatcher
    12: Tool
    12: Viewer
    12: FrameViewer
    11: AttributeList
    11: ComFunc
    11: GraphPasteCmd
    10: GraphCreator
    10: Resource
    10: FileChooser
    10: FramesView
    10: Transformer
    9: NodeScript
    9: RpcHdr
    9: RpcReader
    9: NodeView
    8: FrameScript
    ivtools-doc/done.gif0000644000076500007650000000222007374262627015273 0ustar scottscott00000000000000GIF89aC**_ra3@/h@tml/OiJmagGes/do n@e. gi@fP'&?@@H@O@@,O%@@>PHh%9@@X G @@Xdv @X%v@@I@X,H@O@H@ @|@%@@GG@L% @@@ @HD @@,FOG @L@@@ @X,O%t@l GH,þ{ ޾@ @@@{,O @D@OI@ @@C@@R,F@JOЀ́%@J @ #Over%nwr@ite ex isting f_ile@ !`CREATOR: XV Version 3.10a Rev: 12/29/94 Image generated by Aladdin Ghostscript (device=ppmraw) ,CH*\Ȱ!#JE3jxƏ )vL1ɓ(S q$*cʔrdę8sN 3ƅr]ʴМItJ*ә"ƴʵӝ- kW 4k,[ }-ܴr]TiߓdO xo"F|bU-XǍY0:9ЁWEt3ѧ]]y5g|Ʉ rd5y]g:Oҥ9]N.z+wxӟ;ivtools-doc/download.html0000644000076500007650000001471511324454010016343 0ustar scottscott00000000000000 download ivtools

    [ ] download ivtools

    Source

  • ivtools-1.2.8.tgz   Nov 19th, 2008
  • ivtools-1.2.6.tgz   July 9th, 2008
  • ivtools-1.2.5.tgz   March 4th, 2008
  • ivtools-1.2.4.tgz   July 20th 2006
  • ivtools-1.2.3.tgz   October 7th 2005
  • ivtools-1.2.2.tgz   January 25th 2005
  • ivtools-1.2.1.tgz   July 13th 2004
  • ivtools-1.2.tgz   June 3rd 2004
  • ivtools-1.1.3.tgz   February 18th 2004
  • ivtools-1.1.2.tgz   December 8th 2003
  • ivtools-1.1.1.tgz   November 16th 2003
  • ivtools-1.1.tgz   October 30th 2003
  • ivtools-1.0.7.tgz   November 26th 2002
  • ivtools-1.0.6.tgz   August 2nd 2002
  • ivtools-1.0.5.tgz   August 1st 2002
  • ivtools-1.0.4.tgz   June 21st 2002
  • ivtools-1.0.3.tgz   March 11th 2002
  • ivtools-1.0.2.tgz   March 4th 2002
  • ivtools-1.0.1.tgz   January 9th 2002
  • ivtools-1.0.tgz   November 2nd 2001
  • ivtools-0.9.7.tgz   October 16th 2001
  • ivtools-0.9.6.tgz   August 20th 2001
  • ivtools-0.9.5.tgz   July 25th 2001
  • ivtools-0.9.4.tgz   June 15th 2001
  • ivtools-0.9.3.tgz   May 18th 2001
  • ivtools-0.9.2.tgz   April 5th 2001
  • ivtools-0.9.1.tgz   January 10th 2001
  • Change Logs
  • - installation directions for building from source
  • Documentation: downloadable web pages   on-line
  • - ivtools FAQ
  • - COPYRIGHT
  • - other source tar files
  • Binaries

    See also: ivtools project page

    Debian packages: etch, sid
    RPM packages: ivtools-1.0.4-1.i386.rpm   ivtools-1.0.4-1.src.rpm

    earlier versions and other OS'es

    To run the executables, add the relevant lib/LINUX directories to LD_LIBRARY_PATH (or LD_ELF_LIBRARY_PATH) and the relevant bin/LINUX directories to PATH, i.e.:

  • with sh, bash:
    export LD_LIBRARY_PATH=/pkg/vhclmaps-0.7/lib/LINUX/:/pkg/ivtools-0.7/lib/LINUX:$LD_LIBRARY_PATH
    export PATH=/pkg/vhclmaps-0.7/bin/LINUX/:/pkg/ivtools-0.7/bin/LINUX:$PATH

  • with csh, ksh:
    setenv LD_LIBRARY_PATH /pkg/vhclmaps-0.7/lib/LINUX/:/pkg/ivtools-0.7/lib/LINUX:$LD_LIBRARY_PATH
    setenv PATH /pkg/vhclmaps-0.7/bin/LINUX/:/pkg/ivtools-0.7/bin/LINUX:$PATH

    adjust "/pkg" as needed.

    For more details and warnings look here.

    LGPL sources

    As required by the LGPL, here is a local copy of the clippoly tar file (patchlevel 6), but you can always get it from the author as well: clippoly_button


    ivtools_button up to ivtools home page ivtools-doc/download.html.~1.28.~0000644000076500007650000001471511302031476017407 0ustar scottscott00000000000000 download ivtools

    [ ] download ivtools

    Source

  • ivtools-1.2.8.tgz   Nov 19th, 2008
  • ivtools-1.2.6.tgz   July 9th, 2008
  • ivtools-1.2.5.tgz   March 4th, 2008
  • ivtools-1.2.4.tgz   July 20th 2006
  • ivtools-1.2.3.tgz   October 7th 2005
  • ivtools-1.2.2.tgz   January 25th 2005
  • ivtools-1.2.1.tgz   July 13th 2004
  • ivtools-1.2.tgz   June 3rd 2004
  • ivtools-1.1.3.tgz   February 18th 2004
  • ivtools-1.1.2.tgz   December 8th 2003
  • ivtools-1.1.1.tgz   November 16th 2003
  • ivtools-1.1.tgz   October 30th 2003
  • ivtools-1.0.7.tgz   November 26th 2002
  • ivtools-1.0.6.tgz   August 2nd 2002
  • ivtools-1.0.5.tgz   August 1st 2002
  • ivtools-1.0.4.tgz   June 21st 2002
  • ivtools-1.0.3.tgz   March 11th 2002
  • ivtools-1.0.2.tgz   March 4th 2002
  • ivtools-1.0.1.tgz   January 9th 2002
  • ivtools-1.0.tgz   November 2nd 2001
  • ivtools-0.9.7.tgz   October 16th 2001
  • ivtools-0.9.6.tgz   August 20th 2001
  • ivtools-0.9.5.tgz   July 25th 2001
  • ivtools-0.9.4.tgz   June 15th 2001
  • ivtools-0.9.3.tgz   May 18th 2001
  • ivtools-0.9.2.tgz   April 5th 2001
  • ivtools-0.9.1.tgz   January 10th 2001
  • Change Logs
  • - installation directions for building from source
  • Documentation: downloadable web pages   on-line
  • - ivtools FAQ
  • - COPYRIGHT
  • - other source tar files
  • Binaries

    See also: ivtools project page

    Debian packages: etch, sid
    RPM packages: ivtools-1.0.4-1.i386.rpm   ivtools-1.0.4-1.src.rpm

    earlier versions and other OS'es

    To run the executables, add the relevant lib/LINUX directories to LD_LIBRARY_PATH (or LD_ELF_LIBRARY_PATH) and the relevant bin/LINUX directories to PATH, i.e.:

  • with sh, bash:
    export LD_LIBRARY_PATH=/pkg/vhclmaps-0.7/lib/LINUX/:/pkg/ivtools-0.7/lib/LINUX:$LD_LIBRARY_PATH
    export PATH=/pkg/vhclmaps-0.7/bin/LINUX/:/pkg/ivtools-0.7/bin/LINUX:$PATH

  • with csh, ksh:
    setenv LD_LIBRARY_PATH /pkg/vhclmaps-0.7/lib/LINUX/:/pkg/ivtools-0.7/lib/LINUX:$LD_LIBRARY_PATH
    setenv PATH /pkg/vhclmaps-0.7/bin/LINUX/:/pkg/ivtools-0.7/bin/LINUX:$PATH

    adjust "/pkg" as needed.

    For more details and warnings look here.

    LGPL sources

    As required by the LGPL, here is a local copy of the clippoly tar file (patchlevel 6), but you can always get it from the author as well: clippoly_button


    ivtools_button up to ivtools home page ivtools-doc/drawtool-README.txt0000644000076500007650000001153407417430144017203 0ustar scottscott00000000000000NAME drawtool - idraw with extensions SYNOPSIS drawtool -import n ['X-params'] [file] DESCRIPTION drawtool is an extended version of idraw (originally from the InterViews 3.1). Based on the ivtools OverlayUnidraw library, it adds the following features: - double-buffered graphics drawing - 3d Motif-like menus and buttons - readable text save/restore - polygon intersection and clipping tools - graphical object attribute annotations drawtool is derived from idraw, and implements the same set of pulldown commands and pallette of toolbuttons. Read the idraw man page for details on that part of the drawtool user interace. This page lists only the extensions to idraw embodied in drawtool. drawtool saves and restores documents in a readable text format. This allows for manual or programmatic creation of drawtool files. idraw-format documents can still be imported with the "Import Graphic" command, and exported with the Print command (both under the File menu). In addition to idraw format, the "Import Graphic" command supports the importing of encapsulated drawtool files, and the following image file formats: TIFF, X11 Bitmap, PBM, PGM, and PPM. Compression via compress (.Z) and gzip (.gz) is recognized and handled for the script files themselves and the PBM, PGM, and PPM image formats. There is also support for opening (via command line or dialog box) and importing via the net (to the -import port) any arbitrary PostScript file using the pstoedit filter, and any GIF, TIFF, or JPEG image, using respectively the giftopnm, tifftopnm, or djpeg filters. The "Export Clipboard" command writes the contents of the clipboard out in idraw or drawtool format. Commands have been added to the Edit menu for selecting by attributes (on the graphic objects) and clipping one polygon against another. The View menu has been expanded with zoom and pan commands, plus commands to hide/show graphics and fix graphic sizes and locations. In addition the viewer's panning and zooming can be chained to other viewers, and the pointer device can be put into a continuous "scribble" mode useful when drawing multilines or polygons. The tools have been extended with a possible six new tools: Annotate, Attribute, ClipRect, ClipPoly, ConvexHull, and GraphicLoc. Annotate brings up a text editor in which graphic-specific text can be entered and/or edited. Attribute brings up a dialog box to create/edit property lists for the selected graphic. ClipRect and ClipPoly clip polygons, rectangles, lines, and multilines if drawtool has been built with the clippoly library (otherwise just lines and rectangles). ConvexHull is a convex hull drawing tool available if qhull can be found in your path. GraphicLoc displays the coordinates of a mouse-click relative to the graphic that has been clicked on. This is relative to the original screen coordinates of the graphic when created (or the origin of the raster if an image). Subsequent rotations and transformations can give this a non-obvious value. OPTIONS "-import n" specifies the port number to run the import service on. The import service accepts connections over the net and reads drawtool or idraw documents and pbmplus image formats (PBM/PGM/PPM), plus JPEG, GIF, TIFF, and the non-raster portions of arbitrary PostScript if appropriate filters are available (djpeg, giftopnm, tifftopnm, pstoedit). "-color5" selects a colormap with 5 values per color or 125 entries (5 cubed). "-nocolor6" overrides the selection of a colormap with 6 values per color or 216 entries (6 cubed). "-gray5" selects a colormap with 5 bits of gray-level intensity (32 gray-levels) arranged to maximize rubberband visibility. "-gray6" selects a colormap with 6 bits of gray-level intensity (64 gray-levels) arranged to maximize rubberband visibility. "-gray7" selects a colormap with 7 bits of gray-level intensity (128 gray-levels) arranged to maximize rubberband visibility. "-dithermap" causes imported JPEG rasters to be mapped to the standard colormap (the default without -nocolor6) and dithered to avoid color banding. "-opaque_off" (or "-opoff") disables the opaque (visible) interactive transformations of graphics. "-pagecols" (or "-ncols") sets the horizontal page extent in pixels. "-pagerows" (or "-nrows") sets the vertical page extent in pixels. "-panner_align tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc" (or "-pal ...") selects the alignment of the panner display. "-panner_off" (or "-poff") disables the panner display. "-slider_off" (or "-soff") disables the slider display. "-zoomer_off" (or "-zoff") disables the zoomer display. "-ptrloc" enables display of the current pointer location. "-scribble_pointer (or "-scrpt") enables continuous line drawing. "-toolbarloc r|l" (or "-tbl ...") selects the toolbar location. Also see "-help" and the idraw man page for more options. SEE ALSO idraw WEB PAGE http://www.ivtools.org/ivtools/drawtool.html ivtools-doc/drawtool-icon.gif0000644000076500007650000000151307374262627017133 0ustar scottscott00000000000000GIF89aUU**UUU!,UUI8ͻ`hbiUl0t Ӯ1 ݉GHDىĕQ  >}ӏb p¡14A3dԱp2 heyMAYMu^"vn jXh4z lz@dq5Չ_裐5 &XG/䌠AIblɈ|5)[Vhs]9Efp oֹ`y'uZgIJ&^0(@h҉ڧ'zv)c|Zͪ=ߠ)^jRȁzk;ivtools-doc/drawtool-logo.gif0000644000076500007650000000127007374262627017143 0ustar scottscott00000000000000GIF89aUU**UUU!,UUI8ͻ`hbiUl0t Ӯ1 ݉GHDىĕQ  k'ٝm`Ozqz0yz 0=%ǐ#^OReFX)*6EA]g" G׏:=l$[-8 y{7-?aƙkpN!t ɟ!;t܁O=㻉[Z{j~O~_e|t^ y bt`n2 B_~!svh&_=x*3!JW'B`5hЋ0"b9W!4‡!EP;ivtools-doc/drawtool.drs0000644000076500007650000000663207374262627016237 0ustar scottscott00000000000000drawtool( rectangle(123,112,397,413 :fillbg 1 :brush 65535,3 :fgcolor "LtGray",0.762951,0.762951,0.762951 :bgcolor "White",1,1,1 :pattern 88,44,22,11,88,44,22,11 :transform 4,-0,-0,4,-677,-608), polygon((268,448),(248,426),(267,426),(249,397),(268,395),(250,355),(272,350),(253,309),(303,306),(288,345), (310,353),(288,396),(313,396),(286,430),(305,435),(271,464) :fillbg 1 :brush 65535,0 :fgcolor "Green",0,1,0 :bgcolor "Black",0,0,0 :graypat 0.75 :transform 2,-0,-0,2,-85,-24), polygon((268,448),(248,426),(267,426),(249,397),(268,395),(250,355),(272,350),(253,309),(303,306),(288,345), (310,353),(288,396),(313,396),(286,430),(305,435),(271,464) :fillbg 1 :brush 65535,0 :fgcolor "Green",0,1,0 :bgcolor "Black",0,0,0 :graypat 0.75 :transform 2,-0,-0,2,-167,-12), ellipse(51,287,242,65 :fillbg 1 :brush 65535,0 :fgcolor "Blue",0,0,1 :bgcolor "White",1,1,1 :pattern 11,22,44,88,11,22,44,88 :transform 1,-0,-0,1,118,220), polygon((268,448),(248,426),(267,426),(249,397),(268,395),(250,355),(272,350),(253,309),(303,306),(288,345), (310,353),(288,396),(313,396),(286,430),(305,435),(271,464) :fillbg 1 :brush 65535,0 :fgcolor "Green",0,1,0 :bgcolor "Black",0,0,0 :graypat 0.75 :transform 2,-0,-0,2,-235,-38), polygon((268,448),(248,426),(267,426),(249,397),(268,395),(250,355),(272,350),(253,309),(303,306),(288,345), (310,353),(288,396),(313,396),(286,430),(305,435),(271,464) :fillbg 1 :brush 65535,0 :fgcolor "Green",0,1,0 :bgcolor "Black",0,0,0 :graypat 0.75 :transform 2,-0,-0,2,-147,-56), arrowspline((20,255),(34,198),(231,222),(400,208),(278,16) :arrowscale 0.5 :fillbg 1 :brush 65535,3 :fgcolor "Brown",0.647059,0.164706,0.164706 :bgcolor "Black",0,0,0 :nonepat :transform 2,-0,-0,2,-147,-56), arrowspline((25,258),(46,223),(142,229),(355,234),(416,179),(450,8) :arrowscale 0.5 :fillbg 1 :brush 65535,3 :fgcolor "Brown",0.647059,0.164706,0.164706 :bgcolor "Black",0,0,0 :nonepat :transform 2,-0,-0,2,-147,-56), arrowspline((37,232),(45,225),(53,223) :arrowscale 0.5 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "Black",0,0,0 :nonepat :transform 2,-0,-0,2,-147,-56), arrowspline((71,219),(87,219),(104,219),(104,219) :arrowscale 0.5 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "Black",0,0,0 :nonepat :transform 2,-0,-0,2,-147,-56), arrowspline((127,220),(152,224),(178,224) :arrowscale 0.5 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "Black",0,0,0 :nonepat :transform 2,-0,-0,2,-147,-56), arrowspline((206,224),(230,223),(268,224) :arrowscale 0.5 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "Black",0,0,0 :nonepat :transform 2,-0,-0,2,-147,-56), arrowspline((284,223),(320,221),(343,206),(343,207) :arrowscale 0.5 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "Black",0,0,0 :nonepat :transform 2,-0,-0,2,-147,-56), arrowspline((369,189),(380,145),(381,120),(381,108) :arrowscale 0.5 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "Black",0,0,0 :nonepat :transform 2,-0,-0,2,-147,-56), arrowspline((382,76),(367,12) :arrowscale 0.5 :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "Black",0,0,0 :nonepat :transform 2,-0,-0,2,-147,-56), polygon((448,504),(407,464),(449,418),(493,470),(425,494),(414,435),(475,428),(475,479),(415,483),(436,425),(482,453) :fillbg 1 :brush 65535,3 :fgcolor "Yellow",1,1,0 :bgcolor "Orange",1,0.647059,0 :pattern 88,44,22,11,88,44,22,11 :transform 2,-0,-0,2,-147,-56) ) ivtools-doc/drawtool.gif0000644000076500007650000003444007374262630016204 0ustar scottscott00000000000000GIF87aWUUUUrrr**0,WUI8ͻ`(dihlp,WCmx|pH,Ȥrl:ШtJ$vzxL.zn|Nހt|YcrbZn_k]xshecpgȩtuʺaoػзjvmuc RGF6A3Y'q@;%^/zqdl}bD+e竟kAi}TH,KAB9Ju\-7ݚȚaQF%i[Du"}n J {wףXlZc 70ng}uV+S8c ׹d̒A&}tS[ :ueUlqP>Jw6͢ny"rck걟W-l;2}5[ڽfC[vILd֗GI'_=7΁{'w\ɷamEMЧ^7(7~R%cq xz-7u(Wi77\S, GH]1Vc)fCȤ %E'jHg ޛh2)=id2ErHk9[Ghf%HLmHfA*gBAF6iet4B:Z{6kq:%azif T6uT9hiay^)ff2mb@7 y. !\N.k/"-Bo%Ƽ,˯K/_ģP 1#1]w ,$l,0,4l8<@-DmH't#34PG-TWmXg t`-dmhlp-t#V@A߀.x|n#7G.Wngw9Gᚓ稧ꬷ.;w蜛/w^{|7G/}ǃNgϺ,o~ 羚x\8ԯg?78[8P} l_謗{+5[Hjl`BoDx0Bƹυ@|_ܧ j H[qV A^|8ve7da8B굱h!8B|A98Ϗ F~0ԣ (:2hDyA8DKRRciJv %(;HLґ\GY40I+3;^҇(3O)ICPw-UhX̥֒8GMK TdPC2O(HRs_4kNi60EUL"9Άϙ<'A#iR}gC♆yӂ O!4cL%*XPRK.ŒtN ɖQ-"/WCQfT!z'3xr eOY;ͪVa?B떾֎Ѓ+3IU;*孱ZEg׾;kVլmj:V]hX!wR6z hGKҚmM.Z3ᩏlgK[ڥV_v pKMr:ЍtKZn#; V xKMz\ve|Kͯ~^JC~ [6`N0l`#xnp, S5lacx p?,NUlbx0nq_,.=*»lcB>d#7N2d)WOѿMPѐNMiCOҕt/iL,\GRoԞ&5UjSz^^ZjVۺָ^u_[ׯ@_zN6 le7٩f mgؾj{^mF}v#1䛺uۛbxno޷Np~|7 ''q?V#%^_8A]z"OQr%o8_Ns69ηpM޼@ut+Ε/>: 5P:ַKݝTG̹~hz{^x1jO;NlodSVI/߽(:D'>|מw GؿF/'Zx=O7~!xߗ??џa̟Ψ_{g}G|]w fdf8g$(%u c7&؂,pF4'؁.&l7@8ƃ=&6H:؄n+LT } ~W؅VUH`)(Xax|6)rrjh"rdž@qf ~} (sÇrHb~hgxpCHw("xXxdHwZZ/5hX٧ ~u PH(MЋI،8x(8zLEuTShHH @t xg|X8u)hWbX (6X"VŘ}珕( ICw{d@yi~X9.Yt!uQ+ xz3ɓ:I&9@ɑ8wa6HI9{Ѹ>Ai+7T~ݘX﷕ؕh׊gxmy}p/G`zjwL)ٕ_)XGaWY i}h'@V&fhlə-}9Gwi{YfّUQyv uٜZ+&)3(4nɛb9`nvPlٛ mٔyp驞96杳}ȗMa ZQٜٛg9`p ؠyky؞c: ɇ|"Z \YvoǞSjq&Ey!ʤPi]9pEW٢^gFڅ>٤8LQS*/ jdH:CfmڜaZ` nlnJdrJ_z9:[iig%U 淡z6d ]Zɨ#zBsEfDEjXLԺ,顏 Z\6b*F9 ~ZQYgr# 笛Do՚ꤌhEyYrߊJKdc#Ʊ骆 o%q{|{*x+˺c7[7'ۮ$KOuyLE:7{b k6bU;SKy>Kl)AtFkSZ?w Pgy7ȩbr8۩Vwkz] &{J+ y $9 @ȱbYKiZْ~[wʮʐf|+.vz2kIw;f{y)_KKyzƛO`967ӛ#()뻠۽OxO0{P{wZ`{;8 yZYU鼜8暽K 6[ڿLʭھw) ¸KE:&ۗb9 [ k˪ê`aMס ƿ2ljª <|+*#"^WxƘIᤅg$G^I;[S'MwO/[Kޚ\`L ){SnWeMmܢ!fw, Y>z\+zῺ).Lvchi8.\frNŎ.9Zc _-nHRZ~`W(j߯RMKZgnbm>uNziΛcz>8;sО%m쏭ѧ*y{7D,k,! Zk6]ሠ s4.˜JA }*μuu 7_Jp, ['*t ,s=O< uxJov.Ȋ~P_pH'pYo}IqWܘsrL/ϧb?qWY߇L0/OWm^}ZZ ?j|Zƽ6OвQ7U_D\0g!vnEU we;r^Zo}f.w=TLv'oC,eWǿRm F 3EWeM]zkB( E0IT6ϣ3 ] v@8tdqe @U.Sw{~~4´EFœ0Ŀ>JL@KSTRւ8PMZXY^^abe[ff]$Q,UT-5k78hprgtHICJ ExyqsiR޴e3 3vyC~JL؍ mQ/E#ߨj U4%81)Ivɳ^#D5gZ$)Y.]MD:0JWrQTUJ헔YNQ%ۖ۱~D]vs!6&fnܾ&uk \Kb̊5EIs4/aeLDx ՃQBukر+m?RiฅF0(^rpⷣ;:Хo~N/zSpc~}o8O=~[$\AC!A ,)2pC;CC& KDD'JEXD jFsqG{1+Q "H#K< *}rJ*h˿{oJ~]2[}Y-j v'=|>I(G%#`oFP-H0Ѡ`/ q>P( r?$a34!j/i໚#1GI ;MQqMQ/9*nq, *QxG<1>rcb"/.c|$$MFQ%D&R<kKc#E%EfR:% ?29p'i9R\%KIX̍g)_2Q4eXJvu)>b;$/g[Fs4#{̡\e|qMiJØ,+yƼp:a3 lSU$dfoEH7y Ig=(P2cYAF; 9vC ω*4p0(%ho&ҁUDLdtͅC4H C9S^$ӔBra RnQ; ԨEY 6}Ԥ+v33ݸkEςP,8*[y-xVEaX +Tr@U} 'K1I6w= ,jV[iOu[ͰY,ﰢ5Y. )kڃ!{-o3Hv05TkB}[ 66Sc/Jݬ V,xWծ іeU7]Lz~:" ,T;[w`fWA7؀j5og9IÓ p3,vF BS/WƷİc}c㴙3mQ!_ڒ{&%X;5Q]VqԄjN`|Ħr}]ӧQݜM ޘq봽-:4mowg16on=Ps\MeŮ&v@4n׼Co!Uɝplŀ6on3] x=qsdç{c_y]^\9irwYU{jV 6[s#JOҝt\Lӏ`/Љʛ5y:gW{Ƨ\剅^-zH_{^~<CD9R3|wrX?|nx_^֗Aw 9b=U0]`VɊěWr] Ң2g_Wm!EM ;P&PWWXze7ue}]؍uؒ͒*HTI X5Y9c2ZXٙ؞Mע՟MZ%FepY٥٩+SfٓZmNͣ%Z'Q2-گe[p۷2Vm[/O]3Ń5]ۻ}\F669v :1X,Vdx.Y[H^f?ET]Xu㖕હX.aa%lMfYES Ve=h޻Txvfpfsxd&mH[ݨ^ g`x.sbkblf^f_^g ևBse  .!gx`|}EhgKxq0g챱]eimN8tg۽}_nVhİ?hthHj^jnj~jj-=;0rgXkk.k>kF\gM}V[Nkk>gb=`X0껭.l.쵮e%LhEÎl6nk΅~lȞlϞVH[%Nmfgm`\%DmծNlmm0m>n. .YNmFm6 ν08Vm]cXnnƅDl.lo؎Ⱦooono5ovo mTkponoqg gc:% ݶ OFÎpr^\ Y~qk ro<ow&kk;>}+WFl&p5k68%n^s!/_*03s'75r)(fnB/fs7fJ7sHhsK/uNq@s2TqP\igGvSGCG>&idN*$ϲvvmw &8\frzhqnZ4@hyŎ}gc9/2tS/xÆw!x?wxW܅4MV$u%] SdKnf'g4-yKy!s`wAvT}yT z"Hy~HWͤzxJjRe"Pz%/RNϨȌzѽLJ_FO{&Tw^v㹗cokG`?oA|џDŽ_?ϯ|{VdVzw{|'v@X}~M7,&5 ޗg d͚~%qm/6we}{OWɗ?-`b/z/PA jn1=5>' wFq,"J')RVh^,XVeJ(7</v=_^ _ W!a"C[\fݡ$h((i)ח**miĀo/p0I,-rs24sQ+؁sg.A8y9zI7{;<|k.ʳq$S!ӯY>棤>_oP?1a1տɲǮ++h9hO?0s GD`C \JA K8Bt=7X @!=鐁;4D%CbVC~zNbkO^:#Ө5 4$" "U⢨r'"j;3҂A<$"[7nꪣ>u~Ј1!øBo-b)QD>`,&zLFKwҐ,%. Tv`bs%ه8 \TeDWRs*()rHA.t3{ALNֻ,1e޲6wF=Y`bJ&dg.uBso/PsD@ d*Px"r< ZI c696BmS;ۙQg}0Sݡ37݉G͑ &S+.`T Մ 5Bg* w񝊬W괱:MU](EFCljEcBҪg 15iTx3lX꿻to5mV xzksullUE-YReTa%ʒF kSS׿>Ś,lꀴ@`MIоӵ-p55FJ-J[Bշ .qعv=<TpvQjt/K]eŠ-S^ש,~.?,.Hv͢oSn9a 4Ӡo2fJ/F<#N)0ņvm4c >vq H&j|eQ2٬c>5\e4E}OҨbe4 ]r\kL01.46)-umm^gdR3FdlZv \ vomgo׈ Uj})t-edZt*^dR87Iu#K _'Cy@<⺬5Cnqcn:q0w[7vGdZ*]kiT1璿<9_toM iPtzY[5W]u.Gur\B+}QWbqObl)4'Ìi/ NW{g˾>KoaʷvY~ιCUSxe!뻳0lu{_p}rߘc~}]` zi3q՟$vܞ (`_ua 1 /v X`^Y6ߙ`*] (e_k r_= YHɠzb bF1Lޘ`yqa#Pۉa^! aQ-Xa aB  aLah`!!" F= aJ"%U\h&rz*B))vb*@I zB,a$&i#"rb00Z\&/b'b2R 0Z,ࡦ"y,[7J&|`: =M%F.BM;]>E167N7:8d\h#အ㠭2 $(Z92!:VC CzFj]EG)#K*+>Q$E#$p Mj`MŒN".AO` aH.ek@jQ:aP2%N`TTf%NΖ7\En%X7`㑥dEVZ:ye5eZ2% Y %UY~^e^n_$Ze\u] bfc`.fR&e:fo_cnf%RRreWDgrNґhjkl&m֦m&nn&oo&pp'q'D;ivtools-doc/drawtool.html0000644000076500007650000000745507503671462016412 0ustar scottscott00000000000000 ivtools drawtool: idraw derived drawing editor with PostScript and native format

    ivtools drawtool

    ivtools drawtool is an extended version of idraw with double-buffered graphics display, a human-readable native format for drawing save/restore, Motif-looking toolbar and pull-down menus, and several extensions to the import/export and multi-viewer mechanisms as well. Here is a picture of the user interface. Here is the drawtool document for the drawing shown in that picture.


    Usage

    man page

    Launch drawtool directly on one of these graphic formats, some by using helper apps:

    FORMATHELPER APP
    PNGpngtopnm from netpbm
    JPEGdjpeg from libjpeg
    GIFgiftopnm from netpbm
    arbitrary PostScriptpstoedit
    idraw-formatted PostScriptnone (native format)
    TIFFnone (native format)
    PBM/PGM/PPMnone (native format)
    XBM (X bitmap)none (native format)

    Or use anytopnm (from pbmplus/netpbm) from the import dialog box to convert a wider variety of raster formats to a format readable by ivtools drawtool: XBM, TIFF, and 8/16 bit binary/ANSI PBM/PGM/PPM.

    Read more about using the import/export capabilities of drawtool here and here


    If you're running Linux download an ivtools drawtool binary (or build from source) and add the following to your ~/.mailcap file:

    application/ov-idraw; drawtool %s

    to test launching drawtool when a drawtool document is clicked.

    The web server at www.vectaport.com is set up to send out .ovs or .drs files as MIME type application/ov-idraw. If downloading an ivtools drawtool file from another server, you'd want to add this to your ~/.mime-types file:

    application/ov-idraw; ovs
    application/ov-idraw; drs

    Other stuff
    hyper-collage of anteaters
    adding Kanji input to drawtool (revised Kanji patch)
    drawtool redraws Debian logo

    Other free software drawing editors similar to idraw and drawtool:

  • Xfig
  • Tgif
  • more...

  • ivtools drawing editors idraw drawtool comdraw flipbook graphdraw

    ivtools_button ivtools home page ivtools-doc/editors.html0000644000076500007650000000246107442174160016213 0ustar scottscott00000000000000 ivtools drawing editors

    ivtools drawing editors

    more things to do with the drawing editors


    idraw_icon idraw built on ivtools copy of Unidraw

    Things you can do with idraw.


    drawtool_iconidraw with extensions

    Export/import over the net with drawtool.


    comdraw_icondrawtool with integrated command interpreter


    flipbook_icon comdraw with multi-frame display mechanism

    Launch flipbooks from web pages.


    graphdraw_icon comdraw with graph browser/editor integrated


    other tools that work with ivtools drawing editors

    [ ivtools ] ivtools home page ivtools-doc/etplusplus.html0000644000076500007650000000273107374262630016766 0ustar scottscott00000000000000 ET++ application framework

    ET++ application framework

    ET++ is another application framework upon which layers of value-added frameworks have been built. Originated at UBILAB by Erich Gamma and Andre Weinand who then both went to Taligent. Here are some related web pages:

  • University of Linz ET++ distribution (with binaries)
  • MET++, multimedia application framework built on ET++.
  • EGG II, a tool for building interactive attributed graph editors.
  • GeneQuiz, a workbench for sequence analysis.
  • ET++ case study (pattern review)
  • ET++ tar file
  • ACM Paper: ET++---an object oriented application framework in C++
  • Ralph Johnson student page: ET++: A Portable Application Framework

    back to ivtools ivtools-doc/expimpnet.html0000644000076500007650000000527107512656157016566 0ustar scottscott00000000000000 How to export and import graphics over the net with ivtools drawing editors

    How to export and import graphics over the net with ivtools drawing editors

    Import

    ivtools drawtool and flipbook drawing editors, when configured and built with ACE, have a "-import portnum" parameter (which defaults to 20001 for drawtool and 20003 for flipbook). The editors accept connections on that port and import any data received into the drawing editor. Connections can be established in any manner. Telnet works, i.e. "telnet localhost 20001". To simply connect and transfer a data file to a host/port, you can use the ivtools comterp command like this:

    comterp telcat localhost 20001 filename

    Supported formats: builtin

  • idraw PostScript
  • ivtools drawtool format
  • PBM/PGM/PPM image formats
  • Supported formats: default extensions via plugins
  • regular PostScript via pstoedit
  • JPEG via djpeg (from the Independent JPEG Working Group)
  • gif via giftopnm (part of the non-free portion of netpbm)
  • TIFF via ivtiftopnm (part of ivtools) and tifftopnm (part of netpbm)
  • PNG via pngtopnm (part of netpbm
  • Export

    All ivtools drawing editors and most vhclmaps map viewers can be used to export over the net by utilizing the "comterp telcat" command described above and the "to command" mode on the drawing editor export dialog box.

    Steps to export over the net:

  • Launch an editor with an import port configured
  • Launch another editor and load or draw some graphics
  • Select graphic(s) to be exported over the net with the Select tool
  • Bring up the export dialog box (File/Export or ^X)
  • click on the "to command" button
  • enter this into the string editor:

    comterp telcat localhost 20001 %s

  • Press the enter key or the Export button
  • The filename is supplied by the export dialog box (you can leave off the %s). Adjust hostname and portnumbers as needed.

    ivtools-doc/faq.html0000644000076500007650000013134207503671462015317 0ustar scottscott00000000000000 ivtools faq

    ivtools FAQ

  • drawing editor questions
  • source building questions
  • programming and debugging questions
  • binary tar file questions
  • miscellaneous questions

  • drawing editor questions

  • I am unable to read or import anything into any ivtools drawing editor.
  • When I try importing (or opening) a postscript or an eps file in idraw it segfaults without warning.
  • I tried exporting (or printing) graphics to a filter (by selecting the "export to filter" checkbox on the dialog box), but when I type in something like "xv -" it doesn't work.
  • What other drawing editors are available like idraw and ivtools drawtool?
  • What bugs have been fixed in idraw?
  • Others see "warning: drawing version 0 newer than idraw version 0" when they load my drawing into their copy of idraw.
  • Others see "warning: drawing version 0 newer than idraw version 0" followed by a segfault when they load my drawing into their copy of idraw
  • I am unable to read or import anything into an ivtools drawing editor.

    Do you think your version of ivtools was compiled with gcc-3.0? Or could it have been compiled with a gcc-2.95.3 that was bundled with an early copy of libstdc++-v3? Check out this faq entry for more details. Otherwise, read the other faq entries below.

    When I try importing (or opening) a postscript or an eps file in idraw it segfaults without warning.

    idraw can't handle general PostScript or EPS files, only those specially formatted in the way that idraw writes out its own drawings. And since we strive to preserve idraw pretty much as it is (was), these segfaults have not been fixed (yet).

    However, you can convert arbitrary PostScript to idraw's editable format with pstoedit. See http://www.ivtools.org/ivtools/idrawthings.html for other things you can do with idraw and the idraw PostScript format.

    Since ivtools-0.6.12, ivtools drawtool (and the rest of the ivtools drawing editors) automatically detect an attempt to open or import arbitrary PostScript, and invoke pstoedit (if it can be found) to filter the input.

    I tried exporting (or printing) graphics to a filter (by selecting the "to command" checkbox on the dialog box), but when I type in something like "xv -" it doesn't work.

    The way the export mechanism works is the exported or printed graphics are written to a temporary file, and the pathname of that temporary file is appended to the command line entered into the field editor at the top of the dialog box. So in this example, "xv" would work, but not "xv -".

    Since ivtools-0.7.1, to be more explicit about this mechanism, the dialog boxes search for an embedded "%s" in the command line, and replace it with the temporary file name. If an actual stdin-accepting filter is what you want to use, a "<%s" would be required at the end of the command line. If no "%s" is found in the command line the temporary filename is appended to the end of the line like before.

    What other drawing editors are available like idraw and ivtools drawtool?

  • Dia
  • gCAD
  • Gill, Gnome illustration app
  • GTKFIG, figure editor built on gtk+
  • GYVE (GNU Yellow Vector Editor), GNU project drawing editor
  • ImPress, a drawing editor implemented in Tcl/Tk
  • Ipe, a drawing editor extendable via plugins
  • Killustrator, a drawing editor built on KDE
  • picasso
  • Sketch, a drawing editor written in Python
  • Sodipodi, another GNOME vector graphic drawing editor
  • Tgif, the other web-enabled drawing editor with hyper-structured-graphics
  • Xfig, feature-full CAD-like drawing editor
  • See Also: Vector Graphic Foundry Editor Page

    What bugs have been fixed in idraw?

  • with ivtools-0.7.9 now backing out past the first vertex (left-click) will terminate the polygon drawing in all the ivtools drawing editors.
  • a long-standing problem in graphics staying on the grid when drawn with gravity on. The integer nature of the mouse coordinates were not fully taken into consideration when constructing graphics after arbitrary panning and zooming of the viewer.
  • a recently revealed problem in the maintenance of arrowhead graphics, that hadn't been a problem until recent compilers cleared up the semantics of an overloaded assignment operator.
  • a bug in the management of the filechooser dialog box glyphs (the ones used for Open/Save/SaveAs), that caused a segfault with some compiler setups.
  • a bug in the handling of un-openable files that caused a segfault with some compiler setups.
  • a bug in generating the idraw format version warning message (see below).

    Others see "warning: drawing version 0 newer than idraw version 0" when they load my drawing into their copy of idraw.

    The idraw version format number was incremented from 10 to 11 with ivtools-0.6.7. The intent of this new version number was to add support for more of the features of PostScript (and X11) that can be generated by utilities like plotutils: floating-point line width, cap-styles, join-styles.

    From ivtools-0.6.7 to ivtools-0.7.2 the only change in the idraw format was the addition of some calls to closepath in the PostScript, to ensure ellipses and circles are closed. This change was embedded in the PostScript prologue of the idraw document, and the result can still be read by older versions of idraw.

    But the change in version number is detected by older versions of idraw, and a warning is printed out. Problem is, there has always been a bug in the warning message output (floats were treated as ints), so you see the not-so-helpful message of "warning: drawing version 0 newer than idraw version 0". This problem has been fixed since ivtools-0.6.7. This patch could be applied to any other distribution of InterViews to alleviate the problem in those copies of idraw.

    Others see "warning: drawing version 0 newer than idraw version 0" then a segfault when they load my drawing into their copy of idraw.

    First off, read the previous FAQ entry to understand why the warning message isn't more helpful.

    Secondly, the document you gave them has more than just a different version number. It probably makes use of some sort of backward-incompatible extension to the format. From its inception the idraw format versioning system was designed to be forward- if not backward-compatible. Which means you can always read older documents with newer versions of idraw, but the opposite is not guaranteed (hence the warning message). Sometimes it works, sometimes it doesn't.

    The idraw format version 11 introduced by ivtools-0.6.7 is the first new version number since the InterViews 3.1 tar file was published in 1993. But up until ivtools-0.7.3 nothing of a backward-incompatible nature had been done with the new format number. And with ivtools-0.7.3 most all uses of the format are still 100% backward compatible.

    But now there is a chance that you might generate, using a yet-to-be released copy of plotutils or some other approach, a version 11 idraw PostScript document with non-integer floating point line widths. This is handled smoothly by the idraw of ivtools-0.7.3 (and will be handled smoothly by the rest of the drawing editors of ivtools come 0.7.4), but presenting a version 11 idraw format with non-integer line widths to any version of idraw prior to ivtools-0.6.7 will cause the above warning message to be printed, possibly followed by a segfault. Presenting a version 11 idraw format with non-integer line widths to any version of idraw from ivtools-0.6.7 to ivtools-0.7.2 will not generate a warning message or cause a segfault, but neither will the document be read in.

    To clear up all this confusion, the forthcoming version of ivtools (0.7.4) will increment the idraw format version number once again, from 11 to 12, and it will be recommended that non-integer line widths not be used in conjunction with format version 11 (although there is some support for it). In that way users of an idraw from ivtools-0.6.7 (i.e. users of Debian 2.1) will be warned of a version incompatibility if there is one, given a hint why their document did not open in idraw.


    source building questions

  • I'm using RedHat 7.* and gcc-2.96, and I get all kinds of errors. How can this be?
  • When I run configure on Darwin (Mac OS X), I see "./configure: read-only variable: PWD [1845]". Should I be worried?
  • The absolute pathname used by the "make depend" pass is not the same as the ABSTOP pathname written to config/config.mk by the configure script.
  • I can't read or import anything, and I built ivtools with gcc-3.0.0 or gcc-2.95.3 bundled with libstdc++-v3.
  • I run "make World" or "make Makefiles", and see an error message like this...
  • How should I set the CPU environment variable for Solaris?
  • I just can't get ivtools built on anything but Linux or FreeBSD. What do I do?
  • When are you going to have a configure script?
  • Do I need to restore the top-level Makefile from the tar file after a faulty start at configuring things?
  • I'm getting compiler errors with gcc-2.7.* when I use -O.
  • I get an "iostream.h: No such file or directory" when compiling ivtools.
  • I set "HasDynamicSharedLibraries" to NO (in config/gcc.def), and it didn't seem to work.
  • The makefiles are looking for source code under /proj/ivtools-1.0, but that is not where I put the source tree on my system.
  • What if I want to configure with --enable-use-rpath, but my copy of gcc is setup to use the Solaris linker, which expects -R instead of -rpath?
  • The GNU version of make doesn't understand a -w argument. What do we do?
  • Our version of make doesn't understand the $(shell pwd) construct. What do we do?
  • With gcc-2.8.* I get internal compiler errors with optimization enabled (-O) on InterViews/alloctbl.c, IV-X11/xfont.c, and IV-X11/xwindow.c.
  • "make World XCONFIGDIR=..." doesn't work because cpp can't find a file included from site.def.$CPU.
  • I just installed gcc-2.8.1, and when I rebuild ivtools I see this:
    /usr/include/g++/streambuf.h:392: warning: invalid type `void *' for default argument to `ios *'
  • I just installed gcc-2.8.1, and when I rebuild ivtools I see this:
    /tmp/cca09221.s: Assembler messages:
    /tmp/cca09221.s:193: Error: invalid character (0x8) before first operand
  • I'm using RedHat 7.* and gcc-2.96, and I get all kinds of errors. How can this be?

    The 7.* series of RedHat distributions incorporates a variant of the gcc compiler that was never approved by the gcc steering committee. A decision was made to skip this version, and migrate to gcc-3.* when it came out. This has been done, but RedHat is still shipping gcc-2.96 with it's distribution. The fix is to upgrade to gcc-3.* or downgrade to gcc-2.95.*. This problem only impacts RedHat 7.*. Any other free Unix you can name has avoided this problem. If you are committed to using gcc-2.96, here is a patch submitted by Murray Jensen that attempts to do this on Solaris: http://sourceforge.net/tracker/index.php?func=detail&aid=400986&group_id=275&atid=300275

    When I run configure on Darwin (Mac OS X), I see "./configure: read-only variable: PWD [1845]". Should I be worried?

    Not about PWD. The configure script ensures that the PWD environment variable is correctly set, and Darwin doesn't want this value reset, but there is no problem because it is already correct.

    The absolute pathname used by the "make depend" pass is not the same as the ABSTOP pathname written to config/config.mk by the configure script.

    There is a vulnerability in the "make Makefiles" pass (the use of imake), where absolute pathnames that incorporate predefined C symbols get these symbols expanded to another value. For example, most PC-based uses of gcc have i386 defined to 1, so a path like /usr/src/i386/ivtools-1.0 gets expanded to /usr/src/1/ivtools-1.0. To check the set of pre-defined symbols, enter this command: touch test.c;gcc -dM -E test.c.

    You can either rename the affected directory in which ivtools resides, or you can add -U undefine arguments as necessary to the imake command line. See the definition of ImakeFlags in config/site.def.NETBSD for an example.

    I can't read or import anything, and I built ivtools with gcc-3.0.0 or gcc-2.95.3 bundled with libstdc++-v3.

    Check out this patch for more details. No longer needed after ivtools-1.0.2 -- the workaround was to replace any rewind with close/open.

    I run "make World" or "make Makefiles", and see an error message like this

    Making Makefiles for in
    /proj/ivtools-1.0/src/IV-common/
    /bin/sh: test: argument expected

    Looks like you need set the value of CPU in config/config.mk. The configure script should have written the value of "make CPU" in that file, i.e. "CPU = LINUX". Run "make CPU" again by hand to see what it should be. "grep ArchitectureName config/arch.defs" to get a complete list of supported operating systems.

    How should CPU be set in config.mk for Solaris?

    The CPU make variable should be set to SUN4 in config/config.mk by the configure script.

    I just can't get ivtools built on anything but Linux or FreeBSD. What do I do?

    Unique challenges are present for building ivtools on any commercial version of Unix, problems that just don't exist with open-source free software Unix'es. But don't despair, read through the following list of pointers and try again. It's only the build process that's frustrating. Once you get it built you'll find most of the code is very old and very stable on a wide variety of platforms.

    Even before reading this list, see if you have CPU defined in config/config.mk. If you have no config/config.mk, do a ./configure. If it is undefined in config/config.mk, test what the value should be with "make CPU".

  • First, after any problem with the build process, be aware that you might have to restore the state of the source tree in one of three ways:
    1) restore the top-level Makefile from either Makefile.bak or the tar file
    2) do a "make clean" to remove the effects of previous compiles
    3) completely erase and restore the source tree from the tar file, to be absolutely sure of starting from a known state.
  • Second, be aware that the "make World" might need both XCONFIGDIR and PWD arguments. This is often the case for users of Solaris or DEC Alpha, where the default shells do not support a PWD environment variable. See other workarounds for the PWD problem here.
  • Third, be aware that the "make World" is relying on configuration files that are outside of the scope of ivtools, that are part of the commercial X distribution delivered on your system (i.e "sun.cf"). This can cause problems, especially with Solaris, when you are using /usr/ccs/bin/make instead of GNU make (read more here). You also might want to peruse these recently updated instructions specific to building Vectaport software on Solaris-2.6
  • Fourth, be aware the imake works best (in this context) with the gcc version of cpp (the C preprocessor), and has problems with the default cpp available on commercial Unix'es. Read how to work around this here.
  • Finally, if you are going to be doing a lot of source based development with C++ and gcc, you might want to consider partitioning your hard disk and installing some variant of an open-source Unix available for your processor. The more-inclusive approach of the open-source Unix'es avoids a lot of problems and headaches, because there is no single company filtering what goes into the environment, and things that have built once somewhere tend to keep compiling on a free Unix.

    Or consider switching to MacOS X with XFree86 4.2.0 available directly from Apple. ivtools now builds on Darwin (Mac OS X), as of version 1.0.2.

  • When are you going to have a configure script?

    Since release 0.6.10 there is a configure script for ivtools tested on at least Linux, Solaris, and OSF-Alpha. Since there is no extensive use yet made of any machine specific information, this configure script should work for other OS'es with the creation of an appropriately named, empty config/$os-gcc.mk file (a whole set of these are incorporated since 0.6.11). Supported flags include:

  • --with-clippoly=path
  • --with-clippoly-libs=path
  • --with-ace=path
  • --with-ace-libs=path
  • --with-iue=path
  • --with-iue-libs=path
  • --x-includes=dir
  • --x-libraries=dir
  • --enable-install-relative[=ARG]
  • --enable-use-rpath[=ARG]
  • The configure script might also use the PWD environment variable to fix the base directory of the ivtools source tree for use in the ivmkmf script. You may have to set this manually prior to running the configure script if your shell does not support it. For more details see the INSTALL directions.

    Do I need to restore the top-level Makefile from the tar file after a faulty start at configuring things?

    Yes.

    I'm getting compiler errors with gcc-2.7.* when I use -O.

    There were unresolved problems with gcc optimization for Linux Elf and ivtools with gcc-2.7.2.

    I get an "iostream.h: No such file or directory" when compiling ivtools

    Make sure you have a copy of libstdc++ installed, like described in the ivtools INSTALL. This is a separate package from gcc. See if it exists on your system by looking for a directory like/usr/include/g++, /usr/lib/g++-include or /usr/local/lib/g++-include.

    I set "HasDynamicSharedLibraries" to NO (in config/gcc.def), and it didn't seem to work

    Try adding APP_CCLDFLAGS = -static to each main.c's Imakefile that your are trying to static link. But if you are static linking more than a few you might want to stay with shared libraries because of the savings in disk, memory, and runtime.

    The makefiles are looking for source code under /proj/ivtools-1.0, but that is not where I put the source tree on my system.

    IvToolsSrcRoot (in config/local.def) needs to be set to $(TOP) instead of /proj/ivtools-1.0 (or the absolute pathname where you installed the source tree).

    What if I want to configure with --enable-use-rpath, but my copy of gcc is setup to use the Solaris linker, which expects -R instead of -rpath?

    Before running configure, manually edit config/local.def and config/params.def to change all uses of -rpath to -R.

    The GNU version of make doesn't understand a -w argument. What do we do?

    It would seem that the Solaris configuration files for X Windows (openwindows) assumes the Solaris version of make, hence the incompatible -w. You can get by using the Solaris version of make, but need to be aware of the following FAQ entry. Pointed out by M. Rasit Eskicioglu of the University of Alberta.

    Our version of make doesn't understand the $(shell pwd) construct. What do we do?

    In the top level Makefile you can define a symbol, PWDX, for the pwd command and change all occurrences of (shell pwd) to (PWDX:sh). Do this BEFORE running make World (or make Makefile). You need only to change the top-level Makefile. Submitted by Dan DeJohn of Digicomp.

    With gcc-2.8.* I get internal compiler errors with optimization enabled (-O) on InterViews/alloctbl.c, IV-X11/xfont.c, and IV-X11/xwindow.c.

    Manually disable optimization for these modules by removing the "$(OPTIMIZE_CCFLAGS)" from the corresponding macro call in src/IV/Imakefile (then doing a "make Makefiles" and "make"). Leave the comma before "$(OPTIMIZE_CCFLAGS)"

    "make World XCONFIGDIR=..." doesn't work because cpp can't find a file included from site.def.$CPU.

    imake is fragile when used with other than gcc's version of cpp. Three suggestions:

    First, after having any problem with "make World" be sure to restore the top-level Makefile from the tar file. Subsequent problems could be due to a corrupt top-level Makefile. You can verify this by looking at that Makefile directly.

    Second, try and setup your environment so that your imake uses a GNU version of cpp. If you do a "gcc -v" you'll see the directory where the gcc specs are read from. The cpp you want is in the directory immediately above the specs directory.

    Finally, if you have further problems, please forward copies of the afflicted files (the top-level Makefile, config/config-hpux-gcc.mk, etc..) to ivtools-info@vectaport.com, as well as complete logs of the build process, and we'll do our best to help you resolve this problem.

    I just installed gcc-2.8.1, and when I rebuild ivtools I see this:
    /usr/include/g++/streambuf.h:392: warning: invalid type `void *' for default argument to `ios *'

    You need to upgrade to libstdc++-2.8.1.* as well. After installing you may have to do some of these steps:

  • Change the definition of GPlusPlusIncludeDir in config/site.def.$CPU to point to where the include files were installed (i.e. "/usr/local/include/g++").
  • Move any older version of libg++ or libstdc++ include directory out of the way (i.e "mv /usr/include/g++ /usr/include/g++.old").
  • Do a "make clean;make Makefiles;make depend"
  • Establish a symbolic link from /usr/include/g++ to /usr/local/include/g++ (or wherever you installed libstdc++).

    You also will see this error whenever NULL gets redefined as "((void*) 0)" instead of "0", which is the way the C++ compiler likes it. Most, if not all, of these warnings were fixed by ivtools-0.7.4.

    I just installed gcc-2.8.1, and when I rebuild ivtools I see this:
    /tmp/cca09221.s: Assembler messages:
    /tmp/cca09221.s:193: Error: invalid character (0x8) before first operand

    You need to turn on optimization to work-around bugs in non-optimized compilation. Add these lines to ivtools-1.0/config/local.def:

    /*
     * What you need to turn on optimizing (a good idea)
    */ #undef TurnOnOptimizing
    #define TurnOnOptimizing YES

    And "make Makefiles;make clean;make". This will be included by default in ivtools-0.7.4.


    programming and debugging questions

  • How do I set up a stand-alone program or source tree on top of ivtools for development purposes?
  • How do I add a new tool to the toolbar of a drawing editor derived from ivtools?
  • How do I add a new pull-down command to a drawing editor derived from ivtools?
  • How do I possibly begin to program with a source tree that has so little documentation?
  • Whenever I attempt to debug a derived Tool's InterpretManipulator method it hangs my X server.
  • I can't inspect the value of a local variable in gdb. What do I do?
  • I'm having trouble debugging a heap memory management problem. I get a segfault in malloc or free, and I can't trace what's wrong in the debugger. What do I do?
  • Printing out the contents of a ComValue in gdb is troublesome, because of the number of static class variables of type ComValue. How can I work around this?
  • What if I want to use insure++/insight to compile ivtools on an Alpha?
  • What changes, if any, have been made to the API of InterViews and Unidraw?
  • How do I set up a stand-alone program or source tree on top of ivtools for development purposes?

    If you are writing a stand-alone program that will exist in a single directory, simply copy an appropriate Imakefile and main.c from a InterViews or ivtools example program directory, modify accordingly, then use "ivmkmf -a" to generate the Makefile. Make sure you are using a fresh ivmkmf that corresponds to your installation of ivtools. An example of this is the comtop sample program, a stand-alone program separate from ivtools that builds on top of the comterp command interpreter mechanism.

    If you are setting up an entire source tree with both class libraries and executable programs, you will want to get started by replicating an equivalent source tree (i.e. vhclmaps) and change or rename all directories or files as appropriate.

    How do I add a new tool to the toolbar of a drawing editor derived from ivtools?

    First locate an existing tool (some subclass of Tool) that closely matches your requirements. Create a new derivative or cloned class, which involves specifying a new ::InterpretManipulator method (and maybe a new ::CreateManipulator method). You might also want to create a new class id by copying the implementation of another Tool's ::IsA method. Then plug it into your drawing editor by adding an entry for it in the ::MakeToolBar method of a class derived from OverlayKit. More information about the design involved can be found in Unidraw documentation. The OverlayKit object is an ivtools enhancement to Unidraw. It is an object used by the Editor (the OverlayEditor) to construct itself. In this fashion virtual methods can be applied to the editor construction process, one of the more central activities in constructing a Unidraw based drawing editor.

    How do I add a new pull-down command to a drawing editor derived from ivtools?

    First locate an existing command (some subclass of Command) that closely matches your requirements. Create a new derivative or cloned class, which involves specifying a new ::Execute method. You might also want to create a new class id by copying the implementation of another Command's ::IsA method. Then plug it into your drawing editor by adding an entry for it in the appropriate ::Make*Menu method of a class derived from OverlayKit. More information about the design involved can be found in Unidraw documentation. See the item above for more details on the OverlayKit object.

    How do I possibly begin to program with a source tree that has so little documentation?

    First off, maybe you can program what you want by using the command interpreter embedded into the ivtools drawing editors and networked servers. It is a fully-programmable function-based interpreter with syntax no more complicated than that of C expressions. Designed to appeal to engineers and scientists, it could have what you're looking for in terms of easily programmable manipulation of spatial data. And it can be extended easily by C programmers, without requiring the mastery of an object-oriented application framework.

    Secondly, there really is a lot of documentation. Read all this, then come back and ask the question again.

    Finally, the whole field of design patterns was launched, after the fact, in an attempt to document the inner workings of frameworks like these. If a single man page per class was an adequate approach you wouldn't have five or six textbooks and numerous technical papers published to date on the subject. Here's the book that started it all, by the notorious Gang of Four, Design Patterns, Elements of Reusable Object-Oriented Software.

    However, reading documentation alone will never make you a capable programmer with application frameworks of this complexity. Just as in mathematical proofs and circuit design, there is no substitute for direct study of the underlying logic if you wish to acquire competence in this discipline. On the other hand, there is no need to study the parts that work for you without further investigation, but any real-world use of these class libraries will inevitably bring you up with a segfault in a debugger staring at code you've never seen before. At this point you have two choices: a) you can welcome this learning opportunity, and start reading the source code with the debugger, treating it as a scientific experiment where you are attempting to discover the information you need to make things work the way you want, or b) switch to using some other toolkit, either one with a more constrained programming language (like Visual Basic or Tcl/Tk) or one with a more extensively-documented set of objects (like MFC or Java Swing) where the hope is you can resolve problems by reading documentation instead of debugging. Each choice has its pros and cons.

    Further reading:

  • Ralph Johnson's Framework Page
  • Don Robert's and Ralph Johnson's Evolving Frameworks
  • Dirk Riehle's Framework Layering
  • Vince Huston's Design Pattern page
  • Kent Beck's Extreme Programming
  • Whenever I attempt to debug a derived Tool's InterpretManipulator method (or some other event handling software) it hangs my X server

    Try adding -synchronous to the run command line in gdb. Or debug with print statements.

    I can't inspect the value of a local variable in gdb. What do I do?

    Recompile without optimization (without -O), or try to infer the information you need from other variables.

    The value of an argument to a method or function (as displayed by gdb) gets corrupted halfway through the execution of the function/method. Otherwise things work fine. Should I worry about this?

    No, not particularily. The stack memory associated with an input variable can be recycled by the compiler after that value is no longer needed.

    I'm having trouble debugging a heap memory management problem. I get a segfault in malloc or free, and I can't trace what's wrong in the debugger. What do I do?

    You can relink your program with this source version of malloc.c, and debug as normal. To add it to a program, add an entry for malloc.c right after the entry for any main.c in the corresponding Imakefile, then do a "make Makefiles" and "make" to rebuild.

    Malloc debugging tips:

    set conditional breakpts at the end of malloc or the start of free

    there is a 4 byte offset between a memchunk and a regular pointer

    use the display command in gdb to watch a variable while single-stepping

    Printing out the contents of a ComValue in gdb is troublesome, because of the number of static class variables of type ComValue. How can I work around this?

    Cast the ComValue to an AttributeValue before printing in gdb. An AttributeValue has most all the member values of a ComValue (at least the ones that matter for everyday debugging of comterp applications), and none of the static member variables. _AV is a shorthand typedef for AttributeValue you can use from within gdb.

    What if I want to use insure++/insight to compile ivtools on an Alpha?

    Bruno Delfosse of Thompson CSF contributed this patch to modify the config files as necessary.

    What changes, if any, have been made to the API of InterViews and Unidraw?

    In a few places, as needed, a member variable or method has been promoted from private to protected, or protected to public, to facilitate derivation from a class and reuse of the implementation of their methods. The designers of InterViews seemed to have been pursuing a somewhat black-box theory of object-oriented programming, but we've found you have to be able to look inside these boxes whenever and whereever you need. This is a change to the API that doesn't even require recompilation.

    In a few other places small utility methods have been added as needed, most of them non-virtual. These extend the API without compromising backward compatibility, which has been tested by building sizeable packages like TargetJr and MiXViews on top of ivtools.

    Then, in a few specific places new mechanism has been added to the original classes of InterViews and Unidraw. The Session class has been altered to support a wider variety of X applications. The Graphic class has been extended with mechanism to hide/show a graphic, disable/enable its sensitivity to mouse events, and cache point lists for efficiency in memory usage and ASCII serialization. These changes are easily propogated to any third party software by recompilation only, requiring no source changes.

    But the balance of widgets, glyphs, and Unidraw component classes have remained untouched. New capability has been created by setting up new class libraries, and populating them with derived classes. For example, IVGlyph is a class library of specialized glyphs and dialog boxes that build on the observer-observable design pattern. OverlayUnidraw is a layer on top of both Unidraw and idraw classes that adds or integrates several things to the original capability: double-buffering, switchable look-and-feel, an alternate serialization of components, etc..

    It is possible that in the future a derivative work of ivtools could abandon this backward compatibility, refactoring the existing mechanisms to reduce the footprint of applications, to separate the component-based server framework from the component-based drawing editor framework, and better facilitate cross-platform development. The document formats and scripting languages of ivtools could be preserved through such a refactoring, and there probably would be a writeup on how to manually upgrade third-party applications from one to the other. And the original architecture can be used indefinitely as well.


    binary tar file questions

  • Why are the binaries you distribute so out of date?
  • Why are the available RPMs so out of date?
  • How do I run the executables? I get an unresolved library reference when I try.
  • ldd resolves all shared libraries, yet idraw either a) segfaults without warning, or b) can't save/restore a simple drawing
  • Why are the binaries you distribute so out of date?

    We stopped preparing and distributing our own binaries a while back. But you can find various .deb and .rpm files out there. Follow the appropriate links from the download page.

    Why are the available RPMs so out of date?

    Don't know. Would you like to volunteer to package some up? Please contact us.

    How do I run the executables? I get an unresolved library reference when I try.

    Add the appropriate ivtools-0.7/lib sub-directory to your LD_LIBRARY_PATH (or LD_ELF_LIBRARY_PATH) environment variable (i.e. ivtools-0.7/lib/LINUX) to let the shared library runtime system know where they are. Test with ldd -r. Make sure that you are using only the shared libraries from the binary distribution tar file. If this is inconvenient, consider building from source.

    ldd resolves all shared libraries, yet idraw either a) segfaults without warning, or b) can't save/restore a simple drawing

    You may also want to check if the shared libraries listed by ldd are actually there, not just bad symbolic links: relative pathnames that point to nowhere or absolute pathnames that don't work on your system.

    Check if the version of libstdc++ displayed by ldd is libstdc++.so.27.1.4. This would be evidence that libraries other than those distributed in the tar file are getting used, which can be troublesome.

    You also probably want to ensure that the shared libraries in the binary tar file do not get used by your other executables, unless you happen to be running RedHat 4.1.

    Any feedback on how the binary tar files worked for you would be appreciated. You can send e-mail to ivtools-info@vectaport.com. Include any information we might find useful, i.e. Linux distribution, kernel version, shared library versions, etc..


    miscellaneous questions

  • What about Fresco and fdraw?
  • How does ivtools relate to Berlin?
  • Have you fixed any documented memory leaks that were in InterViews 3.1?
  • What happened to Doc? Where can I find Lexi?
  • What about Fresco and fdraw?

    Fresco is the software development project undertaken by some of the team that built InterViews. Fresco unifies structured graphics and structured documents (glyphs), has an OS-portable widget representation, and offers embeddability via CORBA. Thomas Hiller as been one of the principle maintainers, and put out a Fresco97 and Fresco98 tar file available at http://radagast.ti5.tu-harburg.de/fresco/. More details at http://www.ivtools.org/ivtools/interviews.html.

    fdraw is the example drawing editor, somewhat like idraw, that comes with Fresco. An evolved fdraw is the basis of vistool, a user interface in the IUE and Target Jr image understanding software distributions. fdraw was the starting point for a Fujitsu proprietary Fresco GUI builder as well.

    How does ivtools relate to Berlin?

    Berlin is a self-contained windowing system evolved from the Fresco sources. It inherits the unified graphic/glyph architecture of Fresco (as well as the CORBA API), and in general inherits the structured graphics design patterns of ivtools and InterViews. The Berlin developers have added their own extensions like anti-aliased fonts and alpha-transparency. And recently they have layered on a UnidrawKit, an application framework factory object with the goal of being as useful as Unidraw to Berlin developers.

    ivtools and Berlin are drastically different branches of the InterViews evolutionary lineage. Each has its niche.

    Have you fixed any documented memory leaks that were in InterViews 3.1?

    If you are referring to these: ftp://ftp.informatik.uni-kiel.de/pub/graphics/X/InterViews/bug-fixes/memory_leaks.gz, no, they seem due to the construction of permanent tables in the InterViews and Unidraw frameworks, ones that never shrink at run-time, so why worry about their destruction, when an exit() works just as well? We'd be interested in any other Purify like information about these source trees. You can forward that or any other comments and questions about the package to ivtools-info@vectaport.com.

    What happened to Doc? Where can I find Lexi?

    Doc is a document editor, written by Paul Calder. It showed how flyweight graphic objects (glyphs) could be used down to the single character level in a TeX-like structured document. Lexi is the Doc-based editor described in Chapter 2 of the Design Patterns textbook, where Vlissides, et.al. take the lessons learned on Unidraw and other GUI frameworks and apply them to the case study of rebuilding Doc. You can get the source code for Doc from the original InterViews tar file (InterViews ftp site at Stanford ). It should build on top of ivtools without modification to any source files. No source code seems available for Lexi.


    other FAQs

  • vhclmaps FAQ
  • InterViews/Unidraw FAQ (1992)

  • up to ivtools home page ivtools-doc/flipbook-1.gif0000644000076500007650000002453507374262630016320 0ustar scottscott00000000000000GIF87aZUUUrrr:::8X00,ZpI8ͻ`(dihlp,cBmx|pH,Ȥrl:ШtJ$vzxL.zn|N~[i}Y|~m`Zn_k\xshecpgb[uyǀֱ߶Ӹjvad]஥H-7 KxA;4JmJ,reD v#ƚfe;V^:ކr_ ;Ō 3TAAHJ835CwaZ3[P_7Ffhv;-%SҸUEgTּu3+i+R:ԭ8ݪUO->+։n%V7s^K}.w^dy^wZ4_vNN~ 7vqVe &yN}փX ~}dwbW|}Ea1B`66bu("ƞZGV]Q %Q$Vޓ]W}~%bzN^{Gc+=]qA=DyLuhb٤i ʨ(x8fn3שYNFj*ƞ&mئi&&5*)ny^crligZ.-2IT"6TU:CRf W )'zGqWjF3$E*w\é;Ig5'z@,_MS՚X*tljDȔ {,m$gstL8&;s8 Dm*یL7zRTWmXg\w`-dmhlp-U`x|߀. n'7G.Wngw砇.褗ꬷ.n/oȯ.@@G/,g+W54 a-~׈-$0{S MyzpC^/jP/ $y/b M9)LXtZbBN@ġ*(C0!5 G^HΥ1ȡAh"pRa 9" W.OcVtEˆߘ8# C]TQr$SX(5ЌxdxHA"<$! DÅ{b#HNv񑔤4iI-rpd ĝыcb$KU IPƒe.iF bQA^D#17)&~*d3GH 46Br;':iu4D9Iz >O/䳟 h<͇MBІ:D'JъZͨF7юz HGJҒtyVHJWҖ0LgJӚt#NwӞ@ PJԢHMRԦ:PTT0VծzZ*XJְhMZֶp\J׺xͫ^ ZX`JMb:}+`zWղͬf7z5ld%tEmhWֺ-ZGKڍ+ewܒu[l+Wmpuk\Z]mm3z Xkݵn7c.\ ▼Mz[z׫o{^N؝ow=kot{Ya}/Z]BxYͰv+\b6vya2#.S[fط&YKV./w|@N[0~L9\^P1c o _';Y5ȥEEl8m.QV0tVW<ڸ^q9Y.,iWo+L/ZKbE;:їn4g W AePZ٢Vl -eHzji(VP45Sm3ݒ3Ǜ[OCnp x[u8ʹ?/t;Ws`W:q5-NqzƵ^WV^/NV>;ϮwC4Ov: {?|ֿ|Qk =zO[_χ~{mtO?O+;~돿ߠ'6PYCrM6`ZXb:Uhn56EZwW*68"Ё$uh6W6w*\A0(8:haS };XnjLu ChTvR\$0U؅ՄՄbdbY^ rBlxւTeX;Utvȃ+fpϕCE jXȈKhc&'c8184ei1fbtàMyȆ,37exgVxG4DgefȂsh(U8Qbhr6ׅh?Md2Fj(gHlkKִLj⸃0Xf/Xj_FǘhȋDFD8*vEf=ǎ`KJoPz^`BHCÄJhyc2h7dؒ^/(3(IddTv(t8i\p^ ٔp1Y tH'7هJr/K(0#EUisb8^Q DGiؐZyH1x+22rtyFfKr @CeYַ҈}H5Ǔ~|鄽Ed y涎bi 7XLn֨ly 隸kwY/ؖ)t6sɛe9鈍^nrx&W4vii~ٕiY}@xPڹchb8j}yf#H5h?i{hL ن9l 3uynz臶mxo\) :p*_vl)Zuȡ|!E@ɏpAYZ*e*=y^:+t۸J ?E8 h$*X#@; k(TK{չ'P1S!>W Ǽ,JxDX萄uk7#A+2(^lGKwI;20+Z[w뽯6۠Xuz yC+X뼃`km Xy fyP|̓7† h(Y2<4̉2˹e=cVvxKf!XJL[;Ϝ<=xNͮT+3}# w<} ]g? ]m,@& 'ҁ.=Ӹ6M:s2@M=?@]&9mLMp0KR]YO=X}]U5Q^[]d]ca c]j^g}W;=\]pr-t]}hz-НٲV ׁ]t~]|؜ؼ، ͎G*$-co=!K+Lʄ_}CImG,٦ɎM]#ϬF-Hv ."DT½֖o0-AABݍMݳ` ݔ %M4]]4 -]߃5m{j 9 nH;@N=}0m$nup*,^ ߭В4#3<2%CI>ɛWϿEN̮OtBjS)EQN_6BEK^OI^|hD{U.aJm=j1qy9 \։L'b.uNꎮ߄n~N@ {~~T ^G>FΛ.Ȟn0..hCӞBF=.պ辊 k~~N3OΧ^~ [\C sl`"/JmK&c>(>@P/gh4<+@on1_)ʼA.zNGo:"AVѕM3h?ADtM5nw}|[x_q_`n~;.ϙY~F.o2:3e6)EnfСAD1٬gU)ʟY^MGةim۴WƼ@Aǽزrkzԟ_.5 yegԜ:n_?{co?Lyp@\?MNtp(ר+h(pC" 91UZLGT q8qW1kxgљo)C'RH$a!t2%:I*,QhJ.-s+_1lLN"L5㴈MRN<84? ӊ umH|R'|S >SP[LB5Q۴ BOuTtWk=!֯Zup]S^mM5XZUVs6?]g/i d׌wYr=w]MGl6WZzw_ |eF{ Mq1W`Wc-uTIrL4ɞ<6ғ" C)m/L'eIy t )5K^vǗ x/J3+b2iK %әQYa ]Ns/2಩MKvS'[zCtT 3%NvŝpzAd>Oӟ9јJ%@(KK٪%щ&;Fq43}^h(IL4ЄҒD|aZ>2[`JujS6~?ePgS*rf;*ѤDOcOƘ8M^U?T^%Iaլg 1!V 9Bw\ڎj^S_*nBհB,؅3c!VɲmkfMYyzb-WUv1#\2J\Vo@͢l9g(M\C}gBх 38:Ҳ|4DLiN4xjTZst="5~kK=ɢ,om\׋uQ]'yp"H4^I]j݄Ӧlil#f@Jj\讟׍~6 َ7&M;߈lۮߝږM]8p 퓛ޔa8*zUnf\+KýU揰9qs;DϧhS&gzL.;[BIj0Fo8q4zuw*|7n+or[=(Y]y{ ooxw:CA>+@;D@AEdD b4?M SePtѳh\fT;akFWDdnܿEql jt$G 4GswTolE$LFŨG3@F4G[GjSCR8-TKTL%@ETPF}\h>TVmUW]RTO UZU, eX A NUU7S[=Vd\] .UIUU`=@a+dVmuefuVA@TfVqbVu]ojM UsyMWvW}>wM|V@Oi-WYyxU|W]XzWGOVi8WbXX}O!׉zX1WX}قpظ!XoU5لY ZGِ_%X3I㓞{ZؚX}D㳌}ZV [e-=ڛbZU[Z\%PZ ڕhZ[Q]Qy۬]0J59C}}܏U =QpWCł\Q}U[\-U\emU]rMk=ԭl]]-\]t]UERK7`- }O=8-m^c+R_a4u^M2^V@^_T9D_U_MT{QQ:ߐ_Q%`%RAun` >6Q [  4` _`>a,`0] Fa-Q|a\] &a Ta\a b!N!}]a`%b~`~Db)b5y_0b2>N"/[B,2~c+eu]];J`7c>3f4]<dBF=>N.d]]ލUdJ^9FG.UH>IfJdjdAd,=\N>d>5aP^[ecmScUfe[ERNMF"TvZebvPX6\Y.0`b\G6e5xafo5PkdlNً63onNoIfA^fsf3=vvg~neU+&gzJ6c=~^h=-V5 z5HfhR 荖f4WYZhV^Y^>i~ώkhdiqi>iWNX&]NꌖYmei鯕jvej_e&j^hO^h^6d^>k~Nʕ ~06f䔮lFkSe~΢a~l>itlbe^Ol).۪ mB^mnm~m؎mٞmڮm۾A.R-^cmnn.n|hjvj^2k~ ;unnnnnϷnoo.o>oNoolo~ooo;ivtools-doc/flipbook-1.html0000644000076500007650000000004007374262630016500 0ustar scottscott00000000000000 ivtools-doc/flipbook-2.gif0000644000076500007650000002452407374262630016317 0ustar scottscott00000000000000GIF87aZUUUrrr:::8X00,ZpI8ͻ`(dihlp,cBmx|pH,Ȥrl:ШtJ$vzxL.zn|N~[i}Y|~m`Zn_k\xshecpgb[uyǀֱ߶Ӹjvad]஥H-7 KxA;4JmJ,reD v#ƚfe;V^:ކr_ ;Ō 3TAAHJ835CwaZ3[P_7Ffhv;-%SҸUEgTּu3+i+R:ԭ8ݪUO->+։n%V7s^K}.w^dy^wZ4_vNN~ 7vqVe &yN}փX ~}dwbW|}Ea1B`66bu("ƞZGV]Q %Q$Vޓ]W}~%bzN^{Gc+=]qA=DyLuhb٤i ʨ(x8fn3שYNFj*ƞ&mئi&&5*)ny^crligZ.-2IT"6TU:CRf W )'zGqWjF3$E*w\é;Ig5'z@,_MS՚X*tljDȔ {,m$gstL8&;s8 Dm*یL7zRTWmXg\w`-dmhlp-U`x|߀. n'7G.Wngw砇.褗ꬷ.n/oȯ.@@G/,g+W09\cWPIl*پ000P&`k>ri1d9#%O]V/V7z83czfshW;yd+4^t7;Ђ+PƙK\Ol֭n{>:DiM[zƷq9,nӮ:׻OC/"|'=%?OWֻUQkϽu+vZж߽Ou;ԜG>C[اm?=I{|?˖N߳7B^)exyw oe(_GlnT~8E HwUw!`#X*wl&mSC4]=Ճ }<0؂ ؂I؄L_G]C EVHuX$XB1PW"c ^Ohx ] `(p(rb?Z?mH9|p1i1&p.T}[S oX(cdi&H[{8OFc:։1'(^ bidHt-t8fdhUMyPi(]?ǀ@y-xW(b](tfs(>a2pȈgH3ƋnkҨ@qDd2xH8jr,8àInL`ꈀ@m8WtThxhcU\[09 6ɔXdEu9u)4hCE9 8ԕ^Yy,W^XLȍ1׌&Yhf[6$sI)?YD5xei銔)œDEX٘yY9umy} 3Iwv[2DX/|)shZafid7'I雺7#c?y ǥr))ǹߧbΩ iuuǞ\iܙmW [uXsi#Yu]H7n#_:YsٗjiAn9wBx %sph֍(q׏ v+ʢ<ȡ%ehMDǜ6x?!9rw Wyr9ȡU7 r:t:fssrjMZheꖧnFCv+I ZZ* p:XSYyj=:ٌjڥz\榌ШzʧX)zhp֩lŎj z Y:l vW)h*EWJZ@ _P)Wש|Ȋժ׊Х:򪓖i8yVbx`*իڮx jO:I,XZ4`i [x*J"W* Ʊkw :b*j(GJ+?s)o 3u!kvu]7'[PqںjyƵ`4IK{yʰ(;mY㉵ݚwŵ4C_+a;vnjk:XWvvՊ%@DAGJ{i^>+x _F+gK]> 8s'3hV*0G1Ltʸ`KL-& 1z۟&SHͤëҚ=j[ۼu$K  Kp5K[ۻVEAN+-+k{c0+K?+{}; +W\x K"Yڄ%z+l'\A,+r\^gq\ǩUz܀wy{ ź[ƂXTQȌoܞ<ܺȘ.2؂mB ~ע\L7A+Ȼ3cF]ٯ\=j^TL$N8ujDqM^\Z\M(՜ԬPnMJk`woٌ`U|⇎7~r~VLFI'ι+ q*t^a>^~^|.k妾>^쭎%똸X̮^Im6n FHO`>n>ސ.^Y㇜^yUN?V馍 ~B!J='2,'O)Ohg1| 䊻ʾn5ADF/hMOJNOU 盎_'/HfDnr?XŭxOz/F}p0?/.ٞ6/p~NlXs.M oOw?,Ϗoٽ?Ŀ§O_e˟i?M#~ٟ>][&Or>>KCߟϸ@ȉ+_4O4UWu_8gow|$Q@AB: 역%N,5nES;$YGDdҥ )|Y1-COu`PI5=Uh=QcөY;"ƣ[ŎU<>ɮe ʬaΥK3W2yB[ذN>q;Qe QIg;4qHshԩc8iªe^Eشu.jܼӶ:QQ\́ ݺ_^;W}nv핽 ޫx&{_?}.?mڧ T0A t$dBA )0 +P ApCC4Q0Otq5Xq_7{4fDOG"a0H,rɲ|eF3drJ$DR#TrK0r(ː2L4+)/t.:M:=ZӔ2ɘN>و=LrPD K.QHF4RL(.OŠ$LC=N2RQSuR/UunV\Ts6V[_=U=bu 0gu?iZkMWfvCUt,w]cݑ[x VX=߭Wy1uLu4tWNO`YkMXaz5EJZXbQb#xfQU-YNSNϸPv9TymyfA %bՙ4nNL硫] @(80'55M47ҫc|i/e.ϳxjצmΕn;#g{Il5Pwr d;Csґ6`S&ՉcqSOs]muvm,Gx ]y 7y7QzŒm@M]|7g٧ᄉVZ^;,0U3΁f_x ^{]A%\y`?A*^ Ӄ,pY#t wparC" ț:G$ öD&&MbS3E&Tъ"Ett`E2Fnj2B̀F0b;6cL8#ٱLAZ&1y:q*a|$_?Ur?4Nޡ$h/D;NcTҒk(ʴr~ke+7X;0)È1D 6s8}@IM YӠAXD~ej}h eE#yqԢ`HE*gh<)KL3L *ӖLꗞLi9=TEPc*T>65D%*| RXIu;UL>Mf.հNu2L;+ҪVש,}BV֕M} ,]oSaRuFkd# RggXڣ -W$mfWK-\;[6dŦn&ny RYTQ.Wc)SFѽ5[uW)r\u[B5SCQ"%!j{ ȍJskY)&|} -*`s%m`<)&Ip7a %P{brlTUXy1Y6Dky<#ARBL"WMOZ|6CK^KZDMnyۏ=q'~myC8{]Jj_OY7+|KO>Mv?߾|[s*<;Avz#K@)@K;k?ex@9 6@ @Z >q@6 T4 @MA AL9T|3A8lm(A( l <)2 |B&DBB-B C+S;'B4(2216l,L3!${C"3C(@ 5 :%ӔB9+>+\D;HD0D!X8SDLԁDO<tB(ESFIEH$=dƔŒtuHȄ +ɛ<ɋLIdI4>1ZEȎGD ll|It GdH=IH::,FJJ%? TD S9.TLTM&&PF UQ Gmze?TW}UXmRU5PU[U,- MY]OVUTOeU8-S\MVe%]m UJ Vg@bT'eVnmfgVFAjkcVvm!ptSjWk%O]WwW~-#=WVAOsW[yMT}WmXԂW? X> WW*Wc5X-؁%0Տb3!ؓ]؏}Y"5Y%@Y<%mY ;YYBV< 4N벞VlZ&V(٣=W6N ٧Z [hdڂ bmYm[U֊=YYU[ڕ][u[RmU[=:j|[Rra$Ž\w-XEʭ[C܍\eX}Uܫ5Х\^ҍe=]֭ ܛ]]]VՓۥWݽ]MU8}^[m^*zifS]-3,ȥ[:m$ʅ__"E_Q߹UWQ%^ R`N]\<`<]m`1-7` N `N- Q ^\`9a_aaa,amaTaSb"^sAa&b$Y_*b 44S5Cb0N c-\8L a%Vc;R\ϕc?cpcB:67^S=^AP).dH֎CfDE>H业/c^dddSOdH#A>eX<dPeŋ:WvXe8Uݳ$\+]^Gee6eQc-/=FFeYh}Pci4= ;f?Mfl>gqfɭVS3@:rFg{ƃouUP.co&C4G $zTsgtM5avgz퉁c^fn*L;5肞kԺ^c]{hhni%$Yv.ɥv^Yinheiבi~njY}~fjvjjթVd/_jnijik뱞貆ܦbMfnBh&i_Q4k{Tjkc.lNN;^Skdž.m(ײP@m.m>mNm^mnm~m?>Ҹi,T3mmmmGvl>S.nNnnn2Vn.OUknnnnoofm> "Ѣ "M%Ӧ3B]qӅV&̪u+ד *cز6ٶl]mʸeUWtrWpV:_[2TS)7h0c>yТMݕ1QץJ*ǒan{7X˼{5 |pRwUM3ħ~P(v{}r|扞Ύ>wۻ EnϞ?Ĝk]X|9w5Hd6ZyY_rX9(ah ~xffg$Xߍ9Ɩʉ{Yb֤0ȢlWayM Sd9bҨb҅fIn`Igx|矀*蠄j衈&g@;ivtools-doc/flipbook.html0000644000076500007650000000657407442174160016360 0ustar scottscott00000000000000 ivtools flipbook: multiframe animation drawing editor and viewer

    ivtools flipbook

    [flipbook logo]

    ivtools flipbook is a multi-frame animation tool from the ivtools software package. It allows you to draw your own simple animations and flip through them, forwards and backwards, and to replay at different pans, zooms, and croppings.

    Here is what the user interface for flipbook looks like. It shows the first frame of a flipbook animation featuring Aaron the flying anteater, the mascot of ivtools.


    Usage

    man page

  • Play flipbooks forward and backward by keyboard, Ctrl-f moves forward a frame, Ctrl-b moves backward.
  • Enable looping under the Frame menu.
  • Create new frames for modification with the Copy-Forward (Ctrl-X) or Copy-Backward (Ctrl-Y) command under the Frame menu.
  • See the previous frame while drawing the current frame by using Show-Prev-Frame under the Frame menu.
  • Read below to see how to generate animated gifs.

    Most of the mechanism of ivtools drawtool available as well.


    Download an ivtools flipbook binary, add the following to your ~/.mailcap file:

    application/frame-idraw; flipbook -bookgeom %s

    and then click on a flipbook file to test launching the ivtools flipbook editor. Try the online if the local version doesn't work with your browser

    Another sample (change Orientation before playing)

    Then try it out in these flipbooks_button sample flipbook galleries.

    Note these flipbooks are gzip compressed so you will also need a gunzip in your search path (to be utilized by the viewer).

    To render GIF89A Animated GIF's from the ivtools flipbook editor use this bash script in the Print dialog box (select "to command" and enter something like "mkgif89a s r" where s is a floating point scale factor and r is rotation in degrees).

    A more flexible script mkgif89ac takes clipping arguments and a time between frames argument (in hundredths of a second).

    Since ivtools-0.7.2, you can download and run continuously looping slideshows in ivtools flipbook.


    ivtools drawing editors idraw drawtool comdraw flipbook graphdraw

    ivtools_button ivtools home page ivtools-doc/fopen_rplus.patch.txt0000644000076500007650000001341307417430144020045 0ustar scottscott00000000000000There is a vulnerability in early versions of libstdc++-v3 that completely disables the reading or importing of files into the drawing editors of ivtools. You might see this if you have libstdc++-v3 bundled with gcc-2.95.3, or you might see this with gcc-3.0. The problem was fixed in the version of libstdc++-v3 bundled with gcc-3.0.1 The workaround is to apply this patch, which uses "r+" for fopen of files to be read or imported. "r+" is supposed to mean open for read and write, but was required for plain reading with istream's. Applying this will probably disable accessing read-only file systems, i.e. CD-ROM's. A better fix is to revert to libstdc++-v2 if you are using gcc-2.95.*, or upgrade to at least gcc-3.0.1 Scott Johnston http://www.ivtools.org Index: OverlayUnidraw/ovcatalog.c diff -c OverlayUnidraw/ovcatalog.c:1.3 OverlayUnidraw/ovcatalog.c:1.4 *** OverlayUnidraw/ovcatalog.c:1.3 Fri Jun 15 15:44:34 2001 --- src/OverlayUnidraw/ovcatalog.c Mon Jul 16 15:22:19 2001 *************** *** 189,195 **** _valid = fbuf.attach(fileno(stdin)) != 0; name = nil; } else { ! fptr = fopen(name, "r"); fptr = OvImportCmd::CheckCompression(fptr, name, compressed); _valid = fptr ? fbuf.attach(fileno(fptr)) != 0 : false; if (compressed) { --- 189,195 ---- _valid = fbuf.attach(fileno(stdin)) != 0; name = nil; } else { ! fptr = fopen(name, "r+"); fptr = OvImportCmd::CheckCompression(fptr, name, compressed); _valid = fptr ? fbuf.attach(fileno(fptr)) != 0 : false; if (compressed) { *************** *** 201,207 **** #else boolean stdin_flag = strcmp(name, "-")==0; if (!stdin_flag) { ! fptr = fopen(name, "r"); fptr = fptr ? OvImportCmd::CheckCompression(fptr, name, compressed) : nil; _valid = fptr != nil; if (compressed) { --- 201,207 ---- #else boolean stdin_flag = strcmp(name, "-")==0; if (!stdin_flag) { ! fptr = fopen(name, "r+"); fptr = fptr ? OvImportCmd::CheckCompression(fptr, name, compressed) : nil; _valid = fptr != nil; if (compressed) { Index: OverlayUnidraw/ovimport.c diff -c OverlayUnidraw/ovimport.c:1.12 OverlayUnidraw/ovimport.c:1.13 *** OverlayUnidraw/ovimport.c:1.12 Mon Jul 9 17:13:55 2001 --- src/OverlayUnidraw/ovimport.c Mon Jul 16 15:22:19 2001 *************** *** 760,766 **** const char* OvImportCmd::ReadCreator (const char* pathname) { ! FILE* file = fopen(pathname, "r"); const int creator_size = 32; static char creator[creator_size]; --- 760,766 ---- const char* OvImportCmd::ReadCreator (const char* pathname) { ! FILE* file = fopen(pathname, "r+"); const int creator_size = 32; static char creator[creator_size]; *************** *** 2187,2193 **** int& ncols, int& nrows, boolean& compressed, boolean& tiled, int& twidth, int& theight ) { ! FILE* file = fopen(pathname, "r"); file = CheckCompression(file, pathname, compressed); tiled = false; --- 2187,2193 ---- int& ncols, int& nrows, boolean& compressed, boolean& tiled, int& twidth, int& theight ) { ! FILE* file = fopen(pathname, "r+"); file = CheckCompression(file, pathname, compressed); tiled = false; *************** *** 2610,2616 **** Bitmap* OvImportCmd::PBM_Bitmap (const char* pathname) { Bitmap* bitmap = nil; ! FILE* file = fopen(pathname, "r"); boolean compressed; file = CheckCompression(file, pathname, compressed); --- 2610,2616 ---- Bitmap* OvImportCmd::PBM_Bitmap (const char* pathname) { Bitmap* bitmap = nil; ! FILE* file = fopen(pathname, "r+"); boolean compressed; file = CheckCompression(file, pathname, compressed); Index: FrameUnidraw/framecatalog.c diff -c FrameUnidraw/framecatalog.c:1.3 FrameUnidraw/framecatalog.c:1.4 *** FrameUnidraw/framecatalog.c:1.3 Fri Jun 15 15:44:38 2001 --- src/FrameUnidraw/framecatalog.c Mon Jul 16 15:22:23 2001 *************** *** 71,77 **** #endif name = nil; } else { ! fptr = fopen(name, "r"); fptr = OvImportCmd::CheckCompression(fptr, name, compressed); #if __GNUG__<3 _valid = fptr ? fbuf.attach(fileno(fptr)) != 0 : false; --- 71,77 ---- #endif name = nil; } else { ! fptr = fopen(name, "r+"); fptr = OvImportCmd::CheckCompression(fptr, name, compressed); #if __GNUG__<3 _valid = fptr ? fbuf.attach(fileno(fptr)) != 0 : false; Index: GraphUnidraw/graphcatalog.c diff -c GraphUnidraw/graphcatalog.c:1.3 GraphUnidraw/graphcatalog.c:1.4 *** GraphUnidraw/graphcatalog.c:1.3 Fri Jun 15 15:44:40 2001 --- src/GraphUnidraw/graphcatalog.c Mon Jul 16 15:22:25 2001 *************** *** 88,94 **** #endif name = nil; } else { ! fptr = fopen(name, "r"); fptr = OvImportCmd::CheckCompression(fptr, name, compressed); #if __GNUG__<3 _valid = fptr ? fbuf.attach(fileno(fptr)) != 0 : false; --- 88,94 ---- #endif name = nil; } else { ! fptr = fopen(name, "r+"); fptr = OvImportCmd::CheckCompression(fptr, name, compressed); #if __GNUG__<3 _valid = fptr ? fbuf.attach(fileno(fptr)) != 0 : false; Index: DrawServ/drawcatalog.c diff -c DrawServ/drawcatalog.c:1.3 DrawServ/drawcatalog.c:1.4 *** DrawServ/drawcatalog.c:1.3 Fri Jun 15 15:44:41 2001 --- src/DrawServ/drawcatalog.c Mon Jul 16 15:22:26 2001 *************** *** 73,79 **** #endif name = nil; } else { ! fptr = fopen(name, "r"); fptr = OvImportCmd::CheckCompression(fptr, name, compressed); #if __GNUG__<3 _valid = fptr ? fbuf.attach(fileno(fptr)) != 0 : false; --- 73,79 ---- #endif name = nil; } else { ! fptr = fopen(name, "r+"); fptr = OvImportCmd::CheckCompression(fptr, name, compressed); #if __GNUG__<3 _valid = fptr ? fbuf.attach(fileno(fptr)) != 0 : false; ivtools-doc/forestdrive.frs0000644000076500007650000010347007374262630016732 0ustar scottscott00000000000000flipbook( pts((268,448),(248,426),(267,426),(249,397),(268,395),(250,355),(272,350),(253,309),(303,306),(288,345), (310,353),(288,396),(313,396),(286,430),(305,435),(271,464)), pts((268,448),(248,426),(267,426),(249,397),(268,395),(250,355),(272,350),(253,309),(303,306),(288,345), (310,353),(288,396),(313,396),(286,430),(305,435),(271,464)), pts((268,448),(248,426),(267,426),(249,397),(268,395),(250,355),(272,350),(253,309),(303,306),(288,345), (310,353),(288,396),(313,396),(286,430),(305,435),(271,464)), pts((268,448),(248,426),(267,426),(249,397),(268,395),(250,355),(272,350),(253,309),(303,306),(288,345), (310,353),(288,396),(313,396),(286,430),(305,435),(271,464)), pts((20,255),(20,255),(20,255),(34,198),(231,222),(400,208),(278,16),(278,16),(278,16)), pts((25,258),(25,258),(25,258),(46,223),(142,229),(355,234),(416,179),(450,8),(450,8),(450,8)), pts((37,232),(37,232),(37,232),(45,225),(53,223),(53,223),(53,223)), pts((71,219),(71,219),(71,219),(87,219),(104,219),(104,219),(104,219),(104,219)), pts((127,220),(127,220),(127,220),(152,224),(178,224),(178,224),(178,224)), pts((206,224),(206,224),(206,224),(230,223),(268,224),(268,224),(268,224)), pts((284,223),(284,223),(284,223),(320,221),(343,206),(343,207),(343,207),(343,207)), pts((369,189),(369,189),(369,189),(380,145),(381,120),(381,108),(381,108),(381,108)), pts((382,76),(382,76),(382,76),(367,12),(367,12),(367,12)), pts((448,504),(407,464),(449,418),(493,470),(425,494),(414,435),(475,428),(475,479),(415,483),(436,425), (482,453)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((19,183),(35,184),(36,172),(39,166),(37,165),(27,167)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((343,80),(347,64),(333,62),(332,75),(344,86)), pts((386,77),(385,94),(382,96),(373,79)), pts((338,161),(368,152),(385,132),(385,132),(362,116),(358,116),(341,126)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((343,80),(347,64),(333,62),(332,75),(344,86)), pts((18,177),(28,167),(26,151),(21,161),(15,171),(15,171)), pts((42,160),(36,158),(41,152),(46,149),(42,141),(35,141),(26,148)), pts((29,144),(23,144),(24,150)), pts((15,168),(12,162),(18,159),(14,157)), pts((177,85),(177,85),(177,85),(177,78),(175,80),(175,80),(175,80)), pts((183,84),(183,84),(183,84),(174,76),(176,77),(176,77),(176,77)), pts((343,80),(347,64),(333,62),(332,75),(344,86)), pts((386,77),(385,94),(382,96),(373,79)), pts((338,161),(368,152),(385,132),(385,132),(362,116),(358,116),(341,126)), pts((22,149),(25,154),(27,162),(38,157),(37,152)), pts((343,80),(347,64),(333,62),(332,75),(344,86)), pts((198,216),(204,222),(210,218),(210,210)), pts((205,221),(213,228),(215,220),(208,211),(207,212),(198,214)), pts((326,338),(454,450),(486,322),(265,75),(358,194),(93,111)), pts((455,407),(553,484),(634,516),(671,493),(654,453),(584,394),(457,285),(395,217),(370,222),(264,103), (264,226),(295,232),(373,302),(395,362),(428,409)), pts((455,407),(553,484),(639,495),(639,495),(682,447),(646,423),(526,360),(457,285),(395,217),(384,177), (310,109),(285,175),(305,200),(302,201),(305,200),(373,302),(395,362),(428,409)), pts((455,407),(553,484),(634,516),(671,493),(654,453),(584,394),(457,285),(395,217),(370,222),(264,103), (264,226),(295,232),(373,302),(395,362),(428,409)), pts((379,328),(304,379),(367,398),(497,295),(434,338),(483,208)), pts((769,283),(778,264),(789,257),(700,268),(741,223),(754,212)), pts((400,457),(400,457),(400,457),(406,458),(422,457),(428,464),(435,462),(440,457),(440,457),(440,457)), pts((416,443),(416,443),(416,443),(426,446),(431,440),(437,445),(445,449),(454,440),(456,439),(456,439), (456,439)), pts((443,363),(443,363),(443,363),(481,374),(498,366),(521,371),(537,364),(537,364),(537,364)), pts((362,490),(362,490),(362,490),(373,492),(380,489),(390,493),(394,487),(394,487),(394,487)), pts((362,490),(362,490),(362,490),(373,492),(380,489),(390,493),(394,487),(394,487),(394,487)), pts((264,103),(264,103),(264,103),(277,101),(280,95),(279,95),(279,95),(279,95)), pts((272,102),(272,102),(272,102),(279,97),(278,89),(278,89),(278,89)), pts((272,102),(272,102),(272,102),(279,97),(278,89),(278,89),(278,89)), pts((278,94),(278,94),(278,94),(278,88),(277,85),(277,85),(277,85)), pts((277,98),(277,98),(277,98),(277,88),(277,89),(277,89),(277,89)), gs( :fillbg 1 :brush 65535,3 :fgcolor "LtGray",0.762951,0.762951,0.762951 :bgcolor "White",1,1,1 :pattern 0x88,0x44,0x22,0x11,0x88,0x44,0x22,0x11), gs( :fillbg 1 :brush 65535,0 :fgcolor "Green",0,1,0 :bgcolor "Black",0,0,0 :graypat 0.75), gs( :fillbg 1 :brush 65535,0 :fgcolor "Blue",0,0,1 :bgcolor "White",1,1,1 :pattern 0x11,0x22,0x44,0x88,0x11,0x22,0x44,0x88), gs( :fillbg 1 :brush 65535,3 :fgcolor "Brown",0.647059,0.164706,0.164706 :bgcolor "Black",0,0,0 :nonepat), gs( :fillbg 1 :brush 65535,3 :fgcolor "Black",0,0,0 :bgcolor "Black",0,0,0 :nonepat), gs( :fillbg 1 :brush 65535,3 :fgcolor "Yellow",1,1,0 :bgcolor "Orange",1,0.647059,0 :pattern 0x88,0x44,0x22,0x11,0x88,0x44,0x22,0x11), gs( :fillbg 1 :brush 65535,0 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :graypat 0), gs( :fillbg 1 :brush 65535,0 :fgcolor "Black",0,0,0 :bgcolor "DkGray",0.503548,0.503548,0.503548 :nonepat), gs( :fillbg 1 :brush 65535,0 :fgcolor "Orange",1,0.647059,0 :bgcolor "Red",1,0,0 :graypat 0.5), frame( picture( rectangle(123,112,397,413 :gs 0 :transform 4,-0,-0,4,-677,-608) polygon( :pts 0 :gs 1 :transform 2,-0,-0,2,-85,-24) polygon( :pts 1 :gs 1 :transform 2,-0,-0,2,-167,-12) ellipse(51,287,242,65 :gs 2 :transform 1,-0,-0,1,118,220) polygon( :pts 2 :gs 1 :transform 2,-0,-0,2,-235,-38) polygon( :pts 3 :gs 1 :transform 2,-0,-0,2,-147,-56) arrowspline( :pts 4 :arrowscale 0.5 :gs 3 :transform 2,-0,-0,2,-147,-56) arrowspline( :pts 5 :arrowscale 0.5 :gs 3 :transform 2,-0,-0,2,-147,-56) arrowspline( :pts 6 :arrowscale 0.5 :gs 4 :transform 2,-0,-0,2,-147,-56) arrowspline( :pts 7 :arrowscale 0.5 :gs 4 :transform 2,-0,-0,2,-147,-56) arrowspline( :pts 8 :arrowscale 0.5 :gs 4 :transform 2,-0,-0,2,-147,-56) arrowspline( :pts 9 :arrowscale 0.5 :gs 4 :transform 2,-0,-0,2,-147,-56) arrowspline( :pts 10 :arrowscale 0.5 :gs 4 :transform 2,-0,-0,2,-147,-56) arrowspline( :pts 11 :arrowscale 0.5 :gs 4 :transform 2,-0,-0,2,-147,-56) arrowspline( :pts 12 :arrowscale 0.5 :gs 4 :transform 2,-0,-0,2,-147,-56) polygon( :pts 13 :gs 5 :transform 2,-0,-0,2,-147,-56) :transform 1,0,0,1,-40,-26) ), frame( picture( polygon( :pts 14 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 15 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 16 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 17 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 18 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 19 :gs 6 :transform 1,-0,-0,1,-175,269) ) ), frame( picture( polygon( :pts 20 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 21 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 22 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 23 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 24 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 25 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 1,0,0,1,7,-8) ), frame( picture( polygon( :pts 26 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 27 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 28 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 29 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 30 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 31 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 1,0,0,1,17,-27) ), frame( picture( polygon( :pts 32 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 33 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 34 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 35 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 36 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 37 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.991503,0.130081,-0.130081,0.991503,85.8893,-21.3419) ), frame( picture( polygon( :pts 38 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 39 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 40 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 41 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 42 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 43 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.954238,0.299049,-0.299049,0.954238,179.358,7.40759) ), frame( picture( polygon( :pts 44 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 45 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 46 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 47 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 48 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 49 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.898388,0.439203,-0.439203,0.898388,254.681,48.9693) ), frame( picture( polygon( :pts 50 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 51 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 52 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 53 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 54 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 55 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.87076,0.491709,-0.491709,0.87076,303.303,61.5568) ), frame( picture( polygon( :pts 56 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 57 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 58 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 59 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 60 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 61 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.853766,0.693602,-0.693602,0.853766,406.939,95.366) ), frame( picture( polygon( :pts 62 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 63 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 64 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 65 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 66 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 67 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.793216,0.762108,-0.762108,0.793216,453.659,129.495), arrowspline( :pts 68 :gs 6 :transform 1,-0,-0,1,-175,269), arrowspline( :pts 69 :gs 6 :transform 1,-0,-0,1,-175,269) ), frame( picture( polygon( :pts 70 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 71 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 72 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 73 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 74 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 75 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.767817,0.787692,-0.787692,0.767817,487.99,140.19), arrowspline( :pts 76 :gs 6 :transform 0.999463,0.0327693,-0.0327693,0.999463,-145.235,259.276), arrowspline( :pts 77 :gs 6 :transform 0.999463,0.0327693,-0.0327693,0.999463,-145.283,259.194), arrowline(217,97,223,95 :gs 6 :transform 1,-0,-0,1,-175,269) ), frame( picture( polygon( :pts 78 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 79 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 80 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 81 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 82 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 83 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.767817,0.787692,-0.787692,0.767817,528.99,141.19), arrowspline( :pts 84 :gs 6 :transform 0.999463,0.0327693,-0.0327693,0.999463,-104.235,260.276), arrowspline( :pts 85 :gs 6 :transform 0.999463,0.0327693,-0.0327693,0.999463,-104.283,260.194), arrowline(217,97,223,95 :gs 6 :transform 1,-0,-0,1,-134,270) ), frame( picture( polygon( :pts 86 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 87 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 88 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 89 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 90 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 91 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.774824,1.04182,-1.04182,0.774824,672.67,177.269), arrowspline( :pts 92 :gs 6 :transform 1.16412,0.19495,-0.19495,1.16412,-86.9962,220.313), arrowspline( :pts 93 :gs 6 :transform 1.16412,0.19495,-0.19495,1.16412,-87.6989,220.072), arrowline(217,97,223,95 :gs 6 :transform 1.16988,0.156698,-0.156698,1.16988,-123.331,221.218) ), frame( picture( polygon( :pts 94 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 95 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 96 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 97 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 98 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 99 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.526836,1.18667,-1.18667,0.526836,757.966,308.424), arrowspline( :pts 100 :gs 6 :transform 1.09278,0.446099,-0.446099,1.09278,5.02768,184.925), arrowspline( :pts 101 :gs 6 :transform 1.09278,0.446099,-0.446099,1.09278,4.1266,183.949), arrowline(217,97,223,95 :gs 6 :transform 1.10681,0.41005,-0.41005,1.10681,-26.1339,174.535) ), frame( picture( polygon( :pts 102 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 103 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 104 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 105 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 106 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 107 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.526836,1.18667,-1.18667,0.526836,802.966,309.424), arrowspline( :pts 108 :gs 6 :transform 1.09278,0.446099,-0.446099,1.09278,50.0277,185.925), arrowspline( :pts 109 :gs 6 :transform 1.09278,0.446099,-0.446099,1.09278,49.1266,184.949), arrowline(217,97,223,95 :gs 6 :transform 1.10681,0.41005,-0.41005,1.10681,18.8661,175.535) ), frame( picture( polygon( :pts 110 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 111 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 112 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 113 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 114 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 115 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.526836,1.18667,-1.18667,0.526836,861.966,310.424), arrowspline( :pts 116 :gs 6 :transform 1.09278,0.446099,-0.446099,1.09278,109.028,186.925), arrowspline( :pts 117 :gs 6 :transform 1.09278,0.446099,-0.446099,1.09278,108.127,185.949), arrowline(217,97,223,95 :gs 6 :transform 1.10681,0.41005,-0.41005,1.10681,77.8661,176.535) ), frame( picture( polygon( :pts 118 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 119 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 120 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 121 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 122 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 123 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.561079,1.31337,-1.31337,0.561079,983.636,310.146), arrowspline( :pts 124 :gs 6 :transform 1.19503,0.507589,-0.507589,1.19503,158.043,163.769), arrowspline( :pts 125 :gs 6 :transform 1.19503,0.507589,-0.507589,1.19503,156.795,162.793), arrowline(217,97,223,95 :gs 6 :transform 1.21102,0.468156,-0.468156,1.21102,122.519,149.748) ), frame( picture( polygon( :pts 126 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 127 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 128 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 129 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 130 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 131 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 0.561079,1.31337,-1.31337,0.561079,1073.64,301.146), arrowspline( :pts 132 :gs 6 :transform 1.19503,0.507589,-0.507589,1.19503,248.043,154.769), arrowspline( :pts 133 :gs 6 :transform 1.19503,0.507589,-0.507589,1.19503,246.795,153.793), arrowline(217,97,223,95 :gs 6 :transform 1.21102,0.468156,-0.468156,1.21102,212.519,140.748) ), frame( picture( polygon( :pts 134 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 135 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 136 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 137 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 138 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 139 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 1.5401,0.31013,-0.31013,1.5401,885.676,-329.775), arrowspline( :pts 140 :gs 6 :transform 1.20495,-0.766714,0.766714,1.20495,244.442,316.238), arrowspline( :pts 141 :gs 6 :transform 1.20495,-0.766714,0.766714,1.20495,245.08,318.463), arrowline(217,97,223,95 :gs 6 :transform 1.17917,-0.805787,0.805787,1.17917,199.226,362.072) ), frame( picture( polygon( :pts 142 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 143 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 144 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 145 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 146 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 147 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 2.16621,-0.652212,0.652212,2.16621,571.837,-808.442), arrowspline( :pts 148 :gs 6 :transform 1.00927,-1.79192,1.79192,1.00927,205.327,444.623), arrowspline( :pts 149 :gs 6 :transform 1.00927,-1.79192,1.79192,1.00927,207.992,449.117), arrowline(217,97,223,95 :gs 6 :transform 0.950007,-1.82404,1.82404,0.950007,161.891,540.087) ), frame( picture( polygon( :pts 150 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 151 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 152 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 153 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 154 :gs 6 :transform 1,-0,-0,1,-175,269) polygon( :pts 155 :gs 6 :transform 1,-0,-0,1,-175,269) :transform 2.59945,-0.782654,0.782654,2.59945,578.805,-1076.43), arrowspline( :pts 156 :gs 6 :transform 1.21112,-2.15031,2.15031,1.21112,140.592,491.248), arrowspline( :pts 157 :gs 6 :transform 1.21112,-2.15031,2.15031,1.21112,143.29,496.94), arrowline(217,97,223,95 :gs 6 :transform 1.14001,-2.18884,2.18884,1.14001,85.0692,602.104), ellipse(370,158,3,5 :gs 7 :transform 2.4,-0,-0,2.4,-372.5,-241.45), ellipse(366,146,4,1 :gs 7 :transform 2.4,-0,-0,2.4,-346.9,-232.65), ellipse(368,158,2,8 :gs 7 :transform 2.4,-0,-0,2.4,-371.7,-241.45), ellipse(366,146,4,1 :gs 7 :transform 1.69706,-1.69706,1.69706,1.69706,-313.393,489.102) ), frame( polygon( :pts 158 :gs 6 :transform 3.64102,-1.42294,1.42294,3.64102,150.183,-502.901), polygon( :pts 159 :gs 6 :transform 3.64102,-1.42294,1.42294,3.64102,150.183,-502.901), polygon( :pts 160 :gs 6 :transform 3.64102,-1.42294,1.42294,3.64102,150.183,-502.901), polygon( :pts 161 :gs 6 :transform 3.64102,-1.42294,1.42294,3.64102,150.183,-502.901), arrowspline( :pts 162 :gs 6 :transform 1.49065,-3.22607,3.22607,1.49065,-32.2793,541.801), arrowspline( :pts 163 :gs 6 :transform 1.49065,-3.22607,3.22607,1.49065,-28.6666,550.602), arrowline(217,97,223,95 :gs 6 :transform 1.38413,-3.27319,3.27319,1.38413,-108.735,701.224), ellipse(366,146,4,1 :gs 7 :transform 3.44492,-0.276546,0.276546,3.44492,-805.716,-399.992), ellipse(368,158,2,8 :gs 7 :transform 3.44492,-0.276546,0.276546,3.44492,-835.924,-420.778), ellipse(366,146,4,1 :gs 7 :transform 2.24038,-2.63147,2.63147,2.24038,-684.673,635.774), polygon( :pts 164 :gs 7 :transform -2,-1.74846e-07,1.74846e-07,-2,1217.5,115.75), polygon( :pts 165 :gs 7 :transform 2,-0,-0,2,-224.5,-178.25), polygon( :pts 166 :gs 6 :transform 2,-0,-0,2,-204.5,-180.25), polygon( :pts 167 :gs 6 :transform 0.922986,4.00512,-2.36174,1.56523,874.557,-329.119), polygon( :pts 168 :gs 7 :transform 2,-0,-0,2,-216.5,-170.25) ), frame( picture( polygon( :pts 169 :gs 6 :transform 3.64102,-1.42294,1.42294,3.64102,118.183,-656.901) polygon( :pts 170 :gs 6 :transform 3.64102,-1.42294,1.42294,3.64102,118.183,-656.901) polygon( :pts 171 :gs 6 :transform 3.64102,-1.42294,1.42294,3.64102,118.183,-656.901) polygon( :pts 172 :gs 6 :transform 3.64102,-1.42294,1.42294,3.64102,118.183,-656.901) arrowspline( :pts 173 :gs 6 :transform 1.49065,-3.22607,3.22607,1.49065,-64.2793,387.801) arrowspline( :pts 174 :gs 6 :transform 1.49065,-3.22607,3.22607,1.49065,-60.6666,396.602) arrowline(217,97,223,95 :gs 6 :transform 1.38413,-3.27319,3.27319,1.38413,-140.735,547.224) ellipse(366,146,4,1 :gs 7 :transform 3.44492,-0.276546,0.276546,3.44492,-837.716,-553.992) ellipse(368,158,2,8 :gs 7 :transform 3.44492,-0.276546,0.276546,3.44492,-867.924,-574.778) ellipse(366,146,4,1 :gs 7 :transform 2.24038,-2.63147,2.63147,2.24038,-716.673,481.774) polygon( :pts 175 :gs 7 :transform -2,-1.74846e-07,1.74846e-07,-2,1185.5,-38.25) polygon( :pts 176 :gs 7 :transform 2,-0,-0,2,-256.5,-332.25) polygon( :pts 177 :gs 6 :transform 2,-0,-0,2,-236.5,-334.25) polygon( :pts 178 :gs 6 :transform 0.922986,4.00512,-2.36174,1.56523,842.557,-483.119) polygon( :pts 179 :gs 7 :transform 2,-0,-0,2,-248.5,-324.25) :transform 1.5,0,0,1.5,-229.694,55.625) ), frame( ), frame( ), frame( ), frame( ), frame( ), frame( ), frame( ), frame( closedspline( :pts 180 :gs 8 :transform 0.742268,-0,-0,0.647568,-121.907,346.865) ), frame( closedspline( :pts 181 :gs 8 :transform 0.759846,-0.241105,0.407662,1.28475,-212.614,261.932) ), frame( closedspline( :pts 182 :gs 8 :transform 0.0625,-0,-0,0.0625,16.4375,478.812) ), frame( closedspline( :pts 183 :gs 8 :transform 0.0625,-0,-0,0.0625,14.6875,478.562) ), frame( closedspline( :pts 184 :gs 8 :transform 0.0563862,-0.0269601,0.0269601,0.0563862,18.6891,499.382) ), frame( closedspline( :pts 185 :gs 8 :transform 0.0232068,-0.0580318,0.0580319,0.0232068,40.4712,524.229) ), frame( closedspline( :pts 186 :gs 8 :transform 0.125,-0,-0,0.125,26.875,459.375) ), frame( closedspline( :pts 187 :gs 8 :transform 0.125,-0,-0,0.125,-5.75,460) ), frame( ), frame( ), frame( ), frame( ), frame( arrowspline( :pts 188 :arrowscale 0.5 :gs 7 :transform 2,-0,-0,2,-769.5,-880.25 :worm 1) ), frame( arrowspline( :pts 189 :arrowscale 0.5 :gs 7 :transform 2,-0,-0,2,-733.5,-852.25 :worm 1) ), frame( arrowspline( :pts 190 :gs 7 :transform 1,-0,-0,1,-292.5,-331.25) ), frame( arrowspline( :pts 191 :arrowscale 0.5 :gs 7 :transform 2.4,-0,-0,2.4,-635.7,-1148.25) ), frame( arrowspline( :pts 192 :arrowscale 0.5 :gs 7 :transform 2.4,-0,-0,2.4,-618.7,-1151.25) ), frame( arrowspline( :pts 193 :arrowscale 0.5 :gs 7 :transform 2,-0,-0,2,-224.5,-178.25) ), frame( arrowspline( :pts 194 :arrowscale 0.5 :gs 7 :transform 2,-0,-0,2,-222.5,-166.25) ), frame( arrowspline( :pts 195 :arrowscale 0.5 :gs 7 :transform 2,-0,-0,2,-220.5,-164.25), arrowspline( :pts 196 :arrowscale 0.5 :gs 7 :transform 2,-0,-0,2,-220.5,-156.25) ), frame( arrowspline( :pts 197 :arrowscale 0.5 :gs 7 :transform 2,-0,-0,2,-220.5,-162.25) ), frame( ) ) ivtools-doc/formdemo-main.gif0000644000076500007650000000253307374262630017101 0ustar scottscott00000000000000GIF87arrr}L,(0I8뽃`(dihl뾬 tmx|pH, 2rl:P!R0Zج8nxوnxNߕyh;pubw:{~B=7X85mzknYA}yLoi{\IÍ˭dʹЭש6E~һC8rϡ7ANZ?k#JpE/jqGj?Յɓ(S\ɲ˗0cʜI͛39ɳϟ@uJѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+vFFkeʓ[ig?}u2iΚv YӯvuӗьrFCs.ް?=<4ڲ}.~Ən}zNzl޳;_޸ԅwz|yugu|'x~fg\-(_z'!mwޅ oᷞ"B9_5f2h8<@)DiH&L6PFbyjJfqZyT6gVY)%Hؙoabwp祀.8zHw.i&|7'=yݟJUܥ8&Fa r]6f|>j/"^ kϭI&6F+Vkfv1"k&ڝ;\iF5{jf%Z*/Sؙ{06J+b)gZnqgxj<s'Zlt7!7jsCYyV _͔sLG:4ϛQwM2h?g#6y+SmeLYZ{G k8 O07G.Wng+tifyc|ⱢI彻xN8ТM0}{8~;>xytkq`N2n^}F*xJg*ͦu]{[߼ur6L:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*Z-X̢.z` H2hL6pH:0;ivtools-doc/formdemo-popup.gif0000644000076500007650000001147507374262630017325 0ustar scottscott00000000000000GIF87a8\FFUUUrrr:::>000,8I8ͻ`(dihWlp,tmx|LR8Ȥrl:ШtJZجve"ݰxL.tk(|N~~IbyaMv`sZPF˯GKWIiOΧHSFJRNЮYy!ki8pB\Ć+MEaetp|!Q#E$a\iXU'ILқ>5yl'S!J3uSUΠP6FShRK ݚtiN W،U2v5*Wp"وhQkɿ: V9%H!yz֪1˪,cF=ґ:dB6`exPIq!Nj5&RY&%`iM(fkz2%gZQxTE}audox|PiUd#w^'ըX0סr$%YSZTg Z1h^w fo||j]KTĞ媬"GڪmU[K"۬i0rV/Q>5lp h;&p´^j/r;.l=LEĊ`lyR q"_,#C_l8s #RDs>ot PosŔ0g\wTgud$]h[t4O frMvz\w xzL$x!ax?^vHQWnKn_w砇2+=6ҹ,@zYp꬏1SUNL|ȯ<7G/}tQ|-_Ot}sԇ/O?sͩr>u;B}f04ЀB`HŁ_Ȗ kVx '|EdVuA4p QN&o *|]ZxFj,68zɂ*MiL C\GXb(B%2ձ",n9tFh3f4^F] YGqu.j+!n -$ 8^"W8}D',}\H1J~E+JUZ^-l.K_RĜ29!b2^*PLj&C2C g wM\%'i=a<繀Nň'|:9j&oςM4Bd0d'5'b2M h5T (/%(Q1!<%5;"ʣ4{'\hFUKȞ>G˙ G-iWDzjk>sIUBVR. M!^t @~ 茠U֭QdɪU9dp L)k^ZU6"Iͻ2FZ:Xž=]3n*gIL{ ,5+kY$vi7:UlqP[iSf/IvJcs;W,X䴶ļ-6[ZvK.#b[ܼPѹo%{b|׷n (VB)wQIUhow=wvj}UDoz[D" +ۊ7SVUB]oEߖf V!U &!51cHoKն) ;⠱v$j.{h]LfUi[,xe-3CjƬa`ZcMh yyBHDr!;wI[.f DeM,!OuGOkuYU~M!ȫÛK1Q<;jaQ x:l<.(`~6[vA:NDMfoAvD/(~m*zˠη tc]>v&^eIjLdY#Nq1'~(/ゅyaq!Вa,)`o@F%r+I2S~)9:WDž/ c{f>xL Y _x O_<ٸ^T$o kyy+eMe?mTt 3zet/}h^e;wNֽ|0;mW yӧ{>r۟+޽6A?s?zWGC O|X?Sx&tzwSS8ȣY~u1N{zEoftAVG5~ tK8gC8wk Dۢ h §Eun]ΧWH7oGesolFK0VEg884a<3VLSrm-dGBFY=#gL[.H<%l2~jYMօ@ց,#iVij؆svdgkyr@ms餇{hy8]xqH3tH |h;~`؇(c舓hw;H#h X :?c(uPSv'JhSqPX:oMR38 v8Hc،(18qQXؘ ܨ*XCt 与{ЎXLh 8~g{}-mv*Y JǏl!U7}W'lYUwbp^U&+|&m'%{oAђ~cmqږG7)mf2BI %H9WT~mG ؕ^ɎM1d!fyejiY r9tYvyxz 9YyI}9Yy9~)99٘l [ 隓 IY陎9 Y)9iy9ʼnę)ɜA𛐄Iԉy詝ٙٛYYY׹ٝZ I)jٟ9j㹞 JЉ9*)ɒ Iiᩞ󹢷٢~yʛމ 4> 9 pHJLڤNO" pXZ\ڥ^`*1Jm2dZqhj jHnpz5`Xv n9~N9~u1m1K2 sW2aբ}P28JЩ:$Z J'C"*jzz'匫 z#ӫ,ʠzڨY Pu*]䪛*ŚjʭìBy,$Ժcz®宕 u%b ¯,,;apGs!-˦{,[{y 0SDZq 0F ߷c ʳ-V&j:Vפ˴.۵?RΪV$o] QkcTK\˶Oh5;Kf([B`fW3;oZ^R1[jФ '4۷4Ow6QNd5nغ+:9݈[F{-KC;+[bI;ۼ`л9;büֻ ؛P3+~ 8ǫ 6 6  { UAdԿ eQ⿓J6, W36j X}RMٔP؃MԠ=;KXY=2U۹ۆ-m]%{da ^)[Ihx)0]}";ivtools-doc/formdemo.html0000644000076500007650000000077207433262401016351 0ustar scottscott00000000000000 ivtools formdemo example program

    formdemo

    formdemo shows the current value of four different datums: a boolean, an enum, a numeric, and text. The Edit button brings up a window with various glyphs for changing their values.

    main window

    popup window


    next example program gclock

    up to ivtools home page. ivtools-doc/frame-idraw.html0000644000076500007650000000047407512656157016753 0ustar scottscott00000000000000 ivtools frame-idraw MIME type

    ivtools frame-idraw MIME type

    application/frame-idraw is a MIME type for files readable by ivtools flipbook.


    ivtools-doc/frameinfo.html0000644000076500007650000000605407374262630016516 0ustar scottscott00000000000000 FrameUnidraw

    FrameUnidraw

    example application

    FrameUnidraw is a library that extends ComUnidraw with multi-frame editing and display mechanisms.

    overall framework objects

    specialized graphic objects

    multi-frame editing commands

    back to ivtools technical info

    ivtools-doc/fresco98-announce.txt0000644000076500007650000001023107374262630017661 0ustar scottscott00000000000000Date: Tue, 10 Nov 1998 19:13:13 +0100 (MET) From: Thomas Hiller Subject: [fresco] Fresco98 is finally there To: fresco@merlin.iuk.tu-harburg.de MIME-Version: 1.0 Content-Type: TEXT/plain; charset=us-ascii Content-MD5: m9HQGW0tlYXHejZ7IQbx3g== X-Mailer: dtmail 1.2.0 CDE Version 1.2 SunOS 5.6 sun4u sparc Sender: fresco-request@merlin.iuk.tu-harburg.de Precedence: bulk Reply-To: fresco@merlin.iuk.tu-harburg.de ====================================================== Fresco98 is finally available from: ftp://ftp.iuk.tu-harburg.de/pub/Fresco/Fresco98.tar.gz ====================================================== Please test this version and report problems to the mailing list or directly to me (hiller@tu-harburg.de). What's different from Fresco97: ------------------------------- o new format for documentation (sgmltools 1.1.x) o updated reference manual o new classes for socket events o undo manager o fixes to memory leaks o changes to 'autoconf' configuration o better windows support o zoomed text is clipped to avoid excessive memory use o builds with native SGI compiler o builds with freebsd 2.2.x What is Fresco ? ---------------- Fresco is an object-oriented user interface system for development of window-based applications. It is a design evolution of the InterViews toolkit that was developed at Stanford University in the late `80s and early `90s. The Fresco architecture brings together objects that traditionally have not mixed. User interface objects such as sliders, buttons, and text editors - as well as the "layout" objects used to compose them - can mix arbitrarily in Fresco with graphical objects (those that perform graphical transformations.) Fresco uses the CORBA standard object model, provides resolution- independent windowing primitives, and supports a uniform architecture for graphical embedding. Using CORBA also allows the possibility of distributed embedding, where an embedded application runs on a different machine in the network. More Infos: ----------- Visit the Fresco web site 'http://www.iuk.tu-harburg.de/fresco'. There is a mailing list 'fresco@mail.iuk.tu-harburg.de' to discuss all problems, enhancements, contributions. The mailing list is archived at the main web site. There will be snapshots (for developpers and testers) in the future at 'ftp://ftp.iuk.tu-harburg.de/pub/Fresco/snapshots'. Why Fresco? ----------- Why should your time be invested in Fresco? Fresco provides a portable GUI in native C++ that is free from license restrictions. It runs on both Windows and Unix. There are other kits like this, for example Tcl/TK, however, Tcl/TK is not in native c++. There are several other kits in c or c++, but I do not think that there is one with all of the features of Fresco. - Structured graphics - Native c++ - CORBA - Windows/Unix portability There is no AWT for C++ as in Java. Fresco could be the AWT for C++. Many man years have been expended on the development of Fresco. It would be a great loss if no one were to pick up where Fujitsu left off. Please give it a try, and join the effort. This is yet another "Cathedral" project turned into a "Bazaar" project. [1] Fresco is currently being used as the interface for the IUE http://www.aai.com/AAI/IUE/IUE.html, and soon for TargetJr http://www.balltown.cma.com/TargetJr. What needs to be done: --------------------- You can help to make Fresco better !!! Join the Bazaar! Help is needed in nearly all areas. Some projects are (could be): - change the 'builtin' CORBA to a Corba2 compliant orb (like MICO) (first steps taken) - add more widgets - add html parsing to the text kit. - more widgets, more widgets, [1] Eric S. Raymond, ``The Cathedral and the Bazaar''. http://locke.ccil.org/~esr/writings/cathedral.html Please contact me (or use the mailing list). Greetings Thomas PLEASE SEND THIS TO ANYONE INTERESTED IN FRESCO -- Thomas Hiller email: hiller@tu-harburg.de TU Hamburg-Harburg Zentrallabor Informations- und Kommunikationstechnik Harburger Schloss-Str. 20 Tel.: +49-40-7718-3448 D - 21071 Hamburg Fax : +49-40-7718-2579 -- To unsubscribe, send email to fresco-request@mail.iuk.tu-harburg.de "unsubscribe fresco" in the body. ivtools-doc/fullaaron-small.gif0000644000076500007650000020441307374262630017441 0ustar scottscott00000000000000GIF89axZuuusssqqqmmmkkkeeecccaaa]]]WWWUUUOOOMMMKKKIIIGGGEEECCCAAA???===999777333///---)))''' ~~~zzzxxxvvvtttrrrjjjhhhfffddd```\\\ZZZXXXVVVTTTRRRPPPNNNLLLJJJFFFDDDBBB>>><<<:::888666...***$$$ !! NETSCAPE2.0,xZH*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a=iV##D"R1%WT5z(Bzp {U2Se̘A0,LRЦeV.">QB}H:afbM=~?F$r ?:  ,|Q,L yH$d8&B(Ek$"J#4AE2uH[0'V-8D%d1H+PH >!%f!GGx\@@X?EJ-0 f]2KO4FBs vN5 d̂Y htDI!N`!]@F!^` XA(TA-. dq@A2 0%[0la"*BqIf@ҪpKS )J'r&hA -`1K#.X[(W(ER +f/AAK.:pF"XQl2P p"t'0Fdfū[vfxH$p@r ppA!WdqfXdf>\'>#CV<…@g))Rkc(&,=0)}R#U,X$dB@(P(V\`K)qRA+EtBf)^#Rx# B"6I`/t!sgOh»LN;B$zE2DG,:;zaQ4(TdgOSϾ A[- [ 6,?8Z7rD PXN6(L 砇0 :8̡wh<Đ"a"ň{Ab^x&ʼnq!,xZ}}}{{{yyyuuusssqqqmmmkkkiiigggeee___[[[YYYWWWQQQMMMIIIEEECCC???===777333///---)))%%%!!! zzzxxxtttrrrhhhfffdddbbb```^^^ZZZXXXVVVTTTRRRPPPNNNLLLJJJHHHDDDBBB:::888666444,,,***(((&&&"""H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0aj!JDtHܚd(' C-w,-Y["˵-4S5RjB@# /B6j\ޘGD[0V)0*p+[ zA-{"b&PʀQRK"$XACpHp Hoa X P̉[@Q40`١PsH)@ TV$\B( e!%"mX(h TP' oQTBBA-IEAfTQmpfi\r 12JJHV!+) T@= E)- ,܂k  ȜLAh)0X+L (@2&B '[ܲFRF qAqJ)5Pʝ =2jA`B`̠v:V h!8l! @, B',dB @Gj$R#T"~!.x 0hC2-*8QbC1K.$pq 0tDA=: IٝPN\&A*c CA32A~rGBH2ZPChQ DPХc by{Pd_/,d{B\Ѕ/lS [»Ԑ.7K8CP%!,xZ}}}{{{yyywwwsssqqqooommmkkkiiieeecccaaa___[[[YYYWWWUUUSSSQQQOOOMMMKKKIIIEEECCC???555333---+++!!! |||zzzxxxvvvrrrpppnnnllljjjhhhfffdddbbb^^^\\\ZZZXXXVVVPPPLLLJJJHHHFFFDDDBBB@@@>>><<<:::888444000...,,,(((&&&H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a&ix1Ǝ3F&;&d^m(R4D*J@RJ[-l%TtXX4djV؉A@R"BK\indﺙHR hٲ ([)}bC xh %dtE,Z p'ubA|`9! !n6TT#Q䒋<\l n lR ^@8@B\&*^,#qG(jC(*͂Dՠ'A6)"K++\pdUDcС >g IJ](i'!EŒLAhrC] HH@I8DPI#Oa6 pprgFGrP,%-ps -VPA)k,#$@=w Ē+@.a 2NNI.@@K)( b$#Dr \IP`P@.. H-\o)o<>bP]1A8a'B%x cBo!ܡ"J~Pر;WF WVdGc/zby\G _g274"FAQD _hD/SGg Qo}쑇>l/-8) !,xZ}}}{{{yyywwwuuusssqqqooommmiiieeeccc[[[YYYSSSOOOMMMIIIGGGEEECCC???===;;;999333111+++)))'''### |||zzzxxxvvvtttpppnnnllljjjhhhfffdddbbb^^^\\\ZZZXXXVVVTTTRRRPPPLLLJJJHHHFFFDDDBBB@@@888444***(((&&&$$$  H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a&ix1Ǝ3F&;& /cFcYW8!"EZXPuկ[d 1U*e| K`^պż-+aT֖VF}8VpD95%M =&mO:80V(iRBAK HJbw@'M#>G'1 )`-B gqHVK)DBA !~'0F/R 8'@\s"4:@&dȉ!` %% R RD"͝AGs T x d 5U%] 1c&lI%Љ!lXx p< ߞ'C:0mdB Yr*)е2/t!tq-1ĒEh rBB!;#T H'6J(A\12%A ` vh!i\C&7Q K`D.b R pAA#8K> /@Af@ZT!BXqKJA %A2[ڀ%<|Q 0Y2vBdǘ %Kj@[h3-ł_ u :{?A$ߕzBy!!߼P1|eO}d;b'a߷@OАD0r{}I@H?9A) 6L將:|`6p ̠7P63Ƅ~AI%ЅraKT>$ !,xZ}}}{{{yyysssqqqooommmkkkgggcccaaa___[[[YYYSSSQQQKKKIIIGGGEEECCCAAA???777555333111+++)))'''!!! ~~~zzzxxxvvvtttnnnllljjjhhhfffdddbbb```^^^\\\XXXVVVTTTRRRPPPNNNLLLJJJHHH:::888666444***$$$"""  H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a&ix1Ǝ3qDV]L jOA:uDbzѢɠCdzE,$~1Փ/hAp&RUK-LjbXzUσ1P@ J= -%h`=0uaϘ5!!m'"찚SzInx`'|4 ?B@^4,I)"lq "O,ge>>222...***((($$$H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9DRD92!NX 7'K$irF78 * cqML A9ٰHoߍ2+(9&؈Ӣ/r'R ߾m^QA/>͜`x r ,z;BKHm~b  <@|6U @&$BA vHr U&@-UQ %D}_B'4!2K+HV'HaL)Ex#ڥ_J ^dd9P‰-a /|b^ p"Y8r [WЊ^&!T 'GzBJ+HЇ1 r8G \GbD! i+ytbHEU%J f$'L1^dpkTl'\0GxN$G "asxHU y) z(G#p QE+g8MGxxSN(Hp d A(3|LbDIX  +00B hM5[HRB, t1+~@!Xk D8AP\A PxQҀ"vli 1uQ ZQCTr*nu*QqPV q!uC \Q(7]3t jB+ ]+!{5AOGcqYmO 80 O| DJ ߴM E H@7L: 'H  6Da`DFσD!T'$ !,xZ}}}{{{yyywwwuuusssqqqooommmkkkiiigggcccaaa___]]][[[YYYWWWUUUSSSOOOMMMKKKIIIEEECCC===;;;777555333///+++'''%%%!!! ~~~|||zzzxxxvvvtttjjjhhhfffbbb^^^PPPDDDBBB>>><<<888000...,,,$$$"""  H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a&ix1Ǝ3F&;& yMiS2u6#t͋l$(a Es}nGB踙P!`f8t.8厴Pg. SdDQB^JUu 7D9aY]PCg8Dg;8 x2R  ,e @9rc-0 InE+`(ЇPt^p1w g<6B!ćcT qtm2 ]X熕tRM"@(LB] -qF 1YJUR>"F h@" %$0PT &|rhE,[@1 b2Fy9԰|hPMRD-d@ bW{K!@Ii _\ 3V Z?T4W t@ -E#QqJq)߅B0^'x{eO{d;$9`9hJ'y@an U|"3=dԁ}Aa!o}ao~ѻƖ/DA aŁ{ !,xZ}}}{{{yyywwwuuusssqqqooommmiiieeecccaaa___]]][[[YYYWWWUUUSSSMMMIIICCC999777111+++)))%%% ~~~|||zzzxxxvvvtttpppnnnllljjjhhhfff^^^\\\XXXVVVTTTRRRPPPLLLJJJHHHDDDBBB@@@>>>:::222...,,,***((($$$H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a&ix1Ǝ3F&;E0a᧲d4a!IfJ(<#-Ba) H5cӖpBE#db 8;*U*4tE ~9UiFm+S@ QtC&WuZ\"lD=C*$@*O\J0F+hPB @8"7PćiJ)Jv@iPD&@ra顈&!5R%:9D, (uO"G&DQ!^y\I%$P $,L6H EB Z2CXF@%^BAe/ xfqfPQ XDBq|AX4X^oxШ ej]ե  mQ/uu`1VH0!j@0T Vn'UtRHX` tg9uD*T|"DTa\)Q< ,xF#R X  +,0Bx deM!"{4E@\ nh1*w蠀T QdЃAU0AP Q"DHnwwIPZUdž@Q[STJ*_BF\O$>Gn%DMWI"y }P QXdyD|x_1_-ߒc$2G <$޻TR~K,PDEoG41\L3T0 Lt0wȓI@!,xZ}}}{{{yyywwwuuuqqqooommmkkkiiigggeee___]]][[[YYYWWWUUUSSSOOOKKKGGGEEECCC???===;;;999777555333%%% ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddXXXVVVTTTPPPLLLHHHFFFDDDBBB@@@>>>:::666444222...,,,***((("""H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a&ix1Ǝ3F&;& /DEVi ۵c TSa-a*K4)u)S Ydb Uj`ҋ3Af#h$8p@0XhtS#~D #Ȩ2~[ lbx42 "x{)F[C)`8 ARJV.lԁ *,0Gh0IPJj%rʆD`j(J0,Qdo(4-<BPא"pZ* !YG.HHXK%r"Eo C'>  _)|X?BDmi A?ۥV耉!W>>:::888666444...,,,&&&$$$ H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a&ix1Ĺ8p\DƜPbvr%8ScE,&iGd D^P0aEZcKpRBcxQz@~(ia!@Rf `@桀L:gZ4Ltz{·%#L U!,xZ{{{yyywwwuuusssqqqoookkkiiigggccc___]]]WWWUUUSSSQQQOOOIIIGGGEEECCCAAA===999777)))'''### ~~~|||zzzxxxrrrpppnnnlllhhhfff^^^\\\ZZZVVVTTTNNNLLLJJJHHHFFFDDD<<<888666444222...,,,***(((&&&$$$H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9(Q8CH@HE]RE"K:NT""EӡA 7^)RTO@*ȩ*bvԀЉ1R/1DgaI(^B'$2(<2B= @(?,Y! J H' 9'b䉌in}ġCB^%;R( 䈑.XH>ÐI-*$ J)EP#%Rr2R ZdDR]Hrr:$C08`,9C,p]DCwo5%a+" l jaaU,gG+ht`-VXTJ-gQF x 0!gE$2@!4JEn>><<<:::888666222000...***(((&&&$$$"""  H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>^\V̇ Z,6*bBT[^H-A^|IX}6T0^( ,UA2 ;5P3k BѲGM,PTkP6FK 3e+]}/Y7J=@)#42fVjiov1邧~HAl u{-HP*JmT`A9Q|eRiEu؈FmaM֊,uUGP J7^yGJ,)QCAADALLBCAp3SuB; @17DD&F+ԜB V[@189e$ *^J*o]hSN08Äm7͹,P|)*14TF10cAS ň6S䧪V5$ 6tܱ3]h3 5!t 5NtU-pÍh vk-{xأ.BH3A@Bp"P/qٴ욳.D@p t07Ǯ-u ?r(RǐŨ27#(t$#CJ@|9LP xС1psM|K%Q eH$@D &C` 8\7x†&`F:IC (6z @',T :B` l]DB w78E X4q P*p,\X-9h# т'(bNLn.G_GR!A a|xx$POR-7\7 2!AN1~@=@ v6ta [A 3t9xI !f)qO@qU @Q lC2Y!pED2tx3Rx #؃4,ŋCgi/5 4h dݰ!6`8h0D$ `L$c@e$%iޙ9a~% XAfqFL9gXt-`"dNy))'} JGc|S@4P4$Q!d1.$v@VծzXJֲ5ZֶU(몬zUdvh^W൯%ɰKBlK!,xZ}}}{{{yyywwwuuusssooommmeeecccaaa___[[[YYYWWWUUUSSSQQQOOOMMMKKKIIIGGGEEECCCAAA???;;;777555333///---+++'''%%%###!!! ~~~|||zzzxxxvvvtttrrrpppllljjjhhhfffdddbbb^^^\\\XXXVVVRRRPPPNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888444222000...,,,***(((&&&$$$  |H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBtT'ZMyXYa%6p֔RanE9KPrr-J" ^vK4c% Lrpc[1H# [xH1 h<T_(`u_< br|1炷[iU)ZqH uic%'3L/sՕb/ĵi|t*ȤGGCBS2CcLz[CəM JA.24q CBQ!x.J68E߄AgP?dADyЈ)7h"ApP(}1?xU)Ar|_~fy0 /8ꄧG<ԦJ5esPzޡ}iGdR xiZ+c6Yd2Cх9q8ƤC9'=qF7Y̐M3Ͳ˂CwL Dv0H'),8eTHG%/:tE7). ;p%S|9<GKq@&ӰpD(rI Ox1aY$2ᲆ-(эI0%EoI"@A<а_P !"3%P<" DkB![0ċ9!J}t-q u@ ]ƴ I N9jhBBM&ր β 4RM22XⴠpG~KH)TJ  0D1&4l Qd8%L&@z$Bta,kI,Ʋ̑'ݰL$:HG,H4 kaA`_@BdE$ Bp oX qF r@7t!.> S8Gbpċ ' :(H@:O@cozGz!A0@QlPkXGmhPE" u +Q 2 %d/k~  < ^x0Qh#^^"lWO!&1ā .x X &(v@ 6 \w<% 1MR!p p@(jJ,6 m"$Rt%?H!^UH;բ 8 83ʴwDR(hL p[p :фD*(F 1 @(CG bR14,cD Q"%%-8O2TMը!Ԧ:TJժZRmSծzKUvԅEk*G2ϭVծK!,xZ}}}{{{yyywwwuuusssqqqoookkkgggeeeaaa___]]][[[YYYUUUQQQIIIEEECCCAAA===999777555333---+++%%%###!!!~~~|||zzzxxxvvvrrrnnnhhhfffddd^^^ZZZVVVNNNJJJHHHFFF@@@>>><<<888666222...,,,***&&&H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>Nܡ ,Ж^1F*B`KeEѥ(bw -IQH#`̰0ENBYe[JAwP感'>>:::222***(((&&&$$$ H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9 L( >0aBD0 :ȇM,3{HUHDI?>hGb>xPa%Y sca 1 dc}Rùsk=FA<_Il1J*4*As(b饘foב@(*W%!tH G "D'9HAF `mԐO*4<*$q&LVA*a]L p$~P `RuJ`x@)qHPS}h񨣫pBGTR9ıM)((y#t NnT0JhQ+Ta#&{E'JM ,C)VD0 +x2T UHA`XH+\Ђ# f WGrt1 [^ >4`~E,R2C!>>:::888666444,,,((($$$H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a&ix1Ǝ3F&;&䑏X $w唧=}2u VNdg¥H~S\(rŢE92I^#CVXX0^/!11}0袑҅B%Lt$Qn]D&'jQr)X2  Y%(]Hc"52k4T\E#QRF`Jd);_S, qu $C&Y0 Rd KpE&RpŅ1RpcaC@ ZFDs^#}4B D+V )҄&PB* n0N 7DI\("Җg=;A* I$!BV9 p)AHP,13-DEb$ `Y&8s1Ip!^ErD\S ҇r+Ler3Gq&S<&K 9HDd"G?D h$'IJa̤&7Nb (GIRFRl$UGVѕueYZNƖct^&& !,xZ}}}{{{wwwuuuqqqooommmkkkiiigggaaa___]]][[[WWWSSSMMMEEEAAA???===;;;999777555111+++%%%!!!zzzxxxvvvtttrrrnnnjjjhhhfff```ZZZXXXTTTRRRPPPNNNJJJHHHDDD@@@>>>888222&&&$$$"""H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a&ix1$]ңSC(H=02 M;{%E!\Qh'׮ "Y$%A{l@&A/ Ђ7-SAD҃ ܘj \PgKjXRF8Nfn &=@^HH$I *]7DBXzTcX8 t" >MƾOPA?sL30$LW?4% I Zz !ѐ(LaŅy]dņ-a\t8<k"Z!,xZyyywwwuuummmkkkiiigggeeecccaaa___[[[YYYUUUSSSQQQMMMKKKGGG???===999777111///!!! zzzxxxvvvtttpppnnnlllhhhfffbbb```^^^\\\XXXRRRPPPNNNJJJHHH<<<222&&& H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9qpIxZL,ADHLDRaI01)0*aZ) S J&|EMZ08@%$D̎#4Q¢8 +GMd AA\ѐ>R-)V/@;h!Yx I%e(&n+L`Q&Tv&FA"TO*PVCAd"34@G[A/"1 􄈞HW`@pP8@ CPlš<@ H8AF]lh[x!z";xZ'ArPrFr4倇Ax  T1!4g _`xPٮ)W *kGM B,!AghPbF"!P !N|GA {YqC]B ݱj*Y d#6"N$BD99%yC[Ik!@Qj t35e$P 3tDMDRsE,`!41T&3A tE'pdX *4! -[)m-A1 #}SJˡHJ~ u"2\& ."NXBݡH|O^7%9CP#DzOnNp.^}|APla'|i4G/}b(oghD߳^~狞s޾O?a!,xZ{{{yyywwwuuusssoookkkiiigggeeeaaa___]]]WWWUUUSSSMMMKKKIII???===;;;555111///---)))'''zzzxxxvvvrrrpppnnnjjjhhhfffddd```ZZZVVVTTTPPPNNNJJJHHHFFFDDD>>>:::666222000...$$$H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ-jGSM}@Ä $ LOtdɀPH ɑ#GvrRe 7dʴ ONX"UNc5,0Œ(OG ڙ#,xGwBW|rɧ)SV`p BJZYݣOBr TAQ f|!m0+:tS<\q[ D!K Z0 #&%$@a`t{H@lLGR'0zqBR4Q8Gm<~sITb0_OH%3izF\ķ{ֻ;俳_\M7c!Woғw˫aœ??!,xZ{{{yyywwwuuusssooommmkkkiiicccaaa[[[YYYUUUSSSOOOGGGCCC???===555333111///---~~~zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddbbb^^^\\\ZZZXXXTTTRRRPPPNNNLLLJJJFFFBBB@@@>>>:::666...&&&$$$"""H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANByII2eh@K+JIΤTpĖ%UZlEP.qiP['^Xnl$F 6 P9 h~`DQ,[HJ#V+($%&mM `pA ZB#,RqE C%8Zb7T$πF8X(!N$]FtGt kPVXJG- N 4HRfDUST&p@BaQ9A#%tJ"QA!B%P"JU'V "4r%>QX`pg7R PQJ+)'[4Nf4<B$7TArxA Q `&"ҁ'u$p`fbOKAB)O@ *Yp0"FUE,8q>.rCW vM`@,|,q. ;2!Tñ;Y L"i(xЃX!{ }Bi(@5`Q4Pdg"A!{1 tS{Y`HSh0 2@LAE$(20 o`FC;"E," 9b|fZTaF"@=( Q5MB(1"TQ ΆB"0G8 sI{ PTTTD&xQd?i"&(Bl'$ WPN7!K,? OlR 4zĶ>;Cy4A@B숄BL{ELVJ%}l˔>D/o˄t9A.%' `Ds}w@29&D)2BЀCI%.v+bJ?zP((V/%<%D@hCK C&4}% _Cy$84%n|#Oh8#v#Ph<#~#Qٔ@r"<$R r48򑐌$㰇JZ̤&+)Iz (L&R0AQNJy%,2%!ryK^җ !,xZ}}}{{{wwwuuusssqqqoookkkiiigggeeeccc___]]]WWWUUUMMMEEECCCAAA===777333///---'''~~~zzzxxxvvvtttrrrpppnnnllljjjhhhfff```^^^\\\ZZZXXXTTTPPPLLLJJJHHHFFFBBB@@@<<<...***((( H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVJshdhS7ihkSJ4X'B@M?a$#AXm1ңT$Dv@LωRtr. )v,N]ˢv˶nUr.]wUjwǾ~9q0a&ixdNcL$eIA2d乜BqB2ТFHB ,nJ)Eq(oP\MS)x6o1SK'M [ܷ)JР&*@`L5I%.`Z@xqTIL("_mBQISA!kP amh  JP&P4" [TQH#@bENMTF1 ։OIe;_~b'a'Moe3HkGƁ~^$ łt`\4Ńh !,xZ}}}{{{yyywwwuuusssqqqoookkkiiieee___]]][[[YYYSSSMMMIIIEEECCCAAA999777333111+++)))###!!!|||zzzxxxtttpppnnnllljjjhhhfffddd^^^\\\ZZZXXXVVVTTTRRRPPPNNNJJJHHHFFFBBB@@@>>><<<222...,,,***((($$$ H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a&ix1Ǝ3F&;& /cF &J t'>*%.b8h(/aPeDTTu%FK V籯|aq燁N聑f38/.촻a/^<ᬿ|}KU[ׯ=Zۛ!,xZ}}}yyywwwuuusssoookkkeeecccaaa___]]]YYYQQQKKKIIIGGGEEECCC===999555///---)))'''###!!!|||zzzxxxvvvtttpppnnnlllhhhfff^^^ZZZXXXVVVRRRPPPLLLHHHBBB@@@<<<:::666444222,,,(((&&&  H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9q0a: N&i$d1cbspbd!.ô(ӌ%,1hmlPE~A pOLq#9y&{΀L|`H0Ф7HnNyIfyR !%UȝaW@0C BC$I1!9y&%,pZ#Įb ve;Cf~FCBa`Q)GuB>><<<:::888222000...$$$""" H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>R$,G5U:d#Z@jԖK:,[w[_ATa Ea3#dㅇ!%儙!>JDpeAxG`chDa*[=ؾb7@=$:G\OJe+X ¡>@-cxn~1ɂK,ԈoAwIF?A4" I}PPD^rB3 n E Ƒ%ć&7xtG77{ՠI AH7rDY}0l6 AhRBhQ@Hb )&tDU\<"e ]CJEt RB.%WUfA{$29$@z'(K,E#M~A|,DP 0^]@A$A@Q<ʭ2UUKWJ8@H`8D'TiG/tq+^A v"*i\p*QNrTD ,H AAXT )PeHFXB% (R+` jF C(| G HS<Š*bB`xB @C+"I XE!h iQmp0N^JJ[2 J`#T .HUF#H,*I0Jmzl wL@ot ܙQpm!J,1P"I\AAy_d1w3e WS`qŚUvyCaŭ'kYBƁ+H8_a7˭ec/D0`ɟBD% уP! J Vp+`AvPh[E80x'4a ]r,0 g88̡wh5*@ B8p)D XB&Љ!A*nЊX!,xZyyywwwsssoookkkiiigggeeeaaa]]][[[WWWUUUQQQOOOKKKIIIGGGAAA???===;;;999111///---%%%!!!~~~|||zzzxxxvvvtttrrrnnnjjjhhhfffdddbbb```XXXVVVTTTRRRPPPNNNLLLHHHFFFDDDBBB@@@>>><<<888444,,,$$$H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դV͊ԨQrh]*sHB.j[+Q_`;E"'K7k fS('#^[>rQEI 5(E))Z$Fh%KE7EjۭmrdPȊ2['{"_l8Ԣ B$R(/Q l !JA<\e?afYQ7%|)F$`t-Q\AZ_h8f(XA}סQ0DE{D v$C6v`pCYrIlPD^)BE 2Y"DWUe&*A aMVV@1'b_%OMQ  S"N9v )8 -1B#; ՕiR VHj_m1- !qR-qXE-RNbDцPF[R `75{Ѯhq"4Rܱ"25瓹 P-h!tPbPRHҒ -b+Lҁx}HSHJ\Q,x f6U)L.*(@R {N%{0 BKxBJ`f#='5K <®`{4|`ǬRtQg=+2 L!H 4GQB4-{@fW|1]ARHhd -{c*. T- &uс'< B -[ذ)w!<Fh*dDj!wQ@hK C"xl@JB @)8u}ܢXlXō(X \,A`BPB I@ ]b4Q"Cp[?b!*FDA&^hH*Zq{Ȣ.z1tH2QzX6΍8c85юN#D>яC !,xZ}}}{{{yyywwwuuusssqqqooommmiiieeeccc___]]][[[YYYSSSMMMIIIEEECCCAAA999777333111+++)))###!!!|||zzzxxxtttpppnnnllljjjhhhfffbbb^^^\\\ZZZXXXVVVTTTRRRPPPNNNJJJHHHFFFDDDBBB@@@>>><<<222...,,,***((($$$ H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢ6!M)%)OK S\)_M)OIVE o&IKJI ,.fqDxD%  W#$B! KIQtnȧZ`ޛQJDtAxҧQ EBe|?@>E;po`rfߒ3AblHw'3TԞB8P D xE"[ABH%Kc^7$T K(XA@ D|{$-Pe '^'H"D s'4G@ЈE|BEcfEQe$M4& (l %i 2- o,k(YQ,A *0gBث*` Qd +#0Kl *BrI B`}|A`$'?t@ y! s3C(2St8&X?Z7D"}G4b_D iH*X̢.b U H2F\l"ըC6Ѝ5 C:Ў(\"[9>$ !,xZ}}}{{{wwwuuusssqqqmmmkkkiiieeecccaaa___SSSMMMKKKIIIGGGEEECCCAAA???===;;;999333111---'''%%% ~~~|||zzzxxxvvvtttrrrnnnlllhhhfffdddbbb```ZZZTTTRRRPPPNNNLLLBBB@@@>>><<<888222...&&&$$$""" H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wr)L"b{GALb8E&Ccdh1R72(q  2Gh2@痧fDPd]BLD|$I~%R9N 9PR&:f~yYߙ]ܯ:5%d& b _>HO%lA=d+lb*Axd/d#_-*\W(|<+`_$VRh BF*" 1wh (]tA@Np#QB*8;8E| dQ5 \IJHaQ*N0p1FqT(F%*F 0G"'`4p6I,uPCO",x+SA2ĒR"J$.h@}pBE+Q3쪊0*U4J0qtaV؝M xG$\E, QRJ2 dG VG&Ot}X^l! F+Oq N 4B&gB*DfA@B!IjD>1*r@CK) lѨPTdGF <_?iHpDtiNR  %Dr"xeƒ!PƻC$ { 5|2+}MOSӝd}o~__>G3g/F HƏk_ZƁ= ł/0=$ !,xZ}}}{{{yyywwwuuusssqqqooommmkkkiiigggeee]]]YYYWWWUUUQQQKKKIIIGGGAAA===;;;777///---)))### zzzxxxvvvlllhhhfffdddbbb```\\\ZZZVVVTTTRRRPPPNNNLLLJJJHHHDDDBBB@@@>>>666444...,,,***(((  H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ~9Vi"VGNd<|BsH#TLRa!HH"ɧ%PnZ d(Lޝ*K~2ɍ<'"1BϘV=F]%ʗc"L08{[ #$͹!ĆE!h:6D+<  8%pD:`1d8[+lpA )v,N]ˢv˶nUr.]wUjwǾ(u\ d Kkb O$3y1eJAA:]9eJOH݄,r/^DaAcSR`UT9R%6<#wXQR)N%L8=| /KlS^ӇzBy̠M]" 9PEyq4BcD%+4 HDt B$(J(t ((0D-U$C Eh(! .Q$C$L6I%n%YaDha *<2$r5F?DbQG$b"A2A?Lf,`)i ( !!Z4b< Q F  )pld/l1 TP AQ[dA 02||%(]HaX(DH 8(ȯlE]B0:P7d)`pTي?xϏ/9[G7޹#^'}.pa1/ۡ|#~1yW.R?ua$!,xZ}}}{{{wwwuuusssqqqoookkkeeeccc]]][[[YYYWWWUUUOOOMMMKKKGGGEEEAAA777555111+++%%%###!!!~~~|||zzzxxxrrrpppnnnjjjhhhfffddd```^^^\\\ZZZXXXTTTPPPJJJDDDBBB>>>888666444...,,,***((($$$""" H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1ogN9miRB*12Ġ2(%  *MdIO&р|@xpZgGJD)jz0 4vRʨ_(r U%OѝD V$)oDMcQ>/j厘vŜMovŒS,1i% ?)+ Ap+ASSb@TzHЀQOR!*DPDOXbK" F*) @ "[P8ITS@0HH R |b BX01%f$'Cb(MLtbP@]*@E^$A|»C/PʹBvw.Dj\R.B`A>-\,p_bEp:!y+ #h Bǩ#B.x"oh@ ! гRD`E-=!`*p8((h4oBo .mpCAB-L8.x\lCD H o_ L1 A0Z,X"< y(/KxAP)ꠃHsA, +0_-R*`I H'I,M]d #t @lJD 0$w N`YGx!o`E'zR yC-f~dBPqT' (>T'`gQDwp]Gϑ&- JS:/uKcʑ4{7Ms3ԧ)P?61uG5jRT6U'B}IJ2ժ2*Vլ pXJֲhMZֶUe\J׺l*VjURկRST.հIEQ[T5 !,xZ}}}yyywwwuuusssqqqoookkkiiigggeee___WWWUUUQQQOOOMMMIIIEEE???===777///+++)))%%% ~~~zzzxxxvvvtttpppllljjjhhhfffbbb```^^^ZZZVVVTTTRRRPPPNNNLLLHHHFFF@@@>>>:::888666(((&&&$$$ 8H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ &=X)u&ǘ>uh"ЙdsT[hQcxV-#B/DsKA|L8.P1-'bhl.\ -J*mA%ÌI"H,@. E!a"X`(&\ >c"vH.rQH- 'm*^]|H(D00*cn$"D4Ab m9s Kxx*$EbRG*7*Jr*|MQDpQ+A HB,T A<+Q)R;'Sp1@A >Ё@ F 9Dd#ВAJ!zB\rb MHAP! :8@|| <#!?Pk&9]8H?@'{aJJ3 0  *\ '/ K 0; Ta (pW]99≾@ w p]2[:Hp *Bb!B 5tn&m'D A&BM^`B_alBr^P4 e@MBB` YN(@;y-T@T59~sD @JT$=GП44a }E"*Q6V](D2ьttc}GCO*ӤDTRҥ/KF*SԦ.)KO:@ P@HMR:PT}:TWEiVMUv5_hX;:VghZ%!,xZ}}}{{{yyyuuusssqqqooommmkkkiiigggeeecccaaa___]]][[[YYYWWWUUUOOOMMMKKKIIIGGGEEECCCAAA???===;;;999777333111///---+++'''%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffddd```^^^\\\ZZZXXXVVVTTTRRRPPPNNNLLLJJJHHHDDDBBB@@@>>><<<:::888666444000,,,(((&&&$$$"""  H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1oh,YBgŜ4y:dž֥K2E@kYet!җENЉ E\(;n( džM$HBiRז U34c'8x#S0xQ?coJ.J"'Rl)): 8L%TDYg+CAv-) T*+ɯZՂp%UΠz T:IlChtSRbb<ޅ4!!q8pNpBG%C2@ h t@J@9v|!&'"tJ)0)p!Tل$d9f0ь'a F# (BMl 8L!3$2T c^ 4g}( &X` E7K!aED-1;y1|#`p +"R)p$qK~ D<TB P3@A, tЈ$81AQ 8?QDC/@D k1Pq 2J !lFEԓC*:U 08A`Fa "(qP!1Ȟ8O!7ÅlQ*aC|cΘ$R@` txBa:r‰b Bo!`@8pHDaf@0B0c/F:Pu`C#> Τ" 7"@H"F@ T3 PEs1_jhP 1 Β^Ѝ5|cը@P7aȅF 8CB9#3rHRA0 @RNQpUɌf qLf2 gf/! fd. I AFp=ԡT(DS"щ F3rGC' IS:=k.HL6ST&0>><<<888***((("""  `H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$s'8 ХbgŞ39!%ʏM!saCcbe%lV()h&;P SFAR "F`مL i#G'F$;ƣ/EI2ڬŒ!3>ר/2/4u\Hkj9*MF+*;"7[j!O:%L!LH%F^R* ~3f Qt Y & 3”2' ; 2&y)0sT &A,m 3E3 3h'`r%$8 Q3+B>΄nXq$WO&,DP`%BX mԱ@bZg$SL}I+̞<Fc%AD3P`BM!Tr)itQq8 :Pɨь,p lt']Q!kH`HC \"200 )|@:0 Fx$Լ*hЂhH!c쩆(2 <1s "g+0%AīoJx￞Њ_q+$C"k2r4PQ- Ͱ꫊'UՑ-,".f H&$ ,(@g:1 PnDy-ԅLa@"!ppA \Ҁ$͜)b TG}Q= B! ƞxtUdC!lE R ,ݹ&-5Pt/f҂FL! &_ 0m|I~qp r߭\tH>D2#Ql;!@[A$"Ȳ \ˣIa 5 .y0r[ɢ?8&А jgPC0$l"EvƧdD%_ lR%O"3 \p a` p Fefh7` xHía bq?%Љ+<]")ˊ3"K-^ؑ1q%gh5Qto:ˎ#K+c iAȐ2)$"WH* $'IJ̤&7Nb (GIRFT$"UiHVҕeGZіxĥuIG^1 !,xZ}}}yyywwwsssqqqkkkgggeeecccaaa___]]][[[YYYWWWSSSQQQIII===999555111///---''' ~~~|||zzzxxxvvvtttrrrpppjjjhhhfffbbb```^^^XXXVVVTTTRRRPPPLLLJJJHHHFFFDDDBBB>>><<<:::444...***((($$$ H*\ȰÇBHŋ%bȱǁ?I`Ȓ(Sn<ˆ,_ʜ M1o$sώ= tшG^,ANBt*դVͪU(׮>)v,N]ˢv˶nUr.]wUjwǾ(rriM-1b$W)hj=TB N>B>><<<:::888222000,,,(((&&&$$$"""  !! NETSCAPE2.0,H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K쪱fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{t!w-[JA Alc0"3M/ l oF0p98cBIX#{HqH䈣3, 0̠9Ht)@`\n `i3 -5W馓zʘHg'8:ȥP HGKK2,d:%<ȒIT"j%T`H`ע>Ԓ7 Pax1P}G6ה0⌰!.%t#MPN3E>pV[o‘H 4`C4r) R87$m l(3R@G ģ'|@x< Z8@;d<@L%qG: &iH# <0Ҭ""ܒ@!Œ~*Lptk("I4%`K] r,00M.:9! 0X HSD8JL M.Q'wE< b M:pGipB/2bnMDFc9"hq* 5$`1WɒyO5}nZ͈4C* 4?PAb5 9s27A؁j>HјCT 4tBW89dH!a $̤lPf60 -` x SB À,q3X7 wrеkK %UA8b-JlP0PEt8"Dtt ` Ax,@U8cL hbjС0XL=a 76N5B}8rC ѵ.(P0!`/t B)V`e x@@<wRFA:[", (2AHBOڠ1N(#o #޴KщM(-Xp!p@rdt* 1(;`!S!(…*A@(p5Dp.EF*1C @ c`vQеo¥0!vd QHQP"߀2ea  3lA t86 e 1|D" NiɁ%  pX5&x@9 p4Q2Q6EA5 θE*(aHnVm."|1npp\ pCsP"( 9D9vDp#blZa@ġC 0|قÕ&A^w B@Cb;pAr@_yR,@jr Dn8!GTHŃac9y   @ xVPG셠 (dX PGbO Fd@7dhp: 7='śpxlf,bj \H ;/H`{b8_ 28)Y%.Vp1pᾅ'x l|e; G CڝV YN6+?;@[?f t -H0Ev  ͥRy'nM`x0cH,>, "(Ih GQ#$0Q\^pi"Xx+MG (q](H,8~^#l)- PB9Ƿ}XjpB;Ml.Q-[@W7.5 ѷ we& f9 @_KWFC5/(|V Fd0qQ;2B8QFH LOQQN8aTɡjQ\x_h^ȅceghi8kmoȄqshu8wH!y(!{ }\ s5ap>Pzˑ LU P Y! A|3@PPh ` o5P bP ]1p|p^ J8XxؘxOH 8Xx蘎긎؎8Xxxr`؏9ُ0Y ِ9 9)i9!#)a'T))+ %/'-Y31I79;=?yA5CɌE!,}}}{{{yyywwwuuusssqqqooommmkkkiiigggeeecccaaa___]]][[[YYYWWWUUUSSSQQQMMMKKKIIIEEECCCAAA???===;;;999777555333111///---+++)))'''%%%###!!! ~~~|||zzzvvvtttpppnnnlllhhhfffdddbbb```^^^ZZZXXXVVVTTTRRRPPPNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666444222000...,,,(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tV3$8݀ˇ:0 6C9 :p0+C=4H# $O#XB 1C> #:, 6"r1 @4T@"H2 ZARϘxH"y+!HHaXAy!A#ӛj$ DJ&e2DhD! ;"h"PC !"!`S40A&Cr$"$}c &(+$x@MK&JㆶEi!%]qs8Q!+ j,"6I"i[DD70i1bq< ]+zC-0CA|@#+\<09( "rIPc<ʄEGЉ4` XCti@ftzLX!A V!^x]Јx404ODOx F!dmT y>!8b BdQ݃@/ѽ G DI%Kl mzxA"c)T4ea lzq_E̐ұF0(MٕA9V03Xcd-\WDXm8`?H"($c  `/"v#[!31 H@k\ ;y laz|o D eA1=@ZQHPB9 r`pE2h0+vX#@ GLg = T: L 6A ,xa D b3G$1 D)\p; *L(C`)4r$Qj0A!8;j47@W!C'"CpEG(ABS+[AaLO; rZp)k`(id T4-#AQ"{ z+ # 8:X Sr\aیLFVE2t4߉WDM8@A#D( P@bb?h3s9z5H <abh(c됃 ^،vD DZ~1 A T)JA~+_T]$ʨ6˷Nb V#$mX$F':okwPz ރ9^o;=Kp8= /'|b"xXCPAFuN[Dv @ ƨ?0BPN>><<<:::888666444222...,,,***(((&&&"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQW.^nQ>p#bE։*NP9Xp q8@ @QBP3dl6RN㤓" Q, Ae.zw-BT"֗#}d!o½tO!Ks'Z)t75P!n8y_&} Oh7ydG DYP$L `Ұy ؀8X8Y x  "8$X&x(*+Ő0284X6Xt:<؃>@= BXFxHJA 0POhk'|dAgҡ`ZDž\'aZAJgV9'aSA䇇yȇRN'N!,}}}{{{yyywwwuuusssqqqooommmkkkiiigggeeecccaaa___]]]YYYWWWSSSQQQMMMKKKIIIGGGEEECCCAAA???===;;;999555333111///+++)))'''%%%###!!! |||zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddbbb```^^^\\\ZZZXXXTTTRRRNNNLLLJJJHHHFFFDDDBBB@@@<<<:::888666444222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K쩱fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQW.^nQ>p#bE։*NbC2PDLAa3!Aȣdޜ Dti =(F4RKoq:^vBEu!(!oi61 2ؐ}H+ ]"R" -j +j8sJ 7v|D'Xb±&|ȲkBbn p`3; \A9ps "70|Ћ*`2 ^C+` 86"<8\ORFw=}R< pb!cmxf^0A5##F'Q, GD)^AxB t"xA 9 37@p*< hBhTJX3 s$ "%"'X")8"+"-!/!1!3h!5H!7(!9 ; = ? AX 7 ,~ 0>Xp?vW 4@: 1ph8TCaXCg(Co ;6@# m   P؈ X 0( Љ8Xx88qP؋8XxX 0،8$h##Ah\UOXA(㈎ݡVa{Ȏ~$RᎅHJaNtȏI!,}}}{{{wwwuuusssqqqooommmkkkiiigggeeecccaaa___[[[YYYWWWUUUSSSQQQOOOMMMKKKIIIGGGEEECCCAAA???===;;;999777333///---+++)))'''###!!! ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRPPPNNNLLLJJJHHHFFFDDD@@@>>><<<888444222000...,,,***(((&&&$$$  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQW.^nQ>prD"-cō0C/f#d̑YУH `BTh04KӐ# +4bP he0 駖(!( rfB:0h!҆ MSAfcm}9D ҸN:al0p<);ʃ" \sd |`7h8ӊ2иMMd !k!l˸ȟP0>R ,/B+!t;mr=͌ F,hF!LJ9ʻC @ J,$fC@64,5Rda|(`ES G%@r*uPcQGl&*9uÍT-8~1(E<("(@ < fp1"V s()D )/d1k9("'&B'(É)53P/C s =w#@T\ %#Nf"A#ctŠxA!TCPB;_KC!$=4zBhIH P;@(A7ЀiH`(&alq渃6\(!>CDpMiJ,B! TZAdb J c!$7PA#!LLA D*.(! GC!_AQ2*Edy0R@ȡh#HF0EE-!b'X| x+>!c\;W`S:BXȠKRG\цd"&`.DA8Њl (bW DvL NGd !Ʌ)JЀI" @((G5Z`  xرMDc J4]oh{ *a 8P Y%w=wp@%4Or <@ 2pBl m(o S@9bq!A̱U',@KoȂr!:^.9<9YѱbX(j b" [ %(2p-AIF*,!%Hqtd qTt,CBJˮw\`9b:\Z2@ 1 d5v=uP@Јtr9&H@0\]Df'eGr6t IC}0mA`zX1+`  E,g4$wXY."X @?i '$B"4 -L&QBB ;HL@ 0W8r&9{NTABiEǔ(;6v ًj %?D6*AS {]Xwe78J9 ;B$h2n02#2k` $# I]z/DȵD e"V8 @q/!epMRwaBU A{GU z BBБ Mf ޠ$Ka6_.n V {qP ] 8B x0! $<pv- $.;Lq ".7A p0I ?݀6(pt@D!'x~ ).n(6 B k6u.p;tX:P rm8"ˆሏ#fчhȉ艊#"!BbŠ"X u @  IV E ]pbЌ zh>><<<:::888666444222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K쪱fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{t: 5%EWqO 4up4ph Ά1gm\; e"DK7T=_qC<@*24DyGHлJ-Ӝ:cԳC1L|)$oJ,He=RPSt`;S.'3OGFC<(F@rGҋC`3hE|JE0[эtk g9IB^58SGAP- "#PƜDa"p%09.`H'.a2Hc aEr`Opx,pCэzJ|@r0;nЀf6t,b; yP&U x   H hLCx@B"D&UE V H. 8w\#Ҁ=td`@@lM$Ea `PdDZ^G8)Q pЋyBOqzqFb ;h*~5':BPH d)`;B0P @PYL@D$n"rC@jk(轣@ :\OTcilȩ(ȑ 8 c +i0Tq {[. ]  J /$ 1DhF&UcQH8YX"!6hLi ?D#WHbX),C`,p[zEn) PNl FC؀5PU,p+~HqQM 6(:DEh7 o*UL#X,`<,!H(j䨆ڽ.q$01AAg x*$ {!l O$` e@@%ܠ!& rjIL^G 2 |@$,Z$t8v<|C> D|*{0Hvq@CnV )L"2 PbڝYDWx0*|@u(H$ ~@`6k`MH33q`W5|@ ΜFVz4AxY "T ڭBb8tA$\b& 22@W{<dq4"^X p@F$L˜ڟ2ENQA'>|cv9J|MB9woxʗ$ ]xN2" G!F>)t;ArUѭ= Fyߑh bv| dHo`2@^2{ ;4({2-0St~9A1 `8s 倍 L4&]h!8%')؁+-&/&1X%88(~.0_Z `4= X AJG W % :S~RٰV9t“qUSv+bvS#%-#^ IЇ~8XXZt؇8Xx^1 H8X8؊8Xxh؋ȋ3$#uCDɸsȌH(AXh"ݘۈ߈>(h((( !,}}}{{{yyywwwuuusssqqqooommmkkkiiigggeeecccaaa___]]][[[YYYWWWUUUSSSQQQOOOMMMKKKIIIGGGEEECCCAAA===;;;999777555333111///---+++)))'''%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRPPPNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666444222000...,,,***((($$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K쫱fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQW.^nQ>p#bE։*Nbg>rFP>Ǽre7!=(i3G*46CDh#$yOZ ЌG91tMR0Md  ";rA!*B:A~D-MCTk蚻iB<{с6%8"A+X e D>rB' Ӏ9({ڨ>H2>J1 ڋDRcG`_0" xdx؆0.Oƀ(i"0Q~CAP2`,zazPkЀBKHN1;pa(9ΠWgGtIaefD 9EP_@ .8`XHECtv. ,BYxPDΐ@`[ff<ҹ=0`jN 8ciA-C8tpEC$& 0b BHb^q "@@>e/E"XX,!Q@8^a\ &+zQT~D=@"Cyjhı/AK "cKB vhA1 _U5in~ X Ed p 8@dPVV#BơQ! _@ak3NID" X8" Z1 nAX - 8`I#AB <d93^0T Pz Z (-lif H 6 -~ B)˜#7  eD--vd~=X\qPc~9!`.\!\[E. 6DnL$ B+jw"JۃP<D5@jOL,b "<! ( an X`14􊄨D>X=$hV΀E]p;O `rdVMN9[ (=2sn+<ă_+Rў>F >1Ð>" C 8$(~?"QA1Oؾd ΐj hH2d>C7-oTpbypEX }fq UoEWe Hi 7  K*,؂.02[06Ȃ:<؃>@B8DXFh^q JL؄NPPXPVxXZ\؅^`b8d(0hj·oqmh!uhsHy{hw(! &X (  X|}臓(|X!,}}}{{{yyywwwuuusssqqqooommmkkkiiigggcccaaa___]]][[[YYYWWWUUUQQQMMMKKKIIIGGGEEECCCAAA???===;;;999777555333111///+++)))'''%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666444222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KlfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQW.^nQ>p#bEtGXtA䣣V 4O5AN=S oyNB :уO3L]1j IG5O: N;@/2 T۴siA`pO%1* (r;z,3L"ud`@@ɆV(: TR^A" a/V 0䠌:`T`eH[^H@C*q qzؕH-nyI` !#6vaAP4VD#ڒ): w6тVCD1.f+KQ6RVʁ+I ǡ@r0At |6!0,"Yj$ $9ыrxbdE:F1h˴ՀL&o "sЦYĐ-PtR|SHG>I UpVQDGs@v!PI|۰TAmXf)̱ @e 1Z,7d X D> =2D$*-Bx9 @\`za_H@o$C#,r;i93Z!^H!hpd9ڠZ5ApePB+"IP =FcPpсq;jT9 TE NwZ1i F!E0j2P hъjdLy˛`#! Lᄉm-oD;R`"4LAbA\9M,Q(>DaJhrP4H<tt`Af ?@.c"sz4) c EmG > E(Xaq ZL`o0]IB͉D% ؊k~(H-$0' ȀP*c|t=HȀ=􎱂:1-XP@~:8Co,x1f!?G2ݿ_F""X"wP`! [PR20 77"w: N{`ve||L*h|K0}Tu|`Lb_mIł|p AI E JPVxXZ\؅^`dXfxhjl؆np^Q IPvxxzzH8Xxe؈Ȉ8(ȁ "XXx؂hX(H!(! X (  !,}}}{{{yyywwwuuusssqqqooommmkkkiiigggeeecccaaa___]]][[[YYYWWWSSSQQQOOOMMMIIIGGGEEECCCAAA???===;;;999777555333111///---+++)))'''%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnlllfffddd```^^^\\\ZZZXXXVVVTTTPPPLLLHHHFFFDDDBBB@@@>>><<<888666444222...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQW.^nQ>p#bE։*NbT|ȡ]qÀtsoO09Db$:4 TI850C`VL :4No5 \эpjiLZ29|$P9 Dx)@M2NV_n9 ,3+: ( @23(H J$";4pBa`rFo ?t;w\TIfEItp6liP8@:-dD#4E<$co4^vḌ')E'0@F%# 8"s4@ (R8Hf`zr(+ d Jd0 "aE">"edh` FPE3 Z!+`m;CX1 !B Z@  V"O "* %!HApA rFP=)8AT4bhT;H* рlPnA 48CaA`A'm! mX e&r<$͈F A<0A'XD, SH#* ^a0!T0 AKF2hCq =q9Ft[bᦍx Hx` C-! @08E B6@FHT& :-΃,B蠥t(<CcxGGpDŽ74A|7 @9], ^h7Ls< hEvȩ`c)J"-ǚ^<@K #vԄH%@]$X|t@@WC"-l,y&V@(<}{8G Z #ߐD q#ܞ#9{ tsO)R/h+a|1:77ug@ZJ -  ;lEAB Ps!0Y X"8""!!!!h!# !#G (T jЂ)8&x2S 40*ǀr$r.@ ]BւBKXFx(Eذ Uh hΠwD((v4`+`WXQ 4t` Nz|؇~0x؇؈8Xx^ IЉ8fp؊8X8#H!(!h9( ɨ xXшՈ(  x׈h8x~爎(h8!,}}}yyywwwuuusssqqqooommmkkkiiigggeeecccaaa___]]][[[YYYUUUSSSQQQOOOMMMKKKIIIGGGEEEAAA???;;;999777555333111///---+++)))'''%%%###!!! ~~~|||zzztttrrrpppnnnllljjjhhhfffbbb```^^^ZZZVVVTTTRRRPPPNNNLLLHHHFFFDDDBBB@@@>>><<<:::888666444222000...,,,***(((&&&$$$""" H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KlfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQW.^nyP1<^x(tLjZ3D%ʬc+4jdK$908z@D1 ɠ4<@UC28ǒ֡kA6!788\,⁄TE@ȅtS_#FЃ+AQ8ܢ6 Pxc G>.D O̡ u,la*# AaOHC 6&6B䈂:5xcr |%b8Sfv4̑` D+ D0Ett`|0&l1@-6< B0A #X RLH" sڅf1 A9I_+F/ʐ^8H!tBj z !;Hҹ=Ch ( mH _@(3:c{'h8"@xqS:fh f& 0a*P((~x8̪a08 F'S<iDHOs8 F'6A xC9RQr!pT ~VQH(6 *#9" l [(EJPbЍR5>oH"01j03( 3`>><<<:::888666444222000...,,,(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{t $  8H:֐;ϸ*>T$D< 9D@ ̙/`Nt`}Q-A~=ga aq 0*uр@??` `PuVW1dNw} SWzR p #A @n`9! N Ydsݤ{aԐWG@ݔw"({@pK}` hfwhZ|20q0fP `t a  a@^p? pƘ9$ n xWB@&6@ & $ )@ ˀ` m< 2?peW&4h@px@(u; "#8p@W& a Sa"9O M  '). p $<.@@J))C Kie\ٕ^`b9dYfyhY lٖnpr9tYvywĠ|ٗ~ty٘9Y 1Xy~Ri iYI""Y!Y ) 9!,}}}{{{yyywwwuuusssqqqooommmkkkiiigggeeecccaaa___]]][[[YYYWWWUUUSSSQQQOOOMMMKKKIIIGGGEEECCCAAA???===;;;999777555333111///---+++)))%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffddd```^^^\\\ZZZXXXVVVTTTRRRPPPNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666444222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KlfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.q[DWG0͝;{Q.xv<$lC)H8oiQF)Q,{,m\3(BW4d΂m q%D̅B1R,TM6n 4"2tieG0X[iPzf!O5(ٰCe0V-uQ BJ$J-D[} e\`"E[= \P=\uL?8$N[!CZf$.Y=1.0TmaD(JlСIՒODt)JL8RCe[4_SByǐNseC6ӧBh44R:tK=5jJ͌iR:ĨRצt#CHJ8\~ZP9EdC2My4PN| ᐇPˌ8<%JtO|"`64GxfYc3 &. M .dQV/Q6}(!xC?b/9B.g/ !8r/4Ewc9_,,/q*y`l)  uG×( 3x8]pAn1~́Ln)Kg,("אܘXŢ{ȃi SH ,,g#яh@ Ț ) qf p`,'c8@16ET sGh VK5b Ǡ 's!8v9C+"7D!<_5)ǀ`*?`C7(x!ڃȅ%P` hnS&0孶#jArtd g>u"u8Qj,Xl@ YbV8gBhCoD)|V( G$AT n4aNJ $臓Bh5LJ#yDl{P cшGO QBj~lt*:p{h `ѾD *tXwlC+/!- %M}փ`=aXPV`؃hSP"K hP :%q>dySx$@ cBDh@|ܓ1-QCPAj%bMτ:pF6`Jz,nጯY  b8DXkG4@-AQ0Xc!)BĀ_)πhҍL MdZHHQю_<`:@hM,Lb NO j, 1 v0  G#Po  p_/|*a{)Z [ PPep ra?/` UUIQZ6 ki_w@P +`] ^S00@ pp z }  07<)Zư 0SPeUnZ 9~@  3N09NB倁^HP [pP@Q`be[ ge 4}pOQPPQ#W ͒HQ 0e Ux 2W r 8R8V0]t fT,QP@JQ 5Xg ZUh Eum@`QPB 9e/U {0` Ux [p0Rb K r 4 0 gHVQZ@ZS hU200g|VWP `3q6Ԯ 09@ vi A$@[ _a z48iYb/ @HJX uxp 2!~h VN.{MQ]S6"P?NQ $)X @T[O![ O} DbKS жv{xz|۷~ P{۸{w;[{ۺ 30[[Lr{{;뻿;|jċ#@ɼdQ{% ˼۫݋k;ۻ黻뛻!,}}}{{{yyywwwuuusssqqqooommmiiieeecccaaa___]]][[[YYYWWWUUUSSSQQQOOOMMMKKKIIIGGGEEECCCAAA???===;;;999777555333111///---+++)))'''%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666444222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2kИGIS~lqO };g8>t )1e>R]6UJEO*C?YSz̗>;_ Gt q R= y`D#ޥ@rk ; n:$dAD?@Ihɑ;ǟD @ T?$A~``( @A4e̋#r<HH`\S~V u#9{䑎uG!dQda 0R"9HV$aH!':|a),E_ZLl8~UR||@d n5̀Z#O@zAxL@ - R.7, B ŽRI<.Ȃ , "4 HD4 F4:aD 1 0Z.A2`# }Ȁ-A`h/,1j v: ʡS@ح֡G%$ZRhA4!Pܠnp=l[< UkUcp7PpAJvhBp ZU t}Q@``J ZEyZun` "d[e0X} 0 5Uu ʓ =v8mGP:Azy6[u )pm߰78# @aPc|`] q 7@py@X@J Puyv@fhR P 6kC`OR }mRj 80]v .CJR(Z jHXP#:S[% qh@ R!Z!ʫO [[Ei*xtGU0[%>zW1 >><<<:::888666444222000...,,,***((($$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ ^pZg3M! ǗAڹ10`9,omg 4UyrSH8A_n4_I}ԍ1G{.. v v:UQ -AyYZ8C&jbHxpPXY98ы!SAB#RHV;<$$F"DJ#Bb\2wI: 1q3s=^pE?5|!3!3dK;uYw lM A\ tPYszqA@3\ijPv|W2vSBq\"2Ĩc< ɡír+QgC(s(BhPt.p4Tm_ưmm^{64EuC=JtFЦT 钎VTQ0%q͜zDׄ Upq̩tXn ~-`S3`q 8˨&Cd8U=St9sƣJ.#3  Sa,BB5W4sP'ĭPEĒS1i]LO1B{5 ͳMy1ϴ9 J=6+OtmBm-xHc%/.A~4n8A3!J:=E>jIL=1٤=x}4>b_Cl1GS x !Hls[KD>@ő"Cȵ?'Mx+ԥ2pQngDH. 0 ‹o" C=dz`,-Tvh1bC(]q`|an @@B#HD RYb0"A $c4{,ЎvII v7cf!cPH`\)6xc`Z`4 ưC$, <+l{-2D"R;N @)(WrP( DqiIeO u C< tD F:M_c#"o`D=^UC&zza â̝"FqXQ4%LF4B  \9\a hxTz2kʈ &-> XL84XQD#G A.8@`E4 ?| m"pʂOHDB PtnL#m`C>,4\y/L94`H\x σ" @p VtX]q Wc`E~sLF'>o`;XXH (N /Ђ ~( 5G` VbTs>A.0LT#`"A >Bh);l('PjNF$43h.A0 L5ulӗ:'LC=`BkȀobCX,[¬rbpf$P_TZ ," B%*7Ԃ`!u /°ʼn!"L B AIӡi4Cj@ (H~Rp>'Dh_B`ȁ7  8@ad"%pREqDV' PL` ʎЅM偀:(îD;i_HB͇(;G t! xj !AC!a_cm!0رBD ,0.. .W< PB,1 Y>$сJl SN5!f]y v p' @kX{jp% ņh'm!(+ p=-tXG"ԐA"@ 2O;ȑ% . !PpAD |@$!"l9Ri$10f ! @v R$9D:ЊNyXA ɵW}PVylP_y F 0@ 6OU=xy)I)yiSb9xRəJyٚY PyٛĐyșʹ̹t9Yyؙeٝݩ 20Y㙙虞)%GikX )Iiɠ頚 )Ii!,}}}{{{yyywwwuuusssqqqooommmkkkiiigggeeecccaaa___]]][[[YYYWWWUUUQQQMMMKKKIIIGGGEEECCCAAA???===;;;999777555333111///---+++)))%%%###!!! |||zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRNNNJJJHHHFFFDDDBBB@@@>>><<<:::888666222000...,,,(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K쪱fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{thcC: uZx) ڟ{` *A.dˢӆ<\k} D&+C,2ͫ,o6!yA6Eq;T s&d< K B@P,>01F@rG|MCPc;kCp5aqB@恄DC]X,4+]xAACT YF6z 71TeG;>t*c̰Q?la(wtmHG:N% fHL#Vʄb`Q.@`\ @#:q><(po {z"y~t ?Qun{ @ApqőU=!Gb(Hb(D @n}j5D`e6 * q!?QQQ@ 'ADf如Vǂ+f12x57(9;X=?A4(EGIȂKMOhQHS'U&Wx%Yx$[#]"^ K0dXfxhjl؆nr8tXvxxz|؇~^! J0Xxz8Ј8Xx_h)CH8! X (  *hhH(ɸLjX(!,}}}{{{yyywwwsssqqqooommmkkkiiigggeeeccc___]]][[[YYYWWWUUUQQQOOOMMMGGGEEECCCAAA???===;;;999777555333111///---+++)))'''%%%### ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffbbb```^^^\\\ZZZXXXVVVTTTRRRPPPNNNLLLJJJHHHDDDBBB@@@>>><<<:::888000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQW.^nQ>p#bE։JPC,H f$! H|rp4 9LC6(! 8L2N!toQ%X LC6(@Alxx mS8 5 6X@0:|`Ó !$2S u(71L!84{;#,z("Z*10;@AF_7 C\X@A@CPE54 eส8 rhb (5jg s:I;a P= Z7Ƞm fOP`#BlU FC9`J& 233Hqw J8@bP2%T+#X0 U|1 >A4q<xFmoH! (8b+JT@ F = CYEm2Vart-9P3I jPI|-*V `2 U!(- PC$u@4 CҐŬ^PZ/Pb%Zdc>V2.3ͤ@AL =} C sxW"pƙXXp.X7P PT0 3 "Wi/:c (AQq"GHTq4X~( ,! 8r9!A nP%h~Rd!p .p  p LxUb0 Yr0 p* R`Lѧ@g BB@ q `dD݀req_yN m p2Y X6L fe*+I9!fĹ ) ٜ\9i׉ Cy)Y) ٜ繜陜yI)^ Gpٟ:z ڠ*^ Fpڡ ":$Z&z(*,ڢ.0ꢗ4Z6Jٛ9";"=Z"?:"A"C!E!G!Ij!KJ!M*!O Q S U WZ Y* [ ]_acje:gi!,}}}{{{wwwqqqoookkkiiigggeeecccaaa___]]][[[YYYWWWSSSQQQMMMIIIGGGCCCAAA???===;;;999777555333111///---+++)))'''%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnhhhfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRNNNLLLJJJFFFBBB@@@>>><<<:::444222000,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQW.^nQItDG1Ό4s88*>81 (C.Q#HPgHe64 G8P @q h ! !ȅ"Mnj̝ $hc*`AD7}& Y7T $TI%A9]8 "3\fЁ BD# `G(䤑G\r]'0ɱ^Ȳ`0$#/v0缐`2J+;(RLP6Tb@@^lЀ(p4 F}ԱF _q!_T'G p pE.ƌ,&R/ 0,(hH*ix3I%$X*3p8cFN*N,X-v 9Vj*F c%4J$UGq)8L(C8.868渀.cQHL*@E++rK'GLA Ѱ2G8!BǘA:tC:jS4ˬ@tq*CHa!ȱLiюg A(#2pG!p4@&@ fhBA,"cЎyЄRq=DFtFZawzyA:&LAB_ (4aPsPсL@(_CX O".;#Q"CgX!qQ*>Q` .#qfI PDvAw";zSC A l Jfu,G5Z1K|!9H1 @-hF%LF|> C 0@ fۘHVt@v%-FK bZT<^ AvDQ pZi0by5ѦbAA"0 1u`3bF+l01f4BWqB0ta6[ PjG`' 0^ N Ih *,6nF^jrđ!N  H(W_r,&Ȥp"E\$!DWEd!?`,NxpATAئi w!\G 0H;ܐ#@ 0 2 ,a$PD}G3~cK+@+׌Ԁ 3 q֑(q`1d0c 2x!G A q, !j a 9*z"}wq Z@J ALr@Z 6r ^8Ib;rZ A Cgg" $ )HQb3ErY1( 0d!ٰAhfdHKMHJg!`OhMKHȅF@9(1H)h"†"Bb ‡"Ha\AP8Xx( 8Xx@8XXp@؋8XxȘx -ЌȈ!AaVA'㈎ࡎ/ÎY(JaaGIǏ!C!,}}}wwwuuusssqqqooommmkkkiiigggeeeaaa___]]][[[YYYUUUQQQOOOMMMKKKIIIEEECCCAAA===;;;999555333111///+++)))'''%%%###!!! ~~~|||zzzxxxvvvtttnnnllljjjhhhfffdddbbb```^^^\\\ZZZXXXVVVRRRPPPNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::666444222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K쨱fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{t  BD0A^`;pCD Fh (DЁ* W Đ6*0(48ъQ<HE7FF8"*P(\A( DE٥IH)0 Mt`$QA#. \"(  z(3>B#C`Hal9FI@P^A >Z@@ w4HqAn"APF؄&QԐp+n|# A2 ?HN ;.} h!P$ ! ` 00NUAX !cV kHȡ @uPB91ԡC{@FAJšh0`(hBEPdQ I!O*@L8AI@rjnaFh8e 1Iq,6[y m1"w |;H 8  %3 &RhQ\}D n0232WV@ x`F 42 w?@UMD ˆw.C[`T#Kp:i |b'FMr w P)d8v _IE jbayƽؠ M=dzdhh1Cء.cqpVr Z0@_ U )sCdI(2JR-kM ,3RrL d wMT< a `nIf7#DR|3DUwRAw QČ;lX@cBOv4CzBMb؅8f艘#ctC~ϛs!r t: H R7 'N\f#5vbkw <ƈ'Ae!(SZpBS vP uB`q/0 ǨR4L|Ȉ딏e AVa@ Fƅh(aDP4:Y=n^!s,Wp`rw.>wǻ^1`F|x?>><<<:::888666444222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KlfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{t` #f)< y8cG#:4pf,R (Q b,đ a-[!^10NE!2"J-L'7`0b@2 H k $QC>&UP4("!E:t(1:** d$%#¸F_̐*#p`a .%P٢Hnt%=t2)M`3،#Kܚ8FC*,] #6\ * ҃?x;#)%%|.l0N7c$bFz S,9`jt8X1#\E))@& ZgIm@!"ݠ!u4BnpFFܡ<:T @ 8M { ޣ \IQb؂/.G;Xk  naO@"ćOx ' 1 A EPA RW.X7@ YH ]<4L q@{Bd@C(jh#  @7xЃKXa aT{j+PчF9pO6"uE I2@Ry wHH@@< "Vahq]H T!- r2p(B!8%X fС w0ptHa0;P6Ln #R1+O#C@\`#9`B`F<"GWsT+d^6 uPp0A * 툀 hi O/B Pdyp*T@ P 2ꢂI%Xڥ kP 9<(‹o`w ,F ~4Q%I9) Sx R6  Vzf!$QXA̶ M ЄUp#QY s{0. b 9k:D0A1#ԈBC(Ô  )c 9@ !PGv2TF\Er]y* "uhGb&D _`<fp}DNbrxX}yϑ@~$4VȑղS@AdT뫗4ȡ8@\b`C!9뢌xB!OK䀣9vA<⃬}N*m Xuy2ad EH}i Aj$dˈVKކt&L4j J>Ⱥ:f!F"R1߄̷Jv9"@M&}4+D:3X1'3uXBx@y"6LMM* ,B oy2lƀ%WwDV#J @CMa/qB~ GOS s 0y,t9tSaDxQ+/.ⱆ}Ke(DSXEh9-Qo;"kWjp>><<<:::888666444222000...,,,***&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCytbbPRfBl2ʕDؽ{f2A*L鴰BQ U*:E؅1a0vfrTj'+񰲺qB;g8N;8sx>^/0a@RL :şVE#H6гL0U8d@T @8 €VԳwK;T( <TPD<у+dJ Ӹb]bE5p,I9p"}QD_ hҍ (t%z-)%y4\=\ 9*J6+9d.^r 储AMLЈv! 4 (@CL!ĦE BLI+[x0+/:BJ,0-`, ц"+X 10#l RM$>#,`n1RFdL W`\tkAAs 3U

    qH/bp_zqG0=dgy'u}1 ! M0KpІvQC G`m qzuЁhFPS  "$;PC%!tX`$w p!{` ̐3!2ga$jxu|yiP qk0*~)q ăp=M p* ! rjqg/sxdfrak@< a.aX@a wh{xj1ۀx0!ɸaxs@BW0Y=XxR)C4yvm`!  W4 ha;ь  6D`xHc wRQܸi \ |1A! 07PHPV,8SaD! ",6jA!"ْHpp`DE[ixR5FV3IAX) cpo0WI@0t iA |A[PDX1(*awi@ T9+9D5A@ EdɚgٛwY{%sy)Cc׉㡝ɝ y8Y䙞z㞎^ Kpٟ:z ڠ*^a JpڡZ":$Z&z(*,ڢ.0ꢜ4Z6J9:z<ڣ$"HiH(ȤI S)QJeVXS꥗ W*cJ{ic_bʦ`^!,}}}{{{yyywwwuuusssqqqooommmkkkgggeeecccaaa___]]][[[YYYWWWUUUSSSQQQOOOMMMKKKIIIGGGEEECCCAAA???===;;;999777555333111///---+++)))'''%%%###!!! ~~~|||xxxvvvtttrrrpppnnnllljjjhhhfffdddbbb```^^^\\\ZZZVVVTTTRRRPPPNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666444000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K쫱fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vr9߿n5:0&FPP>jH1сؤoe10X+a"E)0 n<+ωqN|B3 @LGLL9__adAlCLZ& zb+o< "0c&XG @#2+sXJ<6"A)t nȣWS}1+Z Q+8D3TS˨ӆW@ц:X&B|1D^L>ō҄:JY0Q1:/ m2@P,HXgd;T+BMb P ᢍ>+P@x@3\hWMD-0`+ Q$AFBc@dц,m:4 5]a(KFB#-.4r';<8R>3 7 D6cJЯ%"mh$ϷA.A[P lJ0!*\K"\E4<1 IaJ {<8dI38hLd;b!ɣC8JB_ Tdx+C%(GApN&p8FFq<Tq͒I;Hyh(;A{T7X0%/4F9,.jU(4 N-#hl@B,WSNU!`S %@i_5pro9+bьC,9p.x8 aS#@@ )3qW #w`p$,+, nȡp3EpF X4dY"7ԱHPBXD 3,"" 4$=p7ء(hD".-D H{ pbB, L!ӄA$l8ġ /aI'`=I\H4u> pwd @O(bfHf2#DB +R GV -Af uXA4x5@]  Z #Dšm 0jL E1XJDc` $44H$(pD6 ؐ.6^ +`PHlO`@p)Z E,(.U5%e#ABpt`}hW@/`C"N'18 I~C: zQ }`CP K NC MHa:& Ab ZUYpq;x(s#! QA` ZFhl)ƁMa ;(,\@ j2䰍$0"NCa3\"W$Ʊ'f[5~Bā qa *Jq'$@A 3 } ЖT"W.HCR @`TXf0*mQP"p^(0In`@<3[`-(+ġKpA vXQ҅'8"W$ 0 `CvAJ'B T^ /] 1B~ *#=H"$ P""A3Dxjdh2C6&e$ .ԡJT@,aPB p`B <]5kDPW|AD@btȀ p/ؠ A nvh|} f@#v{oBn[ $ ~;rָ7 "lDd2E`E7 p@ڀnQcwP.` H .QקǠPmxQ 5P9 SA0|D"1zq{ CL؄N؄s01[pg{ S 00 00a OJ4 ;pr8r8j;SX9ip  #0 c awQB'C-#f a GI@ U <Rmd@ _~& sa 0mP0 $  `t Dp !A 'y |W:I Ҡ܇]pm&=0- C # p 0p{ D1 (1 _ T"q8ɠ  Upe L#{o@yASQcw@ & [`8_?1q]yFD  [@j:$ 90_E70je~ Cwmp*= } `A 1 |=q k0q3t ;@d3{Cp;!VzkPPà94A C GAqsQ ؐCqV} JaTCDhAI^'A19ц1iC WQ[cT  FAџ::iàQZj;Zj%"%J8'*9) +$ڢ0z2:a;ʣ&AJg[JLڤNPR:TZU Z\ڥ^`b:dZeǰjlڦnpwtZvzxz|ڧ~:_ 2pZFA/hj1:xZjJڨjJ* ꣷʣj:!,}}}{{{yyywwwuuusssqqqooommmkkkgggeeecccaaa___]]][[[YYYWWWUUUQQQMMMKKKIIIGGGEEECCCAAA???===;;;999777333///+++)))### ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffbbb```^^^\\\ZZZXXXVVVRRRPPPLLLJJJHHHDDDBBB@@@>>><<<:::888666444222000...,,,***(((&&&$$$  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K쨱fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQWIp2ax2K0G3pCpB c#23,,8cB5ި;H&I{D0r!l c\!Q (L)!8<4=0 =8QJr푢980G @^駌wH@ HpAP)s͟Ɏ #OÆ8v!Plά'9BgblR!@ " LL/LT;qƶRڵNV N1R$ p-~BR "Fp2<3ekdǴ -wAk0gBN aA O@@ ׷8`N̨9PZ+P'9%(dIKÖ) 򟅬@%\P qpq+mvR0)hg%ʹ5P [1M!< 4NwH))K7pӂād1L% ޙ|3Q3 QlFD)G4D1˝Î昑 8q4-2 @(oLWҋ `m 0a$)蘄8 mЯ X-B 6@8b14X& (9 $}b"@9(a+:1 jbdi`'H@/ad[:l ?@*4@ Q0RZ2 9Q1pꐍD`@ W90 2"b pAxr, Nbx<Сe3C&Q*Ѩ:ЁɁ)=x` 7kd}PNJ0J:0h!IgFsOH(JpsTC* G9 tl8DMAK)>t@r A!(I0 ~(H7`C5U$b 0+ʡS<2lfaZEtY&;xP13i`Q䠞CA@AD#4o( DPءp,B7ؐ$p0c\QCn@$9"Ca@p@~?jCȈ P=Q0ȡ4# @+$AVBnP$a ?R3!A4G>4'@GBk[%8P; qHpFXQgdc,v{`2! I 5CXF@mBI;ޚ`l<4af+86^Hµ a=&S@F4P<n8&(OAR`!#o@Q=dGv}#jQX*%WCՖT(/$X\!Q6@AO)pAR9hoU| J 431 (3PB Q:pYWh֜ xQ `7!R+Rp p[C lpߗ)^aq6Ddr1(*ႚ"IEa5dт:8=(?<؃CEGhIHK(MOQSUhWHY[]h!_H!a(!c e ^1 Il؆npr8tXvxz|؇~8Xh^ H؈Px؉8(g X (  h8ŘxHјxH۸݈!,}}}{{{yyywwwuuusssqqqooommmiiigggcccaaa___]]]YYYWWWUUUQQQOOOMMMKKKIIIGGGEEECCCAAA???===;;;999777555333111///+++)))%%%### ~~~|||zzzxxxvvvtttrrrpppnnnlllhhhfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666222000...,,,(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tQW.^nQ>p#bE։*NbC2PA!qFN0 #Aģ$ݠ D]ty <(E4BKoYV</X1]}:H$7 i$CX s8F9b(ltN>@H!j +BZFA `CA4b09hK$rI ȖA"2; UǜlA0Z; 9Q\9oc |j~:*h:tN@+ oL\ R ;H@*T%`!s[)#ҬJ490<88 F! , R]q A, 1H.k#bJ(c6$MԞ6sn3RF( %3H dc3n's&+t_L5"\1JΠJ,O;n.X?dKQ@x$%+̱%YD%405`B 9WL1N- ohࢿI3 `LCI,] P"R xG$` 1q8xx5°\_<@%d=y@we@_;At( F;1aOXF2Qn|R:Px@\ Tv-T^C(8&vK%m%VE"԰SFx <ȁ⑂^ NTG[O~pҌdj>#Rz@xE&P ThQH8W(5b1s  d!cACpq5E!Dt"x*RH@$ `.T $DCI`N }'Il%= $osC\(8h@D Ub;` @hIh %YJC6A3 ,XXͪVxaSH!'= `PqtZӜa@>Q%$g`ZnkIsphz mgD8OlA  Fp2H((ш @_QBĀ,Ј0 }\f `f4lTbwAx,x(OXBi 8@D9P<tPjx2)CĐO6W>.,9 >6%ؒO't!@p 0p!TVVb0b/0*9?K:^ 03<"«(B|?"Ƈ$![¼4 3 =D_ B}Tw=daa<" ϽwO|QhO;Џ?} Ͼw{p OO-}vs@!GaX5 ȀV!ARaW!J#G%H!,}}}{{{yyywwwsssqqqooommmkkkiiigggeeeccc___]]][[[YYYWWWUUUSSSQQQMMMKKKIIIGGGEEECCCAAA???===;;;999555333111---+++)))'''%%%### ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddbbb```^^^ZZZXXXVVVTTTPPPNNNLLLJJJHHHFFFDDDBBB>>><<<:::666444000...,,,***(((&&&$$$  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{t2iܡ CŤ@@AJ 8 y8PY>L,;X`N;xP , EF RG挡>CMr|c~?@@j`ӄ9  ?QE!3A2x@"`'$ WfHR]+ (-ÄH gREcClCJ!:= hA:l@(bhqfC!D u?؆ V(* 4p 1 P@%L'?8<C|N !I@*dh(@$ :dO`;09 'L^0T 0@Wo`s$o@"^ ixH Ga#PЊa T,DQ@! Ex`PCG87`A/I1XPQ}@ -#h4 _" 0XP;D #H k0! Dp;L3@p-q?aȱF G,!;", &hB LP XI3E 1C R@%`B"PJT CH @ 64C3X C@ XMhр4D4 ` sli@3P4fAN m 5Por M$*H#\p8ѩ&@"BF<0XBpNv,󚷀"8PE6TARP `IҔA%lC+ށP @@"PhXc ` 81!j3L-MJH%XD#@:zA DI* M0 n5A"h- C`{X <%d@ͨ(dbHgqR@ 0 VHB (H{P 88!H" , *X .tK]?trG,&`mj DAġZa7 RX Ep@hYr4Sc7 )XJu4 /@ 4dC a(-#+f+qCT.H#0 g ELL\27:'c\3:m|CPrd݀,+X*cr A Xh`\Az Ё 6<膞MAywhQTs Bٚ i8Hq 4qM a PЀLYT z2m`t>%LcȠ@58<PE'oan7/jBh $A7><:y7==pF! w=osp!0F|` b0Wpx_4hѠ @tPixq1D06xkRr>XP"{&IuKMwOhHKARhvҡ[ȅ_!Z1XhVTQȆOMK(IH{bgV~8XxH ׈8Xx^ HЉ8p؊8XHzx$#()dX(Eh!H! Ө ը*(X xȍX 8h!,}}}{{{yyywwwuuuqqqmmmkkkiiigggeeeaaa___]]][[[YYYWWWUUUSSSOOOMMMGGGEEECCC???===;;;999777555333111///---+++)))'''%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffbbb```^^^ZZZXXXVVVTTTRRRLLLJJJHHHFFFDDDBBB<<<:::888666222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ nEB[ۡ¡sCc0c q8gպ8&Uk[A+}%73XXC9(!2A0QT$naHr$XYҭ8J:2#(\((R5 ِ"A3Jؖ*(b|Ǭ"ZUBf(*H1Km1jڦ;vh fLI)t̅`rPN&M EBae'B@Qc]_.TcZh Kzr@!>m?|= 1WC"I,`0 A (IwAKaU†#P: 5p9<4TܰD`AOz6@#9x2(++́xQal%XpL/mWVsoqwx.`t f\6Zܒ p@G^? @'=:xepDofChPp 6 |"3(;h8F%9hb) pc gX2z6+H1p Y,d|㖣  NM +` 0#gh 4\P Um QMP3@U478G:Cbxe98$ @b_1P]suC#= ƆlJ6 Π\$`-$@9XBM~=Ov ">I8 P-%ы P*^ O__2pa0a(;$2,OÒ0(UxF`b .$qaptU2I? \g8AB 0# xLe(A?);x7F` -`Ht 2 $q1@;~h80L 9`kdUX("  B@h;Fd:~mX`F6B䗁0+dZX)^`HG`jA{F#j BƁH)A@.9Z!Lɥfqܘ-[!{.LQZb >(zeOb@!HvTKI Np2J"`@D1-I: 0G:8 1H% d# 8@faȀ2R@+{<ϱ "Ïh  9  088{jAGP-KAeA0MK 0pD a ܠI)` f u/@p O x g ;{pf4 0 G `d 0c}Dp`@I`U;e"WJf$'II%… IPGeh 8`\#fG@@kxh0 g$gaN` 0D#y㈡Z@w ܄*(‹ዿ!HaLjȌH'Fh6!ȍ獶Px蘎긎؎ Px؏@y p@9Yyّi .0$Y#؈֨Ȓ@(HhȈƨȓ(HhȔ($SIaND!,}}}{{{yyyuuusssqqqooommmiiigggcccaaa___]]][[[YYYWWWUUUSSSQQQOOOMMMIIIGGGEEEAAA???===;;;999777555333111///---+++)))%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnllljjjfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRPPPNNNLLLJJJHHHFFFDDDBBB@@@>>><<<888666222000...,,,***(((&&&$$$  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶvѼ!-wVlGyʍ&KMyҧaK~)CNE=!3h黚=E׳_8 YsWZ^=eC9ҞPЃnQS.y!BIhs^mhP;4<Nt- NY6Que MDX`!B3TKtPR!3OV0`0TV;1CTWUQChK| pXŊӜ.U0ڒGN9՞!:X]Q2RU2Hz[ĸ86eL5;hhW6. %̳$RJЩJQCMTthR~zZ. C!ή ]6D5D`COP-pNCΛ BT$mC΢ iP> , ,~ɂECBӒ[Ь$L6 1@jq-ˏ7A8cU0BThBU4B/a/$ G3'v+CTmBjT.VA S2,yrX 0K #*GX ]+B vchR m1W]7T tkE{L&⑩/J;+tC:f8MV(% Bt@ꕱqC;DX6F4 [FpGYDA{64R}MM"ݑ36$<̽fW H N⑾ifq&Ȃ>7"p ;`΀ ؀ &#D tCԲ>p ? CEUc T:̃ kK m" $_`@@d' O٘9 !Dp 'gB<X&/8 ⯈ P81ytfT3 T]C 0huWaGb '@'$ nȤd3rn33 p9eW╴x<*@0'Tc}9#NʡseYsT9iC@z4W|<4qAF9 sA :`E`\Y blNA[FЈiHGCIsȁyUN6Tb EvP rX2 S"  <i Pd@2QdhB0AB&D.0@q[xAށE `$i ؊! HQNpBx@%M Nc^@̀Lh 4 c z xj"ei;ÅLĐP1 J D( 1'sx#b:Ah xb$%g^J b#U'ELʄU܂_@(>Ѕ0X~yJXp~2pEē0Z">:~T5@5HĴjPCD-TS2D3R%[#<@B1GiRN9ء8@ zY @Pfa6` By%a@F-0 &0O@` (܀̈́sx@Y T MLc Cԡ(2tSqŕM)R p qL< o*HKbf&|h;w8B<@ApPЎ< Ba"a@ 9.E@dDc 7MVCPw d` B0&@  ?UvArZ3pRϐx@P2s g;On 'u N`E Po`gDQXIvl@0T׀08ܔp @F0z{xyЃ2%fgGQ{m!9! BGt'LHHQ@ b #bNP" @r($pbp `zp``R0@$`PP卟QhBH1pRQxK!@98Xq E!A)ᑆ ً#)m%"yĒ(`294Y6y8:<ٓ>9 B9DYFyHJLٔMPR9TYVyXyp@\ٕ^`b9dYfyhjiy .po.ItYg9>Ǘ}iqu).I,i*'%ɘ# )Iiə )Ii!,}}}{{{yyywwwuuusssqqqooommmiiigggcccaaa___]]]YYYWWWUUUQQQOOOMMMKKKIIIGGGEEECCCAAA???===;;;999777555333111///+++)))%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnlllhhhfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666222000...,,,(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~uC 1{CyhA,13Π7w耯R>Cz 9=xßI- {Á!AQ oBaz!Y9E#oQP- @OC&*!ELp1/ΰWK"dA%2XdhT3s ~^ Q pE L `06:BVtfeD@ ^DgBI:d&;8ASyDE@S,Ð ,cEG*Ѳ a>[rw@"0tƎp%P*/Ap'O("%i > ET@@ p'O[`Cޡ9@HG4m ;qhG4>9l P7Ga0 6!:DhBt4@ָ$2qC(DV&QV9xF;a .##G<0SU C UB/Ђ%8b PLьat^I2a9MaQ,` V+P/ҐXpCr[]2WX0T"Ȯ2_ t+q`\~zO`,q 4MP(.qD ;n`8#$Cn2@z*`ȡB|] `3Cx+p#~o5<s_ls] ` H)桎ph}@$rb) A*Ն~9t+x CE,!5бH|C `[C r@1LHhE$T U"@"~0$7z-*7)⹻A~v(8iH ъVPi޵Cc'CA/QWtr (x XBLV!A @"#QJPe(yq @aP! `@ .0{HP eb(:Xg_o pTƈhE!X"明Aa1؏y) ُ iIɎ^ I "9$Y&y(*.0294Y6y8:^! H@B9DYDJLٔNPR9TYVyXi\ٕ^ɕyaIc)egٍiɍmo)qiPs uiwIy){}kɗYiɘ"!,}}}{{{yyyuuuqqqooommmkkkiiieeecccaaa___]]][[[YYYWWWUUUSSSQQQOOOMMMKKKIIIGGGEEECCCAAA???===;;;999777555333111///---+++)))'''%%%###!!! ~~~|||zzzxxxtttrrrpppnnnllljjjhhhfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRPPPNNNLLLHHHFFFDDDBBB@@@>>><<<:::888666444000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{t(N>B2 \ !pP,vG8}C7>6T/VdGCCT,)Q}qa"M9ndR41+!x'pNTF(bheBBaE\CȄ*¡馜j=HP-TPƠB#SKExAni.ʁDDPjrXa JeKCS|ʆ7ՂhG:j:ыPj;#Vnؑ161=\$ړz.D$;l::ԆgJK5 - rAGҎ &4z&+L*+ t EMȤo^@S} ͯC;ѐdh=,RC8\=XWaT@8M!"85ܢ>rp!q ] `qPRb *bqC ȟYJؓ40@6a`E,\h@v0&3a ȅ`\,{p`~5"@5dCkI/ ` (FЧ6$:1#&34/.P P X$< QrcU@%V5B9 2@ !bF,

    4ìC@VHS8THcsc>A? hD#_c |VxxEf!Yu (#z.*+h fY'*Q-͚r"c"*jr6`q^ *,Lbc,Ħ Dz\f ]!☇ ҇,<&JGZ20DMG! `:B/bK 4c٨8#C`Oد$ejT:A̠5!)1g ]yrH/mBQt5A!$ D!@ CH5o|7Y(YQC<5REدU@B1"Ԡ5 X:t T>1T(]=T==߈ܲ@rɽF ?"?@_` 2YVey#qFq;BAH0,=BH?1C+M1x瀒r88rȁx@8v!#(%H)x+X-(/13Ȁ57x9H;=?h%A$C$Ex#^ IL؄NPR8TXVxZ\؅^`b8dXfh^1 Hl؆nppHPvxxz|؇~8(VG"'hXH;艟8x(~X~8|hx!,{{{yyywwwuuusssqqqooommmkkkgggcccaaa]]][[[YYYWWWUUUSSSQQQOOOMMMKKKIIIGGGEEECCCAAA???===999555333111///---+++)))'''%%%###!!! ~~~|||zzzxxxvvvtttrrrnnnllljjjhhhbbb```^^^\\\ZZZXXXVVVTTTRRRPPPLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666222000...,,,***&&&$$$  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{t4‘ -"S1r 5h QIf8T U3G)+)7(oDE4QcIq͚lp0QDh2)DJЈP3tΗ]d6 ̀ 2Wܬ՘TF!4v 2͚ 4A2P{D%رLt-rCKI"E:_a C& `)QJ7Ϭ)J /0SI20)H#: ϱ N^Voi0Ͷami/85H"GMƒ  ׸b\?8B" ]JӅ!Ox˖@}sAD*v)E>b\(G N7@ xf4 $:ְt@MЅ$46 CjT#t:Abeh H@I Xg&,VJ3dPG*4x*oerA2ApL!1ȡIa5"HH exE qrC + AvBX()4ӝ9@/XgI D'ēnkY ;H8&U5uD"-HBȰK8"s E.RQ\L"L`#Mdn`J0"Ѐ! B> p1 `tH/f?X V0CBx 5[8 6|@C94 B P':*Iq"vCA&@˰7 Xk:Rfy)Mp&A z C%Hh4 h"p)@ 6(e`*y+v 0N8a44PWAh qE.V#:|b\AС< Љrp #729H o+[$4j!*4 @ j4!+n  Ѩ:T$D2HAbpѐ mQ 2>w8H  ` AN@u"І !5bGQ܀I4z!i^A XAllXX@6& R-@Zd bX!R̠V MXEP%j#ꀆF"!Gu49=I0ۤXxO?hX @A ]27-~kVQlL+>Q0b^YC qDHInGn)F@WHzLisE:l[BzR7r92BW=Ws"X;>vdGv{[{~uWS;t3J<otBG<s9|$s! 7{GOқHWֻgO+wAO;Џ}J)J ?Wrk7Տ?oӛT[R&NA䁀ᡀ!,}}}{{{wwwuuusssqqqooommmkkkeeecccaaa___]]][[[YYYWWWUUUSSSQQQMMMKKKIIIGGGEEECCC???===;;;999777555333///---+++)))'''###!!! ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddbbb```\\\ZZZXXXVVVTTTRRRPPPNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666222...***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K쩱fnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{t8X<\xD Ԁ:6 v MXtA 8`F|昂Q1A1 CiPE(pG&b H^:p'8G({T &𘝤A1مQHa RZC"lH!lS\t8Nl XR0aBFz7 `ԈwXCx^5!DH;%x"d@ c!pL0aWt'mRj$`QQ/*((pox #$(9q t#A"u! &DnP*dj(qc^(* >HjL@:N>H#fh[ Iq#SrA ,>& l!!J<@:8,4+ڐ#'dARdXpi)UuBPCAy6Q cSK*A<;v[8:=.. #@` wHn0(%xAi.]Xm"JQl!>@;8otAw0)pHx> pmtf3N;?!T୤'rfeAF2t]Db0y:'3uhU^WXcuwU_{"oBms>wKw{uwcZ)OwpGvƫh%?vʇ_|5ugW}E?uCMGUtgOϽw{PdOO|ЏO[ok{OO)g}?t7|;wV0AR! gȀN>J!G큁Ia+C!,{{{wwwuuusssqqqooommmkkkiiigggeeecccaaa___]]][[[YYYUUUSSSMMMKKKIIIGGGEEECCC???===;;;777555333111---+++)))'''%%%###!!! |||zzzvvvtttrrrpppnnnllljjjhhhfffddd```^^^\\\ZZZXXXVVVTTTRRRNNNLLLJJJHHHFFFDDDBBB@@@>>><<<666444222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+ ?[&ݸ.hbҔ%ʿm{>L2jp@X$dx;܅1]061ڢ<]5`b6ו9[υИxHX);\)p2& QFG[M #c؋-]!Dx#Q&*+-Äb̅a#aM$ؙ*`&$%cSCᰡ=fpCP.dQ)h2mCR4%DMa 8qE;&UXEPien9OyҚ6},n<Ǯb:OPaaH0d 4ad (4!1 zPyHA@y.HAtPqf ~Pnpז(_!58c 0sHEP @KH}8@;H>(@juⵣ @D0D,2eHe#kaHЂ: 6"HP0P_b`R)"A5"x#N 9L&dd"5E>8D E;&ab؂ @dnUF@s(hQKC<JIls H%t "X # F"^/ C*~0u5>pP"4"sHA P lp_ ]eH1P@ X(7P, ,A &Іk(Gxd\(o&2FlӪwaA ؃ F$kU`;9G"ӆ / ź !v9'" AF XH̢qHG\ X 6whD6GAv` 11ҁ LlX:/(Ђ%fxz16ء7Ra,VH\Q>VAp1)A'[Bp!I $(DOaԀA$! ÆKXCFGfMfC#+P hCF!bcա %| V> XG 0 @ | `0QrB @A}p6{! Ё\j@ |p Fi g@ _  `~?@DS @ ( " }_<0D |Rp+T>~0t@0nP  p^ 7r$F !G% F2 & 7o-$C P h @sF FI$HwU ?2GAj {E A6Tsp ؑOup74AKDmlopyzlPH pb D0 PǑ1A 4 VC2 {{%0>><<<:::888666444222,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KfnE-Un6+.QvīM~0dSKpVǪc@eˈQbrI_g@)b+Ak, cƌ5Ċ. Tfzy!R#>n*B FL@̐{C;`e]3W`! 8\a9CXQJ88 -xAc:Bl0/R!^]4 Hw)m kˁD J{K*#Gb8TTa crk焑1"J,ƒ`@ U+?tCYDIp!Fe&5;1TC(,6Q{ 4tjt T475H Q ܀AX3C:vʸAO# !fp J!1dAeF 24+Ӏx$fÈan]JL 0FAp4(P]t$G5/QGj,HʐaReUb;e*P3 'Y B &EXJ&LJ0*]ֲ̡2h^:XCLC*cCaE?Ezc0g|26wHb7"-XqX*heqhR/У .vWCL 8#egY'.X Č ! @ +4N{Z]< p .<~/ BIr:̮!Ȁ=Q؂@W v !H F; *ֲsCp8n& D7hU$X ^NJE1=`͈q<I?IR:+ZbpChg X<@: bV4w N`nJaAx [s8+Hp~ 9L`hL (A ӲZ18bB ;p܄B!GfV5L-tP O`H<X 9 1::"8ENK*Ȱ3K&\YxrqTӸDuܑLtC)< a xninZ ^p"Zu A*GdX&@4̅sD1*Pm50B ,%VPupool6 $ Lb B!>`D( XUZ k'N,:M+PH5BPit @$! icF3,"8D`;d#:3Kx'y3 c9p읡iP~+N p8CZ<:І#ex" Ҩ-d5JIH@޽!w5H?F@ 5h4q W# a fGO}& @z ؀  `` hf` "! vkPԐ `Q =LaInX`F0 sp t@(l @OG '`6 {kei p YD0r@V8SrfL+P pӐ  p;vZ5Pip~ (Pt@ ]@ bP }Qua` &`P%gP p p 7 P5PkX69t@0 . 2   ˰ nQ4SPh3[0c ; ` @ 8 p 0h + g3teP boVqm #q7Pq;>)46P(`o - |` P    ! rPP`]EGe+P ` T@A9:P y b ppsQ8@|(`yP GP>|A(w~  pP#@h oP  a0OFQI+O L0]&,00m  %v17q 6(`Ppz :pc{`%!P0٠ 2P q 0cPl u `PQ%/ ) p $Aιb W5`0Yxi3D p`j1AnK Yx{@ bِMp ߰ A~A}0c)9f0YaR h r )9c /`n; P:ef q@+ )IU~Ɓ׀:P\:clJp3rЫ'b+&ɪC` !8 '0`Єߚ &x&a$t0J*kzZ5 0 ;ZHq{;Z۱A #W"[ru*[,۲[25Q4{s1!1D\G I NKۍMO[LQ;SUW+Y[F۵`cegikbѶnkp1tQwvK{}{^ I۸;[۹;K^! Hۺ;0[{ۻ {k[; ۵ѻӛ={[;۴Ỵ㛴{K˳﫳{[+ ۲!,}}}{{{yyywwwuuusssqqqooommmkkkiiigggeeecccaaa___]]][[[YYYWWWUUUSSSQQQOOOMMMKKKIIIEEEAAA???===;;;999777555333111///---+++)))'''%%%###!!! ~~~|||zzzxxxtttrrrpppjjjhhhfffbbb```^^^\\\ZZZXXXVVVTTTRRRPPPNNNJJJHHHFFFDDDBBB@@@>>><<<:::888666444222000...***(((&&&$$$  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KlfnEVf˦[6]8d2?. LX9Zx!l,(r3 Vˋ#’+VT` tmDo]FGVˆ ܢE낷  _a90%|dy$ nUA/G,\b@`IP2˅FX4`6H;ˮ!d}P?`%a!oAeMDCu 0SC CFژf,韂;9ǧ`2d?E*Dh;pAihxQJjh0$`5_ JJ֐hU8ሇVV/0"$<< ^W ':u=>&X(GEe[x.0Ϛ@8A`ZtO!jҁHG[m Ѝn Z\vv`.A"qc.$Vp\( \@71>LRA\!m!xvͰ)M#Y mXC&ڸx݇!G.&d;!ЃDP 0nl"v9:#D@% mbdP1q68CSt[ [x0W!@ o0 EpBS>. ۠n7|7 Lrt@awgZp `Z4a @PP @5Bznt@uleo4gV6sPhb  ]U `!3B@/0P.YGL ) 80 "X*HrA|!u `rWY  l N0b7 [p-p0~ p`8@Q Zx0 0lW< &6zYt (@[YH0b@cp F A@p ahpu __5Yr )PyW CQYP3P@ 0 UpU>xY0 G h0n p`PZ oP]X* `4@`/pkS@ ? * tTXu >+XS;&V@` &0 SX@`UYPE (] Ġ5@XmaH`Zy e0 aX 9a P`]!%y 'yYts@ /] YpP u@ue0p)4viZtPٗU2vW+%~`Z {@/3ʢ] >=z`e[^YI%4X` 354``^ %Y3\JB &@ri*G8:`50t§jz@zԐڧ]m> PZZkEzzکT*:NQ%Ǫm:A1z;zګ{P Z(!uʚڬc*Zޤʭ 歛fqjk䚮:: Q"ůdj1{K  ˯k;^ Kб ";$[&{(,ۙ.02;4[6{8^A Jг>@B;BkpHJL۴NPR;T[VK0Z\_ˮac{e[g+i km˭oqs[u+w y۬{}[+ ۫{K!,}}}{{{yyywwwuuusssqqqooommmkkkiiigggeeecccaaa___[[[YYYWWWUUUSSSQQQOOOMMMKKKIIIGGGEEECCCAAA???===;;;999777555333111///---+++)))'''%%%###!!! ~~~|||zzzxxxvvvtttrrrpppnnnllljjjhhhfffdddbbb```^^^\\\ZZZXXXVVVTTTRRRPPPNNNLLLJJJHHHFFFDDDBBB@@@>>><<<:::888666444222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KfnE-UnB`]K.sJ@pvPPJScߔ~7Ͱ˅uh퉮!#Mpp\[d0̃Hr]SmE0M1tZ=#۰tرA&Ԩ{dyz7AI qgP؞F`_ah\AlAaA`F -F`` Hd!0`yTSXq?2o\C=(D*2xCB ,(`A=F VA3B3TaPtFl|foF6 @ aq"2tca'|mP 3 B%=a2C(pe~a< (0:HED6yZP #0\, QiPWa Da2%R@/%`vlY ϞW>AhE G,)Ǝl1iB=GaaPDiK @0M!y!MYy؂ aDa4BX"!K!Ca8iy3|bC%20aF ` `a ,F AN50"F\c] Q>U5BM?=P >byQ  M,m,cA9ha p>W6D1A/:JA90aX/܀5r#Prb,mS"EaH40P(k˖g фMm?aZ7P$rVf (@B"P# vﰀFE"EnRk<P|盇D05->[Gd@tw$@'"p:8 @T^2b` rx(Z '2L`01#`÷,29D`-,@@%Џ ұ@ܗmԛ\@TȅDq 0"ȁ1Z@x`JpeAUX@ 9(@Y`&6dY@+(XG ;#5va#,ȑ9/9vmժv0JojcxptPxjAp n 7`xOj^qujӐz/!>lb0k_b1Ɂ$ncwE VLbPC`/L`ENQ`!50/ oy0wDo!5#[! EB ^ J _`9S0  * A5}7 70 #u``uPڅ3% [DE P 'C)q Ou^Pj`/Ipe5 \q n`>@:5],V5[c % ep ; *9Tc[ڵu oXem2 p @`}jH![ MREgLcZ [p  ǐ|,PՙKj:^P(,У 0a[#u]0Q^\b dvpm*Y! N]x wgE"z3`eU >><<<:::666444222000...,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z K,fnE-Un6+.Qvp_'ěW Èȴ/`ʈ@3#0PX4\Ƽ"\f%a6av5\<ė芤yK1Xa8KiD:4h6+Y(0D#\U'O#n1Pn2;V[dFq0wX+U`s6pR4`"@NfX:slO1aCwDc^pQDhs'=V3T=0DhCڵa;%%vTvB93 >@cjN7sipB$1!dRaa0FOF)OY6a`)Wh~j^\0PPg]>œ4# [$h\6% 93P r/5_@`Ir̷y9 G!pX%E(byĹXAx` *&@.y.Ffd꪿ s?8 3ajvP_!S`SJ=\ f A!`шwܪfdC! A%@8A?8H[4a/, 0@h1@aPB LP,‡X$<_C :\烅@ C-J:!XDd$ lbhC(  8'` &!@J/ޕE``lGG!z)@C`^!w@ 4>܇(`<@)A; 8B^AK|R@DшxF7^s`#:f<8@/~pӝ3|c AD0P;'8 XG* *h=D?%@)P !'!AțF  A/`;jXEM @@-@Ḅ CH+/HI0J !!C;2FȡC],;&$B.Qf7 >ŭIy6px\!l 8x HpQvфv;`8LHH8AT(AT `XF5Lb8J1 C(88`B)O 6\}x(`dXnl),8,aV=5ཋ\ p .қm\VsIVhA C/aSËс{AH8Ў> D9<rMB;@ypB<2TE B†GTh)_-ҚA @dܹ+5ÉLB< X@9?49e!SPj BN'~V"ڋLzx.>M%#7P$Hg6sE- nhBkHB#YhAw`HX0Hr +2(= e   Έ Q4 @@p#Ȁwi;|# a4Q ' c*'0̀j%+ً'ْsH24Yws:<ٓBDY6qHIJ0єNQ:P9)QVY)9X|ӕ`9c6ebyjjmYRo.q HsIuyDw yY{E}ɗIl9iaQ #!\iə陆 yٚ PyٛǠyșʹ̹v9Yyؙbٝ 10Y)}ɞ{y w)uIsiqomɟjg e)cI`i^[YɠVS Q)NIKiHE!,}}}{{{yyyuuusssqqqooommmkkkiiigggeeeccc___]]]YYYWWWUUUSSSQQQOOOMMMIIIEEECCCAAA???===;;;999777555333111---+++)))'''%%%###!!! ~~~zzzxxxvvvtttrrrpppnnnllljjjhhhfffddd```^^^\\\ZZZXXXVVVTTTRRRPPPNNNJJJHHHFFFDDDBBB@@@>>><<<:::666444222,,,***(((&&&$$$"""  H*\ȰÇ#JHŃ/jȱǏ C(ɓ(S$˗0]I͛gɳgK> j(ѣH4SLJ*իUj 2*ׯ`z KlfnE-Un6+.QvīM~,0J†D1GƎ#W,2Dʖ3/ĬAΞCy4̦OWN:2֍_N,{vڶw7^ .<.m#O|yBu:m[~u;[{tH@cTFU@)J, #5pE7ELOОM;xPhɇ! hp R2-<76T"hHwhܐts(D1C CH*,!o.QWx7kF.р=`00@x v"h&@0A9$JTEC4@! q#@9)3JhPeH A"!N4`hFAvu &'tCB0$#" rC CT}d@A N n9.L±!lH%,xB^`(: 3d#p thH "B18O\hv:f!h3ʑȰ' Š AGXAD`G+б8~ L  `T`p9:'8`6L !kyl*@6KH d!  !,xЊ9@t) 044HF FG&!! @Hl0p!GxC(/$^YBGaԐfu(1IdOG0kx}dh4"1i5g$F0^zmtDb'z 3Q?gc.0d?{GҮy;'3w/r{D ;73޸7u⓽4w|%?yT,|#w_|?×|^ﯿ{>o{վ{>?O~yx%GO[Ͼ"OO~{FOC!8Xx s|Xqu#!hr%h'x+H-/135p)9;8P=?7HC;ivtools-doc/gclock.gif0000644000076500007650000000064707374262631015616 0ustar scottscott00000000000000GIF87arrr,0I8?»`(dihB p,tmx|0 H,ȤMx)ШtN,z;.xLv888 @/|u6|7wu{s21gy~z5r;pn~yq5mol£=ŀ3̨کɚ۸xǶ{޼A·@!q-Խj~EG.5unr^(HlҠEb1Մ紟\OQ$Bv%EJtUUj%u.]vY%U]˶۷pʝKݻx߿WH;ivtools-doc/gclock.html0000644000076500007650000000044007433262401015773 0ustar scottscott00000000000000 ivtools gclock example program

    gclock

    gclock displays and updates the current time with glyphs.


    next example program
    meter

    up to ivtools home page. ivtools-doc/ghostscript.html0000644000076500007650000000231707374262631017120 0ustar scottscott00000000000000 export from ivtools to ghostcript

    export from ivtools to ghostscript

    ghostscript (gs) is a PostScript renderer written by L. Peter Deutsch at Aladdin Systems (currently supported by Raph Levien of ArtOfCode). It renders to a variety of raster devices or formats. Do a "which gs" to see if you already have it.

    To use ghostscript from an ivtools drawing editor, click-on the "pipe to filter" check-box on the export dialog box, then enter a gs command line into the export dialog box. The last argument on the gs command line of a postscript file will be provided by the clicking OK. Warning -- double clicking on a file entry will replace the command linewith the selected file -- there is no need to chose a filename when using "pipe to filter". Leave the format as idraw format on the export dialog box.

    up to ivtools add-ons   up to ivtools ivtools-doc/ghostview.html0000644000076500007650000000160507374262631016565 0ustar scottscott00000000000000 export from ivtools to ghostcript

    export from ivtools to ghostview

    ghostview (gv) is a PostScript previewer for X11 written on top of ghostscript by Tim Theisen at the University of Wisconsin.

    To use ghostview from an ivtools drawing editor, click on the "pipe to filter" check-box, which automatically changes the string editor to read ghostview (leave the format as idraw format). You can optionally append %s to show where the filename goes in the command line.

    up to ivtools add-ons   up to ivtools ivtools-doc/gk1.0-README.txt0000644000076500007650000001602607374262631016177 0ustar scottscott00000000000000 README for GroupKit 1.0 ----------------------- This directory contains the initial release of GroupKit 1.0, from the University of Calgary. GroupKit is a C++ toolkit for building real-time groupware conferencing applications (such as shared drawing tools, group writing systems, group support tools, etc.). GroupKit is provided free of charge, to encourage more reseach and development into groupware applications. GroupKit makes it relatively easy to develop new applications, by providing many "standard" groupware components, for registration, communications, etc. GroupKit also supports several features motivated by groupware "human factors" work, including overlays to support gesturing and annotation, flexible registration mechanisms to support group processes, etc. GroupKit is an on-going research project. The latest version of the software will always be available for ftp from "cpsc.ucalgary.ca". Inquiries can be addressed to Mark Roseman (roseman@cpsc.ucalgary.ca) or Saul Greenberg (saul@cpsc.ucalgary.ca). What Else You Need ------------------ GroupKit is built using InterViews, currently version 3.1-beta3. GroupKit will be updated to IV 3.1 when it is made available. The InterViews distribution is available by anonymous ftp from "interviews.stanford.edu". See also the "comp.windows.interviews" Usenet group. A C++ compiler is also required, which accepts revision 2.0 or later of the language. X11-R4 or -R5 are also required, as are imake and makedepend. The FAQ for InterViews or the InterViews newsgroup is probably a good place to check about specific compilers. Structure of the Distribution ----------------------------- The GroupKit distribution contains a set of include files, source for the C++ classes implementing the GroupKit libraries, and a number of GroupKit based programs. Three libraries (reflected in the "include" and "src") directories are included: gk - this provides core GroupKit classes for managing conferences, communications, overlays (for sketching and gesturing), etc. gk-reg - this provides core classes for building "Registrar Clients" which are programs allowing users to register for conferences gk-ui - this provides a number of "normal" widgets used by GroupKit programs, including a shell, a table widget, string browsers, a static text field, etc. These could be used in non-GroupKit InterViews programs The "src/examples" tree contains a number of GroupKit based programs, both "standard" GroupKit programs and examples: registrar - a program maintaining a list of all active conferences reg-open - a client program to the registrar, allowing users to join conferences using an "open" registration protocol reg-master - a client program to the registrar, suitable for use by a facilitator in a strictly controlled conference reg-slave - a client program to the registrar, suitable for use by a user in a strictly controlled conference deck-flip - a simple GroupKit conference example, making the InterViews deck example multi-user cursor-demo - a GroupKit conference which demonstrates the cursor overlay for gesturing groupsketch - a simple multi-user freehand sketching program monitor - a GroupKit conference component which will monitor the list of users in the conference brainstorm - a simple brainstorming tool, where ideas typed by each user are broadcast to other users vote - a Conference where users can poll other users on yes/no questions and receive a tally of responses Documentation ------------- A tutorial on building GroupKit applications is contained in "doc/tutorial.ps". A reference manual is contained in "doc/reference.ps" A paper describing GroupKit (GroupKit: A Groupware Toolkit for Building Real-Time Conferencing Applications, Roseman and Greenberg, Proc. CSCW '92, Toronto) is contained in "doc/gk_cscw92.ps". An intro guide to using InterViews (meant to supplement the reference manual contained in the InterViews distribution) is contained in "doc/ivtutorial.ps". Building GroupKit ----------------- After unpacking the tar files (zcat gk1.0.tar.Z | tar xf -), there are a number of customizations which must be made: 1. Near the top of src/gk/groupsession.c is a structure called "gkProps" providing default resources for GroupKit. Three will need to be changed: { "*RegistrarHost", "janu.cpsc.ucalgary.ca" } , { "*RegistrarPort", "1500" }, { "*DomainRoot", "cpsc.ucalgary.ca" } { "*GroupKitBinDir", "/home/grads/roseman/cscw/groupkit/bin/SUN4" } The first two refer to the host and port number that the registrar process will normally run on. Make sure the hostname is fully qualified with the domain name. The third is the name of the Internet domain the system will run on. The last is the directory where by default GroupKit applications are located. This is "./bin/$ARCH" from the top of the distribution. 2. In the file "./gk_template" the directory "GroupKitTop" should be changed to point to the top of the distribution. 3. The file "./gkmkmf" (a GroupKit version of "ivmkmf") should be changed so that the first parameter to imake points to the "./gk_template" file, and the second points to the InterViews config directory. This can be obtained from the existing "ivmkmf" shell script. The GroupKit distribution can then be built as follows: 1. Change directories to the "./src" directory. 2. Set your CPU environment variable, e.g. "setenv CPU SUN4". 3. Type "../gkmkmf". This will create the top level Makefile. 4. Type "make Makefiles". This will recursively create Makefiles in all the subdirectories in the "src" tree. 5. Type "make install". This will recursively build the three GroupKit libraries, followed by the GroupKit programs in the "src/examples" tree. The libraries will be installed in "./lib/$ARCH" and the programs in "./bin/$ARCH" off the main distribution. Using GroupKit -------------- Before using any GroupKit applications, it is necessary to start up the registrar. From the machine specified by the "*RegistrarHost* resource in "./src/gk/groupsession.c", start up the registrar by typing "registrar &". To try out GroupKit, place the following in your ~/.Xdefaults file: startup*conferenceTypes: 6 startup*conf1-desc: Deck Flip startup*conf1-prog: deckeg startup*conf2-desc: Cursor Demo startup*conf2-prog: cursoreg startup*conf3-desc: GroupSketch startup*conf3-prog: gs startup*conf4-desc: User Monitor startup*conf4-prog: mon startup*conf5-desc: Brainstorming Tool startup*conf5-prog: bstorm startup*conf6-desc: Voting Tool startup*conf6-prog: vote And then from the "./bin/$ARCH" directory, type "startup &". A better idea is to get the registrar running and then turn to the GroupKit tutorial in "./doc/tutorial.ps". ivtools-doc/gk1.0-ivtools.patch0000644000076500007650000004433707374262631017227 0ustar scottscott00000000000000This patch contains the source changes to get GroupKit1.0 compiled on top of ivtools-0.6 with gcc-2.7.2.1 on Linux. I was able to get registrar and startup built, but both the server (registrar) and the client (startup) segfault in an ostream::put when the client connects to the server. The server appears to be doing some low-level manipulations of a binary iostream (iostreamb from the InterViews Dispatch library), which include trying to force a zero into the underlying buffer using ostream::put. It is possible that this software could be retrofitted to work with a modern version of iostreams, and perhaps an interesting project to compare and contrast this use of iostreams for controlling networked communications against approaches supported by the ACE toolkit and used in the ivtools drawing editors. This patch also represents a somewhat interesting example of what it takes to rebuild a significant library of C++ code written prior to 1993 with a modern C++ compiler. *** ./include/gk/straction.h~ Wed Oct 28 15:09:26 1992 --- ./include/gk/straction.h Thu Jun 11 09:53:17 1998 *************** *** 65,83 **** #endif #define declareStrActionCallback(T) \ ! typedef void T::StrActionMemberFunction(T)(char *); \ class StrActionCallback(T) : public StrAction { \ public: \ ! StrActionCallback(T)(T*, StrActionMemberFunction(T)*); \ \ virtual void execute(char *); \ private: \ T* obj_; \ ! StrActionMemberFunction(T)* func_; \ }; #define implementStrActionCallback(T) \ ! StrActionCallback(T)::StrActionCallback(T)(T* obj, StrActionMemberFunction(T)* func) { \ obj_ = obj; \ func_ = func; \ } \ --- 65,83 ---- #endif #define declareStrActionCallback(T) \ ! typedef void (T::*StrActionMemberFunction(T))(char *); \ class StrActionCallback(T) : public StrAction { \ public: \ ! StrActionCallback(T)(T*, StrActionMemberFunction(T)); \ \ virtual void execute(char *); \ private: \ T* obj_; \ ! StrActionMemberFunction(T) func_; \ }; #define implementStrActionCallback(T) \ ! StrActionCallback(T)::StrActionCallback(T)(T* obj, StrActionMemberFunction(T) func) { \ obj_ = obj; \ func_ = func; \ } \ *** ./include/gk/connaction.h~ Wed Oct 28 15:09:25 1992 --- ./include/gk/connaction.h Thu Jun 11 09:53:35 1998 *************** *** 66,84 **** #endif #define declareConnActionCallback(T) \ ! typedef void T::ConnActionMemberFunction(T)(char *, class Connection*); \ class ConnActionCallback(T) : public ConnAction { \ public: \ ! ConnActionCallback(T)(T*, ConnActionMemberFunction(T)*); \ \ virtual void execute(char *, class Connection*); \ private: \ T* obj_; \ ! ConnActionMemberFunction(T)* func_; \ }; #define implementConnActionCallback(T) \ ! ConnActionCallback(T)::ConnActionCallback(T)(T* obj, ConnActionMemberFunction(T)* func) { \ obj_ = obj; \ func_ = func; \ } \ --- 66,84 ---- #endif #define declareConnActionCallback(T) \ ! typedef void (T::*ConnActionMemberFunction(T))(char *, class Connection*); \ class ConnActionCallback(T) : public ConnAction { \ public: \ ! ConnActionCallback(T)(T*, ConnActionMemberFunction(T)); \ \ virtual void execute(char *, class Connection*); \ private: \ T* obj_; \ ! ConnActionMemberFunction(T) func_; \ }; #define implementConnActionCallback(T) \ ! ConnActionCallback(T)::ConnActionCallback(T)(T* obj, ConnActionMemberFunction(T) func) { \ obj_ = obj; \ func_ = func; \ } \ *** ./include/gk/rpcaction.h~ Wed Oct 28 15:09:26 1992 --- ./include/gk/rpcaction.h Thu Jun 11 09:53:39 1998 *************** *** 65,83 **** #endif #define declareRpcActionCallback(T) \ ! typedef void T::RpcActionMemberFunction(T)(class CallbackRpcReader*, int); \ class RpcActionCallback(T) : public RpcAction { \ public: \ ! RpcActionCallback(T)(T*, RpcActionMemberFunction(T)*); \ \ virtual void execute(class CallbackRpcReader*, int); \ private: \ T* obj_; \ ! RpcActionMemberFunction(T)* func_; \ }; #define implementRpcActionCallback(T) \ ! RpcActionCallback(T)::RpcActionCallback(T)(T* obj, RpcActionMemberFunction(T)* func) { \ obj_ = obj; \ func_ = func; \ } \ --- 65,83 ---- #endif #define declareRpcActionCallback(T) \ ! typedef void (T::*RpcActionMemberFunction(T))(class CallbackRpcReader*, int); \ class RpcActionCallback(T) : public RpcAction { \ public: \ ! RpcActionCallback(T)(T*, RpcActionMemberFunction(T)); \ \ virtual void execute(class CallbackRpcReader*, int); \ private: \ T* obj_; \ ! RpcActionMemberFunction(T) func_; \ }; #define implementRpcActionCallback(T) \ ! RpcActionCallback(T)::RpcActionCallback(T)(T* obj, RpcActionMemberFunction(T) func) { \ obj_ = obj; \ func_ = func; \ } \ *** ./include/gk-reg/coordinator.h~ Wed Oct 28 15:09:26 1992 --- ./include/gk-reg/coordinator.h Thu Jun 11 10:21:18 1998 *************** *** 69,74 **** --- 69,77 ---- class RegistrarClient* rc_; protected: + virtual boolean createReaderAndWriter(const char* rHost, int rPort) + {return false;} + class ConfTbl* confs_; class MsgQTbl* pending_; class UIDTbl* uids_; *** ./src/gk/conference.c~ Wed Oct 28 15:09:38 1992 --- ./src/gk/conference.c Thu Jun 11 09:55:29 1998 *************** *** 57,62 **** --- 57,63 ---- #include #include + #include #include #include #include *************** *** 229,235 **** char port[80]; our_attributes_ = AttributeList::read(s); our_attributes_->attribute("host", GroupSession::host_name()); ! our_attributes_->attribute("port", sprintf(port, "%d", _lPort)); char t[1000]; our_attributes_->write(t); newUser( our_attributes_); --- 230,237 ---- char port[80]; our_attributes_ = AttributeList::read(s); our_attributes_->attribute("host", GroupSession::host_name()); ! sprintf(port, "%d", _lPort); ! our_attributes_->attribute("port", port); char t[1000]; our_attributes_->write(t); newUser( our_attributes_); *** ./src/gk-reg/regclient.c~ Wed Oct 28 15:09:44 1992 --- ./src/gk-reg/regclient.c Thu Jun 11 10:01:04 1998 *************** *** 42,47 **** --- 42,48 ---- #include #include #include + #include #include #include #include *************** *** 203,209 **** ****************************************************************************/ char* cvt_gecos(char* gecos, char* uid) { ! char *s = malloc(80), *t = s, *x; while (*gecos) { if(*gecos=='&') { x = uid; --- 204,212 ---- ****************************************************************************/ char* cvt_gecos(char* gecos, char* uid) { ! char *s = (char*) malloc(80); ! char *t = s; ! char *x; while (*gecos) { if(*gecos=='&') { x = uid; *************** *** 231,242 **** char s[500]; AttributeList al; ! al.attribute("confnum", sprintf(s, "%d", conference)); al.attribute("userid", cuserid(0)); al.attribute("username", cvt_gecos(getpwnam(cuserid(0))->pw_gecos, cuserid(0))); al.attribute("host", GroupSession::host_name()); ! al.attribute("port", sprintf(s, "%d", lPort())); al.write(s); writer_->sendMsg(ADDUSER, s); PollUsers(conference); --- 234,247 ---- char s[500]; AttributeList al; ! sprintf(s, "%d", conference); ! al.attribute("confnum", s); al.attribute("userid", cuserid(0)); al.attribute("username", cvt_gecos(getpwnam(cuserid(0))->pw_gecos, cuserid(0))); al.attribute("host", GroupSession::host_name()); ! sprintf(s, "%d", lPort()); ! al.attribute("port", s); al.write(s); writer_->sendMsg(ADDUSER, s); PollUsers(conference); *** ./src/gk-ui/open_pty.c~ Wed Oct 28 15:09:48 1992 --- ./src/gk-ui/open_pty.c Thu Jun 11 10:09:43 1998 *************** *** 45,50 **** --- 45,51 ---- #include #include + #include #include #include #include *************** *** 53,60 **** #include #include ! /* Global Variables */ static int pty_master; static char pty_slave_filename[50], pty_master_filename[50]; struct termios oldterm = { /* initialized structure for the pty */ --- 54,85 ---- #include #include ! #define CTRL(ch) ((ch)&0x1F) ! #define IBSHIFT 16 ! ! #define CNUL 0 ! #define CDEL 0177 ! #define CESC '\\' ! #define CINTR 0177 ! #define CQUIT 034 ! #define CERASE '#' ! #define CKILL '@' ! #define CEOT 04 ! #define CEOL 0 ! #define CEOL2 0 ! #define CEOF 4 ! #define CSTART 021 ! #define CSTOP 023 ! #define CSWTCH 032 ! #define NSWTCH 0 ! #define CSUSP CTRL('Z') ! #define CDSUSP CTRL('Y') ! #define CRPRNT CTRL('R') ! #define CFLUSH CTRL('O') ! #define CWERASE CTRL('W') ! #define CLNEXT CTRL('V') + /* Global Variables */ static int pty_master; static char pty_slave_filename[50], pty_master_filename[50]; struct termios oldterm = { /* initialized structure for the pty */ *** ./src/gk-ui/shell.c~ Wed Oct 28 15:09:48 1992 --- ./src/gk-ui/shell.c Thu Jun 11 10:12:31 1998 *************** *** 56,62 **** if ((tmp = open_pty_channel("/bin/csh", &in_file, &out_file)) == -1) printf("oops on open_pty_channel\n"); else ! Dispatcher::instance().link(in_file->_file, Dispatcher::ReadMask, this); body(tb); } --- 56,62 ---- if ((tmp = open_pty_channel("/bin/csh", &in_file, &out_file)) == -1) printf("oops on open_pty_channel\n"); else ! Dispatcher::instance().link(fileno(in_file), Dispatcher::ReadMask, this); body(tb); } *************** *** 73,79 **** char s[1024]; int num; ! num = read(in_file->_file, s, 1024); if((num>0) && (*s != 0)) { em_->Write(s,num); } --- 73,79 ---- char s[1024]; int num; ! num = read(fileno(in_file), s, 1024); if((num>0) && (*s != 0)) { em_->Write(s,num); } *** ./src/gk-ui/DialogMgr.c~ Wed Oct 28 15:09:47 1992 --- ./src/gk-ui/DialogMgr.c Thu Jun 11 10:39:42 1998 *************** *** 108,114 **** Window* window, const char* prompt, const char* filter ) { long count = _chooser->count(); ! for (long i = 0; i < count; ++i) { ChooserInfo& info = _chooser->item_ref(i); if (strcmp(info._prompt, prompt) == 0) { break; --- 108,115 ---- Window* window, const char* prompt, const char* filter ) { long count = _chooser->count(); ! long i; ! for (i = 0; i < count; ++i) { ChooserInfo& info = _chooser->item_ref(i); if (strcmp(info._prompt, prompt) == 0) { break; *************** *** 128,134 **** Window* window, const char* prompt, const char* initial ) { long count = _asker->count(); ! for (long i = 0; i < count; ++i) { AskerInfo& info = _asker->item_ref(i); if (strcmp(info._prompt, prompt) == 0) { break; --- 129,136 ---- Window* window, const char* prompt, const char* initial ) { long count = _asker->count(); ! long i; ! for (i = 0; i < count; ++i) { AskerInfo& info = _asker->item_ref(i); if (strcmp(info._prompt, prompt) == 0) { break; *************** *** 146,152 **** int DialogManager::confirm (Window* window, const char* prompt) { long count = _confirmer->count(); ! for (long i = 0; i < count; ++i) { ConfirmerInfo& info = _confirmer->item_ref(i); if (strcmp(info._prompt, prompt) == 0) { break; --- 148,155 ---- int DialogManager::confirm (Window* window, const char* prompt) { long count = _confirmer->count(); ! long i; ! for (i = 0; i < count; ++i) { ConfirmerInfo& info = _confirmer->item_ref(i); if (strcmp(info._prompt, prompt) == 0) { break; *************** *** 164,170 **** void DialogManager::report (Window* window, const char* prompt) { long count = _reporter->count(); ! for (long i = 0; i < count; ++i) { ReporterInfo& info = _reporter->item_ref(i); if (strcmp(info._prompt, prompt) == 0) { break; --- 167,174 ---- void DialogManager::report (Window* window, const char* prompt) { long count = _reporter->count(); ! long i; ! for (i = 0; i < count; ++i) { ReporterInfo& info = _reporter->item_ref(i); if (strcmp(info._prompt, prompt) == 0) { break; *** ./src/examples/registrar/registrar.c~ Wed Oct 28 15:09:51 1992 --- ./src/examples/registrar/registrar.c Thu Jun 11 10:32:52 1998 *************** *** 22,27 **** --- 22,28 ---- #include // for ReaderCallbackTable #include #include + #include #include declareStrActionCallback(Registrar); *** ./src/examples/registrar/LINUX/Makefile~ Thu Jun 11 10:37:53 1998 --- ./src/examples/registrar/LINUX/Makefile Thu Jun 11 10:41:17 1998 *************** *** 83,89 **** ARCH = $(ARCHORCPU)$(SPECIAL_ARCH) SPECIAL_ARCH = ! CCDRIVER = gcc -xc++ -O CCSUFFIX = c SRC = /home/johnston/gk1.0/src/examples/registrar/LINUX/.. SLASH = / --- 83,89 ---- ARCH = $(ARCHORCPU)$(SPECIAL_ARCH) SPECIAL_ARCH = ! CCDRIVER = gcc -O CCSUFFIX = c SRC = /home/johnston/gk1.0/src/examples/registrar/LINUX/.. SLASH = / *** ./src/examples/registrar/registrar.h~ Wed Oct 28 15:09:51 1992 --- ./src/examples/registrar/registrar.h Thu Jun 11 10:17:15 1998 *************** *** 41,52 **** --- 41,56 ---- Registrar(int port); virtual ~Registrar(); + protected: AttrListTable* conference_tbl_; UserListTbl* users_tbl_; int lastID_; + virtual boolean createReaderAndWriter(const char* rHost, int rPort) + {return false;} + virtual void createReaderAndWriter(int fd); void closeCallback(class CallbackRpcReader*, int); class ConnectionList* connlist_; *** ./src/examples/reg-open/openregclient.c~ Wed Oct 28 15:09:52 1992 --- ./src/examples/reg-open/openregclient.c Thu Jun 11 10:18:55 1998 *************** *** 180,186 **** if ( conference_tbl_->find( cl, conf) ) { cl->find_attribute( "name", name); al.attribute("name", name); cl->find_attribute( "type", type); al.attribute("type", type); ! al.attribute("confnum", sprintf(s, "%d", conf)); coord_->createConference( &al ); AttrListTable* users; --- 180,187 ---- if ( conference_tbl_->find( cl, conf) ) { cl->find_attribute( "name", name); al.attribute("name", name); cl->find_attribute( "type", type); al.attribute("type", type); ! sprintf(s, "%d", conf); ! al.attribute("confnum", s); coord_->createConference( &al ); AttrListTable* users; *** ./src/examples/reg-open/rcdisplay.c~ Wed Oct 28 15:09:52 1992 --- ./src/examples/reg-open/rcdisplay.c Thu Jun 11 10:19:30 1998 *************** *** 39,44 **** --- 39,45 ---- #include #include #include + #include #include "openregclient.h" #include "rcdisplay.h" #include *** ./src/examples/reg-master/intaction.h~ Wed Oct 28 15:09:55 1992 --- ./src/examples/reg-master/intaction.h Thu Jun 11 10:23:06 1998 *************** *** 50,68 **** #endif #define declareIntActionCallback(T) \ ! typedef void T::IntActionMemberFunction(T)(int,int); \ class IntActionCallback(T) : public IntAction { \ public: \ ! IntActionCallback(T)(T*, IntActionMemberFunction(T)*, int, int); \ \ virtual void execute(); \ private: \ T* obj_; \ ! IntActionMemberFunction(T)* func_; \ }; #define implementIntActionCallback(T) \ ! IntActionCallback(T)::IntActionCallback(T)(T* obj, IntActionMemberFunction(T)* func, int p1_, int p2_) { \ obj_ = obj; \ func_ = func; \ p1 = p1_; \ --- 50,68 ---- #endif #define declareIntActionCallback(T) \ ! typedef void (T::*IntActionMemberFunction(T))(int,int); \ class IntActionCallback(T) : public IntAction { \ public: \ ! IntActionCallback(T)(T*, IntActionMemberFunction(T), int, int); \ \ virtual void execute(); \ private: \ T* obj_; \ ! IntActionMemberFunction(T) func_; \ }; #define implementIntActionCallback(T) \ ! IntActionCallback(T)::IntActionCallback(T)(T* obj, IntActionMemberFunction(T) func, int p1_, int p2_) { \ obj_ = obj; \ func_ = func; \ p1 = p1_; \ *** ./include/gk/writer.h~ Wed Oct 28 15:09:26 1992 --- ./include/gk/writer.h Fri Jun 12 08:22:24 1998 *************** *** 48,53 **** --- 48,55 ---- ** send a message */ void sendMsg(int msg_id_num, char *msg); + + rpcstream* server_ptr() { return _server; } }; #endif *** ./src/gk/connection.c~ Wed Oct 28 15:09:39 1992 --- ./src/gk/connection.c Fri Jun 12 08:21:26 1998 *************** *** 64,70 **** if( callbacks_ == nil) callbacks_ = new ReaderCallbackTable(FUNCTBLSIZE); writer_ = new Writer( fd ); ! if(writer_->server()) reader_ = new CallbackRpcReader(&writer_->server(), callbacks_, id_); } --- 64,70 ---- if( callbacks_ == nil) callbacks_ = new ReaderCallbackTable(FUNCTBLSIZE); writer_ = new Writer( fd ); ! if(writer_->server_ptr()) reader_ = new CallbackRpcReader(&writer_->server(), callbacks_, id_); } *** ./src/gk-reg/regclient.c~ Thu Jun 11 10:01:04 1998 --- ./src/gk-reg/regclient.c Fri Jun 12 09:09:31 1998 *************** *** 341,347 **** boolean RegistrarClient::createReaderAndWriter(const char* rHost, int rPort) { writer_ = new Writer(rHost, rPort); ! if (writer_->server()) { reader_ = new CallbackRpcReader(&writer_->server()); reader_->registerCallback( new StrActionCallback(RegistrarClient) (this, &RegistrarClient::UpdateConferenceList), CONFLIST); --- 341,347 ---- boolean RegistrarClient::createReaderAndWriter(const char* rHost, int rPort) { writer_ = new Writer(rHost, rPort); ! if (writer_->server_ptr()) { reader_ = new CallbackRpcReader(&writer_->server()); reader_->registerCallback( new StrActionCallback(RegistrarClient) (this, &RegistrarClient::UpdateConferenceList), CONFLIST); ivtools-doc/glyphinfo.html0000644000076500007650000002011207512656157016543 0ustar scottscott00000000000000 Glyphs

    Glyphs

    screendumps of example programs

    InterViews Glyph objects provide the usual user interface widgets like buttons, scrollbars, pulldown menus, string editors, etc. (They also provide a limited graphical capability; since they don't have a general editing framework the glyph graphics are mostly useful for static pictures, e.g. a graphic inside a button.) We use glyphs to implement layout, look-and-feel, and controls/displays for application programs.

    The main technical advantages of glyphs are:

    • lightweight: they use less memory than other equivalent widget sets, so they are fast.
    • multiple look-and-feel styles: every program supports OpenLook, Motif or SGIMotif styles, selectable by a command line flag at startup.

    The ultimate reference for glyphs is the "InterViews Reference Manual Version 3.1" (no frames) dated December 14, 1992. It is included in the InterViews source tree under iv/src/man/refman/refman.PS. Here we will provide supplementary information and more practical hints.

    Some of the more important glyph classes are:

    • Glyph: base class for all glyph objects
    • MonoGlyph: wrapper to override some aspect of a glyph
    • PolyGlyph: wrapper for list of glyphs
    • InputHandler: glyph that receives input (mouse or keys)
    • Action: object to provide callback functions for input handling glyphs (used by buttons, menus, etc.)
    • Style: keep track of X resources, command line flags and programmer-defined parameters with default values
    • Observable/Observer: provide automatic update of displays when a data value changes
    • Window, Display: X Window basic objects
    • WidgetKit: object factory to create common user interface objects with a concrete look-and-feel (beveled frames, menus, buttons, scrollers)
    • LayoutKit: object factory to create objects that manage the physical layout of one or more glyphs (boxes and glue)
    • DialogKit: object factory for dialoglike objects. Field editors and file choosers.

    The basic glyph demo program is idemo, included in the InterViews source tree under iv/src/bin/idemo/. It features pulldown menus, text labels (normal and rotated), push buttons, check boxes, radio buttons, palette buttons, field (text) editors, scrollbars and a panner. By using the flags -openlook, -motif or -sgimotif at program startup you can see the same glyphs under each different look-and-feel discipline.

    We also have a few other glyph-based derived classes and example programs in the ivtools package. These are examples of glyph usage and/or subclasses that extend the basic glyph functionality in some way. Most of these are contained in the IVGlyph library within ivtools.

    Glyphs are compiled with different options and namespace than Unidraw objects. See the different rules used in the Imakefiles. This can lead to conflicts but we have developed ways of integrating glyphs with Unidraw that work in our examples.

    The layout model for glyphs is based on the TeX boxes and glue model. ...

    back to ivtools technical info

    ivtools-doc/glyphs.html0000644000076500007650000000211207442174160016041 0ustar scottscott00000000000000 ivtools glyph examples

    Glyph Examples

    These are examples programs that show how to do things with the Glyph classes in ivtools.

  • bdvtable, bounded-value editing
  • formdemo, value-editing
  • gclock, glyph clock
  • meter, meter example
  • radiogroup, radio-buttons
  • scrollable, 2d scrollable glyph
  • scrollfield, scrollable table of field editors
  • strchooser, string chooser
  • text-editor, emacs-like text editor
  • timestamp, editable time glyph
  • glyph programming information

    ivtools_button up to ivtools home page ivtools-doc/glyphs.ps0000644000076500007650000422570107374262631015543 0ustar scottscott00000000000000%!PS-Adobe-2.0 %%Creator: InterViews %%Pages: atend %%EndComments save 20 dict begin /sf { exch FontDirectory 1 index known not {pop /Courier} if findfont exch scalefont setfont } def /ws { 4 index 6 4 roll moveto sub 2 index stringwidth pop sub exch div 0 8#40 4 3 roll widthshow } def /as { 4 index 6 4 roll moveto sub 2 index stringwidth pop sub exch div 0 3 2 roll ashow } def /imagestring { currentfile token pop dup string currentfile token pop 0 1 5 4 roll 1 sub {2 index exch 2 index put} for pop } def %%EndProlog 13.5289 -23.561 translate /iCTM matrix currentmatrix def %%Page: ? 1 initgraphics 13.5289 -23.561 translate /iCTM matrix currentmatrix def /Times-Bold 14 sf 47.4711 592.561 (Abstract) 8 99.5651 as /Times-Roman 10 sf 47.4711 575.041 (Current user interface toolkits provide components that) 12 277.471 ws 47.4711 562.521 (are complex and expensive. Programmers cannot use) 13 277.471 ws 47.4711 550.001 (these components for many kinds of application data) 14 277.471 ws 47.4711 537.481 (because the resulting implementation would be awkward) 12 277.471 ws 47.4711 524.961 (and inefficient. We have defined a set of small, simple) 19 277.471 ws 47.4711 512.44 (components, called ) 4 128.378 ws /Times-Bold 10 sf 128.378 512.44 (glyphs) 6 156.168 as /Times-Roman 10 sf 156.168 512.44 (, that programmers can use in) 10 277.471 ws 47.4711 499.921 (large numbers to build user interfaces. To show that) 17 277.471 ws 47.4711 487.4 (glyphs are simple and efficient, we have implemented a) 16 277.471 ws 47.4711 474.88 (WYSIWYG document editor. The editor's performance) 11 277.471 ws 47.4711 462.36 (is comparable to that of similar editors built with current) 18 277.471 ws 47.4711 449.84 (tools, but its implementation is much simpler. We used) 17 277.471 ws 47.4711 437.32 (the editor to create and print this paper.) 14 204.666 ws /Times-Bold 14 sf 47.4711 406.921 (1) 1 54.4711 as 67.6871 406.921 (Introduction) 12 143.917 as /Times-Roman 10 sf 47.4711 389.4 (Most user interface toolkits are object-oriented because) 12 277.471 ws 47.4711 376.88 (program objects are a natural way to represent the) 16 277.471 ws 47.4711 364.36 (objects that a user manipulates. Current toolkits provide) 15 277.471 ws 47.4711 351.84 (objects such as buttons and menus that let programmers) 16 277.471 ws 47.4711 339.32 (build interfaces to application ) 8 178.024 ws /Times-Italic 10 sf 178.024 339.32 (commands) 8 220.794 as /Times-Roman 10 sf 220.794 339.32 (, but they do) 6 277.471 ws 47.4711 326.8 (not provide objects for building interfaces to application) 14 277.471 ws /Times-Italic 10 sf 47.4711 314.28 (data) 4 65.2511 as /Times-Roman 10 sf 65.2511 314.28 (. Without this support, programmers must often) 13 277.471 ws 47.4711 301.76 (define many components from scratch.) 8 203.274 ws 56.3611 289.24 (To offer the full benefits of an object-oriented model,) 16 277.471 ws 47.4711 276.72 (a toolkit must encourage programmers to use objects for) 16 277.471 ws 47.4711 264.2 (even the smallest components in the interface. Current) 15 277.471 ws 47.4711 251.68 (toolkits let programmers build interfaces that contain) 12 277.471 ws 307.471 610.441 (hundreds of objects. But to reflect the fine-grained) 15 537.471 ws 307.471 597.921 (structure in application data, programmers may need) 12 537.471 ws 307.471 585.401 (hundreds of ) 4 360.308 ws /Times-Italic 10 sf 360.308 585.401 (thousands) 9 400.868 as /Times-Roman 10 sf 400.868 585.401 ( of objects. For example, text is) 13 537.471 ws 307.471 572.881 (logically composed of characters; an application that) 12 537.471 ws 307.471 560.361 (displays text should therefor build its views from objects) 16 537.471 ws 307.471 547.841 (that display individual characters. Using this approach, a) 15 537.471 ws 307.471 535.32 (moderate-sized document, such as a technical paper or a) 16 537.471 ws 307.471 522.8 (chapter in a book, will need at least 50,000 character) 18 537.471 ws 307.471 510.28 (objects.) 8 338.301 as 316.361 497.76 (This approach can dramatically simplify an) 10 537.471 ws 307.471 485.24 (implementation, but it is practical only if objects are) 16 537.471 ws 307.471 472.72 (simple and cheap. The combination of faster hardware) 15 537.471 ws 307.471 460.2 (and more efficient object-oriented languages has now) 12 537.471 ws 307.471 447.68 (made it possible to use objects at this finer level of) 20 537.471 ws 307.471 435.16 (granularity without sacrificing interactive response.) 8 513.822 ws 316.361 422.64 (We have designed a set of ``flyweight'' components,) 14 537.471 ws 307.471 410.12 (called glyphs, that are simple and efficient. The Glyph) 17 537.471 ws 307.471 397.6 (base class defines a protocol for drawing; subclasses) 14 537.471 ws 307.471 385.08 (define specific appearances such as graphic primitives) 12 537.471 ws 307.471 372.56 (\(lines and circles\), textual primitives \(characters and) 12 537.471 ws 307.471 360.04 (spaces\), and composite objects \(tilings and overlays\).) 12 537.471 ws 307.471 347.52 (Applications define their appearance by building) 10 537.471 ws 307.471 335 (hierarchies of glyphs.) 4 393.844 ws 316.361 322.48 (We have implemented glyphs as an extension to the) 16 537.471 ws 307.471 309.96 (InterViews toolkit [2], which is written in C++. To) 17 537.471 ws 307.471 297.44 (show that glyphs are practical, we have implemented a) 16 537.471 ws 307.471 284.919 (WYSIWYG document editor that creates a glyph for) 14 537.471 ws 307.471 272.399 (each character in the text. Although its implementation) 15 537.471 ws 307.471 259.879 (is simple, this editor is powerful enough and efficient) 16 537.471 ws 307.471 247.359 (enough for many common document preparation tasks.) 12 537.471 ws 307.471 234.839 (We used our editor to create, format, and print this paper.) 20 537.141 ws 316.361 222.319 (In section 2 we show how to build a simple text) 20 537.471 ws 307.471 209.799 (view using glyphs. We start with a simple ASCII file) 19 537.471 ws 307.471 197.279 (viewer and evolve it to a view that supports multiple) 18 537.471 ws 307.471 184.759 (fonts, embedded graphics, hyphenation, and multiple) 10 537.471 ws 307.471 172.239 (column formatting. Section 3 discusses the glyph class) 15 537.471 ws 307.471 159.719 (design in more detail, and section 4 describes how it can) 20 537.471 ws 307.471 147.199 (be implemented efficiently. In section 5, we compare) 15 537.471 ws 307.471 134.679 (glyphs with similar components provided by other) 12 537.471 ws 307.471 122.159 (toolkits.. Finally, section 6 examines the implementation) 13 537.471 ws 307.471 109.639 (and performance of our glyph-based editor.) 10 481.314 ws /Times-Bold 18 sf 111.511 731.871 (Glyphs: Flyweight Objects for User Interfaces) 10 465.949 ws /Times-Roman 14 sf 188.471 691.561 (Paul R. Calder and Mark A. Linton) 12 386.011 ws 203.451 677.161 (Center for Integrated Systems) 6 371.031 ws 231.829 662.761 (Stanford University) 2 342.653 ws 211.998 648.361 (Stanford, California 94305) 4 362.484 ws newpath 53.391 218.321 moveto 53.391 219.321 lineto 266.039 219.321 lineto 266.039 218.321 lineto 53.391 218.321 lineto 0 setlinewidth gsave eofill grestore /Times-Roman 10 sf 158.465 209.681 ( ) 2 160.966 ws /Times-Roman 8 sf 53.911 201.425 (Research supported by a gift from Digital Equipment Corporation) 16 264.999 ws 53.391 191.785 (and a grant from the Charles Lee Powell Foundation.) 16 223.367 ws showpage %%Page: ? 2 initgraphics 13.5289 -23.561 translate /iCTM matrix currentmatrix def /Times-Bold 14 sf 47.4711 426.601 (2) 1 54.4711 as 67.6871 426.601 (Building a text view) 6 186.313 ws /Times-Roman 10 sf 47.4711 409.081 (We chose to illustrate the use of glyphs in a text-based) 20 277.471 ws 47.4711 396.561 (application because this example illustrates many of) 12 277.471 ws 47.4711 384.041 (the shortcomings of current toolkits. Despite the) 13 277.471 ws 47.4711 371.521 (central role text plays in many applications, most) 14 277.471 ws 47.4711 359.001 (current toolkits limit the variety of text views that) 16 277.471 ws 47.4711 346.481 (programmers can build. These toolkits provide only) 13 277.471 ws 47.4711 333.961 (large, complex components that offer packaged solutions) 12 277.471 ws 47.4711 321.441 (to specific text viewing problems; they do not provide) 16 277.471 ws 47.4711 308.921 (simple components that let programmers define their) 12 277.471 ws 47.4711 296.401 (own solutions. If a programmer needs more than the) 17 277.471 ws 47.4711 283.881 (predefined components provide, then he must revert to) 14 277.471 ws 47.4711 271.361 (low-level programming to define a new view.) 12 230.494 ws 56.3611 258.841 (We start by considering an application that will) 14 277.471 ws 47.4711 246.321 (display ASCII-encoded text from a file. We define a) 17 277.471 ws 47.4711 233.801 (glyph subclass, TextView, whose appearance depends) 10 277.471 ws 47.4711 221.281 (on the file. In this example, we focus on the component) 21 277.471 ws 47.4711 208.761 (that displays the text; we are not concerned with the) 18 277.471 ws 47.4711 196.241 (application scaffolding that surrounds the text view) 12 277.471 ws 47.4711 183.721 (because existing toolkits adequately handle this part of) 14 277.471 ws 47.4711 171.201 (the interface.) 2 99.6729 ws 56.3611 158.681 (A glyph's appearance is determined by its ) 14 256.911 ws /Times-Italic 10 sf 256.911 158.681 (draw) 4 277.471 as /Times-Roman 10 sf 47.4711 146.161 (operation: to define TextView's appearance, we must) 12 277.471 ws 47.4711 133.641 (redefine this operation. Draw will be called with) 15 277.471 ws 47.4711 121.121 (parameters specifying the surface on which to draw) 14 277.471 ws 47.4711 108.601 (\(called a Canvas\), the graphics attributes to use when) 16 277.471 ws 47.4711 96.0809 (drawing \(a Painter\), and geometrical information about) 12 277.471 ws 47.4711 83.5609 (the size and position of the view \(an Allocation\).) 16 242.724 ws 316.361 638.97 (The straightforward approach is to iterate through) 12 537.471 ws 307.471 626.45 (the file, drawing a representation of each printable) 14 537.471 ws 307.471 613.93 (character and beginning a new line for each newline) 16 537.471 ws 307.471 601.41 (character. Figure 1 shows what the code would look) 17 537.471 ws 307.471 588.89 (like. However, if the view is redrawn frequently, this) 17 537.471 ws 307.471 576.37 (simple implementation will be inefficient because it) 12 537.471 ws 307.471 563.85 (reads and draws the entire file on each call, even if only) 22 537.471 ws 307.471 551.33 (a small part of the view is damaged.) 14 451.897 ws 316.361 538.81 (We can make the view more efficient by storing in the) 20 537.471 ws 307.471 526.29 (view a representation of the text and the coordinates at) 18 537.471 ws 307.471 513.77 (which it is drawn. Then we need draw only those lines) 21 537.471 ws 307.471 501.25 (\(or parts of lines\) that lie within the damaged region.) 18 537.471 ws 307.471 488.73 (However, this approach can considerably complicate the) 12 537.471 ws 307.471 476.21 (view's implementation. For example, the Athena Text) 13 537.471 ws 307.471 463.69 (Widget [4], which uses a similar scheme, contains about) 16 537.471 ws 307.471 451.17 (10,000 lines of code spread over 20 source files. Of) 19 537.471 ws 307.471 438.65 (course, the Text Widget does more that just display text.) 18 537.471 ws 307.471 426.13 (But even if we count only the text display code, the) 20 537.471 ws 307.471 413.61 (implementation contains several thousand lines.) 8 499.403 ws 316.361 401.09 (We can retain the simplicity of the original code) 16 537.471 ws 307.471 388.569 (by defining TextView as a composite glyph that) 14 537.471 ws 307.471 376.049 (contains other glyphs. We will use three predefined) 15 537.471 ws 307.471 363.529 (glyph subclasses: a Character draws a single character,) 14 537.471 ws 307.471 351.009 (an LRBox is a composite that tiles its components) 16 537.471 ws 307.471 338.489 (left-to-right, and a TBBox is a composite that tiles) 16 537.471 ws 307.471 325.969 (top-to-bottom. Figure 2 shows the resulting object) 13 537.471 ws 307.471 313.449 (structure, and figure 3 shows the code that builds the) 18 537.471 ws newpath 56.3511 755.041 moveto 56.3511 756.041 lineto 266.351 756.041 lineto 266.351 755.041 lineto 56.3511 755.041 lineto gsave eofill grestore 160.101 746.401 ( ) 2 162.602 ws /Courier 10 sf 56.3511 734.881 (void TextView::draw\() 1 176.351 ws 56.3511 724.281 ( Canvas* canvas;) 3 158.351 ws 56.3511 713.681 ( const Painter& p,) 4 170.351 ws 56.3511 703.081 ( const Allocation& a) 4 182.351 ws 56.3511 692.481 (\) {) 1 74.3511 ws 56.3511 681.881 ( Font* f = p.font\(\);) 5 182.351 ws 56.3511 671.281 ( Coord x0 = a.x\(\);) 5 170.351 ws 56.3511 660.681 ( Coord x = x0;) 5 146.351 ws 56.3511 650.081 ( Coord y = a.top\(\) - f->ascent\(\);) 7 260.351 ws 56.3511 639.481 ( Coord line_height =) 4 182.351 ws 56.3511 628.881 ( f->ascent\(\) + f->descent\(\);) 6 242.351 ws 56.3511 618.281 ( rewind\(file\);) 2 146.351 ws 56.3511 607.681 ( int c;) 3 104.351 ws 56.3511 597.081 ( while \(\(c = getc\(file\)\) != EOF\) {) 8 266.351 ws 56.3511 586.481 ( if \(c == '\\n'\) {) 8 176.351 ws 56.3511 575.881 ( x = x0;) 8 134.351 ws 56.3511 565.281 ( y -= line_height;) 8 194.351 ws 56.3511 554.681 ( } else {) 6 128.351 ws 56.3511 544.081 ( p.character\(canvas, c, x, y\);) 9 266.351 ws 56.3511 533.481 ( x += f->width\(c\);) 8 194.351 ws 56.3511 522.881 ( }) 4 86.3511 ws 56.3511 512.281 ( }) 2 74.3511 ws 56.3511 501.681 (}) 1 62.3511 as newpath 56.3511 488.161 moveto 56.3511 489.161 lineto 266.351 489.161 lineto 266.351 488.161 lineto 56.3511 488.161 lineto gsave eofill grestore /Times-Roman 10 sf 160.101 479.521 ( ) 2 162.602 ws 102.465 468.001 (Figure 1: A simple TextView) 8 220.237 ws newpath iCTM setmatrix [ 0.282414 0 0 0.282414 218.098 379.352 ] concat 322.885 1354.86 moveto 322.885 1084.86 lineto 868.885 1084.86 lineto 868.885 1354.86 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 218.098 348.851 ] concat 334.885 1342.86 moveto 334.885 1252.86 lineto 856.885 1252.86 lineto 856.885 1342.86 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 218.098 379.352 ] concat 334.885 1342.86 moveto 334.885 1252.86 lineto 856.885 1252.86 lineto 856.885 1342.86 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 276.276 459.84 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 289.831 459.84 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 303.387 459.84 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 215.274 493.73 ] concat 326.885 955.861 moveto 326.885 673.861 lineto 332.885 673.861 lineto 332.885 949.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 264.414 493.73 ] concat 704.885 949.861 moveto 704.885 679.861 lineto 710.885 673.861 lineto 710.885 955.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 213.58 492.035 ] concat 344.885 949.861 moveto 344.885 847.861 lineto 350.885 853.861 lineto 350.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 262.72 492.035 ] concat 698.885 943.861 moveto 698.885 853.861 lineto 704.885 847.861 lineto 704.885 949.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 213.58 461.535 ] concat 344.885 949.861 moveto 344.885 847.861 lineto 350.885 853.861 lineto 350.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 262.72 461.535 ] concat 698.885 943.861 moveto 698.885 853.861 lineto 704.885 847.861 lineto 704.885 949.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 194.94 490.341 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 208.496 490.341 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 222.052 490.341 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 235.608 490.341 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 249.164 490.341 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 262.72 490.341 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 194.94 459.84 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 208.496 459.84 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 222.052 459.84 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 235.608 459.84 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 249.164 459.84 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 262.72 459.84 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore iCTM setmatrix [ 0.564829 0 0 0.564829 142.444 365.835 ] concat 0 0 0 setrgbcolor /Times-Roman 24 sf 306.885 663.661 (T) 1 322.245 as iCTM setmatrix [ 0.564829 0 0 0.564829 156.847 365.835 ] concat 306.885 663.661 (h) 1 319.365 as iCTM setmatrix [ 0.564829 0 0 0.564829 170.967 365.835 ] concat 306.885 663.661 (e) 1 317.445 as iCTM setmatrix [ 0.564829 0 0 0.564829 197.797 365.835 ] concat 306.885 663.661 (q) 1 318.405 as iCTM setmatrix [ 0.564829 0 0 0.564829 211.07 365.835 ] concat 306.885 663.661 (u) 1 319.365 as iCTM setmatrix [ 0.564829 0 0 0.564829 226.321 335.335 ] concat 306.885 663.661 (f) 1 313.605 as iCTM setmatrix [ 0.564829 0 0 0.564829 238.464 335.335 ] concat 306.885 663.661 (o) 1 318.405 as newpath iCTM setmatrix [ 0.282414 0 0 0.282414 276.276 490.341 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 289.831 490.341 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 303.387 490.341 ] concat 422.885 943.861 moveto 422.885 865.861 lineto 428.885 871.861 lineto 428.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 422.885 943.861 moveto 428.885 937.861 lineto 458.885 937.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 458.885 937.861 moveto 458.885 871.861 lineto 464.885 865.861 lineto 464.885 943.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 422.885 865.861 moveto 464.885 865.861 lineto 458.885 871.861 lineto 428.885 871.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 428.885 937.861 moveto 428.885 871.861 lineto 458.885 871.861 lineto 458.885 937.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore iCTM setmatrix [ 0.564829 0 0 0.564829 226.603 365.835 ] concat 0 0 0 setrgbcolor 306.885 663.661 (i) 1 312.645 as iCTM setmatrix [ 0.564829 0 0 0.564829 238.747 365.835 ] concat 306.885 663.661 (c) 1 317.445 as iCTM setmatrix [ 0.564829 0 0 0.564829 252.02 365.835 ] concat 306.885 663.661 (k) 1 318.405 as iCTM setmatrix [ 0.564829 0 0 0.564829 143.573 335.335 ] concat 306.885 663.661 (b) 1 318.405 as iCTM setmatrix [ 0.564829 0 0 0.564829 158.259 335.335 ] concat 306.885 663.661 (r) 1 314.565 as iCTM setmatrix [ 0.564829 0 0 0.564829 170.685 335.335 ] concat 306.885 663.661 (o) 1 318.405 as iCTM setmatrix [ 0.423622 0 0 0.564829 227.363 335.335 ] concat 306.885 663.661 (w) 1 323.205 as iCTM setmatrix [ 0.564829 0 0 0.564829 197.514 335.335 ] concat 306.885 663.661 (n) 1 319.365 as iCTM setmatrix [ 0.564829 0 0 0.564829 251.738 335.335 ] concat 306.885 663.661 (x) 1 319.365 as newpath iCTM setmatrix [ 0.282414 0 0 0.282414 218.098 379.352 ] concat 322.885 1354.86 moveto 868.885 1354.86 lineto 874.885 1360.86 lineto 316.885 1360.86 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 334.885 1342.86 moveto 856.885 1342.86 lineto 862.885 1348.86 lineto 328.885 1348.86 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 218.098 348.851 ] concat 334.885 1342.86 moveto 856.885 1342.86 lineto 862.885 1348.86 lineto 328.885 1348.86 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 218.098 379.352 ] concat 328.885 1246.86 moveto 862.885 1246.86 lineto 856.885 1252.86 lineto 334.885 1252.86 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 328.885 1138.86 moveto 862.885 1138.86 lineto 856.885 1144.86 lineto 334.885 1144.86 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 218.098 370.88 ] concat 316.885 1108.86 moveto 874.885 1108.86 lineto 868.885 1114.86 lineto 322.885 1114.86 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 246.904 409.853 ] concat 496.885 994.861 moveto 496.885 988.861 lineto 502.885 988.861 lineto 502.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 490.885 982.861 lineto 496.885 988.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 490.885 982.861 moveto 508.885 982.861 lineto 502.885 988.861 lineto 496.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 508.885 982.861 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 502.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 246.904 416.631 ] concat 496.885 994.861 moveto 496.885 988.861 lineto 502.885 988.861 lineto 502.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 490.885 982.861 lineto 496.885 988.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 490.885 982.861 moveto 508.885 982.861 lineto 502.885 988.861 lineto 496.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 508.885 982.861 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 502.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 297.739 465.771 ] concat 496.885 994.861 moveto 496.885 988.861 lineto 502.885 988.861 lineto 502.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 490.885 982.861 lineto 496.885 988.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 490.885 982.861 moveto 508.885 982.861 lineto 502.885 988.861 lineto 496.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 508.885 982.861 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 502.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 304.517 465.771 ] concat 496.885 994.861 moveto 496.885 988.861 lineto 502.885 988.861 lineto 502.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 490.885 982.861 lineto 496.885 988.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 490.885 982.861 moveto 508.885 982.861 lineto 502.885 988.861 lineto 496.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 508.885 982.861 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 502.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 311.295 465.771 ] concat 496.885 994.861 moveto 496.885 988.861 lineto 502.885 988.861 lineto 502.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 490.885 982.861 lineto 496.885 988.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 490.885 982.861 moveto 508.885 982.861 lineto 502.885 988.861 lineto 496.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 508.885 982.861 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 502.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 297.739 435.27 ] concat 496.885 994.861 moveto 496.885 988.861 lineto 502.885 988.861 lineto 502.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 490.885 982.861 lineto 496.885 988.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 490.885 982.861 moveto 508.885 982.861 lineto 502.885 988.861 lineto 496.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 508.885 982.861 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 502.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 304.517 435.27 ] concat 496.885 994.861 moveto 496.885 988.861 lineto 502.885 988.861 lineto 502.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 490.885 982.861 lineto 496.885 988.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 490.885 982.861 moveto 508.885 982.861 lineto 502.885 988.861 lineto 496.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 508.885 982.861 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 502.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 311.295 435.27 ] concat 496.885 994.861 moveto 496.885 988.861 lineto 502.885 988.861 lineto 502.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.701961 0.701961 0.701961 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 490.885 982.861 lineto 496.885 988.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore newpath 490.885 982.861 moveto 508.885 982.861 lineto 502.885 988.861 lineto 496.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 508.885 982.861 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 502.885 988.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.498039 0.498039 0.498039 setrgbcolor gsave eofill grestore newpath 490.885 1000.86 moveto 508.885 1000.86 lineto 502.885 994.861 lineto 496.885 994.861 lineto closepath 1 1 1 setrgbcolor gsave eofill grestore 0.898039 0.898039 0.898039 setrgbcolor gsave eofill grestore iCTM setmatrix [ 0.564829 0 0 0.564829 315.846 315.001 ] concat 0 0 0 setrgbcolor /Times-Roman 14 sf 306.885 671.341 (TBBox) 5 346.245 as iCTM setmatrix [ 0.564829 0 0 0.564829 315.846 342.113 ] concat 306.885 671.341 (LRBox) 5 346.245 as iCTM setmatrix [ 0.564829 0 0 0.564829 315.846 369.224 ] concat 306.885 671.341 (Character) 9 363.525 as newpath iCTM setmatrix [ 0.0353018 0 0 0.0353018 442.483 671.793 ] concat 402.885 730.861 moveto 402.885 754.861 378.885 778.861 354.885 778.861 curveto 330.885 778.861 306.885 754.861 306.885 730.861 curveto 306.885 706.861 330.885 682.861 354.885 682.861 curveto 378.885 682.861 402.885 706.861 402.885 730.861 curveto gsave eofill grestore newpath iCTM setmatrix [ 0.0353018 0 0 0.0353018 430.622 698.905 ] concat 402.885 730.861 moveto 402.885 754.861 378.885 778.861 354.885 778.861 curveto 330.885 778.861 306.885 754.861 306.885 730.861 curveto 306.885 706.861 330.885 682.861 354.885 682.861 curveto 378.885 682.861 402.885 706.861 402.885 730.861 curveto gsave eofill grestore newpath iCTM setmatrix [ 0.0353018 0 0 0.0353018 418.76 726.017 ] concat 402.885 730.861 moveto 402.885 754.861 378.885 778.861 354.885 778.861 curveto 330.885 778.861 306.885 754.861 306.885 730.861 curveto 306.885 706.861 330.885 682.861 354.885 682.861 curveto 378.885 682.861 402.885 706.861 402.885 730.861 curveto gsave eofill grestore newpath iCTM setmatrix [ 0.282414 0 0 0.282414 275.146 401.098 ] concat 552.885 1241.86 moveto 738.885 1241.86 lineto 0.96 setlinewidth gsave stroke grestore newpath 594.885 1145.86 moveto 738.885 1145.86 lineto gsave stroke grestore newpath 636.885 1049.86 moveto 738.885 1049.86 lineto gsave stroke grestore iCTM setmatrix [ 1 0 0 1 0 0 ] concat /Times-Roman 10 sf 342.727 662.49 (Figure 2: TextView object structure) 8 486.039 ws newpath 309.471 277.281 moveto 309.471 278.281 lineto 531.471 278.281 lineto 531.471 277.281 lineto 309.471 277.281 lineto 0 setlinewidth gsave eofill grestore 419.221 268.641 ( ) 2 421.722 ws /Courier 10 sf 309.471 257.121 (TextView::TextView \(FILE* file\) {) 3 507.471 ws 309.471 246.521 ( TBBox* page = new TBBox\(\);) 6 477.471 ws 309.471 235.921 ( LRBox* line = new LRBox\(\);) 6 477.471 ws 309.471 225.321 ( int c;) 3 357.471 ws 309.471 214.721 ( while \(\(c = getc\(file\)\) != EOF\) {) 8 519.471 ws 309.471 204.121 ( int \(c == '\\n'\) {) 8 435.471 ws 309.471 193.521 ( page->append\(line\);) 6 459.471 ws 309.471 182.921 ( line = new LRBox\(\);) 9 459.471 ws 309.471 172.321 ( } else {) 6 381.471 ws 309.471 161.721 ( line->append\(new Character\(c\)\);) 7 531.471 ws 309.471 151.121 ( }) 4 339.471 ws 309.471 140.521 ( }) 2 327.471 ws 309.471 129.921 ( body\(page\);) 2 387.471 ws 309.471 119.321 (}) 1 315.471 as newpath 309.471 105.801 moveto 309.471 106.801 lineto 531.471 106.801 lineto 531.471 105.801 lineto 309.471 105.801 lineto gsave eofill grestore /Times-Roman 10 sf 419.221 97.161 ( ) 2 421.722 ws 340.195 85.641 (Figure 3: A TextView built from glyphs) 12 500.747 ws showpage %%Page: ? 3 initgraphics 13.5289 -23.561 translate /iCTM matrix currentmatrix def /Times-Roman 10 sf 47.4711 476.076 (view. We iterate through the file, creating a Character) 17 277.471 ws 47.4711 463.556 (for each printable character, an LRBox to contain all the) 18 277.471 ws 47.4711 451.036 (characters in each line, and a TBBox to contain all the) 20 277.471 ws 47.4711 438.516 (lines in the file. The ) 11 132.732 ws /Times-Italic 10 sf 132.732 438.516 (body) 4 152.172 as /Times-Roman 10 sf 152.172 438.516 ( function installs the TBBox as) 10 277.471 ws 47.4711 425.996 (the internal representation of the TextView. The draw) 15 277.471 ws 47.4711 413.476 (operation \(which is not shown\) simply calls draw on the) 18 277.471 ws 47.4711 400.956 (TBBox.) 6 79.4211 as 56.3611 388.436 (The code that builds a TextView is similar to the) 18 277.471 ws 47.4711 375.916 (original draw code, except that instead of calling) 14 277.471 ws 47.4711 363.396 (functions to draw the characters, we build objects) 14 277.471 ws 47.4711 350.876 (that will draw themselves whenever necessary. Using) 13 277.471 ws 47.4711 338.356 (objects solves the redraw problem because only those) 14 277.471 ws 47.4711 325.836 (objects that lie within the damaged region will get) 16 277.471 ws 47.4711 313.316 (draw calls. The programmer does not have to write the) 19 277.471 ws 47.4711 300.796 (code that decides what objects to redraw\320that code is) 16 277.471 ws 307.471 476.076 (in the toolkit \(in this example, in the implementation) 16 537.471 ws 307.471 463.556 (of the Box draw operation\). Indeed, the glyph-based) 15 537.471 ws 307.471 451.036 (implementation of TextView is even simpler than the) 14 537.471 ws 307.471 438.516 (original code because the programmer need only declare) 14 537.471 ws /Times-Italic 10 sf 307.471 425.996 (what) 4 326.921 as /Times-Roman 10 sf 326.921 425.996 ( objects he wants\320he does not need to specify ) 18 520.801 ws /Times-Italic 10 sf 520.801 425.996 (how) 3 537.471 as /Times-Roman 10 sf 307.471 413.476 (the objects should interact.) 6 414.685 ws /Times-Bold 12 sf 307.471 389.036 (2.1) 3 322.471 as 333.799 389.036 (Multiple fonts) 2 406.137 ws /Times-Roman 10 sf 307.471 374.73 (Because we built TextView with glyphs, we can easily) 16 537.471 ws 307.471 362.21 (extend it to add functionality that might otherwise be) 16 537.471 ws 307.471 349.69 (difficult to implement. For example, Figure 4 shows) 15 537.471 ws 307.471 337.17 (a screen dump of a version of TextView that displays) 18 537.471 ws 307.471 324.65 (EUC-encoded Japanese text. Adding this feature to a) 15 537.471 ws 307.471 312.13 (text view such as the Athena Text Widget would require) 18 537.471 ws 307.471 299.61 (a complete rewrite. Here we only add two lines of code.) 21 537.471 ws 307.471 287.09 (Figure 5 shows the change.) 8 416.626 ws 316.361 274.57 (Character glyphs take an optional second constructor) 12 537.471 ws 307.471 262.05 (parameter that specifies the font to use when drawing.) 16 537.471 ws 307.471 249.53 (For ASCII-encoded text we create Characters that use) 14 537.471 ws 307.471 237.01 (the 8-bit ASCII-encoded ``a14'' font; for JIS-encoded) 12 537.471 ws 307.471 224.49 (text \(kanjii and kana characters\) we create Characters) 14 537.471 ws 307.471 211.97 (that use the 16-bit JIS-encoded ``k14'' font.) 12 483.274 ws /Times-Bold 12 sf 307.471 187.53 (2.2) 3 322.471 as 333.799 187.53 (Mixing text and graphics) 6 462.142 ws /Times-Roman 10 sf 307.471 173.224 (We can put any glyph inside a composite glyph; thus it is) 22 537.471 ws 307.471 160.704 (straightforward to extend TextView to display embedded) 12 537.471 ws 307.471 148.184 (graphics. Figure 6 shows a screen dump of a view that) 21 537.471 ws 307.471 135.664 (makes the whitespace characters in a file visible by) 16 537.471 ws 307.471 123.144 (drawing graphical representations of spaces, newlines,) 10 537.471 ws 307.471 110.624 (and formfeeds. Figure 7 shows the modified code that) 17 537.471 ws 307.471 98.1037 (builds the view.) 4 371.084 ws iCTM setmatrix [ 0.641711 0 0 0.641711 41.673 188.014 ] concat gsave /picstr 584 string def 116.311 524.756 translate 561 373 scale 584 388 8 [584 0 0 388 0 0] {currentfile picstr readhexstring pop} image b24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cff b2b24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cff b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c4cff b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c4cff b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c4cff b2b27f7f7f4cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b27f7f7f4c4cff b2b27f7f7f4c4cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffff00ffff000000ffffffff00000000ffff00ffffffffffffff00000000ffff00ffffffff00ffffffff000000ffff00000000ffffffffff000000ff00ffffffffffffff000000ff00ffff00000000ffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffff00ff00ffffff00ffff00ffffffff00ff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffff0000ff00ffffffff00ffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffff00ffff00ffffffff00ff00ffffffffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffff00ffffffffffffff00ff000000000000ff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b2b2b2b2b24cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff0000ffffffffffffffff00ff00ffffffff00ff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffff00ffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b2b2b2b2b24cff b24c4c4c4c4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffff00ff00ffffffff00ff0000000000ffff00ffffffff00ff0000ffffff00ffffff00ffffffffffff00ffffffffffff00ffffffff0000ffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b24c4c4c4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffff00ffffffffffffff00ffff00000000ffff00ffffffffffffff00000000ffff00ff000000ffff000000000000ffff00ffffffffff000000000000ff00ff000000ffff00ffffffff00ffff00000000ffff000000000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffff00ffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffff00ffffffffffff00ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff00ffffffffff00000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff00ffff00000000ffffff00000000ffffff00000000ffffff00000000ffff00ffffffff00ffffffff000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ff00ffff00ffff000000ff00ff00ffffffff00ffffff00ffffffff00ff00ffff00ffff000000ff00ff00ff00ffff00ffffffffffffffffff000000ff00ffff00000000ffffff00000000ffffff00000000ffffff00000000ffff00ffffffff00ffffffff000000ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff0000ff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ff00ffff00ff00ffffff0000ff00ffffffff00ffffff00ffffffff00ff00ffff00ff00ffffff0000ff00ff00ffff00ffffffffffffffff00ffffff0000ff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffffffffffffffff00ffff00ffffffffffff00ffffffffffff00ffffffff00ffffff00ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ff00ffff00ff00ffffffff00ffff00ffff00ffffffff00ffffffff00ff00ffff00ff00ffffffff00ff00ff00ffff00ffffffffffffffff00ffffffff00ff00ffffffffffffffffffff00ffff00ffffffffffff00ffffffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff000000000000ffffff0000ffffff00ffffffffffff000000000000ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffff00ff00ffff00ffff0000ffff00ffffff0000ffffffffff00ffffffff00ff00ffff00ff00ffffffff00ff00ff00ffff00ffffffffffffffff00ffffffff00ff000000000000ffffff0000ffffff00ffffffffffff000000000000ff00ffffffff00ffffff00ffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffff00ffff00ffffffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ff00ffffffffffffffff00ff00ffff00ffffffff000000ffff00ffff00ffffffff00ffffffff00ff00ffff00ff00ffffffff00ff00ff00ffff00ffffffffffffffff00ffffffff00ff00ffffffff00ffff00ffffffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffff00ff00ff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff0000ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff0000ff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ff0000ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff000000ffffffffffffffffff00ff00ffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffff00ff00ffff00ff00ffffffff00ff00ff00ffff00ffffffffffffffff00ffffff0000ff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ff0000ffffff00ffffff00ffffffffffffffffffffffffff000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff000000ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff00ffff00000000ffffff00000000ffffff00000000ffffff00000000ffff00ff000000ffff000000000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffff0000000000ffffff00000000ffff00ffffffff00ffffff00ffffffff0000000000ffff00ffffffff00ff0000000000ffffffffffffffffffff000000ff00ffff00000000ffffff00000000ffffff00000000ffffff00000000ffff00ff000000ffff000000000000ffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ff00ff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff00ffff00000000ffffff00000000ffffff00000000ffff00ffffffff00ffffffff000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ff00ffff00ffff000000ff00ff00ffffffff00ffffff00ffffffff00ff00ffff00ffff000000ff00ff00ff00ffff00ffffffffffffffffff000000ff00ffff00000000ffffff00000000ffffff00000000ffff00ffffffff00ffffffff000000ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff0000ff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ff00ffff00ff00ffffff0000ff00ffffffff00ffffff00ffffffff00ff00ffff00ff00ffffff0000ff00ff00ffff00ffffffffffffffff00ffffff0000ff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffff00ffff00ffffffffffff00ffffffffffff00ffffffff00ffffff00ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ff00ffff00ff00ffffffff00ffff00ffff00ffffffff00ffffffff00ff00ffff00ff00ffffffff00ff00ff00ffff00ffffffffffffffff00ffffffff00ffffffffff00ffff00ffffffffffff00ffffffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffffff0000ffffff00ffffffffffff000000000000ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffff00ff00ffff00ffff0000ffff00ffffff0000ffffffffff00ffffffff00ff00ffff00ff00ffffffff00ff00ff00ffff00ffffffffffffffffff0000ffff00ffffff0000ffffff00ffffffffffff000000000000ff00ffffffff00ffffff00ffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff00ffffffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ff00ffffffffffffffff00ff00ffff00ffffffff000000ffff00ffff00ffffffff00ffffffff00ff00ffff00ff00ffffffff00ff00ff00ffff00ffffffffffffffffffffff000000ffff00ffffffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffff00ff00ff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff0000ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ff0000ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff000000ffffffffffffffffff00ff00ffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffff00ff00ffff00ff00ffffffff00ff00ff00ffff00ffffffffffffffff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ff0000ffffff00ffffff00ffffffffffffffffffffffffff000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff000000ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff00000000ffffff00000000ffffff00000000ffff00ff000000ffff000000000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffff0000000000ffffff00000000ffff00ffffffff00ffffff00ffffffff0000000000ffff00ffffffff00ff0000000000ffffffffffffffffffff00000000ffffff00000000ffffff00000000ffffff00000000ffff00ff000000ffff000000000000ffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ff00ff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffffffffff00000000ffff00ffffffff00ffffffff000000ffff00000000ffffffffff000000ff00ffffffffffffff000000ff00ffff00000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00000000ffff00ffffffff00ffffffff000000ffffffffffffffffff00000000ffff00ffffffff00ffffffff000000ffffff00ffffffffffffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00000000ffff00ffffffff00ffffffff000000ffff00000000ffff00ffffffff00ffff00000000ffffffff00ffffffffff00000000ffff00ffffffff00ffffffffffffffffffff00ffffffffff00000000ffff00ffffffff00ffffffff000000ffffffffffffffffff00000000ffffffffff000000ff00ffffffffffffff000000ff00ffff00000000ffffffffff000000ffff000000ff00ff00ffffffffffffff00000000ffffffffffffffffffffffff000000ffff000000ff00ff00ff000000ffffffff00ffffffffff00000000ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffff0000ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffff00ffffffffffffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ff00ffffffff00ffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffff0000ff00ffffffff00ffffff00ffffffff00ffffff0000ff00ffffffffffff00ffffffff00ffffffffffffffffffff00ffffffff00ffffff0000ff0000ffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffff00ffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff000000000000ffffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffff00ffffffff00ffffffff00ffffffffffff00ffffffff00ffffffffff00ffffffff00ffffffff00ffffffff00ff00ffffffff00ffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffff00ffffffff00ff00ffffffffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffff000000000000ffffff0000ffffffffff00ffffffffffff00ffffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffff000000000000ffffff0000ffffffffff00ffffffff000000000000ff00ffffffff00ffffff0000ffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffff00ffffffff00ff00ffffffffffff000000000000ffffffffffffffffffff00ffffffffff0000ffff00ff00ffffffff00ffffff00ffffffff000000000000ffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffff00ffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff00ffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffff00ffffffff00ffff00ffff00ffffffff00ffffffffffff00ffffffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ff00ffffffffffffffff00ffffffff00ffff00ffff00ffffffff00ffffffff00ffffffff00ff00ffffffff00ffff00ffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffff00ffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffff00ffffffffffffffffffff00ffffffffffffff000000ff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffff00ff00ff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000000000ffff00ffffffff00ff0000ffffff00ffffff00ffffffffffff00ffffffffffff00ffffffff0000ffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff0000000000ffff00ffffffff00ff0000ffffff00ffffff00ffffffffffffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffff00ffffffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff000000ffffffffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ff0000ffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ff0000ffffff00ffffffffffffffff0000000000ffff00ffffffff00ff0000ffffff00ffffff00ffffffffffffffffffffff00ffffffff00ffffff00ffffffff0000ffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ff0000ffffff00ff00ffffffff00ffffffffffffffffffff00ffffffff00ffffffff00ff0000ffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffff000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffffff00000000ffff00ff000000ffff000000000000ffff00ffffffffff000000000000ff00ff000000ffff00ffffffff00ffff00000000ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffff00000000ffff00ff000000ffff000000000000ffffffffffffffffff00000000ffff00ffffffff00ff000000000000ffffff00ffffffffffff00ff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffff00000000ffff00ffffffff00ff000000000000ffff00000000ffff00ff000000ffffff00000000ffffffff00ffffffffff00000000ffff00ff000000ffffffffffffffffffffff00ffffffffff00000000ffff00ff000000ffff000000000000ffffffffffffffffff00000000ffff000000000000ff00ff000000ffff00ffffffff00ffff00000000ffff000000000000ff00ffffffff00ff00ff000000ffffff00000000ffffffffffffffffff000000000000ffff00000000ffff00ff000000ffffffff00ffffffffff00000000ffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffff00ff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff00ffffff00ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffff0000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ff00ff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff000000000000ffffffffffffffffffffffffffffffffff00ffffffffff00000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff0000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffffffffff00000000ffff00ffffffff00ffffffff000000ffff00000000ffffffffff000000ff00ffffffffffffff000000ff00ffff00000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00000000ffff00ffffffff00ffffffff000000ffffffffffffffffff00000000ffffffffff000000ffff000000ff00ffffff00ffffffffffffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00000000ffffffffff000000ffff000000ff00ff00ffffffff00ffff000000ff00ffff000000ff00ff00ffffffffffffff000000ff00ffffffffffffffffffff00ffffffffff00000000ffff00ffffffff00ffffffff000000ffffffffffffffffff00000000ffffffffff000000ff00ffffffffffffff000000ff00ffff00000000ffffffffff000000ffff000000ff00ff00ffffffffffffff00000000ffffffffffffffffffffffff000000ffff000000ff00ff00ff000000ffffffff00ffffffffff00000000ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffff0000ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffff00ffffffff00ffffff00ffffffff00ffffff0000ffffff00ffffffffffffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffffffff00ffffff0000ff00ffffffff00ff00ffffff0000ff00ffffff0000ff00ffffffffffff00ffffff0000ffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffff0000ff00ffffffff00ffffff00ffffffff00ffffff0000ff00ffffffffffff00ffffffff00ffffffffffffffffffff00ffffffff00ffffff0000ff0000ffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffff00ffffff00ffffffff000000000000ffffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffffffff00ffffffff00ffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffff00ffffffff00ff00ffffffffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffff0000ffffffffff00ffffffffff0000ffff00ff00ffffffff00ff00ffffffff00ffff0000ffff00ff00ffffffffffff00ffffffff00ffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffff00ffffffff00ff00ffffffffffff000000000000ffffffffffffffffffff00ffffffffff0000ffff00ff00ffffffff00ffffff00ffffffff000000000000ffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffff00ffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff00ffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffff00ffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ff00ffffffffffffffffff00ffffffffffffff00ffffffffffffff000000ff00ffffffff00ff00ffffffff00ffffffff000000ff00ffffffff00ff00ffffffff00ffffffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffff00ffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffff00ffffffffffffffffffff00ffffffffffffff000000ff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffff00ff00ff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000000000ffff00ffffffff00ff0000ffffff00ffffff00ffffffffffff00ffffffffffff00ffffffff0000ffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff0000000000ffff00ffffffff00ff0000ffffff00ffffff00ffffffffffffffffffffff00ffffffff00ffffff00ffffffff00ffffff0000ffffff00ffffffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff000000ffffffffffffffffff00ffffffff00ffffff00ffffffff00ffffffff00ff0000ffffff00ff00ffffff0000ff00ffffffff00ff0000ffffff00ff00ffffff0000ffffffffffffffff0000000000ffff00ffffffff00ff0000ffffff00ffffff00ffffffffffffffffffffff00ffffffff00ffffff00ffffffff0000ffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ff0000ffffff00ff00ffffffff00ffffffffffffffffffff00ffffffff00ffffffff00ff0000ffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffff000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffffff00000000ffff00ff000000ffff000000000000ffff00ffffffffff000000000000ff00ff000000ffff00ffffffff00ffff00000000ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffff00000000ffff00ff000000ffff000000000000ffffffffffffffffff00000000ffff000000000000ffff000000ff00ffffff00ffffffffffff00ff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffff00000000ffff000000000000ffff00000000ffff00ff000000ffffff000000ff00ffff00000000ffff00ff000000ffffff000000ff00ffffffffffffffffffff00ffffffffff00000000ffff00ff000000ffff000000000000ffffffffffffffffff00000000ffff000000000000ff00ff000000ffff00ffffffff00ffff00000000ffff000000000000ff00ffffffff00ff00ff000000ffffff00000000ffffffffffffffffff000000000000ffff00000000ffff00ff000000ffffffff00ffffffffff00000000ffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffff00ffffffffffff00ff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff000000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff00ffffff00ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffff00ffffffffffffff0000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ff00ff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff000000000000ffffffffffffffffffffffffffffffffff00ffffffffff00000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff0000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffff00ffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00ffffff00ff000000ffffff00000000ffffff000000ff00ffff00000000ffffffff00ffffffffffffffffffffffff00000000ffffffffff000000ff00ffffffffffffff000000ff00ffff00000000ffffffffff000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff000000ffff0000ffffff00ff00ffffffff00ff00ffffff0000ff00ffffffff00ffffff00ffffffffffffffffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffff0000ff00ffffffff00ffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ff00ffff00ffffffff00ff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffff00ffff00ffffffff00ff000000000000ff00ffffffff00ff000000000000ffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffff00ffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ff0000ffffff00ff00ffffffff00ff00ffffff0000ff00ffffffff00ff0000000000ffffffffffffffffff00ffffffff00ffffff00ffffffff0000ffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ff00ffffffff00ff00ff000000ffffff00000000ffffff000000ff00ffff00000000ffffffff00ffffffffffffffffffffffff00000000ffff000000000000ff00ff000000ffff00ffffffff00ffff00000000ffff000000000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff000000ffffffffffffffff00ff0000ffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffff0000ffff0000ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff0000ffff00ffffffffff00000000000000ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffff00ffffff0000ffff00ffffffffff00000000000000ffffff00ffffffffff00ffffffffffffffffff000000000000ffffffffffff000000ffffffffffff0000ff00ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ff00000000ffffffff00ffffff00ffffff0000ffffff00ffffffffffffff00000000ffffffffffffff0000ffffffffffff0000ffffff00ffffffffff0000000000ffffff00ffff00ffffff00ffff00ffffffff0000ff00ff00ffffff00ffffffffffffffffff000000ffffffffffff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff00ffffff00ffff0000ffffffffffffffffffff00ffffffffff00ffffffffffffffffffffff0000ffffffffffffffffff00ffffffffffffff0000ffffff0000ffffff0000ffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffff00ffffff0000ffffffffff00ffffffffffffffff0000ffffffffffffffffff00ffff00ffffffff00ffffff00ffff0000ffffffffffffffffffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffff00ffff0000ffff0000ffffffff00ffffffff00ffffff00ffffffffffffffff000000ffffffffffffffffffffffffff000000ffffffffffffffffffff00ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00ffff0000000000ffffffff00ffff00ff00ff00ffffffffffff0000ffffffffffffffffff00ffff00ffffffffff00ffff00ffff00ffffffff00ffffffffffffffff00ffffff00ff00ffffff00ffffffffffff00ffffff00ff00ffffffffffffffffff00ffffffffffffffffff00ffff00ffffff00ff00ffffffffffffffffff00ffffffff00ff00ffffffffffffff00000000ffff00ffffffff00ffffffff000000ffff00000000ffffffffff000000ff00ffffffffffffff000000ff00ffff00000000ffffffffff000000ffffffffffffffffffffff00ff0000000000000000ffffff0000ff00ffffffff00ffffffffff00ffffffffff00ffffffffffffff00ffffffffff0000ffffffffffffff00ffffffffffff00ff00ff00ffff00ffffffffff00ffffffffffffffffffffff00ffffffffffffffff00ffffff000000000000ffff00ffffffffff00ffffff00ffffffffff00ffffffffff0000ffffffffffffff00ff0000000000000000ffffff0000ff00ffffffff00ffffffffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffff00ffffffff0000ffffffffffffff00ffffff00ffffff00ffffffffffffff00ffffff0000ffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffff0000ffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffffffff00ffff00ffff00ffffffffffff00ffffffffffffffffffffffff00ff00ffffffffff00ffffffffffff00ffffff00ffffffffffffffff00ff00000000000000ff00ffffff000000ff00ffffff0000ffffffffffffffff00ffffffffffffffffffff00ffff00ffffff0000ffffffffffffffffffff00ffffffff00ff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffff0000ff00ffffffff00ffffff00ffffffffffffffffffffff00ffff00ffff00ff00ffff00ffffffff00ffff000000000000ffffffffff00ff00ff0000000000ff00ffff00ff00ffffffffffff00ffffffffffff00ffffffffffff00ff00ffff00ff00ffffffffffff00ffffffffffffffffffffff00ffffffffffff00ff00ff00ffffffffffffffffff00ffffffffff00ff00ffffffffff00ff00ffffffffffff00ffffff00ffff00ffff00ff00ffff00ffffffff00ffff000000000000ffffffffff00ff00ff0000000000ff00ffffffffff00ffff00ffffffffffffffff00ffffffff00ffffffffffffffff00ffffff00ffffff00ffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ff00ff00ffffff00ffff00ffff00ff00ff00ffffffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffffffff00ffffffffffffffffffffffff00ffffffff00ffffffff00ffffffff00ffff00ffffff00ffffffffffffffffff00ffffffffffffffffff00ff00ffff00000000ffffffffffffffffffffffff00ffff00ffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffff00ff00ffff000000000000ffffffff00ffff00ffffffff00ffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffffffff00ffffffffffff00ffffffffff00ffffffffffff0000ffffffffffffff00ffffffffffffffffffff00ffffffffffff00ffffff00ffffffffffffffffff00ffffffffff00ff00ffffffffff00ffff00ffffffffff00ffffffff00ff00ffff000000000000ffffffff00ffff00ffffffff00ffffffffff00ffff00ffff00ffff00ffffffffffffff00ff00ffffffffffffffff00ffffff00ff00ffffffffffffff00ffffff00ffffff00ffffffffffff00ffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffff00ff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff00ffff00ffffffff00ffff00ffff00ff00ffff00ffffffffff00ffffffffff00ffffffffffff0000ffffffffff00ffffffffffff00ffffffffffffffffffffffff00ffff0000000000ffff00ffff00000000000000ffff0000ffffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff00ffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffff00ff00ff0000ff00ffff00ffffffff00ffff00ffffffff00ffffffffff00ffffff00ff00ff00ffffffff00ffff00ffffffffffff00ffffffffff00ffffffffff00ffffffffffff0000ffffffffffffff00ffffffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffffffffffff00ffff00ffffffffffff00ffffff00ff00ff0000ff00ffff00ffffffff00ffff00ffffffff00ffffffffff00ffffff00ff00ff00ffffffff00ffffffff0000ffffffffffffffff00ffff00ffff00ffff00ffffffff000000000000000000ffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffffffffff00ffffffffff00ffff00ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff000000ff00ffff00ffffffff00000000000000000000000000ffffffffff000000000000ffffffffffffff00ffffffffff00ffffffffffffff00ffffffffff00ffffffffff00ffffff00ff00ffffff00ffff00ffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffff0000ffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffff00ffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffff0000ff00000000000000ffffffff00ffff000000000000ffffffffff00ffffff00ff00ff00ffffffff00ffffff00ffffffffff00ffff00ffff00ffffffff00ffffffffffffffff00ffffffffffffff00ffffffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffff00ff00ffffff00ffffffffffff00ffffff00ffffffffff00ffffffff0000ff00000000000000ffffffff00ffff000000000000ffffffffff00ffffff00ff00ff00ffffffffff0000ffffff0000ffffffffffffff00ffff00000000000000ffffffff00ffffff00ffffff00ffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ffffffffffffff000000000000ffffffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff00ffffffffff00ffffffffffffffffffffffffffffff00ffffffffff0000ff0000ffffffff00ffffffffffffff00ffffffffffff0000ffffff00ffff00ffffff00ffff00ffffff00ff00ff0000ff00ffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffff0000ffffff0000000000ffff00ffffffff00ff0000ffffff00ffffff00ffffffffffff00ffffffffffff00ffffffff0000ffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffff000000ffffff00ffffffffff000000ffffffffffffffffffffff00ff00ffffffff000000ffffffffff00ffffff00ffffffffff00ffffff00ff00ffffffff00ffffffffffffffff0000ffffffffffff00ffffffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffff00ffffff00ffffffffff00ffffffff000000ffffff00ffffffffff000000ffffffffffffffffffffff00ff00ffffffff000000ffffffffffffff00000000ffff000000ffff00ff00ffff00ffff00ffff00ffffffff00ffffff00ffffff00ffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff00ffff00ffff0000000000ffffffffffffffffffffff00ffffffffffffff000000ffffffff00ffffffffffffff00ffffff00000000ffffffff0000000000ff0000000000ffffffff0000ff00ff00ffffff00ffffffffffffffff00ffffff00ffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff00ffff00ffffffffffffff00000000ffff00ff000000ffff000000000000ffff00ffffffffff000000000000ff00ff000000ffff00ffffffff00ffff00000000ffff000000000000ffffffffffffffffffff0000ff0000000000000000ffffffff00000000000000000000ffff0000ffffffff000000ffffffffffff00ffffff00ffffffff00ffffffff0000000000ff00ffffffffffff000000000000ffffff00ffffffffffff00ffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffff00ffff00ffff00ffffffff00ffffff00ffffffff00ffffffff0000ff0000000000000000ffffffff00000000000000000000ffff0000ffffffff000000ffffffffffffffff00ffffffff00ffffffffff0000ffff00ffff00ffff00ffffffff000000000000000000ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ff00ffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff00000000ffff00ffffffffffffffffff00000000ff00ffffffffffffffffff00ff00ffffff00ffffffffff00000000ffffffffffffffffffff00ffffff00ff00ffffff00ffffffff000000ffff00ffffff00ffffffffffffffff00ffff00ffff00ffffff00ffff0000000000ffffffffffffffffffffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ff00ffffffffffffffff00ffffff00ffffffffffffff00ff000000000000000000ffffff00ffffff00ffffff00ffffffffffff00ffffff000000000000ff00ffff0000ffff000000ffffffffffffff0000ffffffff00ffffffffffff00ffff0000ffffff0000ffffffff00ffffff00000000000000ffffff00ffffff00ffffff00ffffffffffff00ffffff00ff00ffffffffffffffff00ffffff00ffffffffffffff00ff000000000000000000ffffffffff00ffffffffffffffffffffff00ffff00000000000000ffffffff00ffffff00ffffff00ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffff00000000ff00ffffffffffffff00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000000000ff00ffffffffffffffffffff00ffff0000000000ffffffff00ffffffff000000ffffffffffffffff00ffff000000ffffffffffffffffff000000ffffffffffffffff0000000000ff0000000000ffff00000000000000ff0000000000ffff00000000ffff00ffffff00ffffffff00ff00ffffffff000000ffffffffffffffffff00ffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff000000000000000000000000ffffffff00ffff00000000000000ffffffff00ffffffffff00ffffffffffffffff0000ff00ffff00ffffffffffffff00ffffff00ffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffff00ffffffffffff00ffffffff00000000ffffffffff00ffffff00ffffffffffffffffffff0000ff00ffff00ffffffff000000000000000000000000ffffffff00ffff00000000000000ffffffff00ffffffffff00ffffffffffffffff00000000ffffffffffffffffff00ffffffffff00ffffffffffffff00ffffff00ffffff00ffffffffffff00ffffffffffffffffffffff00000000ffff00ffffffffffffffffffffffff00ffffffffffffffff00ffffffff000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00000000000000ffffffff00ffff00ffffffffffffffffffffffffff00ffff0000ffffffffffff00ffffffffffffffffffffffffffff00ffff00ffffffffffffff00ffffff00ff00ffffff00ffffff00ff00ff00ffff00ffffffffff00ffffffff00000000ffffffffffffff00ffffffffffff00ffffffffffffffffffffff00ffffffff00ff000000000000ffffffffffffffffffffffffffffffffff00ffffffffff00000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ff00ffffffffffff00ffff00ffff00ffffffffffffffff00ffffffff00ffffffffffffffffffff00000000ffffffffffffffffff00ffff00ffffff00ffffffffff00ffffffffffffffffffffffffff00ff00ffff00ffffffffffffff00ffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffff00000000ffffffffffffffff00ffffff00ff00ffffffffffff00ffff00ffff00ffffffffffffffff00ffffffff00ffffffffffffff00ffff00ff0000ffffffffffffffff00000000000000000000ffffff00ffffff00ffffff00ffffffffffff00ffffffffffffffffffff00ffffffff00000000ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00000000ffff000000000000ffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffff0000000000ff0000000000ffffff00ff00ffff00ff00ffffffffffffffffffffffffffff000000ffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000000000000000ffff00ffffff00ffff00ffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffffffffff00ffffffffffffffffffffffffff00ffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ff0000000000000000ffff00ffffff00ffff00ffffffffffffffff00ffffffff00ffffffffffffffffffff00ffffffffffffffffffffff00ffffffff00ffffffffffffff000000000000000000ffffffffff00ffffffffffffffffffffffffffffffffffffffff000000ffff00000000000000000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ffffffffffffffffffffffff00ffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ffffffffffffffffffffffff00ffffffffffffffff00ffffffff00ffffffffffffffffff00ffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff0000ffff00ffffffffff00000000000000ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffff00ffffffffffffffffff0000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff00ffffff00ffff0000ffffffffffffffffffff00ffffffffff00ffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffff00ffffffffffffffff00ffffffffffffffffff00ff00ff0000ffffff00ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff00ffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff00ffff00ffffff00ffffffff00ffff00ffffff00ff00ffffffffffffffffff00ffffffff00ff00ffffffffffffff00000000ffff00ffffffff00ffffffff000000ffff00000000ffffffffff000000ff00ffffffffffffff000000ff00ffff00000000ffffffffff000000ffffffffffffffffffffff00ff0000000000000000ffffff0000ff00ffffffff00ffffffffff00ffffffffff00ffffffffffffff00ffffffffff0000ffffffff0000ffffff00ff00ffff00ffffffffffffffffffff00ffffffffffffffff00ff00ffffff00ff00ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff0000ffffffffffffffffffff00ffffffff00ff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffff0000ff00ffffffff00ffffff00ffffffffffffffffffffff00ffff00ffff00ff00ffff00ffffffff00ffff000000000000ffffffffff00ff00ff0000000000ff00ffff00ff00ffffffffffff00ffffffffff00000000ffff0000ffffffffffffffffffffffff00ffffffffffffff00ffff00ffffff00ffffffffffff0000ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffff00ff00ffff00000000ffffffffffffffffffffffff00ffff00ffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffff00ff00ffff000000000000ffffffff00ffff00ffffffff00ffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffffffff00ffffffffff00ffff00ffffff00ffffffffffffffffffffffff00ffffffffffffff00ffff00ffff00ff00ffffffffff00ff00ffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff00ffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffff00ff00ff0000ff00ffff00ffffffff00ffff00ffffffff00ffffffffff00ffffff00ff00ff00ffffffff00ffff00ffffffffffff00ffffffff00ffff00ffff00ff00ffffffffffff00ffffffffff00ffffffff000000ffff00ffff00ff00ffffffff00ffff00ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffff0000ffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffff00ffffffffffffff00ffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffff0000ff00000000000000ffffffff00ffff000000000000ffffffffff00ffffff00ff00ff00ffffffff00ffffff00ffffffffff00ffffffff00000000ffff00ff00ffffffffffff00ffffffffff00ffffffffffff000000ff0000ffffff00ffffff00ffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffff0000ffffff0000000000ffff00ffffffff00ff0000ffffff00ffffff00ffffffffffff00ffffffffffff00ffffffff0000ffffff00ff00ffffffff00ff00ffffffff00ffffff00ffffffffffffffffffffffffff000000ffffff00ffffffffff000000ffffffffffffffffffffff00ff00ffffffff000000ffffffffff00ffffff00ffffffffff00ffffffff00ffff00ffff00ffff00ffffffffff00ffffffffff00ffffffffffff00ffffff0000ffffff00ffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff00ffff00ffffffffffffff00000000ffff00ff000000ffff000000000000ffff00ffffffffff000000000000ff00ff000000ffff00ffffffff00ffff00000000ffff000000000000ffffffffffffffffffff0000ff0000000000000000ffffffff00000000000000000000ffff0000ffffffff000000ffffffffffff00ffffff00ffffffff00ffffffff00ffff00ff00ffffff00ffffffffff00ffffffffff00ffffffffffff00ffffff000000000000ffffff00ffffffffffffffff00ffffffffffffffffff00ffffff00ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffff00ffff0000000000ffffffffffffffffffffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ff00ffffffffffffffff00ffffff00ffffffffffffff00ff000000000000000000ffffff00ffffff00ffffff00ffffffffff00000000ff00ffffff00ffffffffff0000ffffffff00ffffffffffff00ffffff00ffff00ffffffffff00ffffffffffff0000ffffffffffffffffffff00ffff00ffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ff00ffffffff000000ffffffffffffffffff00ffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff000000000000000000000000ffffffff00ffff00000000000000ffffffff00ffffffffff00ffffffffffffffff0000ff00ffff00ffffffffffff00ffff00ff00ffffff00ffffffffff0000ffffffff00ffffffff0000000000ff00ffff00ffffffff00ffffffffffffffffffffffffffff00000000ffff00ffffff00ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff00ffffffffffff00ffffffffffffffffffffff00ffffffff00ff000000000000ffffffffffffffffffffffffffffffffff00ffffffffff00000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ff00ffffffffffff00ffff00ffff00ffffffffffffffff00ffffffff00ffffffffffffffffffff00000000ffffffffffffff00ffff00000000000000ffffffffff00ff00ffff00ffffffffffffff00ffffff00ffffff00ffffffffffffffffffffffffffffffffff00ffffffff00000000ffffffffff00ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000000000000000ffff00ffffff00ffff00ffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffff00ffff0000ffffffffffffffff00ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ffffffffffffffffffffffff00ffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffffff000000ffffffffffffffffffffffffff00ffffffffff00ffffffffff00000000000000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff0000ffffffffffffffffffffffff0000ffffffffffffffffffffffffff00ffffffffffffffffffffff00000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff00ffffffffffffff00ffffffffffffff0000ffffffffffffffffffffffffffffffff00ffffffffffff00ffff0000ffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffff0000ffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ff000000ffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffff0000ffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff000000ffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ff00ffff000000ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff0000ffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffff00ffffffffffffffff00ffffffffffff00ffffffffffffffffff00ffffffffffffffffff00ff000000000000000000ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffff00000000ffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffff00000000000000ffffffffffffffff00ffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffff00ffffffffff00ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffff00ffffffffffffffffff0000ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffff00ffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ff00ffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffff00ffffff000000000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00ffff00ffffffffffffffffff00000000ffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ffffff0000ffffffffffffffffffffffffff00ffffffffffffffff00000000ffffffffffffffff000000000000ffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff0000ffffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffffffffff0000ffffffffffffffffffffffffff00ff00ffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffff00ffffffffffff00ffffff00ffffffffffffffff000000ffffffffff00ffffffffffffffff00ffffffffffffffffffffffff00000000ffffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffff00ffffffffffffff00ff00ffff00ffffffffffffffffffffffffff00ffffffffffffffffffffff000000ffffffff00ffffffffffff0000000000ffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff0000ffffffffff00ffffffffffff00ffffffff0000ffffff00ffffffffffffffffffffffffff000000ffffffffffffffffffffffff00ffffffffffffffffff0000000000ff00ffffffffffffffff00ffffffffffffffffffff000000ffffff0000000000ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffff00ffffffffffff00ffffffff00ffffffffffff00ffffff000000ffff00ffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffffffffffff0000ffffffffffffffffffffffff00ffffffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffff00ffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ff000000ffffffffffffffffffffffffffff00ffff000000ffffff00000000000000000000000000ffffffffffffffff00000000ffffffffffffff0000ffffffffffffffffffffffffffff00ffffff00ffffffffff000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00000000ffffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffffff000000ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffff00ffff00ffffffffffffffffff00ffff00ffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffff0000000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff000000ffffff00ff0000ffffff00ffffffff0000000000ffffffffffffff000000ff00ff00ffffffffffff000000ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff0000ffffffffffffffffffffffffffffffff0000000000ffffffffffff00000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff00ffffffffff00000000ffff00ffffff00ffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffff0000000000ffffffffffffffffffffffffff00ffffffffffffffff00ff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff0000000000ffff00ffffffffffffffffffffffffffffffffffffff00ffff0000ff00ff00ffffff00ffffff000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff000000ffffffff00ffffffff00000000ffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ff0000ffffffffffffffffffffffff00ffffffffffffff00ffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffff00ffffff000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffff0000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffff00ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffff0000ffff0000ffffffff00ffffffffff00ffffffffff000000000000ffffffffffff00000000ffffffffffffffff00ffffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffff00ffffffffffffffffffffffffffff00000000000000ffffffffffffffff00000000000000ffffffffff0000ffffff0000ffffffffffffffffffffff00ffffffffffffffffffff00000000000000ffffffffffffffff0000ffffffffffffffffffffffffffff0000ffffffffffffffffffff00ffffff00ff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffff0000ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffff00ffffff00ffff00ffffffff0000ff00ff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffff00ffff00ffffff00ffffffffffff000000ffffffffffffffffffffffffff000000ffffffffffffffffffff00ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffff00ffffff000000000000ffffffff00ffffffffffffff00ffffffffffff00ffffffffffffffffffff00ffff00ffffffffff00ffffffffffffffffffffff00ffffffffffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffffffffff0000ffffffffffffffff00ffffff0000ffffffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffffffffff00ffffffffff0000ffffffffffff00ffffff000000000000ffffffffffffff000000ffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffff00ffffff00ff00ffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ff000000ffffffffffffffffffffff00ffffffffff0000ffffffffff00ffffff00ff00ffffff00ffffffffffff00ffffff00ff00ffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffff00ffff00ffffff00ffffffffffff00ffffff0000ffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffff0000ffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff00ff00ff00ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ff00ffffffffffff00ffffffffffffffffffffff00ffffffffffffffff00000000000000ffffffffffffff00ffffffffffff00ffffffff00ff00ffffffffffff00ffffffffffffffff00000000ffffffffffffff0000ffffffffffffffffffffffffffff00ffffffffff00ffffffff00ff00ffffffffffff00ffffffff00ff00ff00ffffffffffffffffffffffffffffffff0000ffffffffffff0000ffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffffff0000ffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff0000ffffff00ffffffffffffffffff00ff00ffffffffffff00ffffffff00ff00000000000000ff00ffffff000000ff00ffffff0000ffffffffffffff00ffff00ffffffffffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00000000ffff00ffffff00ffffffff00ffffff00ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffff00ffffffffffffffff00000000000000ffffffffffffffff00000000000000ffffffff00ffff00ffffffffff00ffffffff00ffffffffffff00ffffffffffffff00ff00ffffffffffff00ffffffffffff00ffffffffff00ffffffff00ffff00ffffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffff00ffffffffff00ff00ffffffffffff00ffffffffffffff00ffffffffffffffffff00ff00ffff00000000ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffff00ffff00ffffffffff00ffffffff00ffffffff00ffffffff00ffffffff00ffff00ffffff00ffffffffffffffffff00ff00ffffffffffff0000ffffffff0000ffffff0000ffff00ffff00ff00ffffffff00ffffffffff00ffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffff00ff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00000000000000000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff0000ffffffffffffff00ffffffffff00ffffffffff00ffffffff00000000000000000000000000ffffffffffffffffffff00ffffffffff00ffff00ffffffffffff00ffffffff00ffffffffff00ffffffffffff00ffff00ffffffffff0000ffffffffffff000000ffffff00ffffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffff0000ffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffff00ffff00ffffffffffff00ffffff00ffff0000000000ffff00ffff00000000000000ffff0000ffffffff00ffffffff0000ffffffffffffffff00ff0000ffff00ff00ffffffff00000000ff000000000000ffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffffffffff00ffffffffff00ffff00ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff00ffffffffffffff00ffffffffff00ffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffff00ffffff00ffffffffff00ffffffff00ffffffffff00ffffffffffff00ffffff00ffffffffff00ffffffff000000ffffffff00ffffffffff00ffffff00ffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffff00ffffff00ffffffffff00ffffff00ffffff00ff00ffffff00ffff00ffff00ffffffff00ff00ffffffffff0000ffffff0000ffffffffffffffff00ffff00ffff00ffffffffff00ffff00ff00ffffffff00ffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ffffffffffffff000000000000ffffffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff0000ffffffffffff00ffffffffff00ffffffffff00ffffffffffff000000000000000000ffffffffff0000000000ff00ffffffffffff00ffffff00ffffffffff00ffffffffff00ffffffffff00ffffffffff00ffffffffffffffffff00ffffff00ffff00ffffffff00ffffffffff00ffffff00ffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffffffff00ffffffff0000ffffff00ffffffffffffffffff00ffffff00ffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ff00ff0000ff00ffff00ffffffffff00000000ffff000000ffffffffffff00ffff0000ffffffffffff00ffff00ff00ffffffff00ffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ff00ff0000000000000000ffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff000000ffffffff000000000000ffffff00ffffffffffff00ffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffff00000000ffffffffff00ffffff00ffffffff00ffffffffff00ffffffffffff0000ffffff00ffffffffffffffff00ffffffffff00ffff00ffffffffffffffffffff00ffffff00ffffffff00ffffff00ffffffffffffff00ffffffffff0000ffffffffffffffff00ffffff00ffffffffffffffff00ffffffffffffffffff00ffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ff000000ffffffffffffffffffffff00ffffff00ffffffff00ffffff0000000000ff0000000000ffffffff0000ff00ff00ffffff00ffffffffffff00ffffffff00ffffffff00000000000000000000000000ffff0000000000000000000000ffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ff00ffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00000000ffffff00ffffffffffffff00ffff0000ffffff0000ffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffff00ffff0000ffff000000ffffffffffffff0000ffffffff00ffffffffffff000000000000000000ffffffffffffffffffff00ffffffffffffffff00ffffff00ffffff00ffffffffffffff00ffffff000000ffffffff00ffffffffffff0000ffffffffffffffffff000000ffffffffffffffff00ffffff00ffffff00ffffffffff00ffff0000ffffff0000ffff00ffff0000ffffffffff00ffffffff00ffffffffffff0000ffffffffffffffffffff00ffffffffffffffffff00ffff0000000000ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffff00ffffff00ff00ffffff00ffffffff000000ffff00ffffff00ffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff00ffff00ff00ffff0000ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffff00000000ff00ffffffffffffff00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ff00ffffffff00ffffffffffffff00ffffffff00000000ffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffff00ffffffff00000000000000000000000000ffffffff0000000000ffffffffffffffffff0000ff00ffff00ffffffffff000000000000ffffffffffffff00ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff0000ff00ffff00ffffffffffff00ffffffff00000000ffffffffffffffff0000000000ffffffff00ffffffffffffffffffffffffffff00000000ffff00ffffffffffffffff00ff00ffffffff000000ffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffff0000ff00ffff00ffffffffff0000000000ff0000000000ffff00000000000000ff0000000000ffffffff00000000ffffffffffffffff00000000000000ffff00ffffffff00ffff00ffff00ffffff00ffffffffff00ffffffffffffffffffffff00000000ffff00ffffffffffffffffffffffff00ffffffffffffffff00ffffffff000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ff00ff00000000000000ffffffff00ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffff00ff00ffff00ffffffffffffffffffffff00ffffff00ffffffffffffffffff00ff0000ffffffffffffffffff00000000ffffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffff00000000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00000000ffffffffffffff00ffffffffffff00ffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffff00000000ffffffffffff00ffffff00ff00ffffff00ffffff00ff00ff00ffff00ffffffffffffff00ffff00ff0000ffffffffffffffffff00ffffff0000ffffffffff00ffff00ffff00ffffff00ffffffffff00ffffffffffffffffffff00ffffffff00000000ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff0000ffffffffffffffff000000000000000000ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff0000000000ffffff00ff00ffff00ff00ffffffffffffffffffff00ffffffffffffffffffffffffff00ff00ffffffffffffff0000000000000000000000ffffffff00ffffffffffffffffffffffffffffffffffffffff000000ffff00000000000000000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ff00ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff000000ffffffffffffff00ffff0000ffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff0000ffffffffffffffffffffffff0000ffffffffffffffffffffffffff00ffffffffffffffffffffff00000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff000000ffffffffffffffffffffffff000000ffffffffffffffff0000ffffffffffffffffffffffff00ffffff00ffffffffffff00ffffffff0000ffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00000000000000ffffffffffff0000ffffff0000ffffffffffffffffffff0000000000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffffffffffffff000000ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffff0000ffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffff00ffff00ffffff00ff00ffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff0000ffffffffff00ffffffff00ff00ff00ffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ff000000ffffffffffffffffffffff00ffffff000000000000ffffffffff00ffffffffff00ffffffff00ffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffff00ffffffff00ffff00ffffffffffffffffffff00ffffffffffffffff00ffffffffff0000ffffffffffffffffffff00ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffffffff00ffff00ffffff0000ffffffffffffffff00ffffffffffffffffffffff00ffffffffffff00ffffffffffffffff000000ffff00ffffffff000000ffff00ffff00ffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff0000ffffff00ffffffffffffffffff00ff00ff00ffffffffffffffffffffff00ffffffffff00ffffffffff00ff00ffffffffffff00ffffffffffff00ffffffff00ffffffffffffffffffff00ffffffffffffffffffff0000ffffffffffffffffffffffff00ffffffff000000ffffffffffffffffffffff00ffffffffffffff00ff00ffffffffffff00ffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffff00ff00ffff00000000ffffffffffffffffff00ffffffffffffffffffffffff00000000000000ffffffff00ffffffffffffffff00ffffffff00ffff00ff00ffff0000ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffff00ffffff00ffffffffffffffffffffff00ffffffffff00ffffffffffff0000ffffffffffffff00ffffffffff00ffffff0000ffffffffffffffffffff00ffffffffffffffffffff00ff00ffffffffffff00ffffffffff0000000000ffffffffffffffffffffffffffff00ffffffffffff00ffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffff00ffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffff00ffffffff00ffff00ff00ff00ffff00ffffffffff00ffffffffff00ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffff00000000000000ffffffffffff0000ffffffffffffff00ffffffffff00ffffffff00ffffffffffffffffffff00ffffffffffffffffff00ffff00ffffffffff0000ffffffffffffffffff00ffffffffffffffffffffff00000000ffffffffffff00ffff00ffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ffffff0000ffffffffffffffffffffffffff00ffffffffffffffff00000000ffffffffffffffff000000000000ffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffff0000ffffffff00ffffffffff00ffff00ff00ff00ffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffff00ffffffff00ffffffffffffffffffff00ffffffffffffffffff00ffffff00ffffffffff00ffffffffffffffffff00ffffffffffffffffffff00ffffff00ffffffffffff00ffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffff00ffffffffffffff00ff00ffff00ffffffffffffffffffffffffff00ffffffffffffffffffffff000000ffffffff00ffffffffffff0000000000ffffffffffffffffff00ffffffffffffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffffffffff0000000000ff00ffffffffffffffffff0000000000ffffffffffff00ffff00ff0000000000ffffffffffff00ffffffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffffffff00ffffffff0000ffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffff00000000ffffff00ffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffff00ffffffffff0000000000ffffffffffffffffffff00ffff0000ffffffffffff00ffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff00ffffffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffff00ffffffffffffffffffff00ffffff00ffffffffffffffffffff00000000ffffffffffffffff00ffffffffffffffffff00ff00ffff00ffffff00ffffffffffff00ffffffffff00ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ff000000ffffffffffffffffffff00ffffffffffffff00ffffffff0000ff00000000000000ff0000ffff000000000000ffffff00ffffff00ffff00ff00000000ffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffff00ffffffffff00ffffffff000000ffffffffffffffffff000000ffffffffffffffff00ffffff00ffffffff00ffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffff0000000000ffffffffffffffffffff00ffff00ffff00ffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffff0000ffffff0000000000ffffffffffff0000ffffffff00ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffff0000ffffff0000ffffffff0000ffffffffff0000ffffff00ffff0000ffff000000ffffffffffffff00ffffffff00000000ffffffffffffffff00ffffffffffffffff00ffffffffffff0000ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffff00ffffff00ffffff00ffffffffffffffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff0000ffffffffffffffffffffffffffffffff0000000000ffffffffffff00000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff00ffffffffffff00ff00ffffffff000000ffffff00000000ffff00ffffff00ffffffffff0000000000ffffffffffffffffffffffffff00ffffffffffffff00ff00ffff00ffffff00ffffffffffff0000ffffffff00ffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffff00ffffffff00000000ffffffffffffff00ffffff00ffffffffffffffff00ffffffffffffffffffffffffff00ffffffff00ffffffffffff00000000ffff00ffffffffffff00ffffffffffffffffffffffffffffffff0000000000ffffffffffffff00000000000000ffffffffffffffffff0000ff00ffff00ffffffffff00000000ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff000000ffffffffffff00ffffffffffff00ffffffff00ffffffff00000000ffffffffffffffffffffff00ff0000ffffffffffffffff000000ff00ffffffffffff00ffff00ff00ffffff00ffffffffffff00ff00ffff00ffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ff00ffffffffffffffffff00ffffffffffffffffffffffff00ffffffffff00ffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffff00ffffffff00000000ffffff00ffffffffffff0000000000ffffffffffffff00000000ffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffff000000ffffffffffffffff00ffffffffffffffffffff00ffffff0000ffffffffffff00000000ff0000000000ffffffffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ff00ffffffffffff0000ffff0000ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffff000000ffffffffff00ffffff0000ffffffff00ffffffffff00ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffffff0000ff00ff00ffffff00ffffffffffffffff0000ffffffffffffffffffffff00ffffffff00ffffffffff0000ff00ff00ffffff00ffffffffffff00ffffff00ff00ffffffffffffff00000000000000ffffffffffffffffff0000ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffffffffffff00ffffff00ff00ffffffffff00ffffffffff0000ffffffffffffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffffffffffff00ffffff0000ffffffffffffff00ffffffffffffffffffffffff00ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ff00000000000000ff00ffffff000000ff00ffffff0000ffffffff00ff00ffffffffffff00ffffffffffffffffff00ffffff00ffffffff000000ff00ffffff0000ffffffffffffffff00000000ffffffffffffff00ffffffffffffffffffffffff00ff00ffffffffffff00ffffffffffffff00ffffffffffffffffffffffff000000ffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ff00ffff000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffff00ffff00ffffff00ffffffffff00ffff00ffffffffff00ffffffffffffffffff00ffffff00ffffffffff00ffff00ffffff00ffffffffff00ffffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffff00ffff00000000ffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff0000000000ffff00ffff00000000000000ffff0000ffffffff00ffff00ffffffffffff00ffffff00ffffffff00ffffff00ffffff00000000000000ffff0000ffffffffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffff00ffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffff00ffffffffff00ffffffffff00ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffff00ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffff00ffff00ffffffff00ff00ffffffff00ffffff00ffffffffff00ffffff000000000000ffffff00ffffff00ffff00ffffffff00ff00ffffffffff00ffffffffff00ffffffffffffffffff0000ffffffffffffffffff00ffffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffff00ffffffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00ffff00ffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ff00ff0000ff00ffff00ffffff00ffffff00ffffffffff00ffffff00ffffffffffffffff00ffffffff00ff00ff0000ff00ffff00ffffffffff00ffffffffff00ffffffffffffffffff000000ffffffffffffff00ffffff00ffffffffff00ffffffffffffffffff00ffffffffffffffff00ffffffffffffff00ffffffffffff00ffffff00ffffffffffffffff000000ffffffffff00ffffffffffffffff00ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000000000ff0000000000ffffffff0000ff00ff00ffffff00ffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffff00ffffffffff0000ff00ff00ffffff00ffffffffff00ffffffffffff0000ffffffffffffff00ffff000000ffffffffff00ffffff00ffffffff00ffffffffffffffffff00ffffffffffffffff00ffffffffffffff00ffffffffffff00ffffffff00ffffffffffff00ffffff000000ffff00ffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffffffff000000ffff00ffffff00ffffffff00ffffff00ffffff00ffffffff000000000000ffffff00ffffffffff000000ffff00ffffff00ffffffffffff00ffffff000000ffffffffffffffff00ffffffffffffffffffff00ffffff00ffffff00ffffffffffffffffffffff00ffffffffffffff00000000ffffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffffff000000ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000000000ff0000000000ffff00000000000000ff0000000000ffffffff0000ff00ffff00ffffffffffffffffffff00ffffff00ffffff00000000000000ff0000000000ffff000000000000ffffffffffffffffffffffff00ffffffff00ffffffffffff0000ff00ffff00ffffffffffff000000ffffff00ff0000ffffff00ffffffff0000000000ffffffffffffff000000ff00ff00ffffffffffff000000ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffffff00ff00ff00ffff00ffffffffffffffffffff00000000ffffffffffffffffffffff00ffffff00ffffffff00ff00ff00ffff00ffffffffffffffffffff00ff00ffffffffffffffffffffff00ffffff00ffff00ffffffffffff00000000ffffffffffff00ffffff0000000000ffff00ffffffffffffffffffffffffffffffffffffff00ffff0000ff00ff00ffffff00ffffff000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000000000ff0000000000ffffff00ff00ffff00ff00ffffffffffffffffffffffffffffffffffffff00000000000000ffffff00ffffffff00ff00ffff00ff00ffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffff00ff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffff00ffffffff00ffffffff00ffff00000000ffffffff00ffffffffff000000ff00ffff000000ff00ffff00000000ffffffffffffffffffffffffff00ffff00ffffffff00ffff0000000000ffff0000000000ffff00ffffffffff00ffffffff00ffff000000ffffff000000000000ffff000000ff00ffff00000000ffffffff00ffffffff00ffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffff00ffffffff00ffffffff00ff00ffffffff00ffffff00ffffffff00ffffff0000ff00ffffff0000ff00ffffffff00ffffffffffffffffffffff00ffffff00ffffffff00ffffffff00ffffffffffff00ffffffff00ffffffffff00ffffffff00ff00ffffff00ffff00ffffffffffff00ffffff0000ff00ffffffff00ffffff00ffffffff00ffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffff00ffffffff00ffffffff00ff00ffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffffffffffffffffffffffffff00ffffffffff00ffff00ffffffffff00ffffffffffff00ffffffffff00ffffffffff00ffff00ffff00ffffffff00ff00ffffffffffff00ffffffff00ff00ffffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff00ffffffff00ffffffff00ff00ffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ff000000000000ffffffffffffffffff00ffffffffffff00ffff00ffffffffff00ffffffffffff00ffffffffff00ffffffffff00ffff00ffffffffffffff00ff00ffffffffffff00ffffffff00ff00ffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffff00ffffffff00ffffffff00ff00ffffffffffffffff00ffffffff00ffffffff00ff00ffffffff00ff00ffffffff00ffffffffffffffff00ffffffffffffffff0000ffffffffffff00ffffffffffff00ffffffffffff00ffffffffff0000ffffffffffffffff00ff00ffffffffffff00ffffffff00ff00ffffffffffffffffffffffffff00ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffff00ffffffff0000ffffff00ff00ffffffff00ffffff00ffffffff00ffffffff00ff00ffffff0000ff00ffffffff00ffffffffffffffffff00ffffffffffffff0000ffffffffffff00ffffffffffff00ffffffffffff00ffffffffff0000ffffffffffffffff00ff0000000000ffff00ffffffff00ff00ffffffff00ffffffffffffffff0000ffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff00ffffffff00ff000000ffffff00000000ffffffff00ffffffff00ffffffff00ffff000000ff00ffff00000000ffffffffffffffffffffff00ffffffffff00ffff00ffffffffff00ffffffffffff00ffffffffffff00ffffffff00ffff00ffffffffffffff00ff00ffffffffffff00ffffffff00ffff00000000ffffffffffffffffff00ff000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffff00ffff00ffffff00ff00ffffffff00ff00ffffffffffffff00ffffff00ffff00ffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffffffff00ffffff0000ffffffffff0000ffffffffffffff00ffff00ffffffff00ffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffffffffffff00ff00ffffffff00ffffffffffff00ff000000000000ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff00ffffffffff0000000000ffffffff0000ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff000000ffffffffffff00ffffff000000ffffffffff00ffffff0000ffffffffff00ffffffffffffffff0000ffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff0000ffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff000000ffffffffffffffffffff00ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff00ffff00ffffffff00ffffffff00ffffffffffffffff0000ffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00000000ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffff00ffff00ffffff00ff00ffff00ffffffffff00ffffff00ffffffffff00ffffffffff0000ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffff00ffffffff0000ffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffff0000ffffffffffffffffffffffff00ffffffffffffffffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff0000ffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffff0000ffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff000000ffffffffffff00ffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff000000ffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ff00ffff000000ffff00ffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffffff0000ffffffff00ffffffffff00ff00ffffffffff00ff00ffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff00ffffff00ff00ffffffffffffffff00ffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffff00ffffff00ff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffff00000000ffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffff0000ffffffff00ffffffff00ffffffff00ffffffffffffff00ffffffffffffffffff00ff00ffff00000000ffffffffff00ffffffffff00ff00ffffffffff00ffff00ffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffff0000ffffffffffffffffffffffffff00ffffffffffffffffff00ffffff00ffff00ffffffffffffffff00ff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffff00ff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffff00ffffffffff00ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffff00ffffffffff0000000000000000000000ffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffff00ffffffffff00ffffffffffff00ffff00ffffffffffff00ffffffffffffffffffff00ffffffffffffffffffff00ffff00ffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffff00ffffffff00ffffffff0000ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ffffffffffffffffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffffffffff00ffffffffff00ffff00ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffff00ffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffff00ff00ffffff00ffffffffffff00ffffff00ffffffffff00ffffffffffffffffffff00ffffffffffffff00000000ffffff00ffffffffff0000ffffffff00ffffffffffffffffffff00ffff00ffffff00ffffffff0000ffffff0000ffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ffffffffffffffffff00ffff00ffffff00ffffff000000000000ffffffffffffffffffff00ffff0000ffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ffffffffffffff000000000000ffffffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffff00ffffffffffff00ffffff00ffffffffffffffff000000ffffffffff00ffffffffffffffff00ffffffffffffffffff00ffffffff00ffffffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffffffffff00ffff00ff00ffffffff00ffffff00ffffffffff00ffffffffffffffffffffff00ffffffffff00ffffffff00000000ffffffffffffff0000ff00ffffffffffffffffffffff00ffff00ffffff00ffffffffff00000000ffff000000ffffffffff0000ff00ffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffff00ffffffffffffffffff00ffff00ffffff00ffff00ffffffffffff0000000000ffffffffff000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff000000ffffffffffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffff00ffffffffffff00ffffffff00ffffffffffff00ffffff000000ffff00ffffffffffffffff00ffffffffffffffffff00ffffffff00ffffffff00ffffffffffffffff00ffffff00ffffffff00ffffffffffffff00ffffffffffffffffff00ffff00ffff00ffffffff00ffffff00ffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff00ffff00ffffffffffffffffffff00ffffffff00ffffffffffffffffff0000ffffffffffffffffffffffff00ffffffffff00ffffffffffff00ffffffff00ffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ff00ffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00000000ffffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffffff000000ffffffffffffffffff00ffffffffffffffff00ffffffff00ffffffff00ffffffffffffffff00ffff00ffff00ffffff00ffff0000000000ffffffffffff00ffffff00000000000000ffffff00ffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffff00ffffffffffffff00ffffff00ffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffff00000000ff00ffffffffffffff00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff000000ffffff00ff0000ffffff00ffffffff0000000000ffffffffffffff000000ff00ff00ffffffffffff000000ffffffffffffffffffffffffffff00ffffffffffffffff0000000000000000000000ffffff00000000ffff00ffffff00ffffffff00ff00ffffffff000000ffffffff00ffffff00ffffffffffffffffffff0000ff00ffff00ffffffffffffff00000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffff00ffffffffffffffffff00000000ffffffffffffffffffffffffffffff00ffffffffffffff0000ffffffffffffffffffffffffffffff000000ffff00ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffff00ffffffffffffffffffffff00000000ffff00ffffffffffffffffffffffff00ffffffffffffffff00ffffffff000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff00000000ffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffff00ffffff0000000000ffff00ffffffffffffffffffffffffffffffffffffff00ffff0000ff00ff00ffffff00ffffff000000ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffff00ffffffff00000000ffffffffffffff00ffffffffffff00ffffffffff00ffffffff00ffffffffffffffffffffffff00000000ffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffff00ffff00ff0000ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff000000ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffffffffff00ffffffffffffffffffff00ffffffff00000000ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff000000ffffff00ffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffff000000ffff00000000000000000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ff00ffffffffffff0000ffff0000ffffffff00ffffffffff00ffffffffff000000000000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffff0000ffffffff0000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff0000ffffffff0000ff00ffffffffffff000000000000ffffffffffff00ffffffffffffffffffffffffff000000ffffffffffff0000ffffff000000000000ffffffff00000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffffff0000ff00ff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffff000000ffffffffffffffff00ffffffffff0000000000ffffffffffffffff00ffffffffffffffff00ffffff00ffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00000000000000000000000000ffffffffffff000000ffffffffffffffffffffffffffff00ffffffffffff00000000ffff0000ff00ffffffff00ffffff0000ffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffff00ffffffffffffff000000ffffffffff00ffffffffffffffff0000ffff0000ffffffff00ffffff00ffffffffffffffffffff00ffffffffff0000ffffffffffffffffffff00ffffffffffffffffffff00000000ffffffffffffffffffffffffff00ffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffffffffffff00ffffff00ff00ffffffffffff00ffffffffffffffffffff00ffffffffffffff00ffffffffffffffff00ffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffffff00ffffffffffffff00ffffff00ffff00ffff00ffffffff00ffffff000000000000ffffffffffffffffffff00000000ffffff00000000ffffff00ffff00ffffff0000000000ff00000000ffffffffff00ffffffff00ffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffff00ffffff00ffffffffffffffffffffff00ffffff0000ffffffffffffffffffffff00ffffffffffffff00ffff00ffffffff00ffffffffffff00ff00ff00ffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffff0000ffffffffffffffff00ffffffffff00ffffffffffff00ffffff0000ffffffffffff00ffff00ff00ffffffffffffffff00ff00ff00ffffffff00ffffffffffffffffffff00ffffffffffffffff00ffffffff00ffff00ffffffffffffffffffff00ffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ff00000000000000ff00ffffff000000ff00ffffff0000ffffffffffffff00ffff00ffffffffffff00ffff00ffffffff00ffffffffffffff00ffffffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffffffff00ffffffffffffff0000000000ffff00ffff00ffffff00ff00ff00ffffffffffffffffffffffffffffff00ffffffff00ff00ffffffff00ffff00ffff00ffffffffff00ffffff00ffffff00ffffffff00ffffffff00ffffffff00ffffffffffffffffffffffff00ffff00ffffffffffffffff00ffffff00ffffffffffffffffffff00ffffffffffff00ffffffffffffffffff00ffffffffffffffff00ffff00ffffff00ff00ffffffffffff00ffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffff000000ffff00ffffff00ffffff0000ffffffffffffffffffffff00000000ff00ffffffffffffff00ffffff00ffffffffffffffff00ffff0000ffffffffff00ffffffffffffffffffff00ffffffffffffff00ffffffff000000ffffffffffffffffffffff00ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffff00ffff00ffffff00ffffffffffffffffff00ff00ffffffffffff00000000ffffffff00ffffffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffffff00ffffff00ffffffffffffffffffffffffffffff00ffffffff00ff00ffffffff00ffff00ffff00ffffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffffffffff00ff00ffffffffffffffff00ffffff00ffffffffffffffffffff00ffffffffffffff00ffffffffffffff00ffffffffffffffffff00000000ffff00ffff00ffffffffffff00ffff00ffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffff00ffffff00ff00ffffffffff00ffffffffff00ffffff00ffffffffffffff00ffffffff00ffffffffffffff00ffffff00ffffffffff00ffffffffffffffffffff00ffffffffffffffff0000000000ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff0000000000ffff00ffff00000000000000ffff0000ffffffff00ffffffff0000ffffffffffff00ffff00ffffffff00ffffffffffffff00ffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffff00000000ffffffffffff0000000000ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffff00ffff00ffffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffff00ffffffff0000ffffffffffffffff00ffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffff00ffffffffff00ffff0000000000ffffffffffffffff00000000ffffffffffffff00ffffffffffffff00ffffffff00ffff00ffff00ffffffff00ff00000000000000000000000000ffffffff00ffffff00ffffffffffffffff00ff00ff00ffffffff00ffffffffff00ffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffff00ffff00ffffffff00ff00ffffffffff0000ffffff0000ffffffffff00ffff00000000000000000000ffffff00ffffffffffff00ffffffffffffff00ffffffffff00ffffffffffffffff00ffffff00ffffffffffff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffff000000000000ffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffff0000ffffff0000ffffffffffffff00ffffff00ffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffff00000000ff000000000000ffffffffff00ffff00ffffffffffffffffffffff00ffffff00ffffffffffffffff0000ffffffff00ffffffffff00ffff00ffffff00ffff00ffffffffffffff00ffffffffffffffffffffff00ffffff00ffff0000ffffffffff0000ff00ffffff00ffffffffffff00ffffffffff00ffffffffffffffffffffff00ffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ff00ff0000ff00ffff00ffffffffff00000000ffff000000ffff00ffff00ffffffff00ffffffffffffff00ffffffffffff00ff00ffffffffff00ffffffffffff0000ffffffffffff00ffff0000ffffffffffff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffff00ffff00ff00ffffffff00ffffff00ffffffff00ffffff00ffffffff000000000000ffffffffffffffffffffff00000000ffff000000ffffffff00ffffff0000000000ffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffff0000ffffffffffffffffff0000000000ffffffffffff00ffff00ffffff00ff00ffffffffff000000000000000000ffffffffffff00ffffff00ffffff00ffffffffffff000000000000ffffffffffffff00ffffffffff00ffffffffffffff0000000000ffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000000000ff0000000000ffffffff0000ff00ff00ffffff00ffffffffffff00ffffffff00ffffffff00ffff00ffff00ff0000ffffffffffffff00ffffffffff0000ffffffffffff00ffffff00000000ffffffffffffffff000000ffffffffffffff0000000000ffff00ffff00ffffff00ffffffffffffff00ffffffffffffffffffffff00ffffffffffffff00ffffffffff00ffff00ff00ffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffffffff00ffffffff00ffffffffffff00ffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffff0000ffffffffffffffffff00000000ff00ffffffff0000ffff0000000000000000000000ffffffffffffff000000ffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffff00ffffffffffff00ffff00ff00ffff00ffffffff00000000ffff00ffff00ffffffffffffff00ffff00ffffffffffffffffff00ffffffffff00ffffffffffff00ffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffffffff000000ffff00ffffff00ffffffffffff00ffffffffffffffffff00ffff00ffff00ff00ff00ffffffffffff00ffffffffff00ffffffffff00000000ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffffff0000ffffffffffffffffff00ffffffff00ff00ffffffff00ff00ffff00ff00ffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffff00ff00ff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffff00ffffffffffff00ffff00ff00ffff00ffffff00ffffff000000ffff00ffffffffffffffff00ffff00ffffffffffffffffff0000ffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000000000ff0000000000ffff00000000000000ff0000000000ffffffff00000000ffffffffffffff00ffff00ff00ffff00ffff00ffffff00000000ffffffff00ff00ffffffffffff000000ffffffffffffffff00000000000000ffffffffffff00000000000000000000000000ffffff00ffffffff00000000ffffffffffffffffffff00ffffffff00ff00ffffffff00ff00ffff00ff00ffffffff00ffffff00ffffff00ffffffff00ffffffff00ffffffff00ffffffffffffffffffffff00000000ffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffff000000000000ff00ffff00ff00ffff00ffffffffffffffffff00ffffff00000000000000ffffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffff00ffffffffff000000000000000000ffffffffffffff00ffffff00ffffffffffffff0000000000ffffffffffffffffffff0000ffffffff00ffffffffffffff0000000000ffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffffff00ff00ff00ffff00ffffffffffffff00ffff00ff0000ffffffffff00000000ffffffff00ffff00ffffffffffff00ffffff00ff00ffffffffffffff00ffff00ffff00ffffff00ffffffffffff0000000000ffffffffffff00ffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffff00000000ffffff00000000ffff00ffff00ff00ffff0000000000ff00000000ffffff000000000000ff00ffffffff00ffffffffffffffffffff00ffff00ff0000ffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffff00ffffffff000000000000000000000000ff00ffffffffffff0000000000ffffffffffff000000ff00ffffffffffffffffffffffff00ffff00ffffffffffffffff00ff00ffffffffffffffffffff00ffffffffff00ffffffffffffffff00ff0000ffffffffffffffff00ff00ffff00ffffffffffffff00ffffffff00000000ffffff00ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000000000ff0000000000ffffff00ff00ffff00ff00ffffffffffffffffffff00ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff00ffffff00ffffffff00ffffffffff00ffff00ffffffffffffffff00ffffffffffffffffffff00ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff0000000000000000000000ffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffff00000000ffff00000000ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff00ffffff0000ffffffffffffffffffffff00ffffff00ffffff00000000000000000000000000ffffffff00ffffffffff00ffff00ffffffffffff00ffffffffffffffffffffff00ffff0000ffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff000000ffffffffffffffff00ff0000ffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffff0000ffff0000ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff0000ffffffffff000000ff00000000ffffffffffff000000ff0000ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff00000000ffffffffffffffff00ffffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ff00000000ffffffff00ffffff00ffffff0000ffffff00ffffffffffffff00000000ffffffffffffff0000ffffffffffff0000ffffff00ffffffffff0000000000ffffff00ffff00ffffff00ffff00ffffffff0000ff00ff00ffffff00ffffffffffffffffff000000ffffffffffff00ffffff000000ffffffffffffffffffffffff00ffffff0000ffffffffffff0000ffff00ffff00ffffffffff0000ffff0000ffffffffffff0000ff00ff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffff00ffff00ffffff00ffffffffffff000000ffffffffffffffffff00000000ffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffffffffffffff000000ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00ffff0000000000ffffffff00ffff00ff00ff00ffffffffffff0000ffffffffffffffffff00ffff00ffffffffff00ffff00ffff00ffffffff00ffffffffffffffff00ffffff00ff00ffffff00ffffffffffff00ffffff00ff00ffffffffffffffffff00ffffffffffffffffff00ffff00ffffff00ff00ffff0000ffff0000ff00ffff00ffffffffffffffffffff00ff00ffffffffffffffffffff0000ffffffffffffffffffff00ffffff00ff00ffffffffffffffffffffff00000000ffffff00000000ffffff00ffff00ffffff0000000000ff00000000ffffffffff00ffffffff00ffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffff00ffff00ffffff00ffffffffffff00ffffff0000ffffffffffff00ffffffff00ffff00ffffffffffffffffffff00ffffffffffffffff00ffffffffff0000ffffffffffffffffffff00ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffffffff00ffff00ffff00ffffffffffff00ffffffffffffffffffffffff00ff00ffffffffff00ffffffffffff00ffffff00ffffffffffffffff00ff00000000000000ff00ffffff000000ff00ffffff0000ffffffffffffffff00ffffffffffffffffffff00ffff00ffffff0000ffffffffff0000ffff0000ff0000ffffff0000ffffffff0000000000ffffffffff0000ff00ff00ffffffffffffff000000ff00ffffff0000ffffffffffffffffffff00ffffffff00ff00ffffffff00ffff00ffff00ffffffffff00ffffff00ffffff00ffffffff00ffffffff00ffffffff00ffffffffffffffffffffffff00ffff00ffffffffffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffff00ffffffff000000ffffffffffffffffffffff00ffffffffffffff00ff00ffffffffffff00ffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ff00ff00ffffff00ffff00ffff00ff00ff00ffffffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffffffff00ffffffffffffffffffffffff00ffffffff00ffffffff00ffffffff00ffff00ffffff00ffffffffffffffffff00ffffffffffffffffff00ff00ffff00000000ffffffffffff00ff00ffff0000ffff00ffffffff0000ffff00ffffff00ffffffffffffff00ffffff00ffffffffffffff00ffff00ffffff00ffffffffffffffffffffff00ffffffff00ff00ffffffff00ffff00ffff00ffffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffffffffff00ff00ffffffffffff0000ffffffff0000ffffff0000ffff00ffff00ff00ffffffff00ffffffffff00ffffffffffffff00ffffffffff0000000000ffffffffffffffffffffffffffff00ffffffffffff00ffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff00ffff00ffffffff00ffff00ffff00ff00ffff00ffffffffff00ffffffffff00ffffffffffff0000ffffffffff00ffffffffffff00ffffffffffffffffffffffff00ffff0000000000ffff00ffff00000000000000ffff0000ffffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffff00ffffff000000000000ffffffff00ff00ff0000000000ffffffffffffffff0000000000ffffffff00000000000000ffff0000ffffffffffffffffffff00ffffffffffffffffffff00ffffff00ffff00ffffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffff00ffffffff0000ffffffffffffffff00ff0000ffff00ff00ffffffff00000000ff000000000000ffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00000000ffffffffffff00ffff00ffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff000000ff00ffff00ffffffff00000000000000000000000000ffffffffff000000000000ffffffffffffff00ffffffffff00ffffffffffffff00ffffffffff00ffffffffff00ffffff00ff00ffffff00ffff00ffff00ffffffff00ff00ffffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffffffff00ffffff00ffffff00ffffffffff00ffffff00ffffff00ffffff00ffff00ff00ffffffffffff00ff00ffff00ffffffff00ff00ffffffffffffffffffff00ffffffffffffffffff00ffffff000000000000ffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffff0000ffffff0000ffffffffffffffff00ffff00ffff00ffffffffff00ffff00ff00ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffff00ffffffffffff00ffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff00ffffffffff00ffffffffffffffffffffffffffffff00ffffffffff0000ff0000ffffffff00ffffffffffffff00ffffffffffff0000ffffff00ffff00ffffff00ffff00ffffff00ff00ff0000ff00ffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffff00ffffffff0000000000ff0000000000ffffffffff00ffffff0000000000ffffffff00ffff00ffff0000ffffff00ffff00ff00ff0000ff00ffff00ffffffffffffffffff00ffffffffffffffff00ffffffff00ffff00ff00ffffffff00ffffff00ffffffff00ffffff00ffffffff000000000000ffffffffffffffffffffff00000000ffff000000ffffffffffff00ffff0000ffffffffffff00ffff00ff00ffffffff00ffffffffff00ffffffffffffffffffffffffff0000000000ffffffffffffffffffff00ffff0000ffffffffffff00ffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff00ffff00ffff0000000000ffffffffffffffffffffff00ffffffffffffff000000ffffffff00ffffffffffffff00ffffff00000000ffffffff0000000000ff0000000000ffffffff0000ff00ff00ffffff00ffffffffffffffff00ffffff00ffffffff00ffffffffffffff00ffffffffffff00ff000000000000000000ffffff00ffffffffffffffffffffffffff00ffff00ffff00ffff00ffffffff0000ff00ff00ffffff00ffffffffffffffffff00ffffffffffffff00ffffffffff00ffff00ff00ffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffffffff00ffffffff00ffffffff00000000000000000000000000ffff0000000000000000000000ffffffffff00ffffffffffffffffffffffff00ffffffff000000ffffffffffffffffff000000ffffffffffffffff00ffffff00ffffffff00ffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff00000000ffff00ffffffffffffffffff00000000ff00ffffffffffffffffff00ff00ffffff00ffffffffff00000000ffffffffffffffffffff00ffffff00ff00ffffff00ffffffff000000ffff00ffffff00ffffffffffffffff00ffff00ffff00ffffff00ffff0000000000ffffffffffff00ffffffffffffffffffffff00000000000000000000000000ffffff00ffff00ffff00ff00ffffffffff000000ffff00ffffff00ffffffffffffffffff00ffffffff00ff00ffffffff00ff00ffff00ff00ffffffff00ffffff00ffffffff00ffffff00ffffffff00ffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff00ffff00ff00ffff0000ffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffff00ffffff00ffffff00ffffffffffffffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000000000ff00ffffffffffffffffffff00ffff0000000000ffffffff00ffffffff000000ffffffffffffffff00ffff000000ffffffffffffffffff000000ffffffffffffffff0000000000ff0000000000ffff00000000000000ff0000000000ffff00000000ffff00ffffff00ffffffff00ff00ffffffff000000ffffffff00ffff00000000000000ffffffff00ffffffff00ff00ffffffffffffffffff00ffff00ffffffffff00000000000000ff0000000000ffffffffffffffff00ffffffff00ff00ffffffff00ff00ffff00ff00ffffffff00ffffff00ffffff00ffffffff00ffffffff00ffffffff00ffffffffffffffffffffff00000000ffffffffffffffff00000000000000ffff00ffffffff00ffff00ffff00ffffff00ffffffffff00ffffffffffffffffffffffffff0000000000ffffffffffffff00000000000000ffffffffffffffffff0000ff00ffff00ffffffffff00000000ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00000000000000ffffffff00ffff00ffffffffffffffffffffffffff00ffff0000ffffffffffff00ffffffffffffffffffffffffffff00ffff00ffffffffffffff00ffffff00ff00ffffff00ffffff00ff00ff00ffff00ffffffffff00ffffffff00000000ffffffffffffff00ffffffffffff00ffffffff000000000000ff00ff00ff00ffffffff00ffffff00ffff00ffffffff00000000000000000000000000ffff00ff00ff00ffff00ffffffffffffffffffffffffff00000000ffffff00000000ffff00ffff00ff00ffff0000000000ff00000000ffffff000000000000ff00ffffffff00ffffffffffffffffffff00ffff00ff0000ffffffffffffffffff00ffffff0000ffffffffff00ffff00ffff00ffffff00ffffffffff00ffffffffffffffffffffffff00ffffffff00000000ffffff00ffffffffffff0000000000ffffffffffffff00000000ffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00000000ffff000000000000ffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffff0000000000ff0000000000ffffff00ff00ffff00ff00ffffffffffffffffffffffffffff000000ffffff00ffffffffffffff00ffffffffffffffffff00000000000000ffffffff00ffff00000000000000ffffffffffffffff00ffffffffffffffff00ff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ff00ffffffffffffff0000000000000000000000ffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffff00ffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ffff00ffffffffff00ffffff00ffffffffffffffffff00ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffff00ffffffff0000ffffffffffffffffffff00ffffffffffffffff00ff00ffffffffffff0000ffff0000ffffffff00ffffffffff00ffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffff0000ffffffffffffffff00ffffffffffffffff0000ffffffffffffffffffffffffffffffffff0000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffff000000ffffffffffffffff00ff0000ffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00000000000000ffffff0000000000000000000000ffffffffffff00ffffff00ff00ffffffffffffff00000000000000ffffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffff00ffffffffffffff00ffff00ffffff00ffff00ffffffff0000ff00ff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffff00ffffffffffffffffff00ffffffffffffffff00ffffff00ffffff00ffffffffffffffffffff00ff00ff0000ffffff00ffffff00ffffffffff0000000000ffffffffffff00ffffff00ffffffffffffff00000000ffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffff00ff00000000ffffffff00ffffff00ffffff0000ffffff00ffffffffffffff000000ffffffffffffff00ffffffffff0000000000ffffffffffffff00ffffff00ffffffffffffffffffff0000ffffffffffffffffffffffffff000000ffffffffffffffffffff00ffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffffffffffffffffff00ffffffffffff00ffffff0000ffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffff00ffffffffffff00ffffff00ff00ffffff00ffffffffffff00ffffff00ff00ffffffffffff00ffffffffffffffffffffffffffffffffff000000000000ffff00000000ffffff00000000ffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffff00ffffff00ffff00ff00ffffffffffffffffff00ff00ffffff00ff00ffffffff00ffffffff00ffffffffffffffffffffff00ffffff0000ffffffffff00ffffffff00ffffff00ffffffffffffffffffffff00ffffffffffffff00ffffff000000000000ffffffff00ffff00ffff0000000000ffffffff00ffff00ff00ff00ffffffffffffff00ffffff0000ffffffffff00ffffffff00ffffffffffffffffffffff00ffffffffff00ffffffffff00ffffffffff0000ffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ff00000000000000ff00ffffffffffffff00000000ffffffffffffff00ffffffffffffffffffffffffffffff00ffff00ffffffffffffffffff00ffffffffff00ffffffffffffffffffffffff00ffffffffffff00ff00000000000000ff00ffffff000000ff00ffffff0000ffffffffffffff00ffff00ffffffffffffffffffffffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffffffffffffffffffffffff00ff00ffffffffffffffffffffffff00ffffffffffffffffffffff00ffffff00ffff00ffffffff00ffffff00ffffffffffffffffff00ffff00ffffff00ffffffffffff00ffffff00ffffffffffffffffffffffff000000ffff00ffffffff00ffffffff00ff0000ffffffffffffffffffffffff00ffffffffffff00ff00ff00ffffffffffffffffffff00ffff00ffff00ffff00ffffffffff00ffff00ffff00ffffffffffffff00ffffffffffff00ffffffffff00ffffff00ffffffffffffffffffffff00ffffffffff00ffffffff00ff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff00ffff00000000000000ffffff00ff00ffff00ffff00ff00ffffff00ffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffff00ff00ffffffffffff00ffff00ffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffffff00ffffffff00ffffffff00ffff00ffffff00ffffffffffffffffff00ff00ffffffffffffffffffffffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffff00ffff00ffffffff00ffffffff00ffffffffffffffff00ffff00ffff00ff00ffffffffffff000000ffffffffffffffffff00ffffffffffffffff00ffffffffff000000000000ffffffffffffffffffffffffffffff00ffffffffff00ffffff00ffffffffffffffffffff00ffffff00ff00ff00ffffff00ffff00ffff00ff00ff00ffffffffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ffff00ffff00ffff00ffffff00ff00ffff00ffff00ff00ffffffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffff00ffffffff0000ffffffffffffff00ff00ffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffff0000000000ffff00ffff00000000000000ffff0000ffffffff00ffffffff0000ffffffffffffffffffffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffffffffffffffffffffffff00ff00ffffffffffff00000000000000000000000000ff00ffffff0000ffff00ffff00ffffffffff00ffffff00ffffffffffff000000ffff00ffff00ff00ffffffffffffff00ffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffff000000ffffff00ffff00ffffffff00ffff00ffff00ff00ffff00ffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffff000000ffffff00ffffffff00ffff00ffffffffffff00ffffffffffffff00ffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ff00000000000000ff00ffffffff00ffffffffff00ffffffffffffffffff0000ffffffffffffffffffff0000ffffff0000ffffffffffffff0000ffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffff00ff00ffffff00ffff00ffff00ffffffff00ff00ffffffffff0000ffffff0000ffffffffffffffffffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffff00ffffffffffffffff00ff00ff00ffff00ffff00ffffffffff00ffffff00ffff0000ffffffff000000ff0000ffffff00ffffffffffffff00ffffffffffffffffffffff0000ffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffff000000ff00ffff00ffffffff00000000000000000000000000ffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffffffffff000000ffffffff00ffffffffff00ffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff0000ff00000000000000ffffff00ff00ffff00ffff00ff00ffffffffff00ffffffffff00ffffffffffffffffff000000ffffffffffffffffff00000000ffff000000ffffffffff00ffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffff00ffffff00ffff00ffffff00ff00ff0000ff00ffff00ffffffffff00000000ffff000000ffffffffffffffffff0000000000ffff00ffffffff00ff00ffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffff0000ffffffffffffffff00ffff00ffff00ffff00ffffffffff00ffffff00ffffff00ffffffff00ffffff0000ffffff00ffffffffffffffff00ffffffffffffffffffffff0000000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffff00ffffff00ffff00ffffffff00ffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffff0000ffffff00ffff00ffffffff00ffffffffff00ffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ff00ffff00ffff00ff00ffffffffff00ffffffffffff0000ffffffffffffff00ffff000000ffffffffffffff00ffffffff00ffffffffffffff00ff0000000000000000ffffff000000ffffffff00ffffffffff0000000000ff0000000000ffffffff0000ff00ff00ffffff00ffffffffffff00ffffffff00ffffffffffffffffffffff00ffffffffffff00ffffffff00ff00ffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffff00ffffffffffffff00ffff00ffff00ffff00ffffff00000000ffff00ffff00ffffffffff00ffffff000000000000ffffffffff000000ff00ffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffff000000ffffffff00ffffffffff00ffffffffffffff00ffffffffffff00ffffff00ffff00ffffffff00ffff00ffff0000000000ffffffffffff00ffffffffffffffffffffffffff00ffffff00000000ffffffffff00ffff00ffffffffffffffffffff00ffffff00ffffffff00ffffffffffffffff00ffffff00ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffff00ff00000000000000ff00ffffffffffff00ffffff000000ffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00000000ffffffffffff00ffffff00ff00ffffff00ffffffff000000ffff00ffffff00ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffffffffffffffffffff00ffffffffff00ffffffff00ffff00000000000000ffffffffffffff000000ffff00ffff00ffff00ffffff000000ffff00ffffffffffff00ffffff00ffff00ffffffffffff00ffffff000000ffffffffffffffffffffff00ffffffffffffffffffffffffff000000ffffffffffffffffffff00000000ffffffffffffff00ffff0000ffffff0000ffffffff00ffffff00ffff00ffffffff00000000ffff00ffffffffffffffffffff00ffffffffffffffffffffff00000000ffffffffffffffffffffffffffff000000ffffffffffffffff00ffffff00ffffff00ffffffffffffffffff00ffff00ffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000000000ff00ffffff00ffffffffffffffffff00ffffffffffffffff000000000000ffffffffffffffffffffffff00ffffffff00ffffffffffff00000000ffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff0000000000ffff00000000000000ff0000000000ffffffff00000000ffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ff00ffffffff00ffffffffffffffff00000000000000000000000000ffff00ffffffffffffffffff00ffffffffff00ffffffff00ffff00ffffffffffff00ffffff00ffffffffff0000000000ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffffffffffffff00ffffffff00000000ffffff0000000000ff00ffffffffffffffffffff00ffff0000000000ffffffffffff00ffffffffffffffffffffffffffff000000ffffffffffffffffffff000000ffffffffffffffffffffff0000ff00ffff00ffffffffff00000000ffff00ffffff00ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ff000000000000000000ffffffffffffff00ffffffffffffffffffffffff00ff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffffff00ff00ff00ffff00ffffffffffffff00ffff00ff0000ffffffffffffffffffffffff000000000000ff00ffffffff00ffff00000000ffffffffffffffffffffffffffffff00ffffffffffffffff000000000000000000000000ffffffff00ffffffff00ffff00ffffffffffff00ffffffffff00ffffffffff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffff000000ff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffff00000000000000ffffffff00ffff00ffffffffffffffffffff00ffffffffffffffffffffffffffff00ffff00ffffffffffffffff00ffffff00ffffffffffffffffffffffff00000000ffffffffff00ffffffff00000000ffffffffff00ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffff00000000000000000000000000ffffffffffff00ffffffffffffffffffffffff00ffffffffffff00ffffffffffffff00ffffffffffffffffffffff00ffff000000000000ffffffffffffffff000000ffffffffffff0000000000ff0000000000ffffff00ff00ffff00ff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffff00000000000000ff00ffff00ffffffffff00ffffffffff00ffff00ffffff00ffff000000000000ffffffffffffffff000000ffffffffffffffffff00ffffff0000ffffffffffffffffffffff00ffffffffffffffffffffffffff000000ffffffffffff00ffffffffffffffffffffffffffff00ffffffffffff00ffffffff00000000ffff000000000000ffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffffffff000000ffffffffff00ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffff000000ffffffffffffffffff00ffffffffff00ffffffffff00ff00ffffffffffff0000ffff0000ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffff0000ffffffffffffffff00ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff00000000000000ffffffffffffffffffffff000000ffffffffff00000000ff00ffff00ffff00ffffffffffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffff00ffffff00ffffffffffffffff00000000000000ffffffffff00ffff00ffffff00ffff00ffffffff0000ff00ff00ffffff00ffffffff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff0000ffffffffff0000ffffffffffffffffff00ffffffffffffffffff00ffffffffffffffff00ffffffffffffffff0000ffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffff0000ffffff0000ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffff00ffffffffffffffff00ffff00ffff00ff00ffff00ff00ffffffffff00ffffffff00ffffffffffffffffff00ffffffffffffffffffff00ffffff0000ffffffffffffff00ffffffffff00ffffffffff00ffffff00ff00ffffff00ffffffffffff00ffffff00ff00ffffffffff00ffff00ffffff00ff00ffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ff000000ffffffffffffffffffffff00ffffffffff0000ffffffffffffffff00ffffff00ffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffff00ffffffff00ffffffffff0000ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffff0000ffffffffffffff00ffffffffffff00ffffffffff0000ffffffffff00ffff00ffffff00ffff00ffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffffff00ffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffff00ffff00ff00ffffffff00ffffff00ff00ffffffff00ffffffffffffffffff00ffffffffffffffffffffff000000ffff00ffffffffffff00ffffffffff00ffffffffff00ff00000000000000ff00ffffff000000ff00ffffff0000ffffffffff00ffff00ffffff0000ffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff0000ffffff00ffffffffffffffffff00ff00ffffffffffff00ffffffffffffffff00ff00ffffffffffffffffffffffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ff00ffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffff0000ffffffffff00ffffffffff00ff00ffffffffffff00ffffffff00ffff0000000000ffff00ffffffff0000ffffffffffffffffffffffffff00ffffffffff00ffffffffff00ff00ffffffffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff00000000ffffff0000ffffffff0000000000ffff0000000000ffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffff00ffffffffff00ffffffffff00ffffffff00ffffffff00ffffffff00ffff00ffffff00ffffffffff00ff00ffff00000000ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffff00ffff00ffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffff00ffffffffffffffffffff00ffffff00ffffffffffff00ffff00ffffffffff00ffffffff00ffff00ffffff00ffff00ffffffff00ff00ffffffffffff00ffffffffff00ffffffffff00ffffffffffff0000ffffffffffffff00ffffffffff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff0000ffffffff00ffffff00ffff00ffffff00ffffffffffffff00000000ffffffffffffff00ffffffffffffff00ffffff00000000000000000000ff0000ffff00ffff0000000000ffff00ffff00000000000000ffff0000ffffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffff00ffff00ffffffffffff00ffffffffffffff00ff00ffffffffffff00000000000000000000000000ff00ffffff0000ffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffff00ffffff00ffffffffffffffffffffffff00ffffffffffffffffffffff00ff00ffffffffffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff0000ffffffffff00000000000000ffffffffffff0000ffffffffffffff00ffffffffff00ffffffff00ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00000000ff00ff0000ff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffffffffffffffff0000ffffffff00ffffffffffffff0000ffffffff0000ffffffff00ffffff00ff00ffffff00ffff00ffff00ffffffff00ff00ffffffff00ffffffffffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffffffff00ffffffff00ffffffff00ffffffffffffffffff00ffffff00ffffffffff00ffffffffffff00ffffff00ffffffffffffffffffffff00ffffffffffffffff00ff00ff00ffff00ffff00ffffff00ffffff00ffffffffff00ffffffffffff00ffffff00ffffffffffff0000ffffffff00ffffffffffffffffffffffff00ffffffffffffffff00ffffff00ffffffffff00ffffff00ffff0000000000ffff00ffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffff00ffffffff00ffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff000000000000ffff00ffffff00ffff00ffffff00ffffffffffff00ffff0000ffffffffffffffffff0000000000ffffffffffffffffffff0000ff00ffffffffffff00ffff00ffffff00ffff00ffffff00ff00ff0000ff00ffff00ffffff00ffffffffffffff00ffffffffffffffffffffffffff0000ffffffffff00ffffffffffff00ffffffff0000ffffff00ffffffffffffffffff00ffffff00ffffffffff00ffffffffffff00ffffff00ffffffffffffffffffffff0000ffffffffffffffff00ffff00ffff00ffff00ffffff00ffffff00ffffffffff00ffffffff0000000000ff00ffffffffffffffff0000ff00ffffffffffffffffffffffffff00ffffffffffffffff00ffffff00ffffffffff00ffffff00ffffffffffffffffff00ffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffff00000000ffffff00ffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff00000000ff00ffffffff00ffff0000000000ffff0000000000ffffffffffffff000000ffffffffffffffffffffff00ffffffffffffffffff00ffffffff0000ffffffffffffff0000000000ff0000000000ffffffff0000ff00ff00ffffff00ffffff00ffffffffffffff00ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffff00ffffffff00ff000000ffffffffffffffffffffff00ffffff00ffffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffff00ffffffffffffff00ffff00ffff00ffff00ffffffff00ffffff00ffffffff00ffffff00ffff00ffff0000000000ffffffffffffff0000ffffffffffffffffffffffffffff00ffffffffffffffff00ffffff00ffffffff00ffffff0000000000ff0000000000ffffff00ffffffffffffffff00ffffff0000ff00000000000000ff0000ffff000000000000ffffff00ffffff00ffff00ff00000000ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff00ffff00ffffffffffffff00ffffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffff00ffff00ffff00ffffffffffff00ffffff00ff00ffffff00ffffffff000000ffff00ffffff00ffffffff00ffff0000000000ffffffffffffffffffffffff00ffff00ffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffffffff00ffffffffff00ffffffff00ffff00000000000000ffffffffffffff000000ffff00ffff00ffffffff00ffffff00ffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffff00ffffff00ffffff00ffffffff00ffffff00ff00ffffff00ffffff00ffffffffffff0000ffffffffffff0000ffffffffff0000ffffff00ffff0000ffff000000ffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffff00000000ffff00ffffff00ffff000000000000000000000000ffff00ffffff00ffff00ffffff00ffffff00000000000000ffffffffffffffffffffffffff00ffffffffffffffffff0000ffffffff00ffffffffff0000000000ff0000000000ffff00000000000000ff0000000000ffffff00ff00ffffffff000000ffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffff0000ff00ffff00ffffffff00000000000000000000000000ffff00ffffffffffffffffff00ffffffffff00ffffffff00ffff00ffffffffff0000ff00ffff00ffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffff00000000ffff00ff00ffffffffffff0000ff00ffff00ffffffffff0000000000ff0000000000ffff00ffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffff00ffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff000000000000ffffffff00ffffffff00000000ffffffffffffffffffffffff00ff00ffffffff00ffffff00ffff00ffffff00ffff00ffffffffffff0000000000ffffffffffff000000ff00ffffffffffffffffff00000000000000ffffffff00ffffff00ff00ffffff00ffffff00ff00ff00ffff00ffffffffffffff00ffffffffffff00ffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff00ffffffffffffffff000000000000000000000000ffffffff00ffffffff00ffff00ffffffffffffff00000000ffffffffffffffff00ffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffffffff000000ff00ff00ffffffffffff00000000ffffffffffff00ffffff00ff00ffffff00ffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffffffffff00ffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff000000ffffff00000000ffff00ffff00ffffff0000000000ffff0000000000ffffffffffffffffff00ffffffffffffffffff00ffffff0000ffffffffffffffffffff00ffffffffffffffffff0000000000ff0000000000ffffff00ff00ffff00ff00ffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffff00000000000000ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffff0000000000ff0000000000ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffff00ffffffff0000ffff00000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff000000ffff00ffff00ff00ffffffffffff0000ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ff0000ff0000ff00ff00ffffffff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff00ff00ff000000ff00ffffffffffff00000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff00ff00ff00ffff0000ffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ff0000ffffff0000ffffff00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ff000000ffff0000ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00000000ff00000000000000ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ff00ff00ff00ff00ffffffffff00ffff00ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ff000000ff00ff00ffffffffff00ffff00ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000000000ff00ff00ff00ffffffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ff00ff00ffffff00ffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ff000000000000000000ff00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b2b2b2b2b24cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b2b2b2b2b24cff b24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4cff b2b27f7f7f4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7fb24c4c4c4c4c4c4c4c4c7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb24c4c4c7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7fb27f7f7f7f7f7f7f7f4c7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb27f7f4c7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7fb27f7f7f7f7f7f7f7f4c7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb27f7f4c7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7fb2b2b2b2b2b2b2b2b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fff7fff7f7f7fff7fff7f7f7fff7fff7f7f7fff7fff7f7f7fff7fff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb2b2b2b27f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fffffff7f7f7fffffff7f7f7fffffff7f7f7fffffff7f7f7fffffff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fffffffffff7fffffffffff7fffffffffff7fffffffffff7fffffffffff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b27f7f7f4c4cff b2b27f7f7f4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c7f7f7f4c4cff b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c4cff b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c4cff b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c4cff b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b24cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b24cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b24cff b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff grestore iCTM setmatrix [ 1 0 0 1 0 0 ] concat 196.459 499.596 (Figure 4: TextView displaying EUC-encoded text) 10 396.163 ws newpath 48.551 271.601 moveto 48.551 272.601 lineto 288.551 272.601 lineto 288.551 271.601 lineto 48.551 271.601 lineto gsave eofill grestore 167.3 262.961 ( ) 2 169.802 ws /Courier 10 sf 48.551 251.441 (while \(\(c = getc\(file\)\) != EOF\) {) 6 246.551 ws 48.551 240.841 ( if \(c == '\\n'\) {) 5 150.551 ws 48.551 230.241 ( line = new LRBox\(\);) 7 186.551 ws 48.551 219.641 (+ } else if \(!isascii\(c\)\) {) 5 210.551 ws 48.551 209.041 (+ line->append\() 3 150.551 ws 48.551 198.441 ( new Character\() 7 168.551 ws 48.551 187.841 ( tojis\(c, getc\(file\)\), k14) 11 252.551 ws 48.551 177.241 ( \)) 6 90.551 ws 48.551 166.641 ( \);) 4 84.551 ws 48.551 156.041 ( } else {) 4 108.551 ws 48.551 145.441 ( line->append\(new Character\(c, a14\)\);) 6 288.551 ws 48.551 134.841 ( }) 2 66.551 ws 48.551 124.241 (}) 1 54.551 as newpath 48.551 110.721 moveto 48.551 111.721 lineto 288.551 111.721 lineto 288.551 110.721 lineto 48.551 110.721 lineto gsave eofill grestore /Times-Roman 10 sf 167.3 102.081 ( ) 2 169.802 ws 71.424 90.561 (Figure 5: Modified TextView that displays) 10 242.805 ws 142.031 78.041 (Japanese text) 2 195.072 ws showpage %%Page: ? 4 initgraphics 13.5289 -23.561 translate /iCTM matrix currentmatrix def /Times-Roman 10 sf 56.3611 508.942 (A Stencil is a glyph that displays a bitmap, an HRule) 20 277.471 ws 47.4711 496.422 (draws a horizontal line, and VGlue represents vertical) 14 277.471 ws 47.4711 483.902 (blank space. The constructor parameters for Rule and) 15 277.471 ws 47.4711 471.382 (Glue specify the object's size in printer's points.) 14 241.334 ws /Times-Bold 12 sf 47.4711 446.942 (2.3) 3 62.4711 as 73.7991 446.942 (Formatting the text view) 6 200.102 ws /Times-Roman 10 sf 47.4711 432.636 (Glyphs encapsulate the task of drawing; we can define) 16 277.471 ws 47.4711 420.116 (other components that handle higher-level operations) 10 277.471 ws 47.4711 407.596 (such as text formatting. These components manipulate) 13 277.471 ws 47.4711 395.076 (arbitrary glyphs\320they are not restricted to text. Toolkits) 15 277.471 ws 47.4711 382.556 (that define only large-grained objects cannot provide) 12 277.471 ws 47.4711 370.036 (these kinds of components because they do not define) 16 277.471 ws 47.4711 357.516 (the primitive components that the operations manipulate.) 12 275.511 ws 316.361 508.942 (Adding text formatting capabilities to TextView is) 12 537.471 ws 307.471 496.422 (straightforward. Figure 8 shows a version that formats) 15 537.471 ws 307.471 483.902 (text \(or any other glyphs\) into lines of specified width.) 18 537.471 ws 307.471 471.382 (The code introduces two more predefined glyphs: a) 14 537.471 ws 307.471 458.862 (Composition is a composite glyph that formats its) 14 537.471 ws 307.471 446.342 (components into groups, and a Discretionary represents) 12 537.471 ws iCTM setmatrix [ 0.798226 0 0 0.798226 21.6848 112.513 ] concat gsave /picstr 469 string def 107.471 557.622 translate 451 267 scale 469 278 8 [469 0 0 278 0 0] {currentfile picstr readhexstring pop} image b24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c b2b24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c b2b27f7f7f4cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b27f7f7f4c b2b27f7f7f4c4cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b2b2b2b2b24cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b2b2b2b2b2 b24c4c4c4c4c4cffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b24c4c4c4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffff000000ffff00ffffff00ffff00000000ffffffff0000ffff00000000ff00000000ffffff000000ffffffff0000ffff00ffffffffffff00000000ffff000000ffffffff0000ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ff00ffffff00ffff00ffff00ff00ffffffffff00ffffff00ff00ffffff00ffff00ffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00ffffffffff00ffffff00ff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ffffffff00ffffff00ffffffff00ffffffffff00ffffff00ff00ffffffffffff00ffffffffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff0000000000ff00ffffff00ff00ffffff00ffffff00ffffffff00000000ff00ffffff00ffff0000ffffffff00ffffffff00ffffffffffff00000000ff00ffffffffffff00ffffffffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ffffff00ff0000ffff00ff00ffffff00ff0000ffffffffffffffff00ff00ffffff00ff00ffffff00ffff00ffffffff0000ffff00ffffffffff00ff00ffffff00ffff00ffffffffffffff0000ffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffff000000ffff00ff0000ffffff00000000ffffff00ffffffff000000ffff00000000ffffff000000ffff00000000ffff00ff0000ffffff000000ffffff000000ffff00000000ffffffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff00000000ffff000000ffffffff0000ffffff000000ffff00ffffffffffff000000ffffffffffffffff00000000ffffff0000ff00ffff000000ffffff000000ffffffff0000ffffffffffffffffff00ff00ffffff000000ffffffff0000ffff00ffffff00ffffffffffffffff000000ffffff0000ff00ff00ffffffffff00ffffffffffff000000ffff00ffffff00ffffff0000ffffffffffffffffffff0000ffffff000000ffffff000000ffffff000000ffff00ffffff00ffff000000ffffffff0000ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffffff00ffffffff00ffff00ff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffff0000ffffff00ffffffffff00ffffffff00ffff00ffffffffffffff00ff00ff00ffffff00ffffffff00ffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffff0000ff00ffffffffff00ffffffffff00ffffff00ff00ffffff00ffff00ffff00ffffffffffffffff00ffff00ff00ffffff00ff00ffffff00ffffff00ffffff00ffff00ffffffff00ffffffff00ffff00ff00ffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff00ffffffffffffffff00ffffffffffffffff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffffff00ffffffffffffffffffff00ff00ff00ffffff00ffffffff00ffffffff00ffffff00ffffffffffffff00ffffffffff00ffffff00ff00ffffffffff00ffffffffff00ffffffffff00ffffff00ffff00ffffffffffffffffffffff00ffffffff00ffffff00ff00ffffff00ffffff00ffffff00ff00ffffffffff00ffffffff00ffffffffffffff00ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff0000000000ff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff00ffffffffffff0000ffffffff0000ffffff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffffff00ffffffffff0000ffffff00ff00ff00ffffff00ffffffff00ffffffff00ffffff00ffff0000ffffff00ffffffffff00ffffff00ff00ffffffffff00ffffffffff0000000000ff00ffffff00ffff00ffffffffff0000ffffffff00ffffffff00ffffff00ff00ffffff00ffffff00ffffff0000ffffffffffff00ffffffff00ffffffffff0000ffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff0000ffff00ff00ffffff00ffff0000ffffff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffffff00ffffffffff0000ffffff00ffffff00ffffff00ffffffff00ffffffff0000ffff00ffff0000ffffff00ffffff00ff00ffffff00ff0000ffff00ff0000ffff00ff00ffffff00ff0000ffff00ffff00ffffffffff0000ffffffff00ffffffff00ffffff00ff00ffffff00ffffff00ffffff00ff00ffffffffff00ffffffff00ffffffff00ffffff00ffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff00000000ffff0000ffffff00000000ffffff000000ffff00ff0000ffffff000000ffffffffffffffff00000000ffff00ffffff00ffff0000ffffffffff00ffffff00000000ffffffffffffffff00ffffff00ffff0000ffffff00000000ffff00ff0000ffffffffffffffffff000000ffff00ffffff00ff00ff0000ffff00ff0000ffffff000000ffff00ff0000ffff00000000ffffffffffffffff00000000ffffff000000ffffff000000ffffffff00ffffff00ffff00ffffff0000ffffff00000000ffffff000000ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffffff0000ffffff000000ffffffffffffffffff000000ffff00ffffff00ff00ffffffffffff000000ffffff000000ffff00ffffff00ffff000000ffff00ffffff00ffffff0000ffffff00000000ffffff0000ffffff000000ffffff000000ffff00ffffff00ffffffffffffffff000000ffffff000000ffffffffffffffffffff0000ffffff00ff00ffffff000000ffffffffffffffffff000000ffff00ffffffffffff00000000ffff000000ffff00ffffffffffff000000ffffffffffffffffff000000ffffff00ffffffffffffffffffff00ffffff00ffff00000000ffffffffff00ff00ffffff00ffff000000ffffffff0000ffffff0000ff00ffff00000000ffff000000ffffffffffffffffff000000ffff00ffffff00ffff00000000ffff000000ffffff000000ffffff000000ffff00ffffffffffffffffffffffffff0000ffff00ffffff00ffff00000000ff00ffffff00ffffffffffffffff000000ffffff000000ffff00ffffff00ffff000000ffffff000000ffffff00000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffff00ffff00ff00ffffff00ffffffffffffffffff00ffffff00ff00ff00ff00000000ffffffff00ffffff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ffff00ffff00ff00ffffff00ffff00ffff00ffffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffff00ffffff00ffffff00ffffffffffffffff00ffff00ff00ff00ff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffffffff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ffff00ffffffffffffffffffff00ff00ff00ff00ffffff00ffff00000000ff00ffffff00ffffff00ffffffff00ffff00ff00ffff0000ff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ff00ff00ff00ff00ffffff00ffffff00ffffffffff00ffffff00ffffff00ff00ffffffffffffffffffffffff00ffff00ff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ffffff00ffffff00ff00ff00ffffff00ffffffffff00ffffff00ffffff00ff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffff00ffffffffffffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffffffff00ff00ff00ff00ffffffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffff00ffffffffffff00ffffffffffffffffff00ffffffff00ff00ff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffffffff00ffffff00ff00ffffffffff00ffffffffffffffff00ffffffffffffffff00ffffff00ffff00ffffffffffffffffffff00ff00ff00ff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff00ffffff00ff00ffffffffffffffffffffffffffff00ffff00ff00ff00ff00ffffff00ffffff00ffffffffff00ffffff00ffffffffff00ffffffffffffffffffffffff00ffffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffffffffff00ffffffff00ffffff00ff00ff00ffffff00ffffffffff00ffffff00ffffff00ff00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffff00ffffffffff0000ffffffff0000ffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff0000000000ff00ff00ff00ff0000000000ff00ffffff00ffff00ffffffffff00000000ffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffff0000ffffffffff00ffffffff0000ffffffff0000ffffffff00ffffffff00ff00ff00ff00ffffff00ffff0000ffffff00ffffff00ff00ffffffffff00ffffff00ff0000000000ff00ffffffffffff0000ffffffff0000ffffff00ffffff00ffff00ffffffffff0000ffffff00ff00ff00ffff00000000ff00ffffff00ff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff00ffffff00ff0000000000ffff0000ffffffff0000ffffff00ff00ff00ffff00000000ffffff00ffffffffff00ffffff0000000000ff00ffffffffffff0000ffffffff00ffffffff00ffffff00ffff00000000ff00ffffff00ffff0000ffffffff0000ffffffffff00ffffff00ff00ff00ffffff00ffffffffff00ffffffff00000000ff00ffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffff00ffff0000ffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffff00ff00ff00ff00ff00ffffff00ff0000ffff00ffff00ffffffffffffffff00ffff00ffffffffffff00ffffff00ffffff00ff0000ffff00ffff0000ffffffffff00ffffff00ffffff00ffff0000ffffffff00ffffffff00ffffff00ff00ffffff00ffff0000ffffff00ffffff00ff0000ffff00ff00ffffff00ff00ffffff00ff0000ffff00ff00ffffff00ffff0000ffffff00ffffff00ff00000000ffffff0000ffffff00ff00ff00ffffffffff00ff00ffffff00ff0000ffff00ffffff00ffffffff00ffffffff00ffffff00ff00ffffff00ff00ffffff00ffff0000ffffff00ffffff00ff00ff00ff00ffffffffff00ffffff00ffffffffff00ffffff00ffffff00ff0000ffff00ffff0000ffffffff00ffffffff0000ffff00ffffffffff00ff0000ffff00ffff0000ffffff00ffffff00ffffff00ffffff00ff00ff00ffffff00ffffffffff00ffffffffffffff00ff0000ffff00ffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffffff00000000ffffff000000ffffffffffffffffff0000ffffff0000ff00ffff00000000ffffffff00ffffffff000000ffff0000ff00ffffff000000ffff00ff0000ffff00000000ffffff000000ffff00000000ffffff0000ffffffff000000ffff00ff0000ffffffffffffffffff0000ffffffff000000ffffffffffffffff00000000ffff00ffffff00ffff000000ffffffffffffffffff000000ffff00ff0000ffffff00000000ffff000000ffff00ff0000ffffff000000ffffffffffffffffff000000ffffff00ffffffffffffffffffff0000ff00ffffff000000ffffff000000ffff00ff0000ffffff0000ffffff00000000ffff00ffffff00ffff00000000ffff000000ffffffffffffffffff000000ffff0000ff00ffffff000000ffffffff00ffffffffff00ffffffff000000ffff00ff0000ffffffffffffffff00000000ffff00ff0000ffffff000000ffff00ff0000ffffffffffffffffff000000ffffff0000ffffff0000ff00ffffff0000ffffffffff00ffffffff000000ffff00ff0000ffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ffff00000000ffff000000ffff00ffffff00ffffff0000ffffff00000000ffff000000ffff00ffffff00ffff000000ffffffffffffffffff00000000ffff00000000ffffff00ffffffff00000000ff00ffffff00ffff000000ffffff000000ffffff00000000ffffffffffffffff00ffffffffff000000ffff00ffffffffff00ffffff00ffff00000000ffffff0000ffffffff0000ffffff000000ffff00ffffff00ffffffffff00ffffffffffffffff00000000ffff000000ffffffffffffffffff00ffffffffff00000000ffff000000ffffffff0000ffffffffffffffffff00000000ffff000000ffffffffffffffffff000000ffff00ffffff00ffff00000000ff00ffffffffffff00000000ffff000000ffffffff0000ffffff000000ffff00ffffffffffff000000ffffffffffffffffff00000000ff00ffffffffffff000000ffffffffffffffffff000000ffff00ffffff00ffffff0000ffffff000000ffff00ffffffffffff000000ffffff00000000ffffff00ffffffffffffffffffff00000000ff00ffffff00ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffff00ffff00ffff00ff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffff00ff00ffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffffff00ffffffff00ffffff00ff00ffffffffff00ff00ff00ff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffffff00ffffff00ffff00000000ffffffffffffff00ffffff00ff00ffffff00ffffffffffffffff00ffffffff00ffffff00ff00ffffff00ffff00ffff00ffffffffffffff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ff00ffffff00ffff00ffff00ff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffff00ffff00ff00ffffff00ff00ffffffffff00ffffff00ff00ffffff00ffffff0000ffffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffff00ffff00ffffffff00ffffff00ffffff00ffffff00ffffff00ffffffff00ffffffffffffffff00ffffff00ff00ffffff00ffff00ff00ffff00ffffff00ff00ffffff00ff00ffffffffff00ffffffffff00ffffff00ffffffffffffffff00ffffffff00ffffff00ff00ffffffffff00ff00ff00ff00ffffff00ffff00ffffffffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ffffffff00ffffffffffffffffff00ffffffff00ffffff00ffffffff00ffffff00ffffffffffffffffffff00ffffff00ffffffff00ffffffffffffffff00ffffffffff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ff00ffffffffffff00ffffffff00ffffffffff00ffffffffffffffff00ffffffffffffffff00ffffff00ff00ffffffffff00ffffffffffffffffffffff00ffffffffff00ffffff00ffff00ffffffff00ffffffffff00ffffffffff00ffffffffff00ffffff00ffffffffffffffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ff00ff00ffff00000000ffffff00ffffff00ffffff00ffff00ffffffffff00000000ffffff00ffffff00ffffff00ffff0000ffffffff0000ffffffff00000000ff00ffffff00ff00ffffff00ffff00000000ff00ffffff00ff00ffffffffff0000000000ff00ffffff00ffff0000ffffffff00ffffffff00ffffff00ff00ffffffffff00ff00ff00ffff00000000ffff00ffffffffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffff0000ffffffff00000000ffff0000ffffffff0000ffffffff00ffffffffff00000000ffff0000ffffffff00ffffffffff0000ffffffff00000000ffff0000ffffffff0000ffffff00ffffffffff00ffffff00ffff00000000ff00ffffffffffff00000000ff00ffffffffffff00ffffffff0000000000ff00ffffffffffff0000ffffffff0000ffffffff00000000ff00ffffffffff0000000000ffff0000ffffff0000000000ff00ffffff00ffff00ffffffff0000000000ff00ffffffffff0000000000ff00ffffff00ffffffffffffffff0000ffffffff00000000ff00ffffff00ff00ffffff00ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ff00ff00ffffffffff00ffffff00ffffff0000ffff00ffff00ffffffffffffffff00ffffff00ffffff0000ffff00ff00ffffff00ffff0000ffffffffffffff00ff00ffffff00ff00ffffff00ffffffffff00ff0000ffff00ff00ffffff00ff00ffffff00ff00ffffff00ffff0000ffffff00000000ffff00ffffff00ff0000ffff00ff00ff00ff00ffffffffff00ffff00ffffffffff00ffffffffffff00ffffff0000ffff00ff00ffffff00ffff0000ffffffffffffff00ff00ffffff00ffff0000ffffff00000000ffffffffffff00ff00ffffff00ffff00ffffffffff0000ffffffffffffff00ff00ffffff00ffff0000ffffff00ffffff00ff0000ffff00ffffffffff00ff0000ffff00ffffffffff00ff00ffffff00ffff00ffffffff00ffffff00ff0000ffff00ff00ffffff00ffff0000ffffffffffffff00ff0000ffff00ff00ffffff00ffff0000ffffff00ffffff00ff0000ffff00ffff00ffffffff00ffffff00ff0000ffff00ff00ffffff00ff00ffffff00ffffffffffffffff0000ffffffffffffff00ff0000ffff00ff00ffffff00ffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff0000ff00ffffff000000ffffff0000ffffff00ff0000ffff00000000ffffff000000ffffff0000ffffff00ff0000ffffff000000ffffffffffffffffff000000ffffff00000000ff00ffffff00ffff000000ffff00ff0000ffffff000000ffffff000000ffffff00000000ffffffffffffffff00ffffffffff000000ffff00ff0000ffff0000ff00ffffff000000ffff00000000ffff00000000ffffff0000ffffff00ff0000ffffff000000ffffffffffffffffff000000ffffff000000ffffffffffffffffff00ffffffffff000000ffffff000000ffff00000000ffffffffffffffffff000000ffffff000000ffffffffffffffffff000000ffff00ff0000ffffff000000ffff00ff0000ffffff000000ffffff000000ffff00000000ffffff000000ffff00ff0000ffffff000000ffffffffffffffffff000000ffff00ff0000ffffff000000ffffffffffffffffff000000ffff00ff0000ffff00000000ffffff000000ffff00ff0000ffffff000000ffffff00000000ffffffffffffffffffffffffffff000000ffff00ff0000ffffff00000000ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff00ffffffffff00ffffffffff000000ffffff000000ffffff000000ffffff000000ffff00ffffff00ffffff0000ffffffff00ffffffffffffffffffff00ff00ffffff000000ffffffffffffffff00ffffff00ffff00000000ffffff00ffffffff000000ffffffffffffffffff000000ffff00ffffff00ff00ffffffffffff000000ffffff000000ffff00ffffff00ffff000000ffff00ffffff00ffffff0000ffffff000000ffffff00000000ffffffffffffffff00000000ffffffffffffff00ffffff00ffffff00ffffffff000000ffffff000000ffff00ffffff00ffffff00ffffffff000000ffffffffffffffffff00000000ffff000000ffffff000000ffffff0000ff00ff00ffffff00ffff000000ffff00ffffff00ffffff0000ffffffffffffffffff000000ffffff00000000ffff000000ffffffff0000ffffff000000ffff00ffffffffffff000000ffffffffffffffffffffffffffffffff00ffffff00ffffff00ffff000000ffffffffffffffffff000000ffffff00000000ffff000000ffffffff0000ffffff000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffff00ffffffffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ffff00ffff00ffffff0000ffffffffffffffff00ff00ff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffff00ff00ffff00ffffff00ffffffffffffffffff00ffffff00ff00ff00ff00000000ffffffff00ffffff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ffff00ffff00ff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ffffffffffffff0000ff0000ffffff00ffffff00ffffff00ffffff00ffffff0000ff0000ffffff00ffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ff00ffff0000ff00ff00ff00ff00ffffff00ff00ffffff00ffff00ffff00ffffffffffffff00ffffff00ff00ffffff00ffffff00ffffffff00ffff00ff00ffffff00ff00ffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffffff00ffffffff00ffff00ff00ffffff00ff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffffff00ffffffffff00ffffffffffff00ffffff00ffffffffffffff00ffffff00ffffffffff00ffffff00ffff00ffffffffffffffffffffffffffffffff00ff00ff00ff00ffffffffffffffffffffff00ffffff00ff00ffffff00ffff00ff00ffff00ffffffffffffffffffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffffffff00ff00ff00ff00ffffffffff00ffffff00ffff00ffffffff00ffffffffff00ffffff00ffffffffffffff00ffffff00ffffffffffffff00ff00ff00ffffff00ffffffffffffff00ffffff00ffffff00ff00ff00ffffff00ffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ff00ff00ff00ff00ffffffffff00ffffff00ffff00ffffffffffffffffffff00ffffffffff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ff00ffffffffffffffffffffff00ffffffffff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff0000000000ffff00ffffffffff00ffffffffffff00ffffff00ffffffffffffff00ffffff0000000000ff00ffffff00ffff00ffffffffffffffffffffff0000ffffff00ff00ff00ff0000000000ffff0000ffffff00ffffff00ffff00000000ff00ffffff00ff0000000000ffff0000ffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff0000000000ff00ff00ff00ff0000000000ff00ffffff00ffff00ffffffff0000000000ff00ffffff00ffff0000ffffffff00000000ffff0000ffffff00ff00ff00ffffff00ffffffffffffff00ffffff00ffffff00ff00ff00ffffff00ffffff00ffff0000ffff0000ffffff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ff00ff00ff00ff0000000000ff00ffffff00ffff00ffffffffff0000ffffff0000000000ff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff00ffffffffffffffffffffffff0000ffffffff0000ffffffffff00ffffff00ffffff00ff0000000000ffff0000ffffff0000000000ff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff00ffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00000000ffff00000000ffffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ff0000ffff00ffff00ffffffffffffffffffffff0000ffffff00ffffff00ff00ffffff00ffff0000ffffff0000ffff00ffffffffff00ff00ffffff00ff00ffffff00ffff0000ffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffff00ff00ff00ff00ff00ffffff00ff0000ffff00ffff00ffffffff00ffffff00ff00ffffff00ffff0000ffffffffffffff00ffff0000ffffff00ff00ff00ffffff00ffffffff000000ffffffff00ffffff00ff00ff00ffffff00ffffff00ffffffffffff0000ffffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ff00ff00ff00ff00ffffff00ff0000ffff00ffff00ffffffffff0000ffffff00ffffff00ff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff0000ffff00ffffffffffffffff0000ffffffff0000ffffffffff00ffffff0000ffff00ff00ffffff00ffff0000ffffff00ffffff00ff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ff0000ffff00ffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff00ffffffffff00ffffffffff0000ffffffff000000ffffff0000ffffffff000000ffff00ff0000ffff00000000ffffffffffffffffffffffffffff00ffffff00ffff000000ffffffffffffffff00ff0000ffffff000000ffff00ffffff00ffff000000ffffffffffffffffff0000ffffff0000ff00ffff00000000ffffffff00ffffffff000000ffff0000ff00ffffff000000ffff00ff0000ffff00000000ffffff000000ffffff00000000ffffffffffffffff000000ffffffffffffffff00ffffff00ffff00ff00ffff00ffffffffffffff00ffffff00ffffff00ffff00ff00ffff00ffffffffffffffffffffffff00000000ffff000000ffffff000000ffff00ffffff00ff0000ff00ffffff000000ffff00ff0000ffff00000000ffffffffffffffffff000000ffffff00000000ffff0000ffffff00000000ffffff000000ffff00ff0000ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff0000ffffff000000ffffffffffffffffff000000ffffff00000000ffff0000ffffff00000000ffffff000000ffff00ff0000ffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ff00ffff00ffffffffffffff00ffffff00ffffff00ffff00ff00ffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ffff000000ffffff000000ffff00ffffff00ff00ffffff00ffff000000ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ffff0000ff00ff00ffffff00ff00000000ffffff000000ffff00ffffffffffff000000ffffffffffffffffffff0000ffffff000000ffffffffffffffff00000000ffffff0000ff00ffff000000ffffff000000ffffff00000000ffffffffffffffff0000ff00ffff000000ffffff000000ffff00ffffffffffffffffffffffff000000ffff00ffffff00ffffff0000ffffff000000ffff00ffffffffffff00ffffffffff00000000ffff000000ffffff000000ffffff000000ffffff000000ffffffffffffffffffffffffffffffff00ffffffff000000ffffffffffffffffff000000ffff00ffffff00ffff000000ffffff00ff00ffffffffffffffffffff0000ffff00ffffff00ffff00000000ffffff0000ffffffffffffffffffffffff00ffff000000ffffffffffff00ff00ffffffffff00ffffff00ffff000000ffffffffffffffffff00000000ff00ffffffffffff000000ffffffffffffffffff000000ffffff000000ffff00ffffff00ff00ffffffffffff000000ffffff000000ffffffffffffffffff00000000ff00ffffff00ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ffff0000ff00ff00ff00ff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ffffffffffffffff00ffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffff0000ffffff00ffffffffff00ffffff00ffffff00ffffffffffffff00ffff0000ff00ffffff00ff00ffffff00ff00ffffffffffffffffffffffffff00ffffff00ffffff00ffff00ffff00ff00ffffff00ff00ffffffffffff00ffffffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ff00ff00ff00ffffffffffffffff00ffff00ff00ffffff00ff00ffffff00ffff00ffff00ffffffffffffffff00000000ffffff00ffffffff0000ff00ff00000000ffff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ffffff00ffffff00ff00ff00ff00000000ffffffff00ffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffffffff00ffffffffffffffff00ffffffffffffffffff00ffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffff00ffffff00ffffffffffffff00ffffff00ffffffff00ffff00ffffffffff00ffffffffffffffffffffffffff00ffffff00ffffff00ffff00ffffffff00ffffffffff00ffffffffffff00ffffffff00ffffff00ff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffffffffffffffff00ffff00ffffff00ff00ffffff00ff00ff00ff00ffffffffffffffff00ffffffff00ffffff00ff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffffff00ffffff00ffff0000ff00ffffff00ff00ffffff00ffffffff00ffffffffffffffff00ffffff00ff00ffffffffff00ffffffffffffffffffffffffffff00ffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffffffffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ff00ff00ff00ff00ffffff00ff0000000000ff00ffffffffffff0000ffffffff0000ffffffff00ffffffff00ffffff00ffff0000ffffff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffff00ffffff00ffff0000ffffff00ffffff00ffff0000ffffff0000000000ff00ffffffffffff0000ffffffffff00ffffff00ffffff00ffff00ffffffff0000000000ff00ffffffffffff00ffffffffff00000000ff00ffffffffff0000000000ffff0000ffffffffffffffffffff0000ffffffff0000ffffffffff00ffffff00ffffff00ffff0000ffffffff0000ffffff00ffffff00ff00ffffff00ff00ff00ff00ffff0000ffffffff00ffffffff00ffffff00ffff00000000ffff00ffffffffff0000ffffff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ff00ffffff00ffff0000ffffffff0000ffffffff00000000ff00ffffffffff0000000000ffff0000ffffffff0000ffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff0000000000ffff0000ffffffff00000000ff00ffffff00ff00ffffff00ff00000000ffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff0000ffff00ff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ff0000ffff00ff00ffffff00ffff0000ffffffff00ffffffff00ffffff00ffff0000ffffff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffff00ffffff00ffff0000ffffff00ffffff00ff00ffffff00ff00ffffff00ff0000ffff00ffff0000ffffffffff00ffffff0000ffff00ffff00ffffffff00ffffff00ff0000ffff00ff00000000ffffffffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffffff0000ffffffff0000ffffffffff00ffffff00ffffff00ffff0000ffffff00ffffff00ff0000ffff00ff00ffffff00ff00ffffff00ffff0000ffffffff00ffffffff0000ffff00ffffffffff00ffff00ffffffffff0000ffffff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ff0000ffff00ff00ffffff00ffff0000ffffffffffffff00ff0000ffff00ff00ffffff00ffff0000ffffff00ffffff00ffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffff00ffff0000ffffffffffffff00ff0000ffff00ff00ffffff00ffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ff0000ffff00ffffff00ff0000ff00ffff00000000ffffff000000ffff00ff0000ffffff000000ffffffffffffffff00000000ffffff000000ffffffffffffffff00000000ffff00ffffff00ffff0000ffffffffff00ffffffff00000000ffffffffffffff00ffffff00ffff000000ffffff000000ffff00ff0000ffffffffffffffffff0000ffffff00ff0000ffff00000000ffffff000000ffff00ff0000ffffff00ffffffffff000000ffffff000000ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffff00ffffffff000000ffffffffffffffffff000000ffff00ff0000ffffff000000ffff00ffffff00ffffffffffffff00000000ffff00ff0000ffffff000000ffff00000000ffffffffffffffffff000000ffffffff00ffffff00ffffff00ff00000000ffff00ff0000ffffff000000ffffffffffffffffff000000ffff00ff0000ffffff000000ffffffffffffffffff000000ffffff0000ffffff0000ff00ffff00000000ffffffff00ffffffff000000ffffffffffffffffff000000ffff00ff0000ffffff00000000ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff000000ffff00ffffff00ff00ffffffffffff000000ffff00ffffff00ffff000000ffff00ffffff00ffffff0000ffffff000000ffffffff00ffffffffffffffffffff000000ffffff00000000ffff000000ffffff000000ffffff000000ffffff00000000ffffffffffffffffffff0000ffffffffff00ff00000000ffffff00ffffffffffffffffffffffffffff00ffff000000ffffffffffff00ff00ffffffffff00ffffff00ffff000000ffff0000ffffffffffff00ffffffffffffffffffffff0000ffff00ffffff00ffff00000000ffffff0000ffffffffffffffff00ffffffffff00ffffffffffff000000ffffffffffff00ff00ffffffffffff00000000ff00ffffff00ff00ffffff00ffff000000ffff00ffffffffffff000000ffffffffffffffffff000000ffffff00000000ff00ffffff00ffffffffffffffff0000ff00ffff000000ffffff000000ffffffffffffffffff000000ffff00ffffff00ffffffffffffffff000000ffffff00000000ff00ffffffffffffffffff00ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ff00ff00ff00ff00000000ffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffff00ffff00ff00ffffff00ffffff0000ffffffffffffffff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffff00ffffffffffffff00ff00ffffff00ffff00ffffffffffffffffffffff00000000ffffff00ffffffff0000ff00ff00000000ffff00ffffff00ff00ffffff00ffffff00ffffffffff0000ffffffffffffffffff00ffff00ff00ffffff00ff00ffffff00ffff00ffff00ffffffffffffff00000000ffff00ffffffffff00ffffff00ffff00000000ff00ffffffffff00ffffff00ff00ff00ff00ff00ff00ff00ff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffff00ffff0000ff00ffffff00ff00ffffff00ffffffffffffffffff00ffffff00ffffff00ffffffffffffffffff00ffffff00ffffff00ff00ffffffffffff00000000ff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ffff00ffffffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffffff00ffffff00ffffffffff00ffffff00ffffffffff00ffffff00ffffffffffffffffff00ffffffffffff00ffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffffff00ffffff00ffff0000ff00ffffff00ff00ffffff00ffffffff00ffffffff00ffffffffffffffffffffffffffffffff00ffffffff00ffffff00ff00ffffff00ffff00ffffffffffffffffffff00ffffff00ff00ffffffffff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ff00ff00ff00ff00ff00ff00ff00ffffffffff00ffffffffffffffff00ffffffffffffffff00ffffffffff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ffffffff00ffff00ffffffffffffffffffffffffff00ffffff00ffffff00ffffffffffffffffff00ffffff00ffffff00ff00ffffffffff00ffffff00ff00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ff00ffffff00ff0000000000ff00ffffff00ffff00ffffffffff0000ffffffffffffffffffff0000ffffff00ffffffffffff00000000ffffff00ffffffffff00ffffff0000000000ff00ffffff00ffff0000ffffffffff00ffffffffffff00ffff00ffffff00ffff00ffffffffff0000ffffff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ff00ffffff00ffff0000ffffffffff00ffffffffffffffffffff0000ffffffff00ffffffff00ffffff00ffff00000000ffff00ffffffffff0000ffffff00ffffff00ff00ffffffffff00ffffff00ff00ffffff00ff00ffffffffffff00000000ff00ff00ff00ff00ff00ff00ff0000000000ff00ffffffffffff0000ffffffff0000ffffff00ffffffffffff00000000ff00ffffff00ffff0000ffffff00ffffff00ffff0000ffffff0000000000ffff0000ffffffffff00ffffff00ffffff00ffff0000ffffffffff00ffffffff00000000ff00ffffffffff00ffffff00ff0000000000ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ff0000ffff00ff00ffffff00ff0000ffff00ffff00ffffffff00ffffff00ffffffffffffffff0000ffffff00ffffff00ffffffffff00ffffff00ffffffffff00ffffff00ffffff00ff00ffffff00ffff0000ffffff0000ffffffffffff00ffffff00ffffff00ff00000000ffffff0000ffffff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ff0000ffff00ff00ffffff00ffffffff0000ffffffffffffffff0000ffffffff00ffffffff0000ffff00ffffffffff00ffff00ffffffffff0000ffffff00ffffff00ff0000ffff00ff00ffffff00ff00ffffff00ff0000ffff00ffffffffff00ff00ff00ff00ff00ff00ff00ff00ffffff00ff0000ffff00ff00ffffff00ffff0000ffffff00ffffff00ffffffffff00ff0000ffff00ffff0000ffffff00ffffff00ff00ffffff00ff00ffffff00ffff0000ffffffffff00ffffff0000ffff00ffff0000ffffffffff00ffffffffffffff00ff0000ffff00ff00ffffff00ff00ffffff00ffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff000000ffff0000ff00ffff00000000ffffff000000ffff00ff0000ffffff000000ffff00ff0000ffff00000000ffffff000000ffffffffffffffffffffffffffffff000000ffffff000000ffffffff00ffffffffff00ffffffff000000ffffff00000000ffffffffffffffffff00ffffffff00ffffffff00000000ffffff00ffffffffffffffffffffff000000ffffffff00ffffff00ffffff00ff00000000ffff00ff0000ffffff000000ffffffff00ffffffffffffffffffffffffffffff00000000ffff00ff0000ffffff000000ffff00000000ffffffffffffffff00000000ffff00ff0000ffffff000000ffffff000000ffff00ff0000ffffff000000ffff0000ff00ffff0000ff00ffffff000000ffff00ff0000ffffff000000ffffffffffffffffff000000ffffff000000ffff00ff0000ffffffffffffffff00ffffff00ffff000000ffffff000000ffffffffffffffffff0000ffffff00ff0000ffffffffffffffffffff00ffffffff000000ffff00ff0000ffffff000000ffffff000000ffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffff00ffffff00ffffffffff00ffffffffffff00ffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff0000ffffffffffffffffffffffffff00ffffffffffffffffffff0000ff00ffffffffff00ffffffffffffff0000ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff00ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00000000ffff00ff00ffff00ffffff00ffff00ff00ffffff00000000ff00ffffffffffff00000000ffffffffffffffff00000000ff00ffffff00ffff00000000ffffffffffffffff000000ffff00ffffff00ffff000000ffffff00ffffffffff00ffffffffff000000ffffff000000ffffff000000ffffff000000ffff00ffffff00ffffff0000ffffff000000ffffffffffffffffffffffffffff00ffffff00ffff000000ffffffffffffffff00ffffff00ffff00000000ffffff00ffffffff000000ffffffffffffffffff00000000ffff000000ffffff00ffffffffff000000ffff00ffffff00ffff000000ffffff00000000ffffffffffffffff00000000ffffffffffffffff000000ffffff000000ffffffff0000ffffffffffffffffff000000ffffff00ffffffffffffffffffffff000000ffff00ffffff00ffff00000000ffff000000ffffff000000ffffffff00ffffffffffffffffffff000000ffffff000000ffff00ffffff00ff00ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ff00ff00ff00ffff00ffff00ff00ff00ff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffffffff00ffffff00ffffff00ff00ffffff00ffff00ffffffffff00ffffffffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffffffffffff0000ff0000ff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffff00ff00ffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffff00ffff00ffffffffffffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ff00ff00ff00ff00ffffff00ffffff00ffffffffff00ffffffffff0000ffffffffffffffff00ffffff00ffffff00ffffff00ff00ff00ff00000000ffffffff00ffffff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ff00ff00ff00ff00ffffff00ff00ff00ff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffffffff00ffffff00ffffff00ff00ffffffffffff00ffffffffff00ffffffffffff00ffffff00ffffffffffffff00ffffff00ffffffffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffff00ff00ff00ff00ffffffffffffffffffffff00ffffff00ff00ffffff00ffff00ff00ffff00ffffffffffffffffffffff00ffffff00ff00ffffffffffff00ffffffffffff00ffffff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ffffffffffffffffffff00ffff00ffffffffffff00ffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffffffffff00ffff00ff00ff00ff00ffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00000000ff00ff00ff00ff0000ffffffff00ff00ff00ffff00000000ff00ffffffffff00ffffff00ffff0000ffffffff00000000ff00ffffff00ff00ffffff00ffff0000ffffffffff00ffffff00ffffff00ff0000000000ffff00ffffffffff00ffffffffffff00ffffff00ffffffffffffff00ffffff0000000000ff00ffffff00ffff00ffffffffffffffffffffff0000ffffffff0000ffffff00ff00ff00ff0000000000ffff0000ffffff00ffffff00ffff00000000ff00ffffff00ff0000000000ffff0000ffffff00ffffff00ff0000000000ffff00ffffffffffff00ffffff00ffffff00ff0000000000ff00ffffff00ffff0000ffffffff00000000ffff0000ffffffff0000ffffff0000000000ffff00ffffffffff0000ffffff00ffffff00ffff00ffffffffff0000ffffffff0000ffffff00ff00ff00ffff00000000ffffff00ffffffffff00ffffffffffffffffffff0000ffffffff0000ffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff0000000000ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ff00ffffff00ff00ff00ffffff00ffffff00ffffffffff00ff0000ffff00ff00ffffff00ffff0000ffffffffffffff00ff0000ffff00ff00ffffff00ffff0000ffffffffff00ffffff0000ffff00ff00ffffff00ff00000000ffff00000000ffffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ff0000ffff00ffff00ffffffffffffffffffffff0000ffffffff0000ffffff00ff00ff00ff00ffffff00ffff0000ffffff0000ffff00ffffffffff00ff00ffffff00ff00ffffff00ffff0000ffffff00ffffff00ff00ffffff00ff00000000ffffffff00ffffff0000ffff00ff00ffffff00ff00ffffff00ffff0000ffffffffffffff00ffff0000ffffff00ffffff00ff00ffffff00ffff00ffffffffff0000ffffff00ffffff00ff00000000ffffff0000ffffff00ffffff00ff00ff00ff00ffffffffff00ffffff00ffffffffff00ffffffffffffffffffff0000ffffff00ffffff00ffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffff00ffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffff00ffffff00ff00ffff00ffff00ffffff00ffff000000ffff00ff0000ffffff00000000ffffffffffffffff000000ffff00ff0000ffffff00000000ffffffffffffffff0000ffffff00ff0000ffffff000000ffffff00ffffffffff00ffffffffff0000ffffffff000000ffffff0000ffffffff000000ffff00ff0000ffff00000000ffffffffffffffffffffffffffffffffffffffff00ffffff00ffff000000ffffffffffffffff00ff0000ffffff000000ffff00ffffff00ffff000000ffffffffffffffffff00000000ffff000000ffffff00ffffffffff0000ffffff00ff0000ffffff000000ffffff00000000ffffffffffffffff000000ffffffffffffffffff000000ffffff000000ffff00000000ffffffffffffffffff000000ffffff00ffffffffffffffffffffff000000ffff0000ff00ffffff000000ffffffff00ffffffffff00ffffffffffffffffffffffffffffffff000000ffffff0000ffffff0000ff00ffff00000000ffffffff00ffffffff000000ffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffff00000000ff00ffffffffff00ffffffffffff000000ffffff000000ffffff000000ffffff00000000ffffff0000ffffff000000ffffff000000ffff00ffffff00ffffffffffffffff00000000ffff00000000ffffff0000ffffff00000000ffffffffffffff00000000ffffff000000ffffff000000ffffff00000000ffff0000ff00ffff000000ffffff000000ffffffffffffffffffff0000ffff00ffffff00ffff000000ffffffffffffffff00ffffffffffff000000ffffff000000ffffff0000ff00ffff000000ffffffff0000ffffff000000ffff00ffffff00ffffffffff00ffffffffffffffff000000ffff00ffffff00ff00ffffffffffff000000ffffff000000ffff00ffffff00ffff000000ffff00ffffff00ffffff0000ffffff00000000ffffff0000ffffff000000ffffff000000ffff00ffffff00ffffffffffffffff00ff00ffffff000000ffffff0000ff00ffff000000ffffff00000000ffffffffffffff00000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ff00000000ffff00000000ffffffff00ffffffffff00ffffff00ffffff00ff00ffffff00ffff00ffff00ffffff00ffffff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffff00ffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ff00ffff0000ff00ffffff00ff00ffffff00ffffffffffffffff00ffff00ff00ffffff00ff00ffffff00ffffffffffffff00ffffffffff00ffffff00ff00ffffff00ff00ffff0000ffffff00ffffffff00ffff00ffffff00ffffff00ffffff00ffff00000000ffffffffffffffffff00ffffff00ff00ff00ff00000000ffffffff00ffffff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ffff00ffff00ff00ffffff00ffff00ffff00ffffff00ffffff00ffffff00ff00ffffff00ffffffffffffff00ff00ff00ff00ffffff00ff00ffff0000ffffff00ffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffff00ffffffffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ffff00ffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffffffff00ffffffffff00ffffff00ff00ffffff00ffffffff00ffff00ffffffffffffffffffffffff00ffffffff00ffffff00ff00ffffffffffffffffffffff00ffffffffff00ffffffffffffffff00ffff00ffffff00ffffff00ffffffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffffffff00ff00ff00ff00ffffffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffff00ff00ff00ff00ffffff00ff00ffffff00ffffff00ffffff00ffffff00ffffffffffffff00ffffff00ff00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffff0000ffffffff00000000ff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffff00ffffffffffff00000000ffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffff0000ffffff00ffffff00ffff00000000ffff00ffffffffff00000000ffff0000ffffff00ffffff00ff0000000000ff00ffffffffffff00000000ff00ffffff00ffff0000ffffff0000000000ffff0000ffffffff00ffffffff00ffffff00ff0000000000ffff0000ffffff00ffffffffff0000000000ffff0000ffffff00ffffff00ffffff00ffffffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffff0000ffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff0000000000ff00ff00ff00ff0000000000ff00ffffff00ffff00ffffffffff00000000ffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffff0000ffffff00ff00ff00ff00ffffff00ff00ffffff00ffffff00ffffff00ffffff00ffff0000ffffff00ffffff00ff0000000000ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00000000ffffff0000ffffffffffffff00ff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffff00ffffff00ffffffffff00ffff00ffffffffffff00ffffff00ffffff00ff0000ffff00ffff0000ffffff00ffffff00ffffffffff00ffff00ffffffffffffffff00ffff0000ffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffff0000ffffffff00ffffffff0000ffff00ff00ffffff00ffff0000ffffff0000ffff00ff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffffff00ffffffffffff00ffffff0000ffff00ff00ffffff00ffff0000ffffffffff00ffffff00ff00ff00ff00ffffff00ffffff00ffffff00ffffff00ff00ff00ff00ff00ffffff00ff0000ffff00ffff00ffffffffffffffff00ffff00ffffffffffff00ffffff00ffffff00ff0000ffff00ffff0000ffffff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffff00ffffff00ffff0000ffffff00ffffff00ff00ffffff00ffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffff000000ffff00000000ffff00000000ffffffff00ffffffff0000ffffffff000000ffffff000000ffff00000000ffffff0000ffffffff000000ffff00ff0000ffffffffffffffffff00000000ffff000000ffff00000000ffffff000000ffffffffffffffff00000000ffffff000000ffffff000000ffffff000000ffff00ffffff00ffff000000ffffff000000ffffffffffffffff00000000ffff00ff0000ffffff000000ffffffffffffffff00ff0000ffffff000000ffffff000000ffff00ffffff00ffffff00ffffff00000000ffffff0000ffffff00ff0000ffffff000000ffffffffffffffffff0000ffffff0000ff00ffff00000000ffffffff00ffffffff000000ffff0000ff00ffffff000000ffff00ff0000ffff00000000ffffff000000ffff00000000ffffff0000ffffffff000000ffff00ff0000ffffffffffffffff00ffffff00ffff000000ffff00ffffff00ffffff00ffffffff00000000ffffffffffffff00000000ffffff000000ffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00000000ff00ffffff00ffff00000000ffffffffffffffff000000ffff00ffffff00ff00ffffffffffff000000ffff00ffffff00ffff000000ffffff000000ffffffff00ffffffff000000ffffff000000ffffffffffffffffffffffffffff00ffffffffff00ffffffffffff000000ffffffffffff00ff00ffffffffffff00000000ff00ffffff00ff00ffffff00ffff000000ffff00ffffffffffff000000ffffffffffffffffff000000ffffff00000000ff00ffffff00ff00ffffff00ffff000000ffffffff0000ffffffffffffffffff0000ff00ffff000000ffffff000000ffffffffffffffffffff0000ffff00ffffff00ffff000000ffffff000000ffffff000000ffffffffffffffffff000000ffffff000000ffff00ffffff00ff00ffffffffffff000000ffff00ffffff00ffff000000ffff00ffffff00ffffff0000ffffff000000ffffffffffffffffff00ffffffffff000000ffff00ffffffffffffffffffffff00ffffff00ffff00000000ff00ffffff00ffffffffff00ffffffffffffff00ffffff00ffff000000ffff00ffffff00ffff00000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ffff00ff00ffff00000000ffff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffffff00ff00ffff00ffffff00ffffff00ffffffffffffffffffffffffffffff00ffffffffff00ffffffffff00ffffff00ffff00000000ff00ffffffffff00ffffff00ff00ff00ff00ff00ff00ff00ff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffff00ffff00ffffffffffffff00ffff0000ff00ffffff00ff00ffffff00ffffffffffffffff00ffff00ff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ff00ff00ff00000000ffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffff00ffff00ff00ffffff00ffffffffffffffff00ffffffff00ffffff00ff00ffffffffffffffffffffff00ff00ff00ff00ffffff00ff00ffffff00ffff0000ff00ffffffffffffff00ffff00ffffffff00ffffff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffff00ffffffffffffff00ffffff00ffffff00ff00ffffffffff00ffffff00ffffffff00ffffffff00ffffffff00ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ff00ff00ff00ff00ff00ff00ff00ffffffffff00ffffffffffffffff00ffffffffffffffff00ffffffffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffffffff00ffff00ffffffffffffffffffffffff00ffffffff00ffffff00ff00ffffffffffffffff00ffff00ffffffffffffffffffffff00ffffffffff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ffff00ffffffffffffff00ffffffffffffffffff00ffffffff00ffffff00ff00ffffffffffffffffffffff00ff00ff00ff00ffffff00ff00ffffff00ff00ffff0000ffffffffffffff00ff00ffffffffff00ffffff00ffffff00ff00ffffff00ffffffff00ffffff0000ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00000000ff00ffffff00ff00ffffff00ffff0000ffffff0000000000ffffff00ffffff00ffffff00ff0000000000ff00ffffff00ffff0000ffffffffff00ffffff00ffffff00ff0000000000ffffffffffffffff0000ffffffff0000ffffff00ffffffffff00ffffffffff00ffffff00ff00ffffff00ff00ffffffffffff00000000ff00ff00ff00ff00ff00ff00ff0000000000ff00ffffffffffff0000ffffffff0000ffffff00ffffffffffff00000000ff00ffffff00ff00ffffff00ff00ffffff00ffff00ffffffffff0000ffffff00ffffff00ffff0000ffffff0000000000ffff0000ffffffff00ffffffff00ffffff00ff0000000000ffff0000ffffff0000000000ffff0000ffffff00ffffffffff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ff00ffffff00ff0000000000ff00ffffff00ffff00ffffffffff0000ffffffff0000ffffffff00ffffffff00ffffff00ff00ffffffffffff0000ffffff00ff00ff00ffff00000000ff00ffffff00ff00ffffff00ffff0000ffffff0000ffffffffffff00ffffff00ffffff00ff00ffffff00ffff0000ffffff00000000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ff0000ffff00ff00ffffff00ffff0000ffffff00ffffff00ffff00ff00ffff00ffffff00ff00ffffff00ff0000ffff00ff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ffffffffffffffff0000ffffffff0000ffffff00000000ffff0000ffff00ff00ffffff00ff00ffffff00ff0000ffff00ffffffffff00ff00ff00ff00ff00ff00ff00ff00ffffff00ff0000ffff00ff00ffffff00ffff0000ffffff00ffffff00ffffffffff00ff0000ffff00ff0000ffff00ff00ffffff00ffff00ffffffffff0000ffffff00ffffff00ff00ffffff00ff00ffffff00ffff0000ffffffff00ffffffff0000ffff00ff00ffffff00ff00ffffff00ff00ffffff00ffff0000ffffff00ffffff00ff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ff0000ffff00ff00ffffff00ff0000ffff00ffff00ffffffff00ffffff00ffff0000ffffff00000000ffff00ffffff00ff0000ffff00ffff0000ffffff00ff00ff00ffffffffff00ff0000ffff00ff00ffffff00ffff0000ffffff00ff00ffffffffff00ffffff0000ffff00ff00ffffff00ff00ffffff00ffff0000ff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffff00ff0000ffffff00000000ffffffffffffffff000000ffff00ffffff00ff00000000ffffff000000ffff00ff0000ffffff000000ffffff0000ffffff00ffffff00ffff000000ffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ff0000ffffff000000ffffff000000ffff00ff0000ffffff000000ffff0000ff00ffff0000ff00ffffff000000ffff00ff0000ffffff000000ffffffffffffffffff000000ffffff000000ffff00ff0000ffff00ff0000ffffff000000ffff00000000ffffffffffffffff00ffffff00ffff000000ffffff000000ffffffffffffffff00000000ffff00ff0000ffffff000000ffffff000000ffffff000000ffffffffffffffffff000000ffffff000000ffff0000ff00ffff00000000ffffff000000ffff00ff0000ffffff000000ffff00ff0000ffff00000000ffffff000000ffffffffffffffffff00ffffffffff000000ffff00ff0000ffffffffffffffff0000ff00ffffff000000ffff00ff0000ffff00ffffff00ffffffffffffff00ffff00ffffff0000ffffff00ff0000ffffff00000000ffff000000ffffffff00ffff00ffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffff0000ff00ff00ffffffffff00ffffffffffff000000ffff00ffffff00ffffff0000ffffffffffffffffff0000ff00ffff000000ffffff000000ffff00ffffffffffffffffffffffff000000ffff00ffffff00ffffff0000ffffff000000ffff00ffffffffffff00ffffffffff00000000ffff000000ffffff000000ffffffffffffffffffff0000ffffff000000ffffff000000ffffff000000ffff00ffffff00ffff000000ffffffff0000ffffff000000ffffffffffffffff00ffffffffff00ffffffffffff000000ffffffff00ffffffff000000ffffff00000000ffff000000ffffffffffffffffff000000ffffff000000ffff00ffffff00ff00ffffffffffff000000ffff00ffffff00ffff000000ffff00ffffff00ffffff0000ffffff000000ffffffffffffffffffff0000ffff00ffffff00ffff00000000ffffff0000ffffffffffffffffff00000000ff00ffffffffffff000000ffffffffffffffffff000000ffffff000000ffff00ffffff00ff00ffffffffffff000000ffffff000000ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ff00ffff0000ff00ffffffffff00ffffffffff00ffffff00ff00ffffff00ffff00ffff00ffffffffffffff00ffff0000ff00ffffff00ff00ffffff00ff00ffffffffffffffffffffffffff00ffffff00ffffff00ffff00ffff00ff00ffffff00ff00ffffffffffff00ffffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffffff00ffff00ff00ffffff00ff00ffffff00ffffff00ffffff00ffff00ffffffff00ffffffff00ffff00ff00ffffff00ffffffffffffff00000000ffff00ffffffffff00ffffff00ffff00ff00ffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ff00ff00ff00000000ffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ffff00ffff00ff00ffffff00ffffffffffffffff00ffff00ff00ffffff00ff00ffffff00ffff00ffff00ffffffffffffff00ffffff00ff00ffffffffff00ffffff00ffffffffffffff00ffffff00ff00ffffff00ff00ff00ff00ff00000000ffffffff00ffffff00ffffff00ffff00ff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffff00ffffff00ff00ffffffffff00ffffffffff00ffffffffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffffffff00ffff00ffffffffff00ffffffffffffffffffffffffff00ffffff00ffffff00ffff00ffffffff00ffffffffff00ffffffffffff00ffffffff00ffffff00ff00ffffffffff00ffffffffffffffffffffffff00ffffffff00ffffff00ff00ffffff00ffffff00ffffff00ff00ffffffffff00ffffffff00ffffffffffffff00ffffffffffffffff00ffffff00ff00ffffffffff00ffffff00ffff00ff00ffffffff00ffffff00ffffff00ff00ffffffffffffffffffffff00ffffffffff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ff00ffffff00ff00ffffffffff00ffffff00ffff00ffffffffffffff00ffffffffffffffffff00ffffffff00ffffff00ff00ffffff00ffff00ffffffffffffffffffff00ffffff00ff00ffffffffff00ffffffffffffffffffffff00ffffffffff00ffffff00ff00ff00ff00ff00ffffff00ffffff00ffffff00ffffffffffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffff00ffffff00ff00ffffffffff00ffffffffff0000000000ff00ffffff00ffff00ffffffffff0000ffffff00ffffff00ffff0000ffffff0000000000ff00ffffffffffff0000ffffffffff00ffffff00ffffff00ffff00ffffffff0000000000ff00ffffffffffff00ffffffffff00000000ff00ffffffffff0000000000ffff0000ffffffff00ffffffff00ffffff00ff00ffffff00ffffff00ffffff0000ffffffffffff00ffffffff00ffffffffff0000ffffffff0000ffffff00ffffff00ff00ffffffffff00ffffff00ff00ffffff00ffffff00ffffff00ffffff00ff0000000000ffff0000ffffff00ffffffffff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ff00ffffff00ff0000000000ff00ffffff00ffff00ffffffffff0000ffffffff0000ffffffff00ffffffff00ffffff00ffff00000000ffff00ffffffffff0000ffffffff00000000ff00ffffffffff0000000000ffff0000ffffff00ffffffffff00ffffff00ff00ff00ff00ff00ffffff00ffffff00ffffff0000000000ffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffff00ffffff00ff0000ffff00ff0000ffff00ff00ffffff00ff0000ffff00ffff00ffffffffff0000ffffff00ffffff00ff00ffffff00ff00ffffff00ff0000ffff00ffff0000ffffffffff00ffffff0000ffff00ffff00ffffffff00ffffff00ff0000ffff00ff00000000ffffffffffff00ff00ffffff00ff00ffffff00ffff0000ffffffff00ffffffff00ffffff00ff00ffffff00ffffff00ffffff00ff00ffffffffff00ffffffff00ffffffff00ffffff00ffff0000ffffff00ffffff00ff0000ffff00ff00ffffff00ff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ffff0000ffffff00ffffff00ff00ffffff00ff00ff00ff00ff00ffffff00ff00ffffff00ff0000ffff00ff00ffffff00ff0000ffff00ffff00ffffffff00ffffff00ffff0000ffffffff00ffffffff0000ffff00ffffffffff00ffff00ffffffffff0000ffffffffffffff00ff0000ffff00ff00ffffff00ffff0000ffffff00ffffff00ff00ffffff00ff00ff00ff00ff00ffffff00ffffff00ffffff00ffffff00ffff00ff00ffffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffff00ffffff00ff00ff0000ffff00ff0000ffffff000000ffff00ff0000ffff00000000ffffffffffffffff00ffffff00ffff000000ffffff000000ffff00ff0000ffffffffffffffffff0000ffffff00ff0000ffff00000000ffffff000000ffff00ff0000ffffff00ffffffffff000000ffffff000000ffffff000000ffffffffffffffff00000000ffffff000000ffffff000000ffffffff00ffffff00ffff00ffffff0000ffffff00000000ffffff000000ffffffffffffffff00000000ffff00ff0000ffffff000000ffff00ffffff00ffff0000ffffffff00000000ffff000000ffffffffffffffffff000000ffffff000000ffff0000ff00ffff00000000ffffff000000ffff00ff0000ffffff000000ffff00ff0000ffff00000000ffffff000000ffffffffffffffff00000000ffff00ff0000ffffff000000ffff00000000ffffffffffffffffff000000ffff00ff0000ffffff000000ffffffffffffffffff000000ffffff000000ffff0000ff00ffff00000000ffffffff00ffffffff000000ffff00ffffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ff00000000ffffff000000ffffffffffff00ffff000000ffff00ffffff00ffffffff0000ffff00000000ff00000000ffffff000000ffffffff0000ffff00ffffffffffff00000000ffff000000ffffffff0000ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ff00ffffff00ff00ffffff00ffff00000000ffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ff00ffffff00ffff00ffff00ff00ffffffffff00ffffff00ff00ffffff00ffff00ffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00ffffff00ff00ffffffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ff00ffffff00ffffffff00ffffff00ffffffff00ffffffffff00ffffff00ff00ffffffffffff00ffffffffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffff00ffffff00ff0000000000ff00ffffff00ffffff00ffffff00ffffff00ffffff00ffffffff00000000ff00ffffff00ffff0000ffffffff00ffffffff00ffffffffffff00000000ff00ffffffffffff00ffffffffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffff00ffffff00ff00ffffff00ff00ffffff00ffffff00ffffff0000ffff00ff0000ffffffffffffffff00ff00ffffff00ff00ffffff00ffff00ffffffff0000ffff00ffffffffff00ff00ffffff00ffff00ffffffffffffff0000ffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffff00000000ffffff000000ffffff000000ffffff0000ffffff00ff0000ffffffff00ffffffff000000ffff00000000ffffff000000ffff00000000ffff00ff0000ffffff000000ffffff000000ffff00000000ffffffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c b2b2b2b2b2b24cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b2b2b2b2b2 b24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c b2b27f7f7f4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7fb24c4c4c4c4c4c4c4c4c7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb24c4c4c7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7fb27f7f7f7f7f7f7f7f4c7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb27f7f4c7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7fb27f7f7f7f7f7f7f7f4c7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb27f7f4c7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7fb2b2b2b2b2b2b2b2b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fff7fff7f7f7fff7fff7f7f7fff7fff7f7f7fff7fff7f7f7fff7fff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb2b2b2b27f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fffffff7f7f7fffffff7f7f7fffffff7f7f7fffffff7f7f7fffffff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fffffffffff7fffffffffff7fffffffffff7fffffffffff7fffffffffff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c b2b27f7f7f4cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b27f7f7f4c b2b27f7f7f4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c7f7f7f4c b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b24cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b24cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2 grestore iCTM setmatrix [ 1 0 0 1 0 0 ] concat 192.074 532.462 (Figure 6: TextView displaying space characters) 10 382.868 ws newpath 52.3911 329.201 moveto 52.3911 330.201 lineto 280.391 330.201 lineto 280.391 329.201 lineto 52.3911 329.201 lineto gsave eofill grestore 165.141 320.561 ( ) 2 167.642 ws /Courier 10 sf 52.3911 309.041 (Bitmap* nl = new Bitmap\("newline.bm"\);) 4 280.391 ws 52.3911 298.441 (Bitmap* sp = new Bitmap\("space.bm"\);) 4 268.391 ws 52.3911 277.241 (while \(\(c = getc\(file\)\) != EOF\) {) 6 250.391 ws 52.3911 266.641 ( if \(c == '\\n'\) {) 6 160.391 ws 52.3911 256.041 ( line->append\(new Stencil\(nl\)\);) 5 256.391 ws 52.3911 245.441 ( page->append\(line\);) 4 190.391 ws 52.3911 234.841 ( line = new LRBox\(\);) 7 190.391 ws 52.3911 224.241 ( } else if \(c == ' '\) {) 9 196.391 ws 52.3911 213.641 ( line->append\(new Stencil\(sp\)\);) 5 256.391 ws 52.3911 203.041 ( } else if \(c == '\\f'\) {) 8 202.391 ws 52.3911 192.441 ( page->append\(line\);) 4 190.391 ws 52.3911 181.841 ( page->append\(new HRule\(1\)\);) 5 238.391 ws 52.3911 171.241 ( page->append\(new VGlue\(1\)\);) 5 238.391 ws 52.3911 160.641 ( page->append\(new HRule\(1\)\);) 5 238.391 ws 52.3911 150.041 ( line = new LRBox\(\);) 7 190.391 ws 52.3911 139.441 ( } else {) 4 112.391 ws 52.3911 128.841 ( line->append\(new Character\(c\)\);) 5 262.391 ws 52.3911 118.241 ( }) 2 70.3911 ws 52.3911 107.641 (}) 1 58.3911 as newpath 52.3911 94.121 moveto 52.3911 95.121 lineto 280.391 95.121 lineto 280.391 94.121 lineto 52.3911 94.121 lineto gsave eofill grestore /Times-Roman 10 sf 165.141 85.481 ( ) 2 167.642 ws 73.3555 73.9611 (Figure 7: Code for displaying space characters) 12 259.427 ws newpath 300.791 424.121 moveto 300.791 425.121 lineto 540.791 425.121 lineto 540.791 424.121 lineto 300.791 424.121 lineto gsave eofill grestore 419.54 415.481 ( ) 2 422.042 ws /Courier 10 sf 300.791 403.961 (TextView::TextView \(FILE* f, Coord w\) {) 5 534.791 ws 300.791 393.361 ( Composition* page = new LRComposition\() 6 540.791 ws 300.791 382.761 ( new TBBox\(\),) 5 396.791 ws 300.791 372.161 ( new SimpleCompositor\(\), nil, w) 7 504.791 ws 300.791 361.561 ( \);) 2 324.791 ws 300.791 350.961 ( int c;) 3 348.791 ws 300.791 340.361 ( while \(\(C = getc\(file\)\) != EOF\) {) 8 510.791 ws 300.791 329.761 ( if \(c == '\\n'\) {) 8 420.791 ws 300.791 319.161 ( page->append\() 6 414.791 ws 300.791 308.561 ( new Discretionary\() 9 456.791 ws 300.791 297.961 ( PenaltyGood,) 10 432.791 ws 300.791 287.361 ( new HGlue\(fil\),) 11 450.791 ws 300.791 276.761 ( new HGlue\(\), nil, nil) 13 486.791 ws 300.791 266.161 ( \)) 8 354.791 ws 300.791 255.561 ( \);) 6 348.791 ws 300.791 244.961 ( } else if \(c == ' '\) {) 11 456.791 ws 300.791 234.361 ( page->append\() 6 414.791 ws 300.791 223.761 ( new Discretionary\() 9 456.791 ws 300.791 213.161 ( 0,) 10 372.791 ws 300.791 202.561 ( new Character\(' '\),) 12 474.791 ws 300.791 191.961 ( new HGlue\(\), nil, nil) 13 486.791 ws 300.791 181.361 ( \)) 8 354.791 ws 300.791 170.761 ( \);) 6 348.791 ws 300.791 160.161 ( } else {) 6 372.791 ws 300.791 149.561 ( page->append\(new Character\(c\)\);) 7 522.791 ws 300.791 138.961 ( }) 4 330.791 ws 300.791 128.361 ( }) 2 318.791 ws 300.791 117.761 ( body\(page\);) 2 378.791 ws 300.791 107.161 (}) 1 306.791 as newpath 300.791 93.6409 moveto 300.791 94.6409 lineto 540.791 94.6409 lineto 540.791 93.6409 lineto 300.791 93.6409 lineto gsave eofill grestore /Times-Roman 10 sf 419.54 85.001 ( ) 2 422.042 ws 354.13 73.481 (Figure 8: A formatting TextView) 8 487.452 ws showpage %%Page: ? 5 initgraphics 13.5289 -23.561 translate /iCTM matrix currentmatrix def /Times-Roman 10 sf 47.4711 516.975 (a possible place for a formatting break.) 12 203.826 ws 56.3611 504.455 (In this example, we use an LRComposition to break) 16 277.471 ws 47.4711 491.935 (the text into lines. The LRComposition creates LRBoxes) 15 277.471 ws 47.4711 479.415 (that contain the glyphs in each line and then it inserts) 20 277.471 ws 47.4711 466.895 (the LRBoxes into the TBBox that was passed to its) 18 277.471 ws 47.4711 454.375 (constructor. The result is an object structure similar to) 17 277.471 ws 47.4711 441.854 (the previous one we built explicitly; the difference is) 16 277.471 ws 47.4711 429.334 (that the composition is now computing the line breaks.) 16 277.471 ws 47.4711 416.814 (We tell the composition how to find formatting breaks) 16 277.471 ws 47.4711 404.294 (by passing a Compositor to its constructor. Here we) 17 277.471 ws 47.4711 391.774 (use a SimpleCompositor, which does simple line filling.) 14 277.471 ws 47.4711 379.254 (Other Compositors implement different algorithms. For) 11 277.471 ws 47.4711 366.734 (example, a TeXCompositor implements the TeX line) 12 277.471 ws 47.4711 354.214 (breaking algorithm, which finds the set of line breaks) 16 277.471 ws 47.4711 341.694 (that minimizes total demerits for a complete paragraph.) 14 269.102 ws 56.3611 329.174 (The first constructor parameter for a Discretionary) 12 277.471 ws 47.4711 316.654 (defines the formatting penalty that would be incurred if) 16 277.471 ws 47.4711 304.134 (the break was taken; the remaining parameters define) 14 277.471 ws 47.4711 291.613 (the appearance of the discretionary in its unbroken) 14 277.471 ws 47.4711 279.093 (and broken states. In this example, we represent) 15 277.471 ws 47.4711 266.573 (space characters as discretionaries with zero penalty) 12 277.471 ws 47.4711 254.053 (\(suitable places for a break\). When unbroken, the) 15 277.471 ws 47.4711 241.533 (Discretionary looks like a normal space character; when) 14 277.471 ws 47.4711 229.013 (the break is taken, it looks like a piece of Glue. The) 23 277.471 ws 47.4711 216.493 (constant PenaltyGood in the constructor for the newline) 14 277.471 ws 47.4711 203.973 (Discretionary represents the best possible place to break.) 14 277.471 ws 47.4711 191.453 (This break, which marks the end of a paragraph, will) 18 277.471 ws 47.4711 178.933 (always be taken.) 4 113.844 ws 56.3611 166.413 (We can continue to extend TextView by adding) 14 277.471 ws 47.4711 153.893 (support for more advanced formatting. For example, in) 15 277.471 ws 47.4711 141.373 (addition to line breaking, we can use Compositions to) 16 277.471 ws 47.4711 128.852 (format lines into columns and columns into pages. We) 17 277.471 ws 47.4711 116.332 (can also specify possible hyphenation points by inserting) 14 277.471 ws 307.471 516.975 (Discretionaries, and we can justify the right margin by) 16 537.471 ws 307.471 504.455 (using stretchable Glue for space characters. Even with) 15 537.471 ws 307.471 491.935 (these additional features, the implementation contains) 10 537.471 ws 307.471 479.415 (less that 50 lines of code. Figure 9 shows a screen dump) 23 537.471 ws 307.471 466.895 (of this version of TextView. We used a TeXCompositor) 17 537.471 ws 307.471 454.375 (for line breaks, which produces high-quality formatting.) 12 537.471 ws 307.471 441.854 (The compositor takes few hyphenation points, and the) 14 537.471 ws 307.471 429.334 (``color'' of the text is even because the TeX algorithm is) 20 537.471 ws 307.471 416.814 (usually able to avoid bad breaks.) 10 438.566 ws /Times-Bold 14 sf 307.471 386.414 (3) 1 314.471 as 327.687 386.414 (Glyph protocol) 2 418.311 ws /Times-Roman 10 sf 307.471 368.894 (Building views with glyphs is like building a model) 16 537.471 ws 307.471 356.374 (with Lego blocks: in both cases the builder chooses) 16 537.471 ws 307.471 343.854 (components and snaps them together. The bumps and) 15 537.471 ws 307.471 331.334 (holes on Lego blocks specify how they fit together.) 16 537.471 ws 307.471 318.814 (Similarly, the protocol that glyphs obey specifies how) 14 537.471 ws 307.471 306.294 (glyphs fit together. Lego is a successful building set) 17 537.471 ws 307.471 293.774 (because it offers components that are easy to understand) 16 537.471 ws 307.471 281.254 (and easy to use. It's easy to build complex structures,) 19 537.471 ws 307.471 268.733 (even those composed of large numbers of blocks,) 14 537.471 ws 307.471 256.213 (because it's easy to fit individual blocks together. In) 17 537.471 ws 307.471 243.693 (designing the Glyph protocol we sought this same) 14 537.471 ws 307.471 231.173 (simplicity.) 11 349.981 as 316.361 218.653 (The Glyph protocol consists of three operations:) 12 509.673 ws 307.471 201.133 ( ) 2 309.971 ws 318.861 201.133 (\267) 1 322.361 as /Times-Italic 10 sf 331.251 201.133 (Request) 7 362.911 as /Times-Roman 10 sf 362.911 201.133 ( defines a glyph's preferred screen space) 12 531.251 ws 331.251 188.613 (allocation. Composite glyphs calculate their own) 11 531.251 ws 331.251 176.093 (requests from the requests of their components.) 12 520.942 ws 307.471 158.573 ( ) 2 309.971 ws 318.861 158.573 (\267) 1 322.361 as /Times-Italic 10 sf 331.251 158.573 (Allocate) 8 364.581 as /Times-Roman 10 sf 364.581 158.573 ( tell the glyph how much space it) 14 531.251 ws 331.251 146.053 (actually got. Composite glyphs apportion their) 11 531.251 ws 331.251 133.533 (allocation among their components according to) 10 531.251 ws 331.251 121.013 (the component's requests.) 4 435.403 ws iCTM setmatrix [ 0.712871 0 0 0.712871 30.8351 162.416 ] concat gsave /picstr 526 string def 107.391 565.655 translate 505 269 scale 526 280 8 [526 0 0 280 0 0] {currentfile picstr readhexstring pop} image b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff0000000000ffff00ffffff00ffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff00ffffff0000000000ffffffffffffffffff00ffffff00ffff00ffffffff00000000ffff00ffffffffffff00ffffff00ffff00ffffffffffffff00000000ffff00ffffffffffffffffffffffffffff00ffff00ffff00ffff0000000000ffffffffffffffffff00ffffff00ffffff00000000ffffff00ff00ffffff0000000000ffffffffffffffffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff0000000000ffff00ffff00ffff00ffff0000000000ffff00ffffff00ffff00ffffff0000000000ffff00ffffff00ffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffffff00ffffffffffffffffff00ffffff00ffff00ffffffffffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffffffffffffffffff00ffffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff0000ff0000ff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff0000ffff00ffffff00ffffffffffffffffff0000ffff00ffff0000ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffff00ffff0000ff0000ff00ffff0000ffff00ffff00ffff00ffffff00ffff0000ff0000ff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff00ffff0000ffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff000000ffffffff000000ffffff00ff00ffff00ffffff00ff0000ffffffff000000ffffff00ff0000ffffffff000000ffffff00ff0000ffff000000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff00ff00ffff000000ffffffffffffffffffff00ff0000ffffff00ff00ffff000000ffffffff000000ffff000000ffff00ffffff000000ffffffff000000ffffff00ffffffffffffffffffffffffff00ffffff00ffffff00ffff000000ffffffffffffffffffff00ff0000ffffffff000000ffffff00ffffff00ffffff000000ffffffffffffffffffffff00ffff00ff00ffff00ffffff00ff0000ffffff00ffffff000000ffffff00ff00ffff00ffffffff000000ffffff00ff0000ffff000000ffffff000000ffffffff0000ff00ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff0000ffffffffff00ffffffffffffffffffffffffff0000ffff00ffffff00ffffff000000ffffffffffffffffffffffffff000000ffffffff000000ffffffff0000ffffff0000ffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffff00ffffff00ffffff000000ff00ff00ffffff00ffffff0000ff00ffffff000000ffffff00ffffffff000000ff00ff00ffff0000ffff00ffff00ffffff00ffffff0000ff00ffffffffffffffffffffff0000ffff00ffffff00ffffff000000ffffffffffffffffffffffff00ffffff00ffffff000000ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffff0000ff00ffffff000000ffffff00ffffff00ffffffff00ffffffffff000000ffffffff0000ffffffffffffff00ffff00ffffffff000000ffffff00ffff00ffff00ffffffffffffffff000000ff00ffff00ffffffff00ffffffff00ff0000ffffff00ffffff00ffff00ffffffffffffffffffffffff00ffffffffff000000ffffffffffffffff0000ffffff00ffffff00ffffff000000ffffffff00ffffff00ffffffffffffff0000ffff00ffffff00ffffff000000ff00ff0000ffffffffffffff0000ff00ffff00ffffffff00ffffffff00ff0000ffffff00ffffff00ffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffff00ffffff00ff00ffffffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff0000ffff00ffffff00ffff00ffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffff00ffffff00ffff00ffffff00ffffffff00ffffffff00ffffff00ffff00ffff00ffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffffff00ffffff0000ffff00ffffff00ff00ffffff0000ffff00ffff00ffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffff0000ffff00ffffff00ff00ffffff0000ffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffffff00ff00ffffffffffffffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffffffffff00ffff00ffffffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffffff00ff00ff00ff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffff00ffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffff00ffffffffff00ffff00ffffff00ff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ff00ff00ff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffff00ffffff00ff00ffffff00ffffff00ffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffff00ffffffffffffffffffffffff00ffffff00ffffff00ffff0000000000ffffffffffffffffffffff00ffffffffffff00ffffff00ffffff0000ffffff00ffffffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffffff00ffffff00ffffff00000000ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffffff00000000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffff00ffffff00ffffff00ffff0000000000ffffffffffffffffffffff00ffffff00ffff0000000000ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff0000000000ffff00ffffff00ffffff00ff00ffffff0000000000ffffff0000ffffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffff00ffffffffff00ffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffffff0000ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffff00ffffff00ffffff00ffffff00000000ffff00ffffffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffffffffff00ffffffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffffff00ffffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffff00ffffff000000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffff00ffffff00ffffff00ffffffffffff00ffff00ffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffff00ffff00ffffff00ffffffffffffffffffffff00ffffff0000ffff00ffff00ffffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffffff0000ffff00ffff00ffffff00ffff0000ffff00ffff00ffff0000ffff00ffffff00ffff0000ffff00ffffff00ffff00ffff00ffffff00ffff0000ffff00ffff00ffff0000ffffffffffffffffffffff00ffffff0000ffff00ffff00ffffff00ffffffffffffffffffffff0000ffff00ffff00ffffff00ff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffff00ffff0000ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffff0000ffff00ffffff00ffff0000ff0000ff00ffffffffffff00ffffffffffffffff00ffff00ffffff00ffff0000ffff00ffff0000ffff00ffffffffffffffffffffffffffffff00ffffffff00ffffff00ffffffffffff00ffff00ffff0000ffff00ffff00ffffff00ff00ffffff00ffffff00ffffffffff00ffffff0000ffff00ffff00ffffff00ffff00ffffffffffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff0000ffffff00ffffff00ffffffffffffffffffff000000ffff00ff0000ffffffff000000ffffffffffffffffffffffffff000000ffffffff000000ffffffff0000ffff000000ffffffffffffffffffffffff000000ffff000000ffffffffffffffffffff00ff0000ffffffff000000ffffff00ff0000ffffffff0000ff00ffffff000000ffffff00ff00ffff000000ffff000000000000ffff00ffff00ff0000ffffffff0000ff00ffffffffffffffffffff000000ffff00ff0000ffffffff000000ffffffffffffffffffffffff00ff0000ffffffff000000ffff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff0000ff00ffffff000000ffffff00ff00ff00ffff00ffffff00ffffff000000ffffffff0000ffffffffffff000000ff00ff00ffff000000ffffff00ff00ffff00ffffffffffffff00ffffffffffffffff00ffff00ffffff00ffff00ff0000ffffff00ff0000ffffffffffffffffffffffffffffffff00ffffffffff000000ffffffffffffffff0000ffffff00ff0000ffffffff000000ffff00ffffff00ffffff00ffffffff000000ffff00ff0000ffffffff000000ffff000000ffffffffffffff0000ff00ffff00ffff00ffffff00ffff00ff0000ffffff00ff0000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ffffffff000000ff00ffffff00ffffffff00ffff00ffffff00ffffff0000ff00ffffff0000ffffffffffffffffffff000000ff00ff00ffff00ffffff000000ffffff00ffffffff0000ff00ffffff000000ffffffff0000ff00ffffffffffffffff00ff0000ffffffffff00ffffffffffffffffffffff0000ffff00ffffff00ffffff000000ffffffffffffffffff0000ffffff000000ffffffff000000ffffff00ffff00ffffff00ff00ffff0000ffffffffffffffff00ffffff0000ffffffffffffffffffff000000ffffff00ffff00ffffff0000ffffffff000000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff0000ffffff000000ffffff00ffffffffffff00ffffffffff00ffffff000000ffffffff00ffffff00ffffffff0000ffffffffffffffffffffff0000ffffffff000000ffffffffffffffffffff0000ffff00ffffff00ffffff000000ff00ff0000ffffffffffffffffff0000ffff00ffffff00ffffff000000ffffffffffffffffffff00ffff00ffffff00ffff0000ffffff000000ffffff00ffffffff000000ff00ffff000000ffffff0000ffffff000000ffffff00ffffffffffffffffffffff000000ffffff00ffffff000000ff00ffff0000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ffffff00ffffffff00ffffffff00ffff00ffffff00ffff00ffff0000ffff00ffff00ffffffffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffff00ffff00ffff0000ffffffffffffffff0000ffff00ffffff00ff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffffffffffffffff00ffff00ffff00ffffffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffff00ffffffffff00ffff00ffffff00ffffff00ffffff00ffffff00ffff00ffffffffffffffffff00ffff00ffff00ffffff00ffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffffff00ff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffffffffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffff00ffffff00ffffff00ff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ff00ffffff00ffff00ffffffffffffffffff00ffffffffff00ffffffffffffffff00ffffff00ffff00ffff00ffffffffff00ffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffffffff00ff00ffffffff00ffff00ffffffffffff00ff00ff00ff00ffffffffff00ffffffffffffffffffffffff00ffff00ffffff00ffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ffffffff00000000ffffff00ff00ffffff00ffff00ffffff00ffff00ffffff00ffffff0000ffffffffffffffffffff00000000ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffff0000000000ffff00ffffff00ffffffffffffffff00ffffff00ffff00ffff00ffffffffffffffffffff00ffffff00ffffff00ffff0000000000ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffff00ffff00ffffffffffffffffff00ffffff0000ffffffffffffffffff00ffffff00ffff00ffff00ffffff0000ffffff0000000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff0000000000ffff00ffffffffff00ff00ffffffff00ffff0000000000ffff00ffff00ffff00ffffff0000ffffffffffffffffffffff0000ffffff00ffffff00ffffffffffffffffff00ffffff00ffffff00ffffff00000000ffff00ffffffffffffffffffff00ffffff00ffffff00ffff0000000000ffffffffffffffffff00ffff00ffffff00ffff00ffffff0000000000ffff00ffffffff00000000ffff00ffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffff00ffffffffffff00ffffff00000000ffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffff00ffff00ffffffffffffffffff00ffff00ffffffffffffffffffffff00ffffff00ffff00ffff00ffff00ffffffffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffff00ffffffffff00ffffff00ffffffffffffffffff00ffffff00ffffff00ffffffffffff00ffff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffff00ffffffffffff00ffffffffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff0000ffff00ffff00ffff0000ffff00ffff00ffffffffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffff0000ffff00ffff0000ffff00ffffff00ffff00ffff0000ffffffffffffffff0000ffff00ffff00ffffff00ffffffffffffffffff00ffffff0000ffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ff00ffffff00ffff00ffffffffffffffffff00ffff00ffff00ffffffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff0000ffffff00ffffff00ffffff00ffff00ffffff00ff00ffffff00ffffff00ff00ffff00ffffffffffffffffff00ffff00ffff00ffffff00ffffffffffffffffff00ffffff0000ffff00ffff00ffffff00ffff00ffffffffffffffffffff00ffffff0000ffff00ffff00ffffff00ffffffffffffffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff0000ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff0000ffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ffffffff000000ffffff00ffffff00ffff00ffff00ff0000ffffffff0000ff00ffffff0000ffffffffffffffffffff000000ffff000000000000ffff000000ffffff00ff00ffff0000ff00ffffff000000ffffffff0000ff00ffffffffffffffff00ff0000ffffff00ffffff00ffffffffffffffff000000ffff00ff0000ffffffff000000ffffffffffffffff000000ffffff000000ffffffff000000ffffff00ffff00ffff00ffff00ff000000ffffffffffffffff00ffffff0000ffffffffffffffffffff000000ffff000000000000ffff0000ffffffff000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000ffff000000ffffff000000ffffff00ff00ffff00ffffff00ffffff00ffffff000000ffff00ffffff00ffffff00ffff0000ffffffffffffffffffffff0000ffffffff000000ffffffffffffffffff000000ffff00ff0000ffffffff000000ffff000000ffffffffffffffff000000ffff00ff0000ffffffff000000ffffffffffffffffffff00ffff00ff0000ffff000000ffffff000000ffffff00ff00ffff000000ffffffff000000ffff000000ffffff000000ffffff00ff00ffffffffffffffffff000000ffffff00ffffff000000ffffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff0000ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffff00ffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff0000ff0000ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ffffff000000ff00ff00ffffff00ffffffff00ffffffffffffffff00ffffff00ffffff000000ffffffff00ffffff00ffffffffffffffffff000000ffffffff000000ffffff00ffff00ffff00ffff00ff0000ffffffff000000ffffff00ffffff00ffffff000000ffffff00ffffff00ffff0000ffffff0000ffffffffffffffff00ffff00ffffffff000000ffffff00ffff00ffff00ffffffffffffffff0000ffffffff000000ffffff00ffffffff000000ff00ff0000ffffff000000ffffff00ffffff00ffff00ffffffffffffff0000ffff00ffffff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff0000ffffff000000ffffff00ffffffffffff00ffffffffff00ffffff000000ffffffff00ffffff00ffffffff0000ffffffffffff000000ffffff00ffffff000000ff00ffff0000ffffffff0000ffffffff000000ffffffff0000ffffff00ffffffffffff00ffffff00ffffffff000000ffffffffffff00ff0000ffffff00ffffff000000ff00ff00ffffff00ffffffffff0000ffffff000000ffffffffff00ffffffff000000ffffffff0000ffffff0000ffff00ffffffff0000ff00ffffff000000ffffff0000ffffff0000ff00ffff00ffffffff000000ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ff00ffffffffffffff00ffffff00ffff00ffffff00ffffff00ffffff00ffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffff00ffffffffff00ffff00ffffff00ffffff00ffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffffffffffffffff00ffffff00ffffff00ffffff00ffffffffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffffff00ffffff00ffffffff00ffffff00ffffff00ffff00ffff00ffff00ffffff00ffffff00ffff0000ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ff00ffffffffffffff00ffffff00ffff00ffffffffffff00ff00ff00ff00ffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffff00ffffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffffffffffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffffffff00ff00ffffffff00ffff00ffffffffffff00ff00ff00ff00ffffffffff00ffffffff00ffffffffffff00ffff00ffffff00ffffffffff00ffffffffff00ffff00ffffffffffffffffff00ffffffffffffffff00ff00ff00ff00ffff00ffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffffff00ffffff00ffffffff00ffffff00ffffffffffffffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ffffff00000000ffff00ffffff00ffff00ffff00ffffffffffffff00ffffff00ffff0000000000ffff00ffff00ffff00ffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff0000000000ffff00ffffff00ffff00ffffffff0000ffffffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffffffff0000ffffff00ffffffffffff00ffffffff00000000ffff00ffffff00ffffffffffff00ffffff00ffffffffffffffffffff00ffffff00ffffff00ffff0000000000ffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff0000000000ffff00ffffffffff00ff00ffffffff00ffff0000000000ffff00ffff00ffff00ffffff0000ffffffffff00ffffffffffff00ffffff00000000ffffff0000ffffffff0000ffffff0000000000ffffff0000ffffffffffffffffff00ffff00ffff00ffff0000000000ffffffffff00ffffff00ffff00ffffff00000000ffff00ffffff00ffffffffff00ffffff00ffffff00ffffffff00ffffff0000000000ffffff0000ffffff00ffffff00ffffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffffff0000000000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffffff00ffffffffff00ffffffffffff00ffffffffffffff00ffff00ffffff00ffffffffffff00ffffff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffffffffffff00ffffffffffff00ffffffffffff00ffff00ffffffffff00ffffffffff00ffffff00ffff00ffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffffffffff00ffffff00ffff00ffffffffffff00ffff00ffffff00ffffffffff00ffffff00ffffff00ffffffff00ffffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ff0000ff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffffffffffff0000ffff00ffff00ffffff00ff00ffffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffff0000ff0000ff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffffffffffff00ffff0000ffff00ffffff00ffff0000ff0000ff00ffffffffffffff00ffff00ffff00ffffff00ffff0000ffff00ffffff00ffff00ffffff00ffffff00ffff0000ffff00ffff00ffffffffffffff00ffffff0000ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff0000ffffff00ffffff00ffffff00ffff00ffffff00ff00ffffff00ffffff00ff00ffff00ffffffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffffffff00ffffff00ffffff00ff00ffffff00ffffffffff0000ffff00ffff00ffff00ffffff00ffff0000ffff00ffffffffff00ffffff00ffffff00ffffffff0000ffff00ffffff00ffff00ffff00ffff00ffffff0000ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff0000ffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff00ffff00ffffffff000000ffffff00ff0000ffffff00ffffff00ffffffffffff00ff0000ffffffff000000ffff00ffffff00ffffff00ffffffffffffff000000ffffffff000000ffffff00ff00ffff00ffffff00ff0000ffffffff000000ffffff00ff0000ffffffff000000ffffff00ff0000ffff000000ffffff0000ffffffffffffff000000ff00ff00ffff000000ffffff00ff00ffff00ffffffffffffffffff0000ffffffff000000ffffff00ff00ffff000000ffff000000ffffff000000ffffff00ff0000ffffffffffffffffffff000000ffff00ff0000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000ffff000000ffffff000000ffffff00ff00ffff00ffffff00ffffff00ffffff000000ffff00ffffff00ffffff00ffff0000ffffffffffff000000ffffff00ffffff000000ffffffff0000ffffffff0000ffffffff000000ffffffff0000ffffffffffffffff00ffffff00ffffff00ffff000000ffffffffffff00ff0000ffffff00ffffff000000ffffff00ff0000ffffffffff000000ffffff000000ffffffffff00ff00ffff000000ffffffff0000ffff000000ffff00ff00ff00ffffff00ffffff000000ffff000000ffff00ffffff00ffff00ff00ffff000000ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ffffffff0000ff00ffff00ff0000ffffff00ff0000ffffffff000000ffffff00ffffff0000ffffff00ffffffffffffffff00ff0000ffffff00ffffffff000000ffffffff0000ff00ffff00ffffffff000000ff00ff00ffff00ffff00ffff00ffff00ffff00ffffff000000ffffff00ffffffff0000ffffffffffffffffffff00ffff00ffff00ffffff0000ff00ffffff0000ffffff0000ffffffffffffffffff000000ffffff00ffff0000ffffff000000ffffff00ffffff00ffffffffffffffffffff0000ff00ffffff000000ffffff00ffff00ffff00ffffff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff000000ffffff00ffffffff000000ff00ff00ffffffff000000ffffff00ffffff00ffffffff00ffffffffffff00ffffff0000ffffffffffff000000ffffffff0000ff00ffff00ffffff00ffffffff000000ffffff00ffffff00ffff0000ffff00ffffffff00ffffffffffff00ffff00ffffff00ffffff0000ff00ffffff000000ffffff00ff0000ffffffff000000ffffff00ffffff00ffffff0000ff00ffffff000000ffffff00ffffff00ffff0000ffffffffff000000ffffff00ffffffffff000000ffffff0000ffff00ffffff00ffffff000000ffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ffff0000ffff0000ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffff0000ffff00ffff00ffffff00ffffff00ffff00ffff0000ffff00ffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffff00ffff00ffff00ffff00ffff0000ffff00ffff00ffff00ffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ff00ffffffffff00ffff00ffff00ffffffff00ffffff00ffff00ffff0000ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ff00ffffffffff00ffff00ffffff00ffff00ffff0000ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffff0000ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffffffffff00ffffffffffff00ffffffffffffffffff00ffff00ffff00ffff00ffffff00ffffffffff00ffff00ffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffffffffffff00ffffff00ffffffffffffffffff00ffffff00ffff00ffffffffffff00ffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffffff00ff00ffffffffff00ffffffffff00ffffffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ff00ffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffff00000000ffff00ffff00ffff00ffff00ffff00ffff00ffff0000000000ffff00ffffffff0000ffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffffff0000ffffff00ffffffffffffffffff00ffffff00ffff00ffff00ffffff0000000000ffff00ffffff00ffffffffffffffffff00ffffff00ffff0000000000ffff00ffff00ffff00ffffff00ffff0000000000ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffff0000000000ffff00ffffffff00000000ffff00ffffff00ffffffffffff00ffffff00ffff00ffff00ffffffffff00ffffff0000ffffffffff00ffffffffffff00ffffff00ffff00ffffff00ffffff0000000000ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffff00ffff00ffffff00ffff00ffffff00ffff0000000000ffff00ffffff00ffff0000000000ffff00ffffff00ffff00ffffff00ffff0000000000ffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffffff00ffffff00ffff0000000000ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffffffff00ffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffffffff00ffff00ffffffffffffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffffffffffffffffffffffffff0000ffff00ffff0000ffff00ffffff00ffff00ffff0000ffff0000ffff00ffffff00ffff0000ff0000ff00ffff0000ff0000ff00ffff00ffffff00ffff0000ffff00ffff00ffffffffffffffffff0000ff0000ff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffffff00ffff0000ffff00ffffffffffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffff0000ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffff00ffff00ffffff00ffff0000ffff00ffffff00ffff0000ffff00ffffff00ffff0000ffff00ffff00ffffff00ffffffff00ffff00ffff00ffffffff00ffffff00ffff00ffffff00ffff0000ffff0000ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffffffff00ffff0000ffff00ffff00ffff0000ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff00ffff0000ffff00ffffff00ffff0000ffff00ffff00ffffffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffffff0000ffff00ffff00ffffff00ffff0000ffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff0000ffffff00ffffff00ffff00ff0000ffffff00ff0000ffffffff000000ffffff00ff00000000ffffffffffffffffffffffff00ff0000ffffff00ff00ffff000000ffffffff0000ff00ffff00ff00ffff000000ffffff00ff00ffff00ffffff00ff00ffff00ffffffff000000ffffff00ff00ffff0000ffffffffffffffffffff00ff00ffff00ffffff00ffffff00ffffff0000ffff000000ffffffffffffffffff000000ffff000000000000ffffff000000ffffff00ff0000ffffffffffffffffffffff0000ff00ffffff000000ffff000000ff00ffff00ff0000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff00ff0000ffffff00ffffff000000ffffff00ff00ffff000000ffffff00ff00ffff000000ffffff00ff0000ffffff00ffffff00ffffffff00ffffff0000ffffffffffff000000ffffff00ffffff00ffff00ff00ff00ff00ffff000000ffffff00ff0000ffff000000ffff00ffff00ffffff00ffffffff00ffff00ff0000ffffffff0000ff00ffffff000000ffffff00ff0000ffffffff000000ffffff00ff0000ffffffff0000ff00ffffff000000ffffff00ff0000ffff000000ffffffffff000000ffff000000ffffffff000000ffff000000ffff00ff0000ffffffff000000ffffff00ff00ffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffff00ffff0000ffffff000000ffffff00ffffff00ffffff000000ff00ffff000000ffffffff000000ffffffff0000ffffffffff0000ffffff000000ffffffffffff000000ff00ff00ff0000ffffff00ff0000ffffff00ffff00ffffff000000ffffffff000000ff00ff0000ffff00ffffff000000ffffff00ffffff00ffffffffff0000ff00ffffff000000ff00ff0000ffffff000000ff00ff00ffffffffffffffff00ffffff00ffffffff00ffff0000ffff00ffffff00ffffff000000ffffffff0000ff00ffff0000ffffffff0000ffff00ffffff00ffff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffff00ffff00ffffff000000ffffff00ffffff00ffffffffffff00ffffff0000ffffffffffffffff00ffffff00ffffff00ffffff00ffff0000ffff0000ffffff000000ffffff00ffffff00ffffffffffff00ffff00ffffff00ffffffffffffffff00000000ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffff00ffffff00ffffff000000ffffffffffffffff0000ff00ffff00ffffffff00ffffffff00ff0000ffffff00ffffff00ffffffffffffffff000000ffffff00ffffff000000ff00ffff0000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffff00ffffff00ffffff00ffffffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffff00ffff0000ffff00ffffff00ffff00ffffff00ffffff00ffffffffffffffffffffff00ffffff00ffffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000ffff00ffffffffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffff00ffff00ffffffffffffff00ffffff00ffffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffff00ffffff00ffffffffffffff00ffffffff00ffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff00ffffff00ffffffffffff00ffff0000ffff00ffffff00ff00ffffff0000ffff00ffff00ffffff00ffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffffffff00ffffffff00ffffff00ffffff00ffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffffffffffffffffffff00ffffff00ffffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ff00ff00ff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffff00ffffffffffff00ffffffffff00ffffffffffff00ff00ff00ff00ffff00ffffff00ffff00ffffff00ffffff00ffffffffffff00ffffff00ffffffffffff00ffff00ffffff00ffffffffffff00ffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffff00ffffff00ff00ffffff00ffffff00ffff00ffffff00ffffffffffffff00ffffffffffff00ffff00ffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff0000000000ffff00ffffff00ffffff00000000ffff00ffffffffffff0000000000ffffff0000ffffffffff00ffffff00ffffff00ffffffffff00000000ffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffffff00000000ffff00ffffffff00000000ffffffffffffffffffff00ff00ff00ff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffff00ffffffffffff00ffffff0000ffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff0000000000ffff00ffffff00ffffffffffff00ffff00ffffff00ffffffffffff00ffffffffffffffff0000000000ffff0000000000ffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff0000000000ffffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffffff00ffffffffffff00ffffff00000000ffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffffffffffff00ffff00ffffffffffffff00ffffffffffffffffffff00ff00ff00ff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffff00ffffffffffff00ffff00ffffffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffff00ffffff00ffffffffffff00ffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffffffffffff00ffffffffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffff00ffffff00ffffff00ffffffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffffff00ffff0000ffff00ffffff00ffff00ffffff00ffffff00ffffffffffffffffffff00ffff00ffff00ffffff00ffff00ffffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff0000ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ff0000ffff00ffff00ffff00ffffff00ffff0000ffff00ffffffffffff00ffff00ffff00ffffffffff00ffffff00ffffff00ff0000ffff00ffff00ffffff00ffffff00ffffff00ffff0000ffff00ffffffffffff00ffff0000ffff00ffffffffffff00ffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffff0000ffff00ffff00ffffff00ffffffffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff0000ffff00ffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ff0000ffff000000ffffff000000ffffff00ff00000000ffff000000ffffffff000000ffffffff000000ffffffff0000ffffffff000000ffffff000000ffffffffffff000000ffffff00ff0000ffffff00ff0000ffffff00ffff00ffffff000000ffffffff000000ffff000000ffff00ffffff000000ffffff00ff0000ffffffffffff0000ff00ffffff000000ffff000000ffffff000000ffffffffffffffffffff00ffffff00ffffff00ffff00ff000000ffff00ff0000ffffffff000000ffffff00ffffff00ff000000ffffff000000ffff00ff0000ffffff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ff00ff0000ffffff00ffffff000000ffffff00ff0000ffffffffffffff00ffffff0000ffffffffffff00ffffff00ffffff00ff00ff00ff00ff000000ff000000ffffff000000ffffff00ff0000ffffffffffffff00ffff00ff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff0000ffffffff000000ffffffffffffffff0000ff00ffff00ffff00ffffff00ffff00ff0000ffffff00ff0000ffffffffffffffffff000000ffffff00ffffff000000ffffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff0000ffffffff0000ff00ffff0000ffffffff0000ffff00ffffff00ffffff000000ffffffffff00ffffffffffffff0000ff00ffffff000000ffffffffff00ffffff00ffffff000000ffffff0000ffffffff00ff0000ffffff00ffffffff000000ffffffffff00ffffffff00ffffff0000ff00ffffff000000ffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffffff0000ffffff0000ffffffffff00ffffff000000ffffff00ffffffffffff00ff0000ffffffff0000ff00ffff00ffff00ffffff0000ff00ffff00ffff00ffffff00ffffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffff000000ffff00ffffffff00ff0000ffffff000000ffffff00ffffff00ffffff0000ffffff00ffffff000000ffffff00ffffff00ffffffffffffffff0000ffffff000000ffffffffffffffffff0000ffff00ffffff00ffffff000000ffffffffffffffffffff0000ffff00ffffff00ffffff000000ffffffffffffffffff00ffff00ffffff00ffff0000ffffff000000ffffff00ffffffffffff00ffffffffff00ffffff000000ffffffff00ffffff00ffffffff0000ffffffffffffffffff0000ffffff000000ffffffff000000ffffff00ffff00ffffff00ff00ffff0000ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffff00ffff00ffff0000ffff00ffffffffff00ffffff00ffffff00ffff00ffffff00ffffff00ff00ffffffffff00ffff0000ffff00ffffff00ffffffff00ffffff00ffff00ffffff00ffff00ffffffffff0000ffff00ffff00ffffff00ffffff00ffffffff00ffffffff00ffff00ffff0000ffff00ffffff00ffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffff00ffff00ffffff00ffff00ffffffffffff0000ffff00ffff00ffff0000ffff00ffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ffffffff00ff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffff00ffffffffff00ffff00ffffff00ffffff00ffffff00ffffff00ffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffff00ffffffffffffff00ff00ffffffffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffff00ffffff00ffffff00ff00ffffff00ffff00ffffff00ffff00ffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffffffffff00ffffffffffff00ffffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffff00ffff00ffffff00ffffffffffff00ffffff00ffffffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffffffff00ff00ffffffff00ffff00ffffffffffff00ff00ff00ff00ffffffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffff0000000000ffff00ffff00ffffffffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffff00ffffff00ffffff00ff00ffffff00ffff00ffffff00ffff0000000000ffffffff00ffffff00ffff00ffffff00ffff00ffff0000000000ffff00ffffffffffff00ffffffff0000ffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff0000ffffff00ffffff0000000000ffff00ffffff00ffffff0000ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff0000000000ffffffffffffffffff00ffffff00ffffff00ffff0000000000ffffffffffffffff00ffff00ffffff00ffff00ffffff0000000000ffff00ffffffffff00ff00ffffffff00ffff0000000000ffff00ffff00ffff00ffffff0000ffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff0000ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffff00ffff00ffffff00ffff00ffffffffff00ffffff0000ffff00ffff00ffffff00ffff00ffffff00ffffffff00ffff0000ffff00ffffff00ffffffff0000ffff00ffff00ffffff00ffff00ffffffffff0000ffff00ffff0000ffff00ffffff00ffff00ffffff00ffff00ffff00ffff0000ffff00ffffff00ffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffff00ffff00ffffff00ffff0000ffffffffff0000ffff00ffff00ffffff00ffff00ffff00ffff00ffff0000ffff00ffff0000ffff00ffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffffff00ffff0000ffff00ffff00ffff00ffff00ffff00ffffff00ffff0000ffff00ffffffffffffffff00ffffff00ffffff00ffffffffffffffff00ffffff0000ffff00ffff00ffffff00ffffffffffffffffff00ffffff0000ffff00ffff00ffffff00ffffffffffffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff0000ffffff00ffffff00ffffff00ffff00ffffff00ff00ffffff00ffffff00ff00ffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff0000ffffff00ffffff00ff000000ffffff000000ffff00ff0000ffffffff000000ffffff00ffffff00ffffffffff0000ff00ffffff000000ffffffffff00ff0000ffffffff000000ffff000000ffffffff00ff0000ffffff00ff00ffff000000ffffff00ffffff00ffff00ffffff0000ff00ffffff000000ffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffff000000ffffff0000ffffffff000000ffff000000ffffff00ff00ffffffff00ff0000ffffff00ffffff00ffff00ffff00ffffff0000ff00ffff00ffff00ff0000ffffffff0000ff00ffffffffffffffffffffffffffffffffffffffffffffff000000ffff00ffffffff00000000ffffff000000ffffff00ff0000ffffffff0000ffffff00ffffff000000ffffff00ff0000ffffffffffffffff000000ffffff000000ffffffffffffffff000000ffff00ff0000ffffffff000000ffffffffffffffffff000000ffff00ff0000ffffffff000000ffffffffffffffffff00ffff00ff0000ffff000000ffffff000000ffffff00ff00ffff00ffffff00ffffff00ffffff000000ffff00ffffff00ffffff00ffff0000ffffffffffffffff000000ffffff000000ffffffff000000ffffff00ffff00ffff00ffff00ff000000ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff0000ffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff00ffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff0000ffffffff0000ff00ffff00ffff00ffffff0000ff00ffffffffff00ffff00ffffff00ffff0000ffffff000000ffffff00ffffff00ffffff000000ff00ffff000000ffffffff000000ffffffff0000ffffffffffff0000ffffff000000ffffffffffffff000000ff00ff00ff0000ffffff00ff0000ffffff00ffff00ffffff000000ffffffff000000ff00ff0000ffff00ffffff000000ffffff00ffffff00ffffffffffffff000000ffffffff000000ffffff00ffff00ffff00ffff00ffff00ffff00ffffff000000ff00ff00ffffff00ffffff0000ff00ffffff0000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffff000000ffffffffffffffff00ffffff00ffffff000000ff00ffffff00ffffffffff000000ffffffffffffffffff00ffff00ffff00ffff00ffff00ff0000ffffff00ffffff000000ffffff00ffff00ffff00ffffff000000ffffff00ffffff00ffff0000ffffff000000ffffffff0000ff00ffffffffffffffff0000ff00ffff00ffffffff00ffffffff00ff0000ffffff00ffffff00ffffff0000ffffffffffffffffffff000000ff00ffff0000ffffffffffffffffff000000ff00ff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffff00ffff00ffff0000ffff00ffff00ffff00ffff0000ffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffff00ffffff00ffffff00ffffffffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff0000ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff00ffffff00ffffffffffffff00ffffff00ffff00ffffff00ffffffff00ffffffff00ffffff00ffffffffffffffff00ffff00ffff00ffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffff0000ffffffffffffff00ffff0000ffff00ffffff00ff00ffffff0000ffff00ffff00ffffff00ffff00ffff00ffffffffffffffff00ffffff00ffff00ffff00ffffffffffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffffffff00ffffffffff00ffffff00ffffff00ffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffffffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffff00ffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffffffffffffff00ffffff00ffff00ffffff00ff00ffffff00ffffff00ffff00ffffff00ffffffffff00ffffffffffffffff00ffffff00ffffffffff00ffffffffffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffffffffff00ffff00ffffff00ffff00ffffff0000000000ffff00ffffff00ffffff00000000ffff00ffffffffffff0000000000ffffff0000ffffffffffff00ffffff00ffffff00ffffffffffff00000000ffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00000000ffff00ffffff00ffff00ffffff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff00ff00ffffff0000000000ffffffffffffff00ffffff00ffffff00000000ffffff00ff00ffffff0000000000ffffffffffffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff0000000000ffff00ffff00ffff00ffff0000000000ffff00ffffff00ffff00ffffff0000000000ffff00ffffff00ffffffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff0000ffffffffffffffffffff00000000ffffff0000ffffffffffffffffff00000000ffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffffffff00ffffff00ffffff00ffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff00ff00ffffff00ffffff00ffffffffffffff00ffffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffff00ffff00ffffff00ffff00ffff00ffff00ffff0000ffffffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffff00ffffff00ffffff00ffffffffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffffffffff00ffffff00ffff00ffffff00ffff0000ff0000ff00ffff0000ff0000ff00ffff00ffffff00ffff0000ffff00ffff00ffff0000ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffff00ffffff00ffffffffffffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffff00ffff0000ff0000ff00ffff0000ffff00ffff00ffff00ffffff00ffff0000ff0000ff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff00ffff0000ffffffffffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffff00ffffffffffffffff00ffffff00ffff00ffff00ffffffffffffff00ffffff00ffff0000ffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff0000ffffff00ffffff00ffff00ffff00ffffff0000ff00ffffffffff00ffff00ff0000ffff000000ffffff000000ffffff00ff00000000ffff000000ffffffff000000ffffffff000000ffffffff0000ffffffffff000000ffffff000000ffffffffffffff000000ffffff00ff0000ffffff00ff0000ffffff00ffff00ffffff000000ffffffff000000ffff000000ffff00ffffff000000ffffff00ff0000ffffffffffffffff000000ffffffff000000ffffff00ff00ffff00ffffff00ff00ffff00ffffffff000000ffffff00ff0000ffffffff0000ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffff000000ffffffffffffffff00ff0000ffffffff000000ffffff00ffffff00ffffff000000ffffffffffffffffff00ffff00ff00ffff00ffffff00ff0000ffffff00ffffff000000ffffff00ff00ffff00ffffffff000000ffffff00ff0000ffff000000ffffff000000ffffffff0000ff00ffffffffffffffff0000ff00ffff00ffff00ffffff00ffff00ff0000ffffff00ff0000ffffffff0000ffffffffffffffffffff000000ffffffff0000ffffffffffffffffff000000ffffff00ff0000ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff00ffffffffffff00ffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff0000ffffffff0000ff00ffff0000ffff0000ffffff000000ffffff00ffffff00ffffff0000ffffffffffffffffff000000ff00ff00ffffff00ffffff0000ff00ffffffffffffff00ffff00ffff00ffffff000000ffffff00ffffff00ffffff0000ff00ffffff0000ffffffffffffffff0000ffff00ffffff00ffffff000000ff00ff0000ffffffffffffff00ffffff000000ffffff0000ffffffffffffff00ff0000ffffff00ffffffff000000ffffffff0000ff00ffff00ffffffff000000ff00ff00ffff00ffff00ffff00ffff00ffff00ffffff000000ffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff00ff0000ffffffff0000ff00ffff00ffff00ffffff0000ff00ffff00ffff00ffffff00ffffff0000ff00ffffffff00ffffff00ffff00ffffff000000ffffff00ffffffff000000ff00ff00ffffffff000000ffffff00ffffff00ffff00ffffff000000ffffffff0000ffffffffffff000000ffffff00ffffffffff0000ff00ffff00ffffffff00ffffffff00ff0000ffffff00ffffff00ffffff0000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffff00ffff00ffff0000ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff0000ffff00ffff00ffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffff00ffff00ffffff00ffff00ffffffffffffffff0000ffff00ffff00ffffff00ffffff00ffff00ffff0000ffff00ffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffff00ffff0000ffff00ffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffff0000ffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffffffff00ffffff00ffff00ffffffff00ffff0000ffff00ffffff00ff00ffffff0000ffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffffffffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffff00ffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffffffffff00ffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffff00ffff00ffffffffffff00ffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffff00ffffffffffffffffff00ffffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffffff00ff00ffffff00ffffff00ffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffffff0000ffffffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffffffffffffff00ffff00ffff00ffff0000000000ffff00ffffff00ffff00ffffff00ffffff0000ffffffffffffffff00ffffff00ffffff00ffffff00000000ffff00ffffffffffffffff00ffff0000000000ffff00ffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffff00000000ffff00ffff00ffff00ffff00ffff00ffff00ffff0000000000ffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffff00ffff0000000000ffff00ffffffff00000000ffff00ffffff00ffffffffffff00ffffff00ffff00ffff0000000000ffffff0000ffffffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffffff00ffffffffffff00ffff00ffffffffffffffff00ffff00ffffff00ffff00ffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffff00ffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff0000ffff00ffff00ffff00ffffffffffffff00ffffff00ffff0000ffff00ffff00ffff0000ffffffffffffff0000ff0000ff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffff00ffffffffffffff00ffffff0000ffff00ffff00ffffff00ffff00ffffffffffffffff00ffff00ffffff00ffff00ffffffffffffffff0000ffff00ffff0000ffff00ffffff00ffff00ffff0000ffff0000ffff00ffffff00ffff0000ff0000ff00ffff0000ff0000ff00ffff00ffffff00ffff0000ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffff00ffffff00ffff00ffff00ffff00ffff0000ffff00ffff0000ffff00ffff00ffff0000ffffffff0000ffff00ffff00ffff00ffffff00ffff0000ffff00ffffff00ffff0000ffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffff00ffffffff00ffffff00ffff00ffffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff0000ffffff00ffffff00ff000000ff000000ffffff000000ffffff00ff0000ffffffff0000ffffffffffffffffff000000ffffff00ff0000ffffffff0000ff00ffffffffffffff00ff00ffff00ffffffff000000ffffff00ff0000ffffff00ffffff00ffffff0000ffffffffffffff000000ffff00ff0000ffffffff000000ffff000000ffffffffffffff00ffffff000000ffff000000ffffffffffffff00ff0000ffffff00ff00ffff000000ffffffff0000ff00ffff00ff00ffff000000ffffff00ff00ffff00ffffff00ff00ffff00ffffffff000000ffffff00ff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffff00ff0000ffffff00ffffff00ffff00ffff00ffffff0000ff00ffff00ffff00ff0000ffffffff0000ff00ffffffff00ff0000ffffff00ffffff000000ffffff00ff00ffff000000ffffff00ff00ffff000000ffffff00ff0000ffffff00ffffff000000ffffffff0000ffffffffffff000000ffff000000ffffffff0000ff00ffff00ffff00ffffff00ffff00ff0000ffffff00ff0000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff00ffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffffff000000ffffffff0000ffffffff000000ffffffffffffffffff0000ffffff000000ffffffff000000ffffff00ffff00ffffff00ff00ffff0000ffffff0000ffffffffffffffffffff00ff0000ffffff00ffffffff000000ffffffffff00ffffffff00ffffff0000ff00ffffff000000ffffffffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffffff0000ffffff0000ffffffffffffffffffffff0000ffffffff0000ff00ffffff000000ffffff00ffffff00ffffffffffffffffffff000000ff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffff00ff0000ffffff00ff0000ffffff00ffff00ffffff000000ffffffff000000ff00ff0000ffff00ffffff000000ffffff00ffffff00ffffff0000ffffffffffffffffff0000ff00ffffff000000ffffff00ffff00ffff00ffffff00ffffff000000ffffffffffffffff0000ffff00ffffff00ffffff000000ffffff00ffff00ffffffffffffffffff000000ff00ff00ff0000ffffff00ff0000ffffffff000000ffffffff000000ff00ff00ffffffff000000ff00ff00ffffff00ffffff000000ffffffff000000ffffffffffffffff00ff0000ffffffffff00ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffffffffffffffff0000ffff00ffff00ffffff00ffffff00ffffffff00ffffffff00ffff00ffff0000ffff00ffffff00ffffffffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffff00ffff00ffff00ffff0000ffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffff0000ffff00ffff0000ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffff0000ffff00ffffff00ff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff00ffffffffffffffffff00ffff00ffffffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ff00ffffff00ffff00ffffffffffff00ffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffffff00ff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffffffffff00ffffffffffff00ffffffffffffffffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffffffffffffff00ffffff00ffff00ffffffffffff00ffff00ffff00ffffff00ffff00ffffffffffffffffffffff00ffffff00ffffff00ffff00ffffffffffff00ffff00ffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffffffffffff00ffffff00ffffff00ff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff0000000000ffffff0000ffffff0000000000ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffff00ffff00ffffffff0000ffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffffff00ff00ffffff00ffff00ffffff00ffff0000000000ffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000000000ffff00ffffffffffff00ffffffff0000ffffffffffffffffffffff0000ffffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffffff00000000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff0000ffffffffffffffff00ffffff00ffff0000000000ffff00ffff00ffff00ffffff00ffff0000000000ffffffffffffff00ffffff00ffffff00ffff0000000000ffff00ffff00ffffffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffff0000000000ffffff00000000ffff00ffffffff00000000ffff00ffffff00ffff00ffffffffffff0000000000ffffffffffffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffff00ffff00ffffff00ffffffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffffffffff00ffffffffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffff00ffffffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff0000ffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ff00ffffff00ffff00ffffff00ffff00ffffffffffffffffff0000ffff00ffff0000ffff00ffffff00ffff00ffffff00ffff00ffff00ffff0000ffff00ffffff00ffffffffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffff00ffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffffffffffffffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff0000ffff00ffff0000ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffff00ffff00ffffffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffff0000ffff00ffff00ffffff00ffffffffffffff00ffffff0000ffff00ffff00ffffff00ffff00ffff0000ffffffffffffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffffffffffffff0000ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff00ff0000ffffffff000000ffffffff0000ffffffff000000ffffffffffffffff000000ffffff000000ffffffff000000ffffff00ffff00ffff00ffff00ff000000ffffff0000ffffffffffffffffffff00ff0000ffffff00ff00ffff000000ffffff00ffffff00ffff00ffffff0000ff00ffffff000000ffffffffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffff000000ffffff0000ffffffffffffffffffffff0000ffffff00ffffff00ffffff000000ffffff00ff0000ffffffffffffffffffffff000000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffff00ff0000ffffff00ff0000ffffff00ffff00ffffff000000ffffffff000000ffff000000ffff00ffffff000000ffffff00ff0000ffffffff0000ffffffffffffffffff0000ff00ffffff000000ffff000000ff00ffff00ff0000ffffffff000000ffffffffffffff000000ffff00ff0000ffffffff000000ffffff00ffff00ff00ffffffffffffff000000ffffff00ff0000ffffff00ff0000ffffffff000000ffffffff000000ffffff00ff00ffff000000ffffff00ff0000ffffffff000000ffffffff000000ffffffffffffffff00ff0000ffffff00ffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffff00000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff000000ffffffff000000ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff0000ffff00ffff00ffff00ffffff000000ffffff00ffffff00ffff0000ffffffffffff0000ffffff000000ffffffffffffffff0000ffff00ffffff00ffffff000000ffffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffffff0000ffffff000000ffffff00ffffff00ffffff000000ffffff00ffffff00ffff0000ffffff000000ffffffff0000ff00ffffffffffffff00ffff00ffff00ffffff000000ffffffff0000ff00ffffff000000ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffff00ffff00ffff00ffff00ff0000ffffffff000000ffffffff0000ffffff00ffff0000ffffff000000ffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffffff0000ffffff0000ffffffffffffffff00ffffff0000ffff00ffff00ffff00ffff00ffffff00ffffff0000ff00ffffff0000ffffffffffffffffff000000ff00ff00ffffff00ffffff0000ff00ffffffffffffffff000000ffffffffff00ffffffffff000000ffffff00ffffff00ffffff000000ff00ffffff00ffffffffff0000ffffffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffff0000ffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffff0000ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffffff00ffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffff0000ffff00ffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffffffffff00ffffff00ffffffff00ffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffff00ffff00ffffff00ffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffffffffff00ffffffffffff00ffffffffffffff00ffffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ff00ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffff0000000000ffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffffffffffffff00ffffff00ffffff00ffff0000000000ffffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000000000ffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffff0000000000ffff00ffffff00ffff00ffffff0000000000ffff00ffffff00ffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff0000000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff0000ffffff00ffff00ffffff0000000000ffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000000000ffff00ffffffffffff00ffffffff0000ffffffffffffffff00ffffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff0000ffffffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffffff00ff00ffffff0000000000ffff00ffffff00ffffff00000000ffff00ffff00ffffffff0000ffffffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffff00ffffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff0000ff0000ff00ffff0000ff0000ff00ffff00ffff00ffffff0000ff0000ff00ffff00ffffff00ffff0000ffff00ffff00ffffffffffffff00ffffff00ffffff00ffffffffffffff00ffffff0000ffff00ffff00ffffff00ffffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff00ffff0000ffffffffffffff0000ff0000ff00ffff00ffffff00ffff00ffff0000ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff0000ff0000ff00ffff0000ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffffff00ffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffff00ffff00ffff0000ffff00ffff00ffff0000ffff00ffff00ffffffffffffff00ffffff00ffff0000ffff00ffff00ffff0000ffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff000000ffffffff000000ffffff00ff00ffff00ffffff00ff00ffff00ffffff00ff000000ffff00ff00ffff00ffffffff000000ffffff00ff0000ffff000000ffffffffff000000ffffff000000ffffffffffffff000000ffff00ff0000ffffffff000000ffffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffff000000ffffff000000ffffff00ff00ff00ffffff000000ffffff00ff0000ffff000000ffffff000000ffffffff0000ff00ffffffffffffff00ff00ffff00ffffffff000000ffffffff0000ff00ffffff000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffff00ff00ffff00ffffff00ff0000ffffffff000000ffffffff0000ffffff00ff000000ffffff000000ffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffff000000ffffff0000ffffffffffffffffff00ff000000ffff00ffff00ffff00ffff00ff0000ffffffff0000ff00ffffff0000ffffffffffffffffff000000ffffff00ff0000ffffffff0000ff00ffffffffffffffff000000ffffff00ffffff00ffffff000000ffffff00ff00ff00ffffff000000ffffff00ffffff00ffffff0000ffffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ff00ffff0000ffffff0000ffffffffffff00ffffff00ffffff000000ff00ffffff00ffffffffff000000ffffffffffffff0000ffffff00ffffff00ffff00ffffff000000ffffffff0000ff00ffffffffffff000000ff00ffff00ffffff00ffffffff000000ff00ffffff00ffffffffffffff00ffff00ffffffff000000ffffff00ffff00ffff00ffffffffffff000000ff00ffffffffff00ffffff00ffffff00ffffff00ffffff000000ffffff00ffffff000000ffffff00ffffff00ffffff000000ffffffff000000ff00ff00ffffff0000ffffff000000ffffffff0000ff00ffffffffffffffffffffffffffffffffffffffffffff0000ffffff000000ffff00ffffffff00ff0000ffffff0000ff00ffffff000000ff00ff00ffffffff00ff0000ffffff00ffffff00ffff00ffff00ffff00ffff00ffff0000ffff00ffffffff00ffffffffff000000ffffffff0000ffffffffff00ffffffff00ffffff00ffffffff000000ffffff00ffffffff0000ff00ffffff0000ffffffffffffff000000ff00ff00ffffff00ffffff0000ff00ffffffffff0000ffffff00ff0000ffffffff000000ff00ffff000000ffffffff000000ffffffff0000ffffffff00ffffff00ffffffffff000000ff00ff00ffffff00ffffff0000ff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffff00ffffffff00ffffffff00ffffff00ffffffffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffff0000ffffffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ff00ffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffff00ffffff00ffffffffffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ff00ffffffff00ff00ffffff00ffff0000ffff00ffffff00ffff00ffffffff0000ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffffffff00ffffffff00ffffff00ffff00ffff00ffffffff00ffffffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff0000ffff00ffff00ffffffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffffffffff00ffffffffff00ffffff00ffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffffffffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffff00ffffffffff00ffffff00ffff00ff00ff00ff00ffff00ffffff00ffffff00ff00ffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffff00ffffff00ffffffffff00ff00ff00ff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffff00ffffffff00ffffff00ff00ff00ff00ffff00ffffff00ffff00ffffff00ffffff00ffffffffff00ffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffffffff00ffffff00ffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffffffff00ffff00ffffffff0000ffffffffffff00ffffff00ffffff00000000ffffff00ff00ffffff0000000000ffffffffffff0000ffffff00ffffff00ffff00ffff0000000000ffff00ffffff00ffffffffffff00000000ffff00ffff00ffff00ffffff00000000ffff00ffff00ffffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffff00000000ffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff0000000000ffff00ffffff00ffff0000000000ffffff00000000ffff00ffffff00ffffff0000000000ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff0000000000ffffff0000ffffff00ffffff00ffffff00ffffff00000000ffff00ffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffffff00ff00ffffff0000000000ffffff0000ffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff0000ffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffffffffff0000ffffff00ffffff00ffffff00000000ffff00ffffffffffff0000000000ffffff0000ffffffff00ffffffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffffffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffff00ffff00ffff00ffffffffffff00ffff00ffffff00ffffffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffffffffff00ffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffff0000ffffff00ffffff00ffffff00ffffffffffff00ffff00ffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffff00ffffffffff00ffffff00ffffffffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffff00ffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff00ffff00ffffffffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffff0000ffffffffff00ffffff00ff00ffffff00ffffff00ff00ffffff00ffff00ffffff00ffffffffff00ffff0000ffff00ffffff00ffff0000ff0000ff00ffffffffff00ffffff00ffffffff00ffffff00ffffff00ff0000ffff00ffff00ffffff00ffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffff00ffffff00ffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffff0000ffff00ffff0000ffff00ffff0000ff0000ff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffff00ffff00ffffff00ffffff00ff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffffffffff00ffffff00ffff0000ffff00ffff00ffff0000ffffffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffffffffffffffff00ffffff00ffff0000ffff00ffff00ffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffff00ff000000ffffff0000ffffffffffff00ff0000ffffffff000000ffffff00ffffff00ffffff000000ffffffffffffff0000ffffff00ff0000ffffff00ffffff000000ffffffff0000ff00ffffffffffff000000ffff00ffffff00ffffff00ffff000000ffffff00ffffff00ffffffff000000ff00ff00ffff000000ffffff00ff00ffff00ffffffffffffff000000ffffffffff00ffffff00ffffff00ff00ff0000ffffffff000000ffffff00ffffff000000ffffff00ff0000ffffffff000000ffffffff000000ffffff00ff00000000ffffff000000ffffffff0000ff00ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffff00ffffffff00000000ffff00ffffff00ffffff000000ffffff00ffffffff00ff0000ffffff00ff00ff00ffff00ff00ffff00ffffff00ff000000ffff00ffff00ffffff00ffffff000000ffffffff0000ffffffffffff00ff00ffffff00ffffff00ffff000000ffffff00ff00ffff0000ff00ffffff0000ffffffffffffff000000ffffff00ff0000ffffffff0000ff00ffffffffff0000ffffff00ff0000ffffffff000000ffffffff000000ffffffff000000ffffffff0000ffffff00ffffffffffffffffffff000000ffffff00ff0000ffffffff0000ff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffff00ffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff000000ff00ffffff0000ff00ffffff0000ffffffff000000ffffff00ffffffffff00ffff00ffff00ffffff000000ff00ff00ffffff00ffff00ffff00ff0000ffffffff0000ff00ffff00ffffff000000ff00ff0000ffffff000000ffffffff0000ffffff00ffffffffffff00ffffffffff00ffffff000000ffffffff00ffffff00ffffffff000000ffffffffff00ffffffffff000000ffffff00ffffffff00ffffffffff000000ffffffff0000ff00ffff00ffffff00ffffffff000000ffffff00ffffff00ffff0000ffffffff0000ffffff000000ffffffff000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff00ffff00ffffffff000000ff00ff00ff0000ffffff00ffffff00ffff00ffffff000000ffffffffffffffffffffffff00ff0000ffffff00ffffff00ffff00ffff00ffff00ffff00ffff0000ffff00ffffffff00ffffffffff000000ffffffff0000ffffffffffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffffff000000ffffffff0000ffffffffffffffffffffffffffff000000ff00ff00ffffff00ffffff0000ff00ffffffffffffffffffffffffff000000ffffff00ffff00ffffffff000000ffffff00ffffff000000ffffffff0000ffffffff00ffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff0000ffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffff00ffffffffffffffffff00ffffffffff00ffff00ffffff00ffffff00ffffff00ffffff00ffffff00ffffffff00ffffffff00ffffff00ffff00ffffffffffffffffff00ffffff00ffff00ffff0000ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffff00ffffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffff0000ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffffffff00ffffffff00ffffff00ffff00ffff00ffffffffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffff00ffffffffff00ffff00ffffffffffff00ffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffffffffffffffffff00ffffffffff00ffff00ffffff00ffff00ff00ff00ff00ffff00ffffffffffffff00ff00ffffff00ffffffffffff00ffffffffffffffffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ffffffffffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffff00ffffffffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffffffffff00ffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffffffffffff00ffff00ffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff00000000ffffff00ffffff00ffffff0000ffffff0000000000ffff00ffffffffff00ffff00ffff00ffffff00000000ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00000000ffff00ffffff0000000000ffffff0000ffffffffffffffffffff00ffffffffff00ffff00ffffff00ffff00ffff00ffff00ffff0000000000ffffff00ff00ffffff0000000000ffff00ffffffffffffffffff00ffffffffffff00ffffff00ffff00ffffff00ffffff0000000000ffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000000000ffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff00000000ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffffff00ff00ffffff0000000000ffffff0000ffffffffffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffff0000000000ffffff0000ffffffffffffffffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffffffffffff00ffff0000000000ffffff0000ffffffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffffffff00ffff00ffff00ffffffffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffff00ffffff00ffffff00ffff00ffffffffffffffffffffffff00000000000000ffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffff00ffff00ffff00ffff00ffffff00ffff0000ffffffff0000ff0000ff00ffff00ffffff00ffff0000ffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffff00ffffffffffffffffff00ffffffffff00ffff00ffffff00ff00ffffff00ffffff00ff00ffffff00ffff00ffffff00ffff00ffffff00ffff0000ffffffffffffffff00ffffff00ffff00ffffff00ffff0000ffff0000ffff00ffffff00ffff0000ffff00ffff00ffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffff0000ffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffff00ffffff00ffffffffffffffffffffff0000ffff00ffff0000ffff00ffff0000ff0000ff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffff00ffffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffff00ffffff00ffff0000ffff00ffff00ffff0000ffffffffffffffffffffffff00ffffff00ffff00ffff0000ffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff000000ffffffff00ffffff00ffffff0000ffffffff000000ffffff00ff00ffffff00ff00ffff00ffffffff000000ffffff00ff0000ffffff00ffff00ff0000ffffff00ffffff00ffff00ffffff000000ffff000000ffffff000000ffffffff0000ffffffffffffffffffff00ffffffffff00ffffff000000ffff00ffffff00ffffff00ffff000000ffffff00ffffff00ffffff000000ffffff00ff00ffffffffffffffff000000ffffff00ffffff00ffff00ff00ff00ff00ffff000000ffffff00ff0000ffff000000ffffff000000ffffff000000ffffffff000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff00ffff00ff00ffff000000ffffff00ff0000ffffff00ff0000ffffff00ffffff000000ffffffffffffffffffffffff00ff0000ffffff00ff00ff00ffff00ff00ffff00ffffff00ff000000ffff00ffff00ffffff00ffffff000000ffffffff0000ffffffffffffffffffffffffffff00ffff00ffff00ffff00ff0000ffffffff000000ffffffff0000ffffffffffffffffffffffffffff000000ffffff00ff0000ffffffff0000ff00ffffffffffffffffffffffffff000000ffffff00ffff00ff00ffff000000ffffff00ffffff000000ffffffff0000ffffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffffff000000ff00ff0000ffffff0000ff00ffff00ffffffff000000ff00ff00ffffffffffffff00ffffff00ffffffff000000ff00ffffff00ffffffffffffffff0000ffffff000000ffffffffffffff00ffffffff000000ffffff00ff0000ffffff00ffffffff000000ffffffff0000ffffffff000000ffffff00ffffff00ffff0000ffffffffffff0000ffff00ffffff00ffffff000000ffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffffff0000ffffff0000ffffffffffffff0000ffff00ffffff00ffffff000000ff00ff0000ffffffffffffffffffffffffffffffffffffffffffffff0000ff00ffffff000000ffffff00ffff00ffff00ffffff00ffffff000000ffffffffffffffffffffffffffff0000ffffff00ff0000ffffffff000000ffffffff000000ffffff00ffff00ffff00ffffff000000ffffffffffffffffffffffffffff000000ff00ff00ff0000ffffff00ff0000ffffffff000000ffffffff000000ff00ff00ffffffff000000ff00ff00ffffff00ffffff000000ffffffff000000ffffffff0000ffffffffffffffffffffffffffff0000ffffffff0000ff00ffffff000000ffffff00ffffff00ffffffffffffffffffffffffff000000ff00ffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffffff00ffffff00ff00ffffffffffffff00ffffff00ffffff00ffffffffffff00ffffff00ffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffffffffffffffffffffffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffff00ffff00ffff00ffff0000ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffff00ff00ff00ff00ffff00ffffff00ffffff00ff00ffffffffffffff00ffffff00ffffff00ffffffffffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffffffffff00ffffffffffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffffff00ffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffffffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffffff00000000ffff00ffffff00ffffff00ffff00ffffffff00000000ffff00ffffffffffff00ffff00ffff00ffffff00000000ffff00ffff00ffffffffffffff00ffffff00ffffff00ffffffffffff00ffffff0000000000ffff00ffffff00ffff00ffffff0000000000ffffff0000ffffff0000000000ffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffff0000000000ffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000000000ffff00ffffffffffff00ffffffff0000ffffffffffffff00ffffff00ffffff00ffffff00000000ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff0000000000ffff00ffff00ffff00ffffff00ffff0000000000ffffffffffffffffffffffffff0000ffffff00ffffff00ffff0000000000ffff00ffffffffffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffff0000000000ffffff00000000ffff00ffffffff00000000ffff00ffffff00ffff00ffffffffffff0000000000ffffff0000ffffffffffffffffffffffffffff0000ffffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffffffffffff00000000ffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffff00ffffff00ffffff00ffff00ffffffffffffff00ffff00ffffffffffff00ffff00ffff00ffffffffffff00ffff00ffffff00ffffffffffff00ffffff00ffffff00ffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffff00ffffff00ffffff00ffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffff00ffffffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffff00ffffffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffffffffffffffffffffff00ffffffffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffff00ffff00ffffff00ffff00ffffff00ffffff00ffff0000ffff00ffffff00ffff00ffffffffff00ffffff00ffffff00ff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffffff00ffffffffffff0000ffff00ffffff00ffff0000ffff00ffff0000ffff00ffffff00ffff00ffff00ffff00ffffff00ffff0000ffff00ffff00ffffffffffffff00ffffff0000ffff00ffff00ffffff00ffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff0000ffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffff0000ffff00ffff00ffffff00ffffffffffffffffffffffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffffffffffffffffffffffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffff00ffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffffffffffffffffffffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff0000ffffffff000000ffff000000ffff00ffffff00ffff00ff00ffff000000ffffff00ffffffffff00ffffff00ffffff00ffff000000ffffff00ffffff00ffffffffff000000ffffff000000ffffffffffffff00ff00ffff000000ffffff00ff0000ffffff00ff00ffff000000ffffffff0000ffffffff000000ffffff00ff0000ffff000000ffffffffff000000ffff00ff0000ffffffff000000ffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffff000000ffffff0000ffffffffffff000000ffff00ff0000ffffffff000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffff0000ff00ffffff000000ffff000000ff00ffff00ff0000ffffffff000000ffffffffffffffffffffffffffff0000ffffff00ff0000ffffffff000000ffffffff000000ffffff00ff000000ff00ffffff000000ffffffffffffffffffffffffffff000000ffffff00ff0000ffffff00ff0000ffffffff000000ffffffff000000ffffff00ff00ffff000000ffffff00ff0000ffffffff000000ffffffff000000ffffffff0000ffffffffffffffffffffffffffff0000ffffff00ffffff00ffffff000000ffffff00ff0000ffffffffffffffffffffffffffff000000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff000000ffffff00ffffff00ffffff000000ffffff00ffffff00ffff0000ffffff000000ffffffff0000ff00ffffffffffffff00ff0000ffffffff000000ffffffff000000ffffffff000000ff00ffff0000ff00ffffff0000ffffffff000000ffffffffffffffff00ff0000ffffff00ffffffff000000ffffffff0000ff00ffff00ffffffff000000ff00ff00ffff00ffff00ffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffffff0000ffffff0000ffffffffffffffffff000000ff00ff00ffffffff000000ffffffffffffffffff000000ff00ffffffffffffffffffffffffffffffffffffffffffffff0000ff00ffffff000000ffffff00ffff00ffff00ffffff00ffffff000000ffffffff0000ffffffffffff000000ff00ffffffff00ff0000ffffff00ffffffff000000ffffff0000ffffff000000ffffffff000000ffffffff000000ffffff00ffffffffff00ffffff000000ffffff00ffffffffffffff0000ff00ffff00ffffffff000000ff00ffff00ffffff00ffffff00ffff00ffffff00ffffff0000ff00ffff00ffffffffff0000ffffffff0000ff00ffff00ff0000ffffffff000000ffffff00ffffff000000ff00ffff0000ffffffff0000ffffffff000000ffffffff0000ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffff0000ffffffffffffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff0000ffff00ffff00ffff00ffffff00ffffffffffffff0000ffff00ffff00ffffff00ffffff00ffff00ffff0000ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffff00ffffff00ffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffffffff00ffffff00ffffffffff0000ffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffff00ffffff00ffff00ffffffffffff00ffff0000ffff00ffffff00ffffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffffffffff00ffff00ffff00ffff0000ffff0000ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffffffffffffff00ffffff00ffff00ffffffffffff00ffffffffffff00ffffff00ffff00ffffff00ffffffffff00ffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffff00ffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffffffffff00ffffffffffff00ffffffffffffff00ffffff00ffff00ffffff00ffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffffff00ffff00ffff00ffffff00ffff00ffffffffffffffffff00ffffffff00ffffff00ffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ff00ff00ff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffff00ffffff00ffffffffff00ffffffffff00ffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff0000000000ffff00ffffff00ffff00ffffff0000000000ffff00ffffff00ffffffffffffff00ffffff00ffff0000000000ffff00ffffffffffffff00000000ffff00ffffff00ffffff0000ffffff0000000000ffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffff00000000ffff00ffff00ffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000000000ffff00ffffffffffff00ffffffff0000ffffffffffffffffff00000000ffff00ffffff0000000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff0000000000ffff00ffff00ffff00ffffff00ffff0000000000ffffff0000ffffffffffff00000000ffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffff00000000ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffffff0000ffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00000000ffffff0000ffffffff0000ffffff0000000000ffffff0000ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffffffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffff00ffff00ffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffffffffffffffffffffff00ffff00ffffff00ffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffff00ffffffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffffffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffff00ffff00ffffffffff00ffffffffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff00ffff0000ffffffffffffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffffffffffffff0000ffff00ffff0000ffff00ffffff00ffff00ffff0000ffff0000ffff00ffffff00ffff0000ff0000ff00ffffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffff0000ffff00ffffff00ffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffff00ffffffff00ffffff00ffffffffff0000ffff00ffff0000ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffff00ffffff00ffff0000ffffffffff00ffff0000ffff0000ffff00ffffff00ff00ffffff00ffffff00ff00ffff0000ffff00ffff00ffff0000ffff00ffffffff00ffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffff000000ffffff00ff00ff00ffffff000000ffffff00ff0000ffff000000ffffff000000ffffffff0000ff00ffffffffffffff00ff0000ffffffff000000ffffffff000000ffffffff000000ffffff00ffffff00ffffff0000ffffffff000000ffffffffffffffff00ff0000ffffff00ff00ffff000000ffffffff0000ff00ffff00ff00ffff000000ffffff00ff00ffff00ffffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffff000000ffffff0000ffffffffffffffffff000000ffffff00ff00ffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000ff00ffffff000000ffff000000ff00ffff00ff0000ffffffff000000ffffffff0000ffffffffffff000000ffffffffffff00ff0000ffffff00ff00ffff000000ffff000000ffffff000000ffffffff000000ffffffff000000ffffff00ffffffff000000ffff000000ffffff00ff00ffffffffff0000ff00ffff00ff00ffff000000ffff00ffffff00ffffff00ff00ffff00ff0000ffffffff0000ff00ffffffffffffffff0000ffffff00ffffff00ffff00ff0000ffffffff000000ffffff00ffffff000000ffffffff0000ffffffff0000ffffffff000000ffffffff0000ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff0000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffff000000ffffffff0000ffffff0000ffffffffffffffff0000ff00ffffff0000ffffffff000000ffffff00ffffffffffffffffff00ffff00ffffff00ffff0000ffffff000000ffffff00ffffff00ffffff000000ff00ffff000000ffffffff000000ffffffffffffffffff0000ffffff000000ffffffff000000ffffff00ffff00ffffff00ff00ffff0000ffffff0000ffffffffffffffffffff000000ff00ff00ffffffff000000ffffffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000ffffff00ffffff000000ffffffffffffffffff000000ff00ff00ffffff00ffffff0000ff00ffffffffffffffff000000ffffff00ffff00ffff00ffffff000000ffffff00ffffff000000ffffff00ffffff00ffff0000ffff00ffffffffffffffffffffffffffff00ffffffff00ffffff00ffffff000000ffffffffffffffffffff000000ff00ffff00ffffffff00ffffffff00ff0000ffffff00ffffff00ffffffffffffff00ff0000ffffffff000000ff00ffff0000ffffffff000000ffffffffffffffffff000000ffffff00ffffff000000ff00ffff0000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffffffffffffff00ffffff00ffff00ffffff00ffffff00ffffffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffff00ffff00ffffff00ffffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff00ffffff00ffffffffffffffff00ffffff0000ffff00ffffff00ff00ffffff0000ffff00ffff00ffffff00ffffffffffffff0000ffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ff00ffff00ffff00ffffff00ffffffffff00ffff00ffffffffffffffff00ffffff00ffffffffff00ffff00ffffffffffff00ffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ff00ffffff00ffff00ffffffffffff00ffffffffffffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffff00ffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffffffffffff00ffff00ffff00ffff00ffffffffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff00ffffffffffffffffffffff00ffffffffff00ffff00ffffff00ff00ffffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffff00ffffff00ffffffffff00ffff00ffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ff00ffff00ffff00ffffff00ffffff0000ffffff00ffffffffffffffff00ffffff00ffffff0000ffffff0000000000ffff00ffffffffffffffffff00ffff00ffffff00ffff00ffffff0000000000ffff00ffffff00ffffff00000000ffff00ffffffffffff0000000000ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffff00ffff00ffffffff0000ffffffffffffffffffff00000000ffff00ffffff0000000000ffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000000000ffff00ffffffffffff00ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffff0000000000ffffffffffffffff00000000ffff00ffffff00ffff00ffffff00ffffffffffffff0000000000ffff00ffff00ffff00ffff00ffffffffffff00ffff0000000000ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff0000000000ffffffffffffff00ffffffffff00ffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffffff00000000ffffff0000ffffff0000000000ffffffffffffff00ffffffffffff00ffffff00000000ffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff00ffffff00ff00ffff00ffffff00ffff00ffffffffff00ffffffffffffffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffff00ffffffffffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffff00ffff00ffffff00ffffffffffffffffffffffffffffff00ffff00ffffff00ffffff00ffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff000000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffff00ffffff00ffffffffffff00ffff00ffffffffff00ffffff00ffffffffffffff00ffffffffffff00ffffffffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ff00ffffff00ff00ffff00ffffff00ffff00ffff00ffff00ffffffffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffff0000ffffffffffffffff00ffff0000ffff00ffff00ffffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffff00ff00ffffff00ffff00ffffff00ffff00ffffffffffffffff00ffffff00ffff0000ffff00ffffff00ffffffffffffffff00ffffff00ffff0000ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffff00ffff00ffffff00ffffffffffffff00ffffff00ffff0000ffff00ffff00ffff0000ffffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff0000ffff00ffff00ffffffffffffffffffffffffffffffffffff00ffffffff0000ffff00ffff00ffffff00ffffffffffffff00ffffffffffffffff00ffff00ffffff00ffff0000ffff00ffff0000ffff00ffffffffffffff0000ffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffffffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffffffffff0000ffffff000000ffffffff0000ffff000000ffffffffffffff00ffffff00ffffff0000ffffffff000000ffffff00ff00ffffffffffffff00ffff00ff0000ffff000000ffffff000000ffffff00ff00000000ffff000000ffffffff000000ffffffff000000ffffffffffffffff000000ffffff000000ffffffff000000ffffff00ffff00ffff00ffff00ff000000ffffff0000ffffffffffffffffffff000000ffffff00ff00ffff000000ffffffffffffffffffff000000ffffff00ff0000ffffff00ffffff000000ffffffff000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000ffffff00ffffff000000ffffffffffffffffff000000ffffff00ff0000ffffffff0000ff00ffffffffffffffff000000ffff000000000000ff00ffffff000000ffffff00ffffff000000ffffff00ff0000ffff000000ffffffffffffffffffffffffffffffffff00ffffffff00ff0000ffffffff000000ffffffffffffffff00ffffffffffffffff00ffff00ffffff00ffff00ff0000ffffff00ff0000ffffffffffffffff00ff0000ffffffff000000ffffffff0000ffffffff000000ffffffffffffffffff000000ffffff00ffffff000000ffffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff00ffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff0000ff000000ffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00000000000000ff00ffffffffffffffffffffffffffffffffffffffff00000000ffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffff00ffff00ffff00ffff00ff0000ffffffff000000ffffff00ffffff00ffffff000000ffffff00ffffff00ffff0000ffffff0000ffffffff00ffffffffffff000000ffffffff000000ff00ff00ffff00ffffff000000ffffffff0000ff00ffffffffffff0000ff00ffff00ffffffff00ffffffff00ff0000ffffff00ffffff00ffffff0000ffffffff00ffffffffffff0000ffff00ffffff00ffffff000000ff00ff0000ffffffffffff000000ff00ff00ffffffff000000ffffffffffffff0000ffffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffff0000ffffffffff00ffff0000ffff00ffffff00ff00ffffff0000ffff00ffff00ffffff00ffff00ffff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffffff00ffffffffff00ffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffff00ffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffffffffffff00ffffff00ffffffffff00ffffff00ffff00ffffff00ff00ffffff00ffffff00ffff00ffffff00ffffffffff00ffffffffffffffffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffffffffffffffffffffffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff0000000000ffff00ffffff00ffff00ffffffff0000ffffffffffffffffffff00ffffffffffffff00000000ffff00ffff00ffff0000000000ffff00ffffff00ffffffffff00ffffff00ffff00ffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff0000ffffffffffffffffffffff00ffffff00ffffff00ffffff00000000ffff00ffffffffffffff00000000ffff00ffffff0000000000ffffffffffff0000ffffff00ffff00ffff00ffff00ffff0000000000ffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffff00ffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffff00ffffff00ffffff00ffffffffffff00ffff00ffffffffffffffffffff00ffff00ffffff00ffffff00ffffffffff00ffffffffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ffff0000ff0000ff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff00ffffff00ffff00ffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffff0000ffffffffff00ffff0000ffff00ffff00ffffff00ffff0000ffff00ffff0000ffff00ffff00ffff00ffffffffffffffffffff00ffffff0000ffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff0000ffff00ffffff00ffffffffff00ffff00ffff00ffff0000ff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffff00ff00ffff00ffffff00ff0000ffffffff000000ffffff00ff0000ffffffff000000ffffff00ff0000ffff000000ffffff0000ffffffffffffffffffffff000000ffffffff000000ffffff00ffff00ffffff000000ffffffff0000ff00ffffffffffff0000ff00ffff00ffff00ffffff00ffff00ff0000ffffff00ff0000ffffffff0000ffffffffffffffffffff000000ffff00ff0000ffffffff000000ffff000000ffffffffffff000000ffffff00ff00ffff000000ffffffffffffff0000ffffff00ffff00ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffff00ffff0000ffff00ffffffff000000ffffffff0000ff00ffffff0000ff00ffffff000000ffffff0000ffff00ffffff000000ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffff000000ffffffffffffff00ffffff00ffffff000000ff00ffffff00ffffffffff000000ffffffffffffffff0000ff00ffffff000000ffffffff0000ffffff00ffffff0000ff00ffff00ffffff00ffffff000000ffffffff0000ff00ffffffffffff000000ff00ffffffffffff0000ffffffff000000ffffff0000ffffffffffffff000000ffffff00ffffffffffffffffffffffff00ffff00ffffffff00ffffffffff00ffffff00ffffffff000000ffffff00ffffff0000ff00ffff00ffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffff0000ffff00ffff0000ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffffffff00ffffffff00ffffff00ffffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffff00ffff00ffff0000ffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffffff00ffffff00ffffffffffff00ffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffff00ffffffffffffffffffffffff00ffff00ffffff00ff00ffffffff00ffffff00ffffff00ffffff00ffff00ffff00ffff0000ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff00ffffffffffffffffffff00ffffff00ffff00ffffff00ffffff00ff00ffffff00ffffffffffffffffffff00ffffff00ffff00ffffffffffffffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffffffffff00ffffff00ffffffffffffffffff00ffff00ffffffffffff00ffffffffffffff00ffffff00ffff00ffffffffffffffffffffffff00ffff00ffffff00ff00ffffff00ff00ff00ff00ffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff00ff00ffffff0000000000ffffffffffff00ffffff00ffffff00000000ffffff00ff00ffffff0000000000ffffffffffff00ffffff00ffff0000000000ffffff0000ffffff00ffff00ffffff00ffff00ffffff00ffff0000000000ffff00ffffff00ffffffffffff00000000ffffffffffffff0000ffffff0000000000ffff00ffffffffffffff00ffffff00ffff00ffffffffffffffffffffffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffff0000000000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff00ff00ffffff00ffffff00ffffffffffff00ffffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffffffffff00ffffffffffff00ffffffffff00ffffff00ffff00ffffffffffffff00ffffff00ffff00ffffffffffffffffffffffff00ffff00ffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff0000ffff00ffff00ffffff0000ffff00ffffff00ffff00ffff0000ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffff0000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffff00ffffff00ffffffffffff0000ffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffff00ffff00ffff0000ffff0000ffff00ffff00ffffff00ffff00ffff0000ffffffffff00ffffff00ffffffffffff00ffff00ffff00ffffff00ffff00ffffffffffffff00ffffff00ffff00ffffffffffffffffffffffff00ffff00ffff00ffffff00ff00ffffff00ffffff00ff00ffffff00ffff00ffff00ffff0000ffff0000ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffff00ff0000ffff000000ffff00ff00ffff000000ffffffff0000ff00ffff00ffffff00ffffff000000ffff000000ffff00ffffff000000ffffff00ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffff000000ffffffffffffff00ff0000ffffffff000000ffffff00ffffff00ffffff000000ffffffffffffffff0000ff00ffffff000000ffffffff0000ffffff00ffffff0000ff00ffff00ff0000ffffffff000000ffffffff0000ff00ffffffffffff000000ffffffffffffffff0000ffffffff000000ffff000000ffffffffffffff000000ffff000000ffffffff0000ff0000ff000000ff00ffff00ffffff00ff00ffffff00ffffff00ffff000000ffffff00ffffff0000ff00ffff00ff0000ffff000000ffff00ffff00ffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ffff00ffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff0000ffffffff00ffff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffff00ffffff0000ff0000ffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b27f7f7f4c4cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b27f7f7f4c4cff b2b2b2b2b2b24cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2b2b2b2b2b24cff b24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4cff b2b27f7f7f4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7fb24c4c4c4c4c4c4c4c4c7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb24c4c4c7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7fb27f7f7f7f7f7f7f7f4c7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb27f7f4c7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7fb27f7f7f7f7f7f7f7f4c7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb27f7f4c7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7fb2b2b2b2b2b2b2b2b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fff7fff7f7f7fff7fff7f7f7fff7fff7f7f7fff7fff7f7f7fff7fff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7fb2b2b2b27f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fffffff7f7f7fffffff7f7f7fffffff7f7f7fffffff7f7f7fffffff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fffffffffff7fffffffffff7fffffffffff7fffffffffff7fffffffffff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7fff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f4c4cff b2b27f7f7f4cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b27f7f7f4c4cff b2b27f7f7f4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4cb24c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c7f7f7f4c4cff b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c4cff b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c4cff b2b27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4cb27f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f4c4cff b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b24cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b24cb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b24cff b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2ff grestore iCTM setmatrix [ 1 0 0 1 0 0 ] concat 152.534 540.495 (Figure 9: TextView with multi-column formatting and hyphenation) 14 422.248 ws showpage %%Page: ? 6 initgraphics 13.5289 -23.561 translate /iCTM matrix currentmatrix def /Times-Roman 10 sf 47.4711 507.401 ( ) 2 49.9711 ws 58.8611 507.401 (\267) 1 62.3611 as /Times-Italic 10 sf 71.2511 507.401 (Draw) 4 94.0311 as /Times-Roman 10 sf 94.0311 507.401 ( specifies the glyph's appearance.) 8 271.251 ws 71.2511 494.881 (Composite glyphs recursively draw their) 8 271.251 ws 71.2511 482.361 (components.) 11 122.081 as 47.4711 464.841 ( Glyph subclasses redefine these three operations to) 14 277.471 ws 47.4711 452.321 (specify a particular behavior. For example, figure 10) 15 277.471 ws 47.4711 439.801 (shows the implementation of request and draw for the) 16 277.471 ws 47.4711 427.281 (Character class.) 2 110.783 ws 56.3611 414.761 (Glyphs request enough space to display themselves at) 14 277.471 ws 47.4711 402.241 (their preferred size; they also specify their willingness to) 16 277.471 ws 47.4711 389.721 (stretch or shrink if the preferred size cannot be allocated.) 18 277.471 ws 47.4711 377.201 (In figure 10, Character requests a preferred width equal) 16 277.471 ws 47.4711 364.681 (to the width of the displayed character in the selected) 18 277.471 ws 47.4711 352.161 (font, and it requests a preferred height equal to the sum) 20 277.471 ws 47.4711 339.641 (of the font's ascent and descent. This glyph is unwilling) 19 277.471 ws 47.4711 327.121 (to stretch or shrink in either the X or Y dimension,) 20 277.471 ws 47.4711 314.601 (but other glyphs, such as glyphs that represent the) 16 277.471 ws 47.4711 302.081 (spaces between words, specify no-zero stretchabilities or) 12 277.471 ws 47.4711 289.561 (shrinkabilities.) 16 106.641 as 56.3611 277.041 (The draw operation creates a new painter \(graphics) 14 277.471 ws 47.4711 264.521 (context\) so that it can override the default font in the) 20 277.471 ws 47.4711 252.001 (painter it was passed. Then it draws its character at) 19 277.471 ws 47.4711 239.481 (the specified x and y position on the canvas \(drawing) 18 277.471 ws 47.4711 226.961 (surface\).) 9 82.1711 as /Times-Bold 14 sf 47.4711 196.561 (4) 1 54.4711 as 67.6871 196.561 (Making glyphs cheap) 4 195.271 ws /Times-Roman 10 sf 47.4711 179.04 (Massive use of objects is practical only if the objects) 18 277.471 ws 47.4711 166.52 (themselves are cheap and efficient. These concerns) 13 277.471 ws 47.4711 154 (drove the design and implementation of the glyph) 14 277.471 ws 47.4711 141.48 (protocol.) 9 83.3011 as 56.3611 128.96 (We made glyphs small by relying on dynamic state:) 16 277.471 ws 47.4711 116.44 (we pass information about a glyph's context to each) 16 277.471 ws 47.4711 103.92 (glyph operation. This approach has two important) 13 277.471 ws 47.4711 91.4002 (consequences:) 13 105.231 as 307.471 507.401 ( ) 2 309.971 ws 318.861 507.401 (1.) 2 326.361 as 335.251 507.401 (Glyphs need not store all the information) 12 535.251 ws 335.251 494.881 (that specifies their appearance. For example,) 11 535.251 ws 335.251 482.361 (Character glyphs do not store their position or) 14 535.251 ws 335.251 469.841 (a full complement of their graphics context) 12 535.251 ws 335.251 457.321 (because a position and a painter are passed to the) 18 535.251 ws 335.251 444.801 (draw operation.) 2 398.012 ws 307.471 427.281 ( ) 2 309.971 ws 318.861 427.281 (2.) 2 326.361 as 335.251 427.281 (Glyphs can be shared\320the same glyph can) 12 535.251 ws 335.251 414.761 (appear in more than one composite glyph.) 12 535.251 ws 335.251 402.241 (Sharing reduces the effective size of a glyph) 14 535.251 ws 335.251 389.721 (because the actual size is spread over the shared) 16 535.251 ws 335.251 377.201 (uses. For example, TextView need build only a) 15 535.251 ws 335.251 364.681 (single instance of Character to represent the letter) 14 535.251 ws 335.251 352.161 (``a''; it can use that same instance wherever the) 16 535.251 ws 335.251 339.641 (letter appears in the file.) 8 432.175 ws 307.471 322.121 ( ) 2 310.285 ws 319.175 322.121 (Some glyphs do store information about their context.) 14 537.471 ws 307.471 309.601 (For example, it is sometimes necessary to know the) 16 537.471 ws 307.471 297.081 (actual geometry allocation or graphics context for a) 14 537.471 ws 307.471 284.561 (particular glyph. The protocol ) 9 442.457 ws /Times-Italic 10 sf 442.457 284.561 (allows) 6 468.577 as /Times-Roman 10 sf 468.577 284.561 ( glyphs to store) 6 537.471 ws 307.471 272.041 (information that they need; however, it does not ) 16 508.031 ws /Times-Italic 10 sf 508.031 272.041 (require) 7 537.471 as /Times-Roman 10 sf 307.471 259.521 (them to do so.) 6 364.146 ws 316.361 247.001 (We made glyphs fast by tuning the hot-spots we) 16 537.471 ws 307.471 234.481 (observed in running applications. Often, we were faced) 15 537.471 ws 307.471 221.961 (with the familiar trade-off between space and time;) 14 537.471 ws 307.471 209.441 (a fast implementation will store information that is) 14 537.471 ws 307.471 196.921 (needed often but costly to calculate, but too much stored) 18 537.471 ws 307.471 184.401 (information will make the application unacceptably large.) 12 537.471 ws 316.361 171.881 (An important example is the implementation of the) 14 537.471 ws 307.471 159.36 (Box composite glyph. Boxes calculate the allocations of) 15 537.471 ws 307.471 146.84 (their components based on the component's individual) 12 537.471 ws 307.471 134.32 (geometry requests. This information is required) 11 537.471 ws 307.471 121.8 (whenever the Box is drawn because the information) 14 537.471 ws 307.471 109.28 (must be passed to the components' draw operations.) 14 537.471 ws 307.471 96.7602 (Boxes store the results of the allocation calculation) 14 537.471 ws newpath 88.4311 764.961 moveto 88.4311 765.961 lineto 508.431 765.961 lineto 508.431 764.961 lineto 88.4311 764.961 lineto gsave eofill grestore 297.18 756.321 ( ) 2 299.682 ws /Courier 10 sf 88.4311 744.801 (void Character::request\(const Painter&, Requisition& requisition\) {) 5 490.431 ws 88.4311 734.201 ( requisition.require\() 2 220.431 ws 88.4311 723.601 ( Dimension_X,) 4 184.431 ws 88.4311 713.001 ( Requirement\(_font->width\(_c\), 0, 0\)) 6 322.431 ws 88.4311 702.401 ( \);) 2 112.431 ws 88.4311 691.801 ( requisition.require\() 2 220.431 ws 88.4311 681.201 ( Dimension_Y,) 4 184.431 ws 88.4311 670.601 ( Requirement\(_font->ascent\(\) + _font->descent\(\), 0, 0\)) 8 430.431 ws 88.4311 660.001 ( \);) 2 112.431 ws 88.4311 649.401 (}) 1 94.4311 as 88.4311 628.201 (void Character::draw\() 1 214.431 ws 88.4311 617.601 ( Canvas* canvas, const Painter& painter, const Allocation& allocation) 9 508.431 ws 88.4311 607.001 (\) {) 1 106.431 ws 88.4311 596.401 ( Painter p\(painter\);) 3 214.431 ws 88.4311 585.801 ( p.font\(_font\);) 2 184.431 ws 88.4311 575.201 ( p.character\(canvas, _c, allocation.x\(\), allocation.y\(\)\);) 5 436.431 ws 88.4311 564.601 (}) 1 94.4311 as newpath 88.4311 551.081 moveto 88.4311 552.081 lineto 508.431 552.081 lineto 508.431 551.081 lineto 88.4311 551.081 lineto gsave eofill grestore /Times-Roman 10 sf 297.18 542.441 ( ) 2 299.682 ws 213.439 530.921 (Figure 10: Character class implementation) 8 383.424 ws showpage %%Page: ? 7 initgraphics 13.5289 -23.561 translate /iCTM matrix currentmatrix def /Times-Roman 10 sf 47.4711 755.921 (because recalculating it on each draw would be too) 16 277.471 ws 47.4711 743.401 (slow. However, they do not store the requisition) 15 277.471 ws 47.4711 730.881 (information that they need to calculate the allocations) 14 277.471 ws 47.4711 718.361 (because re-allocating a Box occurs much less often than) 16 277.471 ws 47.4711 705.841 (re-drawing.) 11 93.8411 as /Times-Bold 14 sf 47.4711 675.441 (5) 1 54.4711 as 67.6871 675.441 (Comparing Toolkits) 2 188.648 ws /Times-Roman 10 sf 47.4711 657.92 (Current toolkits provide primitive components that are) 12 277.471 ws 47.4711 645.4 (more expensive than glyphs. Table 1 shows the sizes) 17 277.471 ws 47.4711 632.88 (of the simplest viewable components in the X Toolkit) 16 277.471 ws 47.4711 620.36 (Athena Widgets [4], the Andrew Toolkit [3], ET++ [6],) 16 277.471 ws 47.4711 607.84 (and our extended version of InterViews.) 10 208.545 ws 56.3611 595.32 (Glyphs are smaller than any of the other objects) 16 277.471 ws 47.4711 582.8 (because they do not store graphical state and because) 16 277.471 ws 47.4711 570.28 (their role is limited only to drawing. The primitive) 17 277.471 ws 47.4711 557.76 (components in other toolkits are also responsible for) 14 277.471 ws 47.4711 545.24 (handling other aspects of the interface, such as user input) 18 277.471 ws 47.4711 532.72 (or view update, that are often inappropriate at the lowest) 18 277.471 ws 47.4711 520.2 (levels of the view structure.) 8 158.286 ws 56.3611 507.68 (Like Extended InterViews, both the Andrew Toolkit) 12 277.471 ws 47.4711 495.159 (and ET++ allow programmers to build hierarchical views) 14 277.471 ws 47.4711 482.639 (containing embedded views of arbitrary types. These) 13 277.471 ws 47.4711 470.119 (toolkits define components that can display documents) 12 277.471 ws 47.4711 457.599 (containing mixed text and graphics. In practice,) 13 277.471 ws 47.4711 445.079 (however, the size of the basic embeddable components) 14 277.471 ws 47.4711 432.559 (and the lack of the ability to share components limits) 18 277.471 ws 47.4711 420.039 (their use in large numbers\320the components are used at) 16 277.471 ws 47.4711 407.519 (the word or paragraph level instead of the character level.) 18 277.471 ws 56.3611 394.999 (Table 2 estimates the number of lines needed to) 16 277.471 ws 47.4711 382.479 (implement two components using each of the toolkits.) 14 277.471 ws 47.4711 369.959 (We counted the additional lines of code needed to) 16 277.471 ws 47.4711 357.439 (implement the components on top of the primitive) 14 277.471 ws 47.4711 344.918 (toolkits objects in table 1. ``Label'' refers to a) 17 277.471 ws 47.4711 332.398 (component that displays one line of static text, often as a) 20 277.471 ws 47.4711 319.878 (label or heading in a view. Usually, this component) 17 277.471 ws 47.4711 307.358 (is one of the simplest predefined views in the toolkit.) 18 277.471 ws 47.4711 294.838 (``TextView'' refers to the component in the toolkit that) 16 277.471 ws 47.4711 282.318 (is most similar to the TextView we built in section 2. All) 23 277.471 ws 47.4711 269.798 (the toolkits provide components that do more than simply) 16 277.471 ws 47.4711 257.278 (display text. We estimated the number of lines related) 17 277.471 ws 47.4711 244.758 (specifically to the display task: for the Athena Widgets,) 16 277.471 ws 47.4711 232.238 (we based our estimate on the AsciiSink component of) 16 277.471 ws 47.4711 219.718 (AsciiText; for the Andrew Toolkit, we used the textview) 16 277.471 ws 47.4711 207.198 (class; for ET++, we used the StaticTextView class.) 14 251.773 ws 56.3611 194.677 (The numbers for glyph-based InterViews do not) 12 277.471 ws 47.4711 182.157 (include code for classes such as TeXCompositor, but) 14 277.471 ws 47.4711 169.637 (the other toolkits do not provide the functionality that) 16 277.471 ws 47.4711 157.117 (TeXCompositor does. The key observation is that) 13 277.471 ws 47.4711 144.597 (glyphs allow us to extend the toolkit with higher-level) 16 277.471 ws 47.4711 132.077 (components that programmers can use in their own) 14 277.471 ws 47.4711 119.557 (views.) 6 73.3011 as 316.361 556.833 (Several other systems define lightweight graphical) 10 537.471 ws 307.471 544.313 (objects in the spirit of Glyphs. However, none attempts) 17 537.471 ws 307.471 531.793 (to use these objects at as fine a grain as we use) 22 537.471 ws 307.471 519.273 (Glyphs. In particular, no system uses objects to represent) 17 537.471 ws 307.471 506.753 (components as small as individual characters in text) 14 537.471 ws 307.471 494.233 (views.) 6 333.301 as 316.361 481.713 (Smalltalk-80 defines a ) 6 426.838 ws /Times-Italic 10 sf 426.838 481.713 (View) 4 446.838 as /Times-Roman 10 sf 446.838 481.713 ( object as part of) 8 537.471 ws 307.471 469.193 (the Model-View-Controller \(MVC\) user interface) 8 537.471 ws 307.471 456.673 (framework [1]. Views are similar to Glyphs in that they) 19 537.471 ws 307.471 444.153 (are responsible only for the appearance of the interface) 16 537.471 ws 307.471 431.633 (\(input is handled by a Controller\). However, Views are) 17 537.471 ws 307.471 419.113 (more expensive because they store graphical context and) 14 537.471 ws 307.471 406.593 (position information.) 2 391.923 ws 316.361 394.073 (Ida [7], an object-oriented graphics framework built) 12 537.471 ws 307.471 381.553 (on Impulse-86, defines ) 6 404.297 ws /Times-Italic 10 sf 404.297 381.553 (data source) 2 452.035 ws /Times-Roman 10 sf 452.035 381.553 ( objects that produce) 6 537.471 ws 307.471 369.033 (a visible representation of data. Ida applications) 13 537.471 ws 307.471 356.513 (define their appearance by composing ) 10 478.618 ws /Times-Italic 10 sf 478.618 356.513 (data displays) 2 534.971 ws /Times-Roman 10 sf 534.971 356.513 (,) 1 537.471 as 307.471 343.993 (which display data sources. However, Ida provides no) 15 537.471 ws 307.471 331.473 (mechanism for building hierarchies of data sources.) 12 514.373 ws 316.361 318.953 (The Coral user interface toolkit [5] defines ) 14 498.581 ws /Times-Italic 10 sf 498.581 318.953 (graphical) 9 537.471 as 307.471 306.433 (objects) 7 335.801 as /Times-Roman 10 sf 335.801 306.433 ( that represent primitive graphical objects such) 12 537.471 ws 307.471 293.913 (as lines and polygons. Hierarchies of graphical objects) 15 537.471 ws 307.471 281.393 (are built with composite objects called ) 12 469.809 ws /Times-Italic 10 sf 469.809 281.393 (aggregates) 10 514.249 as /Times-Roman 10 sf 514.249 281.393 (. The) 3 537.471 ws 307.471 268.873 (sizes and positions \(or other attributes\) of graphical) 14 537.471 ws 307.471 256.353 (objects are specified using constraints. However, the) 13 537.471 ws 307.471 243.833 (overhead of the constraint system, and the size of the) 18 537.471 ws 307.471 231.312 (objects, makes them considerable more expensive than) 12 537.471 ws 307.471 218.792 (glyphs.) 7 336.641 as /Times-Bold 14 sf 307.471 188.392 (6) 1 314.471 as 327.687 188.392 (A Practical Example) 4 451.337 ws /Times-Roman 10 sf 307.471 170.872 (To test our ideas and our implementation, we built) 16 537.471 ws 307.471 158.352 (a document editor that uses a glyph to display each) 18 537.471 ws 307.471 145.832 (character in a document. Our goal was to show that this) 21 537.471 ws 307.471 133.312 (approach can lead to dramatic savings in implementation) 14 537.471 ws 307.471 120.792 (effort, yet is practical using current technology. We) 15 537.471 ws 307.471 108.272 (styled our editor as a technical paper preparation) 14 537.471 ws 307.471 95.7521 (tool\320we used the editor to produce this paper.) 14 495.224 ws newpath 330.958 688.393 moveto 330.958 748.993 lineto 331.958 748.993 lineto 331.958 688.393 lineto 330.958 688.393 lineto gsave eofill grestore newpath 425.953 688.393 moveto 425.953 748.993 lineto 426.953 748.993 lineto 426.953 688.393 lineto 425.953 688.393 lineto gsave eofill grestore newpath 470.129 688.393 moveto 470.129 748.993 lineto 471.129 748.993 lineto 471.129 688.393 lineto 470.129 688.393 lineto gsave eofill grestore newpath 497.644 688.393 moveto 497.644 748.993 lineto 498.644 748.993 lineto 498.644 688.393 lineto 497.644 688.393 lineto gsave eofill grestore newpath 330.958 747.993 moveto 330.958 748.993 lineto 498.644 748.993 lineto 498.644 747.993 lineto 330.958 747.993 lineto gsave eofill grestore newpath 330.958 735.473 moveto 330.958 736.473 lineto 498.644 736.473 lineto 498.644 735.473 lineto 330.958 735.473 lineto gsave eofill grestore newpath 330.958 688.393 moveto 330.958 689.393 lineto 498.644 689.393 lineto 498.644 688.393 lineto 330.958 688.393 lineto gsave eofill grestore 335.958 739.353 (Toolkit) 7 365.408 as 430.953 739.353 (Object) 6 457.613 as 476.424 739.353 (Size) 4 493.644 as 335.958 726.833 (Athena Widgets) 1 400.668 ws 430.953 726.833 (Simple) 6 459.293 as 478.644 726.833 (132) 3 493.644 as 335.958 715.313 (Andrew Toolkit) 1 400.118 ws 430.953 715.313 (view) 4 450.393 as 483.644 715.313 (44) 2 493.644 as 335.958 703.793 (ET++) 4 359.458 as 430.953 703.793 (VObject) 7 464.833 as 483.644 703.793 (32) 2 493.644 as 335.958 692.273 (Extended InterViews) 1 420.658 ws 430.953 692.273 (Glyph) 5 455.953 as 488.644 692.273 (8) 1 493.644 as 338.561 673.873 (Table 1: Sizes of base objects in bytes) 14 491.042 ws newpath 327.071 595.873 moveto 327.071 656.473 lineto 328.071 656.473 lineto 328.071 595.873 lineto 327.071 595.873 lineto gsave eofill grestore newpath 420.771 595.873 moveto 420.771 656.473 lineto 421.771 656.473 lineto 421.771 595.873 lineto 420.771 595.873 lineto gsave eofill grestore newpath 452.541 595.873 moveto 452.541 656.473 lineto 453.541 656.473 lineto 453.541 595.873 lineto 452.541 595.873 lineto gsave eofill grestore newpath 501.531 595.873 moveto 501.531 656.473 lineto 502.531 656.473 lineto 502.531 595.873 lineto 501.531 595.873 lineto gsave eofill grestore newpath 327.071 655.473 moveto 327.071 656.473 lineto 502.531 656.473 lineto 502.531 655.473 lineto 327.071 655.473 lineto gsave eofill grestore newpath 327.071 642.953 moveto 327.071 643.953 lineto 502.531 643.953 lineto 502.531 642.953 lineto 327.071 642.953 lineto gsave eofill grestore newpath 327.071 595.873 moveto 327.071 596.873 lineto 502.531 596.873 lineto 502.531 595.873 lineto 327.071 595.873 lineto gsave eofill grestore 332.071 646.833 (Toolkit) 7 361.521 as 425.771 646.833 (Label) 5 448.541 as 457.541 646.833 (TextView) 8 497.531 as 332.071 634.313 (Athena Widgets) 1 396.781 ws 433.541 634.313 (500) 3 448.541 as 477.531 634.313 (2000) 4 497.531 as 332.071 622.793 (Andrew Toolkit) 1 396.231 ws 433.541 622.793 (300) 3 448.541 as 477.531 622.793 (3000) 4 497.531 as 332.071 611.273 (ET++) 4 355.571 as 433.541 611.273 (500) 3 448.541 as 477.531 611.273 (2000) 4 497.531 as 332.071 599.753 (Extended InterViews) 1 416.771 ws 438.541 599.753 (10) 2 448.541 as 487.531 599.753 (20) 2 497.531 as 349.815 580.353 (Table 2: Lines of code for views) 12 479.787 ws showpage %%Page: ? 8 initgraphics 13.5289 -23.561 translate /iCTM matrix currentmatrix def /Times-Roman 10 sf 56.3611 755.921 (The editor has an extensive set of text formatting) 16 277.471 ws 47.4711 743.401 (capabilities: character formats include bold, italic,) 10 277.471 ws 47.4711 730.881 (typewriter, and sans-serif styles in a range of text) 16 277.471 ws 47.4711 718.361 (sizes; page formats allow multiple columns and variable) 14 277.471 ws 47.4711 705.84 (page sizes; and document formats support various text) 14 277.471 ws 47.4711 693.32 (sizes and line spacings. These features are easy to) 17 277.471 ws 47.4711 680.8 (provide because they are well supported by the glyph) 16 277.471 ws 47.4711 668.28 (model\320they are a simple extension of the ideas we) 16 277.471 ws 47.4711 655.76 (discussed in section 3. For instance, characters are styled) 17 277.471 ws 47.4711 643.24 (by creating glyphs with the desired fonts, and formatting) 16 277.471 ws 47.4711 630.72 (breaks are calculated by a compositor \(we used a TeX) 18 277.471 ws 47.4711 618.199 (compositor for both line and column breaks\).) 12 228.284 ws 56.3611 605.679 (The editor also has several features that are not) 16 277.471 ws 47.4711 593.159 (commonly found in editors of this type. For example,) 17 277.471 ws 47.4711 580.639 (document floats \(figures and tables\) are anchored to the) 16 277.471 ws 47.4711 568.119 (text, but their position can be overridden by the user.) 18 277.471 ws 47.4711 555.599 (Final figure placement is specified by simply ``plowing'') 14 277.471 ws 47.4711 543.079 (the figure to the desired position\320the editor dynamically) 14 277.471 ws 47.4711 530.558 (flows the text around the figure as it is moved. We have) 23 277.471 ws 47.4711 518.038 (found that this interactive approach is convenient for) 14 277.471 ws 47.4711 505.518 (fine-tuning the final appearance of the document. Of) 15 277.471 ws 47.4711 492.998 (course, this technique is only practical because the editor) 16 277.471 ws 47.4711 480.478 (is able to reformat the document at interactive speeds.) 16 263.262 ws 56.3611 467.958 (In addition to text formatting, our editor has a) 16 277.471 ws 47.4711 455.438 (rudimentary table editor and can import graphics) 12 277.471 ws 47.4711 442.918 (generated by idraw \(a drawing editor\) or from screen) 16 277.471 ws 47.4711 430.398 (dumps. Tables and graphics are represented simply) 13 277.471 ws 47.4711 417.878 (as glyphs embedded in the text; idraw drawings) 14 277.471 ws 47.4711 405.358 (are hierarchies of graphical objects, screen dumps) 12 277.471 ws 47.4711 392.837 (are scanned images, and tables are row-and-column) 12 277.471 ws 47.4711 380.317 (composites containing editable text cells. Tables will) 13 277.471 ws 47.4711 367.797 (grow in width and height to accommodate text typed into) 18 277.471 ws 47.4711 355.277 (their cells.) 2 89.1329 ws 56.3611 342.757 (In designing our editor, we have emphasized those) 14 277.471 ws 47.4711 330.237 (features that best show the value of the glyph model.) 18 277.471 ws 47.4711 317.717 (Currently, our editor does not support higher-level) 12 277.471 ws 47.4711 305.197 (document features such as automatic numbering and) 12 277.471 ws 47.4711 292.677 (referencing\320we inserted the numbering and referencing) 10 277.471 ws 47.4711 280.157 (in this paper by hand. We plan to add these features in) 23 277.471 ws 47.4711 267.637 (the future.) 2 88.573 ws /Times-Bold 12 sf 47.4711 243.2 (6.1) 3 62.4711 as 73.7991 243.2 (Lines of Code) 4 144.47 ws /Times-Roman 10 sf 47.4711 228.891 (We estimated the implementation effort for our editor by) 16 277.471 ws 47.4711 216.371 (counting lines of code. Our figures do not include toolkit) 19 277.471 ws 47.4711 203.851 (code such as the implementation of the various glyphs) 16 277.471 ws 47.4711 191.33 (and compositors, since that code is not specific to the) 18 277.471 ws 47.4711 178.81 (editor.) 7 73.3011 as 56.3611 166.29 (Table 3 gives a code breakdown of the editor's) 16 277.471 ws 47.4711 153.77 (implementation by component. Not surprisingly, the) 11 277.471 ws 47.4711 141.25 (bulk of the code is contained in the text-related) 16 277.471 ws 47.4711 128.73 (components. Table 4 gives an alternate breakdown by) 15 277.471 ws 307.471 495.594 (function, which shows that a significant proportion of) 14 537.471 ws 307.471 483.074 (the code is devoted to reading and writing the editor's) 18 537.471 ws 307.471 470.554 (external data files. The 1800 lines in the TextView) 17 537.471 ws 307.471 458.034 (component are about evenly divided between formatting) 12 537.471 ws 307.471 445.514 (the text, handling user input, and supporting floating) 14 537.471 ws 307.471 432.994 (figures and plowing.) 4 389.964 ws /Times-Bold 12 sf 307.471 408.554 (6.2) 3 322.471 as 333.799 408.554 (Execution speed) 2 416.805 ws /Times-Roman 10 sf 307.471 394.248 (We measured the editor's performance by instrumenting) 12 537.471 ws 307.471 381.728 (the code and timing critical operations. In particular, we) 17 537.471 ws 307.471 369.208 (timed the drawing and formatting operations, since these) 14 537.471 ws 307.471 356.688 (are crucial for acceptable performance. We measured) 13 537.471 ws 307.471 344.168 (user cpu time for 10 repetitions of each operation,) 16 537.471 ws 307.471 331.648 (using unoptimized code on a DECstation 3100. Then) 15 537.471 ws 307.471 319.128 (we divided the results by 10 to get a single-repetition) 18 537.471 ws 307.471 306.608 (average.) 8 341.061 as 316.361 294.088 (Table 5 lists the single-page drawing times for several) 16 537.471 ws 307.471 281.568 (different pages of this paper, each containing different) 14 537.471 ws 307.471 269.048 (amounts of text. The page labeled ``small'' corresponds) 15 537.471 ws 307.471 256.528 (to a page covered mostly by non-textual figures. We) 17 537.471 ws 307.471 244.008 (used a page that had about 20 percent of its area covered) 22 537.471 ws 307.471 231.488 (by text. A ``large'' page is almost entirely text; we used) 21 537.471 ws 307.471 218.968 (a page with about 90 percent text. For the ``average'') 19 537.471 ws 307.471 206.448 (page, we chose a page with about 60 percent text.) 18 506.034 ws newpath 360.125 638.674 moveto 360.125 746.354 lineto 361.125 746.354 lineto 361.125 638.674 lineto 360.125 638.674 lineto gsave eofill grestore newpath 434.291 638.674 moveto 434.291 746.354 lineto 435.291 746.354 lineto 435.291 638.674 lineto 434.291 638.674 lineto gsave eofill grestore newpath 472.917 638.674 moveto 472.917 746.354 lineto 473.917 746.354 lineto 473.917 638.674 lineto 472.917 638.674 lineto gsave eofill grestore newpath 360.125 745.354 moveto 360.125 746.354 lineto 473.917 746.354 lineto 473.917 745.354 lineto 360.125 745.354 lineto gsave eofill grestore newpath 360.125 732.834 moveto 360.125 733.834 lineto 473.917 733.834 lineto 473.917 732.834 lineto 360.125 732.834 lineto gsave eofill grestore newpath 360.125 651.194 moveto 360.125 652.194 lineto 473.917 652.194 lineto 473.917 651.194 lineto 360.125 651.194 lineto gsave eofill grestore newpath 360.125 638.674 moveto 360.125 639.674 lineto 473.917 639.674 lineto 473.917 638.674 lineto 360.125 638.674 lineto gsave eofill grestore 365.125 736.714 (Component) 9 411.795 as 446.697 736.714 (Lines) 5 468.917 as 365.125 724.194 (Text) 4 383.455 as 453.917 724.194 (800) 3 468.917 as 365.125 712.674 (TextView) 8 405.115 as 448.917 712.674 (1800) 4 468.917 as 365.125 701.154 (Graphics) 8 401.225 as 453.917 701.154 (700) 3 468.917 as 365.125 689.634 (GraphicsView) 12 422.885 as 453.917 689.634 (200) 3 468.917 as 365.125 678.114 (Table) 5 387.895 as 453.917 678.114 (400) 3 468.917 as 365.125 666.594 (TableView) 9 409.555 as 453.917 666.594 (500) 3 468.917 as 365.125 655.074 (Other) 5 387.895 as 453.917 655.074 (300) 3 468.917 as 365.125 642.554 (total) 5 382.905 as 448.917 642.554 (4700) 4 468.917 as 342.311 624.154 (Table 3: Lines of code by component) 12 491.731 ws newpath 352.158 533.634 moveto 352.158 606.754 lineto 353.158 606.754 lineto 353.158 533.634 lineto 352.158 533.634 lineto gsave eofill grestore newpath 446.241 533.634 moveto 446.241 606.754 lineto 447.241 606.754 lineto 447.241 533.634 lineto 446.241 533.634 lineto gsave eofill grestore newpath 480.884 533.634 moveto 480.884 606.754 lineto 481.884 606.754 lineto 481.884 533.634 lineto 480.884 533.634 lineto gsave eofill grestore newpath 352.158 605.754 moveto 352.158 606.754 lineto 481.884 606.754 lineto 481.884 605.754 lineto 352.158 605.754 lineto gsave eofill grestore newpath 352.158 593.234 moveto 352.158 594.234 lineto 481.884 594.234 lineto 481.884 593.234 lineto 352.158 593.234 lineto gsave eofill grestore newpath 352.158 546.154 moveto 352.158 547.154 lineto 481.884 547.154 lineto 481.884 546.154 lineto 352.158 546.154 lineto gsave eofill grestore newpath 352.158 533.634 moveto 352.158 534.634 lineto 481.884 534.634 lineto 481.884 533.634 lineto 352.158 533.634 lineto gsave eofill grestore 357.158 597.114 (Function) 8 392.718 as 454.664 597.114 (Lines) 5 476.884 as 357.158 584.594 (Reading and writing) 2 438.818 ws 456.884 584.594 (1150) 4 476.884 as 357.158 573.074 (Data representation) 1 435.188 ws 461.884 573.074 (850) 3 476.884 as 357.158 561.554 (Views) 5 382.708 as 456.884 561.554 (2500) 4 476.884 as 357.158 550.034 (Other) 5 379.928 as 461.884 550.034 (200) 3 476.884 as 357.158 537.514 (Total) 5 378.268 as 456.884 537.514 (4700) 4 476.884 as 347.866 519.114 (Table 4: Lines of code by function) 12 486.176 ws newpath 352.475 119.656 moveto 352.475 168.736 lineto 353.475 168.736 lineto 353.475 119.656 lineto 352.475 119.656 lineto gsave eofill grestore newpath 407.502 119.656 moveto 407.502 168.736 lineto 408.502 168.736 lineto 408.502 119.656 lineto 407.502 119.656 lineto gsave eofill grestore newpath 445.58 119.656 moveto 445.58 168.736 lineto 446.58 168.736 lineto 446.58 119.656 lineto 445.58 119.656 lineto gsave eofill grestore newpath 490.337 119.656 moveto 490.337 168.736 lineto 491.337 168.736 lineto 491.337 119.656 lineto 490.337 119.656 lineto gsave eofill grestore newpath 352.475 167.736 moveto 352.475 168.736 lineto 491.337 168.736 lineto 491.337 167.736 lineto 352.475 167.736 lineto gsave eofill grestore newpath 352.475 155.216 moveto 352.475 156.216 lineto 491.337 156.216 lineto 491.337 155.216 lineto 352.475 155.216 lineto gsave eofill grestore newpath 352.475 119.656 moveto 352.475 120.656 lineto 491.337 120.656 lineto 491.337 119.656 lineto 352.475 119.656 lineto gsave eofill grestore 357.475 159.096 (Page type) 1 396.635 ws 419.37 159.096 (Draw) 4 441.58 as 457.447 159.096 (Format) 6 486.337 as 357.475 146.576 (small) 5 379.145 as 424.08 146.576 (0.10) 4 441.58 as 468.837 146.576 (0.13) 4 486.337 as 357.475 135.056 (average) 7 388.565 as 424.08 135.056 (0.28) 4 441.58 as 468.837 135.056 (0.28) 4 486.337 as 357.475 123.536 (large) 5 377.465 as 424.08 123.536 (0.38) 4 441.58 as 468.837 123.536 (0.37) 4 486.337 as 328.871 105.136 (Table 5: Seconds to draw and format one page) 16 514.941 ws showpage %%Page: ? 9 initgraphics 13.5289 -23.561 translate /iCTM matrix currentmatrix def /Times-Roman 10 sf 56.3611 755.921 (We did not measure the drawing times for graphics) 16 277.471 ws 47.4711 743.401 (in the text. Intuitively, the text-drawing times will) 15 277.471 ws 47.4711 730.881 (dominate because there are usually many more character) 14 277.471 ws 47.4711 718.361 (objects on a page than graphical elements.) 12 216.605 ws 56.3611 705.841 (Table 5 also lists the format times for the same pages.) 20 277.471 ws 47.4711 693.321 (We measured the time taken to create and format the) 18 277.471 ws 47.4711 680.801 (Boxes and Characters that represents a visible page.) 14 277.471 ws 47.4711 668.28 (Since the editor creates a fully-formatted glyph structure) 14 277.471 ws 47.4711 655.76 (for only the currently-visible page, the time needed to) 16 277.471 ws 47.4711 643.24 (build the whole document structure is only slightly) 14 277.471 ws 47.4711 630.72 (longer.) 7 75.5211 as 56.3611 618.2 (The times in table 5 represent worst-case reformat) 14 277.471 ws 47.4711 605.68 (times. Most editing operations will reformat only a) 15 277.471 ws 47.4711 593.16 (small part of the page \(often just a single line\); only) 20 277.471 ws 47.4711 580.64 (when a line spill causes a change in column breaks will) 20 277.471 ws 47.4711 568.12 (significant reformatting occur.) 4 169.393 ws 56.3611 555.6 (The combination of draw and format times is a good) 18 277.471 ws 47.4711 543.08 (indication of the longest delay that a user sees when) 18 277.471 ws 47.4711 530.56 (using the editor. For example, adding a blank line near) 19 277.471 ws 47.4711 518.039 (the beginning of a page might cause the whole page to) 20 277.471 ws 47.4711 505.519 (be reformatted and redrawn, which usually results in) 14 277.471 ws 47.4711 492.999 (about a half-second delay.) 6 152.445 ws /Times-Bold 12 sf 47.4711 468.561 (6.3) 3 62.4711 as 73.7991 468.561 (Memory usage) 2 149.449 ws /Times-Roman 10 sf 47.4711 454.254 (Table 6 lists the total memory that the editor dynamically) 18 277.471 ws 47.4711 441.733 (allocated for documents of three different sizes. The) 15 277.471 ws 47.4711 429.213 (``small'' document is the first half of this paper \(5 pages) 20 277.471 ws 47.4711 416.693 (of text and about 15000 characters\). The ``medium'') 15 277.471 ws 47.4711 404.173 (document is the whole of this paper \(10 pages and) 18 277.471 ws 47.4711 391.653 (about 30000 characters\). The ``large'' document is two) 15 277.471 ws 47.4711 379.133 (copies of this paper pasted end-to-end \(20 pages and) 16 277.471 ws 47.4711 366.613 (about 60000 characters\). Table 7 shows the breakdown) 15 277.471 ws 47.4711 354.093 (of memory usage in the editor.) 10 170.236 ws 56.3611 341.573 (The largest single component is used by the hierarchy) 16 277.471 ws 47.4711 329.053 (of Boxes, Glue, and Characters that displays the current) 16 277.471 ws 47.4711 316.533 (page of the document. Most of this memory is used) 19 277.471 ws 47.4711 304.013 (by the LRBoxes that display each line\320boxes store) 14 277.471 ws 47.4711 291.493 (geometry allocations for each of their components.) 12 277.471 ws 47.4711 278.973 (This stored information makes redraws efficient, and it) 14 277.471 ws 47.4711 266.453 (enables the editor to efficiently determine positions in) 14 277.471 ws 47.4711 253.933 (the document corresponding to mouse coordinates.) 10 251.332 ws 56.3611 241.413 (The editor stores less information for non-visible) 12 277.471 ws 47.4711 228.893 (pages. However, it must store enough information so) 15 277.471 ws 47.4711 216.373 (that it can correctly determine column breaks. We use a) 19 277.471 ws 47.4711 203.853 (TeXCompositor for column composition, which ensures) 10 277.471 ws 47.4711 191.332 (that column breaks are always calculated to minimize) 14 277.471 ws 47.4711 178.812 (demerits for the whole document. To do this calculation,) 17 277.471 ws 47.4711 166.292 (the compositor must know the sizes of all the lines in) 20 277.471 ws 47.4711 153.772 (the document. Our strategy is simply to replace the) 17 277.471 ws 47.4711 141.252 (LRBoxes that represent lines on non-visible pages with) 14 277.471 ws 47.4711 128.732 (equivalent-sized Glue objects. This strategy implies) 11 277.471 ws 47.4711 116.212 (that the editor must re-create the LRBoxes when lines) 16 277.471 ws 47.4711 103.692 (become visible.) 2 110.243 ws 316.361 544.07 (The editor represents the structure of the document by) 16 537.471 ws 307.471 531.549 (building a hierarchy of embedded text editors. Sub-items) 15 537.471 ws 307.471 519.029 (such as section titles, enumeration items, table cells, and) 16 537.471 ws 307.471 506.509 (bibliography entries appear as simple glyphs to their) 14 537.471 ws 307.471 493.989 (surrounding context. This strategy allows us to build) 15 537.471 ws 307.471 481.469 (documents of arbitrary complexity without complicating) 10 537.471 ws 307.471 468.949 (the editor's implementation, but it makes the editor's) 14 537.471 ws 307.471 456.429 (memory usage dependent on the document's complexity.) 12 536.051 ws 316.361 443.909 (Finally, the editor allocates memory to store the actual) 16 537.471 ws 307.471 431.389 (text of the document. Our current implementation uses) 15 537.471 ws 307.471 418.869 (three buffers: the first buffer stores the character codes,) 16 537.471 ws 307.471 406.349 (the second stores character formats, and the third stores) 16 537.471 ws 307.471 393.829 (pointers to the \(shared\) Character glyphs. Currently,) 13 537.471 ws 307.471 381.309 (we use simple hole-in-the-middle buffers so that the) 14 537.471 ws 307.471 368.788 (editor can efficiently insert and delete characters. This) 15 537.471 ws 307.471 356.268 (strategy works well for small to medium documents, but) 16 537.471 ws 307.471 343.748 (it might waste memory for large documents because of) 16 537.471 ws 307.471 331.228 (fragmentation in the memory allocator.) 8 464.394 ws /Times-Bold 14 sf 307.471 300.828 (7) 1 314.471 as 327.687 300.828 (Conclusion) 10 394.593 as /Times-Roman 10 sf 307.471 283.308 (Glyphs are flyweight objects that greatly simplify the) 14 537.471 ws 307.471 270.788 (construction of user interfaces to application data. The) 15 537.471 ws 307.471 258.268 (reduction in implementation complexity outweighs any) 10 537.471 ws 307.471 245.748 (extra processing overhead that results from using large) 14 537.471 ws 307.471 233.228 (numbers of objects.) 4 386.074 ws 316.361 220.708 (Although we have focussed here on the use of) 16 537.471 ws 307.471 208.187 (glyphs in text applications, glyphs are also useful for) 16 537.471 ws 307.471 195.667 (other kinds of data. We envision using glyphs for) 17 537.471 ws 307.471 183.147 (anything from spreadsheet cells to video clips. In the) 17 537.471 ws 307.471 170.627 (future, applications will routinely include video, audio,) 12 537.471 ws 307.471 158.107 (and animations in additions to text and graphics. The) 17 537.471 ws 307.471 145.587 (simplicity offered by lightweight objects such as glyphs) 14 537.471 ws 307.471 133.067 (will provide substantial leverage for building these) 12 537.471 ws 307.471 120.547 (applications.) 13 358.301 as newpath 355.875 686.15 moveto 355.875 735.23 lineto 356.875 735.23 lineto 356.875 686.15 lineto 355.875 686.15 lineto gsave eofill grestore newpath 414.216 686.15 moveto 414.216 735.23 lineto 415.216 735.23 lineto 415.216 686.15 lineto 414.216 686.15 lineto gsave eofill grestore newpath 490.607 686.15 moveto 490.607 735.23 lineto 491.607 735.23 lineto 491.607 686.15 lineto 490.607 686.15 lineto gsave eofill grestore newpath 355.875 734.23 moveto 355.875 735.23 lineto 491.607 735.23 lineto 491.607 734.23 lineto 355.875 734.23 lineto gsave eofill grestore newpath 355.875 721.71 moveto 355.875 722.71 lineto 491.607 722.71 lineto 491.607 721.71 lineto 355.875 721.71 lineto gsave eofill grestore newpath 355.875 686.15 moveto 355.875 687.15 lineto 491.607 687.15 lineto 491.607 686.15 lineto 355.875 686.15 lineto gsave eofill grestore 360.875 725.59 (Document) 8 402.535 as 426.897 725.59 (Memory usage) 1 486.607 ws 360.875 713.07 (small) 5 382.545 as 466.607 713.07 (1500) 4 486.607 as 360.875 701.55 (medium) 6 393.655 as 466.607 701.55 (2300) 4 486.607 as 360.875 690.03 (large) 5 380.865 as 466.607 690.03 (4000) 4 486.607 as 344.866 671.63 (Table 6: Total memory usage \(K bytes\)) 12 502.616 ws newpath 346.155 582.11 moveto 346.155 654.23 lineto 347.155 654.23 lineto 347.155 582.11 lineto 346.155 582.11 lineto gsave eofill grestore newpath 426.576 582.11 moveto 426.576 654.23 lineto 427.576 654.23 lineto 427.576 582.11 lineto 426.576 582.11 lineto gsave eofill grestore newpath 500.327 582.11 moveto 500.327 654.23 lineto 501.327 654.23 lineto 501.327 582.11 lineto 500.327 582.11 lineto gsave eofill grestore newpath 346.155 653.23 moveto 346.155 654.23 lineto 501.327 654.23 lineto 501.327 653.23 lineto 346.155 653.23 lineto gsave eofill grestore newpath 346.155 640.71 moveto 346.155 641.71 lineto 501.327 641.71 lineto 501.327 640.71 lineto 346.155 640.71 lineto gsave eofill grestore newpath 346.155 582.11 moveto 346.155 583.11 lineto 501.327 583.11 lineto 501.327 582.11 lineto 346.155 582.11 lineto gsave eofill grestore 351.155 644.59 (Component) 9 397.825 as 434.397 644.59 (Memory Usage) 1 496.327 ws 351.155 632.07 (Visible page) 1 401.425 ws 471.607 632.07 (500 K) 1 496.327 ws 351.155 620.55 (Non-visible page) 1 419.755 ws 476.607 620.55 (25 K) 1 496.327 ws 351.155 609.03 (Sub-item) 8 387.825 as 481.607 609.03 (9 K) 1 496.327 ws 351.155 597.51 (Character) 9 390.025 as 486.327 597.51 (15) 2 496.327 as 351.155 585.99 (Overhead) 8 390.025 as 471.607 585.99 (200 K) 1 496.327 ws 337.511 567.59 (Table 7: Memory usage breakdown \(bytes\)) 10 509.971 ws showpage %%Page: ? 10 initgraphics 13.5289 -23.561 translate /iCTM matrix currentmatrix def /Times-Bold 14 sf 47.4711 738.041 (References) 10 112.767 as /Times-Roman 10 sf 56.9211 720.52 ([1]) 3 68.5811 as 77.4711 720.52 (Glenn E. Krasner and Stephen T. Pope. A) 15 277.471 ws 77.4711 708 (cookbook for using the Model-View-Controller) 8 277.471 ws 77.4711 695.48 (user interface paradigm in Smalltalk-80. ) 11 246.361 ws /Times-Italic 10 sf 246.361 695.48 (Journal) 7 277.471 as 77.4711 682.96 (of Object-Oriented Programming) 4 220.988 ws /Times-Roman 10 sf 220.988 682.96 (, 1\(3\):26\26149,) 2 277.471 ws 77.4711 670.44 (August/September 1988.) 2 176.912 ws 47.4711 652.92 ( ) 2 49.9711 ws 56.9211 652.92 ([2]) 3 68.5811 as 77.4711 652.92 (Mark A. Linton, John M. Vlissides, and) 12 277.471 ws 77.4711 640.4 (Paul R. Calder. Composing user interfaces with) 13 277.471 ws 77.4711 627.88 (InterViews. ) 3 136.2 ws /Times-Italic 10 sf 136.2 627.88 (Computer) 8 176.2 as /Times-Roman 10 sf 176.2 627.88 (, 22\(2\):8\26122, February) 4 277.471 ws 77.4711 615.36 (1989.) 5 99.9711 as 47.4711 597.84 ( ) 2 49.9711 ws 56.9211 597.84 ([3]) 3 68.5811 as 77.4711 597.84 (Andrew J. Palay et al. The Andrew Toolkit: An) 16 277.471 ws 77.4711 585.32 (overview. In ) 5 138.876 ws /Times-Italic 10 sf 138.876 585.32 (Proceedings of the 1988 Winter) 8 277.471 ws 77.4711 572.799 (USENIX Technical Conference) 4 213.576 ws /Times-Roman 10 sf 213.576 572.799 (, pages 9\26121,) 4 277.471 ws 77.4711 560.279 (Dallas, Texas, February 1988.) 6 198.003 ws 47.4711 542.759 ( ) 2 49.9711 ws 56.9211 542.759 ([4]) 3 68.5811 as 77.4711 542.759 (Ralph R. Swick and Terry Weissman. ) 13 271.361 ws /Times-Italic 10 sf 271.361 542.759 (X) 1 277.471 as 77.4711 530.239 (Toolkit Widgets\320C Language Interface) 6 241.358 ws /Times-Roman 10 sf 241.358 530.239 (. Digital) 3 277.471 ws 77.4711 517.719 (Equipment Corporation, March 1988. Part of) 11 277.471 ws 77.4711 505.199 (the documentation provided with the X Window) 12 277.471 ws 77.4711 492.679 (System.) 7 109.421 as 47.4711 475.159 ( ) 2 49.9711 ws 56.9211 475.159 ([5]) 3 68.5811 as 77.4711 475.159 (Pedro A. Szekely and Brad A. Myers. A user) 17 277.471 ws 77.4711 462.639 (interface toolkit based on graphical objects and) 12 277.471 ws 77.4711 450.119 (constraints. In ) 5 144.395 ws /Times-Italic 10 sf 144.395 450.119 (ACM OOPSLA '88 Conference) 6 277.471 ws 77.4711 437.599 (Proceedings) 11 127.461 as /Times-Roman 10 sf 127.461 437.599 (, pages 36\26145, San Diego, CA,) 10 277.471 ws 77.4711 425.079 (September 1988.) 2 145.242 ws 47.4711 407.558 ( ) 2 49.9711 ws 56.9211 407.558 ([6]) 3 68.5811 as 77.4711 407.558 (Andre Weinand, Erich Gamma, and Rudolf) 10 277.471 ws 77.4711 395.038 (Marty. ET++\320An object-oriented application) 7 277.471 ws 77.4711 382.518 (framework in C++. In ) 9 191.07 ws /Times-Italic 10 sf 191.07 382.518 (ACM OOPSLA '88) 4 277.471 ws 77.4711 369.998 (Conference Proceedings) 2 182.596 ws /Times-Roman 10 sf 182.596 369.998 (, pages 46\26157, San) 6 277.471 ws 77.4711 357.478 (Diego, CA, September 1988.) 6 193.574 ws 47.4711 339.958 ( ) 2 49.9711 ws 56.9211 339.958 ([7]) 3 68.5811 as 77.4711 339.958 (Robert L. Young. An object-oriented framework) 11 277.471 ws 77.4711 327.438 (for interactive data graphics. In ) 11 215.075 ws /Times-Italic 10 sf 215.075 327.438 (ACM OOPSLA) 2 277.471 ws 77.4711 314.918 ('87 Conference Proceedings) 4 205.796 ws /Times-Roman 10 sf 205.796 314.918 (, pages 78\26190,) 4 277.471 ws 77.4711 302.398 (Orlando, FL, October 1987.) 6 189.124 ws 47.4711 284.877 ( ) 2 49.9733 ws 307.471 755.921 ( ) 4 537.471 ws showpage %%Trailer end restore %%Pages: 10 ivtools-doc/graph-idraw.html0000644000076500007650000000047607512656157016764 0ustar scottscott00000000000000 ivtools graph-idraw MIME type

    ivtools graph-idraw MIME type

    application/graph-idraw is a MIME type for files readable by ivtools graphdraw.


    ivtools-doc/graphdraw-README.txt0000644000076500007650000000444407417430144017331 0ustar scottscott00000000000000NAME graphdraw - directed graph editor derived from drawtool SYNOPSIS graphdraw ['X-params'] [file] DESCRIPTION graphdraw implements a graph (node/edge) editor. graphdraw adds two new graphical objects to idraw/drawtool: an elliptical shaped node and a directed edge represented as an arrow line. Two new tools to create these objects are provided at the bottom of the toolbar. The Node tool (selectable by the 'N' key) takes a single mouse click and creates a new graph node at the click location. The Edge tool (selectable by the 'E' key) lets you drag a line to create a new graph edge. If an edge is drawn from or to an existing node, it will connect itself to the node(s) and maintain that connectivity during any later movement of nodes or edges. The Move tool will move edges or nodes, rubberbanding the rest of the graph, and redrawing any connected edges to maintain graph connectivity and edge alignment. Nodes contain a (initially empty) text string which can be edited by applying the Alter tool to a node. A single click on a node while on the Alter tool will create a text cursor, possibly within an existing text string, and allow editing of the text via the usual Emacs editing commands. A click outside the text terminates editing and causes the new text to be centered within the node. For Node and Edge objects, the Selection highlight mechanism has also been changed from the usual drawing of "handles" around a graphical object to a red foreground color. When Nodes or Edges are selected, they turn red instead of handles being drawn around them. graphdraw documents are saved/restored in a readable text file. Some of the tokens used in the text file are specific to graphdraw (and possibly any program derived from graphdraw). graph drawings can be exported to other idraw/drawtool applications via the "Export Graphic" command (under the File menu). This generates Postscript in a format that idraw can read back in, and programs like drawtool can import via "Import Graphic" (under the file menu). A Tools menu has been added to the set of pull-down menus to allow switching between a graph editing toolbar and a generic graphics editing toolbar. SEE ALSO -help for more options, and the comdraw, drawtool, idraw man pages WEB PAGE http://www.ivtools.org/ivtools/graphdraw.html ivtools-doc/graphdraw-icon.gif0000644000076500007650000000112507374262631017251 0ustar scottscott00000000000000GIF87aUU&&&,UU0I8ͻ`(diAm|rMѶ/_p&YҜ:$NR5y2@KF@}/,~u| Yc`! C(B!6#ڀHBb,"8ic(ЪeG +4GKƵNNo;_h ( /愐1t{$ ?~VEi#Cbht@W9=֜Su+} j;to^0l?adu^q-oh!yZB)T7#ufQC6`4F&kqAǦI('inL K`g7}Bjʕu|(1$QHpF& \DŽxt!emVh;ivtools-doc/graphdraw-logo.gif0000644000076500007650000000236007374262631017263 0ustar scottscott00000000000000GIF89aUU&&& t \it(sL(rHsL@sHȟ*tXrsT7Ph~@ipt \ 8 x1Mp \@ӟXsRB UU #xwK\@#- )4 h4yT,J%%G{."C|qhVb{GHcƿs͇ݨx7Z8}/)痴Ծ^qoT LN#WR- =x!GEaAzxQq柈 МfX@8@d8"'#=.d#!ҋ@*U GdAVՓw׊7ZG`MQYTQ_"(aakSDWɞnv)ێry矀*蠄jE;ivtools-doc/graphdraw.gif0000644000076500007650000001572707374262631016340 0ustar scottscott00000000000000GIF87aWUUUUrrr8X00,WUpI8ͻ`(dihlp,WBmx|pH,Ȥrl:ШtJ$vzxL.zn|Nހt|YcrbZn_k]xshecpgȩturۛ}aoػзjv[ݾʝ3L-IL,^!GLe $ aI>i94ku[ ΘfqۙQ+xKlΎE+Wo:EJf[E*$vŗ=X9Vnոr[W--ݮ_rz 7ppENQ>ElW(H%M{w1f'6լYi/ Wv=޻eίQn4l%}7u+忴 ~SuZj]+ 5͟muV흯[MO^6{yZՓk|G]K ݀Y8XseיZ](xZak 20u 'NƝo7m!nW\u+F&Fr%fSG=wxl`)dn~ |)i9%^F9ZbEbbYL[Bcf Í'0ctH]&v75zaNwnG&#蘎Q'VdɐHZz.lvd|oar %&Fg)UkQ* 28%+ݚ>~V0˧MJ#@T޲I% Fn`r,T F.5s[kln~ {".Wpť0.$lr"r)+ǝ.,&a\Ğ L3 #@۱"B\4yL7'+ TWmpb\w`-dmhlp-tmxލ߀.n'3G.Wngw砇.褗n[P ./o'73{Kw/?xb/߾/oУο H_\;z<m7.ᮂ`7ޒ_0A}{e J0,;8<0] ӧ P) v? s(E'RX|c@Y#4D$.Ot U]Pd;i,*$$Bn0 1ۍЎ$o'"qrs!F*,7%ъyL JPҌaYIK DHUҗ$b&("RL$ L]qCYrP%aYn/4M)XFtb%5񌣄ygd=_JlX3Ozh39S``a0")6tj@*xZ(zR}5)CБѠM1,wwu)Fҟ1HTZ.ˌfA_JU-u#$Cܩ@Ұr LJOp^NCѺBxM]ϐVq9K2q:]W}k5d'Knε*^ɪٞwieGKf3W.VOKlgKͭnwނYaCzqMrN^etKݪ:7znuvK}{V/^%^zˮp0X/%; L }|[-vzAh=L;5"6WV fgKb4αhHx@rB+ H%ol$;1$~ *[Kq.cYe)/BdN3ͼڡjlW7rγ鼩mYπv24:7k xK<‰]cGJѐV-??[,ƴ7h;ӠNQ׵ԒgcQZ3ik@[?^!B<;ζr=Qc[p q]3vknt{NķMo󮷾 ӭx`APZG( ''~17^Hn"9=.#y L`gnAB4T3ߴ9!pc/3ōڮͬ@u{Xo30h_ ^ci.kh9Qu޻w]fe]u w[}B/Xf^ #|sw{飷|qԻt/EE}s~;ByM|/OomGӧ}XL~ю|;(/?ŏ~~o?sgD_pw :7qV9(Et9 8 Wewx6X~RTk`mW_VjͲ";j͆!Esfim,.hbx4MHcCp\(cȉh#]LՒ{bhP؀kXa~ VE(77ȋ؊p&?8XxfPō8XxxYBݸYy8UhxU(HHCyɑ$(%y7,I.$5’9$G?i"F`|2_!&E&jq$0¹آ.8e8pX fZDZ^0k-30fǤeRJo,:5lh<ƥ:dyxƘUւVAjEsjzQj&etZ}ƦmڇwVe {w*˦fZzA:f,/vyMt-65҇xjFj_irǪyEhzZNb5݊^D:SbjHgoîiq[r֠JVggHf0j T ' [je  /u\V> lօ~=ʬ[7ђW[eNf#]:OvPd6<+hkFXC˅JcKMjbE1'?00)ǵPg[e%rjke+{R @AL]{Fm7AM]MjER=0=;VՉvϙ;_ma,X\ݹ#Uln) ٠%9CHRH0`Lӿ<,7ΞLFD^*.䪘䜷ϵO>m8. "=?^!NT^塰\^>:⇊@5J.j(綋pv>zYzm.~~M{zW.W~>θ݅ K[kݮޝCڱeNn~m.l>ƮŞ{n*,Ү^HN׾ޞ,<.~xk>Z~p_{ ;?]=/m/ "_$_v(ϼ*.0J;46-:o]<@pB?]FHm L?K~MBXoSm^/X` 9dMfjlEp?@V srz|C/B?T/C;e_|?R?? _??鵟O¿˾_uFʿE,4;u5?;_AOG_MԿҁp^0G4O4UWu?go圳STJIDG+4Ue0Qh7Y b_ 5EmvcURvZ{2cZn.9M["\%YMu_kW[EyiY__O̔T! Na`aax8ZCKa3x'69Ց-.8Ua;י{ gu6TFgSV*y=駟bZNNhfds36[Cͅ,vu"Z&o*n!o!|ͪ"np[YU<<`7Vm׻)Y9_]vOEq&_?Q#׉}#]yco[3BU>Gyg|?ٿn{LJ/_NpvgˡWZ]"XXQ%?хȂL0b |! 1B蹰i6Nءx.qU ^_(rjaYrE,~mF vF.&,)0"Ŗ2/Ds|!ǮQwcy2?P ?.j$H;nQأ%MDPa$e)MyJTRde+]JXR#;ivtools-doc/graphdraw.grs0000644000076500007650000000155707374262631016362 0ustar scottscott00000000000000graphdraw(3,3 gs( :fillbg 0 :brush 65535,0 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :font "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*","Helvetica",12 :nonepat), gs( :fillbg 1 :brush 65535,0 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :graypat 0), node( :reqlabel 1 :ellipse 331,665,35,20 :ellipsetrans 1,0,0,1,-20,-132 :text 12,"A" :texttrans 1,0,0,1,307,526 :gs 0), node( :reqlabel 1 :ellipse 236,514,35,20 :ellipsetrans 1,0,0,1,-20.5,-132 :text 12,"B" :texttrans 1,0,0,1,212,375 :gs 0), node( :reqlabel 1 :ellipse 453,480,35,20 :ellipsetrans 1,0,0,1,-20,-132 :text 12,"C" :texttrans 1,0,0,1,429,341 :gs 0), edge(300,515,228,401 :arrowscale 1.5 :tail :startnode 0 :endnode 1 :gs 1), edge(323,515,420,367 :arrowscale 1.5 :tail :startnode 0 :endnode 2 :gs 1), edge(249,377,400,353 :arrowscale 1.5 :tail :startnode 1 :endnode 2 :gs 1) ) ivtools-doc/graphdraw.html0000644000076500007650000000432607442174160016523 0ustar scottscott00000000000000 ivtools graphdraw: node edge directed graph editor and viewer

    ivtools graphdraw

    ivtools graphdraw is idraw with extensions for graph or network editing. Here is a picture of the user interface. Here is the graphdraw document for the drawing shown in the picture of the user interface.


    Usage

    man page

    The top node drawing tool gives you a blank node positioned at the mouse click. The bottom node drawing tool behaves the same as the text tool, and uses the typed in text to initialize the node. The edge tool draws lines that connect nodes.

    Most of the mechanism of ivtools drawtool available as well.


    Download an ivtools graphdraw binary and add the following to your ~/.mailcap file:

    application/graph-idraw; graphdraw %s

    to test launching graphdraw when a graphdraw file is clicked.


    Here is a small logic diagram that when loaded into a graphdraw from ivtools-0.7.3 or later makes for a simulation of the 4 Value Null Convention Logic of Theseus Inc.. Use the Attribute tool to set a "val" attribute of 0, 1, 'N', or 'I' on the input nodes, and then to inspect the values that get propogated to the other nodes.


    You might be interested in an alternate graph-browsing and editing framework, freely available for non-profit use, from the daVinci project as well.


    ivtools drawing editors idraw drawtool comdraw flipbook graphdraw

    ivtools_button ivtools home page ivtools-doc/graphinfo.html0000644000076500007650000000571407374262631016530 0ustar scottscott00000000000000 GraphUnidraw

    GraphUnidraw

    example application

    GraphUnidraw is a library that extends ComUnidraw with graph (or network) editing capabilities. TopoFace is a library of objects for representing spatial graphs (edge, node, face) used by GraphUnidraw.

    overall framework objects

    specialized graphic objects

    tools and dialog boxes

    • NodeDialog: dialog box for changings node's label

    graph editing commands

    back to ivtools technical info

    ivtools-doc/groupkit.html0000644000076500007650000000421107503671462016406 0ustar scottscott00000000000000 GroupKit1.0 from the University of Calgary

    GroupKit1.0 from the University of Calgary

    Sometime in 1998, an attempt was made, for reasons of software archaelogical curiosity, to build GroupKit1.0 from the University of Calgary on top of ivtools. This version of GroupKit, from Mark Roseman and Saul Greenberg, was delivered on top of the third beta release of InterViews 3.1, published in 1990. Subsequent versions were written on top of Tcl/Tk.

    GroupKit1.0 relied extensively on the Dispatch class library, and the use of binary iostreams for distributed communication. Subsequent evolutions to either the Dispatch library or the iostreams library (at least the libstdc++ version) seem to have disabled GroupKit1.0. The assumption that might be the problem was the technique of pushing bytes back onto an incoming binary socket stream as a way of managing distributed communication.

    Because of the scientific free software ethic involved, all components are still available for investigation and/or fixing if anyone is so motivated. Alternates to the Dispatch library, like ACE from Doug Schmidt, now exist, but it is possible that this original approach attempted by programmers at the University of Calgary might still be viable if upgraded to the latest capability of iostreams. With it comes one pile of C++ software applicable to multi-media conferencing.

    Here is the original GroupKit1.0.tar.Z

    Here is the original README

    Here is a patch which upgrades GroupKit1.0 to build on ivtools.

    Here is the latest version of GroupKit

    ivtools-doc/help-wanted.html0000644000076500007650000002237707503671462016767 0ustar scottscott00000000000000 ivtools things to do

    ivtools things to do

    ivtools has been under development by Vectaport Inc. since 1994. It has always been an open source free software effort, but only recently has this model of programmer collaboration been widely publicized.

    If you are a capable C++ programmer with an interest in ivtools-related application areas, why not consider picking one of the following planned enhancements, and trying your hand at framework extension? Test your understanding of design patterns. Make your own contribution to free software. Join or browse ivtools mailing lists for more information.

    Also take a look at the page for feature-requests and bug-trackings to get more ideas of things to do.

    XDND support (drag-and-drop protocol) Unicode support (multi-language support) (perhaps using IBM's Unicode library: ICU). complete glyphification of drawing editor dialog boxes

    DONE in ivtools-0.7.3

    filter to convert multi-page idraw PostScript (generated by pstoedit) to ivtools flipbook format
    Ctrl-K support for the string editor in the various filechooser dialog boxes

    DONE in ivtools-0.7.4

    copy-paste support for string editors -- make middle click paste the current window manager selection into the string editor, and supply the current selection to other apps via the window manager

    DONE in ivtools-0.7.4

    Add ESC and C/R support to attribute dialog box. Probably make OK button and C/R perform the Add button operation if needed.

    DONE in ivtools-0.7.3

    better support for arbitrary fonts in drawing editors

    DONE
    see minimal idraw help page

    configure script improvements -- remove the need for CPU and PWD environment variables and supplying XCONFIGDIR to "make World"

    DONE in ivtools-0.7.5

    add trace, step, and pause funcs to comterp

    DONE in ivtools-0.9

    make the ivtools comdraw barplot func work in the current editor

    DONE in ivtools-0.7.3

    add lineplot and scatplot interpreter commands to comdraw using plotutils.
    fix spurious bug where the first single click in a program is interpreted as a sizeable box. Something to do with initializing the event handling.

    DONE in ivtools-0.7.6

    create a comterp string concatenation operator (an extension to the "+" operator).

    DONE in ivtools-0.7.9

    automatically generate textual README's, man pages, html, and info pages from one common source. restructure drawing editor export to allow writing directly to a pipe (instead of always using a temporary file)
    enabling the Annotate or Attribute tool could default to starting up on the current selection, which will lower the number of GUI interactions to add attributes to newly drawn graphics the text object in drawtool, etc. seems to have a maximum number of characters that needs to be generalized flesh out version 12 of idraw PostScript format to support non-integer line widths (to be utilized by plotutils)

    DONE in ivtools-0.7.4

    flesh out version 13 of idraw PostScript format to allow specification of capstyle/joinstyle for polylines (to be utilized by plotutils)
    create arc and wedge graphics create polygon clipped rasters

    STARTED in ivtools-1.0.1

    additional support for partial redraw inside a single raster, beyond what's described here.

    See #define RASTER_DAMAGE1 and #define RASTER_DAMAGE2 in ovraster.c.

    add commands to move forward/backward by one to the Structure menu

    DONE in ivtools-0.8

    add inline documention to classes, methods, and member variables that can be used to automatically generate documention by PERCEPS.

    DONE in ivtools-0.7.4

    experiment with building PDP++ and Neuron on top of ivtools experiment with building VRweb using ivtools copy of InterViews allow for some sort of timer-triggered save of intermediate backup copies of a work in progress.
    add handler on virtual-memory-exceeded (or even seg-fault) to allow saving a document. expanded capability for editing and traversing hierarchical nested graphs in graphdraw extend the set of funcs in iueserv to support a wider range of IUE data structures and transforms expand the ivxt sample program to have more than a Motif/lesstif button. Pull-down menus might work ok with a newer version of lesstif.
    experiment with using Fresco for graphics and/or glyph rendering. try building GroupKit1.0 on ivtools. add KDE, gtk+, and Microsoft Windows to the list of emulated toolkit appearances. Now there is support for monochrome (Apple), OpenLook, Mofit, and SGI-Motif (the default). add support for images to pstoedit's generation of idraw PostScript.

    DONE pstoedit-idrawrast.patch

    expand the emacs-like text-editor widget:
  • File/Quit menu item
  • middle-button pasting of X selection
  • debug the morpher and plot/sendplot example programs re-incorporated from the original InterViews 3.1 since ivtools-0.7.4 add quit buttons or support for typing "q" to all the glyph example programs. add more mechanisms for time-based frame replay to flipbook.
    experiment with adding a hierarchical frame mechanism to flipbook. tighter integration of the comterp shell with the emacs-like text-editor widget (in glyphterp for starters). Add support for a mode where Ctrl-P and Ctrl-N cycle through the command history in-place. write documentation from the perspective of someone new to ivtools investigate adding themes support.
    add support for anti-aliasing, gradient fill, and align-to-path for character strings.

    sourceforge task

    add commands or tools for setting the current graphic state from an existing graphic, and changing an existing graphic to have the current graphic state. opaque move, scale, stretch, and rotate of graphics in drawtool

    DONE in ivtools-0.7.5

    built-in support for the PNG image format.

    DONE in ivtools-0.9.6

    SourceForge Task Manager
    ivtools-doc/hubble.frs0000644000076500007650000000421707374262631015637 0ustar scottscott00000000000000flipbook( frame( rectangle(12,105,659,648 :fillbg 1 :brush 65535,0 :fgcolor "LtGray",0.762951,0.762951,0.762951 :bgcolor "White",1,1,1 :graypat 0 :transform 2,-0,-0,2,-344,-251) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/p43396.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/p43398.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/p43399.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/p43400.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/p43401.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/prc9413.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/prc9426a.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/prc9426b.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/prc9432.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/prc9709a.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/sl9wfp02.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/sl9wfp04.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/sl9wfp05.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/sl9wfp06.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/sl9wfp10.gif" :transform 1,0,0,1,50,120) ), frame( raster("http://www2.jpl.nasa.gov/files/images/browse/sl9wfp11.gif" :transform 1,0,0,1,50,120) ) :slideshow 5 ) ivtools-doc/iclass.html0000644000076500007650000000352607374262631016030 0ustar scottscott00000000000000 Locating code with iclass and other tools

    Locating code with iclass and other tools

    The iclass program provides an easy way to locate C++ classes and cruise their hierarchical structures. It is part of the ivtools source tree (borrowed from InterViews 3.1). iclass reads in a set of C++ header files, builds the class structure and displays several widgets containing the class information:
    • a string editor with the name of the current selected class
    • a list of the current selected class' base classes (parents)
    • a list of the current selected class' derived classes (children)
    • a text display of the current selected class definition
    • a list of all classes currently loaded into iclass

    You can display a class definition by typing it into the string editor or by clicking on any class name in a list widget. It is a great way to quickly browse a class hierarchy and to explore the classes contained in any large C++ library.

    To invoke iclass give it a list of header files to process, or use the -r (recursive) option and give it a directory name; it will descend recursively into the given directory structure loading all the .h header files it can find there. Some libraries (like vtk) use .hh header filename extensions; we have modified iclass to make it recognize these files as well in recursive mode.

    An alternative class browser is found in the OO-Browser package, a part of XEmacs, which also contains xoobr, an X Window tool that displays class trees graphically. ivtools-doc/idraw-README.txt0000644000076500007650000005456507417430144016471 0ustar scottscott00000000000000NAME idraw - drawing editor SYNOPSIS idraw [options] [file] DESCRIPTION Idraw is a drawing editor that lets you create and edit drawings made up of graphics like text, lines, splines, rec- tangles, polygons, and ellipses. Drawings are stored in files that can be printed on a PostScript printer. You can can open an existing drawing when starting up idraw by typ- ing a file name on the command line. Idraw displays a portrait or landscape view of an 8.5 by 11 inch page in its drawing area. In a column along the draw- ing area's left side is a set of drawing tool icons, and above the drawing area is a set of pull-down menus contain- ing commands. A panner in the lower left corner lets you pan and zoom the the drawing area. Along the top is a set of indicators that display editing information. DRAWING TOOLS You must engage a tool before you can use it. You engage a tool by clicking on its icon or by typing the character below and to the right of its icon. The icon of the drawing tool that's engaged appears in inverted colors. Once engaged, you use the tool by clicking the left mouse button in the drawing area. The Select, Move, Scale, Stretch, Rotate, and Alter tools manipulate existing graphics. Magnify makes a part of the view expand to fill the entire view. Text, Line, Multiline, Open Spline, Ellipse, Rectangle, Polygon, and Closed Spline create new graphics. Each tool works as follows: Select Select a graphic, unselecting all others. A graphic is selected if its handles are visi- ble. Handles are small inverse-video squares that either surround the graphic or demarcate its important points (such as the endpoints of a line). If you hold down the shift key, Select extends the selection: it selects the unselected graphic (or unselects the selected graphic) you clicked on but does not unselect other selections. Clicking anywhere other than on a graphic unselects everything; you may also drag a rubberband rectangle around a group of graphics to select all of them at once. Shortcut: the right mouse button invokes Select while the mouse is in the drawing area. Move Move graphics from one spot to another. Shortcut: the middle mouse button invokes Move while the mouse is in the drawing area. Scale Scale graphics about their centers. Stretch Stretch graphics vertically or horizontally while tying down the opposite edge. Rotate Rotate graphics about their centers according to the angle between two radii: the one defined by the original clicking point and the one defined by the current dragging point. Alter Modify a graphic's structure. This tool's effect is described below for each graphic. Magnify Magnify a portion of the drawing specified by sweeping out a rectangular area. Idraw will magnify the area to occupy the entire screen, if possible. Text Create some text. Left-click to position the first line of text, and then type as much text as you want. You may use emacs-style keystrokes to edit the text as well as enter it. You can leave text editing mode by typ- ing ESC or by simply clicking somewhere else. The Alter tool lets you edit the text in an existing text graphic. Line Create a line. The shift key constrains the line to lie on either the vertical or the horizontal axis. You may left-click with the Alter tool on either endpoint of a line to move the endpoint to a new location. Multiline Create a set of connected lines. The shift key constrains each segment to lie on either the vertical or the horizontal axis. Each left-click starts a new segment (i.e., adds a vertex); each right-click removes the last vertex added. The middle button finalizes the multiline. The Alter tool lets you move, add, and remove vertices from an existing multiline. Open Spline Create an open B-spline. The shift key con- strains each control point to lie on either the vertical or the horizontal axis with the preceding point. Each left-click adds a control point; each right-click removes the last control point added. The middle button finalizes the spline. The Alter tool lets you move, add, and remove control points from an existing open spline. Ellipse Create an ellipse. The shift key constrains the ellipse to the shape of a circle. The Alter tool does not affect ellipses. Rectangle Create a rectangle. The shift key constrains the rectangle to the shape of a square. The Alter tool lets you move the rectangle's corners independently to form a four-sided polygon. Polygon Create a polygon. The shift key constrains each side to lie on either the vertical or the horizontal axis. Each left-click starts a new segment (i.e., adds a vertex); each right-click removes the last vertex added. The middle button finalizes the polygon. The Alter tool lets you move, add, and remove vertices from an existing polygon. Closed Spline Create a closed B-spline. The shift key con- strains each control point to lie on either the vertical or the horizontal axis with the preceding point. Each left-click adds a con- trol point; each right-click removes the last control point added. The middle button finalizes the spline. The Alter tool lets you move, add, and remove control points from an existing closed spline. PULL-DOWN MENUS The pull-down menus File, Edit, Structure, Font, Brush, Pat- tern, FgColor, BgColor, Align, and View above the drawing area contain commands for editing the drawing and for con- trolling idraw's execution. The File menu contains the fol- lowing commands to operate on files: New Destroy the current drawing and replace it with an unnamed blank drawing. Revert Reread the current drawing, destroying any unsaved changes. Open... Specify an existing drawing to edit through a FileChooser(3I), which lets you browse the file system easily. Save As... Save the current drawing in a file with a specific name. Save Save the current drawing in the file it came from. Print... Send a PostScript version of the drawing to a printer or to a file. The bold rectangular outline (called the page boundary) appearing in the drawing area indicates the portion of the drawing that will appear on the printed page. Import Graphic... Create a graphic from the information in a file and insert it into the current drawing. Idraw can import images from files in the following formats: TIFF; PostScript generated by pgmtops, ppmtops, and idraw; X bitmap for- mat; and Unidraw format. Quit Quit idraw. The Edit menu contains the following commands for editing graphics: Undo Undo the last editing operation. Successive Undo commands undo earlier and earlier edit- ing operations. Redo Redo the last editing operation. Successive Redo commands redo later and later editing operations up to the first operation undone by Undo. Undone operations that have not been redone are lost as soon as a new opera- tion is performed. Cut Remove the selected graphics from the drawing and place them in a temporary storage area called the clipboard. Copy Copy the selected graphics into the clip- board. Paste Paste copies of the graphics in the clipboard into the drawing. Together, Cut, Copy, and Paste let you transfer graphics between draw- ings simply by cutting graphics out of one view and pasting them into another. Duplicate Duplicate the selected graphics and add the copies to the drawing. Delete Destroy the selected graphics. Select All Select every graphic in the drawing. Flip Horizontal, Flip Vertical Flip the selected graphics into their mirror images along the horizontal or vertical axes. 90 Clockwise, 90 CounterCW Rotate the selected graphics 90 degrees clockwise or counterclockwise. Precise Move..., Precise Scale..., Precise Rotate... Move, scale, or rotate graphics by exact amounts that you type in a dialog box. You can specify movements in pixels, points, cen- timeters, or inches. Scalings are specified in terms of magnification factors in the hor- izontal and vertical dimensions. Rotations are in degrees. The Structure menu contains the following commands to modify the structure of the drawing, that is, the order in which graphics are drawn: Group Nest the selected graphics in a newly created picture. A picture is just a graphic that contains other graphics. Group allows you to build hierarchies of graphics. Ungroup Dissolve any selected pictures. Bring To Front Bring the selected graphics to the front of the drawing so that they are drawn on top of (after) other graphics. Send To Back Send the selected graphics to the back of the drawing so that they are drawn behind (before) other graphics. The Font menu contains a set of fonts in which to display text. When you set the current font from the menu, you will also set all the selected graphics' fonts to that font. A font indicator in the upper right corner displays the current font. The Brush menu contains a set of brushes with which to draw lines. When you set the current brush from the menu, you will also set all the selected graphics' brushes to that brush. The nonexistent brush draws invisible lines and non-outlined graphics. The arrowhead brushes add arrowheads to either or both ends of lines, multilines, and open splines. A brush indicator in the upper left corner displays the current brush. The Pattern menu contains a set of patterns with which to fill graphics but not text. Text always appears solid, but you can use a different color than black to get a halftoned shade. When you set the current pattern from the menu, you will also set all the selected graphics' patterns to that pattern. The nonexistent pattern draws unfilled graphics, while the other patterns draw graphics filled with a bitmap or a halftoned shade. The FgColor and BgColor menus contains a set of colors with which to draw graphics and text. When you set the current foreground or background color from the FgColor or BgColor menu, you will also set all the selected graphics' fore- ground or background colors. The ``on'' bits in the bitmaps for dashed lines and fill patterns appear in the foreground color while the ``off'' bits appear in the background color. A black and white printer will print a halftoned shade of gray for any color other than black or white. The brush, pattern, and font indicators all reflect the current colors. The Align menu contains commands to align graphics with other graphics. The first graphic selected stays fixed while the other graphics move in the order they were selected according to the type of alignment chosen. The last Align command, Align to Grid, aligns a key point on each selected graphic to the nearest point on idraw's grid (see below). The View menu contains the following commands: New View Create a duplicate idraw window containing a second view of the current drawing. The second view may be panned, zoomed, and edited independently of the first. Any number of additional views may be made in this manner. Changes made to a drawing through one view appear synchronously in all other views of the same drawing. You may also view another drawing in any idraw window via the Open com- mand. Close View Close the current idraw window. Closing the last idraw window is equivalent to issuing a Quit command. Normal Size Set the magnification to unity so the drawing appears at actual size. Reduce to Fit Reduce the magnification until the drawing fits entirely within the view. Center Page Center the view over the center of the 8.5 by 11 inch page. Orientation Toggle the drawing's orientation. If the editor was formerly showing a portrait view of the drawing, it will now show a landscape view of the drawing and vice versa. Grid on/off Toggle idraw's grid on or off. When the grid is on, idraw draws a grid of equally spaced points behind the drawing. Grid Spacing... Change the grid spacing by specifying one or two values in the units desired (pixels, points, centimeters, or inches). If two values are given (separated by a space), the first specifies the horizontal spacing and second the vertical spacing. One value will specify equal horizontal and vertical spac- ing. Gravity on/off Toggle gravity on or off. Gravity constrains tool operation to the grid, whether or not the grid is visible. X DEFAULTS You can customize the number of undoable changes and the font, brush, pattern, or color menus by setting resources in your X defaults database. Each string of the form ``idraw.resource:definition'' sets a resource. For example, to customize any of the paint menus, set a resource given by the concatenation of the menu's name and the entry's number (e.g., ``idraw.pattern8'') for each entry that you want to override. All menus use the number 1 for the first entry. You must set resources only for the entries that you want to override, not all of them. If you want to add entries to the menus, simply set resources for them. However, don't skip any numbers after the end of the menu, because the menu will end at the first undefined resource. To shorten a menu instead of extending it, specify a blank string as the resource for the entry following the last. Idraw understands the following resources: history Set the maximum number of undoable changes (20 by default). initialfont Specify the font that will be active on startup. Supply a number that identifies the font by its position in the Font menu starting from 1 for the first entry. fonti Define a custom font to use for the ith entry in the Font menu. Give three strings separated by whitespace. The first string defines the font's name, the second string the corresponding print font, and the third string the print size. For example, ``idraw.font3:8x13bold Courier-Bold 13'' defines the third font entry. initialbrush Specify the brush that will be active on startup. Give a number that identifies the brush by its position in the Brush menu starting from 1 for the first entry. brushi Define a custom brush to use for the ith entry in the Brush menu. The definition requires two numbers: a 16-bit hexadecimal number to define the brush's line style (each 1 bit draws a dash and each 0 bit produces a gap), and a decimal integer to define the brush's width in pixels. For example, ``idraw.brush2:ffff 1'' defines a single pixel wide solid line. If the definition specifies only the string ``none'', then it defines the nonexistent brush. initialpattern Specify the pattern that will be active on startup. Give a number that identifies the pattern by its position in the Pattern menu starting from 1 for the first entry. patterni Define a custom pattern to use for the ith entry in the Pattern menu. You can specify the pattern from a 16x16 bitmap, a 8x8 bit- map, a 4x4 bitmap, a grayscale number, or the string ``none''. You specify the 16x16 bit- map with sixteen 16-bit hexadecimal numbers, the 8x8 bitmap with eight 8-bit hexadecimal numbers, the 4x4 bitmap with a single 16-bit hexadecimal number, and the grayscale number with a single floating point number. The floating point number must contain a period to distinguish itself from the single hexade- cimal number, and it must lie between 0.0 and 1.0, where 0.0 corresponds to a solid pattern and 1.0 to a clear pattern. On the printer, the bitmap patterns appear as bitmaps, the grayscale patterns appear as halftoned shades, and the ``none'' patterns never obscure any underlying graphics. For exam- ple, ``idraw.pattern8:8421'' defines a diago- nally hatched pattern. initialfgcolor Specify the foreground color that will be active on startup. Give a number that iden- tifies the color by its position in the FgColor menu starting from 1 for the first entry. fgcolori Define a custom color to use for the ith entry in the FgColor menu. Give a string defining the name of the color and optionally three decimal numbers between 0 and 65535 following the name to define the red, green, and blue components of the color's intensity. The intensities override the name; that is, idraw will look the name up in a window sys- tem database of common colors only if you omit the intensities. You can define shades of gray by using equal proportions of each primary color. For example, ``idraw.fgcolor8:Indigo 48896 0 65280'' defines a color that is a mixture of red and blue. initialbgcolor Specify the background color that will be active on startup. Give a number that iden- tifies the color by its position in the BgColor menu starting from 1 for the first entry. bgcolori Define a custom color to use for the ith entry in the BgColor menu. The same rules apply to background colors as to foreground colors. WEB PAGE http://www.ivtools.org/ivtools/idraw.html ivtools-doc/idraw-dialog-box.patch0000644000076500007650000001152707374262631020036 0ustar scottscott00000000000000This patch fixes a bug in the idraw of InterViews 3.1 (and InterViews 3.2a). When a non-existent pathname is entered into the Open or Import dialog box, the TransientWindow is first unmapped and deleted, then the glyph tree of the dialog box is reconstructed with an extra error message label. The problem occurs when the rebuilding of the dialog box triggers an undraw of the previous glyphs, which is ok until it gets down to the string (field) editor, which, because it is an Interactor, tries to check the bound status of the TransientWindow, which no longer exists. This bug might only evidence itself on systems that use a version of malloc that aggressively recycles freed memory, which seems to be the behavior of the latest GNU version of malloc. The work-around of this patch is to clear the body of the FileChooser (the object used by the Open and Import dialog boxes) before rebuilding its glyph tree. The pointer to the string editor (FieldEditor) had to be cleared as well. This required diffs to InterViews/fchooser.c, InterViews/monoglyph.c (because _body was private), Unidraw/catcmds.c (for the Open command), and Unidraw/import.c (for the Import command). The rebuilding of the dialog box from scratch when adding only an error message label is not ideal. In fact, each dialog box gets constructed from scratch 3 times over before its get used, once as expected, and two more times as side-effects of establishing the button actions. Not a big problem, but it made it compelling to come up with (quite a while ago) an evolved version of FileChooser, called OpenFileChooser (part of the IVGlyph library in the ivtools distribution - http://www.vectaport.com/ivtools/), which builds the glyph tree of these dialog boxes only once. This new object was used for all the dialog boxes in the rest of the ivtools drawing editors (http://www.vectaport.com/ivtools/editors.html). Scott Johnston Vectaport Inc. August 1998 Index: src_interviews/fchooser.c diff -c src_interviews/fchooser.c:1.1 src_interviews/fchooser.c:1.2 *** src_interviews/fchooser.c:1.1 Wed Jan 28 09:47:50 1998 --- src/lib/InterViews/fchooser.c Wed Aug 5 11:14:46 1998 *************** *** 121,126 **** --- 121,132 ---- } } + void FileChooser::bodyclear() { + MonoGlyph::bodyclear(); + FileChooserImpl& fc = *impl_; + fc.editor_ = nil; + } + /** class FileChooserImpl **/ void FileChooserImpl::init( Index: src_interviews/monoglyph.c diff -c src_interviews/monoglyph.c:1.1 src_interviews/monoglyph.c:1.2 *** src_interviews/monoglyph.c:1.1 Wed Jan 28 09:47:51 1998 --- src/lib/InterViews/monoglyph.c Wed Aug 5 11:14:46 1998 *************** *** 44,49 **** --- 44,54 ---- Glyph* MonoGlyph::body() const { return body_; } + void MonoGlyph::bodyclear() { + Resource::unref(body_); + body_ = nil; + } + void MonoGlyph::request(Requisition& requisition) const { if (body_ != nil) { body_->request(requisition); Index: Unidraw/catcmds.c diff -c Unidraw/catcmds.c:1.1 Unidraw/catcmds.c:1.2 *** Unidraw/catcmds.c:1.1 Wed Jan 28 09:48:32 1998 --- src/lib/Unidraw/catcmds.c Wed Aug 5 11:15:12 1998 *************** *** 314,324 **** --- 314,326 ---- } break; } else { + chooser_->bodyclear(); style->attribute("caption", "Open failed!"); reset_caption = true; } } if (reset_caption) { + chooser_->bodyclear(); style->attribute("caption", ""); } } Index: Unidraw/import.c diff -c Unidraw/import.c:1.1 Unidraw/import.c:1.2 *** Unidraw/import.c:1.1 Wed Jan 28 09:48:35 1998 --- src/lib/Unidraw/import.c Wed Aug 5 11:15:12 1998 *************** *** 251,261 **** --- 251,263 ---- if (comp != nil) { break; } + chooser_->bodyclear(); style->attribute("caption", "Import failed!"); reset_caption = true; } } if (reset_caption) { + chooser_->bodyclear(); style->attribute("caption", ""); } return comp; Index: include_look/fchooser.h diff -c include_look/fchooser.h:1.1 include_look/fchooser.h:1.2 *** include_look/fchooser.h:1.1 Wed Jan 28 09:51:02 1998 --- src/include/IV-look/fchooser.h Wed Aug 5 11:15:30 1998 *************** *** 93,98 **** --- 93,99 ---- virtual const String* selected() const; virtual void reread(); virtual void dismiss(boolean); + void bodyclear(); private: FileChooserImpl* impl_; }; Index: include_interviews/monoglyph.h diff -c include_interviews/monoglyph.h:1.1 include_interviews/monoglyph.h:1.2 *** include_interviews/monoglyph.h:1.1 Wed Jan 28 09:51:10 1998 --- src/include/InterViews/monoglyph.h Wed Aug 5 11:15:34 1998 *************** *** 39,44 **** --- 39,45 ---- virtual void body(Glyph*); virtual Glyph* body() const; + void bodyclear(); virtual void request(Requisition&) const; virtual void allocate(Canvas*, const Allocation&, Extension&); ivtools-doc/idraw-icon.gif0000644000076500007650000000104707374262631016403 0ustar scottscott00000000000000GIF89aUU!,UUD$Stm+ag )HwlʶTK&v;1Q̡Qbk͞2jܮNl Lt~'8B8''rYithfxH Zôgjɱj 7 ÄtûY+@liGK )(l2"=MHZ'~>Lo??`ί=U+hP5Qɚ# E`2k?:Д$x䢍+QT0ZdԴ9Knd$Sg×7wLDžj$5]+3RĔlXzݚTIg!s_n1K? af۲ST ad1b }%{l=16sOcz@j՘ ^tѷel}K?Om8pɀ@ompZ'~>Lo??`ί=U+hP@j `8,.h&?dFF4!\$ydFUx%dlb󦼘6;m9 Mlnm.^ ފmNrH: >t-t6OGaB,-ra@bͻEmnmD*GRa )kGiZ4ڧ3,Y jȟ\XeX-YC+jۺ*ոt"i7޽ 8 >8Ō;~wHȂ+[˜; iѤ1Sntլ %_ LM;n27KH i0g|(sYB{5~( V)fPDC`|ҁg_-_I{! yEneG4dz f\H6 Gʇa,Ȁ"'S-X8=EӐe&V66f%|:hKx!=%ݍR!?+:YeZ:4Ux)SL"-EMQ65AeMX;N%Z# (6xf)+/)ЁoN"ygbRjHs~*:'K'|'Q~gUi2HhHG=7`jk^a(T`M-k놩#ٴ,(󡴳*Zғ2Ing3^C.;Ԣ.zҸ DbWn 4O,[O fC1JB*AX{v:T,K1K3S2C #U$E^ҙRf]]G4[B`vX}fq!nMB 7v߭Vw}~Nx/x?9O>x`Ry/y}oι NvѡκlKz죽F;ط L[6^PV|eAb/|)m,5T ?X $taWRS BXp ohApJ xxkA,bj#*8H734.WEI1\4F}1d f2*Qw^ÏF$mad#MDёvĈS=1BSSr$'1a'P"?1l{#+ǒDc3l'8H >C4>%Ѣ MFgP G˙D4逸JҶYˋYJӱٔC8vϞT7@ݤKHeRWQTONUZ)UaaWYۍiYaV٭qk'ܹI5xѽf,%*ؿvnCtpVbd~9Ssbag;jOj.W+U*j_عB֥e,{*6.s nw= -XKܮ?ɥr\=w:ۦ Zw~vI~x]nEzNZ!PoK{Z,Y|_ͧUpn:)鱜0ysЭD+ p0lQlu4~w}V.n -+I7qǴ5~q29=& Td[If͒gŖdQ\e<Y̖e)7̕9re3f&fᄍzjslg9ϊ3Y/g8pƋ-SF:2udOtp3M-Ra̞VԳJjVdJV^eij5RhfVٰsM4_Pղg?'ٴ;Q_ma~w_mn\; -1[.#{&^0m Nݕ4uprk[qzuV !)q= Ŗԁl7_mS6ֳcb9z=a_;5=p9;Λsz.po GjReW^myzȆzMqK|CU|u^6vnݵ?Y|Twmҏb|c_>}?;ìMҌ/N7ޟRai4GxxN׀8)SnK$u rF$rQg| hFWz/1s(\ǂK} v9=b9(CkنDwKtNB$HS̈́WN֔N(yU8_VXiKhjl7RmF8pHԅ ׁSԇgttxe-u憇 e|wNxwX,؉k680JQ@ekws|hxyz(7Xk8Ĩzo$7<ыΨoLa5hY׍( Z mhTǎXǃȉHx(p`zċhs4&X̥Fy u7(8C!ii%$=Lԏ͡ȍX'Y97)e8ɓ8M@B9Hy4y9W[qW(9 9וw`)>~ im*yp)hdYeY yTXW?z[ C@ɘ㸘@|O9ɔxiGd؋Sc8hbziwi"9ցyC))gviYy oY6ɉəmS톅ؘ5DKB 6kc9鹎9l)D)i嗗nh9ʨuI z G7*~i$JoIPi6iVm2I7 -oYxx}IK+M;sy~Hk[b&fK쩰w[Lطq w[XҭڵTPjZ;ظ}: 7 zh;i:۶^۳ع;f{1` [ zٗ;kj2+K;{˹K<[G#c<[2+}9K-++[{ y[jLyl &h(A%l')P;ivtools-doc/idraw.html0000644000076500007650000000606507512650733015657 0ustar scottscott00000000000000 idraw: InterViews drawing editor

    idraw

    The idraw distributed with ivtools is essentially the same as the InterViews 3.1 idraw. It is still built on the IV and Unidraw libraries that have been incorporated into ivtools largely unmodified. The other ivtools drawing editors have been evolved from idraw.

    The idraw man page Minimal idraw help page, including how to get more fonts
    idraw documentation in German Links to more things you can use (or do) with idraw.
    page of idraw logo art convert xact X11 colortables to X resource lines so idraw can use them
    adding fonts (incl. Greek) to idraw adding Kanji to idraw
    Umlaute und weitere Fonts fr idraw

    other idraw tips:

  • Hold down the shift-key while moving an object to constrain motion to only the x or y direction.
  • Hold down the meta-key (alt-key) when entering text, to get access to the upper half of the ASCII character set (128 thru 255).
  • idraw holds the keyboard and mouse focus, even from other applications, while entering text. Be aware of this if you find yourself thinking the whole X server got locked up because of idraw.

    idraw PostScript format

    idraw saves its drawing to disk in a Postcript format constrained to be readable by idraw. Here is an example PostScript file in idraw format. You can load it into idraw or print it on a PostScript printer. Here is the same drawing embedded in a larger and different publication, an example of how idraw PostScript format can be hidden in a larger (and different) PostScript document, yet still be extracted by idraw.

    ivtools drawing editors idraw drawtool comdraw flipbook graphdraw

    ivtools_button ivtools home page ivtools-doc/idrawthings.html0000644000076500007650000001030007433262401017050 0ustar scottscott00000000000000 Things you can use (or do) with idraw

    Things you can use (or do) with idraw and its PostScript drawing format:


    export/import idraw PostScript

    export/import idraw format with ivtools drawing editors.
    http://www.vectaport.com/ivtools/editors.html

    idraw2tk, tgif2idraw, xfig2idraw - various converters from/to idraw format
    http://www.oasis.leo.org/perl/scripts/graphics/xfig-tgif-to-idraw.dsc.html
    ftp://ftp.ie.u-ryukyu.ac.jp/pub/software/kono/xfig-tgif-to-idraw.shar

    generate or convert to idraw PostScript

    NEW   Skeletonization software that outputs idraw format
    http://hrl.harvard.edu/people/postdocs/rlo/rlo.dir/rlo-soft.html

    NEW   Interactive tree plotting software that outputs idraw format
    http://newfish.mbl.edu/Course/Software/PHYLIP/doc/draw.html

    LISP routines for generating idraw PostScript
    http://pecan.srv.cs.cmu.edu/afs/cs.cmu.edu/local/mosaic/common/omega/Web/People/mlab/igraphics/igraphics.html

    export idraw format from vhclmaps map viewers
    http://www.vectaport.com/vhclmaps/viewers.html

    GNU plotting utilities with filters (graph -T ps) to render plots in idraw format
    http://www.gnu.org/software/plotutils/plotutils.html

    convert arbitrary PostScript to idraw's editable format
    http://www.geocities.com/SiliconValley/Network/1958/pstoedit/

    description of exporting to idraw from Neuron, a nerve simulation program
    http://theta.hippo.hscbklyn.edu/fox/Neuron.User.Manual/5/operations.html

    export PET images in idraw format
    http://topo.topo.ucl.ac.be/iv_mediman.html

    export Petri (ER) nets in idraw format
    http://ls4-www.informatik.uni-dortmund.de/luebeck/pg279/modprak/petri-tools.html#cabernet

    petrologic phase equilibria diagrams for geologists generated in idraw format
    http://www.erdw.ethz.ch/~jamie/perplex.html also http://eurasia.ethz.ch/~jamie/perplex/special/README.PERPLEX

    plot rooted phylogenies, cladograms, and phenograms in idraw format
    http://info.ibb.waw.pl/docs/PHYLIPdoc/progs.algs.tree.html

    accept idraw PostScript

    robotic components web graphical annotation
    http://www-robotics.cs.umass.edu/~pop/robot_web.html

    example of a PostScript filter that accepts idraw format
    http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/PostScript/psmulti-2.6/

    convert to a format read by a syntax directed graphical editor derived from idraw
    http://www.wi.leidenuniv.nl/CS/SEIS/vislang/VLsoftware.html#TransIdraw

    import into a drawing editor that can create figures for inclusion into LaTeX
    http://www.cs.ust.hk/faculty/otfried/Ipe/


    ivtools idraw page ivtools-doc/idrawversionwarningpatch.txt0000644000076500007650000000126107374262631021541 0ustar scottscott00000000000000diff -c idcatalog.c:1.1 UniIdraw/idcatalog.c:1.2 *** idcatalog.c:1.1 Mon Aug 3 12:19:51 1998 --- idcatalog.c Mon Aug 3 12:29:10 1998 *************** *** 177,184 **** in >> _buf >> _psversion; if (_psversion > PSV_LATEST) { ! fprintf(stderr, "warning: drawing version %d ", _psversion); ! fprintf(stderr, "newer than idraw version %d\n", PSV_LATEST); } float xincr, yincr; --- 177,184 ---- in >> _buf >> _psversion; if (_psversion > PSV_LATEST) { ! fprintf(stderr, "warning: drawing version %f ", _psversion); ! fprintf(stderr, "newer than idraw version %f\n", PSV_LATEST); } float xincr, yincr; ivtools-doc/iet.jpg0000644000076500007650000005635007374262632015153 0ustar scottscott00000000000000JFIFHH Photoshop 3.08BIMxHH(FG(HH(d'@8BIMHH8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM  JFIFHH'File written by Adobe Photoshop 4.0Adobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?,p9ߐ}Q:[𺕯kz^%li+7mc=/{v?܍_Hu屡/>looo/lٓU[PdF-}G.OD5=ZUnN5ۍ1.a2@ sά5fzVfS{BlvCY6~k2ֱřop̠HgZ1;n-L`tЯ{5zDlq@^Y~no;2+sqs*[Ggg Ӹ-ynkfE+ҦqS1kl6$w8.t!pF#їRi~͌m>?~D ;f[?'j{Ay sR.# qK@Âks568Un{_\:Pg:K:{:IԞӷ8׺`~ƳV\# F^jXXʱI;#E:>mH42Í6mu̱?gTg}+1]gm=n/j#'̜&ĸz^4zJ.i NzhycUn[s׍gοv5xŭ-8_ҟr+fgK7!Ők^s[SPm64Cٱ;jwmN(do9OK.O.'e ]>>1`uŭJe:~G)[CL{1p|Zٟ= OOmng~OHЉ^z=6|7OQ&?$o?#Wu }M}=_Vޟ'듬_; O>)#|E_k1T*'0xi#}_c~{Sƛ8J$ yH{Lke|j~Oִ~kns-|Gc8BIM'File written by Adobe Photoshop 4.0Adobed         X$E !"1A2QaqB#Rbr3CS$cs4%T5E7 !1"AQ2BRrab#qC43Ss$c ?::wao5rlc:Dfw +?=Y|5OB2:ŲN!m~dLcyHHxG v.0GkE9yV$<"| a2Yf^c^+(}b>4xi<(٬wPjU,4=7eZn;:Ç17rc-n% fTڰQ~;} q|ȄK -F%Pu{k9PĮ%f>d3ca I$ki>%eVaCbEEuahs,z.$U-Ga%cOч1>f0RyF\QDi [LG|NT_rNE{ٿ QAnfY [}![[S,|ܨ=x.)e&ŁC䟘/2o4ҜbjjgFʯѶ{-opu" #Bh7#L~@p} y1ky̳3:*\Α*p.#fvmϐO'<ƾeo24晚M4g-Xg7Gfϒ? զ*(򃮚go0N){;;]SӖxruna/7/|Elnǖnn$7 *?z6=mS?MIgUsnɜeL8%q/P?0ǡ !wyAY˿[fjs]'Z~XW@вPOoM{Bp-3^͘d}XR ` eC3AQϟ_ eo i=O'φ7IN᭿>+zH?(zjؖ{jH wtaωqD q=Pvw?ts 46_O^+wZ;9)6u=_N$nVy?l|Ccr_ăQR`.s'φGG{q!:K Ɂb5Ks҇ہF=:;µ7S{58ǡ 3^N|m]}Cq%{ mǠ 6WX:3R̴ $4q~e(F-gv`~ypcеw1SS"$pG$z2]qTE?;JAH50}U.oj"y^Ab aNfRf$\Jo~[C\WS2ߩ[Tu{ 7p`1#rvOӠ|^ yOrVF"RWeb<4xޚsuɫ2ܔUBRhA:XgދDK_iK_O{1e.z+!ֵ_`"?#@hA8dz)q 9};0J!|}c-! gShאq ,ߞU¡ Fzi yIeNߍQkRVՁ|I._v"9闳ƪe#_: zi^: WqLҒ+Sw 2!݋ v3q?R[X0N_Á}9wS̠ 4::{p ZC%-DJb6 TਔGa0h~թ&5 aP q@-(b?G9Չd '-Oo?LRT"k`9b(vp4^ jdA&Z72+33 ^/__֕ӣtǎ~ѱy)OB8m}_!{ FhZ[$]tȎ=kK"?Aq?4ԟTGԑ6Ψ9'6V#GU'GgK+ij=}o[]H^X@iHԎ"Z.Cc-U-dNLy]MPK'Qn8q f&qo79 +7;H&] F[ez*|.ټW.0EEUgj^`@-W7Y/+8xR 4) KU[im1ܼka{qrJU~wzn.G{wdS @Ă{#㩕 nKkI|@ݗZu<ג-мṮԅөtqGDxkW"M!U`BHO;XꡩQ஍ ÍFەZt>OeNaTDr^e5(h8TpG=߱D!Zw!+9緘clQ:y& xxd,kN忔aݯwPXvX*#Uפ6n%|ͭ;A9rVi8 6y7[/VR2jɼbJUrk=x %mJ(+ߝpmBddWLr{rLBp͵z{kPԲuZܱHbHh KL=/F>q2'Pwh<в譺DQ$jV+!n=0;2vUߒϟxtKq%Ģi@UNXgά:Y4ލD*Gv;"<:CI*|+H wTg|dr1uAz^l@m2-FpȦh­[)SixYp[.Ĺy-.4_CeU>çx@>GшDSE 29ON)p-p$[Yۢ%.ݾ9(rx}`!VmSüA<3krymu( r"2QY/q:7 Ŭnk;U֤}\X3QỨ𨸌%jFѩ XqGO{*:*hQFY!K)ν(yN9/C-`c6يȰ%^j1377Gg]q$͜WcKu7 F4iRt-Em~^Xcyy.KڸI: sbX?TRs<Ƚk2R 1"Oؖp'E4,O%50jz ]e乴& R)QQuMM5i9bx蔑m\W]1`2 CʆEVu[p[n$~T$Nxl}?[<ڗ/ncauvͱ_\ė7o9s 9BJujPFS mDyپm[gf>x]N 'atj*jiN .p3x^Jb)lyöo^atNf{E4t`e'ÎU[vnwVxJ؇z%M^nLۍrH&6/+Ү*xxq0Vg云wz^x͗cysclYgȒ鑘[:{ڟͽRLP{cJn<6(Rӝ}K$1bbѡLѩ1VEqql\ޗ_U'NøtO.{%HU\N~78K+t:[-~7Zq'%pJRm~LG^1q"TN iZIY]kǡ8~n+[b{;=ݱcllzCޯVn"LvUQJVI9Gy=(̥v m=_DE.ܺg`hb0Pf{po\n}KkB楖{ŷۭo}v.f2]8K+iӧxuc'')8!Mmybw!:;z*;=/P$wVoq*Y6?tcfnf;ټ͗ێ-v^-P[ާ [MѲΖۍVK. 3Z6E[ƞiG7 52r_tԝQ[_\o7Qyo3=ӨG H$trRw ӱ „qu0SOõC6/UMOm_S_/ov*1Yc /<\:pm{6pËχg Nm3З-5^21joQq̖bW{;1KO;Ru?f}\3sU4?H&m:|BHŨW/ D/{.cg0'PnQ{e.Z sixb,ڷ3Ur0COB y5vKWߍp_nϟ)ś/}iF_OI܈Zia $Tژjp8Vn8:eSI[HqvDC :R6v֚ZTWM#PZ䭭**ZbŵJoTV(]n$VЕ$`jP"1t(E7VWi$ڠ%/;q݋Ǐj~?|F3Qr'CB8mw͐1~ }yN>Iv`~Zg0Hw]nlNs,-pYH%efY}lmbPs]f -<舮,ݢ~ll)\H4 xL~#cjN8dW*od}˫wq|;h0è6!_f3v!i,*[Η,` z}_raG~F)eɪ#zWzJ4q%;Pppv<=w+ ;uoV%[j6tUYv zW/Ǽ/R>跸(XFx'$Ï_9K25!k|WsL(vSFٸ8upjf3`{!1ΞYv޸ߺng*zLQR:cr gTBXUk) |蛾٭ O<KcSDχgV^7z0zˡӶݭӱLIfPcЪ(ZFc\+S|B]Eԛ.imPU0E S* ow 's\Yycml[eɵ٥W3qg'S,yǿ'n%\Xdϫ oTyk}C[6q ct- eX81]H~n#n͹E?;hdgrta50x}Y>#%]p&t۟KT/s5 P*jfvg6vKfgR]26=qx! i:,LHCSJ.o>wykyJ>wk;cq~Qբ8&> ,zZc/Ayx:g`fY$P~"ZXQ3C}qI,1d`}W=-cmku~1ټAѫ=Zku6+?WTNوP;T>㜆v 'IA8 xtbHGzp2AoAZBەvk<*@յ.}i—.\'Q^wW=#:iԱO}/PԌ{{B*iېb\GC~\"@ SZ{RCQaĊg~BA=Ղ5\E;ay}mgTwKfl&7[Z#Ȓҙ X MdGTFAD{;kyyQ%cDh4돌C}0cr4xpA4qicP?(3` Ԋ_WvKB`k(+#Pr{2v`8 =՞'XV/hT=wadW}=8h:+a1rǣ}PwWg_gو! w\Np+܏Aa 9tֿтPdf{`.%wekhe Ov,]sLC**ۓj:֔%)Q]{\җ DαC&\E+JHcݼ{G.;wOY[촎wGsu4#s$^8uxQ|<|%'w@`;2?׎aJ&cZז77t1_Iy%;1P {8WO Nf-:#-c ]bfn{!r mjS]H; h!n=yVgG ;9a3Ƌ(*I##.iMZqewe\>o֚Y>iԷYkv_7QHTdDx56Zx3lb_쏜*Pw>덳";h>ym'3vXgԿa>y[=kG 7PE$kFDKZX4iq{,ݬNkuKU'NQgjIFHB#5xV]\M4/^=χXYԫH/u^^'U^Z" Q]EWS^$LrOcu!:pٷ={%6H(dzӫEqίuܕJqzv`@X׻WN[1 )X &J;j*py;3Ԗ//xMi=K~߶3-Orm步# "ɩJqc e-,E8K ūEz}ά6xmr>{&"]JQn.Ũ˝Xu}`I &ܘSx.$q%^V^(ӛ.= ,X{qGx}]u{~ֱY=dWHXO-ZAIbūFřB˭{OX^t6c,V{2CuI +5ӫǏG f7(VPxպknڶmyqk$BYŎf7$ˈl%%< $fO~\ Eq,_ v{ޓ٭d K B$MVvЧW7]oj9~y>biO]yswԣZy4 J5MZ=#VK%^K~#(p4aY[_c,s4a+=g׃Z[L~^BtpGSG^ڻ)aa@iꥁVaOhLa4!FfMJtrJ&[:e P!-#|r LrShקE?cɚÆ0lɹ5v411Չ$Qt)O6(k +y)@x9& \yi/ aOY@. $P[\]H,4Pgqp~iD%쭖UeiXʑZ_cOb'QBm..! u',5V!QLF9Hd.? A}Z=E&yU|/P3W}M+Qi`g9r^YIuQAZqSgPuA@-`n$F,&kH5YhO[)nlXR֎Z]uZlO4қzbct@\}_-hRdI,o_Pj=dwY}$[e>O7n9ciz>BOEiJat2=5-%E@s/Fweg}}M= Xj<Dq cL5V}4Hl2~Gphiر5};=TŠtvN(){?bj@ }'{8!}TN,4R\rN/' MOҿ j3a2wL͟vcMJRv YL]`_~C`8& ,:sv"sk RE =[';#9j*}dD:a~ۺggΚRryʜ8R1\>ϋzOYx苎k{Hf}=rH\]\!4Hy,x~E[żc!c8O }:kn?]n,%A5ץw]9u')r[;76})i5)K({I,M)) aycΚoՎFJ2*kzo2kV9)k2 Bs)%x!O~:?-n{S{!Ln}IX=rq%9u*hUu{˅cf򔺴Z oXFl{VٱGol`D"Uu~8;iwfSUxï!zal}]}˝yw4q,[!ֈ]dƎ}g>B11]nJCz|^fktHi1G)p7k|;9ɺ9)a ďkH]˷gM.Y[,kxm\~arӳڏvEW<yaڬ%6+8aFSO z]i<غmwݺ-mnnwFbteft1?=ѯy 9($e\QayA+}N$7[rJR6HQ$)mr3u6y|$/w] R6.֯Thr~QI@Ri]4JYiO\ X'kH_ٯm;Q,S^|}4A/!sdu $ (I?6~^݇() Xcy*)exGW<|\mҸbWͷ˴Y"_)ʗ&dsvM)_W?Օ.+ZTcG[" Kmʲ*X-\/(%:WO9˧H?tiEd@xiWQU pm{;Y;rdK+}\=t]uP.H]E, k$U3Z]OqG⬛׃l2VٜlFtuAu 3>tw#3Ɵ+ᴫR|i&-HO%*e|:OwyilmeEV3e]3Ⓙ)aĸMyrіgfM;/%ւZi  wp )^Pk<0 ʠeJݟnTӆ7à>@=Dvvqb( ;kSN˿6V'8t `g_HZg^Q$weݟˆS#> !TL;=8Bѕc*63h t~_I 9t(U(-*AeJaiwW:T<"QjVIοׇBv8 :G1}gʩٟلxrl}4!$ 1ʟOV)ح}_^6qzf+QPA }+h)^Ʉ TzrSD۝ߝ-|ːPׅggv4,.T^nzgQ"Hdj4GL{39ҫ ,4 @b4bhP^L`1VŖ*2 >6ꛥFkI+I"ŕ5CLkoy5 {}PH$ٌFaUNs0TEш z*"fGab~N!%5' Pk5Af}$85 NUh }bb)˗.,um\4k]Z[W>{zmz.d6 i+Uxxnb#i<<ƏC0Vmh&U 5km8:[N6?[ŗLİT-<Ɲ?Վg\sZ^.ЭQQ<}&Y%M>:x :,>E:g[yۑf~|laV0x*SR<1S17@))k?Ş\xeu^yaۏ;e~Rdp֓Njxfa&4ɍ%Acw)Em92NXJGMMXүҘyJS4ve ,En2(xM<:)S]<ĉ<ђ/rBEp-f/1Ԥgى|2<:;QvtyiڏHӷI gҬ3UqRᙆƿ,FV󛠝^tte&ᎠLu4L~{}(H<\u#Z9o5/b z~|Z~KEC ʰ;wFZ\?kN¯}oWVyk [/ʛc}@$&0GqשוsVbQh\ջp~Ecw EkP,0ޢ R>*UQWN+-?l~`w:_;:U}^r$Q]T~ ^rD}-mgvwb[kjK;-IUE$-PwUCSbܷ#k&>%|q$jSYn[I/e 5um84w%BЀ[ZӉ~֯"F˗.q۰]U`KjIJvІlp#iER.0sjPjG xa]?ŅJJ.V $~Wz (JM~~^'0m$c>w6 UEdxNioHɫq2B̂Pߘ2&! uUPƅbj4<~Qc^1P&),jTiVEYpIi+'7I1v3L5%ނ[ hAZ;hpHĨG2 $ Za%4МHda5+ YAP~d0)5,`jf\M rZ<@iيݵ(KIMV΂0bb~៣02 \ HC: S2I =ߵA9RET$GEF%ÞTW#R)ؚr5|IFgGts?X3t~\ A_#:4N%Xյj3K=8t7p_1c8?T>9T ]?V3u9e0;}x{V\L"ƓN3V GNiκxke*ӂMG"*p + -L Fy0{p)LNwTiqcp1^~=rN\^߳V:M 1Ӳ=1 R#zyܻTfcȋ:cDB~{ wxV1ߞ>hMzb{x'A5CB^o^p=GxǍjTDE=>{"q꣑ _[pAfeaߧah&[}.Ӌy*#s_u~ =ŒvicEc? qXňWRC<]oCx>u-JT r)L8!`41-atexy\'Aᮐ rR f pXD4`X< +O+xՏ!wmlY{ PH]\S8I\t%uOcB UQI+ ]w4V%+ՒH=,ĝFIa)$ g1zc1ˌ5٤sOŖțE^1tT͌N)9<і4+_Wivtools-doc/index.html0000644000076500007650000002433511324453664015660 0ustar scottscott00000000000000 ivtools home page

    ivtools home page

    ivtools drawing editors

    [ idraw_icon ] [ drawtool_icon ] [ comdraw_icon ] [ flipbook_icon ] [ graphdraw_icon ]

    COPYRIGHT Change Log README INSTALL MANIFEST

    What's New:
  • Nov. 21st 2009   Ubuntu 9.10 and gcc-4.4 compatibility
  • March 4th, 2008   support for ipl-1.0.1, a development environment for the Invocation Programming Language as described in Karl Fant's book "Computer Science Reconsidered: The Invocation Model of Process Expression"
  • July 9th, 2008   support for ipl-1.0.2 and hopefully add iostreams backward compatibility for gcc-4.3.1
  • Download: ivtools-1.2.8.tgz   (download page)
    Changes: CHANGES-1.2

    Documentation:   ivtools-doc-1.2.8.tgz   online copy

    Support Ivtools

    overview
  • Drawing Editors
  • Interpreters
  • Frameworks
  • Glyph Examples
  • Why try ivtools?
  • more info

  • Documentation
  • Change Logs
  • ivtools FAQ
  • Mailing Lists
  • Wiki Page
  • getting ivtools

  • Download
  • Build on Unix Instructions
  • Build on Windows NT Instructions
  • activities

  • Things To Do with Drawing Editors
  • Network Export/Import
  • Drawing Editors as Web Browser Helper Apps
  • Other Tools that work with ivtools
  • Hierarchical Drawings by URL
  • Large Image Tiling
  • Things To Program
  • ivtools (pronounced eye-vee-tools) is a suite of free X Windows drawing editors for PostScript, TeX, and web graphics production, as well as an embeddable and extendable vector graphic shell

    It is made up of layered collection of free C++ frameworks that vertically augment the mechanisms of Unidraw.

  • an application framework for developing direct manipulation graphical editors (drawing editors).
  • a GUI widget framework built on TeX structured document concepts
  • A command interpreter with network capability.
  • an extra layer of drawing editor application framework
  • a layer for integrating the command interpreter into the drawing editor
  • a layer for multi-frame applications
  • a layer for graph/network applications
  • More information on the history of ivtools source.
    How to configure a web browser   to launch drawing editors as helper apps
    Custom toolbar buttons for drawing LaTeX graphics
    SourceForge services:   Mailing Lists   Project Page   CVS   Bug Tracking/Feature Requests


    ivtools optionally uses the ACE framework for networking and the clippoly library for polygon intersection.
    [ ace_button ] [ clippoly_button ]


    GUI Toolkit and PostScript Resource pages
    Eric Foster-Johnson's Programming X APIs. Brad A. Myers' User Interface Software Tools.
    Li-Cheng (Andy) Tai's GUI Toolkit, Framework Page. C/C++ Users Journal Source Links: XWindows.
    Christopher B. Browne's X Development Tools. Luc Devroye's PostScript Page.
    PostScript and GhostScript Page.


    Support Ivtools

    ivtools is supported by Vectaport and SourceForge at VA Linux.

    ivtools vhclmaps ivmkcm

    vectaport_button


    ivtools-doc/index.html.~1.46.~0000644000076500007650000002433311302031476016704 0ustar scottscott00000000000000 ivtools home page

    ivtools home page

    ivtools drawing editors

    [ idraw_icon ] [ drawtool_icon ] [ comdraw_icon ] [ flipbook_icon ] [ graphdraw_icon ]

    COPYRIGHT Change Log README INSTALL MANIFEST

    What's New:
  • Nov. 21st 2009   Ubuntu 9.10 and gcc-4.4 compatibility
  • March 4th, 2008   support for ipl-1.0.1, a development environment for the Invocation Programming Language as described in Karl Fant's book "Computer Science Reconsidered: The Invocation Model of Process Expression"
  • July 9th, 2008   support for ipl-1.0.2 and hopefully add iostreams backward compatibility for gcc-4.3.1
  • Download: ivtools-1.2.8.tgz   (download page)
    Changes: CHANGES-1.2

    Documentation:   ivtools-doc-1.0.4.tgz   online copy

    Support Ivtools

    overview
  • Drawing Editors
  • Interpreters
  • Frameworks
  • Glyph Examples
  • Why try ivtools?
  • more info

  • Documentation
  • Change Logs
  • ivtools FAQ
  • Mailing Lists
  • Wiki Page
  • getting ivtools

  • Download
  • Build on Unix Instructions
  • Build on Windows NT Instructions
  • activities

  • Things To Do with Drawing Editors
  • Network Export/Import
  • Drawing Editors as Web Browser Helper Apps
  • Other Tools that work with ivtools
  • Hierarchical Drawings by URL
  • Large Image Tiling
  • Things To Program
  • ivtools (pronounced eye-vee-tools) is a suite of free X Windows drawing editors for PostScript, TeX, and web graphics production, as well as an embeddable and extendable vector graphic shell

    It is made up of layered collection of free C++ frameworks that vertically augment the mechanisms of Unidraw.

  • an application framework for developing direct manipulation graphical editors (drawing editors).
  • a GUI widget framework built on TeX structured document concepts
  • A command interpreter with network capability.
  • an extra layer of drawing editor application framework
  • a layer for integrating the command interpreter into the drawing editor
  • a layer for multi-frame applications
  • a layer for graph/network applications
  • More information on the history of ivtools source.
    How to configure a web browser   to launch drawing editors as helper apps
    Custom toolbar buttons for drawing LaTeX graphics
    SourceForge services:   Mailing Lists   Project Page   CVS   Bug Tracking/Feature Requests


    ivtools optionally uses the ACE framework for networking and the clippoly library for polygon intersection.
    [ ace_button ] [ clippoly_button ]


    GUI Toolkit and PostScript Resource pages
    Eric Foster-Johnson's Programming X APIs. Brad A. Myers' User Interface Software Tools.
    Li-Cheng (Andy) Tai's GUI Toolkit, Framework Page. C/C++ Users Journal Source Links: XWindows.
    Christopher B. Browne's X Development Tools. Luc Devroye's PostScript Page.
    PostScript and GhostScript Page.


    Support Ivtools

    ivtools is supported by Vectaport and SourceForge at VA Linux.

    ivtools vhclmaps ivmkcm

    vectaport_button


    ivtools-doc/insight.ALPHA.patch0000644000076500007650000000700607374262632017174 0ustar scottscott00000000000000This patch adds make rules to config/rules.def to build on an Alpha with insight support. It then enables them with a patch to config/site.def.ALPHA. Contributed by Bruno Delfosse of Thomson CSF (Bruno.DELFOSSE@fr.airsysatm.thomson-csf.com). This disables the use of the ocnfigure script. *** config/rules.def Thu Jul 30 11:02:36 1998 --- config/rules.def Fri Oct 2 01:42:17 1998 *************** *** 70,80 **** #define MakeWorld(flags) @@\ MakeNormalWorld(flags) @@\ MakeSpecialWorld(.debug,flags) @@\ MakeSpecialWorld(.noshared,flags) #else #define MakeWorld(flags) @@\ MakeNormalWorld(flags) @@\ ! MakeSpecialWorld(.debug,flags) #endif #endif --- 70,82 ---- #define MakeWorld(flags) @@\ MakeNormalWorld(flags) @@\ MakeSpecialWorld(.debug,flags) @@\ + MakeSpecialWorld(.insight,flags) @@\ MakeSpecialWorld(.noshared,flags) #else #define MakeWorld(flags) @@\ MakeNormalWorld(flags) @@\ ! MakeSpecialWorld(.debug,flags) @@\ ! MakeSpecialWorld(.insight,flags) #endif #endif *************** *** 271,276 **** --- 273,279 ---- InstallSubdirs(dirs) @@\ CleanSubdirs(dirs) @@\ SpecialTargets(debug,-DUseDebug) @@\ + SpecialTargets(insight,-DUseInsight) @@\ SpecialTargets(noshared,-DUseNonShared) @@\ IvmkcmTargets($(PACKAGE)) @@\ IvmkcmSubdirs(dirs) *************** *** 282,287 **** --- 285,291 ---- InstallSubdirs(dirs) @@\ CleanSubdirs(dirs) @@\ SpecialTargets(debug,-DUseDebug) @@\ + SpecialTargets(insight,-DUseInsight) @@\ IvmkcmTargets($(PACKAGE)) @@\ IvmkcmSubdirs(dirs) #endif *************** *** 300,305 **** --- 304,310 ---- InstallSubdirs($(ARCH)) @@\ CleanSubdirs($(ARCH)) @@\ SpecialTargets(debug,-DUseDebug) @@\ + SpecialTargets(insight,-DUseInsight) @@\ SpecialTargets(noshared,-DUseNonShared) @@\ IvmkcmTargets($(PACKAGE)) #else *************** *** 310,315 **** --- 315,321 ---- InstallSubdirs($(ARCH)) @@\ CleanSubdirs($(ARCH)) @@\ SpecialTargets(debug,-DUseDebug) @@\ + SpecialTargets(insight,-DUseInsight) @@\ IvmkcmTargets($(PACKAGE)) #endif #endif Index: site.def.ALPHA =================================================================== RCS file: /xtra3/ivtools-0.6/cm/config_ivtools/site.def.ALPHA,v retrieving revision 1.6 diff -c -r1.6 site.def.ALPHA *** config/site.def.ALPHA 1998/10/02 16:09:27 1.6 --- config/site.def.ALPHA 1998/10/02 16:21:23 *************** *** 13,19 **** /* gcc command line with -V for version and -O for optimize */ #undef CCDriver ! #define CCDriver gcc #undef HasDynamicSharedLibraries #define HasDynamicSharedLibraries YES --- 13,24 ---- /* gcc command line with -V for version and -O for optimize */ #undef CCDriver ! /*#define CCDriver gcc */ ! #ifdef UseInsight ! #define CCDriver $(INSURE_LOC)/insight ! #else ! #define CCDriver $(IV_CC)/gcc ! #endif #undef HasDynamicSharedLibraries #define HasDynamicSharedLibraries YES *************** *** 118,124 **** #define LibDir /usr/local/lib #define LibAllDir /usr/local/lib/ivtools ! #if 0 /* -------------- imake way of configuring ------------------ */ --- 123,129 ---- #define LibDir /usr/local/lib #define LibAllDir /usr/local/lib/ivtools ! #if 1 /* -------------- imake way of configuring ------------------ */ Using /xtra3/ivtools-0.6/cm as repository for config_ivtools module. ivtools-doc/install.gif0000644000076500007650000000036207374262632016015 0ustar scottscott00000000000000GIF89a;!7Image generated by Aladdin Ghostscript (device=ppmraw) ,; U挼?}auegV+TGܚ-HH%h?r UJcM*:az Ͼq:Ukgz#zD'Bj'%8g&H5FfvRTu ҉WZX +;;[;ivtools-doc/interviews.html0000644000076500007650000001331707374262632016751 0ustar scottscott00000000000000 InterViews

    InterViews

    InterViews is a native C++ toolkit for X Windows developed by Mark Linton and his team at Stanford University and later Silicon Graphics. The last major release was InterViews 3.1 in 1993, and included the Unidraw drawing editor application framework which was the basis of John Vlissides' thesis work at Stanford. InterViews also has lightweight glyphs with switchable look-and-feel (Apple monochrome, Motif, OpenLook, and SGI Motif). It has been ported to most any Unix which runs X11. Other programmers known to have worked on InterViews include Paul Calder, John Interrante, Steven Tang, and Scott Stanton. Later Mark Linton released an InterViews 3.2a with minor bug fixes and platform-specific changes. That is the source tree we started with for ivtools.

    InterViews Resources
  • InterViews ftp site at Stanford , wide variety of documentation and example source code
  • papers on:
    Unidraw structured graphics lightweight glyphs. Local copies here.
  • InterViews 3.1 class man pages.   Copies at Yggdrasil.
  • InterViews 3.1 Reference Manual (no frames), converted by a ps2html from Yannis Nikopoylos.
  • InterViews auf Deutsch.
  • Silicon Graphics ftp site (for the 3.2a tar file)
  • two more repositories of InterViews information: ftp://ftp.informatik.uni-kiel.de/pub/graphics/X/InterViews ftp://ftp.leo.org/pub/comp/X11/contrib/toolkits/InterViews/
  • chapter on InterViews from SlackWare 3.0
  • Several members of the InterViews team went on to work on Fresco, a separate package that borrows many ideas from InterViews and Unidraw (and has a shared lineage of source, so you could say it is one of the things with InterViews-inside). It unifies glyphs (i.e. menu/button/scrollbar) and graphics programming, and extends them with CORBA to support embeddability (i.e. plugins). Fujitsu Software Labs was a primary developer of Fresco up to the Fresco 96 tar file. Then maintenance/extension/porting was taken over by others on the net, notably Thomas Hiller in Germany who has put out a Fresco97 and a Fresco98 tar file (Fresco98 announcement) (a Fresco advocacy page). Alternate Fresco download site.

    GE Corporate R&D created an add-on layer to Fresco called Parmesan. It is distributed as part of the IUE and Target Jr, two related environments for image understanding. It incorporates optimizations to the baseline Fresco mechanisms for raster display and 3d display, especially under Windows NT. It is the foundation on which the IUE/TargetJr vistool example program is built. It supports a multi-plane, multi-tile-window architecture with special optimizations for refresh of double-buffered graphics in front of a complex background graphic (i.e. an image). These extensions may or may not be incorporated into a future version of Fresco.

    InterViews Related
  • Berlin is an effort to build an X11 replacement that incorporates the ideas of InterViews, Unidraw, and Fresco.
  • a writeup on our experience to date reusing and evolving InterViews, Unidraw, and idraw.
  • a paper by programmers with a different kind of experience
  • book by Ted Lewis, Larry Rosenstein, Wolfgang Pree, Andre Weinand, Erich Gamma, Paul Calder, Glenn Andert, John Vlissides, and Kurt Shumucker, Object Oriented Application Frameworks
  • Applications built on InterViews.

    ivtools_button up to ivtools home page ivtools-doc/iueserv.README.txt0000644000076500007650000000243307374262632017040 0ustar scottscott00000000000000NAME iueserv - experimental server for the IUE SYNOPSIS iueserv [portnum] DESCRIPTION iueserv is an experimental server built on top of the Image Understanding Environment (IUE) class libraries. The command syntax is a semi-colon separated list of commands with arbitrary number of parameters enclosed in parenthesis, with support for optional parameters and keyword arguments, i.e: command1(arg1 arg2 arg3 :key1 val1 :key2 val2); command2(arg1 arg2 arg3 :key1 val1 :key2 val2) The literals and operators of C are all supported except for the syntax of the conditional operator "?:". See the comterp documentation for more details. IMAGE HANDLING COMMANDS img=image(path|img :mem) -- load or convert image val=getpix(img x,y) -- get image pixel value of arbitrary type val=ncols(img) -- get number of columns in image val=nrows(img) -- get number of rows in image str=pixtype(img) -- get type of image pixels export(iueobj) -- export IUE object to host/port IMAGE FILTERING COMMANDS gaussian(img [sigma=3.0]) -- gaussian image filter threshold(img tval1[,tval2,...tvaln]) -- limit pixels at or above a threshold t o that value OTHER COMMANDS iueserv inherits the entire command language of comterp. SEE ALSO comterp WEB PAGES http://www.vectaport.com/ivtools/iueserv.html ivtools-doc/ivapps.html0000644000076500007650000001131507433262401016036 0ustar scottscott00000000000000 Applications built using InterViews and Unidraw

    Applications built using InterViews and Unidraw

    A variety of interesting things have been built with InterViews and Unidraw:

    in English
    free_gctp, a part of EPICS, tools for controlling accelerators,telescopes, detectors and other scientific experiments GIST, a graphical interactive simulation tool GRIP, a conceptual graph editor (uses Unidraw) Genesys, a generic editor system for graphs (uses Unidraw)
    GroupKit1.0, a prototype of a multi-media conferencing system

    revivable?

    Handi, a pen-based diagram editor HI-MASS, hierarchical modeling and simulation of discrete events ivtools, drawing editors and servers (uses Unidraw)
    Mediman, a medical volumetric rendering toolset MiXViews, a digital music sampler program
    multi-grid workbench, for multi-scale linear iterative searching   alternate download for xwb (uses Unidraw) NEFCON, a neuro-fuzzy control system
    Neuron, a nerve simulation environment
    NIST STEP class library, for ISO 10303, a manufacturing information exchange standard
    ObjectProDSP, a digital signal processing framework PDP++, a simulation environment for connectionist modelling and general neural network applications
    SandPit and PlayPen, two generations of an animation researchers testbed Sesame, Software Environment for the Simulation of Adapative Modular systEms (neurocontrol) SICStus Prolog Graphics Manager TAE Plus, a graphical user interface construction environment
    Target Jr, an extensive image understanding framework (uses Unidraw graphics)
    vhclmaps, map viewers and vehicle-state servers (uses Unidraw)
    VRweb, a VRML viewer

    revivable?

    VL, a visual language syntax directed editing framework

    auf Deutsch (German)
    MaM, Modeling and Animation Machine Projekt SARET, software and architecture retrieval.

    idraw filters and other uses


    back to InterViews page
    ivtools-doc/ivfaq-1992.txt0000644000076500007650000002330007374262632016126 0ustar scottscott00000000000000Q1: What is InterViews? (line 24) Q2: What is Unidraw? (line 45) Q3: What is the latest release of InterViews? (line 55) Q4: How does one obtain the InterViews distribution? (line 62) Q5: How much does InterViews cost? (line 74) Q6: What is the state of the documentation on InterViews? (line 83) Q7: Does InterViews support Motif or OpenLook? (line 101) Q8: What platforms does InterViews run on? Unix? Mac? Windows? (line 111) Q9: How portable is InterViews to other platforms? (line 124) Q10: How is InterViews supported? (line 134) Q11: What companies are using InterViews in commercial products? (line 146) Q12: Is Silicon Graphics going to offer InterViews as a product? (line 162) Q13: Is there an InterViews mailing list? (line 174) Q14: What are the future plans for InterViews? (line 187) Q15: Will new versions of InterViews be compatible with old ones? (line 200) Q16: What is the schedule for future InterViews releases? (line 211) Q17: Does InterViews have an interface builder? (line 218) Q18: How much disk space does InterViews need? (line 227) Q19: How long does it take to build InterViews? (line 235) Q20: Does InterViews work with g++? (line 243) -------------------- Q1: What is InterViews? A1: InterViews is a system for building and using interactive software. Written in C++, InterViews provides a set of C++ class libraries with high-level abstractions for implementing interactive programs. InterViews includes specific support for resolution-independent graphics, sophisticated document formatting, and graphical connectivity. InterViews currently runs on top of the X window system. Here is a summary of key InterViews features: Native C++ Glyphs - lightweight, shareable objects Sophisticated layout objects Resolution-independent graphics, printing, overlays Incremental update, double-buffering Graphical editing framework Apps: drawing editor, WYSIWYG document editor, interface builder -------------------- Q2: What is Unidraw? A2: Unidraw is a graphical editing framework that is part of InterViews. The Unidraw class library includes support for 2D structured graphics, graphical connectivity management, dataflow among components, unlimited levels of undo/redo, direct manipulation primitives, multiple views, and traversals for external representations. -------------------- Q3: What is the latest release of InterViews? A3: We are currently distributing version 3.1. The 3.2 release will probably occur in the middle of '93. -------------------- Q4: How does one obtain the InterViews distribution? A4: The distribution is available via anonymous ftp from interviews.stanford.edu (IP address 36.22.0.175). Use login "ftp" and any password. Make sure to use type "binary" and get "pub/3.1.tar.Z". This is a single compressed tar file with the source and documentation. There is a README file in the top directory that explains how to build and install it. -------------------- Q5: How much does InterViews cost? A5: There is no fee or license. InterViews is distributed in the same manner as the MIT X Consortium distributes X. The software is copyrighted, but you are given unrestricted rights in what you can do with it (copy, modify, redistribute, sell, etc.). -------------------- Q6: What is the state of the documentation on InterViews? A6: The current documentation consists of a reference manual for the core classes, a tutorial and manual pages for Unidraw, a user manual for the interface builder, and manual pages for the other applications. We also have been giving tutorials regularly at the MIT X Conference (in January in Boston) and Xhibition (in June in San Jose). The tutorial notes are available via anonymous ftp undef pub/papers. Unidraw users will also find John Vlissides' thesis a valuable addition. The title is "Generalized Graphical Object Editing" and it is available as a Stanford CSL Tech. Report No. CSL-TR-90-427. To obtain a copy, contact Naomi Schulman, schulman@sierra.stanford.edu. -------------------- Q7: Does InterViews support Motif or OpenLook? A7: The current distribution is not fully compliant with any standard GUI. There will be a set of components that can support either Motif or OpenLook in the future, but at this time we cannot estimate exactly when or how this will be available (it might be, for example, part of a commercial version of InterViews). -------------------- Q8: What platforms does InterViews run on? Unix? Mac? Windows? A8: Right now, InterViews runs on any X Unix platform. This includes Silicon Graphics, DEC, HP, Sun, and IBM workstations. I'm not aware of any Unix platforms that InterViews does not run on. Others have investigated porting InterViews to non-X environments. A group in Apple has done a Mac port, but this is not available. A group at Texas Instruments has done a OS/2-PM port, for more information contact Dan Stenger, stenger@csc.ti.com. -------------------- Q9: How portable is InterViews to other platforms? A9: There are two aspects to porting InterViews: the C++ environment and the target window/operating system. The major headache across C++ environments is system header files and ANSI/POSIX prototypes. The window system dependent is isolated in a separate directory in the InterViews source. -------------------- Q10: How is InterViews supported? A10: InterViews is a research project with participation from both Stanford and Silicon Graphics. We (the researchers) fix bugs, generate new releases, write documentation, give tutorials, and try to answer questions as best as we can. Quest Systems, a small company in Santa Clara, now offers support for InterViews (their product is called ObjectViews). HP has announced a product based on InterViews called InterViews Plus. -------------------- Q11: What companies are using InterViews in commercial products? A11: We don't keep track of all the uses, but here are some of them: Fujitsu America (telecommunications) NASA/Century Computing (TAE+ interactive design tools) ProCASE (CASE tools) Teknekron Communication Systems (telecommunications) Canon Information Systems Research Australia Cisco Systems (network management) Many other companies are using InterViews for prototyping, advanced development, and research projects. -------------------- Q12: Is Silicon Graphics going to offer InterViews as a product? A12: There is no commitment to a product at this time. Silicon Graphics is continuing to support InterViews as a research project and as a working project within the MIT X Consortium. Silicon Graphics has a strong interest in a next generation, C++ toolkit that is a widely-available standard. There are no plans to change the policy of making InterViews freely available like X (unrestricted rights). -------------------- Q13: Is there an InterViews mailing list? A13: Yes, though we now have a netnews group "comp.windows.interviews" that we prefer people to use. The mailing list is dual-ported with the newsgroup; the alias is "interviews@interviews.stanford.edu". An archive of messages is periodically made available via ftp in pub/mailing.Z. Please send mailing list drop/add requests to interviews-requests. Please send bug reports to interviews-bugs. -------------------- Q14: What are the future plans for InterViews? A14: Briefly, the next technical push is to make high-level document components so that the functionality of doc (the document editor) is available to all applications. We also want to apply the composition ideas we have used for geometry to the time domain, making it easy to mix audio, video, and animation objects. Strategically, we will continue to lead the X Consortium Fresco (formerly known as XC++) working group to try to define a standard C++ binding for X. -------------------- Q15: Will new versions of InterViews be compatible with old ones? A15: Our philosophy is not to break something unless we have to. We will try to keep new versions compatible with old ones. The only exceptions occur when preserving compatibility makes the systems much more complicated and likely to be more buggy. In the past, the only time this happened was going from 2.6 to 3.0 where certain features (such as TimerEvents) were better removed. -------------------- Q16: What is the schedule for future InterViews releases? A16: The schedule and feature list for 3.2 has not yet been determined. We will make more information available as it becomes firmer. -------------------- Q17: Does InterViews have an interface builder? A17: Yes, it is called ibuild. Because of the concurrent development of ibuild and glyphs in 3.0, ibuild currently only generates code that uses interactors (not glyphs). Generation of glyph code will be added in the future. -------------------- Q18: How much disk space does InterViews need? A18: The uncompressed source is about 8Mb. The installed binaries are about 18Mb on a MIPS system without shared libraries. Building it probably takes about 30Mb (not counting the install area). -------------------- Q19: How long does it take to build InterViews? A19: This depends on the platform, of course, but on an Iris Indigo (33 MHz MIPS R3000) it takes about 45 minutes for a complete build and install from scratch. -------------------- Q20: Does InterViews work with g++? A20: For details about how to use g++ with InterViews, please see Mike Stump's patch kit in pub/contrib/g++ on interviews.stanford.edu. For further information please contact Mike Stump, mrs@cygnus.com. ivtools-doc/ivgetjpg.bash0000644000076500007650000000074407374262632016342 0ustar scottscott00000000000000#!/bin/bash # ** requires w3c from w3c.org and djpeg from jpeg.org as well ** # # ivgetjpeg # # bash script to download a jpeg file and import to a local drawing editor # # Parameters: # $1 URL # $2 import port on drawing editor url=$1 importport=$2 echo import $url to port $importport tempfile=`tmpnam` cmapfile=`tmpnam` stdcmapppm >$cmapfile w3c $url >$tempfile; djpeg -map $cmapfile -dither fs -pnm $tempfile | comterp telcat localhost $importport rm $tempfile $cmapfile ivtools-doc/ivmaps-logo-square.gif0000644000076500007650000000102307374262632020075 0ustar scottscott00000000000000GIF87a@@ڹ,@@޼H߀ bfe .sq:,FpuI~AcX2Py;V\gHYi1{6`'ϞϨxTe׳8xCXwih(yGiDIvYtWZW򗪚I4[GU 87K'i, =܌ ]=$zkq,MVK^X&> ND;~ O{jԆhH[Mv ) LFq ص\g<|%J4%\i2wǪI65b'HMEѕ8lpWmZj=Pb#֬ZZۮe t)Z݊ZBɂ:9'[W #*[9͜;{ :ѤK>:լ[sشGorȷ ~;k0ܷƅ Ї|vȥ'}8K ;ivtools-doc/ivtools-0.4-CHANGES.txt0000644000076500007650000004226007374262632017470 0ustar scottscott00000000000000This is a list of patches applied to ivtools over the course of ivtools-0.4 development, which ran from approximately September 1994 until October 1995. ivtools originated with a 0.3 version designation in January 1994, since this was approximately the third time our team had started from scratch building a value-added library version of idraw. From January 1994 until September 1994 the structure of the libraries of ivtools was determined, and the first versions of OverlayUnidraw, FrameUnidraw, and GraphUnidraw were created, along with their sample programs: idraw, ov-idraw (now drawtool), frame-idraw (now flipbook), and graph-idraw (now graphdraw). fix-01a adds cmtag Imakefile target fix-01b NameView and NameState classes migrated from maptools fix-01c put OverlayUnidraw comp classes back in as placeholders fix-01d fix pathnames in iv-3.1 patches fix-01e fix up graph-idraw fix-02a fixes NodeView::Update method and upgrades Unidraw.inc.patch fix-02b OverlayKit now builds Glyph menus fix-02c update TextGraphic in NodeView::Update with SetOriginal fix-02d finish changeover to OverlayKit* from OverlayKit& fix-02e adds glyph based toolbars to ov-idraw and graph-idraw fix-02f add Hide and Desensitize capability to Graphic fix-02g fix cmchkin Makefile target fix-02h fix edge/node sizes, remove extra interactors fix-02i add keymap to toolbar fix-02j move text-editor classes to IVGlyph, remove toolbar fix-02k skeleton FrameUnidraw and frame-idraw fix-02l migrate more methods from OverlayEditor to OverlayKit fix-02m clean up OverlayKit/OverlayEditor fix-02n add Hide/Show and Desensitize/Sensitize methods to OverlayView fix-02o add initial frame-oriented structures fix-02p wrapping up for patch 0.2.4 fix-03a FrameUnidraw and frame-idraw fix-03b create initial ScriptView object fix-03c add FrameIdrawComp and FrameIdrawView fix-03d add ScriptView class to OverlayUnidraw fix-03e restructured FrameUnidraw fix-03f GraphEditor constructors changed to expect GraphKit fix-03g fix copy/paste between frames, wb titlebar fix-03h add current/total frames stateviews, create&move command fix-03i fix wm titlebars fix-03j disfunctional FrameUngroupCmd fix-03k fix node delete, edge move fix-03l fix frame-idraw crash, add keycodes to frame cmds fix-03m work struct command for FrameUnidraw fix-03n fix PostScript save of *IdrawComp fix-03o fixed dup cmd and updates menu names fix-03p add prelabeled node tool fix-03q fix new, open of a graph-idraw component when previous selection existed fix-03r ScriptView, cm for special directories, and OvGroupCmd fix-03s last minor fix for patch #3 fix-04a fix some problems with TextEditor glyph fix-04b better text-editor layout, add text get/set methods fix-04c add multiple toolbars to graph-idraw fix-04d add complete graphic hierarchies for OverlayComp, ScriptView, and OvPostScriptView fix-04e declare OverlayView prior to OverlayViewer class definition fix-04f fix graph-idraw cut cmd, labeled node create fix-04g getting ready for patch-0.4.4 fix-05a fix alter of rectangle comp fix-05b add hierarchical menus example to OverlayKit fix-05c begin to support modifiable radiobutton groups fix-05d add non-working radiogroup example fix-05e better RadioEnumEditor, radiogroup example fix-05f irix-happy patch fix-05f fix-05h fix NodeView::Update and bring src/include into imake system fix-05g make radiogroup work by recreating layout glyphs fix-05i fix Save command for OverlayUnidraw and related libraries/programs fix-05j add new bounded value table state, glyph, example program fix-05k last minor fix for #5 fix-06a layout improvements to the BoundedValueTableEditor fix-06b add ParamList object for reading ScriptView's fix-06c fix-06c sketch of framescripts fix-06d more work on OverlayComp methods associated with ParamList fix-06e modify ObsTextEditor glyph fix-06f get ready for major patch 6 fix-07a fix-07a: paramlist and scriptview work in progress fix-07b fix problems in TopoFace::insert_ordered fix-07c fix-07c reads in OverlayIdrawComp grid fix-07d remove another bug from TopoFace::insert_ordered fix-07e fix handle zoom in OverlayView's fix-07f fix-07f, again fix-07g fix-07g, ellipse reading in fix-07h fix various frame-idraw commands fix-07i fix-07i fix-07j fix problem in OverlayCatalog::Retrieve fix-07k abandonment of TopoFace edge sorting mechanism fix-07l add new FieldEditor subclass that accepts on every key fix-07m another improvement to TopoFace::load_points fix-07n chop up EivTextEditor for easier reuse fix-07o first cut at annotate tool fix-07p fix-07p pictures, splines and polygons fix-07q fix-07q add texteditor to frame-idraw fix-07r changes to ParamStruct and ParamList fix-07s fix-07s, annotations and OvTextComp fix-07t extend table to observe each value within it fix-07u fix-07u fix-07v remove focus from frame-idraw texteditor fix-07w fix-07w FrameUnidraw, frame-unidraw, OverlayUnidraw fix-07x everything else fix-08b fix-08b text migration fix-08a fix-08a fix-08c fix grid spacing cmd fix-08d fixes warranted by isat work fix-08e last patch for #8 fix-09a make OvDeleteCmd non-reversible for real fix-09b fix-09b annotation and pattern fix-09c fix-09c add first/last frame cmds, fix graph-idraw save/restore/print fix-09d fix-09d a wrap fix-10a fix-10a fix printing of graph-idraw arrowlines fix-10c fix-10c a wrap fix-10b fix-10b fillbg fix-11a fix-11a fix graph-idraw save/restore fix-11b fix disappearing glyph bug fix-11c fix NameView/TextObserver glyphs, update to linux gcc2.5.8 fix-11d fix select-all and select-by-rectangle of desensitized graphics fix-11e fix-11e extra char in date-time string fix-11f workaround for R6 makedepend fix-11g more work on R6 makedepend config file happiness fix-11h still trying to get those R6 makedepend patches installed correctly fix-11i OvPSPicture generates idraw format PostScript for (almost) any Picture graphic fix-11j fix-11j script save/restore graph-idraw fix-11k fix for iv-3.1 nested menu bug fix-11l make install, X11R6 XFillRectangle workaround, README editing fix-11m new FrameUnidraw Print command creates multi-page PostScript document fix-11n patches/iv-3.1-irix* cleanup fix-11o ScriptRaster can now save/restore tiff files by name fix-11p graph-idraw save/restore nodecomp tuning fix-11q Add new constructor to NodeComp with no arguments fix-11r filename arguments, ParamList callback functions, better frame loading fix-11s UngroupCmd fix for frame-idraw fix-11t Minor fix to ivtools-0.4.11r fix-11u adjust AdjustForZoom, add more ParamList callbacks, soften impact of MoveFrameCmd fix-11v adds DeleteFrameCmd to FrameUunidraw fix-11w adjust OverlayViewer and edit README's fix-11x adds PageCmd, beefs up OverlayPage, tunes DeleteFrameCmd fix-11y fix problem with OvPSPicture erroneously deleting graphics fix-11z fix OvPSPicture's handling of sub-graphic fonts fix-11aa last fix for patch 11 fix-12a new OvTextFileComp, improved OvRasterComp, ParamList::parse_string fix-12b make PGM work for real fix-12c frame number display and Goto First Frame changes fix-12d initialize Number of Frames fix-12e add PBM and gzip support to ImportGraphic, finalize ScriptStencil, and make frame-idraw start on 1 fix-12f add a new "Export Graphic" command fix-12g Bitmap constructor fix-12h in-memory deep-copy for OverlayComps::Copy fix-12i more bug hunting... fix-12j frame-idraw grouping, current frame display fix-12k restore graph connnectivity during Undo Delete fix-12l grid spacing removed from *IdrawComp and other fixes/cleanups fix-12m fix memory leak in GraphDeleteCmd fix-12n new Unidraw patch set fix-12o one more bug fix for iv-3.1 fix-12p confirm dialog glyph fix-12q *NewViewCmd, fix a few open problems with frame-idraw, add example script file fix-12r adds keystroke handling to GConfirmDialog fix-13a :linewidth added to textfile fix-13b add sub-frames to FrameComp and fix popen/pclose pairing fix-13c make OvPostScriptView's Viewer sensitive fix-13d patch that makes vpf-unidraw "Export Graphic" work fix-13e better looking toolbar for SGI X11 setup fix-13f implement Chin-Fu's suggestions, etc.. fix-13g use -> in fix-13e fix-13h fix the export graphic command fix-13i make postscript output work for maptools fix-13j handle off-size pbm files fix-13k add insert_string to EivTextEditor fix-13l make strchooser embedable fix-13m clean up after fix-13l fix-13n support for color raster postscript fix-13o add pure glyph field editor fix-13p migrate to new class names for views and comps fix-13q works on RasterPS, ArrowMultiLinePS, ArrowMultiLineScript, and ArrowSplineScript fix-13r gcc-2.6.1 changes to GFieldEditor fix-13s reinstate #define SCRIPT_VIEW and create FrameFile* classes fix-13t SetCommand and GetCommand added to OverlayPS, and OverlayScript set to inherit fix-13u addition to fix-13t fix-13v localize use of OverlayPS::SetCommand to Create* methods fix-13w make color raster postscript work fix-13x fix problem with OverlayScript::Transformation created by last fix fix-13y glyph-based PrintChooser for new OvPrintCmd fix-13z PrintChooser check boxes fix-13aa precise page command fix-13ab add cursor on/off to GFieldEditor fix-13ac framefile fleshing out fix-13ad removes the extra frames in framefile fix-13ae remove -Dprivate=protected to compile on gcc 2.6.4 fix-13af a few more diffs for gcc-2.6.4 fix-13ag fix :pattern problem fix-13ah update Unidraw.inc.patch after fix-13ae fix-13ai finalize PrintChooser glyph work fix-13aj fix graphkit toolbuttons fix-13ak separate out base class from PrintChooser (OpenFileChooser) fix-13al fixes for gcc-2.6.4 (?) fix-13am make printchooser compile on gcc-2.6.4 fix-13an glyph-based export file chooser fix-13ao compile on gcc-2.6.4, bigger radiobuttons fix-13ap more work on choosers fix-13aq adds GAcknowledgeDialog fix-13ar more chooser work fix-13as creates ParamList::parse_filename and uses ParamList::output_text fix-13at relative-pathname mechanism for script files and format-specific export commands fix-13au tying up loose-ends on relative-pathname mechanism fix-13av remove scrollfield example program fix-13aw fix bug in NameView glyph fix-13ax import chooser with option to load graphics at 0,0 fix-13ay last patch for 13? fix-13az last minor patch for patch-0.4.13 fix-14a hide/show commands fix-14b gcc-2.6.3 happy fix-14c fix hide problem of EllipseOvComp fix-14d chain viewers together for panning fix-14e add chained zooming fix-14f handle arbitrary length annotations and add UnchainViewCmd fix-14g fix-14h make fixed-location work at other than 1x fix-14i add glyphterp example program to ivtools fix-14j really add glyphterp example program fix-14k fix position of raster display when left edge is off screen fix-14l fix update of mag display fix-14m postpone reading pixel data until raster is on screen and add ovfile mechanism fix-14n ovfile and chained pan/zoom work fix-14o fix bug in unchaining views fix-14p fix another bug in chain viewing stuff fix-14q fix Linux magic-byte problem (?) and work on comterp linefeeds fix-14r more robust locating of error file for comterp fix-14s fix parser/scanner problem with "3+.4" fix-14t make text-editor default focus for glyphterp and add "()" button fix-14u remove -Dprivate=protected in a better way fix-14v div-by-zero exception added to comterp and glyphterp fix-14w adds MeterObservor, virtualizes IdrawEditor::InitStateVars() fix-14x add :gs option and reimplement ovfile object fix-14y add "incomplete expression" and "unexpected left paren" exceptions to comterp fix-14z check for ovfile loops and add "-" filename support fix-14aa rework config files to make a site.def fix-14ab changes for gcc-2.7.0 compilation fix-14ac fix a few stray bugs and edit the README fix-14ad generalize BoundedValue with format string fix-14ae more upgrading to gcc-2.7.0, etc.. fix-14af upgrade to gcc-2.7.1 for SUN4 fix-14ag adds meter and fixes ExtraCCLdLibs fix-14ah default iv-3.1-SUN4.patch to gcc-2.7.1 fix-14ai more meter work fix-14aj remove -lmalloc from gcc.def and add -xc++ to glyphterp/Imakefile fix-14ak restore scrollfield example program fix-14al extend scrollfield and add OverlaySelection::ViewsWithin fix-14am new scrollfield and OverlayFileComp::GetFileName problem fixed fix-14an more diffs for fix-14am fix-14ao restore framefile to old style fix-14ap default params only in header file fix-14aq scrollfield focus work and fix unloaded raster printing fix-14ar fix input handling for frame around field editors in scrollfield fix-14as upgrade bdvtable to use GFieldEditor fix-14at revert bdvtable/Imakefile, InstallScriptAs fix-14au new improved frame-idraw and support for compressed script files fix-14av site.def.SGI up to gcc-2.7.2 fix-14aw fix OpenFileChooser bug and add in WishList's fix-14ax add :sub (image) capability to PPM and PGM rasters fix-14ay small layout fix for frame-idraw fix-14az massages *Script::Definition(ostream& out) fix-14aaa adds a font and fgcolor to a TextfileComp's graphic fix-14bb fixes a bug in EivTextBuffer constructor fix-14bc fixes an initial display bug in BoundedValueEditor fix-14bd ParamList::add_param_indirect() fix-14be sets the bdvalue when a GFieldEditor is focused out fix-14bf add ESC and BS support to GFieldEditor fix-14bg fixes a bug in ovraster and ovstencil fix-14bh fix x11r6fillrect.patch, change sample site.def.LINUX to gcc-2.7.2 fix-14bi optimize graphic point lists and fix other bugs fix-14bj keep GFieldEditor string left justified fix-14bk position cursor where mouse clicks in a GFieldEditor fix-14bl fix ref problem on spline graphic's multilineobj (uni-idraw crash) fix-14bm add "invisible" selection mechanism to GFieldEditor fix-14bn again, add a new menu enum editing form fix-14bo fixes a small bug in ArrowLineScript::ReadOriginal fix-14bp white-on-gray selection highlighting in GFieldEditor fix-14bq changes to MenuEnumEditor fix-14br graph-idraw cleaning up fix-14bs point list compaction, GFieldEditor fixes, separate observables fix-14bt add pointer and accept() to observables fix-14bu add object type to comterp fix-14bv add object type ref and val methods to comterp, fix warning fix-14bw add comtest and string value to ComValue fix-14bx add no-param constructor to ComValue fix-14by fix missing unhighlight bug fix-14bz properly initialize a ComValue on a symbol id fix-14ca fix string ComValue fix-14cb new config files fix-14cc fixes to graph-idraw edge moving fix-14cd temporarily fix table size in ComTerp fix-14ce add equality system for OverlayComps fix-14cf add pic compaction to frame-idraw fix-14cg ComUnidraw and com-idraw fix-14ch add row add/delete to scrollfield fix-14ci better XOR rubberbanding in front of gray-level imagery fix-14cj swag at fixing viewport in scrollable example program fix-14ck fix-14cl fix boolean editor glyphs to reflect initial value fix-14cm shared libraries for SunOS fix-14cn shared libraries for everyone? fix-14co allow for redefinition of shared library building command fix-14cp make shared libraries work on linux fix-14cq gets shared libs working for SGI fix-14cr virtualize start and stop buffering fix-14cs enables raster (and stencil) scripts without :transform fix-14ct drops the auto-centering of raster and stencil scripts patch-02n convert camera tool to rpc fix-14cu adds a mouse documentation line fix-14cv add new Attribute library fix-14cw migrate ParamList, set up AttributeList, add one to OverlayComp fix-14cx further work on AttributeList, add AttributeListEditor fix-14cy fixes a few memory leaks found with Purify fix-14cz alter mouse-doc lines and fix const problem in Attribute library fix-14da create standalone AttributeValue fix-14db drop LexScan into Attribute library fix-14dc link ComUtil library under Attribute library fix-14dd add Attribute tool and attribute editing dialog fix-14de drops in a skeleton for attribute save/restore fix-14df adds a get_next_attr method to LexScan fix-14dg work on Attribute and AttributeValue memory mgmt fix-14dh further work on attribute editing fix-14di gets a simple Attribute save/restore working fix-14dj more work on Attribute Edit/Save/Restore fix-14dk use EivTextEditor to display attribute list fix-14dl fix AttributeList memory problems fix-14dm move attredit to AttrGlyph library fix-14dn get scrollfield running (but not working) fix-14do fix-14do (from Brian) fix-14dp fix-14dp (from Brian) fix-14dq fixes some attribute problems fix-14dr final minor patch for major patch 14 fix-15a add OTHER to config/params.def fix-15b add polygon clipping commands fix-15c fix-15d fix configs for clippoly fix-15e fix creation of polygon for clippoly fix-15f make clipping work with edited polygons fix-15g command line switches for colormap mgmt fix-15h remove -lg++, move -lstdc++ and -lm to the end fix-15i fix crash when derived programs don't define color/gray attributes fix-15j enables export of color rasters to scriptfile format fix-15k last patch for ivtools-0.4.15 fix-16a extends GraphUnidraw to import a graph-idraw document fix-16b gets graph-idraw copy/paste/dup cmds working again fix-16c shows unconnected subgraph edges fix-16d fix bug in MultiLineObj cacheing fix-16e enforces graph-idraw edge connection directionality fix-16f fix save/restore and export of raster graphics fix-16g gets Undo working for graphnode connections fix-16h add optional config file support for Fresco fix-16i last patch for ivtools-0.4.16 fix-17a gets graph copy/paste working fix-17b gets graph cut working fix-17c gets graph dup working fix-17d adds a graph-idraw import-by-filename or -flat mechanism fix-17e fix graph import, wrap up ivtools-0.4.17 ivtools-doc/ivtools-0.5-CHANGES.txt0000644000076500007650000001611707374262632017473 0ustar scottscott00000000000000December 17th 1997 ivtools-0.5.10 Drawing Editor Changes * changed idraw to snap-to-grid when importing with gravity on, and drawtool to snap-to-grid when importing with centering and gravity on. * changed iclass to work better with ACE header files. * fixed bug in relative pathnames (of a raster or stencil) when document is saved to an alternate directory by forcing them to absolute pathnames. * tested and fixed comdraw's reading commands from stdin. Now it works for redirected stdin as well. Interpreter Changes * added an exit() command to comterp and comdraw. * added default values to ComFunc::stack_arg (to return when argument not found) and ComFunc::stack_key (to return when keyword is found with no argument). Library Changes * added support for arbitrary numeric types to GrayRaster (char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, float, double). * expanded OverlayRaster's support for the GrayRaster API by adding dummy methods as required. * changed Painter::x_or back to Painter::xor to get Target Jr 3.0beta compiling on top of ivtools. * evolved the fixed size graphics mechanism to have a scaleability factor. Hardwired to power of 2 zoom at present. * created static void GAcknowledgeDialog::post(Window*,const char*) (useful for posting simple acknowledge dialog boxes) * added a static AttributeValue::type_size(ValueType) method as well as member AttributeValue::type_size() method * added static and member AttributeValue::is_char, is_short, is_int, is_long, is_float, and is_double methods (treats unsigned same as signed) * added an OverlayViewer::SetMagnification which calls AdjustForZoom. Configuration Changes * adopted include-file install targets and extra __linux__ #ifdef'ed code (IV-X11/xwindow.c, Dispatch/netinet_in.h, Dispatch/rpcregistery.c) from Guenter Geiger's ivtools_0.5-1.diffs (the Debian 2.0 package diff file). * rearranged the build order in src/Imakefile to contruct binaries as soon as required libraries exist. * removed specification of GccIncludeDir from config/gcc.def, because this is no longer needed now that we do makedepend with gcc. October 31st 1997 ivtools-0.5.9 * adds ACE import to flipbook multi-frame editor. * new flipbook frame creation commands: "copy forward" and "copy backward" (CopyMoveFrameCmd). * new flipbook frame viewing commands: "show previous frame" and "hide previous frame" (ShowOtherFrameCmd). * changes the MoveFrameCmd's to use the deferring Unidraw::Update instead of the immediate FrameEditor::Update, so that MacroCmd's that contain a MoveFrameCmd do all the work before the a) cursor is reset, and b) the viewer is moved to the new frame. * fixes problem with symbolic links generated by "make install" when InstallRelative is enabled. * adds dialog boxes to inform the user when an import fails or the colormap allocation fails. * add OverlaySelectTool that ignores single-clicks on graphic views that match a list of types. Useful when selecting graphics in front of rasters and stencils. Not used by default. * make text graphics painted at 1x ignore a stipple pattern in the graphic context just like they do at 2x and .5x. October 1st 1997 ivtools-0.5.8 * add "telcat" mode to comterp test program, allowing for the remote cat'ing of files to drawtool, etc., i.e. "comterp telcat localhost 20001 test.ppm" would connect to a drawtool with import service at port 20001 and transmit a PPM image file. * add these methods to OverlayViewer to simplify translation between coordinate systems: ScreenToDrawing, DrawingToScreen. * rename OvGrayImage to GrayRaster, and set up a static RasterOvComp::UseGrayRaster() to enable/disable its use (GrayRaster is an OverlayRaster with in-memory copy of original pixel values). * generalize PBM/PGM/PPM header reading to allow for line-feeds between ncols and nrows. * modify MoveFrameCmd to optionally disallow moving to the background frame. * remove an unnecessary call to FrameEditor::UpdateFrame from within FrameEditor::Update (that should only be done when the current frame changes, not just when anything changes within the current frame). * modify TopoFace::npts() to only count the points in the first face (ignoring islands). This fixes a bug in ivmaps dlgviewer. * remove static linking conflict of StringList object (one has been renamed CopyStringList). * add a slightly modified ivmkmf to the script directory * modify iclass to work on the vtk-2.0 source tree September 15th 1997 ivtools-0.5.7 * various bugs were isolated and removed from the command interpreter server mechanism embedded in ivtools, notably infinite loops caused by premature disconnects of remote clients. * floating point geometric objects were expanded to be able to render themselves to a bitmap without the use of an X server. * other attempts were made to isolate any X server dependencies in the server framework -- currently one remains, a need to store the patterns of a graphic state on the X server -- to be removed by the 0.6 release. July 24th 1997 ivtools-0.5.6 * the import service mechanism was further expanded in ivtools, so any remote program can ship drawings or images to a viewer by establishing a connection over the network. * commands to desensitize graphics in a viewer were added to ivtools (to complement existing commands for hiding graphics in a viewer, fixing the size or location of graphics in a viewer). Although a long standing capability of the software, this was the first time it was exposed to the user with a sample command. * the save/restore spatial object transcription mechanism of ivtools was expanded to include support for inline bitmaps. It was also reorganized to be more object-oriented. * an initial attempt was made to blend in the graph-node editing mechanisms of the GraphUnidraw class library with the command interpreter mechanisms of the ComUnidraw class library. July 1st 1997 ivtools-0.5.5 * ivtools was expanded to include support for importing by piping from a command line filter, useful for displaying the results of various idraw compatible renderers (see http://www.vectaport.com/ivtools/idraw.html for examples). Here is a partial list of patches applied to ivtools-0.5 prior to ivtools-0.5.5: patch-0.5.1a fix non-shared library usage and -tile bug patch-0.5.1b more config fixes and a new INSTALL file patch-0.5.1c first stab at ACE integration patch-0.5.1d sample integration of ACE into drawtool patch-0.5.1l separate vtk stuff from 2d maps and add ACE msg patch-0.5.1e migrate ACE usage to comdraw patch-0.5.1f add a -port argument to comdraw patch-0.5.1g ACE into comterp into Unidraw patch-0.5.1i more diffs to go with previous patch patch-0.5.1h work event handling and graphic state propogation patch-0.5.1j improve config/params.def for multiple add-in libraries patch-0.5.1k add import service to comdraw server patch-0.5.2a fix Imakefile problems patch-0.5.2b clippoly in float coords, fix comdraw Imakefile patch-0.5.2c move fgeomobjs and float cliplinepoly ivtools-doc/ivtools-0.5-COPYRIGHT.txt0000644000076500007650000000274707374262632017777 0ustar scottscott00000000000000/* * Copyright (c) 1997 Vectaport Inc., R.B. Kissh and Associates * Copyright (c) 1996 Vectaport Inc., R.B. Kissh and Associates, Cider Press * Copyright (c) 1994-1995 Vectaport Inc., Cartoactive Systems, Cider Press * Copyright (c) 1991 Silicon Graphics, Inc. * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * related documentation and data files for any purpose is hereby granted * without fee, provided that the above copyright notice appear in all copies * and that both that copyright notice and this permission notice appear in * supporting documentation, and that the names of the copyright holders not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holders * make no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ ivtools-doc/ivtools-0.5-INSTALL.txt0000644000076500007650000001140707374262632017526 0ustar scottscott00000000000000 INSTALL for ivtools-0.5 Instructions for building ivtools-0.5.10 from source: 0. Compilation Environment Tools you will need before you can build: 0.a. a Unix machine. We know it has been built on Linux, SunOS, Solaris, and Irix. We've incorporated diffs to build on HPUX 9.05. It should build on most any Unix machine with similar config changes. 0.b. The gcc compiler. Recently we've been building and testing with gcc-2.7.2. Both gcc-2.5.8 and gcc-2.6.3 will probably still work. You will also need an equivalent copy of libg++. The libg++ version numbers stay roughly in synch with the compiler version numbers. If you have gcc-2.5.8 you'd want libg++-2.5.*, if you have gcc-2.6.3 you'd want libg++-2.6.3, etc.. 0.c. An installed copy of X11R4, X11R5, or X11R6 as distributed by MIT, or equivalent (i.e., XFree86 for Linux, etc.) If you use a vendor's X11 product, the product should be based on R4 or later and the product should include imake and the config files. (If you're on a Sun you probably want to avoid the OpenWindows versions.) If imake is not in the same place as the other X11 binaries are or anywhere else on your system, you can get the sources for imake from the X11R5 or X11R6 distribution at several public ftp archives (such as ftp.x.org). 0.d. You also might want to acquire and build clippoly, a LGPLed library for polygon clipping from: http://www.ph.tn.tudelft.nl/People/klamer/clippoly_entry.html 1. Creating and/or editing config/site.def.$CPU: 1.a. Set your CPU environment variable to one of the supported types (grep config/arch.def for ArchitectureName to get a complete list or try "make CPU" from the top directory of ivtools). Use "setenv CPU" for csh or "export CPU=" for sh/bash. LINUX, SUN4, and SGI are known to work. 1.b. Either edit the site.def.$CPU file if it exists, or determine which existing site.def.* is closest to your needs and copy it into site.def.$CPU. ***Edit the parameters in this file as needed for your facility.*** Especially verify that any pathname definitions are correct for your environment. Set InstallRelative to YES if you want installation done within the ivtools-0.5 directory, or NO if you want them installed in the BinDir, LibDir, and LibDataDir as described in the installation section below. If you're building on Solaris you can use the SUN4 config file instead of a SUN5 one (config/site.def.SUN4). If you have built the clippoly library uncomment and adjust the definition of ClipPolyDir. This will cause commands that exercise clippoly to be built into ivtools. 1.c. You may also want to take a look at local.def and gcc.def, but you should be able to successfully build ivtools by only changing parameters in your copy of site.def.$CPU. The top of local.def defines macro preprocessor constants that are later used to initialize make variables. The bottom of local.def builds up pathnames to refer to the libraries and important directories of this package. 2. Compiling ivtools: 2.a. cd to the ivtools-0.5/ directory. 2.b. Compile it with a "make World" command. It needs the following variable definitions: XCONFIGDIR The location of your X11 config files. Sample Linux command line: make World XCONFIGDIR=/usr/X11R6/lib/X11/config Sample SunOS command line: make World XCONFIGDIR=/usr/local/lib/X11/config Sample Irix command line: make World XCONFIGDIR=/usr/lib/X11/config This command generates Makefiles hierarchically and builds everything. 3. Testing: Each directory under ivtools-0.5/src that begins in lower case (except for "include" and "scripts") contains executables that exercise some particular functionality. "cd" to each particular directory, type "$CPU/a.out" and see what happens. Most of the directories have READMEs that go into further detail on how to use the example programs. ivtools-0.5/src/glyphs contains sub-directories of glyph example programs. 4. Installation: "make install" is supported for all the libraries and a subset of the more utilitarian example programs: the four original InterViews programs (idraw, iclass, idemo, and dclock), the four idraw derived programs (drawtool, netdraw, flipbook, and comdraw) and the two comterp programs (comterp and glyphterp). When InstallRelative is NO the binaries are installed as stripped executables in BinDir, the libraries are installed in LibDir, and the run-time X resource and config files are installed in LibAllDir. When InstallRelative is YES (the default in config/site.def.$CPU), the binaries are installed in ivtools-0.5/bin/$CPU, the libraries are installed in ivtools-0.5/lib/$CPU, and the run-time X resource and config files are installed in ivtools-0.5/lib/ivtools. note: idemo, comterp, glyphterp, and comdraw have config files that must be installed (either relative or non-relative) for the program to find them at runtime. ivtools-doc/ivtools-0.5-MANIFEST.txt0000644000076500007650000014101507374262632017625 0ustar scottscott00000000000000ivtools-0.5/CHANGES ivtools-0.5/COPYRIGHT ivtools-0.5/INSTALL ivtools-0.5/Imakefile ivtools-0.5/MANIFEST ivtools-0.5/Makefile ivtools-0.5/README ivtools-0.5/VERSION ivtools-0.5/config/Imakefile ivtools-0.5/config/InterViews/Imakefile ivtools-0.5/config/InterViews/Makefile ivtools-0.5/config/InterViews/TIFF.def ivtools-0.5/config/InterViews/cxx.def ivtools-0.5/config/InterViews/iv-DGUX.cf ivtools-0.5/config/InterViews/iv-Mips.cf ivtools-0.5/config/InterViews/iv-aix.cf ivtools-0.5/config/InterViews/iv-alpha.cf ivtools-0.5/config/InterViews/iv-apollo.cf ivtools-0.5/config/InterViews/iv-att.cf ivtools-0.5/config/InterViews/iv-bsd.cf ivtools-0.5/config/InterViews/iv-convex.cf ivtools-0.5/config/InterViews/iv-cray.cf ivtools-0.5/config/InterViews/iv-generic.cf ivtools-0.5/config/InterViews/iv-hp.cf ivtools-0.5/config/InterViews/iv-ibm.cf ivtools-0.5/config/InterViews/iv-linux.cf ivtools-0.5/config/InterViews/iv-luna.cf ivtools-0.5/config/InterViews/iv-m4330.cf ivtools-0.5/config/InterViews/iv-macII.cf ivtools-0.5/config/InterViews/iv-moto.cf ivtools-0.5/config/InterViews/iv-pegasus.cf ivtools-0.5/config/InterViews/iv-sgi.cf ivtools-0.5/config/InterViews/iv-sony.cf ivtools-0.5/config/InterViews/iv-stellar.cf ivtools-0.5/config/InterViews/iv-stratus.cf ivtools-0.5/config/InterViews/iv-sun.cf ivtools-0.5/config/InterViews/iv-ultrix.cf ivtools-0.5/config/InterViews/iv-x386.cf ivtools-0.5/config/InterViews/xparams.cf ivtools-0.5/config/Makefile ivtools-0.5/config/README.ivmkcm ivtools-0.5/config/arch.def ivtools-0.5/config/gcc.def ivtools-0.5/config/local.def ivtools-0.5/config/params.def ivtools-0.5/config/rules.def ivtools-0.5/config/site.def.HP800 ivtools-0.5/config/site.def.LINUX ivtools-0.5/config/site.def.SGI ivtools-0.5/config/site.def.SUN4 ivtools-0.5/config/template ivtools-0.5/include ivtools-0.5/src/AttrGlyph/Imakefile ivtools-0.5/src/AttrGlyph/Makefile ivtools-0.5/src/AttrGlyph/attredit.c ivtools-0.5/src/AttrGlyph/attredit.h ivtools-0.5/src/Attribute/Imakefile ivtools-0.5/src/Attribute/Makefile ivtools-0.5/src/Attribute/_comterp.h ivtools-0.5/src/Attribute/_comutil.h ivtools-0.5/src/Attribute/alist.c ivtools-0.5/src/Attribute/alist.h ivtools-0.5/src/Attribute/aliterator.c ivtools-0.5/src/Attribute/aliterator.h ivtools-0.5/src/Attribute/attribute.c ivtools-0.5/src/Attribute/attribute.h ivtools-0.5/src/Attribute/attrlist.c ivtools-0.5/src/Attribute/attrlist.h ivtools-0.5/src/Attribute/attrvalue.c ivtools-0.5/src/Attribute/attrvalue.h ivtools-0.5/src/Attribute/commodule.c ivtools-0.5/src/Attribute/commodule.h ivtools-0.5/src/Attribute/lexscan.c ivtools-0.5/src/Attribute/lexscan.h ivtools-0.5/src/Attribute/paramlist.c ivtools-0.5/src/Attribute/paramlist.h ivtools-0.5/src/ComGlyph/Imakefile ivtools-0.5/src/ComGlyph/Makefile ivtools-0.5/src/ComGlyph/attrdialog.c ivtools-0.5/src/ComGlyph/attrdialog.h ivtools-0.5/src/ComGlyph/terpdialog.c ivtools-0.5/src/ComGlyph/terpdialog.h ivtools-0.5/src/ComTerp/Imakefile ivtools-0.5/src/ComTerp/Makefile ivtools-0.5/src/ComTerp/WishList ivtools-0.5/src/ComTerp/_comterp.h ivtools-0.5/src/ComTerp/_comutil.h ivtools-0.5/src/ComTerp/assignfunc.c ivtools-0.5/src/ComTerp/assignfunc.h ivtools-0.5/src/ComTerp/boolfunc.c ivtools-0.5/src/ComTerp/boolfunc.h ivtools-0.5/src/ComTerp/comfunc.c ivtools-0.5/src/ComTerp/comfunc.h ivtools-0.5/src/ComTerp/comhandler.c ivtools-0.5/src/ComTerp/comhandler.h ivtools-0.5/src/ComTerp/commodule.h ivtools-0.5/src/ComTerp/comterp.c ivtools-0.5/src/ComTerp/comterp.h ivtools-0.5/src/ComTerp/comterpserv.c ivtools-0.5/src/ComTerp/comterpserv.h ivtools-0.5/src/ComTerp/comvalue.c ivtools-0.5/src/ComTerp/comvalue.h ivtools-0.5/src/ComTerp/ctrlfunc.c ivtools-0.5/src/ComTerp/ctrlfunc.h ivtools-0.5/src/ComTerp/lexscan.h ivtools-0.5/src/ComTerp/numfunc.c ivtools-0.5/src/ComTerp/numfunc.h ivtools-0.5/src/ComTerp/parser.c ivtools-0.5/src/ComTerp/parser.h ivtools-0.5/src/ComTerp/scanner.c ivtools-0.5/src/ComTerp/scanner.h ivtools-0.5/src/ComTerp/strmfunc.c ivtools-0.5/src/ComTerp/strmfunc.h ivtools-0.5/src/ComUnidraw/Imakefile ivtools-0.5/src/ComUnidraw/Makefile ivtools-0.5/src/ComUnidraw/comeditor.c ivtools-0.5/src/ComUnidraw/comeditor.h ivtools-0.5/src/ComUnidraw/comterp-acehandler.c ivtools-0.5/src/ComUnidraw/comterp-acehandler.h ivtools-0.5/src/ComUnidraw/comterp-iohandler.c ivtools-0.5/src/ComUnidraw/comterp-iohandler.h ivtools-0.5/src/ComUnidraw/grfunc.c ivtools-0.5/src/ComUnidraw/grfunc.h ivtools-0.5/src/ComUnidraw/unifunc.c ivtools-0.5/src/ComUnidraw/unifunc.h ivtools-0.5/src/ComUtil/Imakefile ivtools-0.5/src/ComUtil/Makefile ivtools-0.5/src/ComUtil/atox.c ivtools-0.5/src/ComUtil/comerr.c ivtools-0.5/src/ComUtil/comterp.arg ivtools-0.5/src/ComUtil/comterp.ci ivtools-0.5/src/ComUtil/comterp.err ivtools-0.5/src/ComUtil/comterp.h ivtools-0.5/src/ComUtil/comutil.arg ivtools-0.5/src/ComUtil/comutil.ci ivtools-0.5/src/ComUtil/comutil.h ivtools-0.5/src/ComUtil/dmm.c ivtools-0.5/src/ComUtil/errfile.c ivtools-0.5/src/ComUtil/errsys.c ivtools-0.5/src/ComUtil/funcptrs.c ivtools-0.5/src/ComUtil/lexscan.c ivtools-0.5/src/ComUtil/mblock.c ivtools-0.5/src/ComUtil/optable.c ivtools-0.5/src/ComUtil/parser.c ivtools-0.5/src/ComUtil/scanner.c ivtools-0.5/src/ComUtil/symbols.c ivtools-0.5/src/ComUtil/txtutil.c ivtools-0.5/src/ComUtil/types.c ivtools-0.5/src/ComUtil/util.c ivtools-0.5/src/ComUtil/util.h ivtools-0.5/src/ComUtil/xdll.c ivtools-0.5/src/Dispatch/Imakefile ivtools-0.5/src/Dispatch/Makefile ivtools-0.5/src/Dispatch/ace_dispatcher.c ivtools-0.5/src/Dispatch/ace_iohandler.c ivtools-0.5/src/Dispatch/dispatcher.c ivtools-0.5/src/Dispatch/iohandler.c ivtools-0.5/src/Dispatch/iostreamb.c ivtools-0.5/src/Dispatch/netinet_in.h ivtools-0.5/src/Dispatch/rpcbuf.c ivtools-0.5/src/Dispatch/rpchdr.c ivtools-0.5/src/Dispatch/rpcpeer.c ivtools-0.5/src/Dispatch/rpcreader.c ivtools-0.5/src/Dispatch/rpcregistry.c ivtools-0.5/src/Dispatch/rpcservice.c ivtools-0.5/src/Dispatch/rpcstream.c ivtools-0.5/src/Dispatch/rpcwriter.c ivtools-0.5/src/DrawServ/Imakefile ivtools-0.5/src/DrawServ/Makefile ivtools-0.5/src/DrawServ/WishList ivtools-0.5/src/DrawServ/comcatalog.c ivtools-0.5/src/DrawServ/comcatalog.h ivtools-0.5/src/DrawServ/comclasses.h ivtools-0.5/src/DrawServ/comcomps.c ivtools-0.5/src/DrawServ/comcomps.h ivtools-0.5/src/DrawServ/comcreator.c ivtools-0.5/src/DrawServ/comcreator.h ivtools-0.5/src/DrawServ/comkit.c ivtools-0.5/src/DrawServ/comkit.h ivtools-0.5/src/DrawServ/comviews.c ivtools-0.5/src/DrawServ/comviews.h ivtools-0.5/src/FrameUnidraw/Imakefile ivtools-0.5/src/FrameUnidraw/Makefile ivtools-0.5/src/FrameUnidraw/WishList ivtools-0.5/src/FrameUnidraw/framecatalog.c ivtools-0.5/src/FrameUnidraw/framecatalog.h ivtools-0.5/src/FrameUnidraw/frameclasses.h ivtools-0.5/src/FrameUnidraw/framecmds.c ivtools-0.5/src/FrameUnidraw/framecmds.h ivtools-0.5/src/FrameUnidraw/framecomps.c ivtools-0.5/src/FrameUnidraw/framecomps.h ivtools-0.5/src/FrameUnidraw/framecreator.c ivtools-0.5/src/FrameUnidraw/framecreator.h ivtools-0.5/src/FrameUnidraw/frameeditor.c ivtools-0.5/src/FrameUnidraw/frameeditor.h ivtools-0.5/src/FrameUnidraw/framefile.c ivtools-0.5/src/FrameUnidraw/framefile.h ivtools-0.5/src/FrameUnidraw/framekit.c ivtools-0.5/src/FrameUnidraw/framekit.h ivtools-0.5/src/FrameUnidraw/frameps.c ivtools-0.5/src/FrameUnidraw/frameps.h ivtools-0.5/src/FrameUnidraw/framescripts.c ivtools-0.5/src/FrameUnidraw/framescripts.h ivtools-0.5/src/FrameUnidraw/framestates.c ivtools-0.5/src/FrameUnidraw/framestates.h ivtools-0.5/src/FrameUnidraw/frameviewer.c ivtools-0.5/src/FrameUnidraw/frameviewer.h ivtools-0.5/src/FrameUnidraw/frameviews.c ivtools-0.5/src/FrameUnidraw/frameviews.h ivtools-0.5/src/GraphUnidraw/Imakefile ivtools-0.5/src/GraphUnidraw/Makefile ivtools-0.5/src/GraphUnidraw/WishList ivtools-0.5/src/GraphUnidraw/edgecomp.c ivtools-0.5/src/GraphUnidraw/edgecomp.h ivtools-0.5/src/GraphUnidraw/graphcatalog.c ivtools-0.5/src/GraphUnidraw/graphcatalog.h ivtools-0.5/src/GraphUnidraw/graphclasses.h ivtools-0.5/src/GraphUnidraw/graphcmds.c ivtools-0.5/src/GraphUnidraw/graphcmds.h ivtools-0.5/src/GraphUnidraw/graphcomp.c ivtools-0.5/src/GraphUnidraw/graphcomp.h ivtools-0.5/src/GraphUnidraw/graphcreator.c ivtools-0.5/src/GraphUnidraw/graphcreator.h ivtools-0.5/src/GraphUnidraw/graphdata.c ivtools-0.5/src/GraphUnidraw/graphdata.h ivtools-0.5/src/GraphUnidraw/graphdialog.c ivtools-0.5/src/GraphUnidraw/graphdialog.h ivtools-0.5/src/GraphUnidraw/grapheditor.c ivtools-0.5/src/GraphUnidraw/grapheditor.h ivtools-0.5/src/GraphUnidraw/graphimport.c ivtools-0.5/src/GraphUnidraw/graphimport.h ivtools-0.5/src/GraphUnidraw/graphkit.c ivtools-0.5/src/GraphUnidraw/graphkit.h ivtools-0.5/src/GraphUnidraw/nodecomp.c ivtools-0.5/src/GraphUnidraw/nodecomp.h ivtools-0.5/src/IV-2_6/Imakefile ivtools-0.5/src/IV-2_6/Makefile ivtools-0.5/src/IV-2_6/adjuster2_6.c ivtools-0.5/src/IV-2_6/banner.c ivtools-0.5/src/IV-2_6/border2_6.c ivtools-0.5/src/IV-2_6/box2_6.c ivtools-0.5/src/IV-2_6/button2_6.c ivtools-0.5/src/IV-2_6/compeditor.c ivtools-0.5/src/IV-2_6/control.c ivtools-0.5/src/IV-2_6/deck2_6.c ivtools-0.5/src/IV-2_6/dialog2_6.c ivtools-0.5/src/IV-2_6/filebrowser.c ivtools-0.5/src/IV-2_6/filechooser.c ivtools-0.5/src/IV-2_6/frame.c ivtools-0.5/src/IV-2_6/glue2_6.c ivtools-0.5/src/IV-2_6/interactor.c ivtools-0.5/src/IV-2_6/matcheditor.c ivtools-0.5/src/IV-2_6/menu2_6.c ivtools-0.5/src/IV-2_6/message.c ivtools-0.5/src/IV-2_6/painter.c ivtools-0.5/src/IV-2_6/panner2_6.c ivtools-0.5/src/IV-2_6/perspective.c ivtools-0.5/src/IV-2_6/rubband.c ivtools-0.5/src/IV-2_6/rubcurve.c ivtools-0.5/src/IV-2_6/rubgroup.c ivtools-0.5/src/IV-2_6/rubline.c ivtools-0.5/src/IV-2_6/rubrect.c ivtools-0.5/src/IV-2_6/rubverts.c ivtools-0.5/src/IV-2_6/scene.c ivtools-0.5/src/IV-2_6/scrollbar2_6.c ivtools-0.5/src/IV-2_6/scroller2_6.c ivtools-0.5/src/IV-2_6/sensor.c ivtools-0.5/src/IV-2_6/shape.c ivtools-0.5/src/IV-2_6/strbrowser.c ivtools-0.5/src/IV-2_6/strchooser.c ivtools-0.5/src/IV-2_6/streditor.c ivtools-0.5/src/IV-2_6/subject.c ivtools-0.5/src/IV-2_6/textbuffer.c ivtools-0.5/src/IV-2_6/textdisplay.c ivtools-0.5/src/IV-2_6/texteditor.c ivtools-0.5/src/IV-2_6/tform2_6.c ivtools-0.5/src/IV-2_6/tray.c ivtools-0.5/src/IV-2_6/viewport.c ivtools-0.5/src/IV-2_6/world.c ivtools-0.5/src/IV-2_6/xbitmap2_6.c ivtools-0.5/src/IV-2_6/xevent2_6.c ivtools-0.5/src/IV-2_6/xinter.c ivtools-0.5/src/IV-2_6/xpainter.c ivtools-0.5/src/IV-2_6/xpattern.c ivtools-0.5/src/IV-X11/Imakefile ivtools-0.5/src/IV-X11/Makefile ivtools-0.5/src/IV-X11/glcontext.c ivtools-0.5/src/IV-X11/wtable.h ivtools-0.5/src/IV-X11/xbitmap.c ivtools-0.5/src/IV-X11/xbrush.c ivtools-0.5/src/IV-X11/xcanvas.c ivtools-0.5/src/IV-X11/xcolor.c ivtools-0.5/src/IV-X11/xcursor.c ivtools-0.5/src/IV-X11/xdrag.c ivtools-0.5/src/IV-X11/xevent.c ivtools-0.5/src/IV-X11/xfont.c ivtools-0.5/src/IV-X11/xraster.c ivtools-0.5/src/IV-X11/xreqerr.c ivtools-0.5/src/IV-X11/xselection.c ivtools-0.5/src/IV-X11/xwindow.c ivtools-0.5/src/IV/Imakefile ivtools-0.5/src/IV/InterViews.defaults ivtools-0.5/src/IV/Makefile ivtools-0.5/src/IVGlyph/Imakefile ivtools-0.5/src/IVGlyph/Makefile ivtools-0.5/src/IVGlyph/WishList ivtools-0.5/src/IVGlyph/bdfltform.c ivtools-0.5/src/IVGlyph/bdfltform.h ivtools-0.5/src/IVGlyph/bdtable.c ivtools-0.5/src/IVGlyph/bdtable.h ivtools-0.5/src/IVGlyph/bdvalue.c ivtools-0.5/src/IVGlyph/bdvalue.h ivtools-0.5/src/IVGlyph/boolform.c ivtools-0.5/src/IVGlyph/boolform.h ivtools-0.5/src/IVGlyph/charfield.c ivtools-0.5/src/IVGlyph/charfield.h ivtools-0.5/src/IVGlyph/dragedit.c ivtools-0.5/src/IVGlyph/dragedit.h ivtools-0.5/src/IVGlyph/enumform.c ivtools-0.5/src/IVGlyph/enumform.h ivtools-0.5/src/IVGlyph/exportchooser.c ivtools-0.5/src/IVGlyph/exportchooser.h ivtools-0.5/src/IVGlyph/fieldedit.c ivtools-0.5/src/IVGlyph/fieldedit.h ivtools-0.5/src/IVGlyph/figure.c ivtools-0.5/src/IVGlyph/figure.h ivtools-0.5/src/IVGlyph/gdialogs.c ivtools-0.5/src/IVGlyph/gdialogs.h ivtools-0.5/src/IVGlyph/importchooser.c ivtools-0.5/src/IVGlyph/importchooser.h ivtools-0.5/src/IVGlyph/namestate.c ivtools-0.5/src/IVGlyph/namestate.h ivtools-0.5/src/IVGlyph/observables.c ivtools-0.5/src/IVGlyph/observables.h ivtools-0.5/src/IVGlyph/ofilechooser.c ivtools-0.5/src/IVGlyph/ofilechooser.h ivtools-0.5/src/IVGlyph/printchooser.c ivtools-0.5/src/IVGlyph/printchooser.h ivtools-0.5/src/IVGlyph/saveaschooser.c ivtools-0.5/src/IVGlyph/saveaschooser.h ivtools-0.5/src/IVGlyph/scrollable.c ivtools-0.5/src/IVGlyph/scrollable.h ivtools-0.5/src/IVGlyph/strchooser.c ivtools-0.5/src/IVGlyph/strchooser.h ivtools-0.5/src/IVGlyph/strlist.c ivtools-0.5/src/IVGlyph/strlist.h ivtools-0.5/src/IVGlyph/textbuff.c ivtools-0.5/src/IVGlyph/textbuff.h ivtools-0.5/src/IVGlyph/textedit.c ivtools-0.5/src/IVGlyph/textedit.h ivtools-0.5/src/IVGlyph/texteditor.c ivtools-0.5/src/IVGlyph/texteditor.h ivtools-0.5/src/IVGlyph/textform.c ivtools-0.5/src/IVGlyph/textform.h ivtools-0.5/src/IVGlyph/textview.c ivtools-0.5/src/IVGlyph/textview.h ivtools-0.5/src/IVGlyph/textwindow.c ivtools-0.5/src/IVGlyph/textwindow.h ivtools-0.5/src/IVGlyph/toolbutton.c ivtools-0.5/src/IVGlyph/toolbutton.h ivtools-0.5/src/IVGlyph/valuator.c ivtools-0.5/src/IVGlyph/valuator.h ivtools-0.5/src/Imakefile ivtools-0.5/src/InterViews/Imakefile ivtools-0.5/src/InterViews/Makefile ivtools-0.5/src/InterViews/action.c ivtools-0.5/src/InterViews/adjust.c ivtools-0.5/src/InterViews/aggr.c ivtools-0.5/src/InterViews/align.c ivtools-0.5/src/InterViews/alloctbl.c ivtools-0.5/src/InterViews/arrcomp.c ivtools-0.5/src/InterViews/background.c ivtools-0.5/src/InterViews/bevel.c ivtools-0.5/src/InterViews/border.c ivtools-0.5/src/InterViews/box.c ivtools-0.5/src/InterViews/browser.c ivtools-0.5/src/InterViews/button.c ivtools-0.5/src/InterViews/character.c ivtools-0.5/src/InterViews/composition.c ivtools-0.5/src/InterViews/compositor.c ivtools-0.5/src/InterViews/debug.c ivtools-0.5/src/InterViews/deck.c ivtools-0.5/src/InterViews/dialogs.c ivtools-0.5/src/InterViews/fbrowser.c ivtools-0.5/src/InterViews/fchooser.c ivtools-0.5/src/InterViews/field.c ivtools-0.5/src/InterViews/geometry.c ivtools-0.5/src/InterViews/glyph.c ivtools-0.5/src/InterViews/group.c ivtools-0.5/src/InterViews/handler.c ivtools-0.5/src/InterViews/hit.c ivtools-0.5/src/InterViews/image.c ivtools-0.5/src/InterViews/input.c ivtools-0.5/src/InterViews/kit.c ivtools-0.5/src/InterViews/label.c ivtools-0.5/src/InterViews/layout.c ivtools-0.5/src/InterViews/lrmarker.c ivtools-0.5/src/InterViews/menu.c ivtools-0.5/src/InterViews/mf_dialogs.c ivtools-0.5/src/InterViews/mf_kit.c ivtools-0.5/src/InterViews/mono_kit.c ivtools-0.5/src/InterViews/monoglyph.c ivtools-0.5/src/InterViews/observe.c ivtools-0.5/src/InterViews/ol_dialogs.c ivtools-0.5/src/InterViews/ol_kit.c ivtools-0.5/src/InterViews/page.c ivtools-0.5/src/InterViews/patch.c ivtools-0.5/src/InterViews/place.c ivtools-0.5/src/InterViews/polyglyph.c ivtools-0.5/src/InterViews/printer.c ivtools-0.5/src/InterViews/psfont.c ivtools-0.5/src/InterViews/regexp.c ivtools-0.5/src/InterViews/resource.c ivtools-0.5/src/InterViews/rule.c ivtools-0.5/src/InterViews/scrbox.c ivtools-0.5/src/InterViews/session.c ivtools-0.5/src/InterViews/shadow.c ivtools-0.5/src/InterViews/simpcomp.c ivtools-0.5/src/InterViews/slider.c ivtools-0.5/src/InterViews/smf_kit.c ivtools-0.5/src/InterViews/stencil.c ivtools-0.5/src/InterViews/stepper.c ivtools-0.5/src/InterViews/style.c ivtools-0.5/src/InterViews/superpose.c ivtools-0.5/src/InterViews/target.c ivtools-0.5/src/InterViews/telltale.c ivtools-0.5/src/InterViews/texcomp.c ivtools-0.5/src/InterViews/tformsetter.c ivtools-0.5/src/InterViews/tiff.c ivtools-0.5/src/InterViews/tile.c ivtools-0.5/src/InterViews/transformer.c ivtools-0.5/src/InterViews/xymarker.c ivtools-0.5/src/Makefile ivtools-0.5/src/OS/Imakefile ivtools-0.5/src/OS/Makefile ivtools-0.5/src/OS/directory.c ivtools-0.5/src/OS/file.c ivtools-0.5/src/OS/host.c ivtools-0.5/src/OS/listimpl.c ivtools-0.5/src/OS/math.c ivtools-0.5/src/OS/memory.c ivtools-0.5/src/OS/string.c ivtools-0.5/src/OS/ustring.c ivtools-0.5/src/OverlayUnidraw/Imakefile ivtools-0.5/src/OverlayUnidraw/Makefile ivtools-0.5/src/OverlayUnidraw/WishList ivtools-0.5/src/OverlayUnidraw/aceimport.c ivtools-0.5/src/OverlayUnidraw/aceimport.h ivtools-0.5/src/OverlayUnidraw/annotate.c ivtools-0.5/src/OverlayUnidraw/annotate.h ivtools-0.5/src/OverlayUnidraw/attrtool.c ivtools-0.5/src/OverlayUnidraw/attrtool.h ivtools-0.5/src/OverlayUnidraw/clipline.c ivtools-0.5/src/OverlayUnidraw/clipline.h ivtools-0.5/src/OverlayUnidraw/cliplinepoly.c ivtools-0.5/src/OverlayUnidraw/cliplinepoly.h ivtools-0.5/src/OverlayUnidraw/clippoly.c ivtools-0.5/src/OverlayUnidraw/clippoly.h ivtools-0.5/src/OverlayUnidraw/grayraster.c ivtools-0.5/src/OverlayUnidraw/grayraster.h ivtools-0.5/src/OverlayUnidraw/leakchecker.h ivtools-0.5/src/OverlayUnidraw/ovabout.c ivtools-0.5/src/OverlayUnidraw/ovabout.h ivtools-0.5/src/OverlayUnidraw/ovadjuster.c ivtools-0.5/src/OverlayUnidraw/ovadjuster.h ivtools-0.5/src/OverlayUnidraw/ovarrow.c ivtools-0.5/src/OverlayUnidraw/ovarrow.h ivtools-0.5/src/OverlayUnidraw/ovcamcmds.c ivtools-0.5/src/OverlayUnidraw/ovcamcmds.h ivtools-0.5/src/OverlayUnidraw/ovcatalog.c ivtools-0.5/src/OverlayUnidraw/ovcatalog.h ivtools-0.5/src/OverlayUnidraw/ovchainview.c ivtools-0.5/src/OverlayUnidraw/ovchainview.h ivtools-0.5/src/OverlayUnidraw/ovclasses.h ivtools-0.5/src/OverlayUnidraw/ovclip.c ivtools-0.5/src/OverlayUnidraw/ovclip.h ivtools-0.5/src/OverlayUnidraw/ovcmds.c ivtools-0.5/src/OverlayUnidraw/ovcmds.h ivtools-0.5/src/OverlayUnidraw/ovcomps.c ivtools-0.5/src/OverlayUnidraw/ovcomps.h ivtools-0.5/src/OverlayUnidraw/ovcreator.c ivtools-0.5/src/OverlayUnidraw/ovcreator.h ivtools-0.5/src/OverlayUnidraw/ovctrl.c ivtools-0.5/src/OverlayUnidraw/ovctrl.h ivtools-0.5/src/OverlayUnidraw/ovdamage.c ivtools-0.5/src/OverlayUnidraw/ovdamage.h ivtools-0.5/src/OverlayUnidraw/ovdialog.c ivtools-0.5/src/OverlayUnidraw/ovdialog.h ivtools-0.5/src/OverlayUnidraw/ovdoer.c ivtools-0.5/src/OverlayUnidraw/ovdoer.h ivtools-0.5/src/OverlayUnidraw/oved.c ivtools-0.5/src/OverlayUnidraw/oved.h ivtools-0.5/src/OverlayUnidraw/ovellipse.c ivtools-0.5/src/OverlayUnidraw/ovellipse.h ivtools-0.5/src/OverlayUnidraw/ovexport.c ivtools-0.5/src/OverlayUnidraw/ovexport.h ivtools-0.5/src/OverlayUnidraw/ovfile.c ivtools-0.5/src/OverlayUnidraw/ovfile.h ivtools-0.5/src/OverlayUnidraw/ovfixview.c ivtools-0.5/src/OverlayUnidraw/ovfixview.h ivtools-0.5/src/OverlayUnidraw/ovgdialog.c ivtools-0.5/src/OverlayUnidraw/ovgdialog.h ivtools-0.5/src/OverlayUnidraw/ovimport.c ivtools-0.5/src/OverlayUnidraw/ovimport.h ivtools-0.5/src/OverlayUnidraw/ovipcmds.c ivtools-0.5/src/OverlayUnidraw/ovipcmds.h ivtools-0.5/src/OverlayUnidraw/ovkit.c ivtools-0.5/src/OverlayUnidraw/ovkit.h ivtools-0.5/src/OverlayUnidraw/ovline.c ivtools-0.5/src/OverlayUnidraw/ovline.h ivtools-0.5/src/OverlayUnidraw/ovpage.c ivtools-0.5/src/OverlayUnidraw/ovpage.h ivtools-0.5/src/OverlayUnidraw/ovpainter.c ivtools-0.5/src/OverlayUnidraw/ovpainter.h ivtools-0.5/src/OverlayUnidraw/ovpanner.c ivtools-0.5/src/OverlayUnidraw/ovpanner.h ivtools-0.5/src/OverlayUnidraw/ovpolygon.c ivtools-0.5/src/OverlayUnidraw/ovpolygon.h ivtools-0.5/src/OverlayUnidraw/ovprint.c ivtools-0.5/src/OverlayUnidraw/ovprint.h ivtools-0.5/src/OverlayUnidraw/ovpspict.c ivtools-0.5/src/OverlayUnidraw/ovpspict.h ivtools-0.5/src/OverlayUnidraw/ovpsview.c ivtools-0.5/src/OverlayUnidraw/ovpsview.h ivtools-0.5/src/OverlayUnidraw/ovraster.c ivtools-0.5/src/OverlayUnidraw/ovraster.h ivtools-0.5/src/OverlayUnidraw/ovrect.c ivtools-0.5/src/OverlayUnidraw/ovrect.h ivtools-0.5/src/OverlayUnidraw/ovrestimage.c ivtools-0.5/src/OverlayUnidraw/ovrestimage.h ivtools-0.5/src/OverlayUnidraw/ovselect.c ivtools-0.5/src/OverlayUnidraw/ovselect.h ivtools-0.5/src/OverlayUnidraw/ovselection.c ivtools-0.5/src/OverlayUnidraw/ovselection.h ivtools-0.5/src/OverlayUnidraw/ovshowhide.c ivtools-0.5/src/OverlayUnidraw/ovshowhide.h ivtools-0.5/src/OverlayUnidraw/ovspline.c ivtools-0.5/src/OverlayUnidraw/ovspline.h ivtools-0.5/src/OverlayUnidraw/ovstencil.c ivtools-0.5/src/OverlayUnidraw/ovstencil.h ivtools-0.5/src/OverlayUnidraw/ovtext.c ivtools-0.5/src/OverlayUnidraw/ovtext.h ivtools-0.5/src/OverlayUnidraw/ovunidraw.c ivtools-0.5/src/OverlayUnidraw/ovunidraw.h ivtools-0.5/src/OverlayUnidraw/ovvars.c ivtools-0.5/src/OverlayUnidraw/ovvars.h ivtools-0.5/src/OverlayUnidraw/ovvertices.c ivtools-0.5/src/OverlayUnidraw/ovvertices.h ivtools-0.5/src/OverlayUnidraw/ovviewer.c ivtools-0.5/src/OverlayUnidraw/ovviewer.h ivtools-0.5/src/OverlayUnidraw/ovviews.c ivtools-0.5/src/OverlayUnidraw/ovviews.h ivtools-0.5/src/OverlayUnidraw/paramlist.h ivtools-0.5/src/OverlayUnidraw/ptinpoly.c ivtools-0.5/src/OverlayUnidraw/ptinpoly.h ivtools-0.5/src/OverlayUnidraw/rastercmds.c ivtools-0.5/src/OverlayUnidraw/rastercmds.h ivtools-0.5/src/OverlayUnidraw/scriptview.c ivtools-0.5/src/OverlayUnidraw/scriptview.h ivtools-0.5/src/OverlayUnidraw/slctbyattr.c ivtools-0.5/src/OverlayUnidraw/slctbyattr.h ivtools-0.5/src/OverlayUnidraw/textfile.c ivtools-0.5/src/OverlayUnidraw/textfile.h ivtools-0.5/src/TIFF/Copyright ivtools-0.5/src/TIFF/HOWTO ivtools-0.5/src/TIFF/Imakefile ivtools-0.5/src/TIFF/Makefile ivtools-0.5/src/TIFF/README ivtools-0.5/src/TIFF/VERSION ivtools-0.5/src/TIFF/machdep.h ivtools-0.5/src/TIFF/mkg3states.c ivtools-0.5/src/TIFF/mkspans.c ivtools-0.5/src/TIFF/prototypes.h ivtools-0.5/src/TIFF/t4.h ivtools-0.5/src/TIFF/tif_aux.c ivtools-0.5/src/TIFF/tif_ccittrle.c ivtools-0.5/src/TIFF/tif_close.c ivtools-0.5/src/TIFF/tif_compat.c ivtools-0.5/src/TIFF/tif_compress.c ivtools-0.5/src/TIFF/tif_dir.c ivtools-0.5/src/TIFF/tif_dirinfo.c ivtools-0.5/src/TIFF/tif_dirread.c ivtools-0.5/src/TIFF/tif_dirwrite.c ivtools-0.5/src/TIFF/tif_dumpmode.c ivtools-0.5/src/TIFF/tif_error.c ivtools-0.5/src/TIFF/tif_fax3.c ivtools-0.5/src/TIFF/tif_fax3.h ivtools-0.5/src/TIFF/tif_fax4.c ivtools-0.5/src/TIFF/tif_flush.c ivtools-0.5/src/TIFF/tif_getimage.c ivtools-0.5/src/TIFF/tif_jpeg.c ivtools-0.5/src/TIFF/tif_lzw.c ivtools-0.5/src/TIFF/tif_machdep.c ivtools-0.5/src/TIFF/tif_next.c ivtools-0.5/src/TIFF/tif_open.c ivtools-0.5/src/TIFF/tif_packbits.c ivtools-0.5/src/TIFF/tif_print.c ivtools-0.5/src/TIFF/tif_read.c ivtools-0.5/src/TIFF/tif_strip.c ivtools-0.5/src/TIFF/tif_swab.c ivtools-0.5/src/TIFF/tif_thunder.c ivtools-0.5/src/TIFF/tif_tile.c ivtools-0.5/src/TIFF/tif_version.c ivtools-0.5/src/TIFF/tif_warning.c ivtools-0.5/src/TIFF/tif_write.c ivtools-0.5/src/TIFF/tiffcompat.h ivtools-0.5/src/TIFF/tiffioP.h ivtools-0.5/src/Time/Date.c ivtools-0.5/src/Time/Date.h ivtools-0.5/src/Time/Imakefile ivtools-0.5/src/Time/Makefile ivtools-0.5/src/Time/Time.c ivtools-0.5/src/Time/Time.h ivtools-0.5/src/Time/obstime.c ivtools-0.5/src/Time/obstime.h ivtools-0.5/src/Time/timeglyph.c ivtools-0.5/src/Time/timeglyph.h ivtools-0.5/src/Topology/Imakefile ivtools-0.5/src/Topology/Makefile ivtools-0.5/src/Topology/fgeomobjs.c ivtools-0.5/src/Topology/fgeomobjs.h ivtools-0.5/src/Topology/topoedge.c ivtools-0.5/src/Topology/topoedge.h ivtools-0.5/src/Topology/topoedgelist.c ivtools-0.5/src/Topology/topoedgelist.h ivtools-0.5/src/Topology/topoelt.c ivtools-0.5/src/Topology/topoelt.h ivtools-0.5/src/Topology/topoface.c ivtools-0.5/src/Topology/topoface.h ivtools-0.5/src/Topology/toponode.c ivtools-0.5/src/Topology/toponode.h ivtools-0.5/src/UniIdraw/Imakefile ivtools-0.5/src/UniIdraw/Makefile ivtools-0.5/src/UniIdraw/idarrow.c ivtools-0.5/src/UniIdraw/idarrow.h ivtools-0.5/src/UniIdraw/idarrowhead.c ivtools-0.5/src/UniIdraw/idarrowhead.h ivtools-0.5/src/UniIdraw/idarrows.c ivtools-0.5/src/UniIdraw/idarrows.h ivtools-0.5/src/UniIdraw/idcatalog.c ivtools-0.5/src/UniIdraw/idcatalog.h ivtools-0.5/src/UniIdraw/idclasses.h ivtools-0.5/src/UniIdraw/idcmds.c ivtools-0.5/src/UniIdraw/idcmds.h ivtools-0.5/src/UniIdraw/idcomp.c ivtools-0.5/src/UniIdraw/idcomp.h ivtools-0.5/src/UniIdraw/idcreator.c ivtools-0.5/src/UniIdraw/idcreator.h ivtools-0.5/src/UniIdraw/iddialogs.c ivtools-0.5/src/UniIdraw/iddialogs.h ivtools-0.5/src/UniIdraw/ided.c ivtools-0.5/src/UniIdraw/ided.h ivtools-0.5/src/UniIdraw/idkybd.c ivtools-0.5/src/UniIdraw/idkybd.h ivtools-0.5/src/UniIdraw/idvars.c ivtools-0.5/src/UniIdraw/idvars.h ivtools-0.5/src/UniIdraw/idversion.h ivtools-0.5/src/Unidraw/Imakefile ivtools-0.5/src/Unidraw/Makefile ivtools-0.5/src/Unidraw/align.c ivtools-0.5/src/Unidraw/brushcmd.c ivtools-0.5/src/Unidraw/catalog.c ivtools-0.5/src/Unidraw/catcmds.c ivtools-0.5/src/Unidraw/cglue.c ivtools-0.5/src/Unidraw/clipboard.c ivtools-0.5/src/Unidraw/colorcmd.c ivtools-0.5/src/Unidraw/command.c ivtools-0.5/src/Unidraw/component.c ivtools-0.5/src/Unidraw/compview.c ivtools-0.5/src/Unidraw/connect.c ivtools-0.5/src/Unidraw/connector.c ivtools-0.5/src/Unidraw/creator.c ivtools-0.5/src/Unidraw/csolver.c ivtools-0.5/src/Unidraw/ctrlinfo.c ivtools-0.5/src/Unidraw/damage.c ivtools-0.5/src/Unidraw/data.c ivtools-0.5/src/Unidraw/datas.c ivtools-0.5/src/Unidraw/dialogs.c ivtools-0.5/src/Unidraw/edit.c ivtools-0.5/src/Unidraw/editor.c ivtools-0.5/src/Unidraw/editorinfo.c ivtools-0.5/src/Unidraw/ellipse.c ivtools-0.5/src/Unidraw/ellipses.c ivtools-0.5/src/Unidraw/externview.c ivtools-0.5/src/Unidraw/font.c ivtools-0.5/src/Unidraw/geomobjs.c ivtools-0.5/src/Unidraw/globals.c ivtools-0.5/src/Unidraw/graphic.c ivtools-0.5/src/Unidraw/grblock.c ivtools-0.5/src/Unidraw/grcomp.c ivtools-0.5/src/Unidraw/grcomptool.c ivtools-0.5/src/Unidraw/grid.c ivtools-0.5/src/Unidraw/grview.c ivtools-0.5/src/Unidraw/gvupdater.c ivtools-0.5/src/Unidraw/import.c ivtools-0.5/src/Unidraw/iterator.c ivtools-0.5/src/Unidraw/keymap.c ivtools-0.5/src/Unidraw/kybd.c ivtools-0.5/src/Unidraw/line.c ivtools-0.5/src/Unidraw/lines.c ivtools-0.5/src/Unidraw/link.c ivtools-0.5/src/Unidraw/macro.c ivtools-0.5/src/Unidraw/magnify.c ivtools-0.5/src/Unidraw/manip.c ivtools-0.5/src/Unidraw/manips.c ivtools-0.5/src/Unidraw/move.c ivtools-0.5/src/Unidraw/nop.c ivtools-0.5/src/Unidraw/pad.c ivtools-0.5/src/Unidraw/patcmd.c ivtools-0.5/src/Unidraw/path.c ivtools-0.5/src/Unidraw/picture.c ivtools-0.5/src/Unidraw/pin.c ivtools-0.5/src/Unidraw/polygon.c ivtools-0.5/src/Unidraw/polygons.c ivtools-0.5/src/Unidraw/pspaint.c ivtools-0.5/src/Unidraw/psview.c ivtools-0.5/src/Unidraw/rastercomp.c ivtools-0.5/src/Unidraw/rasterrect.c ivtools-0.5/src/Unidraw/rect.c ivtools-0.5/src/Unidraw/reshape.c ivtools-0.5/src/Unidraw/rotate.c ivtools-0.5/src/Unidraw/scale.c ivtools-0.5/src/Unidraw/select.c ivtools-0.5/src/Unidraw/selection.c ivtools-0.5/src/Unidraw/slot.c ivtools-0.5/src/Unidraw/spline.c ivtools-0.5/src/Unidraw/splines.c ivtools-0.5/src/Unidraw/statevar.c ivtools-0.5/src/Unidraw/statevars.c ivtools-0.5/src/Unidraw/stateview.c ivtools-0.5/src/Unidraw/stateviews.c ivtools-0.5/src/Unidraw/stencilcomp.c ivtools-0.5/src/Unidraw/stretch.c ivtools-0.5/src/Unidraw/struct.c ivtools-0.5/src/Unidraw/text.c ivtools-0.5/src/Unidraw/tool.c ivtools-0.5/src/Unidraw/transfn.c ivtools-0.5/src/Unidraw/transfns.c ivtools-0.5/src/Unidraw/transforms.c ivtools-0.5/src/Unidraw/uarray.c ivtools-0.5/src/Unidraw/uctrl.c ivtools-0.5/src/Unidraw/uctrls.c ivtools-0.5/src/Unidraw/uhash.c ivtools-0.5/src/Unidraw/ulabel.c ivtools-0.5/src/Unidraw/ulist.c ivtools-0.5/src/Unidraw/umap.c ivtools-0.5/src/Unidraw/unidraw.c ivtools-0.5/src/Unidraw/upage.c ivtools-0.5/src/Unidraw/ustencil.c ivtools-0.5/src/Unidraw/vertices.c ivtools-0.5/src/Unidraw/verts.c ivtools-0.5/src/Unidraw/viewcmds.c ivtools-0.5/src/Unidraw/viewer.c ivtools-0.5/src/comdraw/Imakefile ivtools-0.5/src/comdraw/Makefile ivtools-0.5/src/comdraw/README ivtools-0.5/src/comdraw/main.c ivtools-0.5/src/comterp/Imakefile ivtools-0.5/src/comterp/Makefile ivtools-0.5/src/comterp/README ivtools-0.5/src/comterp/main.c ivtools-0.5/src/comtest/Imakefile ivtools-0.5/src/comtest/Makefile ivtools-0.5/src/comtest/main.c ivtools-0.5/src/dclock/Imakefile ivtools-0.5/src/dclock/Makefile ivtools-0.5/src/dclock/clocktime.c ivtools-0.5/src/dclock/clocktime.h ivtools-0.5/src/dclock/data.c ivtools-0.5/src/dclock/data.h ivtools-0.5/src/dclock/dclock.c ivtools-0.5/src/dclock/dclock.h ivtools-0.5/src/dclock/dface.c ivtools-0.5/src/dclock/dface.h ivtools-0.5/src/dclock/digit.c ivtools-0.5/src/dclock/digit.h ivtools-0.5/src/dclock/segment.c ivtools-0.5/src/dclock/segment.h ivtools-0.5/src/drawserv/Imakefile ivtools-0.5/src/drawserv/Makefile ivtools-0.5/src/drawserv/main.c ivtools-0.5/src/drawtool/Imakefile ivtools-0.5/src/drawtool/Makefile ivtools-0.5/src/drawtool/README ivtools-0.5/src/drawtool/main.c ivtools-0.5/src/flipbook/Imakefile ivtools-0.5/src/flipbook/Makefile ivtools-0.5/src/flipbook/README ivtools-0.5/src/flipbook/main.c ivtools-0.5/src/glyphs/Imakefile ivtools-0.5/src/glyphs/Makefile ivtools-0.5/src/glyphs/bdvtable/Imakefile ivtools-0.5/src/glyphs/bdvtable/Makefile ivtools-0.5/src/glyphs/bdvtable/main.c ivtools-0.5/src/glyphs/formdemo/Imakefile ivtools-0.5/src/glyphs/formdemo/Makefile ivtools-0.5/src/glyphs/formdemo/main.c ivtools-0.5/src/glyphs/gclock/Imakefile ivtools-0.5/src/glyphs/gclock/Makefile ivtools-0.5/src/glyphs/gclock/main.c ivtools-0.5/src/glyphs/meter/Imakefile ivtools-0.5/src/glyphs/meter/Makefile ivtools-0.5/src/glyphs/meter/main.c ivtools-0.5/src/glyphs/radiogroup/Imakefile ivtools-0.5/src/glyphs/radiogroup/Makefile ivtools-0.5/src/glyphs/radiogroup/main.c ivtools-0.5/src/glyphs/scrollable/Imakefile ivtools-0.5/src/glyphs/scrollable/Makefile ivtools-0.5/src/glyphs/scrollable/main.c ivtools-0.5/src/glyphs/scrollfield/Imakefile ivtools-0.5/src/glyphs/scrollfield/Makefile ivtools-0.5/src/glyphs/scrollfield/main.c ivtools-0.5/src/glyphs/strchooser/Imakefile ivtools-0.5/src/glyphs/strchooser/Makefile ivtools-0.5/src/glyphs/strchooser/main.c ivtools-0.5/src/glyphs/text-editor/Imakefile ivtools-0.5/src/glyphs/text-editor/Makefile ivtools-0.5/src/glyphs/text-editor/README ivtools-0.5/src/glyphs/text-editor/main.c ivtools-0.5/src/glyphs/timestamp/Imakefile ivtools-0.5/src/glyphs/timestamp/Makefile ivtools-0.5/src/glyphs/timestamp/main.c ivtools-0.5/src/glyphterp/Imakefile ivtools-0.5/src/glyphterp/Makefile ivtools-0.5/src/glyphterp/main.c ivtools-0.5/src/graphdraw/Imakefile ivtools-0.5/src/graphdraw/Makefile ivtools-0.5/src/graphdraw/README ivtools-0.5/src/graphdraw/main.c ivtools-0.5/src/iclass/Imakefile ivtools-0.5/src/iclass/Makefile ivtools-0.5/src/iclass/classbuffer.c ivtools-0.5/src/iclass/classbuffer.h ivtools-0.5/src/iclass/classeditor.c ivtools-0.5/src/iclass/classeditor.h ivtools-0.5/src/iclass/classinfo.c ivtools-0.5/src/iclass/classinfo.h ivtools-0.5/src/iclass/dialogs.c ivtools-0.5/src/iclass/dialogs.h ivtools-0.5/src/iclass/direct.c ivtools-0.5/src/iclass/direct.h ivtools-0.5/src/iclass/globals.c ivtools-0.5/src/iclass/globals.h ivtools-0.5/src/iclass/iclass.c ivtools-0.5/src/iclass/iclass.h ivtools-0.5/src/iclass/main.c ivtools-0.5/src/idemo/Idemo.defaults ivtools-0.5/src/idemo/Imakefile ivtools-0.5/src/idemo/Makefile ivtools-0.5/src/idemo/main.c ivtools-0.5/src/idraw/Imakefile ivtools-0.5/src/idraw/Makefile ivtools-0.5/src/idraw/README ivtools-0.5/src/idraw/main.c ivtools-0.5/src/include/Dispatch/Imakefile ivtools-0.5/src/include/Dispatch/Makefile ivtools-0.5/src/include/Dispatch/_defines.h ivtools-0.5/src/include/Dispatch/_undefs.h ivtools-0.5/src/include/Dispatch/ace_dispatcher.h ivtools-0.5/src/include/Dispatch/ace_iohandler.h ivtools-0.5/src/include/Dispatch/dispatcher.h ivtools-0.5/src/include/Dispatch/dp.h ivtools-0.5/src/include/Dispatch/enter-scope.h ivtools-0.5/src/include/Dispatch/iocallback.h ivtools-0.5/src/include/Dispatch/iohandler.h ivtools-0.5/src/include/Dispatch/iostreamb.h ivtools-0.5/src/include/Dispatch/leave-scope.h ivtools-0.5/src/include/Dispatch/rpcbuf.h ivtools-0.5/src/include/Dispatch/rpchdr.h ivtools-0.5/src/include/Dispatch/rpcpeer.h ivtools-0.5/src/include/Dispatch/rpcreader.h ivtools-0.5/src/include/Dispatch/rpcregistry.h ivtools-0.5/src/include/Dispatch/rpcservice.h ivtools-0.5/src/include/Dispatch/rpcstream.h ivtools-0.5/src/include/Dispatch/rpcwriter.h ivtools-0.5/src/include/IV-2_6/Imakefile ivtools-0.5/src/include/IV-2_6/InterViews/Imakefile ivtools-0.5/src/include/IV-2_6/InterViews/Makefile ivtools-0.5/src/include/IV-2_6/InterViews/adjuster.h ivtools-0.5/src/include/IV-2_6/InterViews/alignment.h ivtools-0.5/src/include/IV-2_6/InterViews/banner.h ivtools-0.5/src/include/IV-2_6/InterViews/border.h ivtools-0.5/src/include/IV-2_6/InterViews/box.h ivtools-0.5/src/include/IV-2_6/InterViews/button.h ivtools-0.5/src/include/IV-2_6/InterViews/compeditor.h ivtools-0.5/src/include/IV-2_6/InterViews/control.h ivtools-0.5/src/include/IV-2_6/InterViews/deck.h ivtools-0.5/src/include/IV-2_6/InterViews/defs.h ivtools-0.5/src/include/IV-2_6/InterViews/dialog.h ivtools-0.5/src/include/IV-2_6/InterViews/filebrowser.h ivtools-0.5/src/include/IV-2_6/InterViews/filechooser.h ivtools-0.5/src/include/IV-2_6/InterViews/frame.h ivtools-0.5/src/include/IV-2_6/InterViews/glue.h ivtools-0.5/src/include/IV-2_6/InterViews/ihandler.h ivtools-0.5/src/include/IV-2_6/InterViews/interactor.h ivtools-0.5/src/include/IV-2_6/InterViews/iwindow.h ivtools-0.5/src/include/IV-2_6/InterViews/matcheditor.h ivtools-0.5/src/include/IV-2_6/InterViews/menu.h ivtools-0.5/src/include/IV-2_6/InterViews/message.h ivtools-0.5/src/include/IV-2_6/InterViews/minmax.h ivtools-0.5/src/include/IV-2_6/InterViews/paint.h ivtools-0.5/src/include/IV-2_6/InterViews/painter.h ivtools-0.5/src/include/IV-2_6/InterViews/panner.h ivtools-0.5/src/include/IV-2_6/InterViews/perspective.h ivtools-0.5/src/include/IV-2_6/InterViews/rubband.h ivtools-0.5/src/include/IV-2_6/InterViews/rubcurve.h ivtools-0.5/src/include/IV-2_6/InterViews/rubgroup.h ivtools-0.5/src/include/IV-2_6/InterViews/rubline.h ivtools-0.5/src/include/IV-2_6/InterViews/rubrect.h ivtools-0.5/src/include/IV-2_6/InterViews/rubverts.h ivtools-0.5/src/include/IV-2_6/InterViews/scene.h ivtools-0.5/src/include/IV-2_6/InterViews/scrollbar.h ivtools-0.5/src/include/IV-2_6/InterViews/scroller.h ivtools-0.5/src/include/IV-2_6/InterViews/sensor.h ivtools-0.5/src/include/IV-2_6/InterViews/shape.h ivtools-0.5/src/include/IV-2_6/InterViews/strbrowser.h ivtools-0.5/src/include/IV-2_6/InterViews/strchooser.h ivtools-0.5/src/include/IV-2_6/InterViews/streditor.h ivtools-0.5/src/include/IV-2_6/InterViews/subject.h ivtools-0.5/src/include/IV-2_6/InterViews/textbuffer.h ivtools-0.5/src/include/IV-2_6/InterViews/textdisplay.h ivtools-0.5/src/include/IV-2_6/InterViews/texteditor.h ivtools-0.5/src/include/IV-2_6/InterViews/textstyle.h ivtools-0.5/src/include/IV-2_6/InterViews/tray.h ivtools-0.5/src/include/IV-2_6/InterViews/viewport.h ivtools-0.5/src/include/IV-2_6/InterViews/world.h ivtools-0.5/src/include/IV-2_6/Makefile ivtools-0.5/src/include/IV-2_6/_enter.h ivtools-0.5/src/include/IV-2_6/_leave.h ivtools-0.5/src/include/IV-2_6/_names.h ivtools-0.5/src/include/IV-3_1/InterViews ivtools-0.5/src/include/IV-X11/Imakefile ivtools-0.5/src/include/IV-X11/Makefile ivtools-0.5/src/include/IV-X11/Xdefs.h ivtools-0.5/src/include/IV-X11/Xext.h ivtools-0.5/src/include/IV-X11/Xlib.h ivtools-0.5/src/include/IV-X11/Xundefs.h ivtools-0.5/src/include/IV-X11/Xutil.h ivtools-0.5/src/include/IV-X11/xbitmap.h ivtools-0.5/src/include/IV-X11/xbrush.h ivtools-0.5/src/include/IV-X11/xcanvas.h ivtools-0.5/src/include/IV-X11/xcolor.h ivtools-0.5/src/include/IV-X11/xcursor.h ivtools-0.5/src/include/IV-X11/xdisplay.h ivtools-0.5/src/include/IV-X11/xdrag.h ivtools-0.5/src/include/IV-X11/xevent.h ivtools-0.5/src/include/IV-X11/xfont.h ivtools-0.5/src/include/IV-X11/xpainter.h ivtools-0.5/src/include/IV-X11/xpattern.h ivtools-0.5/src/include/IV-X11/xraster.h ivtools-0.5/src/include/IV-X11/xselection.h ivtools-0.5/src/include/IV-X11/xwindow.h ivtools-0.5/src/include/IV-look/Imakefile ivtools-0.5/src/include/IV-look/Makefile ivtools-0.5/src/include/IV-look/bevel.h ivtools-0.5/src/include/IV-look/browser.h ivtools-0.5/src/include/IV-look/button.h ivtools-0.5/src/include/IV-look/choice.h ivtools-0.5/src/include/IV-look/dialogs.h ivtools-0.5/src/include/IV-look/fbrowser.h ivtools-0.5/src/include/IV-look/fchooser.h ivtools-0.5/src/include/IV-look/field.h ivtools-0.5/src/include/IV-look/kit.h ivtools-0.5/src/include/IV-look/menu.h ivtools-0.5/src/include/IV-look/mf_dialogs.h ivtools-0.5/src/include/IV-look/mf_kit.h ivtools-0.5/src/include/IV-look/mono_kit.h ivtools-0.5/src/include/IV-look/ol_dialogs.h ivtools-0.5/src/include/IV-look/ol_kit.h ivtools-0.5/src/include/IV-look/slider.h ivtools-0.5/src/include/IV-look/smf_kit.h ivtools-0.5/src/include/IV-look/stepper.h ivtools-0.5/src/include/IV-look/telltale.h ivtools-0.5/src/include/Imakefile ivtools-0.5/src/include/InterViews/Bitmaps/Imakefile ivtools-0.5/src/include/InterViews/Bitmaps/Makefile ivtools-0.5/src/include/InterViews/Bitmaps/big_checkmark.bm ivtools-0.5/src/include/InterViews/Bitmaps/checkmark.bm ivtools-0.5/src/include/InterViews/Bitmaps/chkbox.bm ivtools-0.5/src/include/InterViews/Bitmaps/chkboxBoth.bm ivtools-0.5/src/include/InterViews/Bitmaps/chkboxChosen.bm ivtools-0.5/src/include/InterViews/Bitmaps/chkboxHit.bm ivtools-0.5/src/include/InterViews/Bitmaps/dfast.bm ivtools-0.5/src/include/InterViews/Bitmaps/dfastMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/dmover.bm ivtools-0.5/src/include/InterViews/Bitmaps/dmoverHit.bm ivtools-0.5/src/include/InterViews/Bitmaps/dmoverMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/enlarge.bm ivtools-0.5/src/include/InterViews/Bitmaps/enlargeHit.bm ivtools-0.5/src/include/InterViews/Bitmaps/enlargeMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/hand.bm ivtools-0.5/src/include/InterViews/Bitmaps/handMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/ldfast.bm ivtools-0.5/src/include/InterViews/Bitmaps/ldfastMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/lfast.bm ivtools-0.5/src/include/InterViews/Bitmaps/lfastMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/lmover.bm ivtools-0.5/src/include/InterViews/Bitmaps/lmoverHit.bm ivtools-0.5/src/include/InterViews/Bitmaps/lmoverMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/lufast.bm ivtools-0.5/src/include/InterViews/Bitmaps/lufastMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/page.bm ivtools-0.5/src/include/InterViews/Bitmaps/pageBoth.bm ivtools-0.5/src/include/InterViews/Bitmaps/pageChosen.bm ivtools-0.5/src/include/InterViews/Bitmaps/pageHit.bm ivtools-0.5/src/include/InterViews/Bitmaps/radio.bm ivtools-0.5/src/include/InterViews/Bitmaps/radioBoth.bm ivtools-0.5/src/include/InterViews/Bitmaps/radioChosen.bm ivtools-0.5/src/include/InterViews/Bitmaps/radioHit.bm ivtools-0.5/src/include/InterViews/Bitmaps/radioMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/rdfast.bm ivtools-0.5/src/include/InterViews/Bitmaps/rdfastMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/reducer.bm ivtools-0.5/src/include/InterViews/Bitmaps/reducerHit.bm ivtools-0.5/src/include/InterViews/Bitmaps/reducerMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/rfast.bm ivtools-0.5/src/include/InterViews/Bitmaps/rfastMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/rmover.bm ivtools-0.5/src/include/InterViews/Bitmaps/rmoverHit.bm ivtools-0.5/src/include/InterViews/Bitmaps/rmoverMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/rufast.bm ivtools-0.5/src/include/InterViews/Bitmaps/rufastMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/ufast.bm ivtools-0.5/src/include/InterViews/Bitmaps/ufastMask.bm ivtools-0.5/src/include/InterViews/Bitmaps/umover.bm ivtools-0.5/src/include/InterViews/Bitmaps/umoverHit.bm ivtools-0.5/src/include/InterViews/Bitmaps/umoverMask.bm ivtools-0.5/src/include/InterViews/Imakefile ivtools-0.5/src/include/InterViews/Makefile ivtools-0.5/src/include/InterViews/_defines.h ivtools-0.5/src/include/InterViews/_enter.h ivtools-0.5/src/include/InterViews/_leave.h ivtools-0.5/src/include/InterViews/_names.h ivtools-0.5/src/include/InterViews/_undefs.h ivtools-0.5/src/include/InterViews/action.h ivtools-0.5/src/include/InterViews/adjust.h ivtools-0.5/src/include/InterViews/aggr.h ivtools-0.5/src/include/InterViews/align.h ivtools-0.5/src/include/InterViews/alloctbl.h ivtools-0.5/src/include/InterViews/arraycomp.h ivtools-0.5/src/include/InterViews/background.h ivtools-0.5/src/include/InterViews/bitmap.h ivtools-0.5/src/include/InterViews/boolean.h ivtools-0.5/src/include/InterViews/border.h ivtools-0.5/src/include/InterViews/box.h ivtools-0.5/src/include/InterViews/brush.h ivtools-0.5/src/include/InterViews/canvas.h ivtools-0.5/src/include/InterViews/character.h ivtools-0.5/src/include/InterViews/color.h ivtools-0.5/src/include/InterViews/composition.h ivtools-0.5/src/include/InterViews/compositor.h ivtools-0.5/src/include/InterViews/coord.h ivtools-0.5/src/include/InterViews/cursor.h ivtools-0.5/src/include/InterViews/debug.h ivtools-0.5/src/include/InterViews/deck.h ivtools-0.5/src/include/InterViews/dialog.h ivtools-0.5/src/include/InterViews/display.h ivtools-0.5/src/include/InterViews/drag.h ivtools-0.5/src/include/InterViews/enter-scope.h ivtools-0.5/src/include/InterViews/event.h ivtools-0.5/src/include/InterViews/font.h ivtools-0.5/src/include/InterViews/geometry.h ivtools-0.5/src/include/InterViews/glcontext.h ivtools-0.5/src/include/InterViews/glue.h ivtools-0.5/src/include/InterViews/glyph.h ivtools-0.5/src/include/InterViews/group.h ivtools-0.5/src/include/InterViews/handler.h ivtools-0.5/src/include/InterViews/hit.h ivtools-0.5/src/include/InterViews/image.h ivtools-0.5/src/include/InterViews/input.h ivtools-0.5/src/include/InterViews/iv.h ivtools-0.5/src/include/InterViews/label.h ivtools-0.5/src/include/InterViews/layout.h ivtools-0.5/src/include/InterViews/leave-scope.h ivtools-0.5/src/include/InterViews/lrmarker.h ivtools-0.5/src/include/InterViews/monoglyph.h ivtools-0.5/src/include/InterViews/observe.h ivtools-0.5/src/include/InterViews/page.h ivtools-0.5/src/include/InterViews/patch.h ivtools-0.5/src/include/InterViews/pattern.h ivtools-0.5/src/include/InterViews/place.h ivtools-0.5/src/include/InterViews/polyglyph.h ivtools-0.5/src/include/InterViews/printer.h ivtools-0.5/src/include/InterViews/psfont.h ivtools-0.5/src/include/InterViews/raster.h ivtools-0.5/src/include/InterViews/regexp.h ivtools-0.5/src/include/InterViews/reqerr.h ivtools-0.5/src/include/InterViews/resource.h ivtools-0.5/src/include/InterViews/rule.h ivtools-0.5/src/include/InterViews/scrbox.h ivtools-0.5/src/include/InterViews/selection.h ivtools-0.5/src/include/InterViews/session.h ivtools-0.5/src/include/InterViews/shadow.h ivtools-0.5/src/include/InterViews/simplecomp.h ivtools-0.5/src/include/InterViews/stencil.h ivtools-0.5/src/include/InterViews/style.h ivtools-0.5/src/include/InterViews/superpose.h ivtools-0.5/src/include/InterViews/target.h ivtools-0.5/src/include/InterViews/telltale.h ivtools-0.5/src/include/InterViews/texcomp.h ivtools-0.5/src/include/InterViews/tformsetter.h ivtools-0.5/src/include/InterViews/tiff.h ivtools-0.5/src/include/InterViews/tile.h ivtools-0.5/src/include/InterViews/transformer.h ivtools-0.5/src/include/InterViews/window.h ivtools-0.5/src/include/InterViews/xymarker.h ivtools-0.5/src/include/Makefile ivtools-0.5/src/include/OS/Imakefile ivtools-0.5/src/include/OS/Makefile ivtools-0.5/src/include/OS/_defines.h ivtools-0.5/src/include/OS/_undefs.h ivtools-0.5/src/include/OS/directory.h ivtools-0.5/src/include/OS/enter-scope.h ivtools-0.5/src/include/OS/file.h ivtools-0.5/src/include/OS/host.h ivtools-0.5/src/include/OS/leave-scope.h ivtools-0.5/src/include/OS/list.h ivtools-0.5/src/include/OS/math.h ivtools-0.5/src/include/OS/memory.h ivtools-0.5/src/include/OS/os.h ivtools-0.5/src/include/OS/string.h ivtools-0.5/src/include/OS/table.h ivtools-0.5/src/include/OS/table2.h ivtools-0.5/src/include/OS/types.h ivtools-0.5/src/include/OS/ustring.h ivtools-0.5/src/include/TIFF/Imakefile ivtools-0.5/src/include/TIFF/Makefile ivtools-0.5/src/include/TIFF/format.h ivtools-0.5/src/include/TIFF/tiff.h ivtools-0.5/src/include/TIFF/tiffio.h ivtools-0.5/src/include/Unidraw/Commands/Imakefile ivtools-0.5/src/include/Unidraw/Commands/Makefile ivtools-0.5/src/include/Unidraw/Commands/align.h ivtools-0.5/src/include/Unidraw/Commands/brushcmd.h ivtools-0.5/src/include/Unidraw/Commands/catcmds.h ivtools-0.5/src/include/Unidraw/Commands/colorcmd.h ivtools-0.5/src/include/Unidraw/Commands/command.h ivtools-0.5/src/include/Unidraw/Commands/data.h ivtools-0.5/src/include/Unidraw/Commands/datas.h ivtools-0.5/src/include/Unidraw/Commands/dirty.h ivtools-0.5/src/include/Unidraw/Commands/edit.h ivtools-0.5/src/include/Unidraw/Commands/font.h ivtools-0.5/src/include/Unidraw/Commands/import.h ivtools-0.5/src/include/Unidraw/Commands/macro.h ivtools-0.5/src/include/Unidraw/Commands/nop.h ivtools-0.5/src/include/Unidraw/Commands/patcmd.h ivtools-0.5/src/include/Unidraw/Commands/struct.h ivtools-0.5/src/include/Unidraw/Commands/transforms.h ivtools-0.5/src/include/Unidraw/Commands/viewcmds.h ivtools-0.5/src/include/Unidraw/Components/Imakefile ivtools-0.5/src/include/Unidraw/Components/Makefile ivtools-0.5/src/include/Unidraw/Components/cglue.h ivtools-0.5/src/include/Unidraw/Components/component.h ivtools-0.5/src/include/Unidraw/Components/compview.h ivtools-0.5/src/include/Unidraw/Components/connector.h ivtools-0.5/src/include/Unidraw/Components/csolver.h ivtools-0.5/src/include/Unidraw/Components/ellipse.h ivtools-0.5/src/include/Unidraw/Components/externview.h ivtools-0.5/src/include/Unidraw/Components/grcomp.h ivtools-0.5/src/include/Unidraw/Components/grview.h ivtools-0.5/src/include/Unidraw/Components/gvupdater.h ivtools-0.5/src/include/Unidraw/Components/line.h ivtools-0.5/src/include/Unidraw/Components/link.h ivtools-0.5/src/include/Unidraw/Components/pad.h ivtools-0.5/src/include/Unidraw/Components/pin.h ivtools-0.5/src/include/Unidraw/Components/polygon.h ivtools-0.5/src/include/Unidraw/Components/psformat.h ivtools-0.5/src/include/Unidraw/Components/psview.h ivtools-0.5/src/include/Unidraw/Components/rastercomp.h ivtools-0.5/src/include/Unidraw/Components/rect.h ivtools-0.5/src/include/Unidraw/Components/slot.h ivtools-0.5/src/include/Unidraw/Components/spline.h ivtools-0.5/src/include/Unidraw/Components/stencilcomp.h ivtools-0.5/src/include/Unidraw/Components/text.h ivtools-0.5/src/include/Unidraw/Components/vertices.h ivtools-0.5/src/include/Unidraw/Graphic/Imakefile ivtools-0.5/src/include/Unidraw/Graphic/Makefile ivtools-0.5/src/include/Unidraw/Graphic/damage.h ivtools-0.5/src/include/Unidraw/Graphic/ellipses.h ivtools-0.5/src/include/Unidraw/Graphic/geomobjs.h ivtools-0.5/src/include/Unidraw/Graphic/graphic.h ivtools-0.5/src/include/Unidraw/Graphic/grblock.h ivtools-0.5/src/include/Unidraw/Graphic/lines.h ivtools-0.5/src/include/Unidraw/Graphic/picture.h ivtools-0.5/src/include/Unidraw/Graphic/polygons.h ivtools-0.5/src/include/Unidraw/Graphic/pspaint.h ivtools-0.5/src/include/Unidraw/Graphic/rasterrect.h ivtools-0.5/src/include/Unidraw/Graphic/splines.h ivtools-0.5/src/include/Unidraw/Graphic/ulabel.h ivtools-0.5/src/include/Unidraw/Graphic/ustencil.h ivtools-0.5/src/include/Unidraw/Graphic/util.h ivtools-0.5/src/include/Unidraw/Graphic/verts.h ivtools-0.5/src/include/Unidraw/Imakefile ivtools-0.5/src/include/Unidraw/Makefile ivtools-0.5/src/include/Unidraw/Tools/Imakefile ivtools-0.5/src/include/Unidraw/Tools/Makefile ivtools-0.5/src/include/Unidraw/Tools/connect.h ivtools-0.5/src/include/Unidraw/Tools/grcomptool.h ivtools-0.5/src/include/Unidraw/Tools/magnify.h ivtools-0.5/src/include/Unidraw/Tools/move.h ivtools-0.5/src/include/Unidraw/Tools/reshape.h ivtools-0.5/src/include/Unidraw/Tools/rotate.h ivtools-0.5/src/include/Unidraw/Tools/scale.h ivtools-0.5/src/include/Unidraw/Tools/select.h ivtools-0.5/src/include/Unidraw/Tools/stretch.h ivtools-0.5/src/include/Unidraw/Tools/tool.h ivtools-0.5/src/include/Unidraw/_defines.h ivtools-0.5/src/include/Unidraw/_undefs.h ivtools-0.5/src/include/Unidraw/catalog.h ivtools-0.5/src/include/Unidraw/classes.h ivtools-0.5/src/include/Unidraw/clipboard.h ivtools-0.5/src/include/Unidraw/creator.h ivtools-0.5/src/include/Unidraw/ctrlinfo.h ivtools-0.5/src/include/Unidraw/dialogs.h ivtools-0.5/src/include/Unidraw/editor.h ivtools-0.5/src/include/Unidraw/editorinfo.h ivtools-0.5/src/include/Unidraw/enter-scope.h ivtools-0.5/src/include/Unidraw/globals.h ivtools-0.5/src/include/Unidraw/grid.h ivtools-0.5/src/include/Unidraw/iterator.h ivtools-0.5/src/include/Unidraw/keymap.h ivtools-0.5/src/include/Unidraw/kybd.h ivtools-0.5/src/include/Unidraw/leave-scope.h ivtools-0.5/src/include/Unidraw/manip.h ivtools-0.5/src/include/Unidraw/manips.h ivtools-0.5/src/include/Unidraw/path.h ivtools-0.5/src/include/Unidraw/selection.h ivtools-0.5/src/include/Unidraw/statevar.h ivtools-0.5/src/include/Unidraw/statevars.h ivtools-0.5/src/include/Unidraw/stateview.h ivtools-0.5/src/include/Unidraw/stateviews.h ivtools-0.5/src/include/Unidraw/transfn.h ivtools-0.5/src/include/Unidraw/transfns.h ivtools-0.5/src/include/Unidraw/uarray.h ivtools-0.5/src/include/Unidraw/uctrl.h ivtools-0.5/src/include/Unidraw/uctrls.h ivtools-0.5/src/include/Unidraw/uformat.h ivtools-0.5/src/include/Unidraw/uhash.h ivtools-0.5/src/include/Unidraw/ulist.h ivtools-0.5/src/include/Unidraw/umap.h ivtools-0.5/src/include/Unidraw/unidraw.h ivtools-0.5/src/include/Unidraw/upage.h ivtools-0.5/src/include/Unidraw/viewer.h ivtools-0.5/src/include/std/Imakefile ivtools-0.5/src/include/std/Makefile ivtools-0.5/src/include/std/osfcn.h ivtools-0.5/src/include/std/stdio.h ivtools-0.5/src/include/std/string.h ivtools-0.5/src/scripts/Imakefile ivtools-0.5/src/scripts/Makefile ivtools-0.5/src/scripts/bsdinst.sh ivtools-0.5/src/scripts/chgsuffix.sh ivtools-0.5/src/scripts/cpu.sh ivtools-0.5/src/scripts/ivmkmf.cpp ivtools-0.5/src/scripts/mkdirhier.sh ivtools-doc/ivtools-0.5-README.txt0000644000076500007650000002513607374262632017361 0ustar scottscott00000000000000 README for ivtools 0.5 This directory contains a release of the ivtools 0.5.10 from Vectaport Inc.. You should read the rest of this file for information on what ivtools is and the INSTALL file for instructions on how to build it. It is known to build with many versions of gcc (2.6.3, 2.7.2, 2.7.2.1) and on a variety of Unix'es: SunOS 4.1 (MIT's X11R5), Solaris 5.2 (X11R6), Irix 5.2 (SGI's X11R5), Linux 1.2 (Slackware 3.0, XFree86 3.1) and Linux 2.0 (RedHat 4.0 and 4.1). There is also a contributed config for HPUX. You can pick up ELF binaries for Linux from the ivtools web page (http://www.vectaport.com/ivtools/). The overall copyright and permission notice for ivtools can be found in the COPYRIGHT file in this directory. If you have a question about this software, desire to contribute code, found a bug, or wonder how to get further assistance, please send e-mail to info@vectaport.com. * What is ivtools?: ivtools is a framework for building custom drawing editors and servers. It is a collection of C++ libraries and example programs that incorporates and evolves the last source tree for InterViews 3.1 published by Stanford University and Silicon Graphics (3.2a.tar.Z). ivtools comprises four sets of interrelated capabilities useful for application programmers. The first set is the libraries and example programs we borrowed whole from InterViews 3.1. The second set is for reusing and extending the light-weight glyph objects of InterViews 3.1. The third set reuses and extends the Unidraw library (Unidraw is a major portion of the overall InterViews 3.1 release that provides an application framework for custom drawing editors). The fourth set adds a command interpreter and server mechanism to ivtools, and demonstrates these capabilities with text, glyph, and graphic front-ends. These are the libraries and example programs borrowed straight from InterViews 3.1: IV library of InterView 3.1, InterViews 2.6, Dispatch, OS, and TIFF objects dclock digital clock with fading digits iclass C++ class browser idemo glyph demo These are the libraries and example programs that make up the glyph part of ivtools (programs in the glyphs directory): IVGlyph library of Glyph derived classes bdvtable bounded-value editing formdemo value-editing gclock glyph-based clock meter sliding meter radiogroup radio-buttons scrollable 2d scrollable glyph scrollfield 2d scrollable field-editor strchooser string chooser text-editor emacs-like text editor timestamp editable time glyph These are the libraries and example programs that make up the Unidraw part of ivtools: Unidraw copy of Unidraw library from InterViews 3.1 UniIdraw librarification of 3.1 idraw OverlayUnidraw extended Unidraw framework Topology spatial network library (nodes, edges, faces) GraphUnidraw graph browser/editor library FrameUnidraw multi-frame display mechanism idraw idraw built on UniIdraw library drawtool extended version of idraw built on OverlayUnidraw graphdraw graph browser/editor integrated with drawtool flipbook flipbook multi-frame editor based on drawtool These are the libraries that make up the command interpreter part of ivtools: ComUtil command interpreter utility functions Attribute attribute property list mechanism AttrGlyph glyphs for Attribute library ComTerp command interpreter objects ComGlyph glyphs for ComTerp library ComUnidraw command interpreter augmentation DrawServ drawing server framework comtest test program comterp sample command interpreter glyphterp command interpreter user interface comdraw drawtool with command interpreter drawserv comdraw with graphs There is also a Time library with Date and Time classes borrowed from the NIH's class library. A series of makefile targets support the checkin of sources to cvs/rcs, and their subsequent update and modification. This requires cvs (at least 1.3) available from the Free Software Foundation and ivmkcm-0.7 available through http://www.vectaport.com/ivmkcm/ * Acknowledgements: ivtools programmers at Vectaport: Scott Johnston (johnston@vectaport.com) Jorge Gautier (jgautier@vectaport.com) ivtools programmers at large: Brian Hogencamp (brian@ciderpress.com) Rick Kissh (rkissh@access.digex.net) InterViews 3.1 programmers that we know of: Mark Linton John Vlissides Paul Calder John Interrante Steven Tang First brought up on HPUX (HP-800) by Neal Becker (neal@ctd.comsat.com). The InterViews libraries (Dispatch, IV, IV-2_6, IV-X11, InterViews, OS, TIFF) and example programs (iclass, idemo, idraw) are copied from the InterViews 3.1 sources. Here is the aggregrate copyright notice for that software package: /* * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * Copyright (c) 1991 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Stanford and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Stanford and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL STANFORD OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The building of iv-3.1 with gcc-2.5.* (and subsequent versions) was enabled by a patch from Adam Zell. The TIFF library was written by Sam Leffler and published with this copyright and permission notice: /* * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991, 1992 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The strchooser example and StrChooser class were contributed by David B. Hollenbeck (dave@fremenworks.org), as well as the glyph-based Motif-look pull-down menus of OverlayUnidraw. Here is his copyright notice: /* * Copyright (c) 1993 David B. Hollenbeck * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notice and this permission notice appear in * all copies of the software and related documentation, and (ii) the name of * David B. Hollenbeck may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of David B. Hollenbeck. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL DAVID B. HOLLENBECK BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The scrollable example is based on code from Chen Wang (chen@cs.toronto.edu). The text-editor example program is by Jan Andersson of Torpa Konsult AB (janne@torpa.se). Here is that copyright notice: // // Simple Text Editor // // // Copyright (C) 1993 Ellemtel Telecommunication Systems Labratories // // Permission is granted to any individual or institution to use, copy, // modify, and distribute this software, provided that this complete // copyright and permission notice is maintained, intact, in all copies // and supporting documentation. // // Ellemtel Telecommunication Systems Labratories make no representation // of the suitability of this software for any purpose. It is provided // "as is" without any expressed or implied warranty. // // Jan Andersson, Torpa Konsult AB // janne@torpa.se - 1993-08-29 The Date and Time classes in the Time library are borrowed from the NIHCL class library, written by K. E. Gorlen, Computer Sciences Laboratory, DCRT, National Institutes of Health, Bethesda, MD 20892, and published with this notice: THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A "UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY. The ComUtil library was originally developed at Triple Vision Inc. under NSF Grant ISI-8521259 (authors/contributors: Robert C. Fitch, Richard A. Fundakowski, Robert K. Graber, Scott E. Johnston). ivtools has been developed with partial support from IET Inc. (P.O. Box 112450, Campbell, CA 95011) in the form of an ARPA subcontract (Prime Contract Number DACA76-93-C-0025) to Vectaport Systems Inc. (P.O. Box 471801, San Francisco, CA 94147). ivtools has also been developed with partial support from Applied Sciences Inc, San Francisco, CA, in the form of a subcontract for a NASA Phase II SBIR. ivtools-doc/ivtools-0.6-CHANGES.txt0000644000076500007650000011706707374262632017502 0ustar scottscott00000000000000October 23rd 1998 ivtools-0.6.12 Drawing Editor Changes * ivtools drawtool can now automatically open or import (over the net) a wider variety of graphical file formats, using external filters that convert to idraw PostScript or a pbmplus image format: arbitrary PostScript --> pstoedit GIF --> giftopnm TIFF --> tiftopnm JPEG --> djpeg drawtool can also launch on idraw PostScript and pbmplus image formats (PBM/PGM/PPM in raw and ASCII), a new feature. Before these could only be imported. The import dialog box still behaves the same as before. It can import drawtool or idraw documents, PBM/PGM/PPM image formats, anything that can be converted with a Unix command line to those formats if the "pipe-from-filter" button is checked, and anything that can be handled by the anytopnm script if the "auto-convert" button is checked. * ivtools flipbook inherits the same new support for an extended set of graphic file formats imported over the net. However it still only launches on (opens) flipbook format files. Script Changes * add a new bash script, cntsrclines, to count the lines of source in a source tree, using comterp to sum it up. * add a new bash script, tiftopnm, which wraps the pbmplus filter tifftopnm, which can't handle stdin directly itself. * add support for dithering of JPEG's to the standard colormap to anytopnm. * add support for using a newly created temporary file name in the ivgetjpg script, which downloads a JPEG URL using w3c and exports it over the net to an ivtools drawing editor using comterp in telcat mode. Utility Changes * add a new src/utils directory, and populate it with two small programs: tmpnam -- write newly generated temporary file name to stdout. stdcmapppm -- write 216 pixel PPM image with one entry for each color in the standard X11 colormap (6R*6G*6B == 216). Both are used in the tiftopnm and anytopnm scripts described above. * change "comterp telcat" to read/write with a 1K buffer instead of a character at a time. Library Changes -- ComTerp -- * fix bugs in ComTerp where the nargs associated with a KeywordType ComValue were being taken from ::nargs instead of ::keynarg_val. * fix bug in ComTerpServ where a new _pbuf was getting allocated of size _pfnum instead of _pfsiz. * fix bug in saving ComTerp state in ComTerpServ(const char* expression...) Similar problems still exist in ComTerp::runfile and ComTerpServ::runfile, I'm sure. * zero out all the unique member variables of ComValue (the ones that AttributeValue does not have). -- OverlayUnidraw -- * fix bug in OverlayCatalog where member variable _ed needed to be initialized to nil before it was set. Similar bug in OverlayEditor for _viewer member variable. * change OverlayCatalog::Retrieve to use an OvImportCmd to construct whatever it needs. In this way the open (via dialog box or command line) and import over the net can handle the same set of file formats. The import via dialog box hasn't been modified yet to make use of this mechanism, so the set of formats it supports with or without the auto-convert button is different. * add support to OvImportCmd::Import(istream&) for new file formats using external filters that convert to idraw or pbmplus formats as described above. * fix over-the-net import for PGM and PPM ASCII formats * add support for reading ASCII PBM images. -- FrameUnidraw -- * add support for importing drawtool documents via dialog box into the flipbook editor. -- ComUnidraw -- * add an update func to ComUnidraw, to do an immediate mode update of the Unidraw environment. This allows for watching the progress of a for-loop in comdraw that is drawing graphics. Config/Build Changes * make use of the --prefix=DIR argument of the ./configure script, to set the prefix used when InstallRelative is false. * change all the Imakefile's to not use -xc or -xc++ argument for gcc/g++ (because various egcs distributions no longer support this). * add rules to config/rules.def to support explicit C (instead of C++) compilation. Tie this to the configure script's CC variable. * change the default CCDriver for Linux to g++, and create a default CDriver, gcc. * move build of GraphUnidraw and graphdraw after FrameUnidraw and flipbook. October 6th 1998 ivtools-0.6.11 Config and Miscellaneous Changes * utilize the configure script to determine the C++ compiler * make use of the configure script the default for all supported OS'es (i.e. linux, solaris, sunos4, hpux, irix5, and alpha). * add --enable-install-relative[=ARG] and --enable-use-rpath[=ARG] to the configure script. * make use of the PWD environment variable to define the base of the ivtools source tree, which is in turn used to fix this value for the ivmkmf script. Now the ivmkmf script can be slackly used from within something like the original 3.1 source tree to build stand-alone example programs (i.e. doc or logo) on top of ivtools. * add shell script wrappers that preset the PATH and LD_LIBRARY_PATH environment variables for each of the following executables: ivct --> comterp ivdt --> drawtool ivcd --> comdraw ivfb --> flipbook ivgd --> graphdraw ivds --> drawserv * make most of the changes suggested by Bruno Delfosse after compiling with insure++ 4.1 on an Alpha. This tool discovered places where no value was returned, places where the number and type of arguments to a printf call did not match the format string, and a few places where significance was lost when converting a pointer to an int on a 64 bit architecture. It also reported on places where a local (auto) variable reference was returned, and called it an error. However, since the reference was to a non-local variable (an object in the middle of a member array of objects) these were ignored. A patch was added to the web pages that can be used to reproduce his build environment: http://www.vectaport.com/ivtools/insure.ALPHA.patch Drawing Editor Changes * change the orientation of the Text manipulator when the orientation of the viewer has changed. Debian bug request by Mark Eichin , #26165. Interpreter Changes * finalize implementation of while and for commands. Here are two sets of test commands that now work as expected: for(i=0 i<10 i++ :body if(i/2*2==i :then print("even\n") :else print("odd\n"))) i=10;while(i :body i--;print("%d\n" i)) * add sum, mean, var, stddev, and sqrt commands to comterp * make the interpreters brought up under the Editors menu (in comdraw, flipbook, and graphdraw) be an instance of the default interpreter for that application. In this way the interactive interpreter dialog box can be used to control the application. However it still needs some thought and work, because by default it is set up to act on only the current selection list, computing attributes for each selected object. Library Changes -- ComTerp -- * fix bug in ComTerp::eof(), where an empty unitialized token buffer would cause a segfault. -- Unidraw -- * upgrade Unidraw to work on 64 bit architectures, by changing the places where an int was being used to store a void*. This affected the Unidraw API in two places: ObjectMap::GetId and UHashTable::Hash, which now return an unsigned long instead of an int. -- ComUnidraw -- * add all the default commands to the interpreter initialized by ComEditor::AddCommands(ComTerp*) -- FrameUnidraw -- * actually check the value of FrameEditor::_autonewframe before executing the body of FrameEditor::DoAutoNewFrame(). September 24th 1998 ivtools-0.6.10 Config and Miscellaneous Changes * introduce a configure script that has been setup and tested on Linux only. See Appendix A in the INSTALL file for more details. * add a MANIFEST.perceps file to list the files processed by PERCEPS (http://friga.mer.utexas.edu/mark/perl/perceps/). Resulting web pages posted at: http://www.vectaport.com/ivtools/classes/ Drawing Editor Changes * fix recently introduced bug in "New View" command. Now it is back to its old self. Interpreter Changes * fix evaluation of nested post-evaluation (control) commands with keyword arguments. So now something like the following works: if(a :then if(b :then if(c :then "abc" :else "ab!c") :else if(c :then "a!bc" :else "a!b!c")) :else if(b :then if(c :then "!abc" :else "!ab!c") :else if(c :then "!a!bc" :else "!a!b!c"))) By default this will print "!a!b!c". Set values of a, b, and c (i.e. "a=1") to see the other possibilities. Library Changes -- OverlayUnidraw -- * fix ArrowMultiLinePS::Definition to better support ivmaps export of map line features in idraw postscript format. September 14th 1998 ivtools-0.6.9 Drawing Editor Changes * add support for ASCII PGM and PPM image files to the import service of all the drawing editors (previously it was supported only via the import dialog box). * add "Auto New Frame" mode (under the Frame menu) to flipbook editor, so that each imported object can automatically be placed in a newly created frame. This feature is enabled by default for the import service but not the import dialog box. * limit screen repair on the flipbook editor to only the times when something actually changed within the viewer. This speeds the processing of repeated Ctrl-f's that run off the end of the frames. Interpreter Changes * fix display of parser/scanner error strings. Now something like "3 + + 4" or an unterminated character string (no double-quote or back-slash before a new-line) are handled correctly and reported on correctly. This has always been a capability of the underlying compiler components written in C (fashioned after the Fischer-LeBlanc textbook), but a bug existed in the interface to the C++ objects. Library Changes -- ComUtil -- * convert to all new-style function arguments to facilitate compilation with CC (type declararions included with argument names). * add an underbar to the front of ComUtil files parser.c, scanner.c, and lexscan.c, to keep gdb from confusing them with ComTerp/parser.c, ComTerp/scanner.c, and Attribute/lexscan.c. -- ComTerp -- * add a "boolean once=false" argument to ComTerp::run, so that it can be used by ComTerp/comhandler.c * use the body of ComTerp::run from ComTerpServ::run, instead of its own copy of the run-eval loop. * add Parser::Parser(istream&), so a parser can be started up on an existing istream. Also add static methods Parser::istream_fgets, ::istream_feof, and ::istream_ferror, so the scanner, parser, or interpreter can be run on an istream as well a FILE* and via sockets. -- OverlayUnidraw -- * add support for ASCII PGM and PPM to OvImportCmd::Import(istream&) * add OverlayScript::skip_comp(istream&) to skip unrecognized components being read in by an istream constructor (of something derived from OverlayComp). * fix defaulting of _grayflag in OverlayRaster to false. -- FrameUnidraw -- * add auto-new-frame mode to FrameEditor, which causes OvImportCmd to create a new frame for each import. New methods on FrameEditor: virtual void ToggleAutoNewFrame(); virtual boolean AutoNewFrame(); virtual void DoAutoNewFrame(); // used by import command with a DoAutoNewFrame required on OverlayEditor, so OvImportCmd can use it. * add AutoNewFrameCmd to call FrameEditor::ToggleAutoNewFrame Script Changes * add ivgetjpg.bash script to download JPEG file using w3c, dither its colormap and convert it to ppm using djpeg, and export to import service on a drawing editor using comterp. * remove fgrab10.bash and cntsrcheng.bash scripts, because of their lack of general applicability. * fix to ivmkmf script when -a not supplied as argument. Config and Miscellaneous Changes * incorporate some of the diffs from patch for Debian package ivtools-0.6.7-1 * switch the LdPath rule (from config/rules.def) to use IVTOOLSSRC instead of LIBSRC. Since the LdPath rule is used only to find the original iv-3.1 libraries, this works in more situations, including in a directory set up with ivmkmf. August 14th 1998 ivtools-0.6.8 Interpreter Changes * add a print func to comterp -- print(fmtstr val) * disable continuation prompting (">") when running comterp from a pipe or socket. * add a postfix func to comterp, to display the result of the scanner/parser for debug purposes. Tokens are printed in postfix order, with each command or symbol followed by a pair of bracketed numbers that indicate the number of arguments and keywords associated with the token, and each keyword is followed by a 1 or 0 to indicate if it has an associated argument or not. For example: postfix(func1(a*b :key1 c :key2)) prints this: a b mpy[2|0] c :key1(1) :key2(0) func1{2|2} * add a posteval func to comterp, to test out a new mechanism for post-evaluation of a func's arguments, a pre-requisite for implementing conditional control operators. * reimplement the cond operator to use post evaluation. * experimentally add if, for, and while control funcs to comterp: if(booltest :then thenexpr :else elseexpr) for(initexpr whileexpr [nextexpr] :body bodyexpr) while(untilexpr :body bodyexpr) Library Changes -- ComTerp -- * add a new iofunc.c module for the print func. * add a new postfunc.c module for the post-evaluations funcs described above. * add new methods to ComFunc to support post (or lazy) evaluation, a first step in implementing conditional run-time control operators: stack_arg_post_eval, stack_key_post_eval, skip_arg_on_stack, and skip_key_on_stack. -- InterViews -- * redeclare an ApplicationWindow(Glyph*) constructor to go along with the ApplicationWindow(Glyph*, const char* display) constructor introduced in the last release. The "display" argument had been defaulted to nil, which made for backward compatibility, but it turns out Target Jr had a copy of the IV-X11/xwindow.c in it source tree, so xcv, the main Target Jr app, wouldn't link without the original ApplicationWindow constructor as well. This represents a somewhat rare duplication or interface modification of original InterViews sources in either distribution (Target Jr or ivtools) and kind of ironic that we bumped heads over it. But the workaround was simple. * fix segfault in the use of idraw's FileChooser dialog box (for Open and Import). It was caused by a pointer to a deleted transient window that is saved by the string editor, and when the dialog box is redrawn because of a change in caption, this pointer is used to unmap the window, which fails. The fix was to create a bodyclear() method on FileChooser and MonoGlyph, so that the internals of the FileChooser could be cleared before the caption is changed which triggers a complete rebuild of the glyph tree. The end result is still as inefficient as it ever was (requiring the complete rebuild of the dialog box for every action), but it works. And a more efficient implementation can be found in the IVGlyph library's OpenFileChooser class which is used by the rest of ivtools drawing editors. Script Changes * add a "make Makefile" to the execution of ivmkmf when -a is not specified. This snaps the new Makefile to the current directory, which is needed even if "make Makefiles" and "make depend" are not. Config Changes * more configuration changes for Alpha from Bruno Delfosse at Thomson-CSF. Now it has been verified to work. * introduction of an experimental configure script and configure.in autoconf file borrowed from Target Jr 3.1 and modified. Configure options of interest so far that would be specific to ivtools: --with-ace= Path to ACE --with-ace-libs= Path to ACE libraries --with-clippoly= Path to clippoly --with-clippoly-libs= Path to clippoly libraries --with-fresco= path to Fresco --with-fresco-libs= path to compiled Fresco libs --with-x use the X Window System The fresco options would do nothing until some use of Fresco glyphs is made underneath Unidraw or 3.1 glyphs. The with-x option (should it be without-x?) could be used to build a comterp only version of ivtools. The next step is to hook up the two mechanisms of configure and imake. Right now when you run configure from the top-level directory it executes until it can't find config/"host"-"compiler".mk (i.e. config/linux-gcc.mk). This seems where the connection between the config/site.def.$CPU files and the config/*.mk files could be made in some fashion. This represents an opportunity for any party who always wanted InterViews to be auto-configured. One thing to note: there needs to be a mapping between the upper-case $CPU convention of InterViews and the lower case os-arch-compiler (or whatever it is) of GNU. This is an issue when building Target Jr on top of ivtools as well, one that can be worked around by simply using the upper case convention. But maybe someone else has an idea of a better way to proceed. July 9th 1998 ivtools-0.6.7 Drawing Editor Changes * in drawtool add a "Graylevel Processing" sub-menu to the Edit menu, with a Scale, LogScale, and PseudoColor options. * group similar items on the View menu into a submenu for each: - graphic hide/show - viewer chain/unchain - graphic fix/unfix size * add an "Enable Looping" and "Disable Looping" to the flipbook Frame menu. Only works in the forward direction at present. Interpreter Changes * add a 'run' argument to comterp, to run a file of commands and exit. * add a createframe(:after) func to flipbook. Library Changes -- InterViews -- * add a nil-defaulted argument to the ApplicationWindow constructor, a new X11 display name, i.e. "localhost:0.0". Tested with a "New Display" command on the View menu of drawtool that is #if 0'd for now. -- Attribute -- * add more type checking methods (both static and otherwise) to AttributeValue (more generic is_integer and is_floatingpoint methods) -- Unidraw -- * increment the idraw format version number to 11 to accomodate changes to work better with plotutil. The only thing changed so far is the addition of closepath's to the postscript output for a circle or ellipse graphic. Future plans are for adding capstyle, joinstyle, and floating point line widths to the brush description. -- UniIdraw -- * fix bug in printing out idraw format version numbers when reading in newer or older versions. -- OverlayUnidraw -- * make the top-level GrayRaster::pseudocolor method calls the lower level GrayRaster::pseudocolor method (instead of the OverlayRaster one). * change the low-level GrayRaster::pseudocolor method to do something more reasonable for a floating point image. * set up the use of a string-editor dialog box to enter the min and max values for linear and log scaling of grayrasters, and conversion of them to color rasters with a pseudocoloring operation. * add blue to the pseudocoloring, going from red to green to blue. * create a do-nothing virtual void OverlayEditor::ResetStateVars method that can be filled in by derived OverlayEditor's. -- FrameUnidraw -- * change to support using with frames disabled, for programs derived from FrameUnidraw that don't always need the mechanism. -- IVGlyph -- * evolve the construction of GFieldEditor to be embedded into Page's and boxes equally well. * create a StrEditDialog for bringing up a single string editor and having the result returned to the application. -- OverlayUnidraw -- * add a GraphicLoc tool to drawtool. Displays the position of a pointer click in the local coordinate system of the graphic. Gives the offset in pixels when clicked on a raster. Script Changes * fix pnmtopgm shell script to avoid infinite loop on an empty file. * add example bash script, fgrab10, that grabs 10 jpeg files from a series of 10 URL's using w3c, converts and dithers them with djpeg, then transfers them to a newly created frame in a separately running flipbook. * add example bash script, cntsrcheng, that counts the number of various search engine URL's found in a file of referring URL's, and plots them as a bar plot in comdraw using plotmtv. Config Changes * change the default on InstallRelative in site.def.$CPU to be NO. * add configuration changes for Alpha from Bruno Delfosse at Thomson-CSF. * move certain definitions from local.def to site.def.$CPU, so that they can be customized in site.def.ALPHA: HasDynamicSharedLibraries, SharedCCFlags, SharedCCLdFlags, BuildRPCClasses * generalize ivxt Imakefile to use $CPU * temporarily disable the default build and install of ivxt, the example program that shows how to wrap Xt and Motif objects around an InterViews application. You can bring it back by changing a #if 0 in src/Imakefile to #if 1 and remaking the Makefiles (make Makefiles). June 5th 1998 ivtools-0.6.6 Overall Changes * test and fix rebuild with ACE-4.5 using egcs Interpreter Changes * add a "shell" command to comterp, for executing arbitary Unix commands via system(3). Library Changes -- TopoFace -- * add a TopoEdgeList::get_edge method that combines the ::elem and ::edge methods into one call. * migrate const's from certain method return values in this library to the method itself, which was probably the original intent. -- Unidraw -- * add two inline methods to Graphic, ::ToggleHide ::ToggleDesensitize, for programmer convenience. -- IVGlyph -- * add blinkability to NameView text labels. -- OverlayUnidraw -- * add a public OverlayEditor::IsClean method, to work around the protected Unidraw::IsClean(Editor*) method. * fix bug in OvImportCmd::TIFF_Raster. It was using the wrong variable to construct the resultant OverlayRaster. -- GraphUnidraw -- * add the propogation of graphic state to EdgeView::Update, which will include the hide/desensitize mask. May 19th 1998 ivtools-0.6.5 Documentation * man pages generated from README's for drawtool, flipbook, and graphdraw from Guenter Geiger, (came with the Debian ivtools-0.6.2-4 diffs). * set up src/man/man1 directory with dclock.1, iclass.1, idraw.1, and ivmkf.1 copied directly from the corresponding original iv-3.1 file (iv/src/man/commands/*.n) Overall Changes * fixes required to build on redhat-5.0, glibc, egcs-1.0.2 * minor diffs gleaned from Debian ivtools-0.6.2-4 Drawing Editor Changes * makes -color6 the default for drawtool. * change "pipe to command" in export dialog box to read "pipe to filter" * add support for ASCII PGM and PPM files. Interpreter Changes * fix up the comterp client mode to interpret and handle continuation prompts "> " * fix up the comterp telcat mode to simply cat the file without expectation of any response. Library Changes -- Attribute -- * add BooleanType to output of AttributeValue * fix a warning in compiling a program that uses ParamList::add_param_first -- ComTerp -- * have ComTerp::read_expr return false when the parser or scanner had a problem, to partially fix the output of parser/scanner error messages. * disable the restoration of _bufptr in a ComTerpServ::run call, because any existing _buffer would be already fully converted to postfix tokens before such a run call was made. * fix up the ComterpHandler::handle_input to handle empty lines of input by echoing a \n -- OverlayUnidraw -- * adds void GrayRaster::graypoke(unsigned long x, unsigned long y, AttributeValue val) * adds OverlayRaster* GrayRaster::pseudocolor( ColorIntensity mingray, ColorIntensity maxgray ) * fixes reading of inlined gray floating point rasters, getting the top2bottom flag right. * fix bug in output of readonly components. * fix raster import on Solaris * changes the boolean function used to detect if a breakout of the Session::read event loop is needed from one that checks only the unidraw update flag, to one that checks both that flag and whether there is anything appended to OverlayUnidraw::_cmdq, a MacroCmd. * add a generic GetFrame method at the OverlayEditor level and change EdgeView::InterpretManipulator to use it. * make sure an OverlayViewer::Update doesn't get done before an OverlayViewer::Resize -- FrameUnidraw -- * take out what seems an unnecesary call to FrameEditor::SetFrame in FrameViewer::Update, because the same thing is done in the proceeding call to FrameEditor::InitFrame. -- GraphUnidraw -- * notify nodes with outgoing edges during edge update * fix EdgeUpdateCmd for subclasses of NodeComp. -- ComUnidraw -- * add a BarPlotFunc using plotmtv and a patched pstoedit-2.60 (see http://www.vectaport.com/ivtools/comdraw.html for details). April 15th 1998 ivtools-0.6.4 * adds a pnmtopgm.sh script, to convert from pbm (binary) or ppm (color) to pgm (gray-level) image formats. * changes from streambuf.h to iostream.h in ComTerp/comterpserv.c to fix-up a Debian ivtools work-around. * remove bug in initialization of attribute expression dialog box. * fix #define's in src/include/std/math.h to use __svr4__ instead of solaris. * define a Version 11 idraw PostScript format for the use of the GNU Plotting Utilities (plotutils-2.0). When finalized it would add support for cap-styles, join-styles, and floating point line widths, to the graphics library underlying idraw and drawtool. * adds a GrayRaster::set_minmax method used to set the minimum and maximum numeric value used when mapping onto the minimum (0) and maximum (255) gray-level values. * adds a static ParamList* RasterOvComp::get_param_list() to return the list of parameter parsing structures, and a ParamList::add_param_first() method useful for overriding a default parameter. April 8th 1998 ivtools-0.6.3 New Programs * adds an ivxt example program, which demonstrates the newly developed embedabbility of an ivtools drawing editor in a Motif or Xt applications that uses the Motif or Xt event loop. Drawing Editor Changes * adds "X" as the keyboard shortcut for "Copy Forward" in flipbook, and "Y" for "Copy Backward" (under the Frame menu). * adds two bash scripts for generating GIF89A animations from the Print dialog box on flipbook, mkgif89a and mkgif89ac. See the scripts in ivtools-0.6/src/scripts for more details, or look at http://www.vectaport.com/ivtools/flipbook.html for instructions on how to use them. * adds an updated anytopnm sh script to ivtools, which gets installed along with the rest of the binaries, which gets used by the import dialog box when the new "auto convert" button is selected. Originally from Jef Poskanzer and pbmplus, it tries to figure out what kind of image file has been selected, and convert it to either pbm, pgm, or ppm format. Doesn't work (yet) for converting ASCII versions of the pbmplus formats to the necessary binary ones. * expanded usage documentation for drawtool, flipbook, and comdraw: * added -panner_off, -zoomer_off, -slider_off arguments to all three. * added -panner_align tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc to all three * added -toolbarloc l|r to drawtool and flipbook * added -help to all three Interpreter Changes * adds sorting for the output of the help command in any comterp. * add a remote command to comterp, which can be tested by running "comterp remote". The documentation for this command is: remote(hoststr portnum cmdstr) -- remotely evaluate command string then locally evaluate result string This can be used to run an arbitrary (new-line terminated) command on a remote server (it doesn't have to be a comterp), and read back a (new-line terminated) result that is then evaluted within the local interpreter and the result pushed on the stack. * adds a continuation prompt to comterp "> ", for when expressions are detected as incomplete by the parser. Disabled when running commands from a file. Glyph Example Changes * reinstates the string chooser in the glyphterp example program that lists all predefined commands in the associated interpreter, including all the operators (i.e. "++") which are converted to commands by the underlying scanner/parser (i.e. "incr_before" or "incr_after"). Library Changes -- InterViews -- * extends the InterViews Session class to allow for something else (like Motif) to create the Display object, by adding a nil-defaulted Display* argument to Session::init. -- Unidraw -- * adds a reverse flag to Unidraw's DirtyCmd, to allow it to be used as "CleanUpCmd", i.e. to clear the modified flag in a drawing editor, which in turn causes the Save dialog box not to appear when an editor is quit. * moves the PageGraphic class definition from Unidraw/upage.c to Unidraw/upage.h, so that other applications can get at the page size after the page graphic is created. -- Attribute -- * adds dump method to AttributeList (Attribute/attrlist.h) for debug purposes. There is also a typedef class AttributeValue _AV; in Attribute/attrvalue.h, to aid in casting in debugger to avoid seeing static class members on ComTerp/comvalue.h when debugging the use of ComValue's. -- ComTerp -- * adds method to ComTerp to return a sorted list of commands added to it. * makes ComTerpServ's run methods re-entrant by saving then restoring more of the interpreter state,, so that a derived ComFunc can call comterp()->run(...) in its execute() method. *add more type test methods to AttributeValue:is_unknown() (whether the type is UnknownType), is_known(), and an is_string() which is true for string and symbol. * adds a fourth boolean argument to ComFunc::stack_key to always return the third argument as the default, not just as a default for when the keyword is supplied without argument. In this case a value of true is returned whenever the keyword is supplied without argument. -- OverlayUnidraw -- * adds these methods to OverlayComp, and the symid version to OverlaysComp: virtual AttributeValue* FindValue (const char* name, boolean last = false, boolean breadth = false, boolean down = true, boolean up = false); virtual AttributeValue* FindValue (int symid, boolean last = false, boolean breadth = false, boolean down = true, boolean up = false); at present only depth-first downward search returning the first value found (prefix) is fleshed out. * sets up mixin classes for indexing gs's, point lists, and pictures (compound graphics) * uses those classes in OverlayIdrawComp to mix in the indices formerly internal to the class. * creates an alternate to OverlayComp::GetAttributeList, ::attrlist(), which returns nil if it doesn't exist, as opposed to creating one. Therefore attribute checking code can be written that never creates an attribute list if one doesn't exist. * used OverlayComp::attrlist to add a readonly attribute to a comp. * changed all the composite comp ::Definition methods to check for the readonly attribute on their children, and suppress output if true. -- FrameUnidraw -- * allows for the reading in of arbitrary graphics in FramesScript::ReadChildren Configuration Changes * adds an ProjectDir definition to config/site.def.$CPU and a PROJECTDIR make variable to config/params.def. Now the base directory for all the source packages relied on for the build of ivtools can be set in a single place. The default is /proj * configuration fixes for Solaris 2.6 compilation -- see http://www.vectaport.com/vectaport/solaris-2.6-build.txt for more details. Bug Fixes * fixes bug in OverlayUnidraw (drawtool), whereby duplicated groups (OverlaysComp's with Picture graphics) shared a Transformer between the subject and the view, which effectively disabled the damage repair mechanism whenever the only change to the group graphic was described by a change to the Transformer (i.e. a rotate, scale, move, or stretch). * fixes a bug in the export of rasters by pathname in drawtool documents February 26th 1998 ivtools-0.6.2 Drawing Editor Changes * conditionally adds a ConvexHull tool to drawtool if qhull from the University of Minnesota Geometry Center can be found via your PATH environment variable. To acquire and build this separate executable see http://www.geom.umn.edu/software/download/qhull.html * adds a "Compute Attributes" item to the Edit menu (SetAttrByExprCmd). This brings up a dialog box on the current selection, and allows the user to enter an arbitrary attribute value expression and evaluate it. For example, if a component had an attribute of "likelihood", a new attribute called "likelihoodsquared" could be set with an expression of "likelihoodsquared=likelihood*likelihood". Keyboard shortcut in drawtool is "#" Interpreter Changes * adds these mathematical functions: acos, asin, atan, atan2, cos, sin, tan, pow, exp, log, log10 * adds a min and max function that promotes operands as needed, similar to the other arithmetic operators. * adds a cond operator that returns one of two values based on a boolean test. Pre-evaluates all parameters (like every other current command except help). In the future there can be "if", "for", and "while" commands that use a lazy, post-evaluation technique. * adds a paste command to comdraw, for use in any derived application that builds up a component that needs pasting in the viewer. Library Changes * TopoFace -- adds methods to construct and return a floating point geomobj that reuses the points without duplicating them: FPointObj* TopoNode::point_obj(); FMultiLineObj* TopoEdge::multiline(); FFillPolygonObj* TopoFace::polygon() * OverlayUnidraw -- - fixes linear scaling and logarithmic scaling of GrayRaster's - fixes mechanism for embedding of a graylevel test strip in GrayRaster's - adds an edlauncher() mechanism to OverlayEditor to allow for the inclusion of arbitrary editors into the main.c of one specific editor. - adds a comterplist() mechanism to OverlayEditor to manage a global list of registered interpreters. Allows for one editor to execute expressions on another editor's associated interpreter. - adds more mouse documentation lines to OverlayKit - adds OverlayViewer ::ScreenToGraphic and ::GraphicToScreen methods, for converting between the x,y of mouse clicks and the coordinate system of a graphic. Useful for addressing individual pixels of a raster. - adds a boolean OverlayKit::bincheck to test for the presence of an executable before relying on it. Uses OverlayKit::bintest under the hood. - mixes in Observer and Observable as multiply inherited base classes of OverlayComp. Now other update/notify systems can be constructed around and within the subject/view hierarchy of a Unidraw editor. * ComTerp -- - clones the above into a ComFunc::bincheck and ComFunc::bintest, for use of generic ComFunc programmers - add a new parameter to ComFunc::argcnts, nargskey (defaulted to zero), which is used by ComTerp to inform the func of how many arguments are associated with keywords. - add a ComTerp::stack_height() method to tell the current size of the stack. Configuration Changes * sets up drawserv to link in FrameUnidraw as well as GraphUnidraw, and then tests this with a new Editors menu that allows for the launching of other GraphEditor's or FrameEditor's * sets up drawserv to be installed with "make install" * sets up comterp to use the original Iterator and UList objects from Unidraw, instead of the ALIterator and AList in the Attribute library. But then, so raw comterp programs won't have to link in all of Unidraw and InterViews, new libraries called Unidraw-command and IV-common were set up to build with only symbolic links to the necessary files: IV-common: listimpl.c, memory.c, regexp.c, resource.c, textbuffer.c Unidraw-common: iterator.c, ulist.c * removes the RCS tags from the TIFF source Bug Fixes * fixes a segfault when attempting to import an empty file * fixes bug in the mechanism for managing absolute and relative pathnames for drawtool and related documents. January 23rd 1998 ivtools-0.6.1 Drawing Editor Changes * clear any error message on the import, export, open, and save-as dialog boxes from previous attempts upon starting a new attempt. Interpreter Changes * add help command that lists available commands by default, or specific information about each command supplied as an argument. * to support the help command the interpreter was evolved to support a lazy-eval command, one that gets invoked before its arguments get computed. The next release of ivtools should make use of this with conditional and looping commands, the traditional control constructs of procedural programming. Library Changes * TopoFace -- add separate methods to attach start and end nodes to an edge: TopoEdge::attach_start_node(TopoNode*); TopoEdge::attach_end_node(TopoNode*); -- and methods to test if a edge starts or ends at this node: TopoEdge::starts_at(TopoNode*); TopoEdge::ends_at(TopoNode*); * OS -- add a method to test the table iterator's current entry. helps avoid a nil pointer reference in case of an empty table: TableEntry(Table)* cur_entry(); * OverlayUnidraw -- fix bugs caught by ElectricFence, including one to the gs-based selection highlighting mechanism of OverlayUnidraw. Also fix problem with flushing of deferred-loading rasters and save/restore of arbitrary numeric gray-level rasters (GrayRaster) * ComTerp -- fix bugs caught by ElectricFence, like referencing off the ComTerp stack. Increase default buffer size on ComTerpServ to 1k. Change the ";" operator (SeqFunc) to return the second argument on the ComTerp stack. Add a ComValue::unkval() to return a static ComValue of UnknownType. * Attribute -- disable Attribute's call to symbol_del which sometimes inadvertently removes a symbol from the symbol table when an Attribute is destructed. This needs to be evolved so that either the symbols are never removed after being created, or there is an accurate ref counting done when using ComUtil's symbol_add and symbol_del. This release also improves the overall memory mgmt of Attribute's, AttributeList's, and AttributeValueList's. Finally, this release adds support for reading in comma-separated list of AttributeValue's (into an AttributeValueList). Configuration Changes * incorporate patches to iv-3.2a published by Randall C. O'Reilly and others of the CMU Psychology Dept., part of the pdp++_1.2 distribution. One thing this does is prefix all the globals in InterViews/coord.h with "iv" (i.e. inch is ivinch, cm is ivcm) if PDP_PLUS_PLUS is defined. If PDP_PLUS_PLUS isn't defined (the default), these global variables stay the same, but #define's are included which prefix "iv". * also incorporate Alpha and Stratus entries for config/arch.def from the pdp++ distribution. Still probably need the associate iv-*.cf files. * change the build order so that ComUnidraw (and comdraw) get built before GraphUnidraw and FrameUnidraw, and then inherit GraphEditor and FrameEditor from ComEditor. * incorporate Doug Scott's iv-3.1 event handling patch that enables use of the shift key. * remove all explicit e-mail addresses from ivtools for spam protection December 23rd 1997 ivtools-0.6 * version change * renamed Topology library to TopoFace to avoid conflict with IUE and Target Jr class libraries of the same name. ivtools-doc/ivtools-0.6-COPYRIGHT.txt0000644000076500007650000000275607374262632020000 0ustar scottscott00000000000000/* * Copyright (c) 1997, 1998 Vectaport Inc., R.B. Kissh and Associates * Copyright (c) 1996 Vectaport Inc., R.B. Kissh and Associates, Cider Press * Copyright (c) 1994, 1995 Vectaport Inc., Cartoactive Systems, Cider Press * Copyright (c) 1991 Silicon Graphics, Inc. * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * related documentation and data files for any purpose is hereby granted * without fee, provided that the above copyright notice appear in all copies * and that both that copyright notice and this permission notice appear in * supporting documentation, and that the names of the copyright holders not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holders * make no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ ivtools-doc/ivtools-0.6-INSTALL.txt0000644000076500007650000002216307374262632017530 0ustar scottscott00000000000000 INSTALL for ivtools-0.6 Instructions for building ivtools-0.6.12 from source: 0. Compilation Environment Tools you will need before you can build: 0.a. a Unix machine. We know it has been built on Linux, SunOS, Solaris, and Irix. We've incorporated diffs to build on HPUX 9.05. It should build on most any Unix machine with similar config changes. 0.b. The gcc compiler. Recently we've been building and testing with gcc-2.7.2.1. gcc-2.7.2, and gcc-2.6.3 will probably still work. You will also need an equivalent copy of libg++. The libg++ version numbers stay roughly in synch with the compiler version numbers. If you have if you have gcc-2.6.3 you'd want libg++-2.6.3, etc.. 0.c. An installed copy of X11R4, X11R5, or X11R6 as distributed by MIT, or equivalent (i.e., XFree86 for Linux, etc.) If you use a vendor's X11 product, the product should be based on R4 or later and the product should include imake and the config files. If imake is not in the same place as the other X11 binaries are or anywhere else on your system, you can get the sources for imake from the X11R5 or X11R6 distribution at several public ftp archives (such as ftp.x.org). 0.d. You also might want to acquire and build clippoly, a LGPLed library for polygon clipping from: http://www.ph.tn.tudelft.nl/People/klamer/clippoly_entry.html Be sure to compile with -fPIC, then make a libclippoly.so in the clippoly directory with: "gcc -shared -o libclippoly.so *.o". 0.e. You also might want to acquire and build ACE, a C++ middleware toolkit available from: http://www.cs.wustl.edu/%7Eschmidt/ACE.html Follow the instructions to build a shared library. We currently use ACE-4.2, with a patch applied to alleviate warnings: http://www.vectaport.com/pub/src/ace4.2warnpatch ACE-4.5 has worked as well with recent versions of gcc and egcs. 0.f some version of lesstif or Motif (libXm), if you want to build the ivxt example program, which demonstrates the embedding of a ivtools drawing editor inside Motif widgets. Without these libraries and include files the build of ivxt will fail, which can be safely ignored. To enable the ivxt build change line 7 of src/Imakefile from "#if 0" to "#if 1". 1. Creating and/or editing config/site.def.$CPU: ************************************************************************* ** note: A configure script now exists that has been tested on Linux, ** ** and might work for HPUX, SunOS, Solaris, Irix, and Alpha. ** ** It still relies on imake, but eliminates the need to ** ** manually edit the config/site.def.$CPU file. If you want to ** ** try it, use the instructions in Appendix A instead of Step 1 ** ** and 2 below. ** ** ** ** To revert to old-style config'ing for any of these OS'es, ** ** change the "#if 0" near the end of the site.def.$CPU file to ** ** a "#if 1" and everything should be the same as before. ** ************************************************************************* 1.a. Set your CPU environment variable to one of the supported types (grep config/arch.def for ArchitectureName to get a complete list or try "make CPU" from the top directory of ivtools). Use "setenv CPU arch" for csh or "export CPU=arch" for sh/bash. LINUX, SUN4, and SGI are known to work. 1.b. Either edit the site.def.$CPU file if it exists, or determine which existing site.def.* is closest to your needs and copy it into site.def.$CPU. ***Edit the parameters in this file as needed for your facility.*** Especially verify that any pathname definitions are correct for your environment. First redefine ProjectDir (at the top of each site.def.$CPU file) to be the directory where links to all relevant software packages can be found (i.e. where the ivtools-0.6 src tree, where clippoly, ACE, and/or lesstif sources can be found if using any of those). Set InstallRelative to YES if you want installation done within the ivtools-0.6 directory, or NO if you want them installed in the BinDir, LibDir, and LibDataDir as described in the installation section below. If you're building on Solaris you can use the SUN4 config file instead of a SUN5 one (config/site.def.SUN4). If you have built the clippoly library uncomment and adjust the definition of ClipPolyDir. This will cause commands that exercise clippoly to be built into ivtools. If you have built the ACE library uncomment and adjust the definition of AceDir. This will cause classes and commands that exercise ACE to be built into ivtools. 1.c. You may also want to take a look at local.def and gcc.def, but you should be able to successfully build ivtools by only changing parameters in your copy of site.def.$CPU. The top of local.def defines macro preprocessor constants that are later used to initialize make variables. The bottom of local.def builds up pathnames to refer to the libraries and important directories of this package. 2. Compiling ivtools: 2.a. cd to the ivtools-0.6/ directory. 2.b. Compile it with a "make World" command. It needs the following variable definitions: XCONFIGDIR The location of your X11 config files. PWD If you're using a shell without this pre-defined Sample Linux command line: make World XCONFIGDIR=/usr/X11R6/lib/X11/config Sample SunOS command line: make World XCONFIGDIR=/usr/local/lib/X11/config Sample Solaris command line: make World XCONFIGDIR=/usr/X/lib/X11/config PWD=`pwd` Sample Irix command line: make World XCONFIGDIR=/usr/lib/X11/config This command generates Makefiles hierarchically and builds everything. 3. Testing: Each directory under ivtools-0.6/src that begins in lower case (except for "include" and "scripts") contains executables that exercise some particular functionality. "cd" to each particular directory, type "$CPU/a.out" and see what happens. Most of the directories have READMEs that go into further detail on how to use the example programs. ivtools-0.6/src/glyphs contains sub-directories of glyph example programs. 4. Installation: "make install" is supported for all the libraries and a subset of the more utilitarian example programs: the four original InterViews programs (idraw, iclass, idemo, and dclock), the four idraw derived programs (drawtool, netdraw, flipbook, and comdraw) and the two comterp programs (comterp and glyphterp). When InstallRelative is NO the binaries are installed as stripped executables in BinDir, the libraries are installed in LibDir, and the run-time X resource and config files are installed in LibAllDir. When InstallRelative is YES (the default in config/site.def.$CPU), the binaries are installed in ivtools-0.6/bin/$CPU, the libraries are installed in ivtools-0.6/lib/$CPU, and the run-time X resource and config files are installed in ivtools-0.6/lib/ivtools. note: idemo, comterp, glyphterp, and comdraw have config files that must be installed (either relative or non-relative) for the program to find them at runtime. Appendix A: configure script A configure script now exists in the top-level directory of ivtools-0.6 that can be used to automatically do some of the configuration that otherwise requires editing config/site.def.$CPU. Now it has been setup to interface with each existing site.def.$CPU file, but only tested for Linux. It works by generating a config/config-$os-gcc.mk (i.e. config/config-linux-gcc.mk) that is included at the bottom of config/site.def.$CPU (i.e. config/site.def.LINUX). So instead of manually editing the pathnames for X11, ACE, and clippoly, you can have the configure script find them or supply them as arguments to the command line. Here are the relevant command line options to the configure script:e --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR --enable-install-relative[=ARG] install relative to source tree --prefix=DIR to use when install-relative false (default is /usr/local) --enable-use-rpath=[=ARG] use -rpath when linking --enable and --with options recognized: --with-ace= Path to ACE source --with-ace-libs= Path to ACE libraries --with-clippoly= Path to clippoly source --with-clippoly-libs= Path to clippoly libraries Here is an example of using the configure script with ACE and clippoly libraries: ./configure --with-ace=/proj/ACE_wrappers --with-ace-libs=/proj/ACE_wrappers/ace --with-clippoly=/proj/clippoly --with-clippoly-libs=/proj/clippoly After successfully running the configure script in the top-level directory, do a "make World" as described in Step 2 above. You won't need the XCONFIGDIR argument, but you'll still need the PWD argument if your shell does not supply this environment variable. To revert to the old-style config'ing, simply change the "#if 0" near the end of any config/site.def.$CPU file to "#if 1", and use the instructions in Step 1 and 2 above as before. Special note for Solaris users of the configure script: you may have to manually set the PWD environment variable prior to running the configure script as well. Any suggestions on how to avoid this PWD environment variable dependency with autoconf and configure are welcome. Send e-mail to ivtools-info@vectaport.com. ivtools-doc/ivtools-0.6-MANIFEST.txt0000644000076500007650000015026707374262632017637 0ustar scottscott00000000000000ivtools-0.6/CHANGES ivtools-0.6/CHANGES-0.5 ivtools-0.6/COPYRIGHT ivtools-0.6/INSTALL ivtools-0.6/Imakefile ivtools-0.6/MANIFEST ivtools-0.6/Makefile ivtools-0.6/README ivtools-0.6/VERSION ivtools-0.6/config/Imakefile ivtools-0.6/config/InterViews/Imakefile ivtools-0.6/config/InterViews/Makefile ivtools-0.6/config/InterViews/TIFF.def ivtools-0.6/config/InterViews/arch.def ivtools-0.6/config/InterViews/cxx.def ivtools-0.6/config/InterViews/iv-DGUX.cf ivtools-0.6/config/InterViews/iv-Mips.cf ivtools-0.6/config/InterViews/iv-aix.cf ivtools-0.6/config/InterViews/iv-alpha.cf ivtools-0.6/config/InterViews/iv-apollo.cf ivtools-0.6/config/InterViews/iv-att.cf ivtools-0.6/config/InterViews/iv-bsd.cf ivtools-0.6/config/InterViews/iv-convex.cf ivtools-0.6/config/InterViews/iv-cray.cf ivtools-0.6/config/InterViews/iv-generic.cf ivtools-0.6/config/InterViews/iv-hp.cf ivtools-0.6/config/InterViews/iv-ibm.cf ivtools-0.6/config/InterViews/iv-linux.cf ivtools-0.6/config/InterViews/iv-luna.cf ivtools-0.6/config/InterViews/iv-m4330.cf ivtools-0.6/config/InterViews/iv-macII.cf ivtools-0.6/config/InterViews/iv-moto.cf ivtools-0.6/config/InterViews/iv-pegasus.cf ivtools-0.6/config/InterViews/iv-sgi.cf ivtools-0.6/config/InterViews/iv-sony.cf ivtools-0.6/config/InterViews/iv-stellar.cf ivtools-0.6/config/InterViews/iv-stratus.cf ivtools-0.6/config/InterViews/iv-sun.cf ivtools-0.6/config/InterViews/iv-ultrix.cf ivtools-0.6/config/InterViews/iv-x386.cf ivtools-0.6/config/InterViews/local.def ivtools-0.6/config/InterViews/params.def ivtools-0.6/config/InterViews/rules.def ivtools-0.6/config/InterViews/xparams.cf ivtools-0.6/config/Makefile ivtools-0.6/config/README.ivmkcm ivtools-0.6/config/alpha3.0-gcc.mk ivtools-0.6/config/alpha3.2-gcc.mk ivtools-0.6/config/alpha4-gcc.mk ivtools-0.6/config/arch.def ivtools-0.6/config/config.mk.in ivtools-0.6/config/config.null.mk ivtools-0.6/config/default-gcc.mk ivtools-0.6/config/freebsd2.1-gcc.mk ivtools-0.6/config/gcc.def ivtools-0.6/config/hpux-gcc.mk ivtools-0.6/config/hpux10.20-gcc.mk ivtools-0.6/config/irix5-gcc.mk ivtools-0.6/config/irix6-gcc.mk ivtools-0.6/config/linux-gcc.mk ivtools-0.6/config/local.def ivtools-0.6/config/m88k-sysv3-gcc.mk ivtools-0.6/config/m88k-sysv4-gcc.mk ivtools-0.6/config/params.def ivtools-0.6/config/rules.def ivtools-0.6/config/sco3.2.4-gcc.mk ivtools-0.6/config/site.def.ALPHA ivtools-0.6/config/site.def.HP800 ivtools-0.6/config/site.def.LINUX ivtools-0.6/config/site.def.SGI ivtools-0.6/config/site.def.SUN4 ivtools-0.6/config/solaris-gcc.mk ivtools-0.6/config/sunos4-gcc.mk ivtools-0.6/config/template ivtools-0.6/configure ivtools-0.6/configure.in ivtools-0.6/include ivtools-0.6/src/AttrGlyph/Imakefile ivtools-0.6/src/AttrGlyph/Makefile ivtools-0.6/src/AttrGlyph/attredit.c ivtools-0.6/src/AttrGlyph/attredit.h ivtools-0.6/src/Attribute/Imakefile ivtools-0.6/src/Attribute/Makefile ivtools-0.6/src/Attribute/_comterp.h ivtools-0.6/src/Attribute/_comutil.h ivtools-0.6/src/Attribute/alist.c ivtools-0.6/src/Attribute/alist.h ivtools-0.6/src/Attribute/aliterator.c ivtools-0.6/src/Attribute/aliterator.h ivtools-0.6/src/Attribute/attribute.c ivtools-0.6/src/Attribute/attribute.h ivtools-0.6/src/Attribute/attrlist.c ivtools-0.6/src/Attribute/attrlist.h ivtools-0.6/src/Attribute/attrvalue.c ivtools-0.6/src/Attribute/attrvalue.h ivtools-0.6/src/Attribute/commodule.c ivtools-0.6/src/Attribute/commodule.h ivtools-0.6/src/Attribute/lexscan.c ivtools-0.6/src/Attribute/lexscan.h ivtools-0.6/src/Attribute/paramlist.c ivtools-0.6/src/Attribute/paramlist.h ivtools-0.6/src/ComGlyph/Imakefile ivtools-0.6/src/ComGlyph/Makefile ivtools-0.6/src/ComGlyph/attrdialog.c ivtools-0.6/src/ComGlyph/attrdialog.h ivtools-0.6/src/ComGlyph/terpdialog.c ivtools-0.6/src/ComGlyph/terpdialog.h ivtools-0.6/src/ComTerp/Imakefile ivtools-0.6/src/ComTerp/Makefile ivtools-0.6/src/ComTerp/WishList ivtools-0.6/src/ComTerp/_comterp.h ivtools-0.6/src/ComTerp/_comutil.h ivtools-0.6/src/ComTerp/assignfunc.c ivtools-0.6/src/ComTerp/assignfunc.h ivtools-0.6/src/ComTerp/boolfunc.c ivtools-0.6/src/ComTerp/boolfunc.h ivtools-0.6/src/ComTerp/comfunc.c ivtools-0.6/src/ComTerp/comfunc.h ivtools-0.6/src/ComTerp/comhandler.c ivtools-0.6/src/ComTerp/comhandler.h ivtools-0.6/src/ComTerp/commodule.h ivtools-0.6/src/ComTerp/comterp.c ivtools-0.6/src/ComTerp/comterp.h ivtools-0.6/src/ComTerp/comterpserv.c ivtools-0.6/src/ComTerp/comterpserv.h ivtools-0.6/src/ComTerp/comvalue.c ivtools-0.6/src/ComTerp/comvalue.h ivtools-0.6/src/ComTerp/condfunc.c ivtools-0.6/src/ComTerp/condfunc.h ivtools-0.6/src/ComTerp/ctrlfunc.c ivtools-0.6/src/ComTerp/ctrlfunc.h ivtools-0.6/src/ComTerp/helpfunc.c ivtools-0.6/src/ComTerp/helpfunc.h ivtools-0.6/src/ComTerp/iofunc.c ivtools-0.6/src/ComTerp/iofunc.h ivtools-0.6/src/ComTerp/lexscan.h ivtools-0.6/src/ComTerp/mathfunc.c ivtools-0.6/src/ComTerp/mathfunc.h ivtools-0.6/src/ComTerp/numfunc.c ivtools-0.6/src/ComTerp/numfunc.h ivtools-0.6/src/ComTerp/parser.c ivtools-0.6/src/ComTerp/parser.h ivtools-0.6/src/ComTerp/postfunc.c ivtools-0.6/src/ComTerp/postfunc.h ivtools-0.6/src/ComTerp/scanner.c ivtools-0.6/src/ComTerp/scanner.h ivtools-0.6/src/ComTerp/statfunc.c ivtools-0.6/src/ComTerp/statfunc.h ivtools-0.6/src/ComTerp/strmfunc.c ivtools-0.6/src/ComTerp/strmfunc.h ivtools-0.6/src/ComUnidraw/Imakefile ivtools-0.6/src/ComUnidraw/Makefile ivtools-0.6/src/ComUnidraw/comeditor.c ivtools-0.6/src/ComUnidraw/comeditor.h ivtools-0.6/src/ComUnidraw/comterp-acehandler.c ivtools-0.6/src/ComUnidraw/comterp-acehandler.h ivtools-0.6/src/ComUnidraw/comterp-iohandler.c ivtools-0.6/src/ComUnidraw/comterp-iohandler.h ivtools-0.6/src/ComUnidraw/grfunc.c ivtools-0.6/src/ComUnidraw/grfunc.h ivtools-0.6/src/ComUnidraw/unifunc.c ivtools-0.6/src/ComUnidraw/unifunc.h ivtools-0.6/src/ComUtil/Imakefile ivtools-0.6/src/ComUtil/Makefile ivtools-0.6/src/ComUtil/_lexscan.c ivtools-0.6/src/ComUtil/_parser.c ivtools-0.6/src/ComUtil/_scanner.c ivtools-0.6/src/ComUtil/atox.c ivtools-0.6/src/ComUtil/comerr.c ivtools-0.6/src/ComUtil/comterp.arg ivtools-0.6/src/ComUtil/comterp.ci ivtools-0.6/src/ComUtil/comterp.err ivtools-0.6/src/ComUtil/comterp.h ivtools-0.6/src/ComUtil/comutil.arg ivtools-0.6/src/ComUtil/comutil.ci ivtools-0.6/src/ComUtil/comutil.h ivtools-0.6/src/ComUtil/dmm.c ivtools-0.6/src/ComUtil/errfile.c ivtools-0.6/src/ComUtil/errsys.c ivtools-0.6/src/ComUtil/funcptrs.c ivtools-0.6/src/ComUtil/mblock.c ivtools-0.6/src/ComUtil/optable.c ivtools-0.6/src/ComUtil/symbols.c ivtools-0.6/src/ComUtil/txtutil.c ivtools-0.6/src/ComUtil/types.c ivtools-0.6/src/ComUtil/util.c ivtools-0.6/src/ComUtil/util.h ivtools-0.6/src/ComUtil/xdll.c ivtools-0.6/src/Dispatch/Imakefile ivtools-0.6/src/Dispatch/Makefile ivtools-0.6/src/Dispatch/ace_dispatcher.c ivtools-0.6/src/Dispatch/ace_iohandler.c ivtools-0.6/src/Dispatch/dispatcher.c ivtools-0.6/src/Dispatch/iohandler.c ivtools-0.6/src/Dispatch/iostreamb.c ivtools-0.6/src/Dispatch/netinet_in.h ivtools-0.6/src/Dispatch/rpcbuf.c ivtools-0.6/src/Dispatch/rpchdr.c ivtools-0.6/src/Dispatch/rpcpeer.c ivtools-0.6/src/Dispatch/rpcreader.c ivtools-0.6/src/Dispatch/rpcregistry.c ivtools-0.6/src/Dispatch/rpcservice.c ivtools-0.6/src/Dispatch/rpcstream.c ivtools-0.6/src/Dispatch/rpcwriter.c ivtools-0.6/src/DrawServ/Imakefile ivtools-0.6/src/DrawServ/Makefile ivtools-0.6/src/DrawServ/WishList ivtools-0.6/src/DrawServ/comcatalog.c ivtools-0.6/src/DrawServ/comcatalog.h ivtools-0.6/src/DrawServ/comclasses.h ivtools-0.6/src/DrawServ/comcomps.c ivtools-0.6/src/DrawServ/comcomps.h ivtools-0.6/src/DrawServ/comcreator.c ivtools-0.6/src/DrawServ/comcreator.h ivtools-0.6/src/DrawServ/comkit.c ivtools-0.6/src/DrawServ/comkit.h ivtools-0.6/src/DrawServ/comviews.c ivtools-0.6/src/DrawServ/comviews.h ivtools-0.6/src/FrameUnidraw/Imakefile ivtools-0.6/src/FrameUnidraw/Makefile ivtools-0.6/src/FrameUnidraw/WishList ivtools-0.6/src/FrameUnidraw/framecatalog.c ivtools-0.6/src/FrameUnidraw/framecatalog.h ivtools-0.6/src/FrameUnidraw/frameclasses.h ivtools-0.6/src/FrameUnidraw/framecmds.c ivtools-0.6/src/FrameUnidraw/framecmds.h ivtools-0.6/src/FrameUnidraw/framecomps.c ivtools-0.6/src/FrameUnidraw/framecomps.h ivtools-0.6/src/FrameUnidraw/framecreator.c ivtools-0.6/src/FrameUnidraw/framecreator.h ivtools-0.6/src/FrameUnidraw/frameeditor.c ivtools-0.6/src/FrameUnidraw/frameeditor.h ivtools-0.6/src/FrameUnidraw/framefile.c ivtools-0.6/src/FrameUnidraw/framefile.h ivtools-0.6/src/FrameUnidraw/framefunc.c ivtools-0.6/src/FrameUnidraw/framefunc.h ivtools-0.6/src/FrameUnidraw/framekit.c ivtools-0.6/src/FrameUnidraw/framekit.h ivtools-0.6/src/FrameUnidraw/frameps.c ivtools-0.6/src/FrameUnidraw/frameps.h ivtools-0.6/src/FrameUnidraw/framescripts.c ivtools-0.6/src/FrameUnidraw/framescripts.h ivtools-0.6/src/FrameUnidraw/framestates.c ivtools-0.6/src/FrameUnidraw/framestates.h ivtools-0.6/src/FrameUnidraw/frameviewer.c ivtools-0.6/src/FrameUnidraw/frameviewer.h ivtools-0.6/src/FrameUnidraw/frameviews.c ivtools-0.6/src/FrameUnidraw/frameviews.h ivtools-0.6/src/GraphUnidraw/Imakefile ivtools-0.6/src/GraphUnidraw/Makefile ivtools-0.6/src/GraphUnidraw/WishList ivtools-0.6/src/GraphUnidraw/edgecomp.c ivtools-0.6/src/GraphUnidraw/edgecomp.h ivtools-0.6/src/GraphUnidraw/graphcatalog.c ivtools-0.6/src/GraphUnidraw/graphcatalog.h ivtools-0.6/src/GraphUnidraw/graphclasses.h ivtools-0.6/src/GraphUnidraw/graphcmds.c ivtools-0.6/src/GraphUnidraw/graphcmds.h ivtools-0.6/src/GraphUnidraw/graphcomp.c ivtools-0.6/src/GraphUnidraw/graphcomp.h ivtools-0.6/src/GraphUnidraw/graphcreator.c ivtools-0.6/src/GraphUnidraw/graphcreator.h ivtools-0.6/src/GraphUnidraw/graphdata.c ivtools-0.6/src/GraphUnidraw/graphdata.h ivtools-0.6/src/GraphUnidraw/graphdialog.c ivtools-0.6/src/GraphUnidraw/graphdialog.h ivtools-0.6/src/GraphUnidraw/grapheditor.c ivtools-0.6/src/GraphUnidraw/grapheditor.h ivtools-0.6/src/GraphUnidraw/graphimport.c ivtools-0.6/src/GraphUnidraw/graphimport.h ivtools-0.6/src/GraphUnidraw/graphkit.c ivtools-0.6/src/GraphUnidraw/graphkit.h ivtools-0.6/src/GraphUnidraw/nodecomp.c ivtools-0.6/src/GraphUnidraw/nodecomp.h ivtools-0.6/src/IV-2_6/Imakefile ivtools-0.6/src/IV-2_6/Makefile ivtools-0.6/src/IV-2_6/adjuster2_6.c ivtools-0.6/src/IV-2_6/banner.c ivtools-0.6/src/IV-2_6/border2_6.c ivtools-0.6/src/IV-2_6/box2_6.c ivtools-0.6/src/IV-2_6/button2_6.c ivtools-0.6/src/IV-2_6/compeditor.c ivtools-0.6/src/IV-2_6/control.c ivtools-0.6/src/IV-2_6/deck2_6.c ivtools-0.6/src/IV-2_6/dialog2_6.c ivtools-0.6/src/IV-2_6/filebrowser.c ivtools-0.6/src/IV-2_6/filechooser.c ivtools-0.6/src/IV-2_6/frame.c ivtools-0.6/src/IV-2_6/glue2_6.c ivtools-0.6/src/IV-2_6/interactor.c ivtools-0.6/src/IV-2_6/matcheditor.c ivtools-0.6/src/IV-2_6/menu2_6.c ivtools-0.6/src/IV-2_6/message.c ivtools-0.6/src/IV-2_6/painter.c ivtools-0.6/src/IV-2_6/panner2_6.c ivtools-0.6/src/IV-2_6/perspective.c ivtools-0.6/src/IV-2_6/rubband.c ivtools-0.6/src/IV-2_6/rubcurve.c ivtools-0.6/src/IV-2_6/rubgroup.c ivtools-0.6/src/IV-2_6/rubline.c ivtools-0.6/src/IV-2_6/rubrect.c ivtools-0.6/src/IV-2_6/rubverts.c ivtools-0.6/src/IV-2_6/scene.c ivtools-0.6/src/IV-2_6/scrollbar2_6.c ivtools-0.6/src/IV-2_6/scroller2_6.c ivtools-0.6/src/IV-2_6/sensor.c ivtools-0.6/src/IV-2_6/shape.c ivtools-0.6/src/IV-2_6/strbrowser.c ivtools-0.6/src/IV-2_6/strchooser.c ivtools-0.6/src/IV-2_6/streditor.c ivtools-0.6/src/IV-2_6/subject.c ivtools-0.6/src/IV-2_6/textbuffer.c ivtools-0.6/src/IV-2_6/textdisplay.c ivtools-0.6/src/IV-2_6/texteditor.c ivtools-0.6/src/IV-2_6/tform2_6.c ivtools-0.6/src/IV-2_6/tray.c ivtools-0.6/src/IV-2_6/viewport.c ivtools-0.6/src/IV-2_6/world.c ivtools-0.6/src/IV-2_6/xbitmap2_6.c ivtools-0.6/src/IV-2_6/xevent2_6.c ivtools-0.6/src/IV-2_6/xinter.c ivtools-0.6/src/IV-2_6/xpainter.c ivtools-0.6/src/IV-2_6/xpattern.c ivtools-0.6/src/IV-X11/Imakefile ivtools-0.6/src/IV-X11/Makefile ivtools-0.6/src/IV-X11/glcontext.c ivtools-0.6/src/IV-X11/wtable.h ivtools-0.6/src/IV-X11/xbitmap.c ivtools-0.6/src/IV-X11/xbrush.c ivtools-0.6/src/IV-X11/xcanvas.c ivtools-0.6/src/IV-X11/xcolor.c ivtools-0.6/src/IV-X11/xcursor.c ivtools-0.6/src/IV-X11/xdrag.c ivtools-0.6/src/IV-X11/xevent.c ivtools-0.6/src/IV-X11/xfont.c ivtools-0.6/src/IV-X11/xraster.c ivtools-0.6/src/IV-X11/xreqerr.c ivtools-0.6/src/IV-X11/xselection.c ivtools-0.6/src/IV-X11/xwindow.c ivtools-0.6/src/IV-common/Imakefile ivtools-0.6/src/IV-common/Makefile ivtools-0.6/src/IV-common/listimpl.c ivtools-0.6/src/IV-common/memory.c ivtools-0.6/src/IV-common/regexp.c ivtools-0.6/src/IV-common/resource.c ivtools-0.6/src/IV-common/textbuffer.c ivtools-0.6/src/IV/Imakefile ivtools-0.6/src/IV/InterViews.defaults ivtools-0.6/src/IV/Makefile ivtools-0.6/src/IVGlyph/Imakefile ivtools-0.6/src/IVGlyph/Makefile ivtools-0.6/src/IVGlyph/WishList ivtools-0.6/src/IVGlyph/bdfltform.c ivtools-0.6/src/IVGlyph/bdfltform.h ivtools-0.6/src/IVGlyph/bdtable.c ivtools-0.6/src/IVGlyph/bdtable.h ivtools-0.6/src/IVGlyph/bdvalue.c ivtools-0.6/src/IVGlyph/bdvalue.h ivtools-0.6/src/IVGlyph/boolform.c ivtools-0.6/src/IVGlyph/boolform.h ivtools-0.6/src/IVGlyph/charfield.c ivtools-0.6/src/IVGlyph/charfield.h ivtools-0.6/src/IVGlyph/dragedit.c ivtools-0.6/src/IVGlyph/dragedit.h ivtools-0.6/src/IVGlyph/enumform.c ivtools-0.6/src/IVGlyph/enumform.h ivtools-0.6/src/IVGlyph/exportchooser.c ivtools-0.6/src/IVGlyph/exportchooser.h ivtools-0.6/src/IVGlyph/fieldedit.c ivtools-0.6/src/IVGlyph/fieldedit.h ivtools-0.6/src/IVGlyph/figure.c ivtools-0.6/src/IVGlyph/figure.h ivtools-0.6/src/IVGlyph/gdialogs.c ivtools-0.6/src/IVGlyph/gdialogs.h ivtools-0.6/src/IVGlyph/importchooser.c ivtools-0.6/src/IVGlyph/importchooser.h ivtools-0.6/src/IVGlyph/namestate.c ivtools-0.6/src/IVGlyph/namestate.h ivtools-0.6/src/IVGlyph/observables.c ivtools-0.6/src/IVGlyph/observables.h ivtools-0.6/src/IVGlyph/ofilechooser.c ivtools-0.6/src/IVGlyph/ofilechooser.h ivtools-0.6/src/IVGlyph/printchooser.c ivtools-0.6/src/IVGlyph/printchooser.h ivtools-0.6/src/IVGlyph/saveaschooser.c ivtools-0.6/src/IVGlyph/saveaschooser.h ivtools-0.6/src/IVGlyph/scrollable.c ivtools-0.6/src/IVGlyph/scrollable.h ivtools-0.6/src/IVGlyph/strchooser.c ivtools-0.6/src/IVGlyph/strchooser.h ivtools-0.6/src/IVGlyph/stredit.c ivtools-0.6/src/IVGlyph/stredit.h ivtools-0.6/src/IVGlyph/strlist.c ivtools-0.6/src/IVGlyph/strlist.h ivtools-0.6/src/IVGlyph/textbuff.c ivtools-0.6/src/IVGlyph/textbuff.h ivtools-0.6/src/IVGlyph/textedit.c ivtools-0.6/src/IVGlyph/textedit.h ivtools-0.6/src/IVGlyph/texteditor.c ivtools-0.6/src/IVGlyph/texteditor.h ivtools-0.6/src/IVGlyph/textform.c ivtools-0.6/src/IVGlyph/textform.h ivtools-0.6/src/IVGlyph/textview.c ivtools-0.6/src/IVGlyph/textview.h ivtools-0.6/src/IVGlyph/textwindow.c ivtools-0.6/src/IVGlyph/textwindow.h ivtools-0.6/src/IVGlyph/toolbutton.c ivtools-0.6/src/IVGlyph/toolbutton.h ivtools-0.6/src/IVGlyph/valuator.c ivtools-0.6/src/IVGlyph/valuator.h ivtools-0.6/src/Imakefile ivtools-0.6/src/InterViews/Imakefile ivtools-0.6/src/InterViews/Makefile ivtools-0.6/src/InterViews/action.c ivtools-0.6/src/InterViews/adjust.c ivtools-0.6/src/InterViews/aggr.c ivtools-0.6/src/InterViews/align.c ivtools-0.6/src/InterViews/alloctbl.c ivtools-0.6/src/InterViews/arrcomp.c ivtools-0.6/src/InterViews/background.c ivtools-0.6/src/InterViews/bevel.c ivtools-0.6/src/InterViews/border.c ivtools-0.6/src/InterViews/box.c ivtools-0.6/src/InterViews/browser.c ivtools-0.6/src/InterViews/button.c ivtools-0.6/src/InterViews/character.c ivtools-0.6/src/InterViews/composition.c ivtools-0.6/src/InterViews/compositor.c ivtools-0.6/src/InterViews/debug.c ivtools-0.6/src/InterViews/deck.c ivtools-0.6/src/InterViews/dialogs.c ivtools-0.6/src/InterViews/fbrowser.c ivtools-0.6/src/InterViews/fchooser.c ivtools-0.6/src/InterViews/field.c ivtools-0.6/src/InterViews/geometry.c ivtools-0.6/src/InterViews/glyph.c ivtools-0.6/src/InterViews/group.c ivtools-0.6/src/InterViews/handler.c ivtools-0.6/src/InterViews/hit.c ivtools-0.6/src/InterViews/image.c ivtools-0.6/src/InterViews/input.c ivtools-0.6/src/InterViews/kit.c ivtools-0.6/src/InterViews/label.c ivtools-0.6/src/InterViews/layout.c ivtools-0.6/src/InterViews/lrmarker.c ivtools-0.6/src/InterViews/menu.c ivtools-0.6/src/InterViews/mf_dialogs.c ivtools-0.6/src/InterViews/mf_kit.c ivtools-0.6/src/InterViews/mono_kit.c ivtools-0.6/src/InterViews/monoglyph.c ivtools-0.6/src/InterViews/observe.c ivtools-0.6/src/InterViews/ol_dialogs.c ivtools-0.6/src/InterViews/ol_kit.c ivtools-0.6/src/InterViews/page.c ivtools-0.6/src/InterViews/patch.c ivtools-0.6/src/InterViews/place.c ivtools-0.6/src/InterViews/polyglyph.c ivtools-0.6/src/InterViews/printer.c ivtools-0.6/src/InterViews/psfont.c ivtools-0.6/src/InterViews/regexp.c ivtools-0.6/src/InterViews/resource.c ivtools-0.6/src/InterViews/rule.c ivtools-0.6/src/InterViews/scrbox.c ivtools-0.6/src/InterViews/session.c ivtools-0.6/src/InterViews/shadow.c ivtools-0.6/src/InterViews/simpcomp.c ivtools-0.6/src/InterViews/slider.c ivtools-0.6/src/InterViews/smf_kit.c ivtools-0.6/src/InterViews/stencil.c ivtools-0.6/src/InterViews/stepper.c ivtools-0.6/src/InterViews/style.c ivtools-0.6/src/InterViews/superpose.c ivtools-0.6/src/InterViews/target.c ivtools-0.6/src/InterViews/telltale.c ivtools-0.6/src/InterViews/texcomp.c ivtools-0.6/src/InterViews/tformsetter.c ivtools-0.6/src/InterViews/tiff.c ivtools-0.6/src/InterViews/tile.c ivtools-0.6/src/InterViews/transformer.c ivtools-0.6/src/InterViews/xymarker.c ivtools-0.6/src/Makefile ivtools-0.6/src/OS/Imakefile ivtools-0.6/src/OS/Makefile ivtools-0.6/src/OS/directory.c ivtools-0.6/src/OS/file.c ivtools-0.6/src/OS/host.c ivtools-0.6/src/OS/listimpl.c ivtools-0.6/src/OS/math.c ivtools-0.6/src/OS/memory.c ivtools-0.6/src/OS/string.c ivtools-0.6/src/OS/ustring.c ivtools-0.6/src/OverlayUnidraw/Imakefile ivtools-0.6/src/OverlayUnidraw/Makefile ivtools-0.6/src/OverlayUnidraw/WishList ivtools-0.6/src/OverlayUnidraw/aceimport.c ivtools-0.6/src/OverlayUnidraw/aceimport.h ivtools-0.6/src/OverlayUnidraw/algebra3.h ivtools-0.6/src/OverlayUnidraw/annotate.c ivtools-0.6/src/OverlayUnidraw/annotate.h ivtools-0.6/src/OverlayUnidraw/attrtool.c ivtools-0.6/src/OverlayUnidraw/attrtool.h ivtools-0.6/src/OverlayUnidraw/clipline.c ivtools-0.6/src/OverlayUnidraw/clipline.h ivtools-0.6/src/OverlayUnidraw/cliplinepoly.c ivtools-0.6/src/OverlayUnidraw/cliplinepoly.h ivtools-0.6/src/OverlayUnidraw/clippoly.c ivtools-0.6/src/OverlayUnidraw/clippoly.h ivtools-0.6/src/OverlayUnidraw/grayraster.c ivtools-0.6/src/OverlayUnidraw/grayraster.h ivtools-0.6/src/OverlayUnidraw/grloctool.c ivtools-0.6/src/OverlayUnidraw/grloctool.h ivtools-0.6/src/OverlayUnidraw/indexmixins.c ivtools-0.6/src/OverlayUnidraw/indexmixins.h ivtools-0.6/src/OverlayUnidraw/leakchecker.h ivtools-0.6/src/OverlayUnidraw/ovabout.c ivtools-0.6/src/OverlayUnidraw/ovabout.h ivtools-0.6/src/OverlayUnidraw/ovadjuster.c ivtools-0.6/src/OverlayUnidraw/ovadjuster.h ivtools-0.6/src/OverlayUnidraw/ovarrow.c ivtools-0.6/src/OverlayUnidraw/ovarrow.h ivtools-0.6/src/OverlayUnidraw/ovcamcmds.c ivtools-0.6/src/OverlayUnidraw/ovcamcmds.h ivtools-0.6/src/OverlayUnidraw/ovcatalog.c ivtools-0.6/src/OverlayUnidraw/ovcatalog.h ivtools-0.6/src/OverlayUnidraw/ovchainview.c ivtools-0.6/src/OverlayUnidraw/ovchainview.h ivtools-0.6/src/OverlayUnidraw/ovclasses.h ivtools-0.6/src/OverlayUnidraw/ovclip.c ivtools-0.6/src/OverlayUnidraw/ovclip.h ivtools-0.6/src/OverlayUnidraw/ovcmds.c ivtools-0.6/src/OverlayUnidraw/ovcmds.h ivtools-0.6/src/OverlayUnidraw/ovcomps.c ivtools-0.6/src/OverlayUnidraw/ovcomps.h ivtools-0.6/src/OverlayUnidraw/ovcreator.c ivtools-0.6/src/OverlayUnidraw/ovcreator.h ivtools-0.6/src/OverlayUnidraw/ovctrl.c ivtools-0.6/src/OverlayUnidraw/ovctrl.h ivtools-0.6/src/OverlayUnidraw/ovdamage.c ivtools-0.6/src/OverlayUnidraw/ovdamage.h ivtools-0.6/src/OverlayUnidraw/ovdialog.c ivtools-0.6/src/OverlayUnidraw/ovdialog.h ivtools-0.6/src/OverlayUnidraw/ovdoer.c ivtools-0.6/src/OverlayUnidraw/ovdoer.h ivtools-0.6/src/OverlayUnidraw/oved.c ivtools-0.6/src/OverlayUnidraw/oved.h ivtools-0.6/src/OverlayUnidraw/ovellipse.c ivtools-0.6/src/OverlayUnidraw/ovellipse.h ivtools-0.6/src/OverlayUnidraw/ovexport.c ivtools-0.6/src/OverlayUnidraw/ovexport.h ivtools-0.6/src/OverlayUnidraw/ovfile.c ivtools-0.6/src/OverlayUnidraw/ovfile.h ivtools-0.6/src/OverlayUnidraw/ovfixview.c ivtools-0.6/src/OverlayUnidraw/ovfixview.h ivtools-0.6/src/OverlayUnidraw/ovgdialog.c ivtools-0.6/src/OverlayUnidraw/ovgdialog.h ivtools-0.6/src/OverlayUnidraw/ovhull.c ivtools-0.6/src/OverlayUnidraw/ovhull.h ivtools-0.6/src/OverlayUnidraw/ovimport.c ivtools-0.6/src/OverlayUnidraw/ovimport.h ivtools-0.6/src/OverlayUnidraw/ovipcmds.c ivtools-0.6/src/OverlayUnidraw/ovipcmds.h ivtools-0.6/src/OverlayUnidraw/ovkit.c ivtools-0.6/src/OverlayUnidraw/ovkit.h ivtools-0.6/src/OverlayUnidraw/ovline.c ivtools-0.6/src/OverlayUnidraw/ovline.h ivtools-0.6/src/OverlayUnidraw/ovpage.c ivtools-0.6/src/OverlayUnidraw/ovpage.h ivtools-0.6/src/OverlayUnidraw/ovpainter.c ivtools-0.6/src/OverlayUnidraw/ovpainter.h ivtools-0.6/src/OverlayUnidraw/ovpanner.c ivtools-0.6/src/OverlayUnidraw/ovpanner.h ivtools-0.6/src/OverlayUnidraw/ovpolygon.c ivtools-0.6/src/OverlayUnidraw/ovpolygon.h ivtools-0.6/src/OverlayUnidraw/ovprint.c ivtools-0.6/src/OverlayUnidraw/ovprint.h ivtools-0.6/src/OverlayUnidraw/ovpspict.c ivtools-0.6/src/OverlayUnidraw/ovpspict.h ivtools-0.6/src/OverlayUnidraw/ovpsview.c ivtools-0.6/src/OverlayUnidraw/ovpsview.h ivtools-0.6/src/OverlayUnidraw/ovraster.c ivtools-0.6/src/OverlayUnidraw/ovraster.h ivtools-0.6/src/OverlayUnidraw/ovrect.c ivtools-0.6/src/OverlayUnidraw/ovrect.h ivtools-0.6/src/OverlayUnidraw/ovrestimage.c ivtools-0.6/src/OverlayUnidraw/ovrestimage.h ivtools-0.6/src/OverlayUnidraw/ovselect.c ivtools-0.6/src/OverlayUnidraw/ovselect.h ivtools-0.6/src/OverlayUnidraw/ovselection.c ivtools-0.6/src/OverlayUnidraw/ovselection.h ivtools-0.6/src/OverlayUnidraw/ovshowhide.c ivtools-0.6/src/OverlayUnidraw/ovshowhide.h ivtools-0.6/src/OverlayUnidraw/ovspline.c ivtools-0.6/src/OverlayUnidraw/ovspline.h ivtools-0.6/src/OverlayUnidraw/ovstencil.c ivtools-0.6/src/OverlayUnidraw/ovstencil.h ivtools-0.6/src/OverlayUnidraw/ovtext.c ivtools-0.6/src/OverlayUnidraw/ovtext.h ivtools-0.6/src/OverlayUnidraw/ovunidraw.c ivtools-0.6/src/OverlayUnidraw/ovunidraw.h ivtools-0.6/src/OverlayUnidraw/ovvars.c ivtools-0.6/src/OverlayUnidraw/ovvars.h ivtools-0.6/src/OverlayUnidraw/ovvertices.c ivtools-0.6/src/OverlayUnidraw/ovvertices.h ivtools-0.6/src/OverlayUnidraw/ovviewer.c ivtools-0.6/src/OverlayUnidraw/ovviewer.h ivtools-0.6/src/OverlayUnidraw/ovviews.c ivtools-0.6/src/OverlayUnidraw/ovviews.h ivtools-0.6/src/OverlayUnidraw/paramlist.h ivtools-0.6/src/OverlayUnidraw/ptinpoly.c ivtools-0.6/src/OverlayUnidraw/ptinpoly.h ivtools-0.6/src/OverlayUnidraw/rastercmds.c ivtools-0.6/src/OverlayUnidraw/rastercmds.h ivtools-0.6/src/OverlayUnidraw/scriptview.c ivtools-0.6/src/OverlayUnidraw/scriptview.h ivtools-0.6/src/OverlayUnidraw/setattrbyexpr.c ivtools-0.6/src/OverlayUnidraw/setattrbyexpr.h ivtools-0.6/src/OverlayUnidraw/slctbyattr.c ivtools-0.6/src/OverlayUnidraw/slctbyattr.h ivtools-0.6/src/OverlayUnidraw/textfile.c ivtools-0.6/src/OverlayUnidraw/textfile.h ivtools-0.6/src/TIFF/Copyright ivtools-0.6/src/TIFF/HOWTO ivtools-0.6/src/TIFF/Imakefile ivtools-0.6/src/TIFF/Makefile ivtools-0.6/src/TIFF/README ivtools-0.6/src/TIFF/VERSION ivtools-0.6/src/TIFF/machdep.h ivtools-0.6/src/TIFF/mkg3states.c ivtools-0.6/src/TIFF/mkspans.c ivtools-0.6/src/TIFF/prototypes.h ivtools-0.6/src/TIFF/t4.h ivtools-0.6/src/TIFF/tif_aux.c ivtools-0.6/src/TIFF/tif_ccittrle.c ivtools-0.6/src/TIFF/tif_close.c ivtools-0.6/src/TIFF/tif_compat.c ivtools-0.6/src/TIFF/tif_compress.c ivtools-0.6/src/TIFF/tif_dir.c ivtools-0.6/src/TIFF/tif_dirinfo.c ivtools-0.6/src/TIFF/tif_dirread.c ivtools-0.6/src/TIFF/tif_dirwrite.c ivtools-0.6/src/TIFF/tif_dumpmode.c ivtools-0.6/src/TIFF/tif_error.c ivtools-0.6/src/TIFF/tif_fax3.c ivtools-0.6/src/TIFF/tif_fax3.h ivtools-0.6/src/TIFF/tif_fax4.c ivtools-0.6/src/TIFF/tif_flush.c ivtools-0.6/src/TIFF/tif_getimage.c ivtools-0.6/src/TIFF/tif_jpeg.c ivtools-0.6/src/TIFF/tif_lzw.c ivtools-0.6/src/TIFF/tif_machdep.c ivtools-0.6/src/TIFF/tif_next.c ivtools-0.6/src/TIFF/tif_open.c ivtools-0.6/src/TIFF/tif_packbits.c ivtools-0.6/src/TIFF/tif_print.c ivtools-0.6/src/TIFF/tif_read.c ivtools-0.6/src/TIFF/tif_strip.c ivtools-0.6/src/TIFF/tif_swab.c ivtools-0.6/src/TIFF/tif_thunder.c ivtools-0.6/src/TIFF/tif_tile.c ivtools-0.6/src/TIFF/tif_version.c ivtools-0.6/src/TIFF/tif_warning.c ivtools-0.6/src/TIFF/tif_write.c ivtools-0.6/src/TIFF/tiffcompat.h ivtools-0.6/src/TIFF/tiffioP.h ivtools-0.6/src/Time/Date.c ivtools-0.6/src/Time/Date.h ivtools-0.6/src/Time/Imakefile ivtools-0.6/src/Time/Makefile ivtools-0.6/src/Time/Time.c ivtools-0.6/src/Time/Time.h ivtools-0.6/src/Time/obstime.c ivtools-0.6/src/Time/obstime.h ivtools-0.6/src/Time/timeglyph.c ivtools-0.6/src/Time/timeglyph.h ivtools-0.6/src/TopoFace/Imakefile ivtools-0.6/src/TopoFace/Makefile ivtools-0.6/src/TopoFace/fgeomobjs.c ivtools-0.6/src/TopoFace/fgeomobjs.h ivtools-0.6/src/TopoFace/topoedge.c ivtools-0.6/src/TopoFace/topoedge.h ivtools-0.6/src/TopoFace/topoedgelist.c ivtools-0.6/src/TopoFace/topoedgelist.h ivtools-0.6/src/TopoFace/topoelt.c ivtools-0.6/src/TopoFace/topoelt.h ivtools-0.6/src/TopoFace/topoface.c ivtools-0.6/src/TopoFace/topoface.h ivtools-0.6/src/TopoFace/toponode.c ivtools-0.6/src/TopoFace/toponode.h ivtools-0.6/src/UniIdraw/Imakefile ivtools-0.6/src/UniIdraw/Makefile ivtools-0.6/src/UniIdraw/idarrow.c ivtools-0.6/src/UniIdraw/idarrow.h ivtools-0.6/src/UniIdraw/idarrowhead.c ivtools-0.6/src/UniIdraw/idarrowhead.h ivtools-0.6/src/UniIdraw/idarrows.c ivtools-0.6/src/UniIdraw/idarrows.h ivtools-0.6/src/UniIdraw/idcatalog.c ivtools-0.6/src/UniIdraw/idcatalog.h ivtools-0.6/src/UniIdraw/idclasses.h ivtools-0.6/src/UniIdraw/idcmds.c ivtools-0.6/src/UniIdraw/idcmds.h ivtools-0.6/src/UniIdraw/idcomp.c ivtools-0.6/src/UniIdraw/idcomp.h ivtools-0.6/src/UniIdraw/idcreator.c ivtools-0.6/src/UniIdraw/idcreator.h ivtools-0.6/src/UniIdraw/iddialogs.c ivtools-0.6/src/UniIdraw/iddialogs.h ivtools-0.6/src/UniIdraw/ided.c ivtools-0.6/src/UniIdraw/ided.h ivtools-0.6/src/UniIdraw/idkybd.c ivtools-0.6/src/UniIdraw/idkybd.h ivtools-0.6/src/UniIdraw/idvars.c ivtools-0.6/src/UniIdraw/idvars.h ivtools-0.6/src/UniIdraw/idversion.h ivtools-0.6/src/Unidraw-common/Imakefile ivtools-0.6/src/Unidraw-common/Makefile ivtools-0.6/src/Unidraw-common/iterator.c ivtools-0.6/src/Unidraw-common/ulist.c ivtools-0.6/src/Unidraw/Imakefile ivtools-0.6/src/Unidraw/Makefile ivtools-0.6/src/Unidraw/align.c ivtools-0.6/src/Unidraw/brushcmd.c ivtools-0.6/src/Unidraw/catalog.c ivtools-0.6/src/Unidraw/catcmds.c ivtools-0.6/src/Unidraw/cglue.c ivtools-0.6/src/Unidraw/clipboard.c ivtools-0.6/src/Unidraw/colorcmd.c ivtools-0.6/src/Unidraw/command.c ivtools-0.6/src/Unidraw/component.c ivtools-0.6/src/Unidraw/compview.c ivtools-0.6/src/Unidraw/connect.c ivtools-0.6/src/Unidraw/connector.c ivtools-0.6/src/Unidraw/creator.c ivtools-0.6/src/Unidraw/csolver.c ivtools-0.6/src/Unidraw/ctrlinfo.c ivtools-0.6/src/Unidraw/damage.c ivtools-0.6/src/Unidraw/data.c ivtools-0.6/src/Unidraw/datas.c ivtools-0.6/src/Unidraw/dialogs.c ivtools-0.6/src/Unidraw/edit.c ivtools-0.6/src/Unidraw/editor.c ivtools-0.6/src/Unidraw/editorinfo.c ivtools-0.6/src/Unidraw/ellipse.c ivtools-0.6/src/Unidraw/ellipses.c ivtools-0.6/src/Unidraw/externview.c ivtools-0.6/src/Unidraw/font.c ivtools-0.6/src/Unidraw/geomobjs.c ivtools-0.6/src/Unidraw/globals.c ivtools-0.6/src/Unidraw/graphic.c ivtools-0.6/src/Unidraw/grblock.c ivtools-0.6/src/Unidraw/grcomp.c ivtools-0.6/src/Unidraw/grcomptool.c ivtools-0.6/src/Unidraw/grid.c ivtools-0.6/src/Unidraw/grview.c ivtools-0.6/src/Unidraw/gvupdater.c ivtools-0.6/src/Unidraw/import.c ivtools-0.6/src/Unidraw/iterator.c ivtools-0.6/src/Unidraw/keymap.c ivtools-0.6/src/Unidraw/kybd.c ivtools-0.6/src/Unidraw/line.c ivtools-0.6/src/Unidraw/lines.c ivtools-0.6/src/Unidraw/link.c ivtools-0.6/src/Unidraw/macro.c ivtools-0.6/src/Unidraw/magnify.c ivtools-0.6/src/Unidraw/manip.c ivtools-0.6/src/Unidraw/manips.c ivtools-0.6/src/Unidraw/move.c ivtools-0.6/src/Unidraw/nop.c ivtools-0.6/src/Unidraw/pad.c ivtools-0.6/src/Unidraw/patcmd.c ivtools-0.6/src/Unidraw/path.c ivtools-0.6/src/Unidraw/picture.c ivtools-0.6/src/Unidraw/pin.c ivtools-0.6/src/Unidraw/polygon.c ivtools-0.6/src/Unidraw/polygons.c ivtools-0.6/src/Unidraw/pspaint.c ivtools-0.6/src/Unidraw/psview.c ivtools-0.6/src/Unidraw/rastercomp.c ivtools-0.6/src/Unidraw/rasterrect.c ivtools-0.6/src/Unidraw/rect.c ivtools-0.6/src/Unidraw/reshape.c ivtools-0.6/src/Unidraw/rotate.c ivtools-0.6/src/Unidraw/scale.c ivtools-0.6/src/Unidraw/select.c ivtools-0.6/src/Unidraw/selection.c ivtools-0.6/src/Unidraw/slot.c ivtools-0.6/src/Unidraw/spline.c ivtools-0.6/src/Unidraw/splines.c ivtools-0.6/src/Unidraw/statevar.c ivtools-0.6/src/Unidraw/statevars.c ivtools-0.6/src/Unidraw/stateview.c ivtools-0.6/src/Unidraw/stateviews.c ivtools-0.6/src/Unidraw/stencilcomp.c ivtools-0.6/src/Unidraw/stretch.c ivtools-0.6/src/Unidraw/struct.c ivtools-0.6/src/Unidraw/text.c ivtools-0.6/src/Unidraw/tool.c ivtools-0.6/src/Unidraw/transfn.c ivtools-0.6/src/Unidraw/transfns.c ivtools-0.6/src/Unidraw/transforms.c ivtools-0.6/src/Unidraw/uarray.c ivtools-0.6/src/Unidraw/uctrl.c ivtools-0.6/src/Unidraw/uctrls.c ivtools-0.6/src/Unidraw/uhash.c ivtools-0.6/src/Unidraw/ulabel.c ivtools-0.6/src/Unidraw/ulist.c ivtools-0.6/src/Unidraw/umap.c ivtools-0.6/src/Unidraw/unidraw.c ivtools-0.6/src/Unidraw/upage.c ivtools-0.6/src/Unidraw/ustencil.c ivtools-0.6/src/Unidraw/vertices.c ivtools-0.6/src/Unidraw/verts.c ivtools-0.6/src/Unidraw/viewcmds.c ivtools-0.6/src/Unidraw/viewer.c ivtools-0.6/src/comdraw/Imakefile ivtools-0.6/src/comdraw/Makefile ivtools-0.6/src/comdraw/README ivtools-0.6/src/comdraw/main.c ivtools-0.6/src/comterp/Imakefile ivtools-0.6/src/comterp/Makefile ivtools-0.6/src/comterp/README ivtools-0.6/src/comterp/main.c ivtools-0.6/src/comtest/Imakefile ivtools-0.6/src/comtest/Makefile ivtools-0.6/src/comtest/main.c ivtools-0.6/src/dclock/Imakefile ivtools-0.6/src/dclock/Makefile ivtools-0.6/src/dclock/clocktime.c ivtools-0.6/src/dclock/clocktime.h ivtools-0.6/src/dclock/data.c ivtools-0.6/src/dclock/data.h ivtools-0.6/src/dclock/dclock.c ivtools-0.6/src/dclock/dclock.h ivtools-0.6/src/dclock/dface.c ivtools-0.6/src/dclock/dface.h ivtools-0.6/src/dclock/digit.c ivtools-0.6/src/dclock/digit.h ivtools-0.6/src/dclock/segment.c ivtools-0.6/src/dclock/segment.h ivtools-0.6/src/drawserv/Imakefile ivtools-0.6/src/drawserv/Makefile ivtools-0.6/src/drawserv/main.c ivtools-0.6/src/drawtool/Imakefile ivtools-0.6/src/drawtool/Makefile ivtools-0.6/src/drawtool/README ivtools-0.6/src/drawtool/main.c ivtools-0.6/src/flipbook/Imakefile ivtools-0.6/src/flipbook/Makefile ivtools-0.6/src/flipbook/README ivtools-0.6/src/flipbook/main.c ivtools-0.6/src/glyphs/Imakefile ivtools-0.6/src/glyphs/Makefile ivtools-0.6/src/glyphs/bdvtable/Imakefile ivtools-0.6/src/glyphs/bdvtable/Makefile ivtools-0.6/src/glyphs/bdvtable/main.c ivtools-0.6/src/glyphs/formdemo/Imakefile ivtools-0.6/src/glyphs/formdemo/Makefile ivtools-0.6/src/glyphs/formdemo/main.c ivtools-0.6/src/glyphs/gclock/Imakefile ivtools-0.6/src/glyphs/gclock/Makefile ivtools-0.6/src/glyphs/gclock/main.c ivtools-0.6/src/glyphs/meter/Imakefile ivtools-0.6/src/glyphs/meter/Makefile ivtools-0.6/src/glyphs/meter/main.c ivtools-0.6/src/glyphs/radiogroup/Imakefile ivtools-0.6/src/glyphs/radiogroup/Makefile ivtools-0.6/src/glyphs/radiogroup/main.c ivtools-0.6/src/glyphs/scrollable/Imakefile ivtools-0.6/src/glyphs/scrollable/Makefile ivtools-0.6/src/glyphs/scrollable/main.c ivtools-0.6/src/glyphs/scrollfield/Imakefile ivtools-0.6/src/glyphs/scrollfield/Makefile ivtools-0.6/src/glyphs/scrollfield/main.c ivtools-0.6/src/glyphs/strchooser/Imakefile ivtools-0.6/src/glyphs/strchooser/Makefile ivtools-0.6/src/glyphs/strchooser/main.c ivtools-0.6/src/glyphs/text-editor/Imakefile ivtools-0.6/src/glyphs/text-editor/Makefile ivtools-0.6/src/glyphs/text-editor/README ivtools-0.6/src/glyphs/text-editor/main.c ivtools-0.6/src/glyphs/timestamp/Imakefile ivtools-0.6/src/glyphs/timestamp/Makefile ivtools-0.6/src/glyphs/timestamp/main.c ivtools-0.6/src/glyphterp/Imakefile ivtools-0.6/src/glyphterp/Makefile ivtools-0.6/src/glyphterp/main.c ivtools-0.6/src/graphdraw/Imakefile ivtools-0.6/src/graphdraw/Makefile ivtools-0.6/src/graphdraw/README ivtools-0.6/src/graphdraw/main.c ivtools-0.6/src/iclass/Imakefile ivtools-0.6/src/iclass/Makefile ivtools-0.6/src/iclass/classbuffer.c ivtools-0.6/src/iclass/classbuffer.h ivtools-0.6/src/iclass/classeditor.c ivtools-0.6/src/iclass/classeditor.h ivtools-0.6/src/iclass/classinfo.c ivtools-0.6/src/iclass/classinfo.h ivtools-0.6/src/iclass/dialogs.c ivtools-0.6/src/iclass/dialogs.h ivtools-0.6/src/iclass/direct.c ivtools-0.6/src/iclass/direct.h ivtools-0.6/src/iclass/globals.c ivtools-0.6/src/iclass/globals.h ivtools-0.6/src/iclass/iclass.c ivtools-0.6/src/iclass/iclass.h ivtools-0.6/src/iclass/main.c ivtools-0.6/src/idemo/Idemo.defaults ivtools-0.6/src/idemo/Imakefile ivtools-0.6/src/idemo/Makefile ivtools-0.6/src/idemo/main.c ivtools-0.6/src/idraw/Imakefile ivtools-0.6/src/idraw/Makefile ivtools-0.6/src/idraw/README ivtools-0.6/src/idraw/main.c ivtools-0.6/src/include/Dispatch/Imakefile ivtools-0.6/src/include/Dispatch/Makefile ivtools-0.6/src/include/Dispatch/_defines.h ivtools-0.6/src/include/Dispatch/_undefs.h ivtools-0.6/src/include/Dispatch/ace_dispatcher.h ivtools-0.6/src/include/Dispatch/ace_iohandler.h ivtools-0.6/src/include/Dispatch/dispatcher.h ivtools-0.6/src/include/Dispatch/dp.h ivtools-0.6/src/include/Dispatch/enter-scope.h ivtools-0.6/src/include/Dispatch/iocallback.h ivtools-0.6/src/include/Dispatch/iohandler.h ivtools-0.6/src/include/Dispatch/iostreamb.h ivtools-0.6/src/include/Dispatch/leave-scope.h ivtools-0.6/src/include/Dispatch/rpcbuf.h ivtools-0.6/src/include/Dispatch/rpchdr.h ivtools-0.6/src/include/Dispatch/rpcpeer.h ivtools-0.6/src/include/Dispatch/rpcreader.h ivtools-0.6/src/include/Dispatch/rpcregistry.h ivtools-0.6/src/include/Dispatch/rpcservice.h ivtools-0.6/src/include/Dispatch/rpcstream.h ivtools-0.6/src/include/Dispatch/rpcwriter.h ivtools-0.6/src/include/IV-2_6/Imakefile ivtools-0.6/src/include/IV-2_6/InterViews/Imakefile ivtools-0.6/src/include/IV-2_6/InterViews/Makefile ivtools-0.6/src/include/IV-2_6/InterViews/adjuster.h ivtools-0.6/src/include/IV-2_6/InterViews/alignment.h ivtools-0.6/src/include/IV-2_6/InterViews/banner.h ivtools-0.6/src/include/IV-2_6/InterViews/border.h ivtools-0.6/src/include/IV-2_6/InterViews/box.h ivtools-0.6/src/include/IV-2_6/InterViews/button.h ivtools-0.6/src/include/IV-2_6/InterViews/compeditor.h ivtools-0.6/src/include/IV-2_6/InterViews/control.h ivtools-0.6/src/include/IV-2_6/InterViews/deck.h ivtools-0.6/src/include/IV-2_6/InterViews/defs.h ivtools-0.6/src/include/IV-2_6/InterViews/dialog.h ivtools-0.6/src/include/IV-2_6/InterViews/filebrowser.h ivtools-0.6/src/include/IV-2_6/InterViews/filechooser.h ivtools-0.6/src/include/IV-2_6/InterViews/frame.h ivtools-0.6/src/include/IV-2_6/InterViews/glue.h ivtools-0.6/src/include/IV-2_6/InterViews/ihandler.h ivtools-0.6/src/include/IV-2_6/InterViews/interactor.h ivtools-0.6/src/include/IV-2_6/InterViews/iwindow.h ivtools-0.6/src/include/IV-2_6/InterViews/matcheditor.h ivtools-0.6/src/include/IV-2_6/InterViews/menu.h ivtools-0.6/src/include/IV-2_6/InterViews/message.h ivtools-0.6/src/include/IV-2_6/InterViews/minmax.h ivtools-0.6/src/include/IV-2_6/InterViews/paint.h ivtools-0.6/src/include/IV-2_6/InterViews/painter.h ivtools-0.6/src/include/IV-2_6/InterViews/panner.h ivtools-0.6/src/include/IV-2_6/InterViews/perspective.h ivtools-0.6/src/include/IV-2_6/InterViews/rubband.h ivtools-0.6/src/include/IV-2_6/InterViews/rubcurve.h ivtools-0.6/src/include/IV-2_6/InterViews/rubgroup.h ivtools-0.6/src/include/IV-2_6/InterViews/rubline.h ivtools-0.6/src/include/IV-2_6/InterViews/rubrect.h ivtools-0.6/src/include/IV-2_6/InterViews/rubverts.h ivtools-0.6/src/include/IV-2_6/InterViews/scene.h ivtools-0.6/src/include/IV-2_6/InterViews/scrollbar.h ivtools-0.6/src/include/IV-2_6/InterViews/scroller.h ivtools-0.6/src/include/IV-2_6/InterViews/sensor.h ivtools-0.6/src/include/IV-2_6/InterViews/shape.h ivtools-0.6/src/include/IV-2_6/InterViews/strbrowser.h ivtools-0.6/src/include/IV-2_6/InterViews/strchooser.h ivtools-0.6/src/include/IV-2_6/InterViews/streditor.h ivtools-0.6/src/include/IV-2_6/InterViews/subject.h ivtools-0.6/src/include/IV-2_6/InterViews/textbuffer.h ivtools-0.6/src/include/IV-2_6/InterViews/textdisplay.h ivtools-0.6/src/include/IV-2_6/InterViews/texteditor.h ivtools-0.6/src/include/IV-2_6/InterViews/textstyle.h ivtools-0.6/src/include/IV-2_6/InterViews/tray.h ivtools-0.6/src/include/IV-2_6/InterViews/viewport.h ivtools-0.6/src/include/IV-2_6/InterViews/world.h ivtools-0.6/src/include/IV-2_6/Makefile ivtools-0.6/src/include/IV-2_6/_enter.h ivtools-0.6/src/include/IV-2_6/_leave.h ivtools-0.6/src/include/IV-2_6/_names.h ivtools-0.6/src/include/IV-3_1/InterViews ivtools-0.6/src/include/IV-X11/Imakefile ivtools-0.6/src/include/IV-X11/Makefile ivtools-0.6/src/include/IV-X11/Xdefs.h ivtools-0.6/src/include/IV-X11/Xext.h ivtools-0.6/src/include/IV-X11/Xlib.h ivtools-0.6/src/include/IV-X11/Xundefs.h ivtools-0.6/src/include/IV-X11/Xutil.h ivtools-0.6/src/include/IV-X11/xbitmap.h ivtools-0.6/src/include/IV-X11/xbrush.h ivtools-0.6/src/include/IV-X11/xcanvas.h ivtools-0.6/src/include/IV-X11/xcolor.h ivtools-0.6/src/include/IV-X11/xcursor.h ivtools-0.6/src/include/IV-X11/xdisplay.h ivtools-0.6/src/include/IV-X11/xdrag.h ivtools-0.6/src/include/IV-X11/xevent.h ivtools-0.6/src/include/IV-X11/xfont.h ivtools-0.6/src/include/IV-X11/xpainter.h ivtools-0.6/src/include/IV-X11/xpattern.h ivtools-0.6/src/include/IV-X11/xraster.h ivtools-0.6/src/include/IV-X11/xselection.h ivtools-0.6/src/include/IV-X11/xwindow.h ivtools-0.6/src/include/IV-look/Imakefile ivtools-0.6/src/include/IV-look/Makefile ivtools-0.6/src/include/IV-look/bevel.h ivtools-0.6/src/include/IV-look/browser.h ivtools-0.6/src/include/IV-look/button.h ivtools-0.6/src/include/IV-look/choice.h ivtools-0.6/src/include/IV-look/dialogs.h ivtools-0.6/src/include/IV-look/fbrowser.h ivtools-0.6/src/include/IV-look/fchooser.h ivtools-0.6/src/include/IV-look/field.h ivtools-0.6/src/include/IV-look/kit.h ivtools-0.6/src/include/IV-look/menu.h ivtools-0.6/src/include/IV-look/mf_dialogs.h ivtools-0.6/src/include/IV-look/mf_kit.h ivtools-0.6/src/include/IV-look/mono_kit.h ivtools-0.6/src/include/IV-look/ol_dialogs.h ivtools-0.6/src/include/IV-look/ol_kit.h ivtools-0.6/src/include/IV-look/slider.h ivtools-0.6/src/include/IV-look/smf_kit.h ivtools-0.6/src/include/IV-look/stepper.h ivtools-0.6/src/include/IV-look/telltale.h ivtools-0.6/src/include/Imakefile ivtools-0.6/src/include/InterViews/Bitmaps/Imakefile ivtools-0.6/src/include/InterViews/Bitmaps/Makefile ivtools-0.6/src/include/InterViews/Bitmaps/big_checkmark.bm ivtools-0.6/src/include/InterViews/Bitmaps/checkmark.bm ivtools-0.6/src/include/InterViews/Bitmaps/chkbox.bm ivtools-0.6/src/include/InterViews/Bitmaps/chkboxBoth.bm ivtools-0.6/src/include/InterViews/Bitmaps/chkboxChosen.bm ivtools-0.6/src/include/InterViews/Bitmaps/chkboxHit.bm ivtools-0.6/src/include/InterViews/Bitmaps/dfast.bm ivtools-0.6/src/include/InterViews/Bitmaps/dfastMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/dmover.bm ivtools-0.6/src/include/InterViews/Bitmaps/dmoverHit.bm ivtools-0.6/src/include/InterViews/Bitmaps/dmoverMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/enlarge.bm ivtools-0.6/src/include/InterViews/Bitmaps/enlargeHit.bm ivtools-0.6/src/include/InterViews/Bitmaps/enlargeMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/hand.bm ivtools-0.6/src/include/InterViews/Bitmaps/handMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/ldfast.bm ivtools-0.6/src/include/InterViews/Bitmaps/ldfastMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/lfast.bm ivtools-0.6/src/include/InterViews/Bitmaps/lfastMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/lmover.bm ivtools-0.6/src/include/InterViews/Bitmaps/lmoverHit.bm ivtools-0.6/src/include/InterViews/Bitmaps/lmoverMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/lufast.bm ivtools-0.6/src/include/InterViews/Bitmaps/lufastMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/page.bm ivtools-0.6/src/include/InterViews/Bitmaps/pageBoth.bm ivtools-0.6/src/include/InterViews/Bitmaps/pageChosen.bm ivtools-0.6/src/include/InterViews/Bitmaps/pageHit.bm ivtools-0.6/src/include/InterViews/Bitmaps/radio.bm ivtools-0.6/src/include/InterViews/Bitmaps/radioBoth.bm ivtools-0.6/src/include/InterViews/Bitmaps/radioChosen.bm ivtools-0.6/src/include/InterViews/Bitmaps/radioHit.bm ivtools-0.6/src/include/InterViews/Bitmaps/radioMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/rdfast.bm ivtools-0.6/src/include/InterViews/Bitmaps/rdfastMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/reducer.bm ivtools-0.6/src/include/InterViews/Bitmaps/reducerHit.bm ivtools-0.6/src/include/InterViews/Bitmaps/reducerMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/rfast.bm ivtools-0.6/src/include/InterViews/Bitmaps/rfastMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/rmover.bm ivtools-0.6/src/include/InterViews/Bitmaps/rmoverHit.bm ivtools-0.6/src/include/InterViews/Bitmaps/rmoverMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/rufast.bm ivtools-0.6/src/include/InterViews/Bitmaps/rufastMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/ufast.bm ivtools-0.6/src/include/InterViews/Bitmaps/ufastMask.bm ivtools-0.6/src/include/InterViews/Bitmaps/umover.bm ivtools-0.6/src/include/InterViews/Bitmaps/umoverHit.bm ivtools-0.6/src/include/InterViews/Bitmaps/umoverMask.bm ivtools-0.6/src/include/InterViews/Imakefile ivtools-0.6/src/include/InterViews/Makefile ivtools-0.6/src/include/InterViews/_defines.h ivtools-0.6/src/include/InterViews/_enter.h ivtools-0.6/src/include/InterViews/_leave.h ivtools-0.6/src/include/InterViews/_names.h ivtools-0.6/src/include/InterViews/_undefs.h ivtools-0.6/src/include/InterViews/action.h ivtools-0.6/src/include/InterViews/adjust.h ivtools-0.6/src/include/InterViews/aggr.h ivtools-0.6/src/include/InterViews/align.h ivtools-0.6/src/include/InterViews/alloctbl.h ivtools-0.6/src/include/InterViews/arraycomp.h ivtools-0.6/src/include/InterViews/background.h ivtools-0.6/src/include/InterViews/bitmap.h ivtools-0.6/src/include/InterViews/boolean.h ivtools-0.6/src/include/InterViews/border.h ivtools-0.6/src/include/InterViews/box.h ivtools-0.6/src/include/InterViews/brush.h ivtools-0.6/src/include/InterViews/canvas.h ivtools-0.6/src/include/InterViews/character.h ivtools-0.6/src/include/InterViews/color.h ivtools-0.6/src/include/InterViews/composition.h ivtools-0.6/src/include/InterViews/compositor.h ivtools-0.6/src/include/InterViews/coord.h ivtools-0.6/src/include/InterViews/cursor.h ivtools-0.6/src/include/InterViews/debug.h ivtools-0.6/src/include/InterViews/deck.h ivtools-0.6/src/include/InterViews/dialog.h ivtools-0.6/src/include/InterViews/display.h ivtools-0.6/src/include/InterViews/drag.h ivtools-0.6/src/include/InterViews/enter-scope.h ivtools-0.6/src/include/InterViews/event.h ivtools-0.6/src/include/InterViews/font.h ivtools-0.6/src/include/InterViews/geometry.h ivtools-0.6/src/include/InterViews/glcontext.h ivtools-0.6/src/include/InterViews/glue.h ivtools-0.6/src/include/InterViews/glyph.h ivtools-0.6/src/include/InterViews/group.h ivtools-0.6/src/include/InterViews/handler.h ivtools-0.6/src/include/InterViews/hit.h ivtools-0.6/src/include/InterViews/image.h ivtools-0.6/src/include/InterViews/input.h ivtools-0.6/src/include/InterViews/iv.h ivtools-0.6/src/include/InterViews/label.h ivtools-0.6/src/include/InterViews/layout.h ivtools-0.6/src/include/InterViews/leave-scope.h ivtools-0.6/src/include/InterViews/lrmarker.h ivtools-0.6/src/include/InterViews/monoglyph.h ivtools-0.6/src/include/InterViews/observe.h ivtools-0.6/src/include/InterViews/page.h ivtools-0.6/src/include/InterViews/patch.h ivtools-0.6/src/include/InterViews/pattern.h ivtools-0.6/src/include/InterViews/place.h ivtools-0.6/src/include/InterViews/polyglyph.h ivtools-0.6/src/include/InterViews/printer.h ivtools-0.6/src/include/InterViews/psfont.h ivtools-0.6/src/include/InterViews/raster.h ivtools-0.6/src/include/InterViews/regexp.h ivtools-0.6/src/include/InterViews/reqerr.h ivtools-0.6/src/include/InterViews/resource.h ivtools-0.6/src/include/InterViews/rule.h ivtools-0.6/src/include/InterViews/scrbox.h ivtools-0.6/src/include/InterViews/selection.h ivtools-0.6/src/include/InterViews/session.h ivtools-0.6/src/include/InterViews/shadow.h ivtools-0.6/src/include/InterViews/simplecomp.h ivtools-0.6/src/include/InterViews/stencil.h ivtools-0.6/src/include/InterViews/style.h ivtools-0.6/src/include/InterViews/superpose.h ivtools-0.6/src/include/InterViews/target.h ivtools-0.6/src/include/InterViews/telltale.h ivtools-0.6/src/include/InterViews/texcomp.h ivtools-0.6/src/include/InterViews/tformsetter.h ivtools-0.6/src/include/InterViews/tiff.h ivtools-0.6/src/include/InterViews/tile.h ivtools-0.6/src/include/InterViews/transformer.h ivtools-0.6/src/include/InterViews/window.h ivtools-0.6/src/include/InterViews/xymarker.h ivtools-0.6/src/include/Makefile ivtools-0.6/src/include/OS/Imakefile ivtools-0.6/src/include/OS/Makefile ivtools-0.6/src/include/OS/_defines.h ivtools-0.6/src/include/OS/_undefs.h ivtools-0.6/src/include/OS/directory.h ivtools-0.6/src/include/OS/enter-scope.h ivtools-0.6/src/include/OS/file.h ivtools-0.6/src/include/OS/host.h ivtools-0.6/src/include/OS/leave-scope.h ivtools-0.6/src/include/OS/list.h ivtools-0.6/src/include/OS/math.h ivtools-0.6/src/include/OS/memory.h ivtools-0.6/src/include/OS/os.h ivtools-0.6/src/include/OS/string.h ivtools-0.6/src/include/OS/table.h ivtools-0.6/src/include/OS/table2.h ivtools-0.6/src/include/OS/types.h ivtools-0.6/src/include/OS/ustring.h ivtools-0.6/src/include/TIFF/Imakefile ivtools-0.6/src/include/TIFF/Makefile ivtools-0.6/src/include/TIFF/format.h ivtools-0.6/src/include/TIFF/tiff.h ivtools-0.6/src/include/TIFF/tiffio.h ivtools-0.6/src/include/Unidraw/Commands/Imakefile ivtools-0.6/src/include/Unidraw/Commands/Makefile ivtools-0.6/src/include/Unidraw/Commands/align.h ivtools-0.6/src/include/Unidraw/Commands/brushcmd.h ivtools-0.6/src/include/Unidraw/Commands/catcmds.h ivtools-0.6/src/include/Unidraw/Commands/colorcmd.h ivtools-0.6/src/include/Unidraw/Commands/command.h ivtools-0.6/src/include/Unidraw/Commands/data.h ivtools-0.6/src/include/Unidraw/Commands/datas.h ivtools-0.6/src/include/Unidraw/Commands/dirty.h ivtools-0.6/src/include/Unidraw/Commands/edit.h ivtools-0.6/src/include/Unidraw/Commands/font.h ivtools-0.6/src/include/Unidraw/Commands/import.h ivtools-0.6/src/include/Unidraw/Commands/macro.h ivtools-0.6/src/include/Unidraw/Commands/nop.h ivtools-0.6/src/include/Unidraw/Commands/patcmd.h ivtools-0.6/src/include/Unidraw/Commands/struct.h ivtools-0.6/src/include/Unidraw/Commands/transforms.h ivtools-0.6/src/include/Unidraw/Commands/viewcmds.h ivtools-0.6/src/include/Unidraw/Components/Imakefile ivtools-0.6/src/include/Unidraw/Components/Makefile ivtools-0.6/src/include/Unidraw/Components/cglue.h ivtools-0.6/src/include/Unidraw/Components/component.h ivtools-0.6/src/include/Unidraw/Components/compview.h ivtools-0.6/src/include/Unidraw/Components/connector.h ivtools-0.6/src/include/Unidraw/Components/csolver.h ivtools-0.6/src/include/Unidraw/Components/ellipse.h ivtools-0.6/src/include/Unidraw/Components/externview.h ivtools-0.6/src/include/Unidraw/Components/grcomp.h ivtools-0.6/src/include/Unidraw/Components/grview.h ivtools-0.6/src/include/Unidraw/Components/gvupdater.h ivtools-0.6/src/include/Unidraw/Components/line.h ivtools-0.6/src/include/Unidraw/Components/link.h ivtools-0.6/src/include/Unidraw/Components/pad.h ivtools-0.6/src/include/Unidraw/Components/pin.h ivtools-0.6/src/include/Unidraw/Components/polygon.h ivtools-0.6/src/include/Unidraw/Components/psformat.h ivtools-0.6/src/include/Unidraw/Components/psview.h ivtools-0.6/src/include/Unidraw/Components/rastercomp.h ivtools-0.6/src/include/Unidraw/Components/rect.h ivtools-0.6/src/include/Unidraw/Components/slot.h ivtools-0.6/src/include/Unidraw/Components/spline.h ivtools-0.6/src/include/Unidraw/Components/stencilcomp.h ivtools-0.6/src/include/Unidraw/Components/text.h ivtools-0.6/src/include/Unidraw/Components/vertices.h ivtools-0.6/src/include/Unidraw/Graphic/Imakefile ivtools-0.6/src/include/Unidraw/Graphic/Makefile ivtools-0.6/src/include/Unidraw/Graphic/damage.h ivtools-0.6/src/include/Unidraw/Graphic/ellipses.h ivtools-0.6/src/include/Unidraw/Graphic/geomobjs.h ivtools-0.6/src/include/Unidraw/Graphic/graphic.h ivtools-0.6/src/include/Unidraw/Graphic/grblock.h ivtools-0.6/src/include/Unidraw/Graphic/lines.h ivtools-0.6/src/include/Unidraw/Graphic/picture.h ivtools-0.6/src/include/Unidraw/Graphic/polygons.h ivtools-0.6/src/include/Unidraw/Graphic/pspaint.h ivtools-0.6/src/include/Unidraw/Graphic/rasterrect.h ivtools-0.6/src/include/Unidraw/Graphic/splines.h ivtools-0.6/src/include/Unidraw/Graphic/ulabel.h ivtools-0.6/src/include/Unidraw/Graphic/ustencil.h ivtools-0.6/src/include/Unidraw/Graphic/util.h ivtools-0.6/src/include/Unidraw/Graphic/verts.h ivtools-0.6/src/include/Unidraw/Imakefile ivtools-0.6/src/include/Unidraw/Makefile ivtools-0.6/src/include/Unidraw/Tools/Imakefile ivtools-0.6/src/include/Unidraw/Tools/Makefile ivtools-0.6/src/include/Unidraw/Tools/connect.h ivtools-0.6/src/include/Unidraw/Tools/grcomptool.h ivtools-0.6/src/include/Unidraw/Tools/magnify.h ivtools-0.6/src/include/Unidraw/Tools/move.h ivtools-0.6/src/include/Unidraw/Tools/reshape.h ivtools-0.6/src/include/Unidraw/Tools/rotate.h ivtools-0.6/src/include/Unidraw/Tools/scale.h ivtools-0.6/src/include/Unidraw/Tools/select.h ivtools-0.6/src/include/Unidraw/Tools/stretch.h ivtools-0.6/src/include/Unidraw/Tools/tool.h ivtools-0.6/src/include/Unidraw/_defines.h ivtools-0.6/src/include/Unidraw/_undefs.h ivtools-0.6/src/include/Unidraw/catalog.h ivtools-0.6/src/include/Unidraw/classes.h ivtools-0.6/src/include/Unidraw/clipboard.h ivtools-0.6/src/include/Unidraw/creator.h ivtools-0.6/src/include/Unidraw/ctrlinfo.h ivtools-0.6/src/include/Unidraw/dialogs.h ivtools-0.6/src/include/Unidraw/editor.h ivtools-0.6/src/include/Unidraw/editorinfo.h ivtools-0.6/src/include/Unidraw/enter-scope.h ivtools-0.6/src/include/Unidraw/globals.h ivtools-0.6/src/include/Unidraw/grid.h ivtools-0.6/src/include/Unidraw/iterator.h ivtools-0.6/src/include/Unidraw/keymap.h ivtools-0.6/src/include/Unidraw/kybd.h ivtools-0.6/src/include/Unidraw/leave-scope.h ivtools-0.6/src/include/Unidraw/manip.h ivtools-0.6/src/include/Unidraw/manips.h ivtools-0.6/src/include/Unidraw/path.h ivtools-0.6/src/include/Unidraw/selection.h ivtools-0.6/src/include/Unidraw/statevar.h ivtools-0.6/src/include/Unidraw/statevars.h ivtools-0.6/src/include/Unidraw/stateview.h ivtools-0.6/src/include/Unidraw/stateviews.h ivtools-0.6/src/include/Unidraw/transfn.h ivtools-0.6/src/include/Unidraw/transfns.h ivtools-0.6/src/include/Unidraw/uarray.h ivtools-0.6/src/include/Unidraw/uctrl.h ivtools-0.6/src/include/Unidraw/uctrls.h ivtools-0.6/src/include/Unidraw/uformat.h ivtools-0.6/src/include/Unidraw/uhash.h ivtools-0.6/src/include/Unidraw/ulist.h ivtools-0.6/src/include/Unidraw/umap.h ivtools-0.6/src/include/Unidraw/unidraw.h ivtools-0.6/src/include/Unidraw/upage.h ivtools-0.6/src/include/Unidraw/viewer.h ivtools-0.6/src/include/std/Imakefile ivtools-0.6/src/include/std/Makefile ivtools-0.6/src/include/std/math.h ivtools-0.6/src/include/std/osfcn.h ivtools-0.6/src/include/std/stdio.h ivtools-0.6/src/include/std/string.h ivtools-0.6/src/ivxt/Imakefile ivtools-0.6/src/ivxt/Xd.h ivtools-0.6/src/ivxt/Xud.h ivtools-0.6/src/ivxt/glyphwidget.h ivtools-0.6/src/ivxt/glyphwidgetP.h ivtools-0.6/src/ivxt/main.c ivtools-0.6/src/ivxt/widgetwindow.c ivtools-0.6/src/ivxt/widgetwindow.h ivtools-0.6/src/ivxt/xtintrinsic.h ivtools-0.6/src/ivxt/xtsession.c ivtools-0.6/src/ivxt/xtsession.h ivtools-0.6/src/ivxt/xtudsession.c ivtools-0.6/src/ivxt/xtudsession.h ivtools-0.6/src/man/Imakefile ivtools-0.6/src/man/Makefile ivtools-0.6/src/man/man1/Imakefile ivtools-0.6/src/man/man1/Makefile ivtools-0.6/src/man/man1/dclock.1 ivtools-0.6/src/man/man1/drawtool.1 ivtools-0.6/src/man/man1/flipbook.1 ivtools-0.6/src/man/man1/graphdraw.1 ivtools-0.6/src/man/man1/iclass.1 ivtools-0.6/src/man/man1/idraw.1 ivtools-0.6/src/man/man1/ivmkmf.1 ivtools-0.6/src/scripts/Imakefile ivtools-0.6/src/scripts/Makefile ivtools-0.6/src/scripts/anytopnm.sh ivtools-0.6/src/scripts/bsdinst.sh ivtools-0.6/src/scripts/chgsuffix.sh ivtools-0.6/src/scripts/cntsrclines.bash ivtools-0.6/src/scripts/config.guess ivtools-0.6/src/scripts/config.sub ivtools-0.6/src/scripts/cpu.sh ivtools-0.6/src/scripts/install.sh ivtools-0.6/src/scripts/ivcd.cpp ivtools-0.6/src/scripts/ivct.cpp ivtools-0.6/src/scripts/ivds.cpp ivtools-0.6/src/scripts/ivdt.cpp ivtools-0.6/src/scripts/ivfb.cpp ivtools-0.6/src/scripts/ivgd.cpp ivtools-0.6/src/scripts/ivgetjpg.bash ivtools-0.6/src/scripts/ivmkmf.cpp ivtools-0.6/src/scripts/mkdirhier.sh ivtools-0.6/src/scripts/mkgif89a.bash ivtools-0.6/src/scripts/mkgif89ac.bash ivtools-0.6/src/scripts/pnmtopgm.sh ivtools-0.6/src/scripts/tiftopnm.bash ivtools-0.6/src/utils/Imakefile ivtools-0.6/src/utils/Makefile ivtools-0.6/src/utils/stdcmapppm.c ivtools-0.6/src/utils/tmpnam.c ivtools-doc/ivtools-0.6-README.txt0000644000076500007650000002637607374262632017371 0ustar scottscott00000000000000 README for ivtools 0.6 This directory contains a release of ivtools 0.6.12 from Vectaport Inc.. You should read the rest of this file for information on what ivtools is and the INSTALL file for instructions on how to build it. It is known to build with many versions of gcc (gcc-2.7.2 and <, gcc-2.8.1 and >, egcs-1.0.1 and >) and on a variety of Unix'es: SunOS 4.1 (MIT's X11R5), Solaris 2.6 (X11R6), Irix 5.2 (SGI's X11R5), Linux 1.2 (Slackware 3.0, XFree86 3.1) and Linux 2.0 (RedHat 4.0 thru 5.1, Debian 2.0). There are contributed configs for HPUX and Alpha. You can pick up Linux-ELF binaries from the ivtools web page (http://www.vectaport.com/ivtools/). The overall copyright and permission notice for ivtools can be found in the COPYRIGHT file in this directory. If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to ivtools-info@vectaport.com. * What is ivtools?: ivtools is a framework for building custom drawing editors and spatial data servers. It is a collection of C++ libraries and example programs that incorporates and augments the last source tree for InterViews 3.1 published by Stanford University and Silicon Graphics (3.2a.tar.Z). ivtools comprises four sets of interrelated capabilities useful for application programmers. The first set is the libraries and example programs borrowed whole from InterViews 3.1. The second set is for reusing and extending the light-weight glyph objects of InterViews 3.1. The third set reuses and extends the Unidraw library (Unidraw is a major portion of the overall InterViews 3.1 release that provides an application framework for custom drawing editors). The fourth set adds a command interpreter and server mechanism to ivtools, and demonstrates these capabilities with text, glyph, and graphic front-ends. To get more of an overview of these layers you can read http://www.vectaport.com/ivtools/ivtools-layers.html. These are the libraries and example programs borrowed straight from InterViews 3.1: IV library of InterView 3.1, InterViews 2.6, Dispatch, OS, and TIFF objects dclock digital clock with fading digits iclass C++ class browser idemo glyph demo These are the libraries and example programs that make up the glyph part of ivtools (programs in the glyphs directory): IVGlyph library of Glyph derived classes bdvtable bounded-value editing formdemo value-editing gclock glyph-based clock meter sliding meter radiogroup radio-buttons scrollable 2d scrollable glyph scrollfield 2d scrollable field-editor strchooser string chooser text-editor emacs-like text editor timestamp editable time glyph These are the libraries and example programs that make up the Unidraw part of ivtools: Unidraw copy of Unidraw library from InterViews 3.1 UniIdraw librarification of 3.1 idraw OverlayUnidraw extended Unidraw/idraw framework TopoFace spatial network library (nodes, edges, faces) GraphUnidraw graph browser/editor library FrameUnidraw multi-frame display mechanism idraw idraw built on UniIdraw library drawtool extended version of idraw built on OverlayUnidraw graphdraw graph browser/editor integrated with drawtool flipbook flipbook multi-frame editor based on drawtool These are the libraries that make up the command interpreter part of ivtools: ComUtil command interpreter utility functions Attribute attribute property list mechanism AttrGlyph glyphs for Attribute library ComTerp command interpreter objects ComGlyph glyphs for ComTerp library ComUnidraw drawing editor with command interpreter DrawServ drawing server framework comtest test program comterp sample command interpreter glyphterp command interpreter user interface comdraw drawtool with command interpreter drawserv comdraw with graphs There is also a Time library with Date and Time classes borrowed from the NIH's class library, and an example program, ivxt, that shows how an Xt widget can be wrapped around an InterViews application. A series of makefile targets support the checkin of sources to cvs/rcs, and their subsequent update and modification. This requires a copy of cvs available from the Free Software Foundation and ivmkcm-0.7.2 available through http://www.vectaport.com/ivmkcm/ * Acknowledgements: ivtools programmers at Vectaport: Scott Johnston Jorge Gautier ivtools programmers at large: Rick Kissh Brian Hogencamp InterViews 3.1 programmers that we know of: Mark Linton John Vlissides Paul Calder John Interrante Scott Stanton Steven Tang HPUX (HP-800) config contributed by Neal Becker. ALPHA config contributed by Bruno Delfosse at Thomson CSF. Patches to iv-3.2a incorporated from the PDP++ distribution from Carnegie Mellon University Department of Psychiatry, Randall C. O'Reilly, et. al. Patches for Debian 2.0 packaging incorporated from Guenter Geiger. This work included the conversion of drawtool, flipbook, and graphdraw README's to man page format. Patch for iv-3.1 shift key handling from Doug Scott. Certain InterViews libraries (Dispatch, IV, IV-2_6, IV-X11, InterViews, OS, TIFF, Unidraw) and example programs (iclass, idemo, idraw) are copied from the InterViews 3.1 sources. Here is the aggregrate copyright notice for that software package: /* * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * Copyright (c) 1991 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Stanford and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Stanford and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL STANFORD OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The building of iv-3.1 with gcc-2.5.* (and subsequent versions) was enabled by a patch from Adam Zell. The TIFF library was written by Sam Leffler and published with this copyright and permission notice: /* * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991, 1992 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The strchooser example and StrChooser class were contributed by David B. Hollenbeck, as well as the glyph-based Motif-look pull-down menus of OverlayUnidraw. Here is his copyright notice: /* * Copyright (c) 1993 David B. Hollenbeck * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notice and this permission notice appear in * all copies of the software and related documentation, and (ii) the name of * David B. Hollenbeck may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of David B. Hollenbeck. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL DAVID B. HOLLENBECK BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The scrollable example is based on code from Chen Wang The text-editor example program is by Jan Andersson of Torpa Konsult AB. Here is that copyright notice: // // Simple Text Editor // // // Copyright (C) 1993 Ellemtel Telecommunication Systems Labratories // // Permission is granted to any individual or institution to use, copy, // modify, and distribute this software, provided that this complete // copyright and permission notice is maintained, intact, in all copies // and supporting documentation. // // Ellemtel Telecommunication Systems Labratories make no representation // of the suitability of this software for any purpose. It is provided // "as is" without any expressed or implied warranty. // // Jan Andersson, Torpa Konsult AB // janne at torpa.se - 1993-08-29 The Date and Time classes in the Time library are borrowed from the NIHCL class library, written by K. E. Gorlen, Computer Sciences Laboratory, DCRT, National Institutes of Health, Bethesda, MD 20892, and published with this notice: THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A "UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY. The graylevel raster and painting mechanisms of OverlayUnidraw were originated by Richard B. Kissh under contract to Vectaport Inc. The ComUtil library was originally developed at Triple Vision Inc. under NSF Grant ISI-8521259 (authors/contributors: Robert C. Fitch, Richard A. Fundakowski, Robert K. Graber, Scott E. Johnston). ivtools has been developed by Vectaport Inc. (P.O. Box 7141, Redwood City, CA 94063), with additional support from IET Inc. (P.O. Box 112450, Campbell, CA 95011) in the form of ARPA subcontracts (DACA76-93-C-0025 and DACA76-97-C-0005), as well as support from Applied Sciences Inc, San Francisco, CA, in the form of a subcontract for a NASA Phase II SBIR. ivtools-doc/ivtools-0.6.2-kanji.patch0000644000076500007650000052375707374262632020155 0ustar scottscott00000000000000Index: src_iv/Imakefile diff -c src_iv/Imakefile:1.1 src_iv/Imakefile:1.2 *** src_iv/Imakefile:1.1 Tue Mar 17 15:53:11 1998 --- src/IV/Imakefile Tue Mar 24 09:01:23 1998 *************** *** 20,25 **** --- 20,30 ---- $(DISPATCH)/iohandler.$(CCSUFFIX) #endif + #ifdef SharedCCFlags + #undef SharedCCFlags + #define SharedCCFlags -fPIC -fshared-data + #endif + INTERVIEWS = $(SRC)/../InterViews IV_2_6 = $(SRC)/../IV-2_6 IV_X11 = $(SRC)/../IV-X11 *************** *** 112,117 **** --- 117,123 ---- InterViewsObjFlags(tiff,$(OPTIMIZE_CCFLAGS)) InterViewsObj(tformsetter) InterViewsObj(xymarker) + InterViewsObj(clthandler) #if BuildIV_2_6 *************** *** 187,192 **** --- 193,201 ---- IV_X11Obj(xreqerr) IV_X11Obj(xselection) IV_X11ObjFlags(xwindow,$(OPTIMIZE_CCFLAGS)) + IV_X11ObjFlags(xjivfunc,$(OPTIMIZE_CCFLAGS)) + IV_X11ObjFlags(kinput,$(OPTIMIZE_CCFLAGS)) + IV_X11ObjFlags(convert,-DKANJI) #define DispatchObj(file) DispatchObjFlags(file,NullParameter) #define DispatchObjFlags(file,f) MakeObjectRule(file,$(DISPATCH)/file,f -xc++) Index: src_interviews/clthandler.c diff -c /dev/null src_interviews/clthandler.c:1.1 *** /dev/null Tue Mar 24 09:01:30 1998 --- src/InterViews/clthandler.c Tue Mar 24 09:01:26 1998 *************** *** 0 **** --- 1,43 ---- + /* + * Copyright (c) 1991, 1992 Fujitsu Oita Software Laboratory Limited + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice and this permission notice appear in + * all copies of the software and related documentation, and the name of + * Fujitsu Oita Software Laboratory may not be used in any advertising or + * publicity relating to the software without specific, prior written + * prior permission of Fujitsu Oita Software Laboratory. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL FUJITSU OITA SOFTWARE LABORATORY BE LIABLE FOR ANY + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY + * OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Author: Toshihisa Eto, Fujitsu Oita Software Laboratory Limited, Japan + * E-Mail: eto@ai.cs.fujitsu.co.jp + * Nifty: HBG02665 + */ + + /* + * ClientMessageHandler - event handler + */ + + #ifdef JIV + + #include + + ClientMessageHandler::ClientMessageHandler() { } + ClientMessageHandler::~ClientMessageHandler() { } + + boolean ClientMessageHandler::handle_p(const Event&) { + return false; + } + + #endif /* JIV */ Index: src_interviews/label.c diff -c src_interviews/label.c:1.1 src_interviews/label.c:1.2 *** src_interviews/label.c:1.1 Tue Mar 17 15:53:17 1998 --- src/InterViews/label.c Tue Mar 24 09:01:26 1998 *************** *** 110,117 **** --- 110,130 ---- const char* q = &p[text_->length()]; Coord* cw = &char_widths_[0]; for (; p < q; p++, cw++) { + #ifdef JIV + Coord width; + if (*p & 0x80) { + long ch = ((*p << 8) & 0xff00) | (*(p+1) & 0x00ff); + width = f->width(ch); + c->character(f, ch, width, color, x, y); + p++; + } else { + width = f->width(*p); + c->character(f, *p, width, color, x, y); + } + #else Coord width = *cw; c->character(f, *p, width, color, x, y); + #endif /* JIV */ x += width; } } Index: src_interviews/style.c diff -c src_interviews/style.c:1.1 src_interviews/style.c:1.2 *** src_interviews/style.c:1.1 Tue Mar 17 15:53:20 1998 --- src/InterViews/style.c Tue Mar 24 09:01:27 1998 *************** *** 40,45 **** --- 40,48 ---- #include #include #include + #ifdef JIV + #include + #endif /* JIV */ declarePtrList(StyleList,Style) implementPtrList(StyleList,Style) *************** *** 1032,1037 **** --- 1035,1146 ---- } return v.case_insensitive_equal("on") || v.case_insensitive_equal("true"); } + + #ifdef JIV + const char PSPreambleDefault[] = ""; + + struct pscmpfdata { + const char* fn; + const char* fa; + const char* fk; + } PSCmpfDefault[] = { + {"Courier-Bold-Gothic", "Courier-Bold", "GothicBBB-Medium-EUC-H"}, + {"Courier-Ryumin", "Courier", "Ryumin-Light-EUC-H"}, + {"Courier-Gothic", "Courier", "GothicBBB-Medium-EUC-H"}, + {"Times-Ryumin", "Times-Roman", "Ryumin-Light-EUC-H"}, + {"Times-Gothic", "Times-Roman", "GothicBBB-Medium-EUC-H"}, + {"Helvetica-Gothic", "Helvetica", "GothicBBB-Medium-EUC-H"}, + {"Times-Ryumin-Italic", "Times-Italic", "Ryumin-Light-EUC-H-Slant"}, + {"Times-Bold-Gothic-Italic", "Times-BoldItalic", + "GothicBBB-Medium-EUC-H-Slant"}, + {0, 0, 0} + }; + + struct pssfdata { + const char* fn; + const char* fo; + } PSSfDefault[] = { + {"Ryumin-Light-EUC-H-Slant", "Ryumin-Light-EUC-H"}, + {"GothicBBB-Medium-EUC-H-Slant", "GothicBBB-Medium-EUC-H"}, + {0, 0} + }; + + + void Style::initCompositeFont() const { + String value; + + /// Initialize for InterViews-Composite-Font + char str[64], compfontname[256], truefontname1[256], + truefontname2[256], fontstyle[256]; + int i = 1; + sprintf(str ,"compositeFont%d", i); + while (find_attribute(String(str), value)) { + switch(sscanf(value.string(), "%s%s%s%s", compfontname, + truefontname1, truefontname2, fontstyle)) { + case 3: // Composite Font description without style + new CompositeFont(compfontname, truefontname1, truefontname2); + break; + case 4: // Composite Font description without style + new CompositeFont(compfontname, truefontname1, + truefontname2, fontstyle); + break; + default: + // Error description + break; + } + sprintf(str, "compositeFont%d", ++i); + } + + /// Initialize for Unidraw-PostScript-Composite-Font + if (find_attribute(String("PSCompositeFontPreamble"), value)) { + PSCompositeFont::setPreamble(value.string()); + } else { + PSCompositeFont::setPreamble(PSPreambleDefault); + } + i = 1; + sprintf(str ,"PSCompositeFont%d", i); + while (find_attribute(String(str), value)) { + switch(sscanf(value.string(), "%s%s%s", compfontname, + truefontname1, truefontname2)) { + case 3: // Composite Font description without style + new PSCompositeFont(compfontname, truefontname1, truefontname2); + break; + default: + // Error description + break; + } + sprintf(str, "PSCompositeFont%d", ++i); + } + if (i == 1) { + for (i = 0; PSCmpfDefault[i].fn != 0; i++) { + new PSCompositeFont(PSCmpfDefault[i].fn, + PSCmpfDefault[i].fa, + PSCmpfDefault[i].fk); + } + } + + /// Initialize for Unidraw-PostScript-Slant-Font + char slantfontname[256], truefontname[256]; + i = 1; + sprintf(str ,"PSSlantFont%d", i); + while (find_attribute(String(str), value)) { + switch(sscanf(value.string(), "%s%s", slantfontname, truefontname)) { + case 2: // Slant Font description without style + new PSSlantFont(slantfontname, truefontname); + break; + default: + // Error description + break; + } + sprintf(str, "PSSlantFont%d", ++i); + } + if (i == 1) { + for (i = 0; PSSfDefault[i].fn != 0; i++) { + new PSSlantFont(PSSfDefault[i].fn, PSSfDefault[i].fo); + } + } + } + #endif /* JIV */ boolean Style::value_is_on(const char* s) const { return value_is_on(String(s)); Index: src_iv-2_6/filechooser.c diff -c src_iv-2_6/filechooser.c:1.1 src_iv-2_6/filechooser.c:1.2 *** src_iv-2_6/filechooser.c:1.1 Tue Mar 17 15:53:27 1998 --- src/IV-2_6/filechooser.c Tue Mar 24 09:01:32 1998 *************** *** 23,28 **** --- 23,31 ---- */ #include + #ifdef JIV_EXTEND + #include // for getLabel + #endif #include #include #include *************** *** 43,48 **** --- 46,59 ---- #undef FileChooser #define FileChooser _lib_iv2_6(FileChooser) + #ifdef JIV_EXTEND + static const char* tmpLabel; + + #define getLabel(attr, default) \ + (((tmpLabel = World::current()->GetAttribute(attr)) != NULL) ? \ + tmpLabel : default) + #endif + FileChooser::FileChooser( const char* t, const char* subt, const char* d, int r, int c, const char* acceptLabel, Alignment a *************** *** 175,181 **** --- 186,196 ---- new HBox( new VGlue(space, 0), new HGlue, + #ifndef JIV_EXTEND new PushButton("Cancel", state, '\007'), + #else + new PushButton(getLabel("BCancel", "Cancel"), state, '\007'), + #endif new HGlue(space, 0), new PushButton(acptLbl, state, '\r') ) Index: src_iv-2_6/interactor.c diff -c src_iv-2_6/interactor.c:1.1 src_iv-2_6/interactor.c:1.2 *** src_iv-2_6/interactor.c:1.1 Tue Mar 17 15:53:28 1998 --- src/IV-2_6/interactor.c Tue Mar 24 09:01:32 1998 *************** *** 74,79 **** --- 74,82 ---- managed_window = nil; cursor_ = nil; canvas_type_ = CanvasInputOutput; + #ifdef JIV /* eto@ai.cs.fujitsu.co.jp 12 Jan 1992 */ + cmhandler = nil; + #endif handler_ = new InteractorHandler(this); Resource::ref(handler_); ref(); *************** *** 584,586 **** --- 587,601 ---- CanvasType Interactor::GetCanvasType() const { return canvas_type_; } ManagedWindow* Interactor::GetTopLevelWindow() const { return managed_window; } + + #ifdef JIV /* eto@ai.cs.fujitsu.co.jp 12 Jan 1992 */ + void Interactor::SetClientMessageHandler(ClientMessageHandler* h) { + cmhandler = h; + } + + void Interactor::ResetClientMessageHandler(ClientMessageHandler* h) { + if (cmhandler == h) { + cmhandler = nil; + } + } + #endif Index: src_iv-2_6/sensor.c diff -c src_iv-2_6/sensor.c:1.1 src_iv-2_6/sensor.c:1.2 *** src_iv-2_6/sensor.c:1.1 Tue Mar 17 15:53:29 1998 --- src/IV-2_6/sensor.c Tue Mar 24 09:01:32 1998 *************** *** 30,35 **** --- 30,38 ---- extern unsigned long motionmask, keymask, entermask, leavemask, focusmask, + #ifdef JIV + propmask, + #endif /* JIV */ upmask, downmask, initmask; Sensor::Sensor() { *************** *** 75,80 **** --- 78,86 ---- allEvents->Catch(KeyEvent); allEvents->Catch(EnterEvent); allEvents->Catch(LeaveEvent); + #ifdef JIV + allEvents->Catch(PropertyEvent); + #endif /* JIV */ onoffEvents = new Sensor; onoffEvents->Catch(EnterEvent); onoffEvents->Catch(LeaveEvent); *************** *** 116,121 **** --- 122,132 ---- case FocusOutEvent: mask |= focusmask; break; + #ifdef JIV + case PropertyEvent: + mask |= propmask; + break; + #endif /* JIV */ } } *************** *** 175,180 **** --- 186,196 ---- case FocusOutEvent: mask &= ~focusmask; break; + #ifdef JIV + case PropertyEvent: + mask &= ~propmask; + break; + #endif /* JIV */ } } Index: src_iv-2_6/textdisplay.c diff -c src_iv-2_6/textdisplay.c:1.1 src_iv-2_6/textdisplay.c:1.2 *** src_iv-2_6/textdisplay.c:1.1 Tue Mar 17 15:53:29 1998 --- src/IV-2_6/textdisplay.c Tue Mar 24 09:01:32 1998 *************** *** 50,55 **** --- 50,58 ---- void Replace(TextDisplay*, int line, const char*, int count); void Draw(TextDisplay*, int line, int first, int last); + #ifdef JIV + void DrawBeforeCharacter(TextDisplay*, int line, int next); + #endif int Index(TextDisplay*, IntCoord x, boolean between); IntCoord Offset(TextDisplay*, int index); *************** *** 456,462 **** --- 459,469 ---- caretline >= topline && caretline <= bottomline ) { TextLine* l = Line(caretline, true); + #ifndef JIV l->Draw(this, caretline, caretindex-1, caretindex); + #else /* JIV */ + l->DrawBeforeCharacter(this, caretline, caretindex); + #endif /* JIV */ } } *************** *** 550,555 **** --- 557,577 ---- } } + #ifdef JIV + void TextDisplay::CaretPoint ( + int& x, + int& y + ) { + IntCoord l = Left(caretline, caretindex); + IntCoord b = Base(caretline); + IntCoord nx, ny; + + painter->MapCoord(canvas, l, b, nx, ny); + x = nx; + y = ny; + } + #endif + TextLine::TextLine () { size = 0; text = nil; *************** *** 580,588 **** --- 602,623 ---- cw = 0; } } else { + #ifndef JIV cw = f->Width(text+i, 1); + #else + if ((unsigned char)text[i] < 0xa1) { + cw = f->Width(text+i, 1); + } else { + cw = f->Width(text+i, 2); + } + #endif } w += cw; + #ifdef JIV + if ((unsigned char)text[i] >= 0xa1) { + i++; + } + #endif ++i; } return w; *************** *** 611,626 **** --- 646,682 ---- cw = 0; } } else { + #ifndef JIV cw = f->Width(text+i, 1); + #else + if ((unsigned char)text[i] < 0xa1) { + cw = f->Width(text+i, 1); + } else { + cw = f->Width(text+i, 2); + } + #endif } w += cw; if (w > x) { break; } + #ifdef JIV + if ((unsigned char)text[i] >= 0xa1) { + i++; + } + #endif ++i; } if (between && i <= lastchar && x > w - cw/2 || !between && x > w) { + #ifndef JIV return i+1; + #else + if ((unsigned char)text[i] < 0xa1) { + return i+1; + } else { + return i + 2; + } + #endif } else { return i; } *************** *** 676,681 **** --- 732,746 ---- int l = Math::min(last, lastchar); for (int i = f; i <= l; ++i) { attr[i] = attr[i] | style; + #ifdef JIV + if ((unsigned char)(text[i]) >= 0xa1) { + if (i == last) { + last++; + } + i++; + attr[i] = attr[i] | style; + } + #endif } Draw(display, line, first, last); } *************** *** 693,698 **** --- 758,772 ---- int l = Math::min(last, lastchar); for (int i = f; i <= l; ++i) { attr[i] = attr[i] & ~st; + #ifdef JIV + if ((unsigned char)(text[i]) >= 0xa1) { + if (i == last) { + last++; + } + i++; + attr[i] = attr[i] & ~st; + } + #endif } Draw(display, line, first, last); } *************** *** 793,798 **** --- 867,884 ---- Draw(display, line, -1, lastchar+1); } + #ifdef JIV + void TextLine::DrawBeforeCharacter ( + TextDisplay* display, int line, int next + ) { + if ((unsigned char)(text[next - 1]) < 0xa1) { + Draw(display, line, next - 1, next); + } else { + Draw(display, line, next - 2, next); + } + } + #endif JIV + void TextLine::Draw ( TextDisplay* display, int line, int first, int last ) { *************** *** 831,839 **** } } int done = start; display->painter->MoveTo(left, bottom); ! for (int i = start; i <= finish+1; ++i) { ! if (i==finish+1 || attr[i]!=attr[done] || text[i]=='\t') { if (done != i && text[done] == '\t') { IntCoord l, r, y; display->painter->GetPosition(l, y); --- 917,951 ---- } } int done = start; + #ifdef JIV + boolean afterEuc = false; + int tmpfinish = ((unsigned char)text[finish] < 0xa1 ? + finish : finish + 1); + #endif display->painter->MoveTo(left, bottom); ! for (int i = start; ! #ifndef JIV ! i <= finish+1; ! #else ! i <= tmpfinish+1; ! #endif ! ++i) { ! #ifdef JIV ! if (afterEuc) { ! afterEuc = false; ! continue; ! } ! if ((unsigned char)text[i] >= 0xa1) { ! afterEuc = true; ! } ! #endif ! if ( ! #ifndef JIV ! i==finish+1 ! #else ! i==tmpfinish+1 ! #endif ! || attr[i]!=attr[done] || text[i]=='\t') { if (done != i && text[done] == '\t') { IntCoord l, r, y; display->painter->GetPosition(l, y); Index: src_iv-2_6/xevent2_6.c diff -c src_iv-2_6/xevent2_6.c:1.1 src_iv-2_6/xevent2_6.c:1.2 *** src_iv-2_6/xevent2_6.c:1.1 Tue Mar 17 15:53:30 1998 --- src/IV-2_6/xevent2_6.c Tue Mar 24 09:01:32 1998 *************** *** 45,50 **** --- 45,53 ---- Mask upmask = ButtonReleaseMask|OwnerGrabButtonMask; Mask downmask = ButtonPressMask|OwnerGrabButtonMask; Mask initmask = PointerMotionHintMask; + #ifdef JIV + Mask propmask = PropertyChangeMask; + #endif /* JIV */ boolean Sensor::Caught(const Event& e) const { XEvent& xe = e.rep()->xevent_; *************** *** 65,70 **** --- 68,78 ---- case LeaveNotify: return (mask & leavemask) != 0 && e.rep()->xevent_.xcrossing.detail != NotifyInferior; + #ifdef JIV + case ClientMessage: + case PropertyNotify: + return (mask & propmask) != 0; + #endif /* JIV */ } return false; } *************** *** 99,104 **** --- 107,120 ---- case LeaveNotify: GetCrossingInfo(LeaveEvent); break; + #ifdef JIV + case ClientMessage: + eventType = ClientEvent; + break; + case PropertyNotify: + eventType = PropertyEvent; + break; + #endif JIV } } Index: src_iv-2_6/xinter.c diff -c src_iv-2_6/xinter.c:1.1 src_iv-2_6/xinter.c:1.2 *** src_iv-2_6/xinter.c:1.1 Tue Mar 17 15:53:30 1998 --- src/IV-2_6/xinter.c Tue Mar 24 09:01:33 1998 *************** *** 33,38 **** --- 33,42 ---- #include #include #include + #ifdef JIV + /* patch for ClientMessage 12 Jan 1992 eto@ai.cs.fujitsu.co.jp */ + #include + #endif #include #include #include *************** *** 205,210 **** --- 209,228 ---- */ Handler* InteractorWindow::target(const Event& e) const { + #ifdef JIV + /* patch for ClientMessage 10 Jan 1992 eto@ai.cs.fujitsu.co.jp */ + int eventType = e.rep()->xevent_.type; + if ((eventType == ClientMessage) || (eventType == PropertyNotify)) { + ClientMessageHandler* h; + if ((h = interactor_->cmhandler) != nil) { + if (h->handle_p(e)) { + return h; + } + } + return nil; + } + #endif + if (!e.rep()->has_pointer_location()) { return nil; } Index: src_iv-2_6/xpainter.c diff -c src_iv-2_6/xpainter.c:1.1 src_iv-2_6/xpainter.c:1.2 *** src_iv-2_6/xpainter.c:1.1 Tue Mar 17 15:53:30 1998 --- src/IV-2_6/xpainter.c Tue Mar 24 09:01:33 1998 *************** *** 52,57 **** --- 52,60 ---- #include #include #include + #ifdef JIV + #include + #endif JIV #include #include #include *************** *** 521,531 **** --- 524,547 ---- const Font* f, int c, int k, const Transformer& t ) { if (btable_ == nil) { + #ifndef JIV btable_ = new BitmapTable(256); + #else + btable_ = new BitmapTable(256 * 256); + #endif txtable_ = new BitmapTable(1024); } Bitmap* basic; + #ifndef JIV XFont fid = f->rep(display_)->font_->fid; + #else + XFont fid; + if (f->isComposite() && ((unsigned char)c > 0xff)) { + fid = f->rep2byte(display_)->font_->fid; + } else { + fid = f->rep(display_)->font_->fid; + } + #endif if (!btable_->find(basic, fid, c)) { basic = new Bitmap(f, c); Resource::ref(basic); *************** *** 817,834 **** --- 833,883 ---- if (txstring == 0) { Map(c, x, ybase - 1, x0, y0); if (rep->fillbg) { + #ifndef JIV XDrawImageString( d, xid, rep->fillgc, x0, y0, s, len ); + #else + if (font->isComposite()) { + JIVDrawImageString(d, xid, rep->fillgc, font, x0, y0, + (unsigned char*)s, len, Rep()->display); + } else { + XDrawImageString( + d, xid, rep->fillgc, x0, y0, s, len + ); + } + #endif } else { + #ifndef JIV XDrawString( d, xid, rep->fillgc, x0, y0, s, len ); + #else + if (font->isComposite()) { + JIVDrawString(d, xid, rep->fillgc, font, x0, y0, + (unsigned char*)s, len, Rep()->display); + } else { + XDrawString( + d, xid, rep->fillgc, x0, y0, s, len + ); + } + #endif } if (style & Boldface) { + #ifndef JIV XDrawString( d, xid, rep->fillgc, x0-1, y0, s, len ); + #else + if (font->isComposite()) { + JIVDrawString(d, xid, rep->fillgc, font, x0-1, y0, + (unsigned char*)s, len, Rep()->display); + } else { + XDrawString( + d, xid, rep->fillgc, x0-1, y0, s, len + ); + } + #endif } } else { IntCoord curx = x; *************** *** 848,853 **** --- 897,903 ---- switch (p.txfonts) { case PainterDpyInfo::TxFontsOff: Map(c, curx, ybase - 1, x0, y0); + #ifndef JIV XDrawString( d, xid, rep->fillgc, x0, y0, s+i, 1 ); *************** *** 856,864 **** --- 906,958 ---- d, xid, rep->fillgc, x0-1, y0, s+i, 1 ); } + #else + if (!font->isComposite()) { + XDrawString( + d, xid, rep->fillgc, x0, y0, s + i, 1 + ); + if (style & Boldface) { + XDrawString( + d, xid, rep->fillgc, x0-1, y0, s + i, 1 + ); + } + } else if ((unsigned char)(*(s + i)) > 0x80) { + JIVDrawString(d, xid, rep->fillgc, font, x0, y0, + (unsigned char*)s + i, 2, + Rep()->display); + if (style & Boldface) { + JIVDrawString(d, xid, rep->fillgc, font, + x0-1, y0, + (unsigned char*)s + i, 2, + Rep()->display); + } + i++; + } else { + JIVDrawString(d, xid, rep->fillgc, font, x0, y0, + (unsigned char*)s + i, 1, + Rep()->display); + if (style & Boldface) { + JIVDrawString(d, xid, rep->fillgc, font, + x0-1, y0, + (unsigned char*)s + i, 1, + Rep()->display); + } + } + #endif break; case PainterDpyInfo::TxFontsOn: + #ifndef JIV bits = new Bitmap(font, s[i]); + #else + if (font->isComposite() && ((unsigned char)(s[i]) >= 0xa1)) { + int lc; + lc = s[i] * 256 + s[i + 1]; + bits = new Bitmap(font, lc); + i++; + } else { + bits = new Bitmap(font, s[i]); + } + #endif Stencil(c, curx, ybase, bits, bits); if (style & Boldface) { Stencil(c, curx-1, ybase, bits, bits); *************** *** 866,872 **** --- 960,978 ---- break; case PainterDpyInfo::TxFontsCache: case PainterDpyInfo::TxFontsDefault: + #ifndef JIV bits = p.get_char_bitmap(font, s[i], txchar, notrans); + #else + if (font->isComposite() && ((unsigned char)(s[i]) >= 0xa1)) { + unsigned int lc; + lc = (unsigned char)s[i]; + lc = (lc << 8) | (unsigned char)s[i + 1]; + bits = p.get_char_bitmap(font, (int)lc, txchar, notrans); + i++; + } else { + bits = p.get_char_bitmap(font, s[i], txchar, notrans); + } + #endif oldmatrix = matrix; matrix = nil; oldmatrix->Transform(curx, ybase, x0, y0); *************** *** 1262,1267 **** --- 1368,1392 ---- XFreeGC(dpy, copygc); } } + + #ifdef JIV + void Painter::MapCoord ( + Canvas* c, + IntCoord x, + IntCoord y, + IntCoord& nx, + IntCoord& ny + ) { + if (c == nil) { + return; + } + CanvasRep* cr = c->rep(); + if (cr->xdrawable_ == CanvasRep::unbound) { + return; + } + Map(c, x, y, nx, ny); + } + #endif /* JIV */ /* anachronism */ void CanvasRep::wait_for_copy() { Index: src_x11/convert.c diff -c /dev/null src_x11/convert.c:1.1 *** /dev/null Tue Mar 24 09:01:41 1998 --- src/IV-X11/convert.c Tue Mar 24 09:01:38 1998 *************** *** 0 **** --- 1,316 ---- + /* + * convert.c -- code converters for kterm + */ + + /* + * Copyright (c) 1989 Software Research Associates, Inc. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Software Research Associates not be + * used in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. Software Research + * Associates makes no representations about the suitability of this software + * for any purpose. It is provided "as is" without express or implied + * warranty. + * + * Author: Makoto Ishisone, Software Research Associates, Inc., Japan + */ + + #ifdef JIV + + #include + + #if defined(linux) && !defined(NULL) + #define NULL 0 + #endif + + #define SS2 0x8e + #define SS3 0x8f + + static unsigned char* getesc( + unsigned char* str, + int len + ) { + register int c; + + /* Find intermediate characters and final character + * following the escape character in an escape sequence. + */ + /* The intermediate character is 02/00 to 02/15 */ + while (len > 0) { + c = *str; + if (c < 0x20 || 0x2f < c) + break; + len--, str++; + } + /* The final character is 03/00 to 07/14 */ + if (--len < 0 || (c = *str++) < 0x30 || 0x7e < c) + return (unsigned char *)NULL; + + return str; + } + + static unsigned char* getcsi( + unsigned char* str, + int len + ) { + register int c; + + /* Find parameter characters, intermediate characters + * and final character following the CSI character + * in a CSI sequence. + */ + /* The parameter characters is 03/00 to 03/15 */ + while (len > 0) { + c = *str; + if (c < 0x30 || 0x3f < c) + break; + len--, str++; + } + /* The intermediate character is 02/00 to 02/15 */ + while (len > 0) { + c = *str; + if (c < 0x20 || 0x2f < c) + break; + len--, str++; + } + /* The final character is 04/00 to 07/14 */ + if (--len < 0 || (c = *str++) < 0x40 || 0x7e < c) + return (unsigned char *)NULL; + + return str; + } + + /****************************************************************************** + COMPOUND_TEXT Summary + (based on Comopund Text Encoding Version 1 -- MIT X Consortium Standard) + (1) Only G0 and G1 are used. G2 and G3 are not. + (2) G0 is invoked into GL and G1 into GR. These invocation are not changed. + (In other words, Locking Shift and Single Shift are not used) + (3) In initial state, ISO Latin-1 is designated into G0/G1. + (4) To designate MBCS into G0, ESC-$-F is not used but ESC-$-(-F. + (5) In C0, only HT, NL, and ESC are used. + (6) In C1, only CSI is used. + (7) Text direction can be indecated. + begin left-to-right string + begin right-to-left string + end of string + ******************************************************************************/ + + #define CS96 0x100 /* 96chars CS */ + #define MBCS 0x200 /* Multibyte CS */ + + /* convCTtoEUC -- COMPOUND_TEXT -> Japanese EUC Character String */ + int convCTtoEUC( + register unsigned char* xstr, + int len, + unsigned char* eucstr + /* Convert COMPOUND_TEXT xstr to EUC Character String wstr, return + * length of eucstr in characters (not including the terminating null + * character). If eucstr is NULL, no conversion is done, but return + * length of eucstr. + */ + ) { + register int c; + int nskip; + int n = 0; + int g0, g1, gs; + unsigned char *xstr1; + + /* + * Compound Text can include null octet. Therefore the length + * of xstr is able to be specified by parameter len. + * But if len is zero or negative, get length by strlen() assuming + * that no null octet exists. + */ + if (len <= 0) { + len = strlen((char *)xstr); + } + + /* In initial state, ISO 8859/1 is designated into G0/G1 */ + g0 = 'B'; /* ASCII -> G0 */ + g1 = CS96|'A'; /* Latin/1 right hand part -> G1 */ + + while (len-- > 0) { + switch (c = *xstr++) { + case '\n': /* NEWLINE */ + case '\t': /* TAB */ + if (eucstr) *eucstr++ = c; + n++; + break; + case 0x9b: /* CSI */ + /* + * CSI sequence is generally in following form: + * CSI {P} {I} F + * P : 03/00 to 03/15 + * I : 02/00 to 02/15 + * F : 04/00 to 07/14 + */ + /* + * Currently only directionality is definde + * as following: + * CSI-1-] begin left-to-right text + * CSI-2-] begin right-to-left text + * CSI-] end of string + * But this implementation ignores them. + */ + xstr1 = getcsi(xstr, len); + if (xstr1 == NULL) + return -1; + len -= xstr1 - xstr; + xstr = xstr1; + break; + case '\033': /* ESC */ + /* + * ESC sequence is generally in following form: + * ESC {I} F + * I : 02/00 to 02/15 + * F : 03/00 to 07/14 + */ + /* + * Currently, following functions are defined: + * Standard character set + * ESC-(-F + * ESC-$-(-F + * ESC-)-F + * ESC---F + * ESC-$-)-F + * Non standard character set + * ESC-%-/-[0123] + * Standard character set must be accepted correctly. + * Non standard one is ignored but must be parsed + * for skipping data. + */ + xstr1 = getesc(xstr, len); + if (xstr1 == NULL) + return -1; + len -= xstr1 - xstr; + switch (xstr1 - xstr) { + case 2: /* ESC - I - F */ + switch (*xstr++) { + case '(': /* 94chars CS -> G0 */ + g0 = *xstr; + break; + case ')': /* 94chars CS -> G1 */ + g1 = *xstr; + break; + case '-': /* 96chars CS -> G1 */ + g1 = *xstr | CS96; + break; + default: /* ignore */ + break; + } + break; + case 3: /* ESC - I - I - F */ + switch (*xstr++) { + case '$': + switch (*xstr++) { + case '(': /* 94chars MBCS -> G0 */ + g0 = *xstr | MBCS; + break; + case ')': /* 94chars MBCS -> G1 */ + g1 = *xstr | MBCS; + break; + case '-': /* 96chars MBCS -> G1 */ + g1 = *xstr | CS96 | MBCS; + break; + default: /* ignore */ + break; + } + break; + case '%': + if (*xstr++ != '/') { + /* unknown sequence */ + break; + } + /* + * Private encoding is ignored. + * But following data must be skipped. + * ESC-%-/-F-M-L + */ + len -= 2; + if (len < 0) + return -1; + nskip = (*xstr1 & 0x7f) * 128 + + (*(xstr1 + 1) & 0x7f); + if ((len -= nskip) < 0) + return -1; + xstr1 += nskip + 2; + break; + default: + break; + } + break; + default: + break; + } + xstr = xstr1; + break; + default: + if (!(c & 0x60)) { + /* + * Non NL/TAB/ESC/CSI character in C0 or C1 + * is an obvious error. + */ + return -1; + } + gs = (c & 0x80) ? g1 : g0; + c &= 0x7f; + if (gs & MBCS) { + switch (gs & 0x70) { + case 0x70: /* 4byte/char */ + if (--len < 0) return -1; + c = (c << 8) | (*xstr++ & 0x7f); + case 0x60: /* 3byte/char */ + if (--len < 0) return -1; + c = (c << 8) | (*xstr++ & 0x7f); + case 0x50: /* 2byte/char */ + case 0x40: /* 2byte/char */ + if (--len < 0) return -1; + c = (c << 8) | (*xstr++ & 0x7f); + break; + default: + return -1; + } + } + if (eucstr) { + switch (gs) { + case 'B': + case 'J': + *eucstr++ = c; + n++; + break; + case 'I': + *eucstr++ = SS2; + *eucstr++ = c; + n += 2; + break; + case MBCS|'B': + *eucstr++ = (c >> 8) | 0x80; + *eucstr++ = (c & 0xff) | 0x80; + n += 2; + break; + } + } else { + switch (gs) { + case 'B': + case 'J': + n++; + break; + case 'I': + case MBCS|'B': + n += 2; + break; + } + } + break; + } + } + if (eucstr) *eucstr = 0; + return n; + } + + #endif /* JIV */ Index: src_x11/kinput.c diff -c /dev/null src_x11/kinput.c:1.1 *** /dev/null Tue Mar 24 09:01:42 1998 --- src/IV-X11/kinput.c Tue Mar 24 09:01:38 1998 *************** *** 0 **** --- 1,509 ---- + /* + * Copyright (c) 1991, 1992 Fujitsu Oita Software Laboratory Limited + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice and this permission notice appear in + * all copies of the software and related documentation, and the name of + * Fujitsu Oita Software Laboratory may not be used in any advertising or + * publicity relating to the software without specific, prior written + * prior permission of Fujitsu Oita Software Laboratory. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL FUJITSU OITA SOFTWARE LABORATORY BE LIABLE FOR ANY + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY + * OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Author: Toshihisa Eto, Fujitsu Oita Software Laboratory Limited, Japan + * E-Mail: eto@ai.cs.fujitsu.co.jp + * Nifty: HBG02665 + */ + + #ifdef JIV + + #include + + #include + #include + + #include + #include + #include + #include + #include + + #include + + #define CONVBUFSIZE 1024 + + + // following line's code is copy from kinput2/include/ConvProto.h + #define CONV_ATTR(code,len) ((unsigned long)((code)<<16)+(len)) + + #define UPPER16U(data) (((data)>>16)&0xffff) + #define UPPER16S(data) ((short)(((data)>>16)&0xffff)) + #define LOWER16U(data) ((data)&0xffff) + #define LOWER16S(data) ((short)((data)&0xffff)) + + #define CODE_OF_ATTR(head) UPPER16U(head) + #define LENGTH_OF_ATTR(head) LOWER16U(head) + + #define CONVPROF_PROTOCOL_VERSION 1 + + /* + * Standard Conversion Attribute Codes (0-255) + */ + + /* 0-127: can be specified at any time (startup and during conversion) */ + #define CONVATTR_NONE 0 + #define CONVATTR_INDIRECT 1 + #define CONVATTR_FOCUS_WINDOW 2 + #define CONVATTR_SPOT_LOCATION 3 + #define CONVATTR_CLIENT_AREA 4 + #define CONVATTR_STATUS_AREA 5 + #define CONVATTR_COLORMAP 6 + #define CONVATTR_COLOR 7 + #define CONVATTR_BACKGROUND_PIXMAP 8 + #define CONVATTR_LINE_SPACING 9 + #define CONVATTR_FONT_ATOMS 10 + #define CONVATTR_CURSOR 11 + + /* 128-255: can be specified only at startup time */ + #define CONVATTR_INPUT_STYLE 128 + #define CONVATTR_EVENT_CAPTURE_METHOD 129 + #define CONVATTR_USE_EXTENSION 255 + + /* argument for CONVATTR_INPUT_STYLE and CONVPROP_SUPPORTED_STYLES */ + #define CONVARG_ROOTWINDOW 1L + #define CONVARG_OFFTHESPOT 2L + #define CONVARG_OVERTHESPOT 4L + + /* argument for CONVATTR_EVENT_CAPTURE_METHOD */ + #define CONVARG_NONE 0L + #define CONVARG_CREATE_INPUTONLY 1L + #define CONVARG_SELECT_FOCUS_WINDOW 2L + // to here + + extern int convCTtoEUC(unsigned char*, int, unsigned char*); + + class ConvAtoms { + public: + ConvAtoms(XDisplay*); + ~ConvAtoms(); + + Atom owner; // _JAPANESE_CONVERSION + Atom version; // PROTOCOL-2.0 + Atom text; // COMPOUND_TEXT + Atom profile; // _CONVERSION_PROFILE + Atom type; // _CONVERSION_ATTRIBUTE_TYPE + Atom request; // CONVERSION_REQUEST + Atom notify; // CONVERSION_NOTIFY + Atom end; // CONVERSION_END + Atom endRequest; // CONVERSION_END_REQUEST + Atom attribute; // CONVERSION_ATTRIBUTE + Atom attrnotify; // CONVERSION_ATTRIBUTE_NOTIFY + }; + + ConvAtoms::ConvAtoms(XDisplay* disp) + { + owner = XInternAtom(disp, "JAPANESE_CONVERSION", False); + version = XInternAtom(disp, "PROTOCOL-2.0", False); + text = XInternAtom(disp, "COMPOUND_TEXT", False); + profile = XInternAtom(disp, "_CONVERSION_PROFILE", False); + type = XInternAtom(disp, "_CONVERSION_ATTRIBUTE_TYPE",False); + request = XInternAtom(disp, "CONVERSION_REQUEST", False); + notify = XInternAtom(disp, "CONVERSION_NOTIFY", False); + end = XInternAtom(disp, "CONVERSION_END", False); + endRequest = XInternAtom(disp, "CONVERSION_END_REQUEST", False); + attribute = XInternAtom(disp, "CONVERSION_ATTRIBUTE", False); + attrnotify = XInternAtom(disp, "CONVERSION_ATTRIBUTE_NOTIFY", False); + } + + ConvAtoms::~ConvAtoms() + { + } + + class KinputRep { + public: + KinputRep(XWindow); + ~KinputRep(); + + static ConvAtoms* convatoms; + + // X Window properties + XDisplay* display_; + XWindow window; + XWindow convowner; + Atom property; + char convertedString[CONVBUFSIZE]; + + boolean isKinput2; + boolean active; + + // private method for communicate with kinput + boolean CheckProtocols(); + void SendConversionRequest(); + void SendConversionEnd(); + void RecieveNotify(Event& ev); + boolean RecieveText(Event& ev); + + // public method for setting conversion style + void SetInputStyle(long); + void SetConversionSpot(int, int); + }; + ConvAtoms* KinputRep::convatoms; + + // Kinput instance constructer + Kinput::Kinput(Window* win) + { + rep = new KinputRep(win->rep()->xwindow_); + } + + Kinput::~Kinput() + { + delete rep; + } + + // Conversion request to kinput + void Kinput::BeginConversion() + { + rep->SendConversionRequest(); + } + + void Kinput::BeginConversion(int x, int y) + { + rep->SendConversionRequest(); + + // Set conversion spot + rep->SetConversionSpot(x, y); + } + + // Conversion end request to kinput + void Kinput::EndConversion() + { + rep->SendConversionEnd(); + } + + boolean Kinput::IsActive() + { + return rep->active; + } + + // Event handling method + + // Check event + boolean Kinput::IsKinputEvent(const Event& ev) + { + if ((ev.eventType == ClientEvent) || + (ev.rep()->xevent_.type == ClientMessage)) { + // ClientMessage + XClientMessageEvent *cev = &(ev.Rep()->xevent_.xclient); + + if ((cev->window == rep->window) && + (cev->message_type == rep->convatoms->notify) && + (cev->data.l[0] == rep->convatoms->owner)) { + + // Catch Conversion Notify + return true; + } else if ((cev->format == 32) && + (cev->message_type == rep->convatoms->end) && + (cev->data.l[0] == rep->convatoms->owner)) { + + // Catch End Notify + return true; + } + } else if ((ev.eventType == PropertyEvent) || + (ev.rep()->xevent_.type == PropertyNotify)) { + // Catch Property Event + XPropertyEvent *pev = &(ev.Rep()->xevent_.xproperty); + + if ((rep->property != None) && + (pev->window == rep->window) && + (pev->atom == rep->property) && + (pev->state == PropertyNewValue)) { + // Catch Convert Notify + return true; + } + } + return false; + } + + // Kinput event handling + boolean Kinput::Handle(Event& ev) + { + rep->convertedString[0] = '\0'; + + if ((ev.eventType == ClientEvent) || + (ev.rep()->xevent_.type == ClientMessage)) { + // ClientMessage + XClientMessageEvent *cev = &(ev.Rep()->xevent_.xclient); + + if ((cev->window == rep->window) && + (cev->message_type == rep->convatoms->notify) && + (cev->data.l[0] == rep->convatoms->owner)) { + rep->RecieveNotify(ev); + return false; + } else if ((cev->format == 32) && + (cev->message_type == rep->convatoms->end) && + (cev->data.l[0] == rep->convatoms->owner)) { + rep->active = false; + EndConversion(); + return false; + } + } else if ((ev.eventType == PropertyEvent) || + (ev.rep()->xevent_.type == PropertyNotify)) { + // PropertyNotify + XPropertyEvent *pev = &(ev.Rep()->xevent_.xproperty); + + if ((rep->property != None) && + (pev->window == rep->window) && + (pev->atom == rep->property) && + (pev->state == PropertyNewValue)) { + return rep->RecieveText(ev); + } + } + } + + const char* Kinput::GetConvertedString() + { + if (rep->convertedString[0] == '\0') { + return NULL; + } + return rep->convertedString; + } + + void Kinput::SetConversionSpot( + int spotx, + int spoty + ) { + rep->SetConversionSpot(spotx, spoty); + } + + + + KinputRep::KinputRep(XWindow win) + { + // create kinputRep instance + // set instance variable + display_ = World::current()->display()->rep()->display_; + window = win; + + active = false; + + if (convatoms == NULL) { + convatoms = new ConvAtoms(display_); + } + } + + KinputRep::~KinputRep() + { + if (active == true) { + // disconnect Kinput + SendConversionEnd(); + } + } + + // Kinput communication method + + // Send conversion start request + void KinputRep::SendConversionRequest() + { + XWindow owner; + XEvent event; + + if (active) { + return; + } + + // check kinput is active. + if ((owner = XGetSelectionOwner(display_, convatoms->owner)) == None) { + // not found + active = false; + return; + } + + convowner = owner; + property = None; + active = true; + + isKinput2 = false; + if (CheckProtocols()) { + // Running conversion server is kinput2 + isKinput2 = true; + SetInputStyle(CONVARG_OVERTHESPOT); + } + + // request conversion by sending ClientMessage event + event.xclient.type = ClientMessage; + event.xclient.window = owner; + event.xclient.message_type = convatoms->request; + event.xclient.format = 32; + event.xclient.data.l[0] = convatoms->owner; + event.xclient.data.l[1] = window; + event.xclient.data.l[2] = convatoms->text; + event.xclient.data.l[3] = convatoms->owner; + event.xclient.data.l[4] = (isKinput2 ? convatoms->attribute : None); + XSendEvent(display_, owner, False, NoEventMask, &event); + } + + // Send conversion end request + void KinputRep::SendConversionEnd() + { + XEvent event; + + if (!active) { + return; + } + + if (convatoms->owner == None) { + return; + } + + if (XGetSelectionOwner(display_, convatoms->owner) != convowner) { + return; + } + + event.xclient.type = ClientMessage; + event.xclient.window = convowner; + event.xclient.message_type = convatoms->endRequest; + event.xclient.format = 32; + event.xclient.data.l[0] = convatoms->owner; + event.xclient.data.l[1] = window; + XSendEvent(display_, convowner, False, NoEventMask, &event); + active = false; + } + + void KinputRep::RecieveNotify(Event& ev) + { + if (ev.Rep()->xevent_.xclient.data.l[2] == None) { + fprintf(stderr, "selection request failed\n"); + active = false; + return; + } + + property = ev.Rep()->xevent_.xclient.data.l[2]; + active = true; + } + + boolean KinputRep::RecieveText(Event&) + { + Atom proptype; + int propformat; + unsigned long propsize, rest; + unsigned char *propvalue; + + // get conveted string from property + XGetWindowProperty(display_, window, property, 0, 100000, + True, AnyPropertyType, &proptype, &propformat, + &propsize, &rest, &propvalue); + + if (proptype == None) { + // property not exist -- but it's not an error + return false; + } + + convCTtoEUC((unsigned char*)propvalue, + (int)propsize, + (unsigned char*)convertedString); + return true; + } + + boolean KinputRep::CheckProtocols( + ) { + Atom type; + int format; + unsigned long nitems; + unsigned long bytesafter; + unsigned long *data, *saveddata; + boolean ret; + + data = NULL; + if (XGetWindowProperty(display_, convowner, convatoms->profile, + 0L, 100L, False, + convatoms->type, + &type, &format, &nitems, + &bytesafter, (unsigned char **)&data)) { + // Conversion Profile not found + return false; + }; + if ((format != 32) || (type != convatoms->type)) { + if (data != NULL) { + XFree((char *)data); + }; + return false; + } + + ret = false; + saveddata = data; + while (nitems > 0) { + unsigned long code = CODE_OF_ATTR(*data); + unsigned long len = LENGTH_OF_ATTR(*data); + + data++; + nitems--; + if (nitems < len) { + break; + } + + switch (code) { + case CONVPROF_PROTOCOL_VERSION: + if (*data == convatoms->version) { + ret = true; + } + break; + default: + break; + } + data += len; + nitems -= len; + } + XFree((char *)saveddata); + + return ret; + } + + void KinputRep::SetInputStyle( + long style + ) { + if (!isKinput2) { + return; + } + + unsigned long data[2]; + + data[0] = CONV_ATTR(CONVATTR_INPUT_STYLE, 1); + data[1] = style; + + XChangeProperty(display_, window, convatoms->attribute, + convatoms->attribute, 32, + PropModeReplace, (unsigned char *)data, 2); + } + + void KinputRep::SetConversionSpot( + int spotx, + int spoty + ) { + if (!isKinput2) { + return; + } + + XEvent event; + + event.xclient.type = ClientMessage; + event.xclient.window = convowner; + event.xclient.message_type = convatoms->attrnotify; + event.xclient.format = 32; + event.xclient.data.l[0] = convatoms->owner; + event.xclient.data.l[1] = window; + event.xclient.data.l[2] = CONV_ATTR(CONVATTR_SPOT_LOCATION, 1); + event.xclient.data.l[3] = (spotx << 16) | (spoty & 0xffff); + XSendEvent(display_, convowner, False, NoEventMask, &event); + } + + #endif /* JIV */ Index: src_x11/xbitmap.c diff -c src_x11/xbitmap.c:1.1 src_x11/xbitmap.c:1.2 *** src_x11/xbitmap.c:1.1 Tue Mar 17 15:53:35 1998 --- src/IV-X11/xbitmap.c Tue Mar 24 09:01:38 1998 *************** *** 122,128 **** --- 122,140 ---- rep_ = b; int w, h; int x, y; + #ifndef JIV XFontStruct* info = f->rep(d)->font_; + #else /* JIV */ + XFontStruct* info; + boolean isEuc; + if (f->isComposite() && ((unsigned long)c > 0xff)) { + info= f->rep2byte(d)->font_; + isEuc = ((info->min_byte1 > 128) ? true : false); + } else { + info= f->rep(d)->font_; + } + #endif /* JIV */ + if ( c >= info->min_char_or_byte2 && c <= info->max_char_or_byte2 && info->per_char != nil *************** *** 150,157 **** --- 162,189 ---- XSetForeground(dpy, gc, 0); XFillRectangle(dpy, map, gc, 0, 0, pw, ph); XSetForeground(dpy, gc, 1); + #ifndef JIV char ch = char(c); XDrawString(dpy, map, gc, -x, y, &ch, 1); + #else /* JIV */ + if (f->isComposite() && ((unsigned long)c > 0xff)) { + const CompositeFont* cmpf = f->getCompositeFont(); + unsigned char s[2]; + s[0] = (unsigned char)((unsigned long)c >> 8); + s[1] = (unsigned char)((unsigned long)c & 0xff); + if (!isEuc) { + s[0] &= 0x7f; + s[1] &= 0x7f; + } + XDrawString16(dpy, map, gc, -x, y, (XChar2b*)s, 2); + if (cmpf->displayBold()) { + XDrawString16(dpy, map, gc, -x, y - 1, (XChar2b*)s, 2); + } + } else { + char ch = char(c); + XDrawString(dpy, map, gc, -x, y, &ch, 1); + } + #endif /* JIV */ if (scale != 1.0) { XImage* source = XGetImage(dpy, map, 0, 0, w, h, 0x01, ZPixmap); XFreePixmap(dpy, map); Index: src_x11/xcanvas.c diff -c src_x11/xcanvas.c:1.1 src_x11/xcanvas.c:1.2 *** src_x11/xcanvas.c:1.1 Tue Mar 17 15:53:35 1998 --- src/IV-X11/xcanvas.c Tue Mar 24 09:01:38 1998 *************** *** 41,46 **** --- 41,49 ---- #include #include #include + #ifdef JIV + #include + #endif /* JIV */ #include #include #include *************** *** 652,658 **** --- 655,665 ---- tr->width_ += width; tr->curx_ = x + width; tr->cury_ = y; + #ifdef JIV + if (c->text_twobyte_ || ((ch & 0xff00) && f->isComposite())) { + #else if (c->text_twobyte_) { + #endif /* JIV */ *cp++ = char((ch & 0xff00) >> 8); *cp++ = char(ch & 0xff); } else if (c->text_reencode_) { *************** *** 1215,1220 **** --- 1222,1233 ---- XDrawString16( dpy, d, gc, t->x0_, t->y0_, (XChar2b*)t->text_, nchars/2 ); + #ifdef JIV + } else if (c.font_->isComposite()) { + JIVDrawString(dpy, d, gc, c.font_, t->x0_, t->y0_, + (unsigned char*)t->text_, nchars, + display_); + #endif /* JIV */ } else { XDrawString(dpy, d, gc, t->x0_, t->y0_, t->text_, nchars); } *************** *** 1241,1246 **** --- 1254,1262 ---- ++count; } t->items_[item].nchars = count; + #ifdef JIV + XSetFont(dpy, gc, c.xfont_->fid); + #endif XDrawText( dpy, d, gc, t->x0_, t->y0_, t->items_, item + 1 ); Index: src_x11/xfont.c diff -c src_x11/xfont.c:1.1 src_x11/xfont.c:1.2 *** src_x11/xfont.c:1.1 Tue Mar 17 15:53:35 1998 --- src/IV-X11/xfont.c Tue Mar 24 09:01:38 1998 *************** *** 32,37 **** --- 32,40 ---- #include #include #include + #ifdef JIV + #include + #endif /* JIV */ #include #include #include *************** *** 88,93 **** --- 91,100 ---- static FontRep* find_rep(FontRepList&, Display*, float); static FontRep* create(Display*, const String&, float); static const Font* new_font(const String&, float, KnownFonts*, FontRep*); + #ifdef JIV + static const Font* new_font(const String&, float, KnownFonts*, + FontRep*, FontRep*); + #endif /* JIV */ static KnownFonts* known(KnownFonts*, const UniqueString&); UniqueString* name_; *************** *** 194,199 **** --- 201,210 ---- FontRep* r; KnownFonts* k = nil; UniqueString uname(name); + #ifdef JIV + NullTerminatedString nname(uname); + const CompositeFont* cf; + #endif /* JIV */ if (fonts()->find(k, uname)) { for (ListItr(FontList) i(k->fonts); i.more(); i.next()) { f = i.cur(); *************** *** 202,213 **** --- 213,251 ---- } } + #ifndef JIV r = find_rep(k->fontreps, d, scale); if (r != nil) { return new_font(uname, scale, k, r); } + #else /* JIV */ + if ((cf = CompositeFont::findCompositeFont(nname.string())) == nil) { + r = find_rep(k->fontreps, d, scale); + if (r != nil) { + return new_font(uname, scale, k, r); + } + } + #endif /* JIV */ } + #ifdef JIV + if ((cf = CompositeFont::findCompositeFont(nname.string())) != nil) { + const Font* f1; + const Font* f2; + + f1 = FontImpl::lookup(d, String(cf->get1ByteFontName()), scale); + if (f1 == nil) { + return nil; + } + f2 = FontImpl::lookup(d, String(cf->get2ByteFontName()), scale); + if (f2 == nil) { + return nil; + } + k = known(k, uname); + f = new_font(uname, scale, k, f1->rep(d), f2->rep(d)); + return f; + } + #endif /* JIV */ r = create(d, uname, scale); if (r == nil) { return nil; *************** *** 280,285 **** --- 318,334 ---- return f; } + #ifdef JIV + const Font* FontImpl::new_font( + const String& name, float scale, KnownFonts* k, + FontRep*, FontRep* + ) { + Font* f = new Font(name, scale); + k->fonts.append(f); + return f; + } + #endif /* JIV */ + KnownFonts* FontImpl::known(KnownFonts* old_k, const UniqueString& name) { if (old_k != nil) { return old_k; *************** *** 314,332 **** --- 363,417 ---- /** class Font **/ Font::Font(const String& name, float scale) { + #ifdef JIV + const CompositeFont* cf; + NullTerminatedString s(name); + + if ((cf = CompositeFont::findCompositeFont(s.string())) != nil) { + cfont = cf; + impl_ = new FontImpl(String(cf->get1ByteFontName()), scale); + impl2byte_ = new FontImpl(String(cf->get2ByteFontName()), scale); + isCompositeFlag = true; + return; + } + isCompositeFlag = false; + impl2byte_ = nil; + #endif /* JIV */ impl_ = new FontImpl(name, scale); } Font::Font(const char* name, float scale) { + #ifdef JIV + const CompositeFont* cf; + + if ((cf = CompositeFont::findCompositeFont(name)) != nil) { + cfont = cf; + impl_ = new FontImpl(String(cf->get1ByteFontName()), scale); + impl2byte_ = new FontImpl(String(cf->get2ByteFontName()), scale); + isCompositeFlag = true; + return; + } + impl2byte_ = nil; + isCompositeFlag = false; + #endif /* JIV */ + impl_ = new FontImpl(String(name), scale); } Font::Font(FontImpl* i) { impl_ = i; + #ifdef JIV + isCompositeFlag = false; + impl2byte_ = nil; + #endif /* JIV */ } Font::~Font() { delete impl_; + #ifdef JIV + isCompositeFlag = false; + impl2byte_ = nil; + #endif /* JIV */ } void Font::cleanup() { *************** *** 357,363 **** --- 442,462 ---- return impl_->rep(d); } + #ifdef JIV + FontRep* Font::rep2byte(Display* d) const { + if (!isComposite()) { + return nil; + } + return impl2byte_->rep(d); + } + #endif JIV + const char* Font::name() const { + #ifdef JIV + if (isComposite()) { + return cfont->getFontName(); + } + #endif /* JIV */ FontRep* f = impl_->default_rep(); return f->name_->string(); } *************** *** 376,381 **** --- 475,502 ---- float scale = f->scale_; XFontStruct* xf = f->font_; Display* d = f->display_; + #ifdef JIV + if (isComposite()) { + FontRep* f2 = impl2byte_->default_rep(); + XFontStruct* xf2 = f2->font_; + b.left_bearing_ = scale * + d->to_coord(Math::max(xf->max_bounds.lbearing, + xf2->max_bounds.lbearing)); + b.right_bearing_ = scale * + d->to_coord(Math::max(xf->max_bounds.rbearing, + xf2->max_bounds.rbearing)); + b.width_ = scale * + d->to_coord(Math::max(xf->max_bounds.width, + xf2->max_bounds.width)); + b.ascent_ = scale * d->to_coord(Math::max(xf->ascent, + xf2->ascent)); + b.descent_ = scale * d->to_coord(Math::max(xf->descent, + xf2->descent)); + b.font_ascent_ = b.ascent_; + b.font_descent_ = b.descent_; + return; + } + #endif JIV b.left_bearing_ = scale * d->to_coord(xf->max_bounds.lbearing); b.right_bearing_ = scale * d->to_coord(xf->max_bounds.rbearing); b.width_ = scale * d->to_coord(xf->max_bounds.width); *************** *** 397,402 **** --- 518,528 ---- return; } FontRep* f = impl_->default_rep(); + #ifdef JIV + if ((c & 0xff00) && isComposite()) { + f = impl2byte_->default_rep(); + } + #endif /* JIV */ float scale = f->scale_; XFontStruct* xf = f->font_; Display* d = f->display_; *************** *** 422,433 **** --- 548,581 ---- Display* d = f->display_; XCharStruct c; int dir, asc, des; + #ifdef JIV + if (isComposite()) { + c.lbearing = JIVGetLeftBearing(s, len, f, impl2byte_->default_rep()); + c.rbearing = JIVGetRightBearing(s, len, f, impl2byte_->default_rep()); + c.descent = JIVGetDescent(s, len, f, impl2byte_->default_rep()); + c.ascent = JIVGetAscent(s, len, f, impl2byte_->default_rep()); + } else { + #endif JIV XTextExtents(xf, s, len, &dir, &asc, &des, &c); + #ifdef JIV + } + #endif JIV b.left_bearing_ = scale * d->to_coord(-c.lbearing); b.right_bearing_ = scale * d->to_coord(c.rbearing); b.width_ = width(s, len); b.ascent_ = scale * d->to_coord(c.ascent); b.descent_ = scale * d->to_coord(c.descent); + #ifdef JIV + if (isComposite()) { + FontRep* f2 = impl2byte_->default_rep(); + XFontStruct* xf2 = f2->font_; + b.font_ascent_ = scale * d->to_coord(Math::max(xf->ascent, + xf2->ascent)); + b.font_descent_ = scale * d->to_coord(Math::max(xf->descent, + xf2->descent)); + return; + } + #endif JIV b.font_ascent_ = scale * d->to_coord(xf->ascent); b.font_descent_ = scale * d->to_coord(xf->descent); } *************** *** 437,442 **** --- 585,595 ---- return 0; } FontRep* f = impl_->default_rep(); + #ifdef JIV + if ((c & 0xff00) && isComposite()) { + f = impl2byte_->default_rep(); + } + #endif /* JIV */ XChar2b xc2b; xc2b.byte1 = (unsigned char)((c & 0xff00) >> 8); xc2b.byte2 = (unsigned char)(c & 0xff); *************** *** 445,450 **** --- 598,609 ---- Coord Font::width(const char* s, int len) const { FontRep* f = impl_->default_rep(); + #ifdef JIV + if (isComposite()) { + short w = JIVGetWidth(s, len, f, impl2byte_->default_rep()); + return f->display_->to_coord(w) * f->scale_; + } + #endif /* JIV */ return f->scale_ * f->display_->to_coord(XTextWidth(f->font_, s, len)); } *************** *** 458,465 **** } FontRep* f = impl_->default_rep(); XFontStruct* xf = f->font_; int xoffset = f->display_->to_pixels(Coord(offset * f->scale_)); ! if (xf->min_bounds.width == xf->max_bounds.width) { cw = xf->min_bounds.width; n = xoffset / cw; coff = xoffset % cw; --- 617,634 ---- } FontRep* f = impl_->default_rep(); XFontStruct* xf = f->font_; + #ifdef JIV + XFontStruct* xf2 = nil; + if (isComposite()) { + xf2 = impl2byte_->default_rep()->font_; + } + #endif /* JIV */ int xoffset = f->display_->to_pixels(Coord(offset * f->scale_)); ! if ((xf->min_bounds.width == xf->max_bounds.width) ! #ifdef JIV ! && (xf2 == nil) ! #endif /* JIV */ ! ) { cw = xf->min_bounds.width; n = xoffset / cw; coff = xoffset % cw; *************** *** 467,473 **** --- 636,652 ---- w = 0; cw = 0; for (p = s, n = 0; *p != '\0' && n < len; ++p, ++n) { + #ifndef JIV cw = XTextWidth(xf, p, 1); + #else /* JIV */ + if (((const unsigned char)(*p) < 0xa1) || (xf2 == nil)) { + cw = XTextWidth(xf, p, 1); + } else { + cw = XTextWidth16(xf2, (XChar2b*)p, 1); + p++; + n++; + } + #endif /* JIV */ w += cw; if (w > xoffset) { break; *************** *** 749,751 **** --- 928,1194 ---- scale = (size == best_size) ? 1.0 : float(size)/float(best_size); return true; } + + #ifdef JIV + /** class CompositeFont **/ + + declarePtrList(CompositeFontList,CompositeFont); + implementPtrList(CompositeFontList,CompositeFont); + + static CompositeFontList cflist; + + CompositeFont::CompositeFont(const char* fc, const char* f1, + const char* f2, const char* style) + { + CompositeFont* cf; + + compositeFontName = new char[strlen(fc) + 1]; + strcpy(compositeFontName, fc); + fontName1 = new char[strlen(f1) + 1]; + strcpy(fontName1, f1); + fontName2 = new char[strlen(f2) + 1]; + strcpy(fontName2, f2); + displayBoldFlag = false; + displayItalicFlag = false; + if (style != 0) { + if (strchr(style, 'b')) { + displayBoldFlag = true; + } + if (strchr(style, 'i')) { + displayItalicFlag = true; + } + } + + cf = this; + cflist.append(cf); + } + + CompositeFont::~CompositeFont() + { + delete compositeFontName; + delete fontName1; + delete fontName2; + + for (long i = 0; i < cflist.count(); i++) { + CompositeFont* cf = cflist.item(i); + if (cf == this) { + cflist.remove(i); + break; + } + } + } + + const CompositeFont* CompositeFont::findCompositeFont(const char* cfname) + { + for (long i = 0; i < cflist.count(); i++) { + CompositeFont* cf = cflist.item(i); + if (!strcmp(cf->compositeFontName, cfname)) { + return cf; + } + } + return nil; + } + + /** class PSCompositeFont **/ + + class PSCompositeFontRep { + public: + PSCompositeFontRep(char*, char*, char*); + ~PSCompositeFontRep(); + + static char* preamble; + + char* fontname; + char* asciiFontname; + char* kanjiFontname; + }; + + char* PSCompositeFontRep::preamble; + + PSCompositeFontRep::PSCompositeFontRep( + char* fn, char* f1, char* f2 + ) { + fontname = fn; + asciiFontname = f1; + kanjiFontname = f2; + } + + PSCompositeFontRep::~PSCompositeFontRep() + { + delete fontname; + delete asciiFontname; + delete kanjiFontname; + } + + declarePtrList(PSCompositeFontList,PSCompositeFont); + implementPtrList(PSCompositeFontList,PSCompositeFont); + + static PSCompositeFontList pscflist; + + void PSCompositeFont::setPreamble(const char* p) { + if (PSCompositeFontRep::preamble != 0) { + delete PSCompositeFontRep::preamble; + } + PSCompositeFontRep::preamble = new char[strlen(p) + 1]; + strcpy(PSCompositeFontRep::preamble, p); + } + + const char* PSCompositeFont::getPreamble() { + return PSCompositeFontRep::preamble; + } + + PSCompositeFont::PSCompositeFont( + const char* fc, const char* f1, const char* f2 + ) { + PSCompositeFont* cf; + char* fn; + char* fa; + char* fk; + + fn = new char[strlen(fc) + 1]; + strcpy(fn, fc); + fa = new char[strlen(f1) + 1]; + strcpy(fa, f1); + fk = new char[strlen(f2) + 1]; + strcpy(fk, f2); + + rep_ = new PSCompositeFontRep(fn, fa, fk); + + cf = this; + pscflist.append(cf); + } + + PSCompositeFont::~PSCompositeFont() + { + delete rep_; + + for (long i = 0; i < pscflist.count(); i++) { + PSCompositeFont* cf = pscflist.item(i); + if (cf == this) { + pscflist.remove(i); + break; + } + } + } + + const PSCompositeFont* PSCompositeFont::findFont(const char* cfname) + { + for (long i = 0; i < pscflist.count(); i++) { + PSCompositeFont* cf = pscflist.item(i); + if (!strcmp(cf->rep_->fontname, cfname)) { + return cf; + } + } + return nil; + } + + const char* PSCompositeFont::getFontName() const { + return rep_->fontname; + } + + const char* PSCompositeFont::getAsciiFontName() const { + return rep_->asciiFontname; + } + + const char* PSCompositeFont::getKanjiFontName() const { + return rep_->kanjiFontname; + } + + /** class PSSlantFont **/ + + class PSSlantFontRep { + public: + PSSlantFontRep(char*, char*); + ~PSSlantFontRep(); + + char* fontname; + char* originalFontname; + boolean printFlag; + }; + + PSSlantFontRep::PSSlantFontRep( + char* fn, char* fo + ) { + fontname = fn; + originalFontname = fo; + printFlag = false; + } + + PSSlantFontRep::~PSSlantFontRep() + { + delete fontname; + delete originalFontname; + } + + declarePtrList(PSSlantFontList,PSSlantFont); + implementPtrList(PSSlantFontList,PSSlantFont); + + static PSSlantFontList pssflist; + + PSSlantFont::PSSlantFont( + const char* fc, const char* f1 + ) { + PSSlantFont* sf; + char* fn; + char* fo; + + fn = new char[strlen(fc) + 1]; + strcpy(fn, fc); + fo = new char[strlen(f1) + 1]; + strcpy(fo, f1); + + rep_ = new PSSlantFontRep(fn, fo); + + sf = this; + pssflist.append(sf); + } + + PSSlantFont::~PSSlantFont() + { + delete rep_; + + for (long i = 0; i < pssflist.count(); i++) { + PSSlantFont* sf = pssflist.item(i); + if (sf == this) { + pssflist.remove(i); + break; + } + } + } + + PSSlantFont* PSSlantFont::findFont(const char* sfname) + { + for (long i = 0; i < pssflist.count(); i++) { + PSSlantFont* sf = pssflist.item(i); + if (!strcmp(sf->rep_->fontname, sfname)) { + return sf; + } + } + return nil; + } + + void PSSlantFont::resetPrintFlag() + { + for (long i = 0; i < pssflist.count(); i++) { + PSSlantFont* sf = pssflist.item(i); + sf->rep_->printFlag = false; + } + } + + const char* PSSlantFont::getFontName() const { + return rep_->fontname; + } + + const char* PSSlantFont::getOriginalFontName() const { + return rep_->originalFontname; + } + + boolean PSSlantFont::printFlag() { + return rep_->printFlag; + } + + void PSSlantFont::printFlag(boolean t) { + rep_->printFlag = t; + } + + #endif JIV Index: src_x11/xjivfunc.c diff -c /dev/null src_x11/xjivfunc.c:1.1 *** /dev/null Tue Mar 24 09:01:42 1998 --- src/IV-X11/xjivfunc.c Tue Mar 24 09:01:38 1998 *************** *** 0 **** --- 1,492 ---- + /* + * Copyright (c) 1991, 1992 Fujitsu Oita Software Laboratory Limited + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice and this permission notice appear in + * all copies of the software and related documentation, and the name of + * Fujitsu Oita Software Laboratory may not be used in any advertising or + * publicity relating to the software without specific, prior written + * prior permission of Fujitsu Oita Software Laboratory. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL FUJITSU OITA SOFTWARE LABORATORY BE LIABLE FOR ANY + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY + * OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Author: Toshihisa Eto, Fujitsu Oita Software Laboratory Limited, Japan + * E-Mail: eto@ai.cs.fujitsu.co.jp + * Nifty: HBG02665 + */ + + #ifdef JIV + + #include + #include + #include + #include + #include + #include + + extern short JIVGetLeftBearing(const char* s, int len, FontRep* f1, + FontRep* f2) + { + XCharStruct c; + int dir, asc, des; + if ((const unsigned char)(*s) < 0x80) { + XTextExtents(f1->font_, s, len, &dir, &asc, &des, &c); + } else { + XTextExtents16(f2->font_, (XChar2b*)s, len / 2, &dir, &asc, &des, &c); + } + return c.lbearing; + } + + + extern short JIVGetRightBearing(const char* s, int len, FontRep* f1, + FontRep* f2) + { + XCharStruct c; + int dir, asc, des; + const unsigned char* p = (const unsigned char*)s; + int n; + short rb = 0; + boolean in2bytechar = false; + unsigned char* ss = new unsigned char[len + 1]; + unsigned char* ssp = ss; + int sl = 0; + + for (n = 0; n < len; n++) { + if (*p < 0x80) { + /* in one-byte character */ + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents16(f2->font_, (XChar2b*)ss, sl / 2, + &dir, &asc, &des, &c); + rb += c.width; + ssp = ss; + sl = 0; + } + in2bytechar = false; + } + *ssp = *p; + ssp++, sl++, p++; + } else { + /* in two-byte character */ + if (!in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents(f1->font_, (const char*)ss, sl, + &dir, &asc, &des, &c); + rb += c.width; + ssp = ss; + sl = 0; + } + in2bytechar = true; + } + *ssp = *p; + *(ssp + 1) = *(p + 1); + ssp +=2, sl += 2, p += 2, n++; + } + } + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents16(f2->font_, (XChar2b*)ss, sl / 2, + &dir, &asc, &des, &c); + rb += c.rbearing; + } + } else { + if (sl > 0) { + *ssp = '\0'; + XTextExtents(f1->font_, (const char*)ss, sl, + &dir, &asc, &des, &c); + rb += c.rbearing; + } + } + return rb; + } + + extern short JIVGetWidth(const char* s, int len, FontRep* f1, + FontRep* f2) + { + XCharStruct c; + int dir, asc, des; + const unsigned char* p = (const unsigned char*)s; + int n; + short w = 0; + boolean in2bytechar = false; + unsigned char* ss = new unsigned char[len + 1]; + unsigned char* ssp = ss; + int sl = 0; + + for (n = 0; n < len; n++) { + if (*p < 0x80) { + /* in one-byte character */ + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents16(f2->font_, (XChar2b*)ss, sl / 2, + &dir, &asc, &des, &c); + w += c.width; + ssp = ss; + sl = 0; + } + in2bytechar = false; + } + *ssp = *p; + ssp++, sl++, p++; + } else { + /* in two-byte character */ + if (!in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents(f1->font_, (const char*)ss, sl, + &dir, &asc, &des, &c); + w += c.width; + ssp = ss; + sl = 0; + } + in2bytechar = true; + } + *ssp = *p; + *(ssp + 1) = *(p + 1); + ssp +=2, sl += 2, p += 2, n++; + } + } + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents16(f2->font_, (XChar2b*)ss, sl / 2, + &dir, &asc, &des, &c); + w += c.width; + } + } else { + if (sl > 0) { + *ssp = '\0'; + XTextExtents(f1->font_, (const char*)ss, sl, + &dir, &asc, &des, &c); + w += c.width; + } + } + return w; + } + + extern short JIVGetAscent(const char* s, int len, FontRep* f1, + FontRep* f2) + { + XCharStruct c; + int dir, asc, des; + const unsigned char* p = (const unsigned char*)s; + int n; + short a = 0; + boolean in2bytechar = false; + unsigned char* ss = new unsigned char[len + 1]; + unsigned char* ssp = ss; + int sl = 0; + + for (n = 0; n < len; n++) { + if (*p < 0x80) { + /* in one-byte character */ + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents16(f2->font_, (XChar2b*)ss, sl / 2, + &dir, &asc, &des, &c); + if (c.ascent > a) { + a = c.ascent; + } + ssp = ss; + sl = 0; + } + in2bytechar = false; + } + *ssp = *p; + ssp++, sl++, p++; + } else { + /* in two-byte character */ + if (!in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents(f1->font_, (const char*)ss, sl, + &dir, &asc, &des, &c); + if (c.ascent > a) { + a = c.ascent; + } + ssp = ss; + sl = 0; + } + in2bytechar = true; + } + *ssp = *p; + *(ssp + 1) = *(p + 1); + ssp +=2, sl += 2, p += 2, n++; + } + } + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents16(f2->font_, (XChar2b*)ss, sl / 2, + &dir, &asc, &des, &c); + if (c.ascent > a) { + a = c.ascent; + } + } + } else { + if (sl > 0) { + *ssp = '\0'; + XTextExtents(f1->font_, (const char*)ss, sl, + &dir, &asc, &des, &c); + if (c.ascent > a) { + a = c.ascent; + } + } + } + return a; + } + + extern short JIVGetDescent(const char* s, int len, FontRep* f1, + FontRep* f2) + { + XCharStruct c; + int dir, asc, des; + const unsigned char* p = (const unsigned char*)s; + int n; + short d = 0; + boolean in2bytechar = false; + unsigned char* ss = new unsigned char[len + 1]; + unsigned char* ssp = ss; + int sl = 0; + + for (n = 0; n < len; n++) { + if (*p < 0x80) { + /* in one-byte character */ + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents16(f2->font_, (XChar2b*)ss, sl / 2, + &dir, &asc, &des, &c); + if (c.ascent > d) { + d = c.descent; + } + ssp = ss; + sl = 0; + } + in2bytechar = false; + } + *ssp = *p; + ssp++, sl++, p++; + } else { + /* in two-byte character */ + if (!in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents(f1->font_, (const char*)ss, sl, + &dir, &asc, &des, &c); + if (c.ascent > d) { + d = c.descent; + } + ssp = ss; + sl = 0; + } + in2bytechar = true; + } + *ssp = *p; + *(ssp + 1) = *(p + 1); + ssp +=2, sl += 2, p += 2, n++; + } + } + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XTextExtents16(f2->font_, (XChar2b*)ss, sl / 2, + &dir, &asc, &des, &c); + if (c.ascent > d) { + d = c.descent; + } + } + } else { + if (sl > 0) { + *ssp = '\0'; + XTextExtents(f1->font_, (const char*)ss, sl, + &dir, &asc, &des, &c); + if (c.ascent > d) { + d = c.descent; + } + } + } + return d; + } + + void JIVDrawString(XDisplay *dpy, XDrawable d, GC gc, const Font* f, + int x, int y, unsigned char* text, int index, + Display* ivd) + { + XCharStruct c; + int dir, asc, des; + const unsigned char* p = (const unsigned char*)text; + int n; + boolean in2bytechar = false; + unsigned char* ss = new unsigned char[index + 1]; + unsigned char* ssp = ss; + int sl = 0; + FontRep* f1 = f->rep(ivd); + FontRep* f2 = f->rep2byte(ivd); + boolean isEuc = ((f2->font_->min_byte1 > 128) ? true : false); + const CompositeFont* cmpf = f->getCompositeFont(); + + for (n = 0; n < index; n++) { + if (*p < 0x80) { + /* in one-byte character */ + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XSetFont(dpy, gc, f2->font_->fid); + XDrawString16(dpy, d, gc, x, y, (XChar2b*)ss, sl / 2); + if (cmpf->displayBold()) { + XDrawString16(dpy, d, gc, x, y - 1, + (XChar2b*)ss, sl / 2); + } + XTextExtents16(f2->font_, (XChar2b*)ss, sl / 2, + &dir, &asc, &des, &c); + x += c.width; + ssp = ss; + sl = 0; + } + in2bytechar = false; + } + *ssp = *p; + ssp++, sl++, p++; + } else { + /* in two-byte character */ + if (!in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XSetFont(dpy, gc, f1->font_->fid); + XDrawString(dpy, d, gc, x, y, (const char*)ss, sl); + XTextExtents(f1->font_, (const char*)ss, sl, + &dir, &asc, &des, &c); + x += c.width; + ssp = ss; + sl = 0; + } + in2bytechar = true; + } + if (isEuc) { + *ssp = *p; + *(ssp + 1) = *(p + 1); + } else { + *ssp = *p & 0x7f; + *(ssp + 1) = *(p + 1) & 0x7f; + } + ssp +=2, sl += 2, p += 2, n++; + } + } + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XSetFont(dpy, gc, f2->font_->fid); + XDrawString16(dpy, d, gc, x, y, (XChar2b*)ss, sl / 2); + if (cmpf->displayBold()) { + XDrawString16(dpy, d, gc, x, y - 1, (XChar2b*)ss, sl / 2); + } + } + } else { + if (sl > 0) { + *ssp = '\0'; + XSetFont(dpy, gc, f1->font_->fid); + XDrawString(dpy, d, gc, x, y, (const char*)ss, sl); + } + } + } + + void JIVDrawImageString(XDisplay *dpy, XDrawable d, GC gc, const Font* f, + int x, int y, unsigned char* text, int index, + Display* ivd) + { + XCharStruct c; + int dir, asc, des; + const unsigned char* p = (const unsigned char*)text; + int n; + boolean in2bytechar = false; + unsigned char* ss = new unsigned char[index + 1]; + unsigned char* ssp = ss; + int sl = 0; + FontRep* f1 = f->rep(ivd); + FontRep* f2 = f->rep2byte(ivd); + boolean isEuc = ((f2->font_->min_byte1 > 128) ? true : false); + const CompositeFont* cmpf = f->getCompositeFont(); + + for (n = 0; n < index; n++) { + if (*p < 0x80) { + /* in one-byte character */ + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XSetFont(dpy, gc, f2->font_->fid); + XDrawImageString16(dpy, d, gc, x, y, (XChar2b*)ss, sl / 2); + if (cmpf->displayBold()) { + XDrawImageString16(dpy, d, gc, x, y - 1, + (XChar2b*)ss, sl / 2); + } + XTextExtents16(f2->font_, (XChar2b*)ss, sl / 2, + &dir, &asc, &des, &c); + x += c.width; + ssp = ss; + sl = 0; + } + in2bytechar = false; + } + *ssp = *p; + ssp++, sl++, p++; + } else { + /* in two-byte character */ + if (!in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XSetFont(dpy, gc, f1->font_->fid); + XDrawImageString(dpy, d, gc, x, y, (const char*)ss, sl); + XTextExtents(f1->font_, (const char*)ss, sl, + &dir, &asc, &des, &c); + x += c.width; + ssp = ss; + sl = 0; + } + in2bytechar = true; + } + if (isEuc) { + *ssp = *p; + *(ssp + 1) = *(p + 1); + } else { + *ssp = *p & 0x7f; + *(ssp + 1) = *(p + 1) & 0x7f; + } + ssp +=2, sl += 2, p += 2, n++; + } + } + if (in2bytechar) { + if (sl > 0) { + *ssp = '\0'; + XSetFont(dpy, gc, f2->font_->fid); + XDrawImageString16(dpy, d, gc, x, y, (XChar2b*)ss, sl / 2); + if (cmpf->displayBold()) { + XDrawImageString16(dpy, d, gc, x, y - 1, + (XChar2b*)ss, sl / 2); + } + } + } else { + if (sl > 0) { + *ssp = '\0'; + XSetFont(dpy, gc, f1->font_->fid); + XDrawImageString(dpy, d, gc, x, y, (const char*)ss, sl); + } + } + } + + #endif /* JIV */ Index: src_x11/xwindow.c diff -c src_x11/xwindow.c:1.1 src_x11/xwindow.c:1.2 *** src_x11/xwindow.c:1.1 Tue Mar 17 15:53:36 1998 --- src/IV-X11/xwindow.c Tue Mar 24 09:01:39 1998 *************** *** 1805,1810 **** --- 1805,1813 ---- if (s->value_is_on("synchronous")) { XSynchronize(d.display_, True); } + #ifdef JIV + s->initCompositeFont(); + #endif /* JIV */ } Style* Display::style() const { return rep()->style_; } *************** *** 1950,1955 **** --- 1953,1961 ---- return false; } XNextEvent(dpy, &xe); + #ifdef JIV /* 12 Jan 1992 eto@ai.cs.fujitsu.co.jp */ + event.eventType = NullEvent; + #endif /* JIV */ e.clear(); e.window_ = WindowRep::find(xe.xany.window, d->wtable_); if (e.window_ != nil) { Index: Unidraw/catcmds.c diff -c Unidraw/catcmds.c:1.1 Unidraw/catcmds.c:1.2 *** Unidraw/catcmds.c:1.1 Tue Mar 17 15:54:48 1998 --- src/Unidraw/catcmds.c Tue Mar 24 09:01:56 1998 *************** *** 48,53 **** --- 48,61 ---- #include #include + #ifdef JIV_EXTEND + static const char* tmpLabel; + + #define getLabel(attr, default) \ + (((tmpLabel = unidraw->GetCatalog()->GetAttribute(attr)) != NULL) ? \ + tmpLabel : default) + #endif + /*****************************************************************************/ static void UpdateCompNameVars () { *************** *** 85,91 **** --- 93,103 ---- ModifStatusVar* mv = (ModifStatusVar*) ed->GetState("ModifStatusVar"); if (mv != nil && Writable(mv->GetComponent()) && mv->GetModifStatus()) { + #ifndef JIV_EXTEND ConfirmDialog dialog("Save changes?"); + #else + ConfirmDialog dialog(getLabel("MEndConfirm", "Save changes?")); + #endif ed->InsertDialog(&dialog); char resp = dialog.Confirm(); *************** *** 216,224 **** delete root; } else { ConfirmDialog dialog( ! "Couldn't revert! (File nonexistent?)", "Save changes?" ); ed->InsertDialog(&dialog); char confirmation = dialog.Confirm(); ed->RemoveDialog(&dialog); --- 228,244 ---- delete root; } else { + #ifndef JIV_EXTEND + ConfirmDialog dialog( + "Couldn't revert! (File nonexistent?)", + "Save changes?" + ); + #else ConfirmDialog dialog( ! "Couldn't revert! (File nonexistent?)", ! getLabel("MEndConfirm", "Save changes?") ); + #endif ed->InsertDialog(&dialog); char confirmation = dialog.Confirm(); ed->RemoveDialog(&dialog); *************** *** 281,287 **** char buf[CHARBUFSIZE]; const char* domain = unidraw->GetCatalog()->GetAttribute("domain"); domain = (domain == nil) ? "component" : domain; ! sprintf(buf, "Select a %s to open:", domain); style->attribute("caption", ""); style->attribute("subcaption", buf); } else { --- 301,311 ---- char buf[CHARBUFSIZE]; const char* domain = unidraw->GetCatalog()->GetAttribute("domain"); domain = (domain == nil) ? "component" : domain; ! #ifndef JIV_EXTEND ! sprintf(buf, "Select a %s to open:", domain); ! #else ! sprintf(buf, getLabel("MOpen", "Select a %s to open:"), domain); ! #endif style->attribute("caption", ""); style->attribute("subcaption", buf); } else { *************** *** 368,374 **** --- 392,403 ---- char subtitle[CHARBUFSIZE]; const char* domain = unidraw->GetCatalog()->GetAttribute("domain"); domain = (domain == nil) ? "component" : domain; + #ifndef JIV_EXTEND sprintf(subtitle, "Save this %s as:", domain); + #else + sprintf(subtitle, getLabel("MSaveAs", "Save this %s as:"), + domain); + #endif Style* s = new Style(Session::instance()->style()); s->attribute("caption", title); *************** *** 417,423 **** --- 446,456 ---- char buf[CHARBUFSIZE]; const char* domain = unidraw->GetCatalog()->GetAttribute("domain"); domain = (domain == nil) ? "component" : domain; + #ifndef JIV_EXTEND sprintf(buf, "Save this %s as:", domain); + #else + sprintf(buf, getLabel("MSaveAs", "Save this %s as:"), domain); + #endif boolean reset_caption = false; Style* style = new Style(Session::instance()->style()); Index: Unidraw/dialogs.c diff -c Unidraw/dialogs.c:1.1 Unidraw/dialogs.c:1.2 *** Unidraw/dialogs.c:1.1 Tue Mar 17 15:54:50 1998 --- src/Unidraw/dialogs.c Tue Mar 24 09:01:57 1998 *************** *** 27,32 **** --- 27,36 ---- #include #include #include + #ifdef JIV_EXTEND + #include + #include + #endif #include #include *************** *** 48,53 **** --- 52,65 ---- #include #include + #ifdef JIV_EXTEND + static const char* tmpLabel; + + #define getLabel(attr, default) \ + (((tmpLabel = unidraw->GetCatalog()->GetAttribute(attr)) != NULL) ? \ + tmpLabel : default) + #endif + /*****************************************************************************/ static void ChangeMsg (const char* name, MarginFrame* frame) { *************** *** 148,154 **** new VGlue(space), new HBox( new HGlue, ! new PushButton(" OK ", state, 1), new HGlue ) ), space, space/2, 0 --- 160,172 ---- new VGlue(space), new HBox( new HGlue, ! new PushButton( ! #ifndef JIV_EXTEND ! " OK ", ! #else ! getLabel("BOK", " OK "), ! #endif ! state, 1), new HGlue ) ), space, space/2, 0 *************** *** 197,207 **** new VGlue(space), new HBox( new HGlue, ! new PushButton(" Yes ", state, 'y'), new HGlue(space, 0), ! new PushButton(" No ", state, 'n'), new HGlue(space, 0), ! new PushButton("Cancel", state, '\007'), new HGlue ) ), space, space/2, 0 --- 215,243 ---- new VGlue(space), new HBox( new HGlue, ! new PushButton( ! #ifndef JIV_EXTEND ! " Yes ", ! #else ! getLabel("BYes", " Yes "), ! #endif ! state, 'y'), new HGlue(space, 0), ! new PushButton( ! #ifndef JIV_EXTEND ! " No ", ! #else ! getLabel("BNo", " No "), ! #endif ! state, 'n'), new HGlue(space, 0), ! new PushButton( ! #ifndef JIV_EXTEND ! "Cancel", ! #else ! getLabel("BCancel", "Cancel"), ! #endif ! state, '\007'), new HGlue ) ), space, space/2, 0 *************** *** 301,307 **** new HBox( new VGlue(space, 0), new HGlue, ! new PushButton("Cancel", state, '\007'), new HGlue(space, 0), new PushButton(acptlbl, state, '\r') ) --- 337,349 ---- new HBox( new VGlue(space, 0), new HGlue, ! new PushButton( ! #ifndef JIV_EXTEND ! "Cancel", ! #else ! getLabel("BCancel", "Cancel"), ! #endif ! state, '\007'), new HGlue(space, 0), new PushButton(acptlbl, state, '\r') ) *************** *** 337,347 **** --- 379,397 ---- if (print_cmd == nil) { const char* printer_name = getenv("PRINTER"); + #ifndef IV_FIX if (printer_name == nil) { printer_name = ""; } sprintf(buf, "lpr -P%s", printer_name); + #else + if (printer_name != nil) { + sprintf(buf, "lpr -P%s", printer_name); + } else { + sprintf(buf, "lpr"); + } + #endif print_cmd = buf; } return print_cmd; *************** *** 355,361 **** --- 405,415 ---- _to_printer = -1; _dest = new PrintBS(this, to_printer); + #ifndef JIV_EXTEND FileChooser::Init("", "Generate PostScript and"); + #else + FileChooser::Init("", getLabel("MPrint1", "Generate PostScript and")); + #endif Insert(Interior()); ToPrinter(to_printer); *************** *** 416,425 **** --- 470,487 ---- new HGlue(space, 0), new VBox( new VGlue(space/3, 0), + #ifndef JIV_EXTEND new RadioButton( "send to printer via a command, or ", _dest, true ), new VGlue(space/3, 0), + #else + new RadioButton( + getLabel("MPrint2", + "send to printer via a command, or "), + _dest, true + ), + #endif new RadioButton("save in file:", _dest, int(false)) ) ), *************** *** 432,440 **** ), new HBox( new HGlue, ! new PushButton("Cancel", state, '\007'), ! new HGlue(space, 0), ! new PushButton(" OK ", state, '\r') ) ), space, space/2, 0 ); --- 494,514 ---- ), new HBox( new HGlue, ! new PushButton( ! #ifndef JIV_EXTEND ! "Cancel", ! #else ! getLabel("BCancel", "Cancel"), ! #endif ! state, '\007'), ! new HGlue(space, 0), ! new PushButton( ! #ifndef JIV_EXTEND ! " OK ", ! #else ! getLabel("BOK", " OK "), ! #endif ! state, '\r') ) ), space, space/2, 0 ); *************** *** 443,449 **** /*****************************************************************************/ GridDialog::GridDialog () : BasicDialog( ! new ButtonState, "", "Enter X and Y grid spacing:" ) { _medit = new MatchEditor(state, "9999999999999999999"); _medit->Message(""); --- 517,528 ---- /*****************************************************************************/ GridDialog::GridDialog () : BasicDialog( ! new ButtonState, "", ! #ifndef JIV_EXTEND ! "Enter X and Y grid spacing:" ! #else ! getLabel("MGridSpacing", "Enter X and Y grid spacing:") ! #endif ) { _medit = new MatchEditor(state, "9999999999999999999"); _medit->Message(""); *************** *** 513,521 **** new VGlue(space), new HBox( new HGlue, ! new PushButton("Cancel", state, '\007'), new HGlue(space, 0), ! new PushButton(" OK ", state, '\r') ) ), space, space/2, 0 ); --- 592,612 ---- new VGlue(space), new HBox( new HGlue, ! new PushButton( ! #ifndef JIV_EXTEND ! "Cancel", ! #else ! getLabel("BCancel", "Cancel"), ! #endif ! state, '\007'), new HGlue(space, 0), ! new PushButton( ! #ifndef JIV_EXTEND ! " OK ", ! #else ! getLabel("BOK", " OK "), ! #endif ! state, '\r') ) ), space, space/2, 0 ); Index: Unidraw/import.c diff -c Unidraw/import.c:1.1 Unidraw/import.c:1.2 *** Unidraw/import.c:1.1 Tue Mar 17 15:54:51 1998 --- src/Unidraw/import.c Tue Mar 24 09:01:57 1998 *************** *** 57,62 **** --- 57,70 ---- #include #include + #ifdef JIV_EXTEND + static const char* tmpLabel; + + #define getLabel(attr, default) \ + (((tmpLabel = unidraw->GetCatalog()->GetAttribute(attr)) != NULL) ? \ + tmpLabel : default) + #endif + /*****************************************************************************/ static int hexmap[] = { *************** *** 236,242 **** --- 244,255 ---- boolean reset_caption = false; if (chooser_ == nil) { style = new Style(Session::instance()->style()); + #ifndef JIV_EXTEND style->attribute("subcaption", "Import graphic from file:"); + #else + style->attribute("subcaption", + getLabel("MImport", "Import graphic from file:")); + #endif style->attribute("open", "Import"); chooser_ = DialogKit::instance()->file_chooser(".", style); Resource::ref(chooser_); Index: Unidraw/manips.c diff -c Unidraw/manips.c:1.1 Unidraw/manips.c:1.2 *** Unidraw/manips.c:1.1 Tue Mar 17 15:54:52 1998 --- src/Unidraw/manips.c Tue Mar 24 09:01:57 1998 *************** *** 43,48 **** --- 43,55 ---- #include + #ifdef JIV + #include + #include + #undef Coord + #define Coord _lib_iv2_6(Coord) + #endif /* JIV */ + #include #include #include *************** *** 64,71 **** inline boolean ManipList::manipulating () { return _manipulating; } inline void ManipList::manipulating (boolean m) { _manipulating = m; } ! /****************************************************************************/ ManipGroup::ManipGroup (Viewer* v, Tool* t) { _kids = new ManipList; _viewer = v; --- 71,110 ---- inline boolean ManipList::manipulating () { return _manipulating; } inline void ManipList::manipulating (boolean m) { _manipulating = m; } ! #ifdef JIV /* 12 Jan 1992 eto@ai.cs.fujitsu.co.jp */ ! #include ! class KinputHandler : public ClientMessageHandler { ! public: ! KinputHandler(Kinput*, TextManip*); ! ~KinputHandler(){;}; ! ! boolean event(Event&); ! boolean handle_p(const Event&); ! private: ! Kinput* kinput; ! TextManip* textmanip; ! }; ! ! KinputHandler::KinputHandler(Kinput* k, TextManip* t) { ! kinput = k; ! textmanip = t; ! } ! ! boolean KinputHandler::handle_p(const Event& ev) { ! return kinput->IsKinputEvent(ev); ! } ! ! boolean KinputHandler::event(Event& ev) { ! if (kinput->Handle(ev)) { ! /* Hundle converted string */ ! const char* convString; ! convString = kinput->GetConvertedString(); ! textmanip->InsertText(convString, strlen(convString)); ! } ! } ! #endif /* JIV */ + /****************************************************************************/ ManipGroup::ManipGroup (Viewer* v, Tool* t) { _kids = new ManipList; _viewer = v; *************** *** 487,492 **** --- 526,535 ---- _multiline = multiline; _tool = t; _dot = _mark = 0; + #ifdef JIV + kinput = nil; + khandler = nil; + #endif /* JIV */ InitTextDisplay(sample, samplen); } *************** *** 509,514 **** --- 552,564 ---- TextManip::~TextManip () { delete _text; delete _display; + #ifdef JIV + if (kinput != nil) { + delete kinput; + GetViewer()->ResetClientMessageHandler(khandler); + delete khandler; + } + #endif JIV Unref(_painter); } *************** *** 609,614 **** --- 659,670 ---- } else if (e.eventType == UpEvent) { _selecting = false; + #ifdef JIV /* patch by eto@ai.cs.fujitsu.co.jp */ + } else if (e.eventType == ClientEvent) { + khandler->event(e); + } else if (e.eventType == PropertyEvent) { + khandler->event(e); + #endif /* JIV */ } return manipulating; } *************** *** 643,649 **** --- 699,711 ---- case '\177': DeleteCharacter(-1); break; case '\011': InsertCharacter('\t'); break; case '\015': if (_multiline) InsertCharacter('\n'); break; + #ifdef JIV + case '\012': if (_multiline) InsertCharacter('\n'); break; + #endif /* JIV */ case '\033': manipulating = false; break; + #ifdef JIV + case '\034': BeginConversion(); break; /* ^\ */ + #endif /* JIV */ default: if (!iscntrl(c & 0x7f)) { InsertCharacter(c); *************** *** 683,693 **** --- 745,760 ---- } } Select(_dot + count); + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::DeleteText (int count) { int d = _dot; int c = count; + #ifndef JIV while (c > 0) { d = _text->NextCharacter(d); --c; *************** *** 696,701 **** --- 763,789 ---- _dot = _text->PreviousCharacter(_dot); ++c; } + #else /* JIV */ + if (c > 0) { + while (c > 0) { + if ((unsigned char)(*(_text->Text(d))) >= 0xa1) { + d = _text->NextCharacter(d); + --c; + } + d = _text->NextCharacter(d); + --c; + } + } else { + while (c < 0) { + _dot = _text->PreviousCharacter(_dot); + ++c; + if ((unsigned char)(*(_text->Text(_dot))) >= 0xa1) { + _dot = _text->PreviousCharacter(_dot); + ++c; + } + } + } + #endif /* JIV */ count = d - _dot; int sline = _text->LineNumber(_dot); int fline = _text->LineNumber(d); *************** *** 710,734 **** --- 798,842 ---- _display->ReplaceText(sline, _text->Text(bol, eol), eol-bol); } Select(_dot); + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::DeleteLine () { Select(_text->BeginningOfLine(_mark), _text->BeginningOfNextLine(_mark)); DeleteSelection(); + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::DeleteSelection () { if (_mark != _dot) { DeleteText(_mark - _dot); } + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::BeginningOfSelection () { Select(min(_mark, _dot)); + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::EndOfSelection () { Select(max(_mark, _dot)); + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::BeginningOfWord () { *************** *** 737,742 **** --- 845,854 ---- } else { Select(_text->BeginningOfWord(_dot)); } + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::EndOfWord () { *************** *** 745,750 **** --- 857,866 ---- } else { Select(_text->EndOfWord(_dot)); } + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::BeginningOfLine () { *************** *** 753,758 **** --- 869,878 ---- } else { Select(_text->BeginningOfLine(_dot)); } + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::EndOfLine () { *************** *** 761,774 **** --- 881,906 ---- } else { Select(_text->EndOfLine(_dot)); } + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::BeginningOfText () { Select(_text->BeginningOfText()); + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::EndOfText () { Select(_text->EndOfText()); + + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::ForwardCharacter (int count) { *************** *** 777,787 **** --- 909,928 ---- } else { int d = _dot; while (count > 0) { + #ifdef JIV + if ((unsigned char)(*(_text->Text(d))) >= 0xa1) { + d = _text->NextCharacter(d); + --count; + } + #endif /* JIV */ d = _text->NextCharacter(d); --count; } Select(d); } + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::BackwardCharacter (int count) { *************** *** 792,800 **** --- 933,950 ---- while (count > 0) { d = _text->PreviousCharacter(d); --count; + #ifdef JIV + if ((unsigned char)(*(_text->Text(d))) >= 0xa1) { + d = _text->PreviousCharacter(d); + --count; + } + #endif /* JIV */ } Select(d); } + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::ForwardLine (int count) { *************** *** 808,813 **** --- 958,966 ---- } Select(d); } + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::BackwardLine (int count) { *************** *** 821,826 **** --- 974,982 ---- } Select(d); } + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::ForwardWord (int count) { *************** *** 834,839 **** --- 990,998 ---- } Select(d); } + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ } void TextManip::BackwardWord (int count) { *************** *** 847,853 **** --- 1006,1040 ---- } Select(d); } + #ifdef JIV + SetConversionSpot(); + #endif /* JIV */ + } + + #ifdef JIV + void TextManip::BeginConversion () { + if (kinput == nil) { + kinput = new Kinput(GetViewer()->GetCanvas()->window()); + khandler = new KinputHandler(kinput, this); + GetViewer()->SetClientMessageHandler(khandler); + } + + if (kinput) { + int spotx, spoty; + + _display->CaretPoint(spotx, spoty); + kinput->BeginConversion(spotx, spoty); + } + } + + void TextManip::SetConversionSpot () { + if (kinput && kinput->IsActive()) { + int spotx, spoty; + _display->CaretPoint(spotx, spoty); + kinput->SetConversionSpot(spotx, spoty); + } } + #endif /* JIV */ void TextManip::Select (int d) { Select(d, d); *************** *** 947,952 **** --- 1134,1145 ---- int l = _text->LineIndex(line); int i = 0; while (i < index) { + #ifdef JIV + if ((unsigned char)(*(_text->Text(l))) >= 0xa1) { + l = _text->NextCharacter(l); + i++; + } + #endif /* JIV */ l = _text->NextCharacter(l); i += 1; } Index: Unidraw/psview.c diff -c Unidraw/psview.c:1.1 Unidraw/psview.c:1.2 *** Unidraw/psview.c:1.1 Tue Mar 17 15:54:54 1998 --- src/Unidraw/psview.c Tue Mar 24 09:01:57 1998 *************** *** 47,52 **** --- 47,53 ---- static const int MAXLINELEN = 256; + #ifndef JIV static char* reencodeISO[] = { "/reencodeISO {", "dup dup findfont dup length dict begin", *************** *** 88,93 **** --- 89,159 ---- "] def", nil }; + #else /* JIV */ + /* Composite Font patch's PS part is written by */ + /* Shigeru Chiba (chiba@is.s.u-tokyo.ac.jp) */ + static char* reencodeISO[] = { + "% reencodeISO was modified to deal with a composite font correctly.", + "% Modifier: Shigeru Chiba (chiba@is.s.u-tokyo.ac.jp)", + "% Kazuhiro Kazama (kazama@expert-sun.ntt.jp)", + "/reencodeISOa { % CompFontName font reencodeISOb font' ", + "dup length dict begin", + "{ 1 index /FID ne { def }{ pop pop } ifelse } forall", + "/Encoding ISOLatin1Encoding def", + "currentdict end definefont", + "} def", + "", + "/reencodeISO { % FontName reencodeISO font", + " dup dup findfont dup /FontType get 0 ne {", + " reencodeISOa", + "}{", + " dup length dict begin {", + " 1 index dup /FID eq {", + " pop pop pop", + " }{ /FDepVector eq {", + " dup length array copy", + " dup dup 0 get 4 index exch reencodeISOa 0 exch put def", + " }{", + " def", + " } ifelse } ifelse } forall", + " currentdict end definefont", + "} ifelse } def", + "", + "/ISOLatin1Encoding [", + "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef", + "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef", + "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef", + "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef", + "/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright", + "/parenleft/parenright/asterisk/plus/comma/minus/period/slash", + "/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon", + "/less/equal/greater/question/at/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/bracketleft/backslash/bracketright", + "/asciicircum/underscore/quoteleft/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/braceleft/bar/braceright/asciitilde", + "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef", + "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef", + "/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve", + "/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut", + "/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar", + "/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot", + "/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior", + "/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine", + "/guillemotright/onequarter/onehalf/threequarters/questiondown", + "/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla", + "/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex", + "/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis", + "/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute", + "/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis", + "/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave", + "/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex", + "/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis", + "/yacute/thorn/ydieresis", + "] def", + nil + }; + #endif /* JIV */ + /*****************************************************************************/ *************** *** 138,143 **** --- 204,249 ---- Comments(out); Prologue(out); + #ifdef PS_FIX + out << "%%EndProlog\n\n"; + out << "%%BeginSetup\n"; + out << "IdrawDict begin\n"; + /// Out composite font information + UList* fonts = GetPSFonts(); + out << PSCompositeFont::getPreamble() << "\n"; + for (UList* u = fonts->First(); u != fonts->End(); u = u->Next()) { + PSFont* font = GetFont(u); + + if (font->isComposite()) { + const PSCompositeFont* pscmpf; + pscmpf= PSCompositeFont::findFont(font->GetPrintFont()); + if (pscmpf != NULL) { + PSSlantFont* sf = + PSSlantFont::findFont(pscmpf->getKanjiFontName()); + if (sf && (sf->printFlag() == false)) { + out << "/" << sf->getFontName() << "\n"; + out << " /" << sf->getOriginalFontName(); + out << " .2 slantfont definefont pop\n"; + sf->printFlag(true); + } + + out << "/" << font->GetPrintFont() << "\n"; + out << " /" << pscmpf->getAsciiFontName(); + out << " /" << pscmpf->getKanjiFontName(); + out << " compositefont definefont pop\n"; + } + } + // No way to check if the X font's encoding is iso8859-1, so... + if (strncmp(font->GetPrintFont(), "Symbol", 6) != 0) { + out << "/" << font->GetPrintFont() << " reencodeISO def\n"; + } else { + out << "/" << font->GetPrintFont() << " dup findfont def\n"; + } + } + PSSlantFont::resetPrintFlag(); + + out << "%%EndSetup\n\n"; + #endif Version(out); GridSpacing(out); *************** *** 186,191 **** --- 292,300 ---- } void PostScriptView::Prologue (ostream& out) { + #ifdef JIV + CmpFontProcs(out); + #endif ConstProcs(out); BeginProc(out); EndProc(out); *************** *** 193,199 **** --- 302,310 ---- ObjectProcs(out); MiscProcs(out); + #ifndef PS_FIX out << "%%EndProlog\n\n"; + #endif } static int Count (UList* list) { *************** *** 205,210 **** --- 316,385 ---- return i; } + #ifdef JIV + void PostScriptView::CmpFontProcs (ostream& out) { + out << "%%BeginProcSet: cmpfont.ps 1 2\n"; + out << "% composite fonts for ASCII-EUC mixed string\n"; + out << "% Version 1.2 1/31/1990\n"; + out << "% Author Ken'ichi HANDA (handa@etl.go.jp)\n"; + out << "% Anyone can freely copy, modify, distribute this program.\n"; + out << "/copyfont { % font-dic extra-entry-count copyfont font-dic\n"; + out << " 1 index maxlength add dict begin\n"; + out << " { 1 index /FID ne 2 index /UniqueID ne and\n"; + out << " {def} {pop pop} ifelse\n"; + out << " } forall\n"; + out << " currentdict\n"; + out << " end\n"; + out << "} bind def\n"; + out << "\n"; + out << "/compositefont { % ASCIIFontName EUCFontName compositefont font'\n"; + out << " findfont dup /FontType get 0 eq {\n"; + out << " 12 dict begin\n"; + out << " 1 copyfont dup begin\n"; + out << " /Encoding Encoding\n"; + out << " FMapType dup 2 eq {\n"; + out << " pop 128 128\n"; + out << " }{\n"; + out << " 5 eq {\n"; + out << " 256 256\n"; + out << " }{\n"; + out << " /compositefont errordict /invalidfont get exec\n"; + out << " } ifelse\n"; + out << " } ifelse\n"; + out << " getinterval def\n"; + out << " end\n"; + out << " /eucfont exch definefont\n"; + out << " exch\n"; + out << " findfont 1 copyfont dup begin\n"; + out << " /FontMatrix FontMatrix [1 0 0 1 0 0.05] matrix concatmatrix def\n"; + out << " end\n"; + out << " /asciifont exch definefont\n"; + out << " exch\n"; + out << " /FDepVector [ 4 2 roll ] def\n"; + out << " /FontType 0 def\n"; + out << " /WMode 0 def\n"; + out << " /FMapType 4 def\n"; + out << " /FontMatrix matrix def\n"; + out << " /Encoding [0 1] def\n"; + out << " /FontBBox {0 0 0 0} def\n"; + out << " currentdict\n"; + out << " end\n"; + out << " }{\n"; + out << " pop findfont 0 copyfont\n"; + out << " } ifelse\n"; + out << "} def \n"; + out << "\n"; + out << "/slantfont { % FontName slant-degree slantfont font'\n"; + out << " exch findfont 1 copyfont begin\n"; + out << " [ 1 0 4 -1 roll 1 0 0 ] FontMatrix exch matrix concatmatrix\n"; + out << " /FontMatrix exch def\n"; + out << " currentdict\n"; + out << " end\n"; + out << "} def\n"; + out << "%%EndProcSet\n\n"; + } + #endif /* JIV */ + void PostScriptView::ConstProcs (ostream& out) { UList* fonts = GetPSFonts(); int nfonts = Count(fonts); *************** *** 212,222 **** --- 387,402 ---- out << "/IdrawDict " << (50 + nfonts) << " dict def\n"; out << "IdrawDict begin\n\n"; + #ifdef PS_FIX + IdrawDictPreamble(out); + #endif + if (nfonts > 0) { for (char** line = reencodeISO; *line != nil; ++line) { out << *line << "\n"; } + #ifndef PS_FIX for (UList* u = fonts->First(); u != fonts->End(); u = u->Next()) { PSFont* font = GetFont(u); *************** *** 227,232 **** --- 407,413 ---- out << "/" << font->GetPrintFont() << " dup findfont def\n"; } } + #endif out << "\n"; } *************** *** 925,930 **** --- 1106,1146 ---- for (UList* u = fonts->First(); u != fonts->End(); u = u->Next()) { PSFont* font = GetFont(u); + #ifdef JIV + const PSCompositeFont* pscmpf; + + if (font->isComposite() && + (pscmpf = + PSCompositeFont::findFont(font->GetPrintFont()))) { + + const char* fa = pscmpf->getAsciiFontName(); + const char* fk = pscmpf->getKanjiFontName(); + PSSlantFont* sf = PSSlantFont::findFont(fk); + if (sf) { + fk = sf->getOriginalFontName(); + } + + if (linelen + strlen(fa) + 2 <= MAXLINELEN) { + out << " "; + ++linelen; + } else { + out << "\n%%+ "; + linelen = strlen("%%+ "); + } + out << fa; + linelen += strlen(fa); + + if (linelen + strlen(fk) + 2 <= MAXLINELEN) { + out << " "; + ++linelen; + } else { + out << "\n%%+ "; + linelen = strlen("%%+ "); + } + out << fk; + linelen += strlen(fk); + } else { + #endif /* JIV */ if (linelen + strlen(font->GetPrintFont()) + 2 <= MAXLINELEN) { out << " "; ++linelen; *************** *** 934,940 **** --- 1150,1162 ---- } out << font->GetPrintFont(); linelen += strlen(font->GetPrintFont()); + #ifdef JIV + } + #endif /* JIV */ } + #ifdef JIV + PSSlantFont::resetPrintFlag(); + #endif out << "\n"; } *************** *** 986,991 **** --- 1208,1253 ---- Comments(out); Prologue(out); + #ifdef PS_FIX + out << "%%EndProlog\n\n"; + out << "%%BeginSetup\n"; + out << "IdrawDict begin\n"; + /// Out composite font information + UList* fonts = GetPSFonts(); + out << PSCompositeFont::getPreamble() << "\n"; + for (UList* u = fonts->First(); u != fonts->End(); u = u->Next()) { + PSFont* font = GetFont(u); + + if (font->isComposite()) { + const PSCompositeFont* pscmpf; + pscmpf= PSCompositeFont::findFont(font->GetPrintFont()); + if (pscmpf != NULL) { + PSSlantFont* sf = + PSSlantFont::findFont(pscmpf->getKanjiFontName()); + if (sf && (sf->printFlag() == false)) { + out << "/" << sf->getFontName() << "\n"; + out << " /" << sf->getOriginalFontName(); + out << " .2 slantfont definefont pop\n"; + sf->printFlag(true); + } + + out << "/" << font->GetPrintFont() << "\n"; + out << " /" << pscmpf->getAsciiFontName(); + out << " /" << pscmpf->getKanjiFontName(); + out << " compositefont definefont pop\n"; + } + } + // No way to check if the X font's encoding is iso8859-1, so... + if (strncmp(font->GetPrintFont(), "Symbol", 6) != 0) { + out << "/" << font->GetPrintFont() << " reencodeISO def\n"; + } else { + out << "/" << font->GetPrintFont() << " dup findfont def\n"; + } + } + PSSlantFont::resetPrintFlag(); + + out << "%%EndSetup\n\n"; + #endif Version(out); GridSpacing(out); Index: Unidraw/stateviews.c diff -c Unidraw/stateviews.c:1.1 Unidraw/stateviews.c:1.2 *** Unidraw/stateviews.c:1.1 Tue Mar 17 15:54:55 1998 --- src/Unidraw/stateviews.c Tue Mar 24 09:01:57 1998 *************** *** 55,60 **** --- 55,68 ---- static const char* NONE = "None"; static const char* UNNAMED = "[unnamed]"; + #ifdef JIV_EXTEND + static const char* tmpLabel; + + #define getLabel(attr, default) \ + (((tmpLabel = unidraw->GetCatalog()->GetAttribute(attr)) != NULL) ? \ + tmpLabel : default) + #endif + /*****************************************************************************/ class TextInteractor : public Interactor { *************** *** 138,144 **** const char* text = ((TextInteractor*) interior())->GetText(); return ! (name == nil && strcmp(text, UNNAMED) != 0) || (name != nil && strcmp(text, name) != 0); } --- 146,158 ---- const char* text = ((TextInteractor*) interior())->GetText(); return ! (name == nil && strcmp(text, ! #ifndef JIV_EXTEND ! UNNAMED ! #else ! getLabel("LUnnamedMark", UNNAMED) ! #endif ! ) != 0) || (name != nil && strcmp(text, name) != 0); } *************** *** 147,153 **** TextInteractor* t = (TextInteractor*) interior(); if (name == nil) { ! t->SetText(UNNAMED); } else { t->SetText(name); } --- 161,173 ---- TextInteractor* t = (TextInteractor*) interior(); if (name == nil) { ! t->SetText( ! #ifndef JIV_EXTEND ! UNNAMED ! #else ! getLabel("LUnnamedMark", UNNAMED) ! #endif ! ); } else { t->SetText(name); } *************** *** 169,175 **** TextInteractor* t = (TextInteractor*) interior(); if (name == nil) { ! t->SetText(UNNAMED); } else if (_relative) { const char* relname = strrchr(name, '/'); --- 189,201 ---- TextInteractor* t = (TextInteractor*) interior(); if (name == nil) { ! t->SetText( ! #ifndef JIV_EXTEND ! UNNAMED ! #else ! getLabel("LUnnamedMark", UNNAMED) ! #endif ! ); } else if (_relative) { const char* relname = strrchr(name, '/'); *************** *** 201,207 **** TextInteractor* t = (TextInteractor*) interior(); if (name == nil) { ! t->SetText(UNNAMED); } else { char buf[CHARBUFSIZE]; --- 227,239 ---- TextInteractor* t = (TextInteractor*) interior(); if (name == nil) { ! t->SetText( ! #ifndef JIV_EXTEND ! UNNAMED ! #else ! getLabel("LUnnamedMark", UNNAMED) ! #endif ! ); } else { char buf[CHARBUFSIZE]; *************** *** 287,300 **** char buf[32]; _prevVal = mag; sprintf(buf, "mag %gx", mag); t->SetText(buf); } /*****************************************************************************/ GravityVarView::GravityVarView (GravityVar* m, Alignment a) : StateVarView(m) { ! TextInteractor* t = new TextInteractor(GRAVITY_ON, a); Insert(t); } --- 319,343 ---- char buf[32]; _prevVal = mag; + #ifndef JIV_EXTEND sprintf(buf, "mag %gx", mag); + #else + sprintf(buf, "%s %gx", getLabel("LMagMark", "mag"), mag); + #endif t->SetText(buf); } /*****************************************************************************/ GravityVarView::GravityVarView (GravityVar* m, Alignment a) : StateVarView(m) { ! TextInteractor* t = new TextInteractor( ! #ifndef JIV_EXTEND ! GRAVITY_ON, ! #else ! getLabel("LGravityOnMark", ! GRAVITY_ON), ! #endif ! a); Insert(t); } *************** *** 305,311 **** void GravityVarView::Init() { boolean active = ((GravityVar*) _subject)->IsActive(); TextInteractor* t = (TextInteractor*) interior(); ! const char* string = active ? GRAVITY_ON : ""; _prevVal = active; t->SetText(string); --- 348,361 ---- void GravityVarView::Init() { boolean active = ((GravityVar*) _subject)->IsActive(); TextInteractor* t = (TextInteractor*) interior(); ! const char* string = active ? ! #ifndef JIV_EXTEND ! GRAVITY_ON : ! #else ! getLabel("LGravityOnMark", ! GRAVITY_ON) : ! #endif ! ""; _prevVal = active; t->SetText(string); *************** *** 411,417 **** Unref(tmp); const Font* f = output->GetFont(); ! shape->width = max(f->Width(NONE) + 2*HPAD, VIEW_WIDTH); shape->height = max(f->Height() + 2*VPAD, VIEW_HEIGHT); shape->Rigid(shape->width/2, shape->width, shape->height/2, shape->height); --- 461,473 ---- Unref(tmp); const Font* f = output->GetFont(); ! shape->width = max(f->Width( ! #ifndef JIV_EXTEND ! NONE ! #else ! getLabel("LNone", NONE) ! #endif ! ) + 2*HPAD, VIEW_WIDTH); shape->height = max(f->Height() + 2*VPAD, VIEW_HEIGHT); shape->Rigid(shape->width/2, shape->width, shape->height/2, shape->height); *************** *** 422,429 **** --- 478,490 ---- output->ClearRect(canvas, 0, 0, xmax, ymax); if (_brush->None()) { + #ifndef JIV_EXTEND CenterText(NONE, output, xmax, ymax); output->Text(canvas, NONE); + #else + CenterText(getLabel("LNone", NONE), output, xmax, ymax); + output->Text(canvas, getLabel("LNone", NONE)); + #endif } else { const Color* origfg = output->GetFgColor(); *************** *** 564,570 **** Unref(tmp); const Font* f = output->GetFont(); ! shape->width = max(f->Width(NONE) + 2*HPAD, VIEW_WIDTH); shape->height = max(f->Height() + 2*VPAD, VIEW_HEIGHT); shape->Rigid(shape->width/2, shape->width, shape->height/2, shape->height); --- 625,637 ---- Unref(tmp); const Font* f = output->GetFont(); ! shape->width = max(f->Width( ! #ifndef JIV_EXTEND ! NONE ! #else ! getLabel("LNone", NONE) ! #endif ! ) + 2*HPAD, VIEW_WIDTH); shape->height = max(f->Height() + 2*VPAD, VIEW_HEIGHT); shape->Rigid(shape->width/2, shape->width, shape->height/2, shape->height); *************** *** 575,582 **** --- 642,654 ---- output->ClearRect(canvas, 0, 0, xmax, ymax); if (_pattern->None()) { + #ifndef JIV_EXTEND CenterText(NONE, output, xmax, ymax); output->Text(canvas, NONE); + #else + CenterText(getLabel("LNone", NONE), output, xmax, ymax); + output->Text(canvas, getLabel("LNone", NONE)); + #endif } else { const Color* origfg = output->GetFgColor(); Index: Unidraw/viewcmds.c diff -c Unidraw/viewcmds.c:1.1 Unidraw/viewcmds.c:1.2 *** Unidraw/viewcmds.c:1.1 Tue Mar 17 15:54:57 1998 --- src/Unidraw/viewcmds.c Tue Mar 24 09:01:57 1998 *************** *** 32,43 **** --- 32,55 ---- #include #include #include + #ifdef JIV_EXTEND + #include + #include + #endif #include #include #include + #ifdef JIV_EXTEND + static const char* tmpLabel; + + #define getLabel(attr, default) \ + (((tmpLabel = unidraw->GetCatalog()->GetAttribute(attr)) != NULL) ? \ + tmpLabel : default) + #endif + /*****************************************************************************/ ClassId NormSizeCmd::GetClassId () { return NORMSIZE_CMD; } *************** *** 298,304 **** --- 310,320 ---- ModifStatusVar* mv = (ModifStatusVar*) ed->GetState("ModifStatusVar"); if (mv != nil && mv->GetModifStatus() && !FoundAnyExcept(ed)) { + #ifndef JIV_EXTEND ConfirmDialog dialog("Save changes?"); + #else + ConfirmDialog dialog(getLabel("MEndConfirm", "Save changes?")); + #endif ed->InsertDialog(&dialog); char resp = dialog.Confirm(); Index: UniIdraw/idcatalog.c diff -c UniIdraw/idcatalog.c:1.1 UniIdraw/idcatalog.c:1.2 *** UniIdraw/idcatalog.c:1.1 Tue Mar 17 15:55:05 1998 --- src/UniIdraw/idcatalog.c Tue Mar 24 09:02:03 1998 *************** *** 200,206 **** --- 200,210 ---- if (_psversion < PSV_NONROTATED && t != nil && t->Rotated90()) { Transformer identity; *t = identity; + #ifndef JIV_EXTEND g->Translate(0.0, -8.5*ivinches); + #else + g->Translate(0.0, -8.27*ivinches); + #endif g->Rotate(90.0, 0.0, 0.0); comp->Bequeath(); } Index: UniIdraw/idcomp.c diff -c UniIdraw/idcomp.c:1.1 UniIdraw/idcomp.c:1.2 *** UniIdraw/idcomp.c:1.1 Tue Mar 17 15:55:05 1998 --- src/UniIdraw/idcomp.c Tue Mar 24 09:02:03 1998 *************** *** 87,97 **** } void PSIdraw::Prologue (ostream& out) { out << "%%BeginIdrawPrologue\n"; ArrowHeader(out); out << "%%EndIdrawPrologue\n\n"; ! ! PostScriptView::Prologue(out); } void PSIdraw::GridSpacing (ostream& out) { --- 87,103 ---- } void PSIdraw::Prologue (ostream& out) { + PostScriptView::Prologue(out); + #ifndef PS_FIX out << "%%BeginIdrawPrologue\n"; + #endif ArrowHeader(out); + #ifndef PS_FIX out << "%%EndIdrawPrologue\n\n"; ! #else ! out << "end\n"; ! out << "%%EndProcSet\n"; ! #endif } void PSIdraw::GridSpacing (ostream& out) { *************** *** 103,116 **** --- 109,140 ---- } void PSIdraw::ConstProcs (ostream& out) { + #ifndef PS_FIX int arrowWidth = round(ARROWWIDTH*ivpoints); int arrowHeight = round(ARROWHEIGHT*ivpoints); + #endif + #ifdef PS_FIX + out << "%%BeginProcSet: idraw 3 0\n"; + #endif + + #ifndef PS_FIX out << "/arrowHeight " << arrowHeight << " def\n"; out << "/arrowWidth " << arrowWidth << " def\n\n"; + #endif PostScriptViews::ConstProcs(out); } + + #ifdef PS_FIX + void PSIdraw::IdrawDictPreamble (ostream& out) { + int arrowWidth = round(ARROWWIDTH*points); + int arrowHeight = round(ARROWHEIGHT*points); + + out << "/arrowHeight " << arrowHeight << " def\n"; + out << "/arrowWidth " << arrowWidth << " def\n\n"; + } + #endif void PSIdraw::LineProc (ostream& out) { out << "/Line {\n"; Index: UniIdraw/idcomp.h diff -c UniIdraw/idcomp.h:1.1 UniIdraw/idcomp.h:1.2 *** UniIdraw/idcomp.h:1.1 Tue Mar 17 15:55:05 1998 --- src/UniIdraw/idcomp.h Tue Mar 24 09:02:03 1998 *************** *** 61,66 **** --- 61,69 ---- virtual void ArrowHeader(ostream&); virtual void ConstProcs(ostream&); + #ifdef PS_FIX + virtual void IdrawDictPreamble(ostream&); + #endif virtual void GridSpacing(ostream&); virtual void LineProc(ostream&); virtual void MultiLineProc(ostream&); Index: UniIdraw/ided.c diff -c UniIdraw/ided.c:1.1 UniIdraw/ided.c:1.2 *** UniIdraw/ided.c:1.1 Tue Mar 17 15:55:06 1998 --- src/UniIdraw/ided.c Tue Mar 24 09:02:04 1998 *************** *** 119,124 **** --- 119,131 ---- static const char* grid_x_incr = "gridxincr"; static const char* grid_y_incr = "gridyincr"; + #ifdef JIV_EXTEND + static const char* tmpLabel; + + #define getLabel(attr, default) \ + (((tmpLabel = unidraw->GetCatalog()->GetAttribute(attr)) != NULL) ? \ + tmpLabel : default) + #endif /*****************************************************************************/ inline void InsertSeparator (PulldownMenu* pdm) { *************** *** 347,354 **** --- 354,366 ---- commands->Include(FontMenu()); commands->Include(BrushMenu()); commands->Include(PatternMenu()); + #ifndef JIV_EXTEND commands->Include(ColorMenu("FgColor", fgAttrib)); commands->Include(ColorMenu("BgColor", bgAttrib)); + #else + commands->Include(ColorMenu(getLabel("LFgColor", "FgColor"), fgAttrib)); + commands->Include(ColorMenu(getLabel("LBgColor", "BgColor"), bgAttrib)); + #endif commands->Include(AlignMenu()); commands->Include(ViewMenu()); *************** *** 369,399 **** VBox* tools = new VBox; Include( ! new SelectTool(new ControlInfo("Select", KLBL_SELECT, CODE_SELECT)), tools ); Include( ! new MoveTool(new ControlInfo("Move", KLBL_MOVE, CODE_MOVE)), tools ); Include( ! new ScaleTool(new ControlInfo("Scale", KLBL_SCALE, CODE_SCALE)), tools ); Include( ! new StretchTool(new ControlInfo("Stretch", KLBL_STRETCH,CODE_STRETCH)), tools ); Include( ! new RotateTool(new ControlInfo("Rotate", KLBL_ROTATE, CODE_ROTATE)), tools ); Include( ! new ReshapeTool(new ControlInfo("Alter", KLBL_RESHAPE, CODE_RESHAPE)), tools ); Include( ! new MagnifyTool(new ControlInfo("Magnify", KLBL_MAGNIFY,CODE_MAGNIFY)), tools ); --- 381,453 ---- VBox* tools = new VBox; Include( ! new SelectTool(new ControlInfo( ! #ifndef JIV_EXTEND ! "Select", ! #else ! getLabel("LSelect", "Select"), ! #endif ! KLBL_SELECT, CODE_SELECT)), tools ); Include( ! new MoveTool(new ControlInfo( ! #ifndef JIV_EXTEND ! "Move", ! #else ! getLabel("LMove", "Move"), ! #endif ! KLBL_MOVE, CODE_MOVE)), tools ); Include( ! new ScaleTool(new ControlInfo( ! #ifndef JIV_EXTEND ! "Scale", ! #else ! getLabel("LScale", "Scale"), ! #endif ! KLBL_SCALE, CODE_SCALE)), tools ); Include( ! new StretchTool(new ControlInfo( ! #ifndef JIV_EXTEND ! "Stretch", ! #else ! getLabel("LStretch", "Stretch"), ! #endif ! KLBL_STRETCH,CODE_STRETCH)), tools ); Include( ! new RotateTool(new ControlInfo( ! #ifndef JIV_EXTEND ! "Rotate", ! #else ! getLabel("LRotate", "Rotate"), ! #endif ! KLBL_ROTATE, CODE_ROTATE)), tools ); Include( ! new ReshapeTool(new ControlInfo( ! #ifndef JIV_EXTEND ! "Alter", ! #else ! getLabel("LAlter", "Alter"), ! #endif ! KLBL_RESHAPE, CODE_RESHAPE)), tools ); Include( ! new MagnifyTool(new ControlInfo( ! #ifndef JIV_EXTEND ! "Magnify", ! #else ! getLabel("LMagnify", "Magnify"), ! #endif ! KLBL_MAGNIFY,CODE_MAGNIFY)), tools ); *************** *** 401,407 **** TextComp* textComp = new TextComp(text); Include( new GraphicCompTool( ! new ControlInfo("Text", KLBL_TEXT, CODE_TEXT), textComp ), tools ); --- 455,467 ---- TextComp* textComp = new TextComp(text); Include( new GraphicCompTool( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Text", ! #else ! getLabel("LText", "Text"), ! #endif ! KLBL_TEXT, CODE_TEXT), textComp ), tools ); *************** *** 520,567 **** } PulldownMenu* IdrawEditor::FileMenu () { ! PulldownMenu* pdm = MakePulldown("File"); Include( new NewCompCmd( ! new ControlInfo("New", KLBL_NEWCOMP, CODE_NEWCOMP), new IdrawComp ), pdm ); Include( ! new RevertCmd(new ControlInfo("Revert", KLBL_REVERT, CODE_REVERT)), pdm ); InsertSeparator(pdm); Include( new OpenCmd( ! new ControlInfo("Open...", KLBL_VIEWCOMP, CODE_VIEWCOMP) ), pdm ); Include( ! new SaveCompCmd(new ControlInfo("Save", KLBL_SAVECOMP, CODE_SAVECOMP)), pdm ); Include( ! new SaveCompAsCmd( ! new ControlInfo("Save As...", KLBL_SAVECOMPAS, CODE_SAVECOMPAS) ), pdm ); Include( new PrintCmd( ! new ControlInfo("Print...", KLBL_PRINT, CODE_PRINT) ), pdm ); Include( new ImportCmd( ! new ControlInfo("Import Graphic...", KLBL_IMPORT, CODE_IMPORT) ), pdm ); InsertSeparator(pdm); Include( new QuitCmd( ! new ControlInfo("Quit", KLBL_QUIT, CODE_QUIT) ), pdm ); --- 580,680 ---- } PulldownMenu* IdrawEditor::FileMenu () { ! PulldownMenu* pdm = MakePulldown( ! #ifndef JIV_EXTEND ! "File" ! #else ! getLabel("LFile", "File") ! #endif ! ); Include( new NewCompCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "New", ! #else ! getLabel("LNew", "New"), ! #endif ! KLBL_NEWCOMP, CODE_NEWCOMP), new IdrawComp ), pdm ); Include( ! new RevertCmd(new ControlInfo( ! #ifndef JIV_EXTEND ! "Revert", ! #else ! getLabel("LRevert", "Revert"), ! #endif ! KLBL_REVERT, CODE_REVERT)), pdm ); InsertSeparator(pdm); Include( new OpenCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Open...", ! #else ! getLabel("LOpen", "Open..."), ! #endif ! KLBL_VIEWCOMP, CODE_VIEWCOMP) ), pdm ); Include( ! new SaveCompCmd(new ControlInfo( ! #ifndef JIV_EXTEND ! "Save", ! #else ! getLabel("LSave", "Save"), ! #endif ! KLBL_SAVECOMP, CODE_SAVECOMP)), pdm ); Include( ! new SaveCompAsCmd( new ControlInfo( ! #ifndef JIV_EXTEND ! "Save As...", ! #else ! getLabel("LSaveAs", "Save As..."), ! #endif ! KLBL_SAVECOMPAS, CODE_SAVECOMPAS) ), pdm ); Include( new PrintCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Print...", ! #else ! getLabel("LPrint", "Print..."), ! #endif ! KLBL_PRINT, CODE_PRINT) ), pdm ); Include( new ImportCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Import Graphic...", ! #else ! getLabel("LImport", "Import Graphic..."), ! #endif ! KLBL_IMPORT, CODE_IMPORT) ), pdm ); InsertSeparator(pdm); Include( new QuitCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Quit", ! #else ! getLabel("LQuit", "Quit"), ! #endif ! KLBL_QUIT, CODE_QUIT) ), pdm ); *************** *** 569,654 **** } PulldownMenu* IdrawEditor::EditMenu () { ! PulldownMenu* pdm = MakePulldown("Edit"); Include( new UndoCmd( ! new ControlInfo("Undo", KLBL_UNDO, CODE_UNDO) ), pdm ); Include( new RedoCmd( ! new ControlInfo("Redo", KLBL_REDO, CODE_REDO) ), pdm ); InsertSeparator(pdm); Include( new CutCmd( ! new ControlInfo("Cut", KLBL_CUT, CODE_CUT) ), pdm ); Include( new CopyCmd( ! new ControlInfo("Copy", KLBL_COPY, CODE_COPY) ), pdm ); Include( new PasteCmd( ! new ControlInfo("Paste", KLBL_PASTE,CODE_PASTE) ), pdm ); Include( new DupCmd( ! new ControlInfo("Duplicate", KLBL_DUP, CODE_DUP) ), pdm ); Include( new DeleteCmd( ! new ControlInfo("Delete", KLBL_DEL, CODE_DEL) ), pdm ); Include( new SlctAllCmd( ! new ControlInfo("Select All", KLBL_SLCTALL, CODE_SLCTALL) ), pdm ); InsertSeparator(pdm); Include( new ScaleCmd( ! new ControlInfo("Flip Horizontal", KLBL_HFLIP, CODE_HFLIP), -1.0, 1.0 ), pdm ); Include( new ScaleCmd( ! new ControlInfo("Flip Vertical", KLBL_VFLIP, CODE_VFLIP), 1.0, -1.0 ), pdm ); Include( new RotateCmd( ! new ControlInfo("90 Clockwise", KLBL_CW90, CODE_CW90), -90.0 ), pdm ); Include( new RotateCmd( ! new ControlInfo("90 CounterCW", KLBL_CCW90, CODE_CCW90), 90.0 ), pdm ); InsertSeparator(pdm); Include( new PreciseMoveCmd( ! new ControlInfo("Precise Move", KLBL_PMOVE, CODE_PMOVE) ), pdm ); Include( new PreciseScaleCmd( ! new ControlInfo("Precise Scale", KLBL_PSCALE, CODE_PSCALE) ), pdm ); Include( new PreciseRotateCmd( ! new ControlInfo("Precise Rotate", KLBL_PROTATE, CODE_PROTATE) ), pdm ); --- 682,863 ---- } PulldownMenu* IdrawEditor::EditMenu () { ! PulldownMenu* pdm = MakePulldown( ! #ifndef JIV_EXTEND ! "Edit" ! #else ! getLabel("LEdit", "Edit") ! #endif ! ); Include( new UndoCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Undo", ! #else ! getLabel("LUndo", "Undo"), ! #endif ! KLBL_UNDO, CODE_UNDO) ), pdm ); Include( new RedoCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Redo", ! #else ! getLabel("LRedo", "Redo"), ! #endif ! KLBL_REDO, CODE_REDO) ), pdm ); InsertSeparator(pdm); Include( new CutCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Cut", ! #else ! getLabel("LCut", "Cut"), ! #endif ! KLBL_CUT, CODE_CUT) ), pdm ); Include( new CopyCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Copy", ! #else ! getLabel("LCopy", "Copy"), ! #endif ! KLBL_COPY, CODE_COPY) ), pdm ); Include( new PasteCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Paste", ! #else ! getLabel("LPaste", "Paste"), ! #endif ! KLBL_PASTE,CODE_PASTE) ), pdm ); Include( new DupCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Duplicate", ! #else ! getLabel("LDuplicate", "Duplicate"), ! #endif ! KLBL_DUP, CODE_DUP) ), pdm ); Include( new DeleteCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Delete", ! #else ! getLabel("LDelete", "Delete"), ! #endif ! KLBL_DEL, CODE_DEL) ), pdm ); Include( new SlctAllCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Select All", ! #else ! getLabel("LSelectAll", "Select All"), ! #endif ! KLBL_SLCTALL, CODE_SLCTALL) ), pdm ); InsertSeparator(pdm); Include( new ScaleCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Flip Horizontal", ! #else ! getLabel("LFlipH", "Flip Horizontal"), ! #endif ! KLBL_HFLIP, CODE_HFLIP), -1.0, 1.0 ), pdm ); Include( new ScaleCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Flip Vertical", ! #else ! getLabel("LFlipV", "Flip Vertical"), ! #endif ! KLBL_VFLIP, CODE_VFLIP), 1.0, -1.0 ), pdm ); Include( new RotateCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "90 Clockwise", ! #else ! getLabel("L90CW", "90 Clockwise"), ! #endif ! KLBL_CW90, CODE_CW90), -90.0 ), pdm ); Include( new RotateCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "90 CounterCW", ! #else ! getLabel("L90CCW", "90 CounterCW"), ! #endif ! KLBL_CCW90, CODE_CCW90), 90.0 ), pdm ); InsertSeparator(pdm); Include( new PreciseMoveCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Precise Move", ! #else ! getLabel("LPMove", "Precise Move"), ! #endif ! KLBL_PMOVE, CODE_PMOVE) ), pdm ); Include( new PreciseScaleCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Precise Scale", ! #else ! getLabel("LPScale", "Precise Scale"), ! #endif ! KLBL_PSCALE, CODE_PSCALE) ), pdm ); Include( new PreciseRotateCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Precise Rotate", ! #else ! getLabel("LPRotate", "Precise Rotate"), ! #endif ! KLBL_PROTATE, CODE_PROTATE) ), pdm ); *************** *** 656,681 **** } PulldownMenu* IdrawEditor::StructureMenu () { ! PulldownMenu* pdm = MakePulldown("Structure"); Include( new GroupCmd( ! new ControlInfo("Group", KLBL_GROUP, CODE_GROUP) ), pdm ); Include( new UngroupCmd( ! new ControlInfo("Ungroup", KLBL_UNGROUP, CODE_UNGROUP) ), pdm ); Include( new FrontCmd( ! new ControlInfo("Bring to Front", KLBL_FRONT, CODE_FRONT) ), pdm ); Include( new BackCmd( ! new ControlInfo("Send to Back", KLBL_BACK, CODE_BACK) ), pdm ); --- 865,920 ---- } PulldownMenu* IdrawEditor::StructureMenu () { ! PulldownMenu* pdm = MakePulldown( ! #ifndef JIV_EXTEND ! "Structure" ! #else ! getLabel("LStructure", "Structure") ! #endif ! ); Include( new GroupCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Group", ! #else ! getLabel("LGroup", "Group"), ! #endif ! KLBL_GROUP, CODE_GROUP) ), pdm ); Include( new UngroupCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Ungroup", ! #else ! getLabel("LUngroup", "Ungroup"), ! #endif ! KLBL_UNGROUP, CODE_UNGROUP) ), pdm ); Include( new FrontCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Bring to Front", ! #else ! getLabel("LFront", "Bring to Front"), ! #endif ! KLBL_FRONT, CODE_FRONT) ), pdm ); Include( new BackCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Send to Back", ! #else ! getLabel("LBack", "Send to Back"), ! #endif ! KLBL_BACK, CODE_BACK) ), pdm ); *************** *** 684,690 **** PulldownMenu* IdrawEditor::FontMenu () { Catalog* catalog = unidraw->GetCatalog(); ! PulldownMenu* pdm = MakePulldown("Font"); int i = 1; PSFont* font = catalog->ReadFont(fontAttrib, i); --- 923,935 ---- PulldownMenu* IdrawEditor::FontMenu () { Catalog* catalog = unidraw->GetCatalog(); ! PulldownMenu* pdm = MakePulldown( ! #ifndef JIV_EXTEND ! "Font" ! #else ! getLabel("LFont", "Font") ! #endif ! ); int i = 1; PSFont* font = catalog->ReadFont(fontAttrib, i); *************** *** 713,719 **** ControlInfo* ctrlInfo; ArrowLine* line; Catalog* catalog = unidraw->GetCatalog(); ! PulldownMenu* pdm = MakePulldown("Brush"); int i = 1; PSBrush* br = catalog->ReadBrush(brAttrib, i); --- 958,970 ---- ControlInfo* ctrlInfo; ArrowLine* line; Catalog* catalog = unidraw->GetCatalog(); ! PulldownMenu* pdm = MakePulldown( ! #ifndef JIV_EXTEND ! "Brush" ! #else ! getLabel("LBrush", "Brush") ! #endif ! ); int i = 1; PSBrush* br = catalog->ReadBrush(brAttrib, i); *************** *** 721,728 **** while (br != nil) { if (br->None()) { ! ctrlInfo = new ControlInfo("None"); ! } else { line = new ArrowLine( 0, 0, round(MENU_WIDTH*ivcm), 0, false, false, 1., stdgraphic --- 972,984 ---- while (br != nil) { if (br->None()) { ! ctrlInfo = new ControlInfo( ! #ifndef JIV_EXTEND ! "None" ! #else ! getLabel("LNone", "None") ! #endif ! ); } else { line = new ArrowLine( 0, 0, round(MENU_WIDTH*ivcm), 0, false, false, 1., stdgraphic *************** *** 764,770 **** PulldownMenu* IdrawEditor::PatternMenu () { Catalog* catalog = unidraw->GetCatalog(); ! PulldownMenu* pdm = MakePulldown("Pattern"); int i = 1; PSPattern* pat = catalog->ReadPattern(patAttrib, i); --- 1020,1032 ---- PulldownMenu* IdrawEditor::PatternMenu () { Catalog* catalog = unidraw->GetCatalog(); ! PulldownMenu* pdm = MakePulldown( ! #ifndef JIV_EXTEND ! "Pattern" ! #else ! getLabel("LPattern", "Pattern") ! #endif ! ); int i = 1; PSPattern* pat = catalog->ReadPattern(patAttrib, i); *************** *** 773,779 **** ControlInfo* ctrlInfo; if (pat->None()) { ! ctrlInfo = new ControlInfo("None"); } else { SF_Rect* sfr = new SF_Rect( --- 1035,1047 ---- ControlInfo* ctrlInfo; if (pat->None()) { ! ctrlInfo = new ControlInfo( ! #ifndef JIV_EXTEND ! "None" ! #else ! getLabel("LNone", "None") ! #endif ! ); } else { SF_Rect* sfr = new SF_Rect( *************** *** 817,893 **** } PulldownMenu* IdrawEditor::AlignMenu () { ! PulldownMenu* pdm = MakePulldown("Align"); Include( new AlignCmd( ! new ControlInfo("Left Sides", KLBL_ALGNLEFT, CODE_ALGNLEFT), Left, Left ), pdm ); Include( new AlignCmd( ! new ControlInfo("Right Sides", KLBL_ALGNRIGHT, CODE_ALGNRIGHT), Right, Right ), pdm ); Include( new AlignCmd( ! new ControlInfo("Tops", KLBL_ALGNTOP, CODE_ALGNTOP), Top, Top ), pdm ); Include( new AlignCmd( ! new ControlInfo("Bottoms", KLBL_ALGNBOT, CODE_ALGNBOT), Bottom, Bottom ), pdm ); Include( new AlignCmd( ! new ControlInfo("Horiz Centers", KLBL_ALGNHCTR, CODE_ALGNHCTR), HorizCenter, HorizCenter ), pdm ); Include( new AlignCmd( ! new ControlInfo("Vert Centers", KLBL_ALGNVCTR, CODE_ALGNVCTR), VertCenter, VertCenter ), pdm ); Include( new AlignCmd( ! new ControlInfo("Centers", KLBL_ALGNCTR, CODE_ALGNCTR), Center, Center ), pdm ); Include( new AlignCmd( ! new ControlInfo("Abut Left", KLBL_ABUTLEFT, CODE_ABUTLEFT), Left, Right ), pdm ); Include( new AlignCmd( ! new ControlInfo("Abut Right", KLBL_ABUTRIGHT, CODE_ABUTRIGHT), Right, Left ), pdm ); Include( new AlignCmd( ! new ControlInfo("Abut Up", KLBL_ABUTUP, CODE_ABUTUP), Top, Bottom ), pdm ); Include( new AlignCmd( ! new ControlInfo("Abut Down", KLBL_ABUTDOWN, CODE_ABUTDOWN), Bottom, Top ), pdm ); InsertSeparator(pdm); Include( new AlignToGridCmd( ! new ControlInfo("Align to Grid", KLBL_ALGNTOGRID, CODE_ALGNTOGRID) ), pdm ); --- 1085,1239 ---- } PulldownMenu* IdrawEditor::AlignMenu () { ! PulldownMenu* pdm = MakePulldown( ! #ifndef JIV_EXTEND ! "Align" ! #else ! getLabel("LAlign", "Align") ! #endif ! ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Left Sides", ! #else ! getLabel("LAlignLeft", "Left Sides"), ! #endif ! KLBL_ALGNLEFT, CODE_ALGNLEFT), Left, Left ), pdm ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Right Sides", ! #else ! getLabel("LAlignRight", "Right Sides"), ! #endif ! KLBL_ALGNRIGHT, CODE_ALGNRIGHT), Right, Right ), pdm ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Tops", ! #else ! getLabel("LAlignTop", "Tops"), ! #endif ! KLBL_ALGNTOP, CODE_ALGNTOP), Top, Top ), pdm ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Bottoms", ! #else ! getLabel("LAlignBottom", "Bottoms"), ! #endif ! KLBL_ALGNBOT, CODE_ALGNBOT), Bottom, Bottom ), pdm ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Horiz Centers", ! #else ! getLabel("LAlignHCenter", "Horiz Centers"), ! #endif ! KLBL_ALGNHCTR, CODE_ALGNHCTR), HorizCenter, HorizCenter ), pdm ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Vert Centers", ! #else ! getLabel("LAlignVCenter", "Vert Centers"), ! #endif ! KLBL_ALGNVCTR, CODE_ALGNVCTR), VertCenter, VertCenter ), pdm ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Centers", ! #else ! getLabel("LAlignCenter", "Centers"), ! #endif ! KLBL_ALGNCTR, CODE_ALGNCTR), Center, Center ), pdm ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Abut Left", ! #else ! getLabel("LAbutLeft", "Abut Left"), ! #endif ! KLBL_ABUTLEFT, CODE_ABUTLEFT), Left, Right ), pdm ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Abut Right", ! #else ! getLabel("LAbutRight", "Abut Right"), ! #endif ! KLBL_ABUTRIGHT, CODE_ABUTRIGHT), Right, Left ), pdm ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Abut Up", ! #else ! getLabel("LAbutUp", "Abut Up"), ! #endif ! KLBL_ABUTUP, CODE_ABUTUP), Top, Bottom ), pdm ); Include( new AlignCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Abut Down", ! #else ! getLabel("LAbutDown", "Abut Down"), ! #endif ! KLBL_ABUTDOWN, CODE_ABUTDOWN), Bottom, Top ), pdm ); InsertSeparator(pdm); Include( new AlignToGridCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Align to Grid", ! #else ! getLabel("LAlignToGrid", "Align to Grid"), ! #endif ! KLBL_ALGNTOGRID, CODE_ALGNTOGRID) ), pdm ); *************** *** 895,947 **** } PulldownMenu* IdrawEditor::ViewMenu () { ! PulldownMenu* pdm = MakePulldown("View"); Include( new NewViewCmd( ! new ControlInfo("New View", KLBL_NEWVIEW, CODE_NEWVIEW) ), pdm ); Include( new CloseEditorCmd( ! new ControlInfo("Close View", KLBL_CLOSEEDITOR, CODE_CLOSEEDITOR) ), pdm ); InsertSeparator(pdm); Include( new NormSizeCmd( ! new ControlInfo("Normal Size", KLBL_NORMSIZE, CODE_NORMSIZE) ), pdm ); Include( new RedToFitCmd( ! new ControlInfo("Reduce to Fit", KLBL_REDTOFIT, CODE_REDTOFIT) ), pdm ); Include( new CenterCmd( ! new ControlInfo("Center Page", KLBL_CENTER, CODE_CENTER) ), pdm ); Include( new OrientationCmd( ! new ControlInfo("Orientation", KLBL_ORIENTATION, CODE_ORIENTATION) ), pdm ); InsertSeparator(pdm); Include( new GridCmd( ! new ControlInfo("Grid on/off", KLBL_GRID, CODE_GRID) ), pdm ); Include( new IGridSpacingCmd( ! new ControlInfo("Grid Spacing...", KLBL_GRIDSPC, CODE_GRIDSPC) ), pdm ); Include( new GravityCmd( ! new ControlInfo("Gravity on/off", KLBL_GRAVITY, CODE_GRAVITY) ), pdm ); --- 1241,1353 ---- } PulldownMenu* IdrawEditor::ViewMenu () { ! PulldownMenu* pdm = MakePulldown( ! #ifndef JIV_EXTEND ! "View" ! #else ! getLabel("LView", "View") ! #endif ! ); Include( new NewViewCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "New View", ! #else ! getLabel("LNewView", "New View"), ! #endif ! KLBL_NEWVIEW, CODE_NEWVIEW) ), pdm ); Include( new CloseEditorCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Close View", ! #else ! getLabel("LCloseView", "Close View"), ! #endif ! KLBL_CLOSEEDITOR, CODE_CLOSEEDITOR) ), pdm ); InsertSeparator(pdm); Include( new NormSizeCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Normal Size", ! #else ! getLabel("LNormalSize", "Normal Size"), ! #endif ! KLBL_NORMSIZE, CODE_NORMSIZE) ), pdm ); Include( new RedToFitCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Reduce to Fit", ! #else ! getLabel("LReduceToFit", "Reduce to Fit"), ! #endif ! KLBL_REDTOFIT, CODE_REDTOFIT) ), pdm ); Include( new CenterCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Center Page", ! #else ! getLabel("LCenterPage", "Center Page"), ! #endif ! KLBL_CENTER, CODE_CENTER) ), pdm ); Include( new OrientationCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Orientation", ! #else ! getLabel("LOrientation", "Orientation"), ! #endif ! KLBL_ORIENTATION, CODE_ORIENTATION) ), pdm ); InsertSeparator(pdm); Include( new GridCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Grid on/off", ! #else ! getLabel("LGrid", "Grid on/off"), ! #endif ! KLBL_GRID, CODE_GRID) ), pdm ); Include( new IGridSpacingCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Grid Spacing...", ! #else ! getLabel("LGridSpacing", "Grid Spacing..."), ! #endif ! KLBL_GRIDSPC, CODE_GRIDSPC) ), pdm ); Include( new GravityCmd( ! new ControlInfo( ! #ifndef JIV_EXTEND ! "Gravity on/off", ! #else ! getLabel("LGravity", "Gravity on/off"), ! #endif ! KLBL_GRAVITY, CODE_GRAVITY) ), pdm ); Index: idraw/main.c diff -c idraw/main.c:1.1 idraw/main.c:1.2 *** idraw/main.c:1.1 Tue Mar 17 15:55:08 1998 --- src/idraw/main.c Tue Mar 24 09:02:08 1998 *************** *** 46,53 **** --- 46,58 ---- { "*initialfont", "4" }, { "*initialpattern","1" }, { "*initialarrow", "none" }, + #ifndef JIV_EXTEND { "*pagewidth", "8.5" }, { "*pageheight", "11" }, + #else + { "*pagewidth", "8.27" }, + { "*pageheight", "11.69" }, + #endif { "*gridxincr", "8" }, { "*gridyincr", "8" }, { "*font1", "-*-courier-medium-r-normal-*-8-*-*-*-*-*-*-* Courier 8" }, Index: OverlayUnidraw/grayraster.c diff -c OverlayUnidraw/grayraster.c:1.1 OverlayUnidraw/grayraster.c:1.2 *** OverlayUnidraw/grayraster.c:1.1 Tue Mar 17 15:55:20 1998 --- src/OverlayUnidraw/grayraster.c Tue Mar 24 09:02:12 1998 *************** *** 29,35 **** #include #include ! #ifdef __svr4__ #include #endif --- 29,35 ---- #include #include ! #if defined(__svr4__) || defined(linux) #include #endif Index: include_iviv-2_6/box.h diff -c include_iviv-2_6/box.h:1.1 include_iviv-2_6/box.h:1.2 *** include_iviv-2_6/box.h:1.1 Tue Mar 17 15:56:17 1998 --- src/include/IV-2_6/InterViews/box.h Tue Mar 24 09:02:23 1998 *************** *** 33,38 **** --- 33,44 ---- #include + #ifdef USE_SUNCxx2 + # undef major + # undef minor + #endif USE_SUNCxx2 + + class BoxElement; class BoxCanonical; Index: include_iviv-2_6/interactor.h diff -c include_iviv-2_6/interactor.h:1.1 include_iviv-2_6/interactor.h:1.2 *** include_iviv-2_6/interactor.h:1.1 Tue Mar 17 15:56:17 1998 --- src/include/IV-2_6/InterViews/interactor.h Tue Mar 24 09:02:23 1998 *************** *** 54,59 **** --- 54,62 ---- class Style; class Window; class World; + #ifdef JIV /* eto@ai.cs.fujitsu.co.jp 12 Jan 1992 */ + class ClientMessageHandler; + #endif /* JIV */ enum CanvasType { CanvasShapeOnly, CanvasInputOnly, CanvasInputOutput, *************** *** 108,113 **** --- 111,120 ---- void Run(); void QuitRunning(Event&); virtual void Handle(Event&); + #ifdef JIV /* eto@ai.cs.fujitsu.co.jp 12 Jan 1992 */ + void SetClientMessageHandler(ClientMessageHandler*); + void ResetClientMessageHandler(ClientMessageHandler*); + #endif /* JIV */ /* subject-view communication */ virtual void Adjust(Perspective&); *************** *** 169,174 **** --- 176,185 ---- void DoConfig(boolean); virtual void Orphan(); + + #ifdef JIV /* eto@ai.cs.fujitsu.co.jp 12 Jan 1992 */ + ClientMessageHandler* cmhandler; + #endif }; inline Scene* Interactor::Parent() const { return parent; } Index: include_iviv-2_6/painter.h diff -c include_iviv-2_6/painter.h:1.1 include_iviv-2_6/painter.h:1.2 *** include_iviv-2_6/painter.h:1.1 Tue Mar 17 15:56:18 1998 --- src/include/IV-2_6/InterViews/painter.h Tue Mar 24 09:02:23 1998 *************** *** 161,166 **** --- 161,169 ---- Canvas* src, Coord x1, Coord y1, Coord x2, Coord y2, Canvas* dst, Coord x0, Coord y0 ); + #ifdef JIV + virtual void MapCoord(Canvas*, Coord x, Coord y, Coord& nx, Coord& ny); + #endif /* JIV */ PainterRep* Rep() const; private: Index: include_iviv-2_6/textdisplay.h diff -c include_iviv-2_6/textdisplay.h:1.1 include_iviv-2_6/textdisplay.h:1.2 *** include_iviv-2_6/textdisplay.h:1.1 Tue Mar 17 15:56:19 1998 --- src/include/IV-2_6/InterViews/textdisplay.h Tue Mar 24 09:02:23 1998 *************** *** 86,91 **** --- 86,96 ---- IntCoord Top(int line); IntCoord Left(int line, int index); IntCoord Right(int line, int index); + + #ifdef JIV + void TextDisplay::CaretPoint(int&, int&); + #endif /* JIV */ + private: friend class TextLine; Index: include_x11/xjivfunc.h diff -c /dev/null include_x11/xjivfunc.h:1.1 *** /dev/null Tue Mar 24 09:02:28 1998 --- src/include/IV-X11/xjivfunc.h Tue Mar 24 09:02:27 1998 *************** *** 0 **** --- 1,38 ---- + /* + * Copyright (c) 1991, 1992 Fujitsu Oita Software Laboratory Limited + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice and this permission notice appear in + * all copies of the software and related documentation, and the name of + * Fujitsu Oita Software Laboratory may not be used in any advertising or + * publicity relating to the software without specific, prior written + * prior permission of Fujitsu Oita Software Laboratory. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL FUJITSU OITA SOFTWARE LABORATORY BE LIABLE FOR ANY + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY + * OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Author: Toshihisa Eto, Fujitsu Oita Software Laboratory Limited, Japan + * E-Mail: eto@ai.cs.fujitsu.co.jp + * Nifty: HBG02665 + */ + + #ifdef JIV + extern short JIVGetLeftBearing(const char*, int, FontRep*, FontRep*); + extern short JIVGetRightBearing(const char*, int, FontRep*, FontRep*); + extern short JIVGetWidth(const char*, int, FontRep*, FontRep*); + extern short JIVGetAscent(const char*, int, FontRep*, FontRep*); + extern short JIVGetDescent(const char*, int, FontRep*, FontRep*); + extern void JIVDrawString(XDisplay*, XDrawable, GC, const Font*, + int, int, unsigned char*, int, Display*); + extern void JIVDrawImageString(XDisplay *, XDrawable, GC, const Font*, + int, int, unsigned char*, int, Display*); + #endif /* JIV */ Index: include_interviews/clthandler.h diff -c /dev/null include_interviews/clthandler.h:1.1 *** /dev/null Tue Mar 24 09:02:33 1998 --- src/include/InterViews/clthandler.h Tue Mar 24 09:02:30 1998 *************** *** 0 **** --- 1,55 ---- + /* + * Copyright (c) 1991, 1992 Fujitsu Oita Software Laboratory Limited + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice and this permission notice appear in + * all copies of the software and related documentation, and the name of + * Fujitsu Oita Software Laboratory may not be used in any advertising or + * publicity relating to the software without specific, prior written + * prior permission of Fujitsu Oita Software Laboratory. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL FUJITSU OITA SOFTWARE LABORATORY BE LIABLE FOR ANY + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY + * OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Author: Toshihisa Eto, Fujitsu Oita Software Laboratory Limited, Japan + * E-Mail: eto@ai.cs.fujitsu.co.jp + * Nifty: HBG02665 + */ + + #ifdef JIV + + #ifndef iv_clthandler_h + #define iv_clthandler_h + + #include + #include + + #include + + class Event; + + class ClientMessageHandler : public Handler { + protected: + ClientMessageHandler(); + public: + virtual ~ClientMessageHandler(); + + virtual boolean event(Event&) = 0; + + virtual boolean handle_p(const Event&); + }; + + #include + + #endif + + #endif /* JIV */ Index: include_interviews/event.h diff -c include_interviews/event.h:1.1 include_interviews/event.h:1.2 *** include_interviews/event.h:1.1 Tue Mar 17 15:56:34 1998 --- src/include/InterViews/event.h Tue Mar 24 09:02:31 1998 *************** *** 52,58 **** --- 52,65 ---- EnterEvent, /* mouse enters canvas */ LeaveEvent, /* mouse leaves canvas */ FocusInEvent, /* focus for keyboard events */ + #ifndef JIV /* patch by eto@ai.cs.fujitsu.co.jp */ FocusOutEvent /* lose keyboard focus */ + #else /* JIV */ + FocusOutEvent, /* lose keyboard focus */ + ClientEvent, /* message from other client */ + PropertyEvent, /* get property change */ + NullEvent /* init value for Event::eventType */ + #endif /* JIV */ /* patch end */ }; /* mouse button anachronisms */ *************** *** 62,68 **** --- 69,79 ---- class Event { public: + #ifndef JIV /* patch by eto@ai.cs.fujitsu.co.jp */ enum { undefined, motion, down, up, key, other_event }; + #else /* JIV */ + enum { undefined, motion, down, up, key, property, other_event }; + #endif /* JIV */ /* patch end */ enum { none, any, left, middle, right, other_button }; Event(); Index: include_interviews/font.h diff -c include_interviews/font.h:1.1 include_interviews/font.h:1.2 *** include_interviews/font.h:1.1 Tue Mar 17 15:56:34 1998 --- src/include/InterViews/font.h Tue Mar 24 09:02:31 1998 *************** *** 41,46 **** --- 41,49 ---- class FontImpl; class FontRep; class String; + #ifdef JIV + class CompositeFont; + #endif /* JIV */ /* * FontFamily - manages related fonts *************** *** 122,134 **** --- 125,150 ---- virtual int index(const char*, int, float offset, boolean between) const; + #ifdef JIV + boolean isComposite() const; + const CompositeFont* getCompositeFont() const; + #endif /* JIV */ + FontRep* rep(Display*) const; + #ifdef JIV + FontRep* rep2byte(Display*) const; + #endif /* JIV */ protected: Font(FontImpl*); private: friend class FontImpl; FontImpl* impl_; + #ifdef JIV + FontImpl* impl2byte_; + boolean isCompositeFlag; + const CompositeFont* cfont; + #endif /* JIV */ /* anachronisms */ public: *************** *** 140,145 **** --- 156,248 ---- int Width(const char*) const; int Width(const char*, int) const; }; + #ifdef JIV + inline boolean Font::isComposite() const {return isCompositeFlag;} + inline const CompositeFont* Font::getCompositeFont() const { + return cfont; + } + + class CompositeFont { + public: + CompositeFont(const char*, const char*, const char*, + const char* = 0); + ~CompositeFont(); + + static const CompositeFont* findCompositeFont(const char*); + + const char* getFontName() const; + const char* get1ByteFontName() const; + const char* get2ByteFontName() const; + + boolean displayBold() const; + boolean displayItalic() const; + + private: + char* compositeFontName; + char* fontName1; + char* fontName2; + boolean displayBoldFlag; + boolean displayItalicFlag; + }; + + inline const char* CompositeFont::getFontName() const { + return compositeFontName; + } + + inline const char* CompositeFont::get1ByteFontName() const { + return fontName1; + } + + inline const char* CompositeFont::get2ByteFontName() const { + return fontName2; + } + + inline boolean CompositeFont::displayBold() const { + return displayBoldFlag; + } + + inline boolean CompositeFont::displayItalic() const { + return displayItalicFlag; + } + + class PSCompositeFontRep; + + class PSCompositeFont { + public: + PSCompositeFont(const char*, const char*, const char*); + ~PSCompositeFont(); + + static const PSCompositeFont* findFont(const char*); + static const char* getPreamble(); + static void setPreamble(const char*); + + const char* getFontName() const; + const char* getAsciiFontName() const; + const char* getKanjiFontName() const; + + private: + PSCompositeFontRep* rep_; + }; + + class PSSlantFontRep; + + class PSSlantFont { + public: + PSSlantFont(const char*, const char*); + ~PSSlantFont(); + + static PSSlantFont* findFont(const char*); + static void resetPrintFlag(); + + const char* getFontName() const; + const char* getOriginalFontName() const; + boolean printFlag(); + void printFlag(boolean); + + private: + PSSlantFontRep* rep_; + }; + #endif JIV #include Index: include_interviews/kinput.h diff -c /dev/null include_interviews/kinput.h:1.1 *** /dev/null Tue Mar 24 09:02:33 1998 --- src/include/InterViews/kinput.h Tue Mar 24 09:02:31 1998 *************** *** 0 **** --- 1,65 ---- + /* + * Copyright (c) 1991, 1992 Fujitsu Oita Software Laboratory Limited + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice and this permission notice appear in + * all copies of the software and related documentation, and the name of + * Fujitsu Oita Software Laboratory may not be used in any advertising or + * publicity relating to the software without specific, prior written + * prior permission of Fujitsu Oita Software Laboratory. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL FUJITSU OITA SOFTWARE LABORATORY BE LIABLE FOR ANY + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY + * OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Author: Toshihisa Eto, Fujitsu Oita Software Laboratory Limited, Japan + * E-Mail: eto@ai.cs.fujitsu.co.jp + * Nifty: HBG02665 + */ + + #ifdef JIV + + class KinputRep; + class Window; + class Font; + + class Kinput { + public: + // Instance handling method + Kinput(Window*); + ~Kinput(); + + // method for communicate with kinput + void BeginConversion(); + void BeginConversion(int, int); + void EndConversion(); + + // method for kinput event handling + boolean IsKinputEvent(const Event& ev); + boolean Handle(Event& ev); + + // get result string + const char* GetConvertedString(); + + // set property for over-the-spot conversion (not implemented yet) + void SetFont(Font*); + void SetColor(const char*); + void SetConversionSpot(int, int); + + + // Public method for search current status + boolean IsActive(); + + private: + KinputRep* rep; + }; + + #endif /* JIV */ Index: include_interviews/style.h diff -c include_interviews/style.h:1.1 include_interviews/style.h:1.2 *** include_interviews/style.h:1.1 Tue Mar 17 15:56:37 1998 --- src/include/InterViews/style.h Tue Mar 24 09:02:31 1998 *************** *** 92,97 **** --- 92,101 ---- boolean find_attribute(const char* name, Coord&) const; boolean value_is_on(const String& name) const; boolean value_is_on(const char* name) const; + + #ifdef JIV + virtual void initCompositeFont() const; + #endif /* JIV */ private: friend class StyleRep; Index: include_unidraw/manips.h diff -c include_unidraw/manips.h:1.1 include_unidraw/manips.h:1.2 *** include_unidraw/manips.h:1.1 Tue Mar 17 15:56:50 1998 --- src/include/Unidraw/manips.h Tue Mar 24 09:02:36 1998 *************** *** 47,52 **** --- 47,56 ---- class TextDisplay; class Transformer; class UList; + #ifdef JIV + class Kinput; + class KinputHandler; + #endif /* JIV */ class ManipGroup : public Manipulator { public: *************** *** 232,237 **** --- 236,247 ---- boolean Contains(Coord, Coord); int Locate(Coord, Coord); + + #ifdef JIV + void BeginConversion(); + void SetConversionSpot(); + #endif /* JIV */ + protected: void Init( Viewer*, Painter*, Coord, Coord, Tool*, boolean,const char* =nil,int =0 *************** *** 256,261 **** --- 266,275 ---- int _bufsize; int _dot, _mark; Event _grasp_e; + #ifdef JIV + Kinput* kinput; + KinputHandler* khandler; + #endif /* JIV */ }; inline int TextManip::Dot () { return _dot; } Index: include_components/psview.h diff -c include_components/psview.h:1.1 include_components/psview.h:1.2 *** include_components/psview.h:1.1 Tue Mar 17 15:56:59 1998 --- src/include/Unidraw/Components/psview.h Tue Mar 24 09:02:39 1998 *************** *** 71,77 **** --- 71,83 ---- virtual void GetBox(Coord&, Coord&, Coord&, Coord&); virtual void GetGridSpacing(float&, float&); + #ifdef JIV + virtual void CmpFontProcs(ostream&); + #endif /* JIV */ virtual void ConstProcs(ostream&); + #ifdef PS_FIX + virtual void IdrawDictPreamble(ostream&); + #endif virtual void BeginProc(ostream&); virtual void EndProc(ostream&); *************** *** 111,116 **** --- 117,127 ---- protected: UList* _fonts; }; + + #ifdef PS_FIX + inline void PostScriptView::IdrawDictPreamble(ostream&) { + } + #endif class PostScriptViews : public PostScriptView { public: Index: config_ivtools/params.def diff -c config_ivtools/params.def:1.1 config_ivtools/params.def:1.2 *** config_ivtools/params.def:1.1 Tue Mar 17 15:57:15 1998 --- config/params.def Tue Mar 24 09:02:45 1998 *************** *** 385,391 **** #endif #ifndef IvCCDefines ! #define IvCCDefines $(LANGUAGE_CCDEFINES) $(BACKWARD_CCDEFINES) #endif #ifndef LanguageCCDefines --- 385,391 ---- #endif #ifndef IvCCDefines ! #define IvCCDefines $(LANGUAGE_CCDEFINES) $(BACKWARD_CCDEFINES) $(JIV_CCDEFINES) #endif #ifndef LanguageCCDefines *************** *** 396,401 **** --- 396,405 ---- #define BackwardCompatibilityCCDefines -Div2_6_compatible #endif + #ifndef JIVCCDefines + #define JapaneseIVCCDefines -DJIV -DPS_FIX -DJIV_EXTEND -DIV_FIX + #endif + #ifndef ExtraCCDefines #if SystemV #define ExtraCCDefines -DSYSV *************** *** 432,437 **** --- 436,442 ---- IV_CCDEFINES = IvCCDefines LANGUAGE_CCDEFINES = LanguageCCDefines BACKWARD_CCDEFINES = /* defined when Use_2_6() is used in Imakefile */ + JIV_CCDEFINES = JapaneseIVCCDefines EXTRA_CCDEFINES = ExtraCCDefines OTHER_CCDEFINES = OtherCCDefines Index: config_ivtools/site.def.LINUX diff -c config_ivtools/site.def.LINUX:1.1 config_ivtools/site.def.LINUX:1.2 *** config_ivtools/site.def.LINUX:1.1 Tue Mar 17 15:57:15 1998 --- config/site.def.LINUX Tue Mar 24 09:02:45 1998 *************** *** 38,53 **** * Enable/disable relative InterViews-style installation of binaries */ #undef InstallRelative ! #define InstallRelative YES /* /* * Where to put binaries, libraries, and data files when InstallRelative is NO */ #if 1 ! #define BinDir /usr/local/bin ! #define LibDir /usr/local/lib ! #define LibAllDir /usr/local/lib/ivtools #else #define InstalledRoot $(DESTDIR)/usr/X11R6 // for Debian #endif --- 38,56 ---- * Enable/disable relative InterViews-style installation of binaries */ #undef InstallRelative ! #define InstallRelative NO /* /* * Where to put binaries, libraries, and data files when InstallRelative is NO */ #if 1 ! #define BinDir /usr/local/ivtools/bin ! #define LibDir /usr/local/ivtools/lib ! #define IncDir /usr/local/ivtools/include ! #define ManDir /usr/local/ivtools/man ! #define ConfigDir /usr/local/ivtools/config ! #define LibAllDir /usr/local/ivtools/share #else #define InstalledRoot $(DESTDIR)/usr/X11R6 // for Debian #endif Index: config_iv/iv-linux.cf diff -c config_iv/iv-linux.cf:1.1 config_iv/iv-linux.cf:1.2 *** config_iv/iv-linux.cf:1.1 Tue Mar 17 15:57:19 1998 --- config/InterViews/iv-linux.cf Tue Mar 24 09:02:48 1998 *************** *** 1,15 **** ! /* ! * This is the Linux configuration file for Interviews 3.1 ! * Set up to use gcc in local.def ! */ ! #define OptimizeCCFlags -O6 ! #define TIFFOptimizeCFlags -O ! #if 0 ! #define ExtraCCDefines -DLINUX ! #endif ! #define ExtraCCLdFlags /**/ ! #include --- 1,27 ---- ! /* Configuration for Linux */ ! /* Thanks to noti@ssel.toshiba.co.jp */ ! /* $Id: COPYRIGHT.proposed.txt,v 1.2 2010/01/17 00:42:06 johnston Exp $ */ ! #define OSDefines -Dlinux -D_POSIX_SOURCE \ ! -D_BSD_SOURCE -D_SVID_SOURCE -DX_LOCALE ! #define OSRelease ! #include ! #include ! /*** if bug then dis-comment optimize(-O2) */ ! #undef OptimizeCCFlags ! #define OptimizeCCFlags -O ! #undef DebugCCFlags ! #define DebugCCFlags ! #ifndef TIFFCDriver ! #define TIFFCDriver cc ! #endif ! ! #ifndef TIFFOptimizeCFlags ! #define TIFFOptimizeCFlags -O ! #endif ! ! #undef SharedCCFlags ! #define SharedCCFlags -fPIC -fshared-data Index: config_iv/iv-sun.cf diff -c config_iv/iv-sun.cf:1.1 config_iv/iv-sun.cf:1.2 *** config_iv/iv-sun.cf:1.1 Tue Mar 17 15:57:20 1998 --- config/InterViews/iv-sun.cf Tue Mar 24 09:02:48 1998 *************** *** 17,22 **** --- 17,27 ---- /* * A bug in SunOS 4.1 causes dbx to crash if it tries to load an + + /* + * if you use Sun C++ 2.1, define bellow + */ + #define USE_SUNCxx2 * application which uses a debuggable shared library, so we can't * have both debuggable and shareable libraries. */ ivtools-doc/ivtools-0.7-CHANGES.txt0000644000076500007650000016135707374262632017504 0ustar scottscott00000000000000September 14th 1999 ivtools-0.7.10 Drawing Editors * propogate the horizontal-drawing-of-text-while-in-landscape-mode enhancement that's been in drawtool for awhile to idraw, because this is a long-standing Debian request, and it's hard to see how it would bother anyone. Before you would be entering vertical text when in landscape mode. Now it will be horizontal, just like it is in portrait mode. Interpreter Changes * change comterp's for and while command to accept an extra fixed argument for the body expression if no :body argument exists, i.e.: for(x=0 x<10 x++ print("%d\n" x)) x=0;while(x<10 print("%d\n" x)) instead of: for(x=0 x<10 x++ :body print("%d\n" x)) x=0;while(x<10 :body print("%d\n" x)) * fix bugs in incr_after (postfix ++) and decr_after (postfix --) commands in comterp. Library Changes -- Attribute -- * add methods for checking a "blank" AttributeValue. These are pushed on the stack by comterp whenever an interpreter command fails to put anything on the stack. AttributeValue::is_blank static AttributeValue::is_blank(ValueType t) -- OverlayUnidraw -- * set up a new method, OverlayEditor::ReplaceComponent, to do what ::SetComponent does, plus delete the old component if it is no longer used in the Unidraw environment. This gets rid of a bug that appeared in ivtools-0.7.9, where the deleting of the old component was done in two places, once in OvNewCompCmd::Execute (where it has always been done) and once in OverlayEditor::SetComponent (where it was done for the duration of ivtools-0.7.9). * fix bug (that appeared in ivtools-0.7.9) for handling of the New command Postscript-format option on the export dialog box. Miscellaneous and Configuration Changes * a set of changes to config files and some source files to get ivtools compiled on Windows NT using Cygwin beta 20. Everything works to build the executables, including the configure script and the imake process. Haven't yet tested it with an X server. See README.cygwin for more details. Thanks to John Carlson at Lawrence Livermore National Labs for showing this was possible with his copy of InterViews, Cygnus Solutions' Cygwin environment, and X11R6.4 Xlib binaries from NASA. * change the script in aclocal.m4 for finding the CPlusPlusIncludeDir to work on Windows NT (with Cygwin) as well. * rename these directories: comterp, iueserv, drawserv to: comterp_, iueserv_, drawserv_ This is to avoid a collision with the library directions ComTerp, IueServ, and DrawServ which would happen when untar'ing ivtools on a Windows NT box (using the Cygwin tar). Although upper and lower case are preserved, they are not distinct for purposes of file comparison on that platform. July 30th 1999 ivtools-0.7.9 Drawing Editors * add a "PostScript" format to the export dialog box, which means when checked to use the existing incompatible extension to idraw PostScript format which supports color image rendering. With normal idraw format, which is a restricted formulation of real PostScript, the color images print grey. * terminate a multi-point drawing tool if right-clicks cause the number of vertices to become zero. * added keyboard shortcuts for zoom-in (Shift-Z) and zoom-out (Ctrl-Z). * change behavior of magnify-tool to zoom by 2 around a single-click. Done in all drawing editors, including idraw. Interpreter Changes * modify the comterp "+" operator to concatenate two strings. * create a comterp eval command to take a set of strings and return an array of evaluated results on the stack. Same functionality as the "," operator, only from strings. * add a :str and :err keywords to comterp's print func. :string already existed, :str is just shorter for something so commonly used (since the advent of string concatenation). :err writes to stderr instead of stdout. * fixed bug in comterp help func that caused a segfault when help was requested for unknown operator strings, i.e. help("^") Library Changes -- IV-common and Unidraw-common -- * add a link to Unidraw/geomobjs.c from Unidraw-common, and a link to OS/math.c to IV-common. This is done so that both geomobjs.c and fgeomobjs.c can be used from comterp. This is tested with the construction of a PointObj and FPointObj in comterp/main.c. So if you can get everything built through comterp you can make use of these geometric objects without any other IV or Unidraw code. -- Attribute -- * added API to ComModule () to inspect the operator table for infix,postfix, or prefix operators that match a string. -- Unidraw -- * deprivatize boolean Unidraw::updated(), so it can be used to prune unnecessary calls to Unidraw::Update from comdraw. -- AttrGlyph -- * modified AttributeListEditor::update_text to put a blank after long attribute names. -- OverlayUnidraw -- * three partial experiments to improve the incremental loading of rasters from URLs. Each temporarily disabled for various reasons with a unique #define: #define OPEN_DRAWTOOL_URL // define for drawtool document loading // from a URL in ovimport.c #define RASTER_DAMAGE1 // define for incremental flushing of raster // in ovraster.c #define RASTER_DAMAGE2 // define to use mb of incrementally loaded // region for raster damage in ovraster.c The OPEN_DRAWTOOL_URL attempt first causes a placeholder graphic to be opened and displayed, and nothing more happens until you manipulate the placeholder graphic in some way, like moving it. Then the contents of the drawtool document is displayed, which may include raster referenced by URL, which are incrementally displayed as they are loaded. The RASTER_DAMAGE1 attempt works when importing images or opening them by themselves or another document, but you can see artifacts (all white rows) if you zoom in and out repeatedly during the load process. The RASTER_DAMAGE2 attempt works when importing images but not completely when opening images by URL whether stand-alone or in a drawtool document. -- ComUnidraw -- * start work on an ivtools distributed whiteboard capability. Decided to implement this using the comdraw command interpreter. Now all the Command objects generated by a Manipulator are indirectly executed via a new ComEditor::ExecuteCmd method (the base class method, OverlayEditor::ExecuteCmd, just calls Command::Execute immediately). This indirect execution is where things will get beefed up to make for a distributed whiteboard. Right now, whether you specify -wbmaster or -wbslave on the comdraw command line, all the PasteCmd's (the commands that result when a GraphicCompTool is used) are converted into comdraw script capable of constructing and pasting the equivalent comp. In the future this script would be transmitted to the whiteboard master, then redistributed to each whiteboard slave. Right now it is simply interpreted within the local comdraw, to show that things work (somewhat). The script is generated by constructing a SCRIPT_VIEW of the components in the clipboard of the PasteCmd, then having it write it's ::Definition out to an ostrstream. This worked fine for ellipse with no changes to the generated script. Synonym commands had to be set up for rectangle (rect), arrowline (line), arrowmultiline (multiline), and arrowspline (closedspine). Right now it works for everything but the text graphic, and any of the multi-point graphics. Currently it ignores all the additional arguments that get spewed out in the script (like :fgcolor) and takes these instead from the default graphic state of the viewer. When used in a true distributed fashion these would need to be used, and this would then allow each person to have their own default graphic state. Miscellaneous and Config Changes * fix the inclusion of nan.h when using glibc-2.0. It already worked for glibc-2.1. It migrates the conditional include of nan.h from OverlayUnidraw/grayraster.c to src/include/ivstd/nan.h. It tests for !glibc-2.0 before using bits/nan.h as the include file pathname. Worked out with help from Guenter Geiger. * patches to compile on SunOS 4.1.4 from Nico Kadel-Garcia at the Massachusetts Eye and Ear Infirmary. * remove fgeomobjs.c from Unidraw-common. It didn't really belong there. * modify the configure script to detect if necessary symbolic links are missing and add them. This happens when you get a copy of ivtools from a cvs repository. * threw out the Dispatch/ace*.h files. If there are used anywhere those references will have to be changed to AceDispatch/ace*.h. * added links from the PERCEPS-generated documentation to the old 3.1 man pages for the Dispach library. Full-up links for InterViews and Unidraw remain to be done. * fixes for building with ACE 4.6.15 and glibc-2.1, submitted by Guenter Geiger. * beefed up MANIFEST.comterp (and README.comterp) so that now a stand-alone comterp tar file can be created, untarred in a new place, configured, built, and installed. All works smoothly now. The resultant tar file is 1/5th the size of the entire ivtools. * removed a Use_libInterViews() from src/Attribute/Imakefile, because this library doesn't really have an InterViews dependency (only IV-common and Unidraw-common). From Guenter Geiger. * new InstallXDefaultAs rule in config/rules.def from Guenter Geiger, to get the permission right when installing InterViews.defaults. June 10th 1999 ivtools-0.7.8 Interpreter Changes * migration of the stream operator "," upwards in the parsing priority table, to have higher priority than the assignment operators, so that something like: v=1,2,3,4 ends up assigning a list to the variable v that can be passed to commands like size, at, sum, etc.. * came up with a solution for iterating over multiple space delimited expressions in a single line of input when using a comterp in server mode. Now something like: 1 2 3 4 returns: 1 2 3 4 * add an echo of returned results to the comterp client mode. Library Changes -- Attribute -- * add extra predicates to AttributeValue: AttributeValue::is_numeric() (same as ::is_num) AttributeValue::is_object() * change timer mechanism in ComTerpHandler to disable old timer before creating new one. -- ComTerp -- * catch one more place (ComTerpServ::runfile()), where the bufsiz needed to be kicked up to 1M. -- FrameUnidraw -- * fix bug in deserializing code for a FrameIdrawComp so that if a background frame already exists another one is not created. Config and Miscellaneous Changes * add IET Inc. to the overall copyright, to reflect their new status as a contributor to and supporter of ivtools. * added workarounds for glibc-2.* needed by Dispatch/dispatcher.c and OverlayUnidraw/grayraster.c. Makes ivtools compile on RedHat 6.0. May 3rd 1999 ivtools-0.7.7 Drawing Editor and Drawing Editor Framework Changes * add Ellipse::ellipse_to_polygon method, to return a list of points that define an ellipse as a polygon. Interpreter and Interpreter Framework Changes * add command to return the size of a list (ListSizeFunc/size). * add command to return the nth member of a list (ListAtFunc/at). * add a :nowait argument to the remote command, to allow for asynchronous transmission of commands to a remote interpreter. * add a ComFunc::exec method for use of derived class ::execute methods. It calls ComFunc::push_funcstate, then ::execute, then ComFunc::pop_funcstate. * fix a bug where the print command was passing a double to a float format string. * add an AttributeList::merge method, for combining the contents of two AttributeList's. * add a ComFunc::stack_keys method, for returning all the keyword/value pairs of a ComFunc invocation in an AttributeList. * create a SetAttrFunc in ComUnidraw that can be used to set the attributes of a graphic component via the command interpreter. Config and Miscellaneous Changes * fix problem with relative install of shared libraries that was recently introduced. * TopoFace/fgeomobjs.c temporarily incorporated into Unidraw-common so it can be made use of from comterp and other IV-free applications. The better long-term approach is to link the TopoFace library into comterp, and incorporate any IV or Unidraw classes that it relies on into IV-common or Unidraw-common. * Experiment with a MANIFEST.comterp that specifies a stand-alone subset of ivtools that excludes the bulk of IV and Unidraw. The resultant source tree builds with a "./configure;make World", but there are lots of warnings and errors to be smoothed over. * increment all the buffer sizes associated with comterp from the default 1K (BUFSIZ) to 1M. A better solution would be to revisit the continuity of command input over multiple input buffers for the various modes of input (or at least make it a command line parameter or X resource). When entering command via stdin it is easy enough to use command line continuation (automatically invoked if an expression is incomplete) or character string continuation (a backslash followed immediately by a newline). But this generality does not apply to socketed interactions, etc.. The buffer overrun (at 1K) was being correctly detected, and disaster averted, but it was still a problem because there was no course of correction. So upping it to 1M is a quick fix. * fix a file id limitation of 20 on Solaris. April 16th 1999 ivtools-0.7.6 Drawing Editor and Library Changes * when reading rasters from URL's, set the "by-pathname" flag based on import dialog box check box. This flag controls whether a raster is serialized with just a pathname or with all the pixel data. * update flipbook's view menu to include things like the scribble pointer, etc.. Still no support for multiple viewers. * fix some very old event handling bugs in drawtool etc.. Have you ever seen the cursor jump the first time you draw or move something in an editor? There were two different problems, one where X coordinates were not getting converted to IV coordinates (upper-left origin to lower-left origin), and the other was a little more tricky. Whenever something is dragged in an editor, the software issues an XGrabPointer to the server, so that all subsequent events come through relative to the canvas of the drawing editor. Except, because of the client-server nature of X, it was possible for some motion events to slip through before the XGrabPointer had taken affect! * add a pointer-tracking mechanism to drawtool (invoke with -ptrloc command line argument). This introduces an extra bar across the top (below the menu-bar) with a constantly updated readout of the pointer in document coordinates. Several things had to be developed to make this work: - a static function pointer (a callback) was added to the Event class, to be invoked (if defined) for every event read from the X server. This is its signature: typedef void (*event_tracker_ptr)(Event&); and these are the methods for setting and retrieving the static function pointer: static event_tracker_ptr event_tracker() { return _event_tracker; } static void event_tracker(event_tracker_ptr ptr) { _event_tracker = ptr; } - a static method on OverlayUnidraw was developed that matched this signature: static pointer_tracker_func(Event&); this method ignores all but motion events, but still had to deal with 3 different kinds of motion events: 1. motion events associated with the top-level window (the ApplicationWindow) before the offset to Unidraw canvas is known (this requires traversing the X Window tree to compute the offset using a new method Window::offset_from_toplevel). 2. motion events associated with the top-level window after the offset to Unidraw canvas is known (which happens after the first mouse click within the Unidraw canvas). 3. motion events directly associated with the Unidraw canvas (these occur during a drag operation within the canvas). In each case the right thing was done to convert the raw XEvent locations to canvas screen coordinates, which are then converted to drawing coordinates using OverlayViewer::ScreenToDrawing. This method also deals with multiple-editor/viewers, by searching the Unidraw editor list to find which editor/viewer the event corresponds to. - finally, a state variable was developed (PtrLocState) that converts the screen coordinates to drawing coordinates and displays them in a glyph. Config and Miscellaneous Changes * really make things work without a CPU environment variable. It was necessary to change a $$CPU to a $(CPU) in the makefile stuff. * modify configure script to allow for the specification of only one pathname for each underlying library. You can still specify the second pathname to explicitly say where the libraries are, but if it can find them without this everything works. For example, you only have to supply --with-ace, and not --with-ace-libs, if the libraries and include files for ACE are co-located. * fix unnecessary bash dependency in configure script. export PWD=`pwd` is now PWD=`pwd';export PWD. * various fixes to Solaris 2.6 build and install submitted by Roy M. Lecates of Fore Systems: - workaround for collision with #define of ManDir in config/config-solaris-gcc.mk - new command line for installing symbolic links: "tar cf - file | (cd dir; tar xfp -)" instead of "cp -d" - patch to make src/sripts/bsdinst.sh handle multiple files * patch to add "[]" after delete where ever purify wants it, submitted by Roy M. Lecates of Fore Systems. * explicit definition of FloatCoord (same as the default Coord) in src/include/InterViews/coord.h March 19th 1999 ivtools-0.7.5 Drawing Editor Changes * re-center rasters imported from a URL as soon as the width and height are known. * fully animate move/scale/stretch/rotate tools. Can be disabled with -opaque_off or -opoff given to drawtool or any derivative editor. Interpreter Changes * add an import command to comdraw, which for now takes a raster URL and imports it into the drawing editor. To try it out, run ivtools flipbook, enable auto-new-frame (under the View menu), then enter something like the following into stdin: for(x=1 x<5 x++ :body import(print("http://www.vectaport.com/ivtools/aaron-%d.gif" x :string))) Library Changes -- OS -- * make the offset for String::contains apply to the internal string. Didn't make much sense applied to the first argument. -- IV-2_6 -- * add a ClassId system to all the classes derived from Rubberband, for use of the OpaqueDragManip described below. -- ComTerp -- * add short and ushort output to ComValue ostream operator. -- OverlayUnidraw -- * fixed a bug in OvImportCmd where imports via ACE were getting treated like URL imports for asynchronous incremental download (because the is_url flag was set). * migrate OvImportCmd::is_url to be a method that computes its value from a pathname, instead of needing to be set and cleared. * in OvImportCmd, separate out the code fragment for centering a newly imported component, snapping to grid if gravity on: static void OvImportCmd::center_import(Editor*, GraphicComp*) then use it to re-center a raster being imported from a URL as soon as the width and height are known. * create OpaqueDragManip (OverlayUnidraw/ovmanips.c) to replace the rubberbands with directly visualization of graphical transformations (move/scale/stretch/rotate). Care was taken in the creation of OpaqueDragManip, making sure that there was no cumulative error accrued with many small mouse moves, so hopefully you'll never see the graphic jump when you let go of the mouse button. -- FrameUnidraw -- * fixed a bug in FrameViewer::Update, where ::Update was getting erroneously called when a resize was needed (same problem was fixed a short while back in OverlayViewer::Update). Config and Miscellaneous Changes * upgrade the configure script to auto-determine the CPU type, the PWD, the XCONFIGDIR, and the GPLUSPLUSINCLUDEDIR. This greatly simplifies the INSTALL directions. Now the following command is all it should take to build from source on most commercial Unix'es (as long as imake invokes a gcc version of cpp): ./configure;make World;su -c "make install" To do this I had to generate two output files from configure, one to feed the imake process as before (a config/config--gcc.defs generated from config/config.defs.in), and another (config/config.mk) to be directly pulled in by the top-level Makefile (and every other Makefile). * restructure the declaration of make variables for library pathnames in config/local.def (adds a new file, config/makevars.def), so that each library has to be listed only twice, once for the LIB* variable, and once for the DEP* variable. * add support for file: to ParamList::urltest and OpenFileChooser::urltest (this is conditional on finding w3c or curl). * gcc-2.8.1 warnings fixed. * remove a duplicate -I on the src directory when compiling. February 27th 1999 ivtools-0.7.4 Drawing Editor Changes * make use of the X Shared Memory extensions for raster display. * implement asynchronous download and incremental display of color images from a URL. To test, make a local copy of http://www.vectaport.com/ivtools/anteaters.drs, and open it with ivtools drawtool. Watch while the rasters within this drawing are downloaded from various web servers. Before its finished you can pan or zoom the drawing, and move or draw any graphic (including the partially downloaded rasters). Then you can Undo all your changes to get back to a fully-loaded, unmodified drawing! * add support for Ctrl-K (delete-until-end-of-line) to the string editor used throughout ivtools. * add support for pasting the current X Window selection when the middle mouse button is clicked within a string editor. Especially useful for the string editor used within the Open and Import dialog boxes. * add a one-line welcome message to every drawing editor that gives the ivtools version number, identifies the editor, and states how to find more information. * complete support for floating point brush width (line width) in all ivtools drawing editors. New idraw PostScript format version number (12) introduced to facilitate this. Version 11 has been in use since ivtools-0.6.7, and differed from the class Version 10 in only one detail, the addition of "closepath" to the PostScript fragments for circle and ellipse graphics. Version 12 is forward-compatible, in that future versions of idraw will be able to always read it, but for the first time in a long while there is no guarantee of backward compatibility. This has been the design and intent of the idraw version numbering system all along. Ideally what this means is that users of older versions of idraw would see a warning message that explained why a newer format drawing didn't load. Unfortunately pre-existing bugs in idraw (ones that have been fixed since ivtools-0.6.7) cause the warning message to have zero's where version numbers should go and/or cause idraw to segfault when it can't load a newer format. The warning message should work ok for users of idraw from Debian 2.1. For more details see: http://www.vectaport.com/ivtools/faq.html#idrawversions. * The incrementing of the idraw format version number was undertaken to add support for floating point line widths, at the request of Robert S. Maier, the developer of GNU plotutils. This possiblity has not been enabled yet. But to show off the new capability a "Precise Width" was added to the Brush menu of drawtool, etc.. For kicks try something like 10000. * add a check for using the curl download utility, after checking for the w3c download utility, and before trying the native ivdl utility. Interpreter Changes * add a one-line welcome message to every interpreter that gives the ivtools version number, identifies the interpreter, and states how to find more information. Documentation Changes * finalize the embedding of PERCEPS extractable comments in the header files for most of the class libraries: http://friga.mer.utexas.edu/mark/perl/perceps/ * add a -t argument to iclass to generate a tree structured web page of links to HTML class documentation. * create a src/html directory with enough instructions and PERCEPS template files to allow a third party to recreate most of the HTML documentation for ivtools found under: http://www.vectaport.com/ivtools/doc/ ComTerp Framework Changes -- ComTerp -- * make NilFunc that ignores all its arguments, does (almost) nothing except for returning nil on the stack. Bind it to the nil symbol in comterp. * fix problem with undefined commands inside the body of a control command by substituting a NilFunc to execute (while preserving the symbol id associated with the undefined command). * add a _command_symid member variable to ComFuncState, so that this value can be used a NilFunc to report what undefined command is being skipped by returning nil on the stack. * add numeric conversion funcs: char (CharFunc), short (ShortFunc), int (IntFunc), long (LongFunc), float (FloatFunc), double (DoubleFunc). In the future unsigned'ness can be added with keyword arguments, and maybe a boolean func could be defined as well. Glyph Framework Changes -- IV-X11 -- * add support for the SelectionNotify X11 event type. This is what a client receives after it makes a request for the current X selection (i.e. what happens when the middle mouse button gets pressed in something like an xterm). * add a new InputHandler virtual method: InputHandler::selection_notify(const Event&); this gets called whenever a SelectionNotify event arrives at an InputHandler. -- InterViews -- * make a FieldEditor::selection_notify(const Event&) method that in turn delegates the SelectionNotify event to a new FieldStringEditor::do_xselection_paste. * finally (actually this was first), change the FieldStringEditor::press method to call a new FieldStringEditor::do_xselection_request whenever the midddle button is pressed. When that happens the client asks the server to get the current window manager selection from whomever owns it, and assign it to a property on the local window. When this is done a SelectionNotify event gets generated and FieldStringEditor::do_xselection_paste ends up getting called to paste the result into the FieldEditor. Voila! -- glyphs/examples3.1 -- * add most of the InterViews 3.1 glyph example programs in a subdirectory alongside the rest of the glyph examples, except for gl which requires gl.h and punidraw which requires Unidraw. morpher and plot/sendplot need to be debugged. * to run the button2 example you have supply a tif file as the first argument on the command line, or have a copy of jello.tif (from the 3.1 distribution) in your current directory. * create README's for src/glyphs and src/glyphs/examples3.1 * make the morpher example use its own classnames for things in figure.(ch) This is the same process that created IVGlyph/figure.(ch) a long time ago. These could be made to use the same classes, but not worth doing until the morpher example looks more promising. Maybe even the morpher example should be thrown out (again). Unidraw Framework Changes -- OverlayUnidraw -- * change Overlay(s)Comp's interpretation of a duplicate command (DUP_CMD), to duplicate the AttributeList as well if one exists. * change the ::Copy methods of all the comp's in OverlayUnidraw, to replicate the associated AttributeList if there is one. -- GraphUnidraw -- * debug the duplicate (DUP_CMD) command when used on NodeComp's in graphdraw. Turns out the istream constructed NodeComp's did not have the same layout of graphic state as the others. The underlying TextGraphic did not have a Font pointer, for example. This was no problem in rendering, but was a problem for the duplicate command, which invoked a get-extent operation which failed for lack of knowing the font. Fix was to push down gs of the Picture graphic associated with the NodeComp to be in the underlying ellipse and text graphics as well. -- DrawServ -- * rename all the classes in DrawServ to have a "Draw" prefix instead of a "Com" prefix, to alleviate confusion between the ComUnidraw and DrawServ layers. * derive everything in DrawServ from FrameUnidraw. Already DrawServ had been able to handle components from GraphUnidraw without having its mechanisms inherited from GraphUnidraw. This "finishes" the job, making for a multi-frame graph editing framework. Miscellaneous and Config Changes * remove all WishList files. This is now handled outside of the tarfile, some of it on: http://www.vectaport.com/ivtools/help-wanted.html * changes required based on feedback from M. Rasit Eskicioglu at the University of Alberta, as he tried (and succeeded) building ivtools on Solaris 2.6, as well as a few changes based on feedback from Bruno DelFosse at Thompson CSF (Dec Alpha guy). * many improvements to the non-relative installation process (the default), including fixing the generated ivmkmf script. * creation of an uninstall makefile target, which reverses the effect of "make install". Useful for backing out the installation of one version of ivtools before installing another, or before switching modes of installation. * src/include/std renamed to src/include/ivstd, so it makes a little more sense when someone does a non-relative install in /usr/local. * upgrade to gcc-2.8.1 and libstdc++-2.8.1.1, which required some changes: - new src/include/ivstd/signal.h file, to reset NULL to be 0 (instead of ((void*)0). Same trick required in src/include/ivstd/string.h (to avoid new warnings). - add the OS String class to the IV-common library, and extend it so that utils/ivdl could be ported to use it, to avoid any use of libg++ String (libg++ is no longer recommended, at least by the gcc-2.8.1 distribution). - changes to Attribute/paramlist.c and a few others to get rid of new warnings. * upgrade to ACE-4.6, which required some changes: - the register_stdin_handler method on the Reactor is no longer - need to add -UHAVE_ACE to makedepend - more changes required for ivmaps (like #undef CLOSED after -- that'll be in a patch someday. * add a src/tests directory, with the first program useful for demonstrating no Y2K problem in ivtools (y2k/y2ktest.cc). * incorporate COPYRIGHT.proposed as another way of getting comments. * add comtop.tgz directly to the tar file, the tar file for a sample stand alone custom comterp. * fix up the use ivmkmf in conjunction with comtop.tgz, making it work equally well with and without --enable-relative-install supplied to ./configure. * rewrite the definitions of the library makefile variables in config/local.def, so that a conditionally determined macro gets defined first, then each library requires only a single line after that (and a single line for the dependency make variable). Because of the inflexiblity of the C preprocessor this is not so elegant, in that the arguments to the macro have to include the library name without and without the prefix, and one with a -l prefix. But is still only a single line, which is a big improvement. * make use of the UseInstalled preprocessor define to indicate when Makefiles should be generated to use the installed copy. This really only makes sense (or is only currently used) for ivmkmf when --enable-relative-install was not given to ./configure. * adds a historical list of changes to ivtools over the course of version 0.4 * appends to CHANGES-0.5 changes which occurred for 0.5.1 and 0.5.2. This leaves only 0.5.3 and 0.5.4 (and any work prior to 0.4.0) undocumented. * small change found in Debian ivtools-0.7.3-1 changes. January 26th 1999 ivtools-0.7.3 Drawing Editor Changes * add support for CR and ESC to the attribute editing dialog box of any drawing editor. Now CR accepts the contents of the two field editors (when the focus is in one of them) and ESC clears the field editor with current focus. Also the current contents of the field editors is added to the attribute list whenever OK is clicked. * glyphify (grayish 3d look) the "Precise Page" dialog box, which invokes the command to reset the drawing editor page size. * fix the use of the "save by pathname" checkbox on the export dialog box. * change both the export and print dialog boxes so that they don't clobber a command line or pathname that has been entered when you click on the "to command" checkbox or the output format enums/checkboxes. This is done by disabling the auto-update feature (the thing that automatically places a ghostview/idraw/drawtool command line when "to command" is checked) whenever the contents of the field-editor has changed from the default. Utility Changes * add a -d argument to iclass to dump an html file of links to web pages named the same, i.e. Interactor.html or OverlayComp.html. Each class link is followed by a menu of derived classes. See the result when used on ivtools at http://www.vectaport.com/ivtools/doc/classes/derivedclasses.html. Library Changes -- Attribute -- * add a ParamStruct copy constructor. * protect "int AttributeList::add_attr(Attribute*)", because it requires the user to be aware of the return status and free memory if required, and replace it with a public "void AttributeList::add_attribute(Attribute*)". NOTE: This is a less-than 100% backward compatible change to the API of the Attribute library. You may have to switch your code over to the new method, and in the process you might remove a memory leak. * add AttributeList::add_attr methods that take an "int symid". -- ComTerp -- * changes ComTerp/assignfunc.c to use AttributeList::add_attribute instead of the now protected ::add_attr(Attribute*); -- InterViews -- * remove limitation of 1024 command line arguments for any program. Found while running iclass with more than 1024 header files in the command line. -- Unidraw -- * add a ::Width() and ::Height() method to PageGraphic. * change the copyright notices on all the Graphic-related files that were changed back in 1994 to accomodate hide/show/sensitivity and gs/pts/pic compaction. -- UniIdraw -- * add support for floating point line widths to idraw, as requested by Robert S. Maier, the GNU plotutils guy. This is indicated by Version 11 of the idraw format, but a floating point line width can a) be successfully read if incorporated in an older idraw format, and b) can be successfully ignored by older idraw executables (because the istream method for reading an integer can handle floats). This was easy to do, because the object underlying the idraw brush object PSBrush is Brush, and it had always supported a floating point line width. Further plans for Version 11 of idraw format include support for the capstyle and joinstyle of a brush. * fix an egcs revealed problem in the Arrowhead class (UniIdraw/idarrowhead.*), where an Arrowhead& Arrowhead::operator=(Arrowhead&) needed to be defined as well as the existing Graphic& Arrowhead::operator=(Arrowhead&) (Debian bug #30749). This had not been a problem with earlier C++ compilers, because they defaulted to using the assignment operator for Graphic& whenever an assignment operator for Arrowhead& wasn't available. -- OverlayUnidraw -- * remove a mysterious call to OverlayViewer::Update from within OverlayViewer::Update (invoked when _needs_resize is true). * change the classid macro in OverlayUnidraw/ovcomps.h so that it adds methods ::class_name() and ::class_symid() to any class definition (instead of the previous ::classname() and ::classid(), the latter which had a confusing similarity to the ::ClassId() method on Unidraw components). NOTE: this is a less-than 100% backward compatible change to the OverlayUnidraw API, and may require changes in third-party code that makes use of the macro. * add a call to Observable::notify at the end of OverlayComp::SetAttributeList (something that gets invoked when an attribute editing dialog box gets OK clicked). By default this invokes OverlayComp::update, which calls OverlayComp::Notify, so the ::notify method (used for generic observable/observer notification) quickly gets transmuted into a subject/view sort of Notify/Update. However a derived class can override this (by providing a different ::update method), keeping the two tracks of notify/update separate, which is exactly what happens in NodeComp described below. -- ComUnidraw -- * create ComUnidraw/plotfunc.(ch) to hold BarPlotFunc and the forthcoming LinePlotFunc and ScatPlotFunc. * set up a :newview argument to the barplot func, to make plotting in the current viewer the default behavior. * wrap an OverlayKit::bincheck("plotmtv") around the comterp->add_command for the barplot func. -- GraphUnidraw -- * make each end-node an Observer of each start-node (whenever an edge connects two nodes). Create this observer/observable link in the EdgeConnectCmd, remove it within a GraphDeleteCmd, and restore it after a graphdraw document is newly opened. * use this new observer/observable mechanism between nodes to trigger a dataflow process, where each node recomputes its :value attribute based on a :valexpr attribute when told to ::update itself. Nothing happens if no :valexpr attribute exists. The command that makes up a valexpr assumes in1, in2, etc.. are predefined. The NodeComp::update method goes out and gets these values and builds up a string for ComTerp to evaluate that first sets the values within the interpreter, then executes the :valexpr. The result is place back within a :value attribute. * Here is an example of a graphdraw document with embedded dataflow. The executable script (the :valexpr) with each of the three computational nodes represent the AND, OR, and NOT operators of 4-value Null Convention Logic, 4NCL (http://www.theseus.com): graphdraw(5,5 gs( :fillbg 1 :brush 65535,0 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :font "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*","Helvetica",12 :graypat 1), gs( :fillbg 1 :brush 65535,0 :fgcolor "Black",0,0,0 :bgcolor "White",1,1,1 :graypat 0), node( :reqlabel 1 :ellipse 300,458,35,20 :ellipsetrans 1,0,0,1,15,36 :text 12,"NOT" :texttrans 1,0,0,1,302.5,487 :gs 0 :valexpr "if(in1=='I'||in1=='N' :then in1 :else !in1) /* NOT */" :val N), node( :reqlabel 1 :ellipse 300,458,35,20 :ellipsetrans 1,0,0,1,-102,-33 :text 12,"AND" :texttrans 1,0,0,1,185,418 :gs 0 :valexpr "if(in1=='I'||in2=='I' :then 'I' :else if(in1=='N'||in2=='N' :then if(in1=='N'&&in2=='N' :then 'N' :else 'I') :else in1&&in2)) /* OR */" :val 'N'), node( :reqlabel 1 :ellipse 300,458,35,20 :ellipsetrans 1,0,0,1,151,-34 :text 12,"OR" :texttrans 1,0,0,1,442.5,418 :gs 0 :transform 1,0,0,1,0,1 :valexpr "if(in1=='I'||in2=='I' :then 'I' :else if(in1=='N'||in2=='N' :then if(in1=='N'&&in2=='N' :then 'N' :else 'I') :else in1||in2)) /* OR */" :val 'N'), node( :reqlabel 0 :ellipse 178,503,35,20 :ellipsetrans 1,0,0,1,-118,-3 :text 16,"" :texttrans 1,0,0,1,60,485 :gs 0 :val 'N'), node( :reqlabel 0 :ellipse 172,341,35,20 :ellipsetrans 1,0,0,1,-116,15 :text 16,"" :texttrans 1,0,0,1,56,341 :gs 0 :val 'N'), edge(85,486,173,439 :arrowscale 1.5 :tail :startnode 3 :endnode 1 :gs 1), edge(82,369,172,412 :arrowscale 1.5 :tail :startnode 4 :endnode 1 :gs 1), edge(222,439,291,480 :arrowscale 1.5 :tail :startnode 1 :endnode 0 :gs 1), edge(341,481,425,438 :arrowscale 1.5 :tail :startnode 0 :endnode 2 :gs 1), edge(233,425,416,424 :arrowscale 1.5 :tail :startnode 1 :endnode 2 :gs 1) ) * add these methods to ease access of other components from an EdgeComp: EdgeComp* EdgeIn(int n) const; // return pointer to nth incoming edge. EdgeComp* EdgeOut(int n) const; // return pointer to nth outgoing edge. EdgeComp* EdgeByDir(int n, boolean out_edge) const; // return pointer to nth edge of given direction. NodeComp* NodeIn(int n) const; // return pointer to node on other side of nth incoming edge. NodeComp* NodeOut(int n) const; // return pointer to node on other side of nth outgoing edge. * add these methods to ease access of other components from an NodeComp: NodeComp* NodeStart() const; // return pointer to start node. NodeComp* NodeEnd() const; // return pointer to end node. Configuration, Documentation, and Miscellaneous Changes * add PERCEPS (http://friga.mer.utexas.edu/mark/perl/perceps/) extractable documentation to the header files of these class libraries: Attribute, ComTerp, OverlayUnidraw, GraphUnidraw. Result can be found at http://www.vectaport.com/ivtools/doc/classes/index.html. * add man pages from iv/src/man/(Dispatch|InterViews|Unidraw) to src/man/man3/. Also put them online at http://www.vectaport.com/ivtools/doc/man3.1/ * add PostScript copy of InterViews 3.1 reference manual. Also put up online at http://www.vectaport.com/ivtools/doc/refman3.1/ * add in PERCEPS class comments with URLs to point to man page from InterViews 3.1 (i.e. href=../man3.1/Border.html) to be embedded in PERCEPS generated web pages, as well as comments with reference manual web page URLs. * add output of attributes when serializing a toplevel FrameUnidrawComp or GraphUnidrawComp. * fix Solaris build problems with OverlayUnidraw/grayraster.c and utils/ivdl, thanks to feedback from Dan DeJohn at Digicomp. * same fixes apply to an Alpha build, given feedback from Bruno Delfosse at Thomson CSF. December 23rd 1998 ivtools-0.7.2 Drawing Editor Changes * enable deferred loading of rasters-by-URL, similar to the deferred loading of PGM/PPM rasters. Tested with the following flipbook document, which brings up the first frame, and loads the subsequent frames only when moved to: flipbook( frame(), frame( raster("http://www.nps.gov/apis/photo1.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo2.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo3.jpg" :transform 1,0,0,1,120.5,271) ), frame( raster("http://www.nps.gov/apis/photo4.jpg" :transform 1,0,0,1,120.5,271) ) ) * set up a continuously-looping slideshow mechanism for flipbook, invoked by a "-slideshow secs" command line argument or a ":slideshow secs" attribute in the flipbook document. At present requires building with ACE (or downloading Linux binaries). Typing "exit" into stdin or Ctrl-Q through the GUI will terminate the show. See this URL for sample on-line slideshows: http://www.vectaport.com/ivtools/slideshows.html * glyphify the precise move/scale/rotate dialog boxes in drawtool/comdraw/flipbook/graphdraw (under the Edit menu). This leaves only the precise page dialog box (under the View menu) left to be glyphified. * test the new comdraw funcs described below with a script like this entered into stdin: for(x=0 x<100 x++ :body ellipse(rand(0,ncols-1),rand(0,nrows-1),rand(20,30),rand(10,20));rotate(rand(1,180));update;colors(rand(1,ncolors) rand(1,ncolors));pattern(rand(1,npatterns))) ** happy random jelly beans ** Interpreter Changes * add rand([minval,maxval]) and srand(seedval) funcs to comterp. * add :string argument to print(fmtstr val) func, to cause the output to be pushed on the stack in the form of a string. * update documentation (both README and man pages) for comterp and comdraw. * add comdraw funcs to return menu sizes: nfonts(), nbrushes(), npatterns(), and ncolors(). * add comdraw funcs to return onscreen extent of canvas in pixels: ncols() and nrows(). * generalize the timeexpr func to take a :sec argument, and include this func in a comterp built with ACE (server mode). Library Changes -- ComTerp -- * generalize the timeoutscript mechanism on the ComterpHandler to take a seconds argument as well (ComTerpHandler::timeoutseconds()). -- IVGlyph -- * add a GFieldEditor::select_all method, to facilitate its use from new precise move/scale/rotate dialog boxes. * extend StrEditDialog to accept an arbitrary extra glyph. * generalize RadioEnumEditor to allow for horizontal layout and no frame. -- OverlayUnidraw -- * set up OvPreciseMoveCmd, OvPreciseScaleCmd, and OvPreciseRotateCmd, to allow for the glyphification of the "Precise" command dialog boxes. * create an OverlayGraphic::new_painter() for use by OverlayUnidraw to slip in an OverlayPainter for the default Graphic Painter (Graphic::_p). It was discovered that every OverlayRasterRect was creating a new OverlayPainter and stuffing it in Graphic::_p, which wasn't a problem, until I tried to defer the loading of rasters-by-URL. This meant that the Painter was engaged in rendering the raster before the final OverlayRasterRect was constructed, which caused the Painter currently being used to be deleted (oops). -- FrameUnidraw -- * create a FrameEditor::InitCommands (invoked by the ::Resize method on the viewer) to initialize the slideshow mechanism. Configuration and Miscellaneous Changes * change the construction of the toolbar glyphs, to use a layout.vflexible with infinite stretchability and 0 shrinkability. This works to make the whole toolbar automatically appear no matter how long, and obviates the need to have a funky constant that guesses how many pixels long the toolbar really is. * switch flipbook from using a Dispatcher based ComTerpIOHandler on stdin to using a Reactor based UnidrawComterpHandler (when built with ACE). This facilitates the use of the timeexpr func in the flipbook slideshow mechanism. In the future the older Dispatcher mechanism could handle the slideshow mechanism as well (since timer objects are supported by the Dispatcher). December 4th 1998 ivtools-0.7.1 Drawing Editor Changes * add support for %s embedding in print and export dialog box command strings. This facilitates the cat'ing of a file to a device (i.e. cat %s >/dev/lp1), and use of utilities like pstoedit (i.e. "pstoedit -f tgif %s /tmp/temp.obj;tgif /tmp/temp.obj") from these dialog boxes. If no %s is found when the "to command" button is checked, the command line is built up the old way, by appending the pathname of the temporary file used for rendering output. So "ghostview" will still work, as well as "ghostview %s". * propagate the stay-on-grid bugfix that was introduced in ivtools-0.7 down to idraw. * recognize and accept the partial idraw format generated by xfig2idraw (idraw already could handle it) * add full URL support for black-and-white JPEG's and GIF's (color and graylevel were already handled). Interpreter Changes * fix :abs argument on flipbook moveframe func. Now on a four-frame flipbook these work equally as well: for(i=0 i<100 i++ :body for(j=0 j<4 j++ :body moveframe(1);update);moveframe(-3);update) *and* for(i=0 i<100 i++ :body for(j=0 j<4 j++ :body moveframe(1);update);moveframe(1 :abs);update) * complete the iueserv example program, a derived comterp that links against the Image Understanding Environment (http://www.aai.com/AAI/IUE/IUE.html). Now the following command string works to process an image and export it to a drawing editor: export(conncomp(threshold(image("test.pgm") 150)) "localhost" 20001) Library Changes -- ComTerp -- * fix bug in post-evaluation handling of keyword arguments with no associated values. See flipbook example above. -- Unidraw -- * second attempt to fix the interaction of the Modified (dirty) state variable and the New command. This time, when ModifStatusVar::SetComponent is called, a check is made to ensure the new component is actually different than the old component before clearing the modified flag. Configuration and Miscellaneous Changes * remove conflicting include of memory.h that impacted a Solaris build in these file: Attribute/attrvalue.c, IV-2_6/textbuffer.c, and IV-2_6/texteditor.c. * add back the need for XCONFIGDIR for "make World" in the INSTALL file. * expand the Acknowledgements section of the README. * incorporate changes suggested by Debian ivtools-0.6.7-4 (the last packaging for the slink release of Debian). * rename scripts/install.sh to scripts/install-sh, to avoid a make rule that would automatically create a confusing (to make) install file. November 12th 1998 ivtools-0.7 Drawing Editor Changes * ivtools drawtool (and every drawing editor that inherits the same mechanism) can now import or open a wide variety of graphics file by URL. This is done with a separate ivtools executable, ivdl, written by Eric Kahler, which makes a straightforward attempt to connect to any http or ftp server and download the requested file. Any error messsages are printed to stderr. This means that ivtools now supports hyper-structured-graphics, as defined (invented?) by William Chia-Wei Cheng, the author of Tgif: http://bourbon.cs.umd.edu:8001/tgif/hgviewer.html To try it out, acquire or build a copy of ivtools drawtool, and launch it on this URL: http://www.vectaport.com/ivtools/anteaters.drs * In addition to URL support, ivtools drawtool supports launching or importing (to an import port if built with ACE) on any JPEG, GIF, TIFF, or pbmplus image file, any idraw format PostScript, and non-raster portions of any arbitrary PostScript file. These capabilities require the use of the following executables distributed separately from ivtools: djpeg, giftopnm, tifftopnm, pstoedit. * ivtools drawtool supports launching or importing of any graphic file compressed by gzip or compress as well. * The "auto-convert" check-box on the import dialog box has been removed (by default). This feature is still available for use in custom applications, or the same effect can be had by entering an "anytopnm" command line into the import dialog box, and selecting the "from command" checkbox before hitting the Import button. * this release fixes a very old stay-on-grid-when-zooming problem in drawtool. The changes ended up being very minor, and will be propogated to idraw by ivtools-0.7.1, but for now they exist only in drawtool to facilitate independent verification that the problem is gone. This might have been one of the inadvertent reasons why Fresco went to all floating-point coordinates. In the Unidraw graphics library, the graphics are all rendered in integers (collected from the screen coordinates of the original drawing events), then mapped to a floating point drawing coordinate system with a floating point affine transform. There was an unsolved problem with this strategy, and you can reproduce it in idraw with these steps: 0) turn on the grid (?) and gravity (,) 1) zoom in once 2) pan left once (while at 2x magnification) 3) zoom back to 1x magnification 4) draw a rectangle 5) zoom in four times or so -- you'll see rectangle isn't on grid The reason is that the pan at 2x is really the equivalent of a fractional pan at 1x, so when you get back to 1x the grid is no longer on an integer boundary, but halfway between pixels. Of course this is impractical for drawing the grid, so the grid coordinates are rounded before rendering. The same thing is done for the x,y coordinates of the mouse events in Grid::Constrain. The resultant rectangle looks great at 1x, where the rounding effects on the grid display match up with the integer-constrained coordinates that define the rectangle. But as you zoom in, the grid positions are no longer rounded, and you see the error between the actual grid location and the rectangle drawn with gravity on. The fix was to simply ensure that the transformer used to construct a graphic when gravity is on would always produce integerized drawing coordinates, by rounding the last two arguments of the affine transform used to map from screen coordinates to drawing coordinates. This counters for the necessary rounding effect when x,y events are constrained (Grid::Constrain) not to the actual floating point location of the grid, but to the nearest pixel. Try the above directions in an ivtools-0.7 copy of drawtool, and you'll see the problem is gone. Bug reported by Larry Larson and others. Server Changes * a new server, iueserv, was set up to begin experimenting with the packaging of the extensive capability of the Image Understanding Environment class libraries into the command language of comterp. The IUE is available from: http://www.aai.com/AAI/IUE/IUE.html --with-iue and --with-iue-libs arguments were added to the configure script to facilitate this. See src/iueserv/README for more details. * add affine transform funcs to comterp, to assist in debugging: point=xform(x,y a00,a01,a10,a11,a20,a21) -- affine transform of x,y coordinates affine=invert(a00,a01,a10,a11,a20,a21) -- invert affine transform Utility Changes * incorporate a URL downloading utility written by Eric F. Kahler, now called ivdl, into the src/utils directory. Library Changes -- IVGlyph -- * make changes to the ::accept_editor methods of OpenFileChooser and ImportChooser to recognize a URL and avoid pre-processing it like it was a local pathname. -- Unidraw -- * fix bug where the modified flag on a drawing editor was getting inadvertently cleared when the user does the following: - open and modify a drawing - invoke open again, and say No to saving the drawing - type in the same pathname The result is that the system recognizes the drawing is the same, and does not reload it, but clears the modified flag without ever saving it. This is now fixed. Bug reported by K.C. Ng. -- OverlayUnidraw -- * the majority of work on URL open/import, and compressed image open/import was done in the OvImportCmd. One evolution (from ivtools-0.6.12) was the use of the ::pathname() method to indicate when a file was coming from a file (instead of just a pipe), which would then allow the import command to configure a filtering command to be popen'ed. Without knowing the pathname (or when the pathname was an URL or "-"), there was a need to use double-fork/double-pipe architecture, with the child reading the source and writing to the grandchild, and the grandchild exec'ing the filter, causing the result to be written back to the original process. * support for GIF and JPEG file formats was extended by extending the RasterOvComp istream constructor to invoke an OvImportCmd to read them in. In this way GIF and JPEG files can be saved/restored by pathname, in the same manner long supported for TIFF and pbmplus raster files. -- GraphUnidraw -- * fix bug in Alter tool (RESHAPE_TOOL) to make it set the modified flag when something is changed. * fix another bug in Alter tool, reported by K.C. Ng, that caused the recreated TextGraphic to have a foreground color with a nil name. * finally, fix old problem with moving more than one arc reported by K.C. Ng as well. The problem occurred when two arcs were selected then moved -- nothing would happen. This had been disabled a long time ago, because there was a solution in place to handle moving one edge (the CreateManipulator pre-selected the nodes on each end of the edge as well), but there had never been a solution for more than one edge at once. The fix was simple, in that it only required a derived MoveTool (GraphMoveTool) with a single derived method of note, ::InterpretManipulator, that checks for a selection list longer than 1, and runs through it to augment the selection with any nodes that lie between selected edges. Config/Build Changes * a new library, AceDispatch, was set up to isolate any use of the ACE library from the InterViews Dispatch library. In this way older executables, like idraw, can run without any reference to ACE shared library. * further work was done to isolate older executables from newer shared libraries. This required #ifdef 0'ing all the OTHER_* make variables defined in config/params.def (OTHER_CCFLAGS, OTHER_CCDEFINES, OTHER_CCINCLUDES, OTHER_CCLDLIBS, OTHER_CCDEPLIBS) and instead defining them within the relevant Imakefile's. For example, src/comterp/Imakefile has these new definitions: OTHER_CCDEFINES = $(ACE_CCDEFINES) OTHER_CCINCLUDES = $(ACE_CCINCLUDES) OTHER_CCLDLIBS = $(ACE_CCLDLIBS) * extraneous arguments were manually trimmed from the configure script generated by autoconf from configure.in. This process needs to be repeated each time autoconf is run until the time someone figures out how to change configure.in to remove the Cygnus-standard options that are not utilized in the ivtools setup. ivtools-doc/ivtools-0.7-COPYRIGHT.txt0000644000076500007650000000320607374262632017770 0ustar scottscott00000000000000/* * Copyright (c) 1999 Vectaport Inc., I.E.T. Inc, R.B. Kissh and Associates * Copyright (c) 1998 Vectaport Inc., R.B. Kissh and Associates, Eric F. Kahler * Copyright (c) 1997 Vectaport Inc., R.B. Kissh and Associates * Copyright (c) 1996 Vectaport Inc., R.B. Kissh and Associates, Cider Press * Copyright (c) 1994, 1995 Vectaport Inc., Cartoactive Systems, Cider Press * Copyright (c) 1991 Silicon Graphics, Inc. * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * related documentation and data files for any purpose is hereby granted * without fee, provided that the above copyright notice appear in all copies * and that both that copyright notice and this permission notice appear in * supporting documentation, and that the names of the copyright holders not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holders * make no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ ivtools-doc/ivtools-0.7-INSTALL.txt0000644000076500007650000002337307374262632017535 0ustar scottscott00000000000000 INSTALL for ivtools-0.7 Instructions for building ivtools-0.7.10 from source: 0. Compilation Environment Tools you will need before you can build (note, if you are attempting to build on Windows NT, look at README.cygwin as well): 0.a. a Unix machine. We know it has been built on Linux, Solaris, Irix, Dec Alpha, HPUX, and SunOS. 0.b. The gcc compiler. Recently we've been building and testing with egcs-1.0.3 and gcc-2.8.1. gcc-2.7.2 will still work, as probably would gcc-2.6.3. You will also need an equivalent copy of libstdc++. The libstdc++ version numbers stay roughly in synch with the gcc version numbers. If you have if you have gcc-2.8.1 you'd want libstdc++-2.8.1, etc.. 0.c. An installed copy of X11R6 as distributed by the Open Group, or an equivalent (XFree86 for Linux, or X11R5 from MIT). If you use a vendor's X11 product, the product should be based on X11R4 or later and the product should include imake and the config files. If you can't find imake on your system, you can get the sources for imake from the X11R5 or X11R6 distribution at several public ftp archives (such as ftp.x.org). ** warning -- imake used in combination with a non-GNU C preprocessor ** can be troublesome (i.e. the default one delivered with Solaris or ** DEC Alpha). You'll want to rig your PATH environment variable to ** find the gcc variant of cpp. Read more about it at ** http://www.vectaport.com/ivtools/faq.html#imakecppprob 0.d. You also might want to acquire and build clippoly, a LGPLed library for polygon clipping from: http://www.ph.tn.tudelft.nl/People/klamer/clippoly_entry.html Add -fPIC to the CCFLAGS in the Makefile, then do a make, then build a shared library in the clippoly directory with: "gcc -shared -o libclippoly.so *.o" (you can leave out test.o if you want). i0.e. You also might want to acquire and build ACE, a C++ middleware toolkit available from: http://www.cs.wustl.edu/%7Eschmidt/ACE.html We currently use ACE-4.6. You may have to add some of the #define's listed in the ACE_wrappers/ace/README file to ACE_wrappers/ace/config.h, to alleviate warnings of undefined functions. For example, on Linux RedHat 4.1 we had to add: #define ACE_LACKS_READIR_R You may also want to avoid building with thread support if you have any problems with using ACE. ivtools makes no use of ACE threads capability. gcc-2.8.1 and egcs-1.0.2 or greater are needed for ACE-4.5 or greater. Ensure -fPIC is used when compiling. If you are building with gcc-2.7.2.* or earlier, you'll want to use ACE-4.2 instead of the latest version of ACE. You can still get a copy at http://www.vectaport.com/pub/src/ACE-4.2.tar.gz. You may want to apply this patch: http://www.vectaport.com/pub/src/ace4.2warnpatch. 0.f if you want to build the ivxt example program, which demonstrates the embedding of a ivtools drawing editor inside Motif widgets, you'll need some version of lesstif or Motif (libXm). To enable the ivxt build change line 7 of src/Imakefile from "#if 0" to "#if 1".Without these libraries and include files the build of ivxt will fail, which can be safely ignored. 0.g Finally, you might have an interest in building the IueServ library and iueserv program, a networked command interpreter wrapped around the class libraries of the Image Understanding Environment. See http://www.aai.com/AAI/IUE/IUE.html for details on acquiring and building this sizeable collection of public-domain and free software class libraries for image understanding application development. 1. Configuring ivtools: 1.a. You no longer need to set your CPU environment variable to build ivtools, but you still need a CPU specific configuration file. Ready-made configurations that have been known to work exist for LINUX, SUN4 (and Solaris), SGI, HP800 (HPUX), ALPHA, and now CYGWIN (for Windows NT). Use "make CPU" from the top directory to see the symbol ivtools will use for your OS (grep config/arch.def for ArchitectureName to get a complete list of possible OS'es). Then look for a matching config/site.def. file, where is the value returned by "make CPU". If it is there proceed to step 1.b. Other variants of Unix can be attempted by creating the corresponding config/site.def., i.e. site.def.AIX or site.def.MIPS. Use SUN4 for Solaris as well as SunOS. Although SUN5 would be more correct, the config files automatically determine the difference between the two OS'es by checking for SVR4'ness. 1.b Run the configure script in the top-level directory, by entering "./configure" followed by any of the following arguments (--with arguments are recognized as --enable as well): --with-ace= Path to ACE source --with-ace-libs= Path to ACE libraries --with-clippoly= Path to clippoly source --with-clippoly-libs= Path to clippoly libraries --with-iue= Path to IUE source --with-iue-libs= Path to IUE libraries --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR --enable-install-relative[=ARG] install relative to source tree --prefix=DIR to use when install-relative false (default is /usr/local) --enable-use-rpath[=ARG] use -rpath when linking ARG can be 0 or 1, default is 1 when not specified. The configure script is usually able to automatically determine --x-includes and --x-libraries (except on DEC Alpha). If the arguments for ACE, clippoly, or IUE are not supplied, the configure script prints a reminder, then proceeds to set up to build ivtools without these libraries. Here is an example of using the configure script with ACE and clippoly libraries: ./configure --with-clippoly=/proj/clippoly --with-ace=/proj/ACE_wrappers Running the configure script generates two files, a config/config.mk that gets included into each Makefile when used, and a config/config--gcc.defs that gets used by "make Makefiles" described below. is something like linux. The last line of output from the configure script shows this pathname. Verify that this is the same as the file included at the end of the config/site.def. file. Change the site.def. file if necessary. Also you may want to review the rest of the entries in the site.def. file to see if they are good defaults for your system. Some of these, like UseRpath and InstallRelative, are overridden in the config/config--gcc.defs file, so their value in config/site.def. has no affect. ** See http://www.vectaport.com/ivtools/faq.html for more info. 2. Compiling ivtools: 2.a. cd to the ivtools-0.7/ directory (you'd already be in this directory after running the configure script). 2.b. Compile it with a "make World" command. This command: - regenerates the top-level Makefile to snap it to the current directory ("make Makefile"). - runs through the source tree and generates all the other Makefile's ("make Makefiles"). - generates compilation dependencies for each directory with code to compile -- see the Makefile.depend file in each sub-directory ("make depend"). - compiles and links everything ("make -k"). If you have any trouble at this stage take a look at: http://www.vectaport.com/ivtools/faq.html#SourceBuild ** The "make World" should no longer need any other command line ** options, since these are generated by the configure script and ** pulled in by the top-level Makefile. If you have problems and you ** suspect this evolution, verify that the definition of XCONFIGDIR ** and ABSTOP in config/config.mk are accurate (ABSTOP should be set ** to the top-level directory of the ivtools source tree). 3. Testing: Each directory under ivtools-0.7/src that begins in lower case (except for "include" and "scripts") contains executables that exercise some particular functionality. "cd" to each particular directory, type "/a.out" and see what happens (the utils directory contains more than one executable, things named other than a.out). Quite a few directories have README's that go into further detail on how to use the programs. ivtools-0.7/src/glyphs contains sub-directories of glyph example programs. ivtools-0.7/src/glyphs/examples3.1 contains most of the simple example programs that were originally distributed with InterViews 3.1. There is also a src/tests directory, with one test program to date, y2k/y2ktest.c. This builds a small program that verifies the Date object of the Time class library has no problem with Y2K or Y2.038K, by allowing the user to enter "+" and "-" to increment/decrement the year past these boundaries. 4. Installation: "make install" is supported for all the libraries and a subset of the more utilitarian example programs: the four original InterViews programs (idraw, iclass, idemo, and dclock), the four idraw derived programs (drawtool, netdraw, flipbook, and comdraw) and the two comterp programs (comterp and glyphterp). In addition the scripts in src/scripts and utilities in src/utils get installed. "make uninstall" is supported as well. When relative install is enabled (--enable-install-relative for the configure script), the binaries are installed in ivtools-0.7/bin/, the libraries are installed in ivtools-0.7/lib/, and the run-time X resource and config files are installed in ivtools-0.7/lib/ivtools. When relative install is disabled (the default for the configure script) the binaries are installed as stripped executables in `prefix`/bin the libraries are installed in `prefix`/lib, and the run-time X resource and config files are installed in `prefix`/lib/ivtools. note: idemo, comterp, glyphterp, and comdraw have config files that must be installed (either relative or non-relative) for the program to find them at runtime. drawtool relies on several scripts and utilities for accessing graphics and image files that must be installed as well for them to work. ivtools-doc/ivtools-0.7-MANIFEST.txt0000644000076500007650000020560307374262632017633 0ustar scottscott00000000000000ivtools-0.7/CHANGES ivtools-0.7/CHANGES-0.4 ivtools-0.7/CHANGES-0.5 ivtools-0.7/CHANGES-0.6 ivtools-0.7/COPYRIGHT ivtools-0.7/COPYRIGHT.proposed ivtools-0.7/INSTALL ivtools-0.7/Imakefile ivtools-0.7/MANIFEST ivtools-0.7/MANIFEST.comterp ivtools-0.7/MANIFEST.perceps ivtools-0.7/Makefile ivtools-0.7/README ivtools-0.7/README.cygwin ivtools-0.7/README.ivmkcm ivtools-0.7/VERSION ivtools-0.7/aclocal.m4 ivtools-0.7/comtop.tgz ivtools-0.7/config/Imakefile ivtools-0.7/config/InterViews/Imakefile ivtools-0.7/config/InterViews/Makefile ivtools-0.7/config/InterViews/TIFF.def ivtools-0.7/config/InterViews/arch.def ivtools-0.7/config/InterViews/cxx.def ivtools-0.7/config/InterViews/iv-DGUX.cf ivtools-0.7/config/InterViews/iv-Mips.cf ivtools-0.7/config/InterViews/iv-aix.cf ivtools-0.7/config/InterViews/iv-alpha.cf ivtools-0.7/config/InterViews/iv-apollo.cf ivtools-0.7/config/InterViews/iv-att.cf ivtools-0.7/config/InterViews/iv-bsd.cf ivtools-0.7/config/InterViews/iv-convex.cf ivtools-0.7/config/InterViews/iv-cray.cf ivtools-0.7/config/InterViews/iv-cygwin.cf ivtools-0.7/config/InterViews/iv-generic.cf ivtools-0.7/config/InterViews/iv-hp.cf ivtools-0.7/config/InterViews/iv-ibm.cf ivtools-0.7/config/InterViews/iv-linux.cf ivtools-0.7/config/InterViews/iv-luna.cf ivtools-0.7/config/InterViews/iv-m4330.cf ivtools-0.7/config/InterViews/iv-macII.cf ivtools-0.7/config/InterViews/iv-moto.cf ivtools-0.7/config/InterViews/iv-pegasus.cf ivtools-0.7/config/InterViews/iv-sgi.cf ivtools-0.7/config/InterViews/iv-sony.cf ivtools-0.7/config/InterViews/iv-stellar.cf ivtools-0.7/config/InterViews/iv-stratus.cf ivtools-0.7/config/InterViews/iv-sun.cf ivtools-0.7/config/InterViews/iv-ultrix.cf ivtools-0.7/config/InterViews/iv-x386.cf ivtools-0.7/config/InterViews/local.def ivtools-0.7/config/InterViews/params.def ivtools-0.7/config/InterViews/rules.def ivtools-0.7/config/InterViews/xparams.cf ivtools-0.7/config/Makefile ivtools-0.7/config/alpha3.0-gcc.mk ivtools-0.7/config/alpha3.2-gcc.mk ivtools-0.7/config/alpha4-gcc.mk ivtools-0.7/config/arch.def ivtools-0.7/config/config.defs.in ivtools-0.7/config/config.null.mk ivtools-0.7/config/default-gcc.mk ivtools-0.7/config/freebsd2.1-gcc.mk ivtools-0.7/config/gcc.def ivtools-0.7/config/hpux-gcc.mk ivtools-0.7/config/hpux10.20-gcc.mk ivtools-0.7/config/irix5-gcc.mk ivtools-0.7/config/irix6-gcc.mk ivtools-0.7/config/linux-gcc.mk ivtools-0.7/config/local.def ivtools-0.7/config/m88k-sysv3-gcc.mk ivtools-0.7/config/m88k-sysv4-gcc.mk ivtools-0.7/config/makevars.def ivtools-0.7/config/params.def ivtools-0.7/config/rules.def ivtools-0.7/config/sco3.2.4-gcc.mk ivtools-0.7/config/site.def.ALPHA ivtools-0.7/config/site.def.CYGWIN ivtools-0.7/config/site.def.HP800 ivtools-0.7/config/site.def.LINUX ivtools-0.7/config/site.def.SGI ivtools-0.7/config/site.def.SUN4 ivtools-0.7/config/solaris-gcc.mk ivtools-0.7/config/sunos4-gcc.mk ivtools-0.7/config/template ivtools-0.7/configure ivtools-0.7/configure.in ivtools-0.7/configure.notes ivtools-0.7/src/AceDispatch/Imakefile ivtools-0.7/src/AceDispatch/Makefile ivtools-0.7/src/AceDispatch/ace_dispatcher.c ivtools-0.7/src/AceDispatch/ace_dispatcher.h ivtools-0.7/src/AceDispatch/ace_iohandler.c ivtools-0.7/src/AceDispatch/ace_iohandler.h ivtools-0.7/src/AttrGlyph/Imakefile ivtools-0.7/src/AttrGlyph/Makefile ivtools-0.7/src/AttrGlyph/attredit.c ivtools-0.7/src/AttrGlyph/attredit.h ivtools-0.7/src/Attribute/Imakefile ivtools-0.7/src/Attribute/Makefile ivtools-0.7/src/Attribute/_comterp.h ivtools-0.7/src/Attribute/_comutil.h ivtools-0.7/src/Attribute/alist.c ivtools-0.7/src/Attribute/alist.h ivtools-0.7/src/Attribute/aliterator.c ivtools-0.7/src/Attribute/aliterator.h ivtools-0.7/src/Attribute/attribute.c ivtools-0.7/src/Attribute/attribute.h ivtools-0.7/src/Attribute/attrlist.c ivtools-0.7/src/Attribute/attrlist.h ivtools-0.7/src/Attribute/attrvalue.c ivtools-0.7/src/Attribute/attrvalue.h ivtools-0.7/src/Attribute/commodule.c ivtools-0.7/src/Attribute/commodule.h ivtools-0.7/src/Attribute/lexscan.c ivtools-0.7/src/Attribute/lexscan.h ivtools-0.7/src/Attribute/paramlist.c ivtools-0.7/src/Attribute/paramlist.h ivtools-0.7/src/ComGlyph/Imakefile ivtools-0.7/src/ComGlyph/Makefile ivtools-0.7/src/ComGlyph/attrdialog.c ivtools-0.7/src/ComGlyph/attrdialog.h ivtools-0.7/src/ComGlyph/terpdialog.c ivtools-0.7/src/ComGlyph/terpdialog.h ivtools-0.7/src/ComTerp/Imakefile ivtools-0.7/src/ComTerp/Makefile ivtools-0.7/src/ComTerp/_comterp.h ivtools-0.7/src/ComTerp/_comutil.h ivtools-0.7/src/ComTerp/assignfunc.c ivtools-0.7/src/ComTerp/assignfunc.h ivtools-0.7/src/ComTerp/boolfunc.c ivtools-0.7/src/ComTerp/boolfunc.h ivtools-0.7/src/ComTerp/comfunc.c ivtools-0.7/src/ComTerp/comfunc.h ivtools-0.7/src/ComTerp/comhandler.c ivtools-0.7/src/ComTerp/comhandler.h ivtools-0.7/src/ComTerp/commodule.h ivtools-0.7/src/ComTerp/comterp.c ivtools-0.7/src/ComTerp/comterp.h ivtools-0.7/src/ComTerp/comterpserv.c ivtools-0.7/src/ComTerp/comterpserv.h ivtools-0.7/src/ComTerp/comvalue.c ivtools-0.7/src/ComTerp/comvalue.h ivtools-0.7/src/ComTerp/condfunc.c ivtools-0.7/src/ComTerp/condfunc.h ivtools-0.7/src/ComTerp/ctrlfunc.c ivtools-0.7/src/ComTerp/ctrlfunc.h ivtools-0.7/src/ComTerp/helpfunc.c ivtools-0.7/src/ComTerp/helpfunc.h ivtools-0.7/src/ComTerp/iofunc.c ivtools-0.7/src/ComTerp/iofunc.h ivtools-0.7/src/ComTerp/lexscan.h ivtools-0.7/src/ComTerp/listfunc.c ivtools-0.7/src/ComTerp/listfunc.h ivtools-0.7/src/ComTerp/mathfunc.c ivtools-0.7/src/ComTerp/mathfunc.h ivtools-0.7/src/ComTerp/numfunc.c ivtools-0.7/src/ComTerp/numfunc.h ivtools-0.7/src/ComTerp/parser.c ivtools-0.7/src/ComTerp/parser.h ivtools-0.7/src/ComTerp/postfunc.c ivtools-0.7/src/ComTerp/postfunc.h ivtools-0.7/src/ComTerp/randfunc.c ivtools-0.7/src/ComTerp/randfunc.h ivtools-0.7/src/ComTerp/scanner.c ivtools-0.7/src/ComTerp/scanner.h ivtools-0.7/src/ComTerp/statfunc.c ivtools-0.7/src/ComTerp/statfunc.h ivtools-0.7/src/ComTerp/strmfunc.c ivtools-0.7/src/ComTerp/strmfunc.h ivtools-0.7/src/ComTerp/xformfunc.c ivtools-0.7/src/ComTerp/xformfunc.h ivtools-0.7/src/ComUnidraw/Imakefile ivtools-0.7/src/ComUnidraw/Makefile ivtools-0.7/src/ComUnidraw/comeditor.c ivtools-0.7/src/ComUnidraw/comeditor.h ivtools-0.7/src/ComUnidraw/comterp-acehandler.c ivtools-0.7/src/ComUnidraw/comterp-acehandler.h ivtools-0.7/src/ComUnidraw/comterp-iohandler.c ivtools-0.7/src/ComUnidraw/comterp-iohandler.h ivtools-0.7/src/ComUnidraw/grfunc.c ivtools-0.7/src/ComUnidraw/grfunc.h ivtools-0.7/src/ComUnidraw/nfunc.c ivtools-0.7/src/ComUnidraw/nfunc.h ivtools-0.7/src/ComUnidraw/plotfunc.c ivtools-0.7/src/ComUnidraw/plotfunc.h ivtools-0.7/src/ComUnidraw/unifunc.c ivtools-0.7/src/ComUnidraw/unifunc.h ivtools-0.7/src/ComUtil/Imakefile ivtools-0.7/src/ComUtil/Makefile ivtools-0.7/src/ComUtil/_lexscan.c ivtools-0.7/src/ComUtil/_parser.c ivtools-0.7/src/ComUtil/_scanner.c ivtools-0.7/src/ComUtil/atox.c ivtools-0.7/src/ComUtil/comerr.c ivtools-0.7/src/ComUtil/comterp.arg ivtools-0.7/src/ComUtil/comterp.ci ivtools-0.7/src/ComUtil/comterp.err ivtools-0.7/src/ComUtil/comterp.h ivtools-0.7/src/ComUtil/comutil.arg ivtools-0.7/src/ComUtil/comutil.ci ivtools-0.7/src/ComUtil/comutil.h ivtools-0.7/src/ComUtil/dmm.c ivtools-0.7/src/ComUtil/errfile.c ivtools-0.7/src/ComUtil/errsys.c ivtools-0.7/src/ComUtil/funcptrs.c ivtools-0.7/src/ComUtil/mblock.c ivtools-0.7/src/ComUtil/optable.c ivtools-0.7/src/ComUtil/symbols.c ivtools-0.7/src/ComUtil/txtutil.c ivtools-0.7/src/ComUtil/types.c ivtools-0.7/src/ComUtil/util.c ivtools-0.7/src/ComUtil/util.h ivtools-0.7/src/ComUtil/xdll.c ivtools-0.7/src/Dispatch/Imakefile ivtools-0.7/src/Dispatch/Makefile ivtools-0.7/src/Dispatch/dispatcher.c ivtools-0.7/src/Dispatch/iohandler.c ivtools-0.7/src/Dispatch/iostreamb.c ivtools-0.7/src/Dispatch/netinet_in.h ivtools-0.7/src/Dispatch/rpcbuf.c ivtools-0.7/src/Dispatch/rpchdr.c ivtools-0.7/src/Dispatch/rpcpeer.c ivtools-0.7/src/Dispatch/rpcreader.c ivtools-0.7/src/Dispatch/rpcregistry.c ivtools-0.7/src/Dispatch/rpcservice.c ivtools-0.7/src/Dispatch/rpcstream.c ivtools-0.7/src/Dispatch/rpcwriter.c ivtools-0.7/src/DrawServ/Imakefile ivtools-0.7/src/DrawServ/Makefile ivtools-0.7/src/DrawServ/drawcatalog.c ivtools-0.7/src/DrawServ/drawcatalog.h ivtools-0.7/src/DrawServ/drawclasses.h ivtools-0.7/src/DrawServ/drawcomps.c ivtools-0.7/src/DrawServ/drawcomps.h ivtools-0.7/src/DrawServ/drawcreator.c ivtools-0.7/src/DrawServ/drawcreator.h ivtools-0.7/src/DrawServ/drawkit.c ivtools-0.7/src/DrawServ/drawkit.h ivtools-0.7/src/DrawServ/drawviews.c ivtools-0.7/src/DrawServ/drawviews.h ivtools-0.7/src/FrameUnidraw/Imakefile ivtools-0.7/src/FrameUnidraw/Makefile ivtools-0.7/src/FrameUnidraw/framecatalog.c ivtools-0.7/src/FrameUnidraw/framecatalog.h ivtools-0.7/src/FrameUnidraw/frameclasses.h ivtools-0.7/src/FrameUnidraw/framecmds.c ivtools-0.7/src/FrameUnidraw/framecmds.h ivtools-0.7/src/FrameUnidraw/framecomps.c ivtools-0.7/src/FrameUnidraw/framecomps.h ivtools-0.7/src/FrameUnidraw/framecreator.c ivtools-0.7/src/FrameUnidraw/framecreator.h ivtools-0.7/src/FrameUnidraw/frameeditor.c ivtools-0.7/src/FrameUnidraw/frameeditor.h ivtools-0.7/src/FrameUnidraw/framefile.c ivtools-0.7/src/FrameUnidraw/framefile.h ivtools-0.7/src/FrameUnidraw/framefunc.c ivtools-0.7/src/FrameUnidraw/framefunc.h ivtools-0.7/src/FrameUnidraw/framekit.c ivtools-0.7/src/FrameUnidraw/framekit.h ivtools-0.7/src/FrameUnidraw/frameps.c ivtools-0.7/src/FrameUnidraw/frameps.h ivtools-0.7/src/FrameUnidraw/framescripts.c ivtools-0.7/src/FrameUnidraw/framescripts.h ivtools-0.7/src/FrameUnidraw/framestates.c ivtools-0.7/src/FrameUnidraw/framestates.h ivtools-0.7/src/FrameUnidraw/frameviewer.c ivtools-0.7/src/FrameUnidraw/frameviewer.h ivtools-0.7/src/FrameUnidraw/frameviews.c ivtools-0.7/src/FrameUnidraw/frameviews.h ivtools-0.7/src/GraphUnidraw/Imakefile ivtools-0.7/src/GraphUnidraw/Makefile ivtools-0.7/src/GraphUnidraw/edgecomp.c ivtools-0.7/src/GraphUnidraw/edgecomp.h ivtools-0.7/src/GraphUnidraw/graphcatalog.c ivtools-0.7/src/GraphUnidraw/graphcatalog.h ivtools-0.7/src/GraphUnidraw/graphclasses.h ivtools-0.7/src/GraphUnidraw/graphcmds.c ivtools-0.7/src/GraphUnidraw/graphcmds.h ivtools-0.7/src/GraphUnidraw/graphcomp.c ivtools-0.7/src/GraphUnidraw/graphcomp.h ivtools-0.7/src/GraphUnidraw/graphcreator.c ivtools-0.7/src/GraphUnidraw/graphcreator.h ivtools-0.7/src/GraphUnidraw/graphdata.c ivtools-0.7/src/GraphUnidraw/graphdata.h ivtools-0.7/src/GraphUnidraw/graphdialog.c ivtools-0.7/src/GraphUnidraw/graphdialog.h ivtools-0.7/src/GraphUnidraw/grapheditor.c ivtools-0.7/src/GraphUnidraw/grapheditor.h ivtools-0.7/src/GraphUnidraw/graphimport.c ivtools-0.7/src/GraphUnidraw/graphimport.h ivtools-0.7/src/GraphUnidraw/graphkit.c ivtools-0.7/src/GraphUnidraw/graphkit.h ivtools-0.7/src/GraphUnidraw/graphtools.c ivtools-0.7/src/GraphUnidraw/graphtools.h ivtools-0.7/src/GraphUnidraw/nodecomp.c ivtools-0.7/src/GraphUnidraw/nodecomp.h ivtools-0.7/src/IV-2_6/Imakefile ivtools-0.7/src/IV-2_6/Makefile ivtools-0.7/src/IV-2_6/adjuster2_6.c ivtools-0.7/src/IV-2_6/banner.c ivtools-0.7/src/IV-2_6/border2_6.c ivtools-0.7/src/IV-2_6/box2_6.c ivtools-0.7/src/IV-2_6/button2_6.c ivtools-0.7/src/IV-2_6/compeditor.c ivtools-0.7/src/IV-2_6/control.c ivtools-0.7/src/IV-2_6/deck2_6.c ivtools-0.7/src/IV-2_6/dialog2_6.c ivtools-0.7/src/IV-2_6/filebrowser.c ivtools-0.7/src/IV-2_6/filechooser.c ivtools-0.7/src/IV-2_6/frame.c ivtools-0.7/src/IV-2_6/glue2_6.c ivtools-0.7/src/IV-2_6/interactor.c ivtools-0.7/src/IV-2_6/matcheditor.c ivtools-0.7/src/IV-2_6/menu2_6.c ivtools-0.7/src/IV-2_6/message.c ivtools-0.7/src/IV-2_6/painter.c ivtools-0.7/src/IV-2_6/panner2_6.c ivtools-0.7/src/IV-2_6/perspective.c ivtools-0.7/src/IV-2_6/rubband.c ivtools-0.7/src/IV-2_6/rubcurve.c ivtools-0.7/src/IV-2_6/rubgroup.c ivtools-0.7/src/IV-2_6/rubline.c ivtools-0.7/src/IV-2_6/rubrect.c ivtools-0.7/src/IV-2_6/rubverts.c ivtools-0.7/src/IV-2_6/scene.c ivtools-0.7/src/IV-2_6/scrollbar2_6.c ivtools-0.7/src/IV-2_6/scroller2_6.c ivtools-0.7/src/IV-2_6/sensor.c ivtools-0.7/src/IV-2_6/shape.c ivtools-0.7/src/IV-2_6/strbrowser.c ivtools-0.7/src/IV-2_6/strchooser.c ivtools-0.7/src/IV-2_6/streditor.c ivtools-0.7/src/IV-2_6/subject.c ivtools-0.7/src/IV-2_6/textbuffer.c ivtools-0.7/src/IV-2_6/textdisplay.c ivtools-0.7/src/IV-2_6/texteditor.c ivtools-0.7/src/IV-2_6/tform2_6.c ivtools-0.7/src/IV-2_6/tray.c ivtools-0.7/src/IV-2_6/viewport.c ivtools-0.7/src/IV-2_6/world.c ivtools-0.7/src/IV-2_6/xbitmap2_6.c ivtools-0.7/src/IV-2_6/xevent2_6.c ivtools-0.7/src/IV-2_6/xinter.c ivtools-0.7/src/IV-2_6/xpainter.c ivtools-0.7/src/IV-2_6/xpattern.c ivtools-0.7/src/IV-X11/Imakefile ivtools-0.7/src/IV-X11/Makefile ivtools-0.7/src/IV-X11/glcontext.c ivtools-0.7/src/IV-X11/wtable.h ivtools-0.7/src/IV-X11/xbitmap.c ivtools-0.7/src/IV-X11/xbrush.c ivtools-0.7/src/IV-X11/xcanvas.c ivtools-0.7/src/IV-X11/xcolor.c ivtools-0.7/src/IV-X11/xcursor.c ivtools-0.7/src/IV-X11/xdrag.c ivtools-0.7/src/IV-X11/xevent.c ivtools-0.7/src/IV-X11/xfont.c ivtools-0.7/src/IV-X11/xraster.c ivtools-0.7/src/IV-X11/xreqerr.c ivtools-0.7/src/IV-X11/xselection.c ivtools-0.7/src/IV-X11/xwindow.c ivtools-0.7/src/IV-common/Imakefile ivtools-0.7/src/IV-common/Makefile ivtools-0.7/src/IV-common/listimpl.c ivtools-0.7/src/IV-common/math.c ivtools-0.7/src/IV-common/memory.c ivtools-0.7/src/IV-common/regexp.c ivtools-0.7/src/IV-common/resource.c ivtools-0.7/src/IV-common/string.c ivtools-0.7/src/IV-common/textbuffer.c ivtools-0.7/src/IV-common/tform2_6.c ivtools-0.7/src/IV-common/transformer.c ivtools-0.7/src/IV/Imakefile ivtools-0.7/src/IV/InterViews.defaults ivtools-0.7/src/IV/Makefile ivtools-0.7/src/IVGlyph/Imakefile ivtools-0.7/src/IVGlyph/Makefile ivtools-0.7/src/IVGlyph/bdfltform.c ivtools-0.7/src/IVGlyph/bdfltform.h ivtools-0.7/src/IVGlyph/bdtable.c ivtools-0.7/src/IVGlyph/bdtable.h ivtools-0.7/src/IVGlyph/bdvalue.c ivtools-0.7/src/IVGlyph/bdvalue.h ivtools-0.7/src/IVGlyph/boolform.c ivtools-0.7/src/IVGlyph/boolform.h ivtools-0.7/src/IVGlyph/charfield.c ivtools-0.7/src/IVGlyph/charfield.h ivtools-0.7/src/IVGlyph/dragedit.c ivtools-0.7/src/IVGlyph/dragedit.h ivtools-0.7/src/IVGlyph/enumform.c ivtools-0.7/src/IVGlyph/enumform.h ivtools-0.7/src/IVGlyph/exportchooser.c ivtools-0.7/src/IVGlyph/exportchooser.h ivtools-0.7/src/IVGlyph/fieldedit.c ivtools-0.7/src/IVGlyph/fieldedit.h ivtools-0.7/src/IVGlyph/figure.c ivtools-0.7/src/IVGlyph/figure.h ivtools-0.7/src/IVGlyph/gdialogs.c ivtools-0.7/src/IVGlyph/gdialogs.h ivtools-0.7/src/IVGlyph/importchooser.c ivtools-0.7/src/IVGlyph/importchooser.h ivtools-0.7/src/IVGlyph/namestate.c ivtools-0.7/src/IVGlyph/namestate.h ivtools-0.7/src/IVGlyph/observables.c ivtools-0.7/src/IVGlyph/observables.h ivtools-0.7/src/IVGlyph/ofilechooser.c ivtools-0.7/src/IVGlyph/ofilechooser.h ivtools-0.7/src/IVGlyph/printchooser.c ivtools-0.7/src/IVGlyph/printchooser.h ivtools-0.7/src/IVGlyph/saveaschooser.c ivtools-0.7/src/IVGlyph/saveaschooser.h ivtools-0.7/src/IVGlyph/scrollable.c ivtools-0.7/src/IVGlyph/scrollable.h ivtools-0.7/src/IVGlyph/strchooser.c ivtools-0.7/src/IVGlyph/strchooser.h ivtools-0.7/src/IVGlyph/stredit.c ivtools-0.7/src/IVGlyph/stredit.h ivtools-0.7/src/IVGlyph/strlist.c ivtools-0.7/src/IVGlyph/strlist.h ivtools-0.7/src/IVGlyph/textbuff.c ivtools-0.7/src/IVGlyph/textbuff.h ivtools-0.7/src/IVGlyph/textedit.c ivtools-0.7/src/IVGlyph/textedit.h ivtools-0.7/src/IVGlyph/texteditor.c ivtools-0.7/src/IVGlyph/texteditor.h ivtools-0.7/src/IVGlyph/textform.c ivtools-0.7/src/IVGlyph/textform.h ivtools-0.7/src/IVGlyph/textview.c ivtools-0.7/src/IVGlyph/textview.h ivtools-0.7/src/IVGlyph/textwindow.c ivtools-0.7/src/IVGlyph/textwindow.h ivtools-0.7/src/IVGlyph/toolbutton.c ivtools-0.7/src/IVGlyph/toolbutton.h ivtools-0.7/src/IVGlyph/valuator.c ivtools-0.7/src/IVGlyph/valuator.h ivtools-0.7/src/Imakefile ivtools-0.7/src/InterViews/Imakefile ivtools-0.7/src/InterViews/Makefile ivtools-0.7/src/InterViews/action.c ivtools-0.7/src/InterViews/adjust.c ivtools-0.7/src/InterViews/aggr.c ivtools-0.7/src/InterViews/align.c ivtools-0.7/src/InterViews/alloctbl.c ivtools-0.7/src/InterViews/arrcomp.c ivtools-0.7/src/InterViews/background.c ivtools-0.7/src/InterViews/bevel.c ivtools-0.7/src/InterViews/border.c ivtools-0.7/src/InterViews/box.c ivtools-0.7/src/InterViews/browser.c ivtools-0.7/src/InterViews/button.c ivtools-0.7/src/InterViews/character.c ivtools-0.7/src/InterViews/composition.c ivtools-0.7/src/InterViews/compositor.c ivtools-0.7/src/InterViews/debug.c ivtools-0.7/src/InterViews/deck.c ivtools-0.7/src/InterViews/dialogs.c ivtools-0.7/src/InterViews/fbrowser.c ivtools-0.7/src/InterViews/fchooser.c ivtools-0.7/src/InterViews/field.c ivtools-0.7/src/InterViews/geometry.c ivtools-0.7/src/InterViews/glyph.c ivtools-0.7/src/InterViews/group.c ivtools-0.7/src/InterViews/handler.c ivtools-0.7/src/InterViews/hit.c ivtools-0.7/src/InterViews/image.c ivtools-0.7/src/InterViews/input.c ivtools-0.7/src/InterViews/kit.c ivtools-0.7/src/InterViews/label.c ivtools-0.7/src/InterViews/layout.c ivtools-0.7/src/InterViews/lrmarker.c ivtools-0.7/src/InterViews/menu.c ivtools-0.7/src/InterViews/mf_dialogs.c ivtools-0.7/src/InterViews/mf_kit.c ivtools-0.7/src/InterViews/mono_kit.c ivtools-0.7/src/InterViews/monoglyph.c ivtools-0.7/src/InterViews/observe.c ivtools-0.7/src/InterViews/ol_dialogs.c ivtools-0.7/src/InterViews/ol_kit.c ivtools-0.7/src/InterViews/page.c ivtools-0.7/src/InterViews/patch.c ivtools-0.7/src/InterViews/place.c ivtools-0.7/src/InterViews/polyglyph.c ivtools-0.7/src/InterViews/printer.c ivtools-0.7/src/InterViews/psfont.c ivtools-0.7/src/InterViews/regexp.c ivtools-0.7/src/InterViews/resource.c ivtools-0.7/src/InterViews/rule.c ivtools-0.7/src/InterViews/scrbox.c ivtools-0.7/src/InterViews/session.c ivtools-0.7/src/InterViews/shadow.c ivtools-0.7/src/InterViews/simpcomp.c ivtools-0.7/src/InterViews/slider.c ivtools-0.7/src/InterViews/smf_kit.c ivtools-0.7/src/InterViews/stencil.c ivtools-0.7/src/InterViews/stepper.c ivtools-0.7/src/InterViews/style.c ivtools-0.7/src/InterViews/superpose.c ivtools-0.7/src/InterViews/target.c ivtools-0.7/src/InterViews/telltale.c ivtools-0.7/src/InterViews/texcomp.c ivtools-0.7/src/InterViews/tformsetter.c ivtools-0.7/src/InterViews/tiff.c ivtools-0.7/src/InterViews/tile.c ivtools-0.7/src/InterViews/transformer.c ivtools-0.7/src/InterViews/xymarker.c ivtools-0.7/src/IueServ/Imakefile ivtools-0.7/src/IueServ/Makefile ivtools-0.7/src/IueServ/exportfunc.c ivtools-0.7/src/IueServ/exportfunc.h ivtools-0.7/src/IueServ/ipfunc.c ivtools-0.7/src/IueServ/ipfunc.h ivtools-0.7/src/IueServ/iueclasses.h ivtools-0.7/src/IueServ/iuecomps.c ivtools-0.7/src/IueServ/iuecomps.h ivtools-0.7/src/IueServ/iuefunc.c ivtools-0.7/src/IueServ/iuefunc.h ivtools-0.7/src/IueServ/iuehandler.c ivtools-0.7/src/IueServ/iuehandler.h ivtools-0.7/src/IueServ/roifunc.c ivtools-0.7/src/IueServ/roifunc.h ivtools-0.7/src/Makefile ivtools-0.7/src/OS/Imakefile ivtools-0.7/src/OS/Makefile ivtools-0.7/src/OS/directory.c ivtools-0.7/src/OS/file.c ivtools-0.7/src/OS/host.c ivtools-0.7/src/OS/listimpl.c ivtools-0.7/src/OS/math.c ivtools-0.7/src/OS/memory.c ivtools-0.7/src/OS/string.c ivtools-0.7/src/OS/ustring.c ivtools-0.7/src/OverlayUnidraw/Imakefile ivtools-0.7/src/OverlayUnidraw/Makefile ivtools-0.7/src/OverlayUnidraw/aceimport.c ivtools-0.7/src/OverlayUnidraw/aceimport.h ivtools-0.7/src/OverlayUnidraw/algebra3.h ivtools-0.7/src/OverlayUnidraw/annotate.c ivtools-0.7/src/OverlayUnidraw/annotate.h ivtools-0.7/src/OverlayUnidraw/attrtool.c ivtools-0.7/src/OverlayUnidraw/attrtool.h ivtools-0.7/src/OverlayUnidraw/clipline.c ivtools-0.7/src/OverlayUnidraw/clipline.h ivtools-0.7/src/OverlayUnidraw/cliplinepoly.c ivtools-0.7/src/OverlayUnidraw/cliplinepoly.h ivtools-0.7/src/OverlayUnidraw/clippoly.c ivtools-0.7/src/OverlayUnidraw/clippoly.h ivtools-0.7/src/OverlayUnidraw/grayraster.c ivtools-0.7/src/OverlayUnidraw/grayraster.h ivtools-0.7/src/OverlayUnidraw/grloctool.c ivtools-0.7/src/OverlayUnidraw/grloctool.h ivtools-0.7/src/OverlayUnidraw/indexmixins.c ivtools-0.7/src/OverlayUnidraw/indexmixins.h ivtools-0.7/src/OverlayUnidraw/leakchecker.h ivtools-0.7/src/OverlayUnidraw/ovabout.c ivtools-0.7/src/OverlayUnidraw/ovabout.h ivtools-0.7/src/OverlayUnidraw/ovadjuster.c ivtools-0.7/src/OverlayUnidraw/ovadjuster.h ivtools-0.7/src/OverlayUnidraw/ovarrow.c ivtools-0.7/src/OverlayUnidraw/ovarrow.h ivtools-0.7/src/OverlayUnidraw/ovcamcmds.c ivtools-0.7/src/OverlayUnidraw/ovcamcmds.h ivtools-0.7/src/OverlayUnidraw/ovcatalog.c ivtools-0.7/src/OverlayUnidraw/ovcatalog.h ivtools-0.7/src/OverlayUnidraw/ovchainview.c ivtools-0.7/src/OverlayUnidraw/ovchainview.h ivtools-0.7/src/OverlayUnidraw/ovclasses.h ivtools-0.7/src/OverlayUnidraw/ovclip.c ivtools-0.7/src/OverlayUnidraw/ovclip.h ivtools-0.7/src/OverlayUnidraw/ovcmds.c ivtools-0.7/src/OverlayUnidraw/ovcmds.h ivtools-0.7/src/OverlayUnidraw/ovcomps.c ivtools-0.7/src/OverlayUnidraw/ovcomps.h ivtools-0.7/src/OverlayUnidraw/ovcreator.c ivtools-0.7/src/OverlayUnidraw/ovcreator.h ivtools-0.7/src/OverlayUnidraw/ovctrl.c ivtools-0.7/src/OverlayUnidraw/ovctrl.h ivtools-0.7/src/OverlayUnidraw/ovdamage.c ivtools-0.7/src/OverlayUnidraw/ovdamage.h ivtools-0.7/src/OverlayUnidraw/ovdialog.c ivtools-0.7/src/OverlayUnidraw/ovdialog.h ivtools-0.7/src/OverlayUnidraw/ovdoer.c ivtools-0.7/src/OverlayUnidraw/ovdoer.h ivtools-0.7/src/OverlayUnidraw/oved.c ivtools-0.7/src/OverlayUnidraw/oved.h ivtools-0.7/src/OverlayUnidraw/ovellipse.c ivtools-0.7/src/OverlayUnidraw/ovellipse.h ivtools-0.7/src/OverlayUnidraw/ovexport.c ivtools-0.7/src/OverlayUnidraw/ovexport.h ivtools-0.7/src/OverlayUnidraw/ovfile.c ivtools-0.7/src/OverlayUnidraw/ovfile.h ivtools-0.7/src/OverlayUnidraw/ovfixview.c ivtools-0.7/src/OverlayUnidraw/ovfixview.h ivtools-0.7/src/OverlayUnidraw/ovgdialog.c ivtools-0.7/src/OverlayUnidraw/ovgdialog.h ivtools-0.7/src/OverlayUnidraw/ovhull.c ivtools-0.7/src/OverlayUnidraw/ovhull.h ivtools-0.7/src/OverlayUnidraw/ovimport.c ivtools-0.7/src/OverlayUnidraw/ovimport.h ivtools-0.7/src/OverlayUnidraw/ovipcmds.c ivtools-0.7/src/OverlayUnidraw/ovipcmds.h ivtools-0.7/src/OverlayUnidraw/ovkit.c ivtools-0.7/src/OverlayUnidraw/ovkit.h ivtools-0.7/src/OverlayUnidraw/ovline.c ivtools-0.7/src/OverlayUnidraw/ovline.h ivtools-0.7/src/OverlayUnidraw/ovmanips.c ivtools-0.7/src/OverlayUnidraw/ovmanips.h ivtools-0.7/src/OverlayUnidraw/ovpage.c ivtools-0.7/src/OverlayUnidraw/ovpage.h ivtools-0.7/src/OverlayUnidraw/ovpainter.c ivtools-0.7/src/OverlayUnidraw/ovpainter.h ivtools-0.7/src/OverlayUnidraw/ovpanner.c ivtools-0.7/src/OverlayUnidraw/ovpanner.h ivtools-0.7/src/OverlayUnidraw/ovpolygon.c ivtools-0.7/src/OverlayUnidraw/ovpolygon.h ivtools-0.7/src/OverlayUnidraw/ovprecise.c ivtools-0.7/src/OverlayUnidraw/ovprecise.h ivtools-0.7/src/OverlayUnidraw/ovprint.c ivtools-0.7/src/OverlayUnidraw/ovprint.h ivtools-0.7/src/OverlayUnidraw/ovpspict.c ivtools-0.7/src/OverlayUnidraw/ovpspict.h ivtools-0.7/src/OverlayUnidraw/ovpsview.c ivtools-0.7/src/OverlayUnidraw/ovpsview.h ivtools-0.7/src/OverlayUnidraw/ovraster.c ivtools-0.7/src/OverlayUnidraw/ovraster.h ivtools-0.7/src/OverlayUnidraw/ovrect.c ivtools-0.7/src/OverlayUnidraw/ovrect.h ivtools-0.7/src/OverlayUnidraw/ovrestimage.c ivtools-0.7/src/OverlayUnidraw/ovrestimage.h ivtools-0.7/src/OverlayUnidraw/ovselect.c ivtools-0.7/src/OverlayUnidraw/ovselect.h ivtools-0.7/src/OverlayUnidraw/ovselection.c ivtools-0.7/src/OverlayUnidraw/ovselection.h ivtools-0.7/src/OverlayUnidraw/ovshowhide.c ivtools-0.7/src/OverlayUnidraw/ovshowhide.h ivtools-0.7/src/OverlayUnidraw/ovspline.c ivtools-0.7/src/OverlayUnidraw/ovspline.h ivtools-0.7/src/OverlayUnidraw/ovstates.c ivtools-0.7/src/OverlayUnidraw/ovstates.h ivtools-0.7/src/OverlayUnidraw/ovstencil.c ivtools-0.7/src/OverlayUnidraw/ovstencil.h ivtools-0.7/src/OverlayUnidraw/ovtext.c ivtools-0.7/src/OverlayUnidraw/ovtext.h ivtools-0.7/src/OverlayUnidraw/ovunidraw.c ivtools-0.7/src/OverlayUnidraw/ovunidraw.h ivtools-0.7/src/OverlayUnidraw/ovvars.c ivtools-0.7/src/OverlayUnidraw/ovvars.h ivtools-0.7/src/OverlayUnidraw/ovvertices.c ivtools-0.7/src/OverlayUnidraw/ovvertices.h ivtools-0.7/src/OverlayUnidraw/ovviewer.c ivtools-0.7/src/OverlayUnidraw/ovviewer.h ivtools-0.7/src/OverlayUnidraw/ovviews.c ivtools-0.7/src/OverlayUnidraw/ovviews.h ivtools-0.7/src/OverlayUnidraw/paramlist.h ivtools-0.7/src/OverlayUnidraw/phold.h ivtools-0.7/src/OverlayUnidraw/ptinpoly.c ivtools-0.7/src/OverlayUnidraw/ptinpoly.h ivtools-0.7/src/OverlayUnidraw/rastercmds.c ivtools-0.7/src/OverlayUnidraw/rastercmds.h ivtools-0.7/src/OverlayUnidraw/scriptview.c ivtools-0.7/src/OverlayUnidraw/scriptview.h ivtools-0.7/src/OverlayUnidraw/setattrbyexpr.c ivtools-0.7/src/OverlayUnidraw/setattrbyexpr.h ivtools-0.7/src/OverlayUnidraw/slctbyattr.c ivtools-0.7/src/OverlayUnidraw/slctbyattr.h ivtools-0.7/src/OverlayUnidraw/textfile.c ivtools-0.7/src/OverlayUnidraw/textfile.h ivtools-0.7/src/TIFF/Copyright ivtools-0.7/src/TIFF/HOWTO ivtools-0.7/src/TIFF/Imakefile ivtools-0.7/src/TIFF/Makefile ivtools-0.7/src/TIFF/README ivtools-0.7/src/TIFF/VERSION ivtools-0.7/src/TIFF/machdep.h ivtools-0.7/src/TIFF/mkg3states.c ivtools-0.7/src/TIFF/mkspans.c ivtools-0.7/src/TIFF/prototypes.h ivtools-0.7/src/TIFF/t4.h ivtools-0.7/src/TIFF/tif_aux.c ivtools-0.7/src/TIFF/tif_ccittrle.c ivtools-0.7/src/TIFF/tif_close.c ivtools-0.7/src/TIFF/tif_compat.c ivtools-0.7/src/TIFF/tif_compress.c ivtools-0.7/src/TIFF/tif_dir.c ivtools-0.7/src/TIFF/tif_dirinfo.c ivtools-0.7/src/TIFF/tif_dirread.c ivtools-0.7/src/TIFF/tif_dirwrite.c ivtools-0.7/src/TIFF/tif_dumpmode.c ivtools-0.7/src/TIFF/tif_error.c ivtools-0.7/src/TIFF/tif_fax3.c ivtools-0.7/src/TIFF/tif_fax3.h ivtools-0.7/src/TIFF/tif_fax4.c ivtools-0.7/src/TIFF/tif_flush.c ivtools-0.7/src/TIFF/tif_getimage.c ivtools-0.7/src/TIFF/tif_jpeg.c ivtools-0.7/src/TIFF/tif_lzw.c ivtools-0.7/src/TIFF/tif_machdep.c ivtools-0.7/src/TIFF/tif_next.c ivtools-0.7/src/TIFF/tif_open.c ivtools-0.7/src/TIFF/tif_packbits.c ivtools-0.7/src/TIFF/tif_print.c ivtools-0.7/src/TIFF/tif_read.c ivtools-0.7/src/TIFF/tif_strip.c ivtools-0.7/src/TIFF/tif_swab.c ivtools-0.7/src/TIFF/tif_thunder.c ivtools-0.7/src/TIFF/tif_tile.c ivtools-0.7/src/TIFF/tif_version.c ivtools-0.7/src/TIFF/tif_warning.c ivtools-0.7/src/TIFF/tif_write.c ivtools-0.7/src/TIFF/tiffcompat.h ivtools-0.7/src/TIFF/tiffioP.h ivtools-0.7/src/Time/Date.c ivtools-0.7/src/Time/Date.h ivtools-0.7/src/Time/Imakefile ivtools-0.7/src/Time/Makefile ivtools-0.7/src/Time/Time.c ivtools-0.7/src/Time/Time.h ivtools-0.7/src/Time/obstime.c ivtools-0.7/src/Time/obstime.h ivtools-0.7/src/Time/timeglyph.c ivtools-0.7/src/Time/timeglyph.h ivtools-0.7/src/TopoFace/Imakefile ivtools-0.7/src/TopoFace/Makefile ivtools-0.7/src/TopoFace/fgeomobjs.c ivtools-0.7/src/TopoFace/fgeomobjs.h ivtools-0.7/src/TopoFace/topoedge.c ivtools-0.7/src/TopoFace/topoedge.h ivtools-0.7/src/TopoFace/topoedgelist.c ivtools-0.7/src/TopoFace/topoedgelist.h ivtools-0.7/src/TopoFace/topoelt.c ivtools-0.7/src/TopoFace/topoelt.h ivtools-0.7/src/TopoFace/topoface.c ivtools-0.7/src/TopoFace/topoface.h ivtools-0.7/src/TopoFace/toponode.c ivtools-0.7/src/TopoFace/toponode.h ivtools-0.7/src/UniIdraw/Imakefile ivtools-0.7/src/UniIdraw/Makefile ivtools-0.7/src/UniIdraw/idarrow.c ivtools-0.7/src/UniIdraw/idarrow.h ivtools-0.7/src/UniIdraw/idarrowhead.c ivtools-0.7/src/UniIdraw/idarrowhead.h ivtools-0.7/src/UniIdraw/idarrows.c ivtools-0.7/src/UniIdraw/idarrows.h ivtools-0.7/src/UniIdraw/idcatalog.c ivtools-0.7/src/UniIdraw/idcatalog.h ivtools-0.7/src/UniIdraw/idclasses.h ivtools-0.7/src/UniIdraw/idcmds.c ivtools-0.7/src/UniIdraw/idcmds.h ivtools-0.7/src/UniIdraw/idcomp.c ivtools-0.7/src/UniIdraw/idcomp.h ivtools-0.7/src/UniIdraw/idcreator.c ivtools-0.7/src/UniIdraw/idcreator.h ivtools-0.7/src/UniIdraw/iddialogs.c ivtools-0.7/src/UniIdraw/iddialogs.h ivtools-0.7/src/UniIdraw/ided.c ivtools-0.7/src/UniIdraw/ided.h ivtools-0.7/src/UniIdraw/idkybd.c ivtools-0.7/src/UniIdraw/idkybd.h ivtools-0.7/src/UniIdraw/idvars.c ivtools-0.7/src/UniIdraw/idvars.h ivtools-0.7/src/UniIdraw/idversion.h ivtools-0.7/src/Unidraw-common/Imakefile ivtools-0.7/src/Unidraw-common/Makefile ivtools-0.7/src/Unidraw-common/geomobjs.c ivtools-0.7/src/Unidraw-common/iterator.c ivtools-0.7/src/Unidraw-common/ulist.c ivtools-0.7/src/Unidraw/Imakefile ivtools-0.7/src/Unidraw/Makefile ivtools-0.7/src/Unidraw/align.c ivtools-0.7/src/Unidraw/brushcmd.c ivtools-0.7/src/Unidraw/catalog.c ivtools-0.7/src/Unidraw/catcmds.c ivtools-0.7/src/Unidraw/cglue.c ivtools-0.7/src/Unidraw/clipboard.c ivtools-0.7/src/Unidraw/colorcmd.c ivtools-0.7/src/Unidraw/command.c ivtools-0.7/src/Unidraw/component.c ivtools-0.7/src/Unidraw/compview.c ivtools-0.7/src/Unidraw/connect.c ivtools-0.7/src/Unidraw/connector.c ivtools-0.7/src/Unidraw/creator.c ivtools-0.7/src/Unidraw/csolver.c ivtools-0.7/src/Unidraw/ctrlinfo.c ivtools-0.7/src/Unidraw/damage.c ivtools-0.7/src/Unidraw/data.c ivtools-0.7/src/Unidraw/datas.c ivtools-0.7/src/Unidraw/dialogs.c ivtools-0.7/src/Unidraw/edit.c ivtools-0.7/src/Unidraw/editor.c ivtools-0.7/src/Unidraw/editorinfo.c ivtools-0.7/src/Unidraw/ellipse.c ivtools-0.7/src/Unidraw/ellipses.c ivtools-0.7/src/Unidraw/externview.c ivtools-0.7/src/Unidraw/font.c ivtools-0.7/src/Unidraw/geomobjs.c ivtools-0.7/src/Unidraw/globals.c ivtools-0.7/src/Unidraw/graphic.c ivtools-0.7/src/Unidraw/grblock.c ivtools-0.7/src/Unidraw/grcomp.c ivtools-0.7/src/Unidraw/grcomptool.c ivtools-0.7/src/Unidraw/grid.c ivtools-0.7/src/Unidraw/grview.c ivtools-0.7/src/Unidraw/gvupdater.c ivtools-0.7/src/Unidraw/import.c ivtools-0.7/src/Unidraw/iterator.c ivtools-0.7/src/Unidraw/keymap.c ivtools-0.7/src/Unidraw/kybd.c ivtools-0.7/src/Unidraw/line.c ivtools-0.7/src/Unidraw/lines.c ivtools-0.7/src/Unidraw/link.c ivtools-0.7/src/Unidraw/macro.c ivtools-0.7/src/Unidraw/magnify.c ivtools-0.7/src/Unidraw/manip.c ivtools-0.7/src/Unidraw/manips.c ivtools-0.7/src/Unidraw/move.c ivtools-0.7/src/Unidraw/nop.c ivtools-0.7/src/Unidraw/pad.c ivtools-0.7/src/Unidraw/patcmd.c ivtools-0.7/src/Unidraw/path.c ivtools-0.7/src/Unidraw/picture.c ivtools-0.7/src/Unidraw/pin.c ivtools-0.7/src/Unidraw/polygon.c ivtools-0.7/src/Unidraw/polygons.c ivtools-0.7/src/Unidraw/pspaint.c ivtools-0.7/src/Unidraw/psview.c ivtools-0.7/src/Unidraw/rastercomp.c ivtools-0.7/src/Unidraw/rasterrect.c ivtools-0.7/src/Unidraw/rect.c ivtools-0.7/src/Unidraw/reshape.c ivtools-0.7/src/Unidraw/rotate.c ivtools-0.7/src/Unidraw/scale.c ivtools-0.7/src/Unidraw/select.c ivtools-0.7/src/Unidraw/selection.c ivtools-0.7/src/Unidraw/slot.c ivtools-0.7/src/Unidraw/spline.c ivtools-0.7/src/Unidraw/splines.c ivtools-0.7/src/Unidraw/statevar.c ivtools-0.7/src/Unidraw/statevars.c ivtools-0.7/src/Unidraw/stateview.c ivtools-0.7/src/Unidraw/stateviews.c ivtools-0.7/src/Unidraw/stencilcomp.c ivtools-0.7/src/Unidraw/stretch.c ivtools-0.7/src/Unidraw/struct.c ivtools-0.7/src/Unidraw/text.c ivtools-0.7/src/Unidraw/tool.c ivtools-0.7/src/Unidraw/transfn.c ivtools-0.7/src/Unidraw/transfns.c ivtools-0.7/src/Unidraw/transforms.c ivtools-0.7/src/Unidraw/uarray.c ivtools-0.7/src/Unidraw/uctrl.c ivtools-0.7/src/Unidraw/uctrls.c ivtools-0.7/src/Unidraw/uhash.c ivtools-0.7/src/Unidraw/ulabel.c ivtools-0.7/src/Unidraw/ulist.c ivtools-0.7/src/Unidraw/umap.c ivtools-0.7/src/Unidraw/unidraw.c ivtools-0.7/src/Unidraw/upage.c ivtools-0.7/src/Unidraw/ustencil.c ivtools-0.7/src/Unidraw/vertices.c ivtools-0.7/src/Unidraw/verts.c ivtools-0.7/src/Unidraw/viewcmds.c ivtools-0.7/src/Unidraw/viewer.c ivtools-0.7/src/comdraw/Imakefile ivtools-0.7/src/comdraw/Makefile ivtools-0.7/src/comdraw/README ivtools-0.7/src/comdraw/main.c ivtools-0.7/src/comterp_/Imakefile ivtools-0.7/src/comterp_/Makefile ivtools-0.7/src/comterp_/README ivtools-0.7/src/comterp_/main.c ivtools-0.7/src/comtest/Imakefile ivtools-0.7/src/comtest/Makefile ivtools-0.7/src/comtest/main.c ivtools-0.7/src/dclock/Imakefile ivtools-0.7/src/dclock/Makefile ivtools-0.7/src/dclock/clocktime.c ivtools-0.7/src/dclock/clocktime.h ivtools-0.7/src/dclock/data.c ivtools-0.7/src/dclock/data.h ivtools-0.7/src/dclock/dclock.c ivtools-0.7/src/dclock/dclock.h ivtools-0.7/src/dclock/dface.c ivtools-0.7/src/dclock/dface.h ivtools-0.7/src/dclock/digit.c ivtools-0.7/src/dclock/digit.h ivtools-0.7/src/dclock/segment.c ivtools-0.7/src/dclock/segment.h ivtools-0.7/src/drawserv_/Imakefile ivtools-0.7/src/drawserv_/Makefile ivtools-0.7/src/drawserv_/main.c ivtools-0.7/src/drawtool/Imakefile ivtools-0.7/src/drawtool/Makefile ivtools-0.7/src/drawtool/README ivtools-0.7/src/drawtool/main.c ivtools-0.7/src/flipbook/Imakefile ivtools-0.7/src/flipbook/Makefile ivtools-0.7/src/flipbook/README ivtools-0.7/src/flipbook/main.c ivtools-0.7/src/glyphs/Imakefile ivtools-0.7/src/glyphs/Makefile ivtools-0.7/src/glyphs/README ivtools-0.7/src/glyphs/bdvtable/Imakefile ivtools-0.7/src/glyphs/bdvtable/Makefile ivtools-0.7/src/glyphs/bdvtable/main.c ivtools-0.7/src/glyphs/examples3.1/Imakefile ivtools-0.7/src/glyphs/examples3.1/Makefile ivtools-0.7/src/glyphs/examples3.1/README ivtools-0.7/src/glyphs/examples3.1/box1/Imakefile ivtools-0.7/src/glyphs/examples3.1/box1/Makefile ivtools-0.7/src/glyphs/examples3.1/box1/main.c ivtools-0.7/src/glyphs/examples3.1/box2/Imakefile ivtools-0.7/src/glyphs/examples3.1/box2/Makefile ivtools-0.7/src/glyphs/examples3.1/box2/main.c ivtools-0.7/src/glyphs/examples3.1/box3/Imakefile ivtools-0.7/src/glyphs/examples3.1/box3/Makefile ivtools-0.7/src/glyphs/examples3.1/box3/main.c ivtools-0.7/src/glyphs/examples3.1/box4/Imakefile ivtools-0.7/src/glyphs/examples3.1/box4/Makefile ivtools-0.7/src/glyphs/examples3.1/box4/main.c ivtools-0.7/src/glyphs/examples3.1/box5/Imakefile ivtools-0.7/src/glyphs/examples3.1/box5/Makefile ivtools-0.7/src/glyphs/examples3.1/box5/main.c ivtools-0.7/src/glyphs/examples3.1/button1/Imakefile ivtools-0.7/src/glyphs/examples3.1/button1/Makefile ivtools-0.7/src/glyphs/examples3.1/button1/main.c ivtools-0.7/src/glyphs/examples3.1/button2/Imakefile ivtools-0.7/src/glyphs/examples3.1/button2/Makefile ivtools-0.7/src/glyphs/examples3.1/button2/jello.tif ivtools-0.7/src/glyphs/examples3.1/button2/main.c ivtools-0.7/src/glyphs/examples3.1/button3/Imakefile ivtools-0.7/src/glyphs/examples3.1/button3/Makefile ivtools-0.7/src/glyphs/examples3.1/button3/main.c ivtools-0.7/src/glyphs/examples3.1/bvalue/Imakefile ivtools-0.7/src/glyphs/examples3.1/bvalue/Makefile ivtools-0.7/src/glyphs/examples3.1/bvalue/main.c ivtools-0.7/src/glyphs/examples3.1/circle/Imakefile ivtools-0.7/src/glyphs/examples3.1/circle/Makefile ivtools-0.7/src/glyphs/examples3.1/circle/main.c ivtools-0.7/src/glyphs/examples3.1/drag/Imakefile ivtools-0.7/src/glyphs/examples3.1/drag/Makefile ivtools-0.7/src/glyphs/examples3.1/drag/main.c ivtools-0.7/src/glyphs/examples3.1/fonts/Imakefile ivtools-0.7/src/glyphs/examples3.1/fonts/Makefile ivtools-0.7/src/glyphs/examples3.1/fonts/main.c ivtools-0.7/src/glyphs/examples3.1/himom/Imakefile ivtools-0.7/src/glyphs/examples3.1/himom/Makefile ivtools-0.7/src/glyphs/examples3.1/himom/main.c ivtools-0.7/src/glyphs/examples3.1/image/Imakefile ivtools-0.7/src/glyphs/examples3.1/image/Makefile ivtools-0.7/src/glyphs/examples3.1/image/main.c ivtools-0.7/src/glyphs/examples3.1/ips/Imakefile ivtools-0.7/src/glyphs/examples3.1/ips/Makefile ivtools-0.7/src/glyphs/examples3.1/ips/figure.c ivtools-0.7/src/glyphs/examples3.1/ips/figure.h ivtools-0.7/src/glyphs/examples3.1/ips/idraw.c ivtools-0.7/src/glyphs/examples3.1/ips/idraw.h ivtools-0.7/src/glyphs/examples3.1/ips/main.c ivtools-0.7/src/glyphs/examples3.1/menu/Imakefile ivtools-0.7/src/glyphs/examples3.1/menu/Makefile ivtools-0.7/src/glyphs/examples3.1/menu/main.c ivtools-0.7/src/glyphs/examples3.1/morpher/Imakefile ivtools-0.7/src/glyphs/examples3.1/morpher/Makefile ivtools-0.7/src/glyphs/examples3.1/morpher/README ivtools-0.7/src/glyphs/examples3.1/morpher/balls ivtools-0.7/src/glyphs/examples3.1/morpher/figure.c ivtools-0.7/src/glyphs/examples3.1/morpher/figure.h ivtools-0.7/src/glyphs/examples3.1/morpher/globals.c ivtools-0.7/src/glyphs/examples3.1/morpher/globals.h ivtools-0.7/src/glyphs/examples3.1/morpher/glypheditor.c ivtools-0.7/src/glyphs/examples3.1/morpher/glypheditor.h ivtools-0.7/src/glyphs/examples3.1/morpher/glyphviewer.c ivtools-0.7/src/glyphs/examples3.1/morpher/glyphviewer.h ivtools-0.7/src/glyphs/examples3.1/morpher/grabber.bm ivtools-0.7/src/glyphs/examples3.1/morpher/grabberMask.bm ivtools-0.7/src/glyphs/examples3.1/morpher/icons/cont_play ivtools-0.7/src/glyphs/examples3.1/morpher/icons/fast_forward ivtools-0.7/src/glyphs/examples3.1/morpher/icons/fast_reverse ivtools-0.7/src/glyphs/examples3.1/morpher/icons/forward_pause ivtools-0.7/src/glyphs/examples3.1/morpher/icons/forward_play ivtools-0.7/src/glyphs/examples3.1/morpher/icons/new-record ivtools-0.7/src/glyphs/examples3.1/morpher/icons/panel ivtools-0.7/src/glyphs/examples3.1/morpher/icons/pause ivtools-0.7/src/glyphs/examples3.1/morpher/icons/record ivtools-0.7/src/glyphs/examples3.1/morpher/icons/reverse_pause ivtools-0.7/src/glyphs/examples3.1/morpher/icons/reverse_play ivtools-0.7/src/glyphs/examples3.1/morpher/idraw.c ivtools-0.7/src/glyphs/examples3.1/morpher/idraw.h ivtools-0.7/src/glyphs/examples3.1/morpher/main.c ivtools-0.7/src/glyphs/examples3.1/morpher/man.0 ivtools-0.7/src/glyphs/examples3.1/morpher/man.1 ivtools-0.7/src/glyphs/examples3.1/morpher/morpher.c ivtools-0.7/src/glyphs/examples3.1/morpher/morpher.h ivtools-0.7/src/glyphs/examples3.1/morpher/rect ivtools-0.7/src/glyphs/examples3.1/patch/Imakefile ivtools-0.7/src/glyphs/examples3.1/patch/Makefile ivtools-0.7/src/glyphs/examples3.1/patch/main.c ivtools-0.7/src/glyphs/examples3.1/plot/Axis.c ivtools-0.7/src/glyphs/examples3.1/plot/Axis.h ivtools-0.7/src/glyphs/examples3.1/plot/Graph.c ivtools-0.7/src/glyphs/examples3.1/plot/Graph.h ivtools-0.7/src/glyphs/examples3.1/plot/Imakefile ivtools-0.7/src/glyphs/examples3.1/plot/Makefile ivtools-0.7/src/glyphs/examples3.1/plot/Plot.c ivtools-0.7/src/glyphs/examples3.1/plot/Plot.h ivtools-0.7/src/glyphs/examples3.1/plot/README ivtools-0.7/src/glyphs/examples3.1/plot/main.c ivtools-0.7/src/glyphs/examples3.1/plot/rpc_read.c ivtools-0.7/src/glyphs/examples3.1/plot/rpc_read.h ivtools-0.7/src/glyphs/examples3.1/preview/Imakefile ivtools-0.7/src/glyphs/examples3.1/preview/Makefile ivtools-0.7/src/glyphs/examples3.1/preview/input ivtools-0.7/src/glyphs/examples3.1/preview/main.c ivtools-0.7/src/glyphs/examples3.1/print/Imakefile ivtools-0.7/src/glyphs/examples3.1/print/Makefile ivtools-0.7/src/glyphs/examples3.1/print/main.c ivtools-0.7/src/glyphs/examples3.1/rubband/Imakefile ivtools-0.7/src/glyphs/examples3.1/rubband/Makefile ivtools-0.7/src/glyphs/examples3.1/rubband/main.c ivtools-0.7/src/glyphs/examples3.1/sendplot/Imakefile ivtools-0.7/src/glyphs/examples3.1/sendplot/Makefile ivtools-0.7/src/glyphs/examples3.1/sendplot/main.c ivtools-0.7/src/glyphs/examples3.1/sendplot/rpc_write.c ivtools-0.7/src/glyphs/examples3.1/sendplot/rpc_write.h ivtools-0.7/src/glyphs/examples3.1/zoomer/Imakefile ivtools-0.7/src/glyphs/examples3.1/zoomer/Makefile ivtools-0.7/src/glyphs/examples3.1/zoomer/main.c ivtools-0.7/src/glyphs/formdemo/Imakefile ivtools-0.7/src/glyphs/formdemo/Makefile ivtools-0.7/src/glyphs/formdemo/main.c ivtools-0.7/src/glyphs/gclock/Imakefile ivtools-0.7/src/glyphs/gclock/Makefile ivtools-0.7/src/glyphs/gclock/main.c ivtools-0.7/src/glyphs/meter/Imakefile ivtools-0.7/src/glyphs/meter/Makefile ivtools-0.7/src/glyphs/meter/main.c ivtools-0.7/src/glyphs/radiogroup/Imakefile ivtools-0.7/src/glyphs/radiogroup/Makefile ivtools-0.7/src/glyphs/radiogroup/main.c ivtools-0.7/src/glyphs/scrollable/Imakefile ivtools-0.7/src/glyphs/scrollable/Makefile ivtools-0.7/src/glyphs/scrollable/main.c ivtools-0.7/src/glyphs/scrollfield/Imakefile ivtools-0.7/src/glyphs/scrollfield/Makefile ivtools-0.7/src/glyphs/scrollfield/main.c ivtools-0.7/src/glyphs/strchooser/Imakefile ivtools-0.7/src/glyphs/strchooser/Makefile ivtools-0.7/src/glyphs/strchooser/main.c ivtools-0.7/src/glyphs/text-editor/Imakefile ivtools-0.7/src/glyphs/text-editor/Makefile ivtools-0.7/src/glyphs/text-editor/README ivtools-0.7/src/glyphs/text-editor/main.c ivtools-0.7/src/glyphs/timestamp/Imakefile ivtools-0.7/src/glyphs/timestamp/Makefile ivtools-0.7/src/glyphs/timestamp/main.c ivtools-0.7/src/glyphterp/Imakefile ivtools-0.7/src/glyphterp/Makefile ivtools-0.7/src/glyphterp/main.c ivtools-0.7/src/graphdraw/Imakefile ivtools-0.7/src/graphdraw/Makefile ivtools-0.7/src/graphdraw/README ivtools-0.7/src/graphdraw/main.c ivtools-0.7/src/html/Imakefile ivtools-0.7/src/html/Makefile ivtools-0.7/src/html/README ivtools-0.7/src/html/getman31.sh ivtools-0.7/src/html/getrefman31.sh ivtools-0.7/src/html/templates/CLASS.html.tmpl ivtools-0.7/src/html/templates/Imakefile ivtools-0.7/src/html/templates/Makefile ivtools-0.7/src/html/templates/bug_m.flt ivtools-0.7/src/html/templates/dr_m.flt ivtools-0.7/src/html/templates/err_m.flt ivtools-0.7/src/html/templates/in_m.flt ivtools-0.7/src/html/templates/includeflt.flt ivtools-0.7/src/html/templates/index.html.tmpl ivtools-0.7/src/html/templates/linkflt.flt ivtools-0.7/src/html/templates/other.html.tmpl ivtools-0.7/src/html/templates/out_m.flt ivtools-0.7/src/html/templates/ret_m.flt ivtools-0.7/src/html/templates/smindex.html.tmpl ivtools-0.7/src/html/templates/time.flt ivtools-0.7/src/iclass/Imakefile ivtools-0.7/src/iclass/Makefile ivtools-0.7/src/iclass/classbuffer.c ivtools-0.7/src/iclass/classbuffer.h ivtools-0.7/src/iclass/classeditor.c ivtools-0.7/src/iclass/classeditor.h ivtools-0.7/src/iclass/classinfo.c ivtools-0.7/src/iclass/classinfo.h ivtools-0.7/src/iclass/dialogs.c ivtools-0.7/src/iclass/dialogs.h ivtools-0.7/src/iclass/direct.c ivtools-0.7/src/iclass/direct.h ivtools-0.7/src/iclass/globals.c ivtools-0.7/src/iclass/globals.h ivtools-0.7/src/iclass/iclass.c ivtools-0.7/src/iclass/iclass.h ivtools-0.7/src/iclass/main.c ivtools-0.7/src/idemo/Idemo.defaults ivtools-0.7/src/idemo/Imakefile ivtools-0.7/src/idemo/Makefile ivtools-0.7/src/idemo/main.c ivtools-0.7/src/idraw/Imakefile ivtools-0.7/src/idraw/Makefile ivtools-0.7/src/idraw/README ivtools-0.7/src/idraw/main.c ivtools-0.7/src/include/Dispatch/Imakefile ivtools-0.7/src/include/Dispatch/Makefile ivtools-0.7/src/include/Dispatch/_defines.h ivtools-0.7/src/include/Dispatch/_undefs.h ivtools-0.7/src/include/Dispatch/dispatcher.h ivtools-0.7/src/include/Dispatch/dp.h ivtools-0.7/src/include/Dispatch/enter-scope.h ivtools-0.7/src/include/Dispatch/iocallback.h ivtools-0.7/src/include/Dispatch/iohandler.h ivtools-0.7/src/include/Dispatch/iostreamb.h ivtools-0.7/src/include/Dispatch/leave-scope.h ivtools-0.7/src/include/Dispatch/rpcbuf.h ivtools-0.7/src/include/Dispatch/rpchdr.h ivtools-0.7/src/include/Dispatch/rpcpeer.h ivtools-0.7/src/include/Dispatch/rpcreader.h ivtools-0.7/src/include/Dispatch/rpcregistry.h ivtools-0.7/src/include/Dispatch/rpcservice.h ivtools-0.7/src/include/Dispatch/rpcstream.h ivtools-0.7/src/include/Dispatch/rpcwriter.h ivtools-0.7/src/include/IV-2_6/Imakefile ivtools-0.7/src/include/IV-2_6/InterViews/Imakefile ivtools-0.7/src/include/IV-2_6/InterViews/Makefile ivtools-0.7/src/include/IV-2_6/InterViews/adjuster.h ivtools-0.7/src/include/IV-2_6/InterViews/alignment.h ivtools-0.7/src/include/IV-2_6/InterViews/banner.h ivtools-0.7/src/include/IV-2_6/InterViews/border.h ivtools-0.7/src/include/IV-2_6/InterViews/box.h ivtools-0.7/src/include/IV-2_6/InterViews/button.h ivtools-0.7/src/include/IV-2_6/InterViews/compeditor.h ivtools-0.7/src/include/IV-2_6/InterViews/control.h ivtools-0.7/src/include/IV-2_6/InterViews/deck.h ivtools-0.7/src/include/IV-2_6/InterViews/defs.h ivtools-0.7/src/include/IV-2_6/InterViews/dialog.h ivtools-0.7/src/include/IV-2_6/InterViews/filebrowser.h ivtools-0.7/src/include/IV-2_6/InterViews/filechooser.h ivtools-0.7/src/include/IV-2_6/InterViews/frame.h ivtools-0.7/src/include/IV-2_6/InterViews/glue.h ivtools-0.7/src/include/IV-2_6/InterViews/ihandler.h ivtools-0.7/src/include/IV-2_6/InterViews/interactor.h ivtools-0.7/src/include/IV-2_6/InterViews/iwindow.h ivtools-0.7/src/include/IV-2_6/InterViews/matcheditor.h ivtools-0.7/src/include/IV-2_6/InterViews/menu.h ivtools-0.7/src/include/IV-2_6/InterViews/message.h ivtools-0.7/src/include/IV-2_6/InterViews/minmax.h ivtools-0.7/src/include/IV-2_6/InterViews/paint.h ivtools-0.7/src/include/IV-2_6/InterViews/painter.h ivtools-0.7/src/include/IV-2_6/InterViews/panner.h ivtools-0.7/src/include/IV-2_6/InterViews/perspective.h ivtools-0.7/src/include/IV-2_6/InterViews/rubband.h ivtools-0.7/src/include/IV-2_6/InterViews/rubcurve.h ivtools-0.7/src/include/IV-2_6/InterViews/rubgroup.h ivtools-0.7/src/include/IV-2_6/InterViews/rubline.h ivtools-0.7/src/include/IV-2_6/InterViews/rubrect.h ivtools-0.7/src/include/IV-2_6/InterViews/rubverts.h ivtools-0.7/src/include/IV-2_6/InterViews/scene.h ivtools-0.7/src/include/IV-2_6/InterViews/scrollbar.h ivtools-0.7/src/include/IV-2_6/InterViews/scroller.h ivtools-0.7/src/include/IV-2_6/InterViews/sensor.h ivtools-0.7/src/include/IV-2_6/InterViews/shape.h ivtools-0.7/src/include/IV-2_6/InterViews/strbrowser.h ivtools-0.7/src/include/IV-2_6/InterViews/strchooser.h ivtools-0.7/src/include/IV-2_6/InterViews/streditor.h ivtools-0.7/src/include/IV-2_6/InterViews/subject.h ivtools-0.7/src/include/IV-2_6/InterViews/textbuffer.h ivtools-0.7/src/include/IV-2_6/InterViews/textdisplay.h ivtools-0.7/src/include/IV-2_6/InterViews/texteditor.h ivtools-0.7/src/include/IV-2_6/InterViews/textstyle.h ivtools-0.7/src/include/IV-2_6/InterViews/tray.h ivtools-0.7/src/include/IV-2_6/InterViews/viewport.h ivtools-0.7/src/include/IV-2_6/InterViews/world.h ivtools-0.7/src/include/IV-2_6/Makefile ivtools-0.7/src/include/IV-2_6/_enter.h ivtools-0.7/src/include/IV-2_6/_leave.h ivtools-0.7/src/include/IV-2_6/_names.h ivtools-0.7/src/include/IV-3_1/Imakefile ivtools-0.7/src/include/IV-3_1/InterViews ivtools-0.7/src/include/IV-X11/Imakefile ivtools-0.7/src/include/IV-X11/Makefile ivtools-0.7/src/include/IV-X11/Xdefs.h ivtools-0.7/src/include/IV-X11/Xext.h ivtools-0.7/src/include/IV-X11/Xlib.h ivtools-0.7/src/include/IV-X11/Xundefs.h ivtools-0.7/src/include/IV-X11/Xutil.h ivtools-0.7/src/include/IV-X11/xbitmap.h ivtools-0.7/src/include/IV-X11/xbrush.h ivtools-0.7/src/include/IV-X11/xcanvas.h ivtools-0.7/src/include/IV-X11/xcolor.h ivtools-0.7/src/include/IV-X11/xcursor.h ivtools-0.7/src/include/IV-X11/xdisplay.h ivtools-0.7/src/include/IV-X11/xdrag.h ivtools-0.7/src/include/IV-X11/xevent.h ivtools-0.7/src/include/IV-X11/xfont.h ivtools-0.7/src/include/IV-X11/xpainter.h ivtools-0.7/src/include/IV-X11/xpattern.h ivtools-0.7/src/include/IV-X11/xraster.h ivtools-0.7/src/include/IV-X11/xselection.h ivtools-0.7/src/include/IV-X11/xwindow.h ivtools-0.7/src/include/IV-look/Imakefile ivtools-0.7/src/include/IV-look/Makefile ivtools-0.7/src/include/IV-look/bevel.h ivtools-0.7/src/include/IV-look/browser.h ivtools-0.7/src/include/IV-look/button.h ivtools-0.7/src/include/IV-look/choice.h ivtools-0.7/src/include/IV-look/dialogs.h ivtools-0.7/src/include/IV-look/fbrowser.h ivtools-0.7/src/include/IV-look/fchooser.h ivtools-0.7/src/include/IV-look/field.h ivtools-0.7/src/include/IV-look/kit.h ivtools-0.7/src/include/IV-look/menu.h ivtools-0.7/src/include/IV-look/mf_dialogs.h ivtools-0.7/src/include/IV-look/mf_kit.h ivtools-0.7/src/include/IV-look/mono_kit.h ivtools-0.7/src/include/IV-look/ol_dialogs.h ivtools-0.7/src/include/IV-look/ol_kit.h ivtools-0.7/src/include/IV-look/slider.h ivtools-0.7/src/include/IV-look/smf_kit.h ivtools-0.7/src/include/IV-look/stepper.h ivtools-0.7/src/include/IV-look/telltale.h ivtools-0.7/src/include/Imakefile ivtools-0.7/src/include/InterViews/Bitmaps/Imakefile ivtools-0.7/src/include/InterViews/Bitmaps/Makefile ivtools-0.7/src/include/InterViews/Bitmaps/big_checkmark.bm ivtools-0.7/src/include/InterViews/Bitmaps/checkmark.bm ivtools-0.7/src/include/InterViews/Bitmaps/chkbox.bm ivtools-0.7/src/include/InterViews/Bitmaps/chkboxBoth.bm ivtools-0.7/src/include/InterViews/Bitmaps/chkboxChosen.bm ivtools-0.7/src/include/InterViews/Bitmaps/chkboxHit.bm ivtools-0.7/src/include/InterViews/Bitmaps/dfast.bm ivtools-0.7/src/include/InterViews/Bitmaps/dfastMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/dmover.bm ivtools-0.7/src/include/InterViews/Bitmaps/dmoverHit.bm ivtools-0.7/src/include/InterViews/Bitmaps/dmoverMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/enlarge.bm ivtools-0.7/src/include/InterViews/Bitmaps/enlargeHit.bm ivtools-0.7/src/include/InterViews/Bitmaps/enlargeMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/hand.bm ivtools-0.7/src/include/InterViews/Bitmaps/handMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/ldfast.bm ivtools-0.7/src/include/InterViews/Bitmaps/ldfastMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/lfast.bm ivtools-0.7/src/include/InterViews/Bitmaps/lfastMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/lmover.bm ivtools-0.7/src/include/InterViews/Bitmaps/lmoverHit.bm ivtools-0.7/src/include/InterViews/Bitmaps/lmoverMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/lufast.bm ivtools-0.7/src/include/InterViews/Bitmaps/lufastMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/page.bm ivtools-0.7/src/include/InterViews/Bitmaps/pageBoth.bm ivtools-0.7/src/include/InterViews/Bitmaps/pageChosen.bm ivtools-0.7/src/include/InterViews/Bitmaps/pageHit.bm ivtools-0.7/src/include/InterViews/Bitmaps/radio.bm ivtools-0.7/src/include/InterViews/Bitmaps/radioBoth.bm ivtools-0.7/src/include/InterViews/Bitmaps/radioChosen.bm ivtools-0.7/src/include/InterViews/Bitmaps/radioHit.bm ivtools-0.7/src/include/InterViews/Bitmaps/radioMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/rdfast.bm ivtools-0.7/src/include/InterViews/Bitmaps/rdfastMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/reducer.bm ivtools-0.7/src/include/InterViews/Bitmaps/reducerHit.bm ivtools-0.7/src/include/InterViews/Bitmaps/reducerMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/rfast.bm ivtools-0.7/src/include/InterViews/Bitmaps/rfastMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/rmover.bm ivtools-0.7/src/include/InterViews/Bitmaps/rmoverHit.bm ivtools-0.7/src/include/InterViews/Bitmaps/rmoverMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/rufast.bm ivtools-0.7/src/include/InterViews/Bitmaps/rufastMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/ufast.bm ivtools-0.7/src/include/InterViews/Bitmaps/ufastMask.bm ivtools-0.7/src/include/InterViews/Bitmaps/umover.bm ivtools-0.7/src/include/InterViews/Bitmaps/umoverHit.bm ivtools-0.7/src/include/InterViews/Bitmaps/umoverMask.bm ivtools-0.7/src/include/InterViews/Imakefile ivtools-0.7/src/include/InterViews/Makefile ivtools-0.7/src/include/InterViews/_defines.h ivtools-0.7/src/include/InterViews/_enter.h ivtools-0.7/src/include/InterViews/_leave.h ivtools-0.7/src/include/InterViews/_names.h ivtools-0.7/src/include/InterViews/_undefs.h ivtools-0.7/src/include/InterViews/action.h ivtools-0.7/src/include/InterViews/adjust.h ivtools-0.7/src/include/InterViews/aggr.h ivtools-0.7/src/include/InterViews/align.h ivtools-0.7/src/include/InterViews/alloctbl.h ivtools-0.7/src/include/InterViews/arraycomp.h ivtools-0.7/src/include/InterViews/background.h ivtools-0.7/src/include/InterViews/bitmap.h ivtools-0.7/src/include/InterViews/boolean.h ivtools-0.7/src/include/InterViews/border.h ivtools-0.7/src/include/InterViews/box.h ivtools-0.7/src/include/InterViews/brush.h ivtools-0.7/src/include/InterViews/canvas.h ivtools-0.7/src/include/InterViews/character.h ivtools-0.7/src/include/InterViews/color.h ivtools-0.7/src/include/InterViews/composition.h ivtools-0.7/src/include/InterViews/compositor.h ivtools-0.7/src/include/InterViews/coord.h ivtools-0.7/src/include/InterViews/cursor.h ivtools-0.7/src/include/InterViews/debug.h ivtools-0.7/src/include/InterViews/deck.h ivtools-0.7/src/include/InterViews/dialog.h ivtools-0.7/src/include/InterViews/display.h ivtools-0.7/src/include/InterViews/drag.h ivtools-0.7/src/include/InterViews/enter-scope.h ivtools-0.7/src/include/InterViews/event.h ivtools-0.7/src/include/InterViews/font.h ivtools-0.7/src/include/InterViews/geometry.h ivtools-0.7/src/include/InterViews/glcontext.h ivtools-0.7/src/include/InterViews/glue.h ivtools-0.7/src/include/InterViews/glyph.h ivtools-0.7/src/include/InterViews/group.h ivtools-0.7/src/include/InterViews/handler.h ivtools-0.7/src/include/InterViews/hit.h ivtools-0.7/src/include/InterViews/image.h ivtools-0.7/src/include/InterViews/input.h ivtools-0.7/src/include/InterViews/iv.h ivtools-0.7/src/include/InterViews/label.h ivtools-0.7/src/include/InterViews/layout.h ivtools-0.7/src/include/InterViews/leave-scope.h ivtools-0.7/src/include/InterViews/lrmarker.h ivtools-0.7/src/include/InterViews/monoglyph.h ivtools-0.7/src/include/InterViews/observe.h ivtools-0.7/src/include/InterViews/page.h ivtools-0.7/src/include/InterViews/patch.h ivtools-0.7/src/include/InterViews/pattern.h ivtools-0.7/src/include/InterViews/place.h ivtools-0.7/src/include/InterViews/polyglyph.h ivtools-0.7/src/include/InterViews/printer.h ivtools-0.7/src/include/InterViews/psfont.h ivtools-0.7/src/include/InterViews/raster.h ivtools-0.7/src/include/InterViews/regexp.h ivtools-0.7/src/include/InterViews/reqerr.h ivtools-0.7/src/include/InterViews/resource.h ivtools-0.7/src/include/InterViews/rule.h ivtools-0.7/src/include/InterViews/scrbox.h ivtools-0.7/src/include/InterViews/selection.h ivtools-0.7/src/include/InterViews/session.h ivtools-0.7/src/include/InterViews/shadow.h ivtools-0.7/src/include/InterViews/simplecomp.h ivtools-0.7/src/include/InterViews/stencil.h ivtools-0.7/src/include/InterViews/style.h ivtools-0.7/src/include/InterViews/superpose.h ivtools-0.7/src/include/InterViews/target.h ivtools-0.7/src/include/InterViews/telltale.h ivtools-0.7/src/include/InterViews/texcomp.h ivtools-0.7/src/include/InterViews/tformsetter.h ivtools-0.7/src/include/InterViews/tiff.h ivtools-0.7/src/include/InterViews/tile.h ivtools-0.7/src/include/InterViews/transformer.h ivtools-0.7/src/include/InterViews/window.h ivtools-0.7/src/include/InterViews/xymarker.h ivtools-0.7/src/include/Makefile ivtools-0.7/src/include/OS/Imakefile ivtools-0.7/src/include/OS/Makefile ivtools-0.7/src/include/OS/_defines.h ivtools-0.7/src/include/OS/_undefs.h ivtools-0.7/src/include/OS/directory.h ivtools-0.7/src/include/OS/enter-scope.h ivtools-0.7/src/include/OS/file.h ivtools-0.7/src/include/OS/host.h ivtools-0.7/src/include/OS/leave-scope.h ivtools-0.7/src/include/OS/list.h ivtools-0.7/src/include/OS/math.h ivtools-0.7/src/include/OS/memory.h ivtools-0.7/src/include/OS/os.h ivtools-0.7/src/include/OS/string.h ivtools-0.7/src/include/OS/table.h ivtools-0.7/src/include/OS/table2.h ivtools-0.7/src/include/OS/types.h ivtools-0.7/src/include/OS/ustring.h ivtools-0.7/src/include/TIFF/Imakefile ivtools-0.7/src/include/TIFF/Makefile ivtools-0.7/src/include/TIFF/format.h ivtools-0.7/src/include/TIFF/tiff.h ivtools-0.7/src/include/TIFF/tiffio.h ivtools-0.7/src/include/Unidraw/Commands/Imakefile ivtools-0.7/src/include/Unidraw/Commands/Makefile ivtools-0.7/src/include/Unidraw/Commands/align.h ivtools-0.7/src/include/Unidraw/Commands/brushcmd.h ivtools-0.7/src/include/Unidraw/Commands/catcmds.h ivtools-0.7/src/include/Unidraw/Commands/colorcmd.h ivtools-0.7/src/include/Unidraw/Commands/command.h ivtools-0.7/src/include/Unidraw/Commands/data.h ivtools-0.7/src/include/Unidraw/Commands/datas.h ivtools-0.7/src/include/Unidraw/Commands/dirty.h ivtools-0.7/src/include/Unidraw/Commands/edit.h ivtools-0.7/src/include/Unidraw/Commands/font.h ivtools-0.7/src/include/Unidraw/Commands/import.h ivtools-0.7/src/include/Unidraw/Commands/macro.h ivtools-0.7/src/include/Unidraw/Commands/nop.h ivtools-0.7/src/include/Unidraw/Commands/patcmd.h ivtools-0.7/src/include/Unidraw/Commands/struct.h ivtools-0.7/src/include/Unidraw/Commands/transforms.h ivtools-0.7/src/include/Unidraw/Commands/viewcmds.h ivtools-0.7/src/include/Unidraw/Components/Imakefile ivtools-0.7/src/include/Unidraw/Components/Makefile ivtools-0.7/src/include/Unidraw/Components/cglue.h ivtools-0.7/src/include/Unidraw/Components/component.h ivtools-0.7/src/include/Unidraw/Components/compview.h ivtools-0.7/src/include/Unidraw/Components/connector.h ivtools-0.7/src/include/Unidraw/Components/csolver.h ivtools-0.7/src/include/Unidraw/Components/ellipse.h ivtools-0.7/src/include/Unidraw/Components/externview.h ivtools-0.7/src/include/Unidraw/Components/grcomp.h ivtools-0.7/src/include/Unidraw/Components/grview.h ivtools-0.7/src/include/Unidraw/Components/gvupdater.h ivtools-0.7/src/include/Unidraw/Components/line.h ivtools-0.7/src/include/Unidraw/Components/link.h ivtools-0.7/src/include/Unidraw/Components/pad.h ivtools-0.7/src/include/Unidraw/Components/pin.h ivtools-0.7/src/include/Unidraw/Components/polygon.h ivtools-0.7/src/include/Unidraw/Components/psformat.h ivtools-0.7/src/include/Unidraw/Components/psview.h ivtools-0.7/src/include/Unidraw/Components/rastercomp.h ivtools-0.7/src/include/Unidraw/Components/rect.h ivtools-0.7/src/include/Unidraw/Components/slot.h ivtools-0.7/src/include/Unidraw/Components/spline.h ivtools-0.7/src/include/Unidraw/Components/stencilcomp.h ivtools-0.7/src/include/Unidraw/Components/text.h ivtools-0.7/src/include/Unidraw/Components/vertices.h ivtools-0.7/src/include/Unidraw/Graphic/Imakefile ivtools-0.7/src/include/Unidraw/Graphic/Makefile ivtools-0.7/src/include/Unidraw/Graphic/damage.h ivtools-0.7/src/include/Unidraw/Graphic/ellipses.h ivtools-0.7/src/include/Unidraw/Graphic/geomobjs.h ivtools-0.7/src/include/Unidraw/Graphic/graphic.h ivtools-0.7/src/include/Unidraw/Graphic/grblock.h ivtools-0.7/src/include/Unidraw/Graphic/lines.h ivtools-0.7/src/include/Unidraw/Graphic/picture.h ivtools-0.7/src/include/Unidraw/Graphic/polygons.h ivtools-0.7/src/include/Unidraw/Graphic/pspaint.h ivtools-0.7/src/include/Unidraw/Graphic/rasterrect.h ivtools-0.7/src/include/Unidraw/Graphic/splines.h ivtools-0.7/src/include/Unidraw/Graphic/ulabel.h ivtools-0.7/src/include/Unidraw/Graphic/ustencil.h ivtools-0.7/src/include/Unidraw/Graphic/util.h ivtools-0.7/src/include/Unidraw/Graphic/verts.h ivtools-0.7/src/include/Unidraw/Imakefile ivtools-0.7/src/include/Unidraw/Makefile ivtools-0.7/src/include/Unidraw/Tools/Imakefile ivtools-0.7/src/include/Unidraw/Tools/Makefile ivtools-0.7/src/include/Unidraw/Tools/connect.h ivtools-0.7/src/include/Unidraw/Tools/grcomptool.h ivtools-0.7/src/include/Unidraw/Tools/magnify.h ivtools-0.7/src/include/Unidraw/Tools/move.h ivtools-0.7/src/include/Unidraw/Tools/reshape.h ivtools-0.7/src/include/Unidraw/Tools/rotate.h ivtools-0.7/src/include/Unidraw/Tools/scale.h ivtools-0.7/src/include/Unidraw/Tools/select.h ivtools-0.7/src/include/Unidraw/Tools/stretch.h ivtools-0.7/src/include/Unidraw/Tools/tool.h ivtools-0.7/src/include/Unidraw/_defines.h ivtools-0.7/src/include/Unidraw/_undefs.h ivtools-0.7/src/include/Unidraw/catalog.h ivtools-0.7/src/include/Unidraw/classes.h ivtools-0.7/src/include/Unidraw/clipboard.h ivtools-0.7/src/include/Unidraw/creator.h ivtools-0.7/src/include/Unidraw/ctrlinfo.h ivtools-0.7/src/include/Unidraw/dialogs.h ivtools-0.7/src/include/Unidraw/editor.h ivtools-0.7/src/include/Unidraw/editorinfo.h ivtools-0.7/src/include/Unidraw/enter-scope.h ivtools-0.7/src/include/Unidraw/globals.h ivtools-0.7/src/include/Unidraw/grid.h ivtools-0.7/src/include/Unidraw/iterator.h ivtools-0.7/src/include/Unidraw/keymap.h ivtools-0.7/src/include/Unidraw/kybd.h ivtools-0.7/src/include/Unidraw/leave-scope.h ivtools-0.7/src/include/Unidraw/manip.h ivtools-0.7/src/include/Unidraw/manips.h ivtools-0.7/src/include/Unidraw/path.h ivtools-0.7/src/include/Unidraw/selection.h ivtools-0.7/src/include/Unidraw/statevar.h ivtools-0.7/src/include/Unidraw/statevars.h ivtools-0.7/src/include/Unidraw/stateview.h ivtools-0.7/src/include/Unidraw/stateviews.h ivtools-0.7/src/include/Unidraw/transfn.h ivtools-0.7/src/include/Unidraw/transfns.h ivtools-0.7/src/include/Unidraw/uarray.h ivtools-0.7/src/include/Unidraw/uctrl.h ivtools-0.7/src/include/Unidraw/uctrls.h ivtools-0.7/src/include/Unidraw/uformat.h ivtools-0.7/src/include/Unidraw/uhash.h ivtools-0.7/src/include/Unidraw/ulist.h ivtools-0.7/src/include/Unidraw/umap.h ivtools-0.7/src/include/Unidraw/unidraw.h ivtools-0.7/src/include/Unidraw/upage.h ivtools-0.7/src/include/Unidraw/viewer.h ivtools-0.7/src/include/ivstd/Imakefile ivtools-0.7/src/include/ivstd/Makefile ivtools-0.7/src/include/ivstd/math.h ivtools-0.7/src/include/ivstd/nan.h ivtools-0.7/src/include/ivstd/osfcn.h ivtools-0.7/src/include/ivstd/signal.h ivtools-0.7/src/include/ivstd/stdio.h ivtools-0.7/src/include/ivstd/string.h ivtools-0.7/src/include/ivstd/version.h ivtools-0.7/src/iueserv_/Imakefile ivtools-0.7/src/iueserv_/Makefile ivtools-0.7/src/iueserv_/README ivtools-0.7/src/iueserv_/main.c ivtools-0.7/src/ivxt/Imakefile ivtools-0.7/src/ivxt/Xd.h ivtools-0.7/src/ivxt/Xud.h ivtools-0.7/src/ivxt/glyphwidget.h ivtools-0.7/src/ivxt/glyphwidgetP.h ivtools-0.7/src/ivxt/main.c ivtools-0.7/src/ivxt/widgetwindow.c ivtools-0.7/src/ivxt/widgetwindow.h ivtools-0.7/src/ivxt/xtintrinsic.h ivtools-0.7/src/ivxt/xtsession.c ivtools-0.7/src/ivxt/xtsession.h ivtools-0.7/src/ivxt/xtudsession.c ivtools-0.7/src/ivxt/xtudsession.h ivtools-0.7/src/man/Imakefile ivtools-0.7/src/man/Makefile ivtools-0.7/src/man/man1/Imakefile ivtools-0.7/src/man/man1/Makefile ivtools-0.7/src/man/man1/comdraw.1 ivtools-0.7/src/man/man1/comterp.1 ivtools-0.7/src/man/man1/dclock.1 ivtools-0.7/src/man/man1/drawtool.1 ivtools-0.7/src/man/man1/flipbook.1 ivtools-0.7/src/man/man1/graphdraw.1 ivtools-0.7/src/man/man1/iclass.1 ivtools-0.7/src/man/man1/idraw.1 ivtools-0.7/src/man/man1/ivmkmf.1 ivtools-0.7/src/man/man3/Adjuster.3 ivtools-0.7/src/man/man3/Banner.3 ivtools-0.7/src/man/man3/BasicDialog.3 ivtools-0.7/src/man/man3/Border.3 ivtools-0.7/src/man/man3/Box2_6.3 ivtools-0.7/src/man/man3/BrushCmd.3 ivtools-0.7/src/man/man3/Button2_6.3 ivtools-0.7/src/man/man3/CGlue.3 ivtools-0.7/src/man/man3/CSolver.3 ivtools-0.7/src/man/man3/Catalog.3 ivtools-0.7/src/man/man3/Clipboard.3 ivtools-0.7/src/man/man3/ColorCmd.3 ivtools-0.7/src/man/man3/Command.3 ivtools-0.7/src/man/man3/CompletionEditor.3 ivtools-0.7/src/man/man3/Component.3 ivtools-0.7/src/man/man3/ComponentView.3 ivtools-0.7/src/man/man3/ConnectTool.3 ivtools-0.7/src/man/man3/Connector.3 ivtools-0.7/src/man/man3/Control.3 ivtools-0.7/src/man/man3/ControlInfo.3 ivtools-0.7/src/man/man3/Creator.3 ivtools-0.7/src/man/man3/Damage.3 ivtools-0.7/src/man/man3/Data.3 ivtools-0.7/src/man/man3/Deck2_6.3 ivtools-0.7/src/man/man3/Dialog.3 ivtools-0.7/src/man/man3/Dispatcher.3 ivtools-0.7/src/man/man3/Editor.3 ivtools-0.7/src/man/man3/EditorInfo.3 ivtools-0.7/src/man/man3/EllipseComp.3 ivtools-0.7/src/man/man3/ExternView.3 ivtools-0.7/src/man/man3/FileBrowser.3 ivtools-0.7/src/man/man3/FileChooser.3 ivtools-0.7/src/man/man3/FontCmd.3 ivtools-0.7/src/man/man3/Frame.3 ivtools-0.7/src/man/man3/GVUpdater.3 ivtools-0.7/src/man/man3/Glue2_6.3 ivtools-0.7/src/man/man3/Graphic.3 ivtools-0.7/src/man/man3/GraphicBlock.3 ivtools-0.7/src/man/man3/GraphicComp.3 ivtools-0.7/src/man/man3/GraphicCompTool.3 ivtools-0.7/src/man/man3/GraphicView.3 ivtools-0.7/src/man/man3/Grid.3 ivtools-0.7/src/man/man3/IOCallback.3 ivtools-0.7/src/man/man3/IOHandler.3 ivtools-0.7/src/man/man3/Imakefile ivtools-0.7/src/man/man3/ImportCmd.3 ivtools-0.7/src/man/man3/Interactor.3 ivtools-0.7/src/man/man3/Iterator.3 ivtools-0.7/src/man/man3/KeyMap.3 ivtools-0.7/src/man/man3/LineComp.3 ivtools-0.7/src/man/man3/LinkComp.3 ivtools-0.7/src/man/man3/MacroCmd.3 ivtools-0.7/src/man/man3/MagnifyTool.3 ivtools-0.7/src/man/man3/Manipulator.3 ivtools-0.7/src/man/man3/MatchEditor.3 ivtools-0.7/src/man/man3/Menu2_6.3 ivtools-0.7/src/man/man3/Message.3 ivtools-0.7/src/man/man3/MoveTool.3 ivtools-0.7/src/man/man3/NOPCmd.3 ivtools-0.7/src/man/man3/PadComp.3 ivtools-0.7/src/man/man3/Page.3 ivtools-0.7/src/man/man3/Painter.3 ivtools-0.7/src/man/man3/Panner.3 ivtools-0.7/src/man/man3/Path.3 ivtools-0.7/src/man/man3/Pattern.3 ivtools-0.7/src/man/man3/PatternCmd.3 ivtools-0.7/src/man/man3/Perspective.3 ivtools-0.7/src/man/man3/Picture.3 ivtools-0.7/src/man/man3/PinComp.3 ivtools-0.7/src/man/man3/PolygonComp.3 ivtools-0.7/src/man/man3/PostScriptView.3 ivtools-0.7/src/man/man3/RasterComp.3 ivtools-0.7/src/man/man3/RasterRect.3 ivtools-0.7/src/man/man3/RectComp.3 ivtools-0.7/src/man/man3/Regexp.3 ivtools-0.7/src/man/man3/ReqErr.3 ivtools-0.7/src/man/man3/ReshapeTool.3 ivtools-0.7/src/man/man3/Resource.3 ivtools-0.7/src/man/man3/RotateTool.3 ivtools-0.7/src/man/man3/RpcHdr.3 ivtools-0.7/src/man/man3/RpcPeer.3 ivtools-0.7/src/man/man3/RpcReader.3 ivtools-0.7/src/man/man3/RpcRegistry.3 ivtools-0.7/src/man/man3/RpcService.3 ivtools-0.7/src/man/man3/RpcWriter.3 ivtools-0.7/src/man/man3/Rubband.3 ivtools-0.7/src/man/man3/ScaleTool.3 ivtools-0.7/src/man/man3/Scene.3 ivtools-0.7/src/man/man3/Scroller.3 ivtools-0.7/src/man/man3/SelectTool.3 ivtools-0.7/src/man/man3/Selection.3 ivtools-0.7/src/man/man3/Sensor.3 ivtools-0.7/src/man/man3/Shape.3 ivtools-0.7/src/man/man3/SlotComp.3 ivtools-0.7/src/man/man3/SplineComp.3 ivtools-0.7/src/man/man3/StateVar.3 ivtools-0.7/src/man/man3/StateVarView.3 ivtools-0.7/src/man/man3/StencilComp.3 ivtools-0.7/src/man/man3/StrBrowser.3 ivtools-0.7/src/man/man3/StrChooser.3 ivtools-0.7/src/man/man3/StretchTool.3 ivtools-0.7/src/man/man3/StringEditor.3 ivtools-0.7/src/man/man3/Subject.3 ivtools-0.7/src/man/man3/TextBuffer.3 ivtools-0.7/src/man/man3/TextComp.3 ivtools-0.7/src/man/man3/TextDisplay.3 ivtools-0.7/src/man/man3/TextEditor.3 ivtools-0.7/src/man/man3/Tool.3 ivtools-0.7/src/man/man3/TransferFunct.3 ivtools-0.7/src/man/man3/Tray.3 ivtools-0.7/src/man/man3/UArray.3 ivtools-0.7/src/man/man3/UControl.3 ivtools-0.7/src/man/man3/UHashTable.3 ivtools-0.7/src/man/man3/ULabel.3 ivtools-0.7/src/man/man3/UList.3 ivtools-0.7/src/man/man3/UMap.3 ivtools-0.7/src/man/man3/UStencil.3 ivtools-0.7/src/man/man3/Unidraw.3 ivtools-0.7/src/man/man3/UnidrawIntro.3 ivtools-0.7/src/man/man3/Vertices.3 ivtools-0.7/src/man/man3/VerticesComp.3 ivtools-0.7/src/man/man3/Viewer.3 ivtools-0.7/src/man/man3/Viewport.3 ivtools-0.7/src/man/man3/World.3 ivtools-0.7/src/man/man3/align.3 ivtools-0.7/src/man/man3/catcmds.3 ivtools-0.7/src/man/man3/classes.3 ivtools-0.7/src/man/man3/datas.3 ivtools-0.7/src/man/man3/edit.3 ivtools-0.7/src/man/man3/ellipses.3 ivtools-0.7/src/man/man3/geomobjs.3 ivtools-0.7/src/man/man3/globals.3 ivtools-0.7/src/man/man3/iostreamb.3 ivtools-0.7/src/man/man3/kybd.3 ivtools-0.7/src/man/man3/lines.3 ivtools-0.7/src/man/man3/manips.3 ivtools-0.7/src/man/man3/polygons.3 ivtools-0.7/src/man/man3/pspaint.3 ivtools-0.7/src/man/man3/rpcbuf.3 ivtools-0.7/src/man/man3/rpcstream.3 ivtools-0.7/src/man/man3/splines.3 ivtools-0.7/src/man/man3/statevars.3 ivtools-0.7/src/man/man3/stateviews.3 ivtools-0.7/src/man/man3/struct.3 ivtools-0.7/src/man/man3/transfns.3 ivtools-0.7/src/man/man3/transforms.3 ivtools-0.7/src/man/man3/uctrls.3 ivtools-0.7/src/man/man3/viewcmds.3 ivtools-0.7/src/man/refman3.1/refman.PS ivtools-0.7/src/scripts/Imakefile ivtools-0.7/src/scripts/Makefile ivtools-0.7/src/scripts/anytopnm.sh ivtools-0.7/src/scripts/bsdinst.sh ivtools-0.7/src/scripts/chgsuffix.sh ivtools-0.7/src/scripts/cntsrclines.bash ivtools-0.7/src/scripts/config.guess ivtools-0.7/src/scripts/config.sub ivtools-0.7/src/scripts/cpu.sh ivtools-0.7/src/scripts/install-sh ivtools-0.7/src/scripts/ivcd.cpp ivtools-0.7/src/scripts/ivct.cpp ivtools-0.7/src/scripts/ivds.cpp ivtools-0.7/src/scripts/ivdt.cpp ivtools-0.7/src/scripts/ivfb.cpp ivtools-0.7/src/scripts/ivgd.cpp ivtools-0.7/src/scripts/ivgetjpg.bash ivtools-0.7/src/scripts/ivmkmf.cpp ivtools-0.7/src/scripts/mkdirhier.sh ivtools-0.7/src/scripts/mkgif89a.bash ivtools-0.7/src/scripts/mkgif89ac.bash ivtools-0.7/src/scripts/pnmtopgm.sh ivtools-0.7/src/scripts/tiftopnm.bash ivtools-0.7/src/tests/Imakefile ivtools-0.7/src/tests/Makefile ivtools-0.7/src/tests/y2k/Imakefile ivtools-0.7/src/tests/y2k/Makefile ivtools-0.7/src/tests/y2k/y2ktest.cc ivtools-0.7/src/utils/Imakefile ivtools-0.7/src/utils/Makefile ivtools-0.7/src/utils/downloader.cc ivtools-0.7/src/utils/downloader.h ivtools-0.7/src/utils/ftp.cc ivtools-0.7/src/utils/ftp.h ivtools-0.7/src/utils/http.cc ivtools-0.7/src/utils/http.h ivtools-0.7/src/utils/ivdl.cc ivtools-0.7/src/utils/parse.h ivtools-0.7/src/utils/readwrite.h ivtools-0.7/src/utils/sockets.cc ivtools-0.7/src/utils/sockets.h ivtools-0.7/src/utils/stdcmapppm.c ivtools-0.7/src/utils/thrower.cc ivtools-0.7/src/utils/thrower.h ivtools-0.7/src/utils/tmpnam.c ivtools-doc/ivtools-0.7-README.txt0000644000076500007650000004231307374262632017357 0ustar scottscott00000000000000 README for ivtools 0.7 This directory contains a release of ivtools 0.7.10 from Vectaport Inc.. You should read the rest of this file for information on what ivtools is and the INSTALL file for instructions on how to build it. ivtools is known to build with many versions of gcc (<= gcc-2.7.2, >= gcc-2.8.1, >= egcs-1.0.1) and on a variety of Unix'es: SunOS 4.1 (MIT's X11R5), Solaris 2.6 (X11R6), Irix 5.2 (SGI's X11R5), Linux 1.2 (Slackware 3.0, XFree86 3.1) and Linux 2.* (RedHat 4.0 thru 5.2, Debian 2.*). There are contributed configs for HPUX and Dec Alpha. Recently it has been built on Windows NT 4.0 using Cygwin from Cygnus Solutions (see README.cygwin). You can pick up Linux-ELF binaries from the ivtools web page (http://www.vectaport.com/ivtools/). The overall copyright and permission notice for ivtools can be found in the COPYRIGHT file in this directory. It is similar to the X11 copyright, otherwise known as non-copylefted freeware. If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to ivtools-info@vectaport.com. To subcribe to the mailing list, send an informal request to ivtools-request@vectaport.com. **NOTE** The COPYRIGHT might be changing slightly with ivtools-0.8, to acquire some of the protection of an LGPL style open-source license without adding restrictions to purely binary forms of redistribution. Take a look at the COPYRIGHT.proposed file and forward comments to ivtools-info@vectaport.com. See an on-line discussion of this proposal at http://www.vectaport.com/ivtools/caveats.html Online documentation (including an FAQ) is available for ivtools at: http://www.vectaport.com/ivtools/doc/ Read about finding and generating inline documentation below. A copy of the ivtools html documentation is available for download as well: http://www.vectaport.com/pub/src/ivtools-0.7.10-html.tgz * What is ivtools?: ivtools is a layered collection of application frameworks for building custom drawing editors and spatial data servers. It incorporates a backward compatible copy of the original InterViews and Unidraw class libraries and sample programs (from 3.2a.tar.Z), augmented with new class libraries and sample programs for a wide variety of generic spatial data applications. ivtools comprises four sets of interrelated capabilities useful for application programmers. The first set is the libraries and example programs borrowed whole from InterViews 3.1. The second set is for reusing and extending the light-weight glyph objects of InterViews 3.1 which embody a lot of the capability of TeX. The third set reuses and extends the Unidraw library (Unidraw is a major portion of the overall InterViews 3.1 release that provides an application framework for custom drawing editors). The fourth set adds a command interpreter and server mechanism to ivtools, and demonstrates these capabilities with text, glyph, and graphic front-ends. To get more of an overview of these layers you can read http://www.vectaport.com/ivtools/ivtools-layers.html. These are the libraries and example programs borrowed straight from InterViews 3.1: IV library of InterView 3.1, InterViews 2.6, Dispatch, OS, and TIFF objects dclock digital clock with fading digits iclass C++ class browser idemo glyph demo These are the libraries and example programs that make up the glyph part of ivtools (programs in the glyphs directory): IVGlyph library of Glyph derived classes bdvtable bounded-value editing formdemo value-editing gclock glyph-based clock meter sliding meter radiogroup radio-buttons scrollable 2d scrollable glyph scrollfield 2d scrollable field-editor strchooser string chooser text-editor emacs-like text editor timestamp editable time glyph Also all the glyph example programs from InterViews 3.1 have been added in an examples3.1 directory under the glyphs directory. These are the libraries and example programs that make up the Unidraw part of ivtools: Unidraw copy of Unidraw library from InterViews 3.1 UniIdraw librarification of 3.1 idraw OverlayUnidraw extended Unidraw/idraw framework TopoFace spatial network library (nodes, edges, faces) GraphUnidraw graph browser/editor library FrameUnidraw multi-frame display mechanism idraw idraw built on UniIdraw library drawtool extended version of idraw built on OverlayUnidraw graphdraw graph browser/editor integrated with drawtool flipbook flipbook multi-frame editor based on drawtool These are the libraries that make up the command interpreter part of ivtools: ComUtil command interpreter utility functions Attribute attribute property list mechanism AttrGlyph glyphs for Attribute library ComTerp command interpreter objects ComGlyph glyphs for ComTerp library ComUnidraw drawing editor with command interpreter DrawServ drawing server framework with support for graphs and frames. comtest test program comterp sample command interpreter glyphterp command interpreter user interface comdraw drawtool with command interpreter drawserv comdraw with both graphs and frames. Note: GraphUnidraw/graphdraw and FrameUnidraw/flipbook have been rearranged within the ivtools source tree to take advantage of the ComUnidraw framework layer, so they really could be listed in both of the previous sections. There is also a Time library with Date and Time classes borrowed from the NIH's class library, and an example program, ivxt, that shows how an Xt widget can be wrapped around an InterViews application. Finally, there is a collection of utilities (utils) and shell scripts (scripts) that augment the drawing editors of ivtools with minor capabilities. See the relevant directories and files for further information. A series of makefile targets support the checkin of sources to cvs/rcs, and their subsequent update and modification. This requires a copy of cvs available from the Free Software Foundation and ivmkcm-0.7.2 available through http://www.vectaport.com/ivmkcm/ * Finding and Generating Inline Documentation Extensive documentation is embedded within the ivtools source tree, including most all of the documentation originally available for InterViews 3.1 and Unidraw. Here is a list: - README/man pages for executable programs Within most directories that contain an executable program (a main.c) you'll find a README that explains something about the program, how to use it, what it does, what arguments it takes. In the case of the drawing editors and command interpreters this README has been further processed into a man page, which can be found in its uninstalled state in the src/man/man1 directory or wherever you elect to install them. - HTML class documentation Many of the C++ class libraries of ivtools are documented using comments in the header files (the .h files) that can be extracted using PERCEPS, a Perl documentation generator for C++ (http://friga.mer.utexas.edu/mark/perl/perceps/). See src/html/README for instructions on auto-generating these web pages yourself, or see the result on-line at: http://www.vectaport.com/ivtools/doc/classes/ - InterViews 3.1 and Unidraw man pages All the original man pages from InterViews 3.1 and Unidraw have been preserved, and can be found in src/man/man3, or where ever you elect to install them. They also can be browsed online at: http://www.vectaport.com/ivtools/doc/man3.1/ - InterViews 3.1 reference manual The original reference manual for InterViews 3.1 can be found in PostScript form at src/man/refman3.1/refman.PS. It is also found in page-indexable online form at: http://www.vectaport.com/ivtools/doc/refman3.1/ * Building on top of ivtools Copied from the ivtools FAQ: http://www.vectaport.com/ivtools/faq.html#standalonedevel Q: How do I set up a stand-alone program or source tree on top of ivtools for development purposes? A: If you are writing a stand-alone program that will exist in a single directory, simply copy an appropriate Imakefile and main.c from a InterViews or ivtools example program directory, modify accordingly, then use "ivmkmf -a" to generate the Makefile. Make sure you are using a fresh ivmkmf that corresponds to your installation of ivtools. An example of this is the comtop sample program, a stand-alone program separate from ivtools that builds on top of the comterp command interpreter mechanism. ** comtop.tgz is now part of the ivtools distribution ** If you are setting up an entire source tree with both class libraries and executable programs, you will want to get started by replicating an equivalent source tree (i.e. vhclmaps) and change or rename all directories or files as appropriate. ** read more on vhclmaps at http://www.vectaport.com/ivmaps/ ** * Acknowledgements: ivtools programmers at Vectaport: Scott Johnston Jorge Gautier ivtools programmers at large: Rick Kissh Eric Kahler Brian Hogencamp InterViews 3.1 programmers that we know of: Mark Linton John Vlissides Paul Calder John Interrante Scott Stanton Steven Tang ivtools can be built to leverage a variety of separate third-party libraries: * clippoly from Klamer Schutte for polygon intersection (licensed under the LGPL) * ACE from Doug Schmidt for middleware networking frameworks (licensed similar to X Windows) * IUE (the Image Understanding Environment) from Amerinex (half public-domain, half licensed similar to X Windows) ivtools detects and uses at runtime a variety of third-party executables: * qhull from the University of Minnesota Geometry Center * pstoedit from Wolfgang Glunz * ghostscript from L. Peter Deutsch and Aladdin Systems * djpeg from the JPEG group * giftopnm from Jef Poskanzer's pbmplus toolkit (a copy of anytopnm from the same toolkit is incorporated into the scripts directory) OverlayUnidraw incorporates Version 3.1 of a "C++ Vector and Matrix Algebra routnes" (algebra3.h) from Jean-Francois Doue. HPUX (HP-800) config contributed by Neal Becker. ALPHA config contributed by Bruno Delfosse at Thomson CSF. A lot of feedback on Solaris 2.6 building from M. Rasit Eskicioglu at the University of Alberta. Cygwin development environment for Windows NT from Cygnus Solutions. Patches to iv-3.2a incorporated from the PDP++ distribution from Carnegie Mellon University Department of Psychiatry, Randall C. O'Reilly, et. al. Patches for Debian 2.0 packaging incorporated from Guenter Geiger. This work included the conversion of drawtool, flipbook, and graphdraw README's to man page format. Patch for iv-3.1 shift key handling from Doug Scott, the author of MiXViews. Certain InterViews libraries (Dispatch, IV, IV-2_6, IV-X11, InterViews, OS, TIFF, Unidraw) and example programs (iclass, idemo, idraw) are copied from the InterViews 3.1 sources. Here is the aggregrate copyright notice for that software package: /* * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * Copyright (c) 1991 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Stanford and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Stanford and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL STANFORD OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The building of iv-3.1 with gcc-2.5.* (and subsequent versions) was enabled by a patch from Adam Zell. The TIFF library was written by Sam Leffler and published with this copyright and permission notice: /* * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991, 1992 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The strchooser example and StrChooser class were contributed by David B. Hollenbeck, as well as the glyph-based Motif-look pull-down menus of OverlayUnidraw. Here is his copyright notice: /* * Copyright (c) 1993 David B. Hollenbeck * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notice and this permission notice appear in * all copies of the software and related documentation, and (ii) the name of * David B. Hollenbeck may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of David B. Hollenbeck. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL DAVID B. HOLLENBECK BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The scrollable example is based on code from Chen Wang The text-editor example program is by Jan Andersson of Torpa Konsult AB. Here is that copyright notice: // // Simple Text Editor // // // Copyright (C) 1993 Ellemtel Telecommunication Systems Labratories // // Permission is granted to any individual or institution to use, copy, // modify, and distribute this software, provided that this complete // copyright and permission notice is maintained, intact, in all copies // and supporting documentation. // // Ellemtel Telecommunication Systems Labratories make no representation // of the suitability of this software for any purpose. It is provided // "as is" without any expressed or implied warranty. // // Jan Andersson, Torpa Konsult AB // janne at torpa.se - 1993-08-29 The Date and Time classes in the Time library are borrowed from the NIHCL class library, written by K. E. Gorlen, Computer Sciences Laboratory, DCRT, National Institutes of Health, Bethesda, MD 20892, and published with this notice: THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A "UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY. The graylevel raster and painting mechanisms of OverlayUnidraw were originated by Richard B. Kissh under contract to Vectaport Inc, as well as the shared memory rasters and asychronous incremental download of rasters. The ComUtil library was originally developed at Triple Vision Inc. under NSF Grant ISI-8521259 (authors/contributors: Robert C. Fitch, Richard A. Fundakowski, Robert K. Graber, Scott E. Johnston). The ivdl URL downloading utility was developed by Eric F. Kahler under contract to Vectaport Inc. Keung Chi Ng of IET Inc. has provided a good deal of feedback on ivtools over the years, and has assisted in demonstrating the viability of the application frameworks by developing a variety of vertical applications on top of OverlayUnidraw, FrameUnidraw, and GraphUnidraw. The balance of ivtools has been developed by Vectaport Inc. (P.O. Box 7141, Redwood City, CA 94063), with additional support from IET Inc. (P.O. Box 112450, Campbell, CA 95011) in the form of ARPA subcontracts (DACA76-93-C-0025 and DACA76-97-C-0005), as well as support from Applied Sciences Inc, San Francisco, CA, in the form of a subcontract for a Phase II SBIR from NASA Ames. ivtools-doc/ivtools-0.8-CHANGES.txt0000644000076500007650000010320107374262632017465 0ustar scottscott00000000000000August 23rd 2000 ivtools-0.8.4 - builds and works on FreeBSD 4.0 (tested at bsd.compile.sourceforge.net) - add :popen keyword to comdraw import command, so that Unix command lines can be substituted for pathnames, i.e.: import("pbmtext \"TEST STRING\" | pnmalias" :popen) will cause a anti-aliased rendering of TEST STRING to be imported as a PPM raster file. - fix bug in editing text graphics in Landscape mode. A while back things were changed so you could enter horizontal text in landscape mode. This changed code that was used both when you typed in new text, and when you edited existing text. But the test for Landscape mode (and the resultant rotation by 90 degrees before pasting) needed only to be done in the case of new text. This is the explanation for the text disappearing after its been edited with the Reshape tool which some have seen, but seemed to be a hard-to-replicate bug. - extend the use of -stripped to ivtools flipbook as well as comdraw. Now you can bring up a flipbook without any toolbar or menubar. - cause the menubar and toolbar (and state variables) to be constructed anyways when -stripped is given. This keeps the keyboard shortcuts working, a necessary feature when there is no GUI for those commands and tools. - part 2 of patch to fix Landscape-mode text editing. This makes all cases works, and propogates the fix to idraw as well. - make a brush undashed when drawing any arrowhead. It just didn't look good to see three quarters of an arrowhead at the end of a dashed line. There are still discrepancies between the how an arrowhead looks in the ArrowVarView and how it looks in a drawing. This math could be reviewed and improved. - rename ComTerpServState to ComTerpState (because that is what it was), and make more widespread use of it in all the ::run* methods. This makes multiple run commands on the same line work for the first time. - first version of comterp trace command: trace([flag] :get) -- toggle or set trace mode When true, the trace mode causes the interpreter to print out the name of the command (ComFunc) ready to be executed, and the number of arguments and number of keywords supplied to it. Indentation is 4 spaces time the depth of post-evaluate expression, i.e. a doubly nested for-loop has 8 spaces of indentation on the inner loop, four for the outer loop. - expand on the trace output for non-post-evaluated commands (ComFunc's). Since each of them has all its arguments (and keywords) ready to go on the stack, it is a simple matter to loop through and print these. It gives an interesting visualization of the innards of any complex comterp expression with control constructs, because you get to see what the arguments of each command (or operator) evaluated to before the command itself was executed. The next step would be print the unevaluated expressions for a post-evaluated command before they are executed. It might also be possible to trace their value after they are determined at run-time, to see what the "cond" or "if" conditional evaluated too. - if the pathname given to drawing editor doesn't exist, launch the drawing editor so that it is ready to edit a file of that name. The file won't come into existence until a File/Save is done, but the user doesn't have to enter the pathname again if they don't want to. - attempt to workaround an ACE-related NetBSD bug. Todd Gruhn has been faced with the problem comterp doesn't work in server mode when compiled with ACE on NetBSD for quite a while. We confirmed that for whatever reason, ACE would accept the connection to the port, and construct the handler, but subsequent data transmitted to the port would not cause select() to return. We also confirmed that ACE_wrappers/examples/Logger did work on NetBSD (the Acceptor-server version). Since this was the example from which comterp's use of ACE was derived, the next thing to do was a line-by-line comparison of the comterp ACE code to the Logger example. I found that little had changed in the past five years regarding the ACE Acceptor/Handler/Reactor API. But I did find two differences between how that API was used in the Logger example, and how it was used by comterp in server mode. The first was I had removed the call to Reactor::schedule_timerin ComterpHandler::open, something that had been used in Logging_Handler::open. I was trying to avoid the use of timers in the case of comterp in server mode. This patch conditionally enables this again for NetBSD. The second was I had added a call to Reactor::register_handler in comterp's main.c (to register the templated Acceptor object) that wasn't to be found in the main program of the Logger Acceptor-server example. This patch backs that out for NetBSD. I think I had done this to fix things after the change described in the previous paragraph. The pair of changes worked quite well on Linux, but might be the cause of the problem on NetBSD. - this patch also fixes an initialization bug in the TextView object, one that only recently surfaced. - fix bug in use of ComTerpState. The ComTerp::pop_servstate method always deletes the _pfnum member variable, but in the case of the ComTerpServ::run method that takes a buffer of tokens as an argument, you don't want to do this. The fix was to nil out _pfbuf before popping the state. - add method to return symbol associated with type of an AttributeValue (AttributeValue::type_symid()). - add comterp commands for returning the type of a value, and the class of a value of object type. - modify the various comterp assignment operators to look up the value of an attribute given as the second, or right-hand side operand. Symbols are treated differently, in that they behave like attributes when explicitly given, but get assigned as symbols when they are computed and returned from some other expression. - add a symbol comparison option to EqualFunc, i.e.: eq(sym1 sym2 :sym) This assumes sym1 and sym2 are computed by an expression that returns symbols, and then subsequent lookup is suppressed. - set limits on the traversal of the posteval expression buffer by adding an offlimit argument to the various ComTerp::skip_* methods (i.e. ::skip_func, ::skip_arg, and ::skip_key). Now you get a warning when this condition occurs, and the related segfault is avoided. - remove printf in EivTextBuffer that squawked when the text buffer was reallocated into large space. - add a LISP-like backquote operator to comterp. Works for attributes as well. - add floor, ceil, and round commands to comterp. In each case a long integer is returned when the argument is a float or double. - add pastemode command to comdraw, to allow for construction of off-screen graphics. These can be later inserted with the comdraw paste command, or maybe they can be used as a prototype for a toolbutton. This will require investigating the graphics-to-glyph conversion software that exists somewhere in the glyphs examples source tree. - modify the comterp lexical scanner to always skip lines that begin with a "#". This allows someone to write stand-alone executable scripts for comterp that begin like this: #!/usr/local/bin/comterp run - migrate classes for representing graphics as glyphs from the morpher example program to the IVGlyph library. This includes a method for constructing glyphs given an idraw file. - migrate the morpher example from the examples3.1 sub-tree to the main glyphs directory. - add customizable toolbar to drawtool, that consists of everything but the Annotate and graphic drawing tools. You switch to this toolbar by using a new "Tools" menu in the top menu bar. Also in that new menu is an "Add Custom Tool" menu item, that brings up a filechooser and prompts you to enter the path of an idraw document to use as the prototype for the tool button and for the tool action. The reason it needs to be an idraw document is the tool button glyph construction relies on an IdrawReader::load method reused from the InterViews 3.1 morpher example. This is the gateway between glyphs and graphics, which finally allows the same drawing to be used in both worlds. This gives extra usefulness to the Export-in-idraw-format mode. These idraw-format icons need to be small enough to fit in a toolbutton, and they need to centered on 0,0. - attempt to set up configuration files for a port of ivtools to FreeBSD, at the request of Wilhelm B. Kloke. - new addtool command in comdraw takes the pathname of an idraw drawn (or drawtool, etc. exported) picture and makes it a button in the alternate toolbar. compview=addtool(pathname) -- add button to toolbar based on zero-centered idraw drawing. The idraw graphics need to be zero-centered, which can be done in comdraw like this: g=at(select) /* gets the first graphic in the selection */ move(-at(center(g) -at(center(g) 1))) /* zero-centers */ followed by ^X (File/Export) with idraw format checked. - perhaps now building on FreeBSD. June 12th 2000 ivtools-0.8.3 - remove the output for a ComValue of BlankType in the related ostream operator. This puts it back to the way it has long been. The output of "" was just a temporary debugging thing. - add an "acknowledgebox" command (AcknowledgeBoxFunc) to command, to allow a script to pop-up a dialog box and require the user to press ok. - add a confirmbox command to comdraw that returns 1 for Yes, 0 for No, and -1 if Cancelled. - use a self-growing STL (Standard Template Library) vector to read comterp commands from a socket. This replaces the year-old hack of using a 1 megabyte input buffer (BUFSIZ*BUFSIZ), which was problematic in certain run-time environments, causing an inexplicable crash at the head of ComterpHandler::handle_input before any code of the method was executed. If this approach proves out, it should be migrated to all the other large input buffers spread around ivtools (where-ever the size is BUFSIZ*BUFSIZ), and would make for a significant reduction in the runtime footprint of some programs. - fix AttributeValue::geta(int classid) and add back a ComValue::geta(int classid) - fix the use of CLASS_SYMID macro in OverlaysComp class definition. It was missing the "s" from the class name string. - new comterp commands to "split" a string or symbol into a list of characters, and to "join" a list of characters into a string or symbol. - add -DUnidrawCommon to the compiler command line in the Unidraw-common library, and make judicious use of "#ifndef UnidrawCommon" in Unidraw/component.c and Unidraw/compview.c, so they only pull in stuff out of libUnidraw-common. - print "nil" instead of "Unknown type" when a ComValue is of UnknownType, since that is how UnknownType is used throughout comterp, as the nil value which means no value. - bug fixed in AttributeListEditor where a fixed buffer of length 1024 was overflowed. Replaced with a vector instead. - change comterp eval command to return a single value if it has only one argument. - change the Dialog class so that a box put up with ::map_for or ::map_for_aligned (as opposed to ::post_for or ::post_for_aligned) can unmap itself when cancelled or accepted. - add highlight command to comdraw interpreter: highlight(compview compviewgs) -- set the highlight graphic state for a graphic - changed ComTerpModule::reset to reuse buffers without reallocating them. - fixed equality comparisons in comterp against nil (which is ComValue::UnknownType under the hood). Now nil!=0 is true (1) and nil==0 is false (0). - added base class method to set an OverlayView's HighlightGraphic and member variable _hilite_gs to hold it. - fixed bug in OverlayScript::ReadOther. Now the attribute built from a keyword with no following value(followed by the closing paren) gets a value of true (1). - add a global variable capability to comterp. Now you can: global(v1)=100 and the value v1 will be available in all other copies of the command interpreter running at the time. If a local variable of the same name exists, you can access the global value by: symval(global(v1)) The "global" command returns a ComValue of SymbolType with a new global flag set to true. This flag is subsequently checked when doing symbol lookup, and if true the values are taken from the global symbol table (a static class variable of ComTerp). - add a AttributeValue::clear() method to zero out all the bytes of the double sized multi-value union _v. - add "frame" command to comdraw (and flipbook) to return the current composite graphic. - make comdraw versions of the "at" and "size" commands that work on composite graphic objects (i.e. the list of sub-graphics gets used as the list). - add a static method ComValue::minusoneval to return a ComValue set to -1. - ensure a ComValue is really of ObjectType before returning the value of the ::object_compview() flag. - test for global symbol flag before doing local symbol table lookup in comterp. - ensure the global symbol flag is zeroed when constructing a ComValue from a postfix_token struct. - remove bug in comdraw "center" command. - fix bug in "mbr" and "points" commands of comdraw (same one that was in "center"). - annotate (prefix) the result from a timeexpr command with "timeexpr result: ". Otherwise it is kind of hard to tell where these things come from. - modify min and max commands of comterp so that max(num nil) is always num, and min(num nil) is always num as well. - preserve the ComTerp associated with a ComterpHandler if there is a timer evaluated expression still running. - define AttributeValue::boolean_val() to return true for any symbol or string value if the symbol id is greater than or equal to zero. - new "delete" command for comdraw. - new :clear flag on the "select" command of comdraw. - new :scrn flag on the "center" and "mbr" commands of comdraw (to return screen relative coordinates as opposed to drawing coordinates). - fix :str keyword of print command (shortcut for :string) - add :sym and :symbol keyword to print command, for generating symbols the same way :str and :string can generate strings. - fix a few cases in the execute method of a derived Comfunc where a reference is initialized to a ComValue on the interpreter stack (ComValue&), and then used after the stack has been reset for this command (ComFunc::reset_stack), which obliterates all the input arguments. Instead a local copy of the ComValue is initialized. - add a comdraw "growgroup" command: newgroup=growgroup(groupview compview) -- add graphic to existing group graphic This is implemented with a MacroCmd (macro command) that has two members, an UngroupCmd to break down the initial group into its constituent parts, and an (Ov)GroupCmd to build it back up to include the new graphic. - add comdraw "trimgroup" command, to reverse the effect of a "growgroup" command: newgroup=trimgroup(groupview compview) -- remove graphic from existing group graphic Underneath the hood this a macro command (MacroCmd) with an ungroup command (UngroupCmd) followed by group command (OvGroupCmd) with the specified graphic removed from the list. This does not delete that graphic, but that can be done with a "delete" command if so desired. - fix bug in comdraw "select" command, so that changes to the current selection are graphically represented in the viewer. - add pause command to comdraw. Can be embedded in the middle of a script, and allows for arbitrary commands to be evaluated until a simple C/R is entered. - add a "logger" mode to comterp: comterp logger 'portnum' Listens for and accept connections on portnum, then simply forward the incoming messages to stdout, while ack'ing back with newlines. For debugging purposes, not really a use of the interpreter. - revise comdraw documentation, to make it more obvious that the "import" command requires a string for its pathname argument, and that a string has to be embedded in double-quotes. - upgrades to smoothly compile on RedHat 6.2 - add a :n argument to the eq command (the command that underlies the "==" operator), so that it can be used for partial string comparison, i.e.: eq("string1" "string2" :n 6) returns true. - fix up the comdraw text command to work at other than 1x mag. - fix two bugs in the Attribute tool dialog box. Make things work when there are no attributes defined (a problem that cropped up since using STL vector template to store the contents of the dialog buffer). And use a ComponentView to hold the pointer to a Component being examined by the dialog box, so that if the Component gets deleted in the drawing editor the Attribute tool dialog box won't be fooled into thinking it still has a good Component pointer. April 28th 2000 ivtools-0.8.2 - Add a new version of a dot (".") func to comdraw, one that accesses the AttributeList of a graphical component. This allows for easy set/get access to the attributes of graphics in a drawing editor. - Change default behavior of comdraw select func to return list of graphics in current selection. Implement the :all feature as well. This is a non-backward compatible change for anyone who has relied on the undocumented way the select func has behaved up until now (which was the same as :all behavior should have been). - change comterp list output (what gets printed when a list is returned on the stack) to use "," instead of "\n" and surround the entire list with "{" and "}". Now you can see the difference between lists of length 1 and scalars. - copy/move capability for text editor with interpreter from FrameUnidraw to OverlayUnidraw, and make use of it in comdraw. - add a flag to ComValue (use space from one of two type-specific unions) to indicate the void* pointer stored in an ComValue of ObjectType is really a ComponentView, not the class indicated by the classid symbol associated with it. This allows derived ComFunc's to detect whether an object pointer is really a ComponentView indirection to some Component object. - fix bug in comterp telcat mode where a bad pathname segfaults. - extend OverlayComp::FindValue to support the "up" flag. - change all the derived ComFunc's that work with ComponentView's to set the ComValue::_object_compview flag, and provide a symbol for the classid that corresponds to the kind of component. This needs to become a virtual method on every component, which requires adding CLASS_SYMID to all the *comp(s).h in the OverlayUnidraw library. - create "attrname" command to return name of attribute name/value pair. - create "attrlist" command to return the AttributeList of a component. - fix the adjusting of relative pathnames for an OverlayFileComp when the whole document is saved out to a different directory. - finish migration to use of ComValue::object_compview method. - add FrameScript::suppress_frame method to trim the output of "frame" objects from a derived program, i.e. a map viewer. - extend the use of a symbol-table based class id to all the components in OverlayUnidraw, GraphUnidraw, and FrameUnidraw, so that the command interpreter can print the class name of objects returned on the stack. Elide the "Ov" from certain class names, i.e. "RasterComp" instead of "RasterOvComp". - fix the equality operator (==) of comterp to return 0 when one argument is of unknown type (unless both are of unknown type) - finalize arrangement of symbol manipulating commands of comterp: symid return symbol id given symbol symbol return symbol given symbol id symval lookup value associated with symbol symadd return symbol without value lookup because symbol lookup is automatic in the interpreter, you only have to use symval when passing a symbol argument by variable to a command that accepts symbols without lookup. The command will take the name of the variable for input, not its contents, so wrapping it in symval() has the desired affect. symadd() is how you get a symbol assigned to a variable. - add test for non-existent input file to run() command. - extend list() command to initialize new list with contents of old list supplied as the first argument, i.e. with "l1=1,2,3; l2=list(v),4" lists l1 and l2 are distinct, where as with "l1=1,2,3; l2=l1,4" l1 and l2 are the same. - add numframes() command to flipbook interpreter, and FrameEditor::NumFrames method. - fix bug in comterp ! operator that made it not work for anything but boolean. - show many frames at once in ivtools flipbook with a new "showframes" command. If four frames (plus background) existed in a flipbook editor, this would show the first and third frame (and the the background), when entered into the interpreter: showframes(1,4) This required generalizing the "other" frame concept of FrameEditor to be a list of other frames to see instead of a single frame. To preserve the "current frame" concept in the editor, the list of frames given to "showframes" is searched for the max frame to make it the current (and foremost) frame, then internally all other "other" frames are stored as negative offsets from this frame. It would be possible to have a mode (a keyword flag) on "showframes" to interpret the input list as offsets both positive and negative from the current flag (i.e. :offsets). - add ComTerp::lookup_symval(int symid), to give a non-in-place way of looking up a variable's value. - make the comterp nil command post-evaluated, so none of its arguments are processed or pushed on the stack. - fix a problem where inner-parenthesis (or extra outer parentheses) on an expression wouldn't work when part of the body of a post-evaluated command (i.e. for, cond, while, etc.). Before this didn't work: cond(1 (1+2)*3) Or this: cond(1 (1)) This time the bug wasn't in the mechanism for post-evaluating the byte-compiled script, as many similar bugs have been in the past. This time the fix was to a parser tweak adopted not that long ago to generate blank placeholders in the parser output (the postfix expression) to preserve where free-standing parentheses existed in the original expression. - and now a better fix for the inner paren problems of the comterp parser. I finally came to understand the origin of the problem was not the popping of matched stand-alone parens, but in the failure to recognize when parenthesized expressions are different from parenthesized arguments. Consider "a(b (3))" v.s. "a(2 (3))" (try this with "comtest parser" if you want. You might think the command "a" has two arguments in each case. But in the first case it has only one, and the "(3)" is interpreted as arguments for the command "b". March 9th 2000 ivtools-0.8.1 Interpreter Changes * Add the "." (dot) operator to comterp, to allow for compound variables (i.e. "a.b"). They can be used on the right-hand or left-hand side of an assignment operator, and used pretty much anywhere a symbol can be used. The first operand is either a symbol to assign an AttributeList to, or an expression that evaluates to an AttributeList. The second operand is always a symbol. They can be concatenated (i.e. "a.b.c"). * create a list func that initializes an empty list object. * extended the print func to invoke the ostream ComValue "<<" operator if it only has one argument. * add new symval command to returns the symbol value instead of looking up the value of that symbol in the variable tables. * documented acos, asin, and atan as returning radians, and cos, sin, tan as taking radians. * created autoframe command in flipbook command interpreter, and synched it with the "Auto New Frame" checkbox on the Frame pulldown menu. So now you can set/reset this feature from either the GUI or interpreter, and the GUI reflects the state. * settle on "dotname" for the command that returns the name of a name/value attribute pair. This is because "." (dot) is the operator used to create attribute list objects in the comterp command interpreter. Normally most attribute objects are automatically indirected to the attribute value when finally applied, but in this command overrides that and returns the symbol which is the attribute name. * enable the command interpreter in the text editor panel at the bottom of the flipbook user interface. * copy anything but the last line in the interpreter text buffer to the end of the buffer before executing -- like shell mode in emacs. Library Changes -- Attribute -- * migrate macro for declaring symbol-table based class ids to one place -- Attribute/_comutil.h. Rename it CLASS_SYMID (from classid). * AttributeList::add_attr fix. * new twist to the classid stuff. Now classid() gets defined as a virtual function along with static methods for class_name() and class_symid() when you add the CLASS_SYMID macro () to a class definition. This was used for identifying derived ComFunc's, ComFunc's that have a func symbol id as well, but might vary with internationalization or other custom changes to the interpreter. But the symbol id of the class name itself doesn't change. -- ComUtil -- * modify lexical scanner to preserve token state between invocations. This fixes a problem with multi-line comments when comterp is in server (when comterp is receiving input strings one at a time from an external source). However, this does not fix the problem with multi-line strings when comterp is in server mode, which will require a better solution for preserving more of the token state (i.e. the partial token buffer) between invocations. This is also a necessary step in preserving parallel use of one lexical scanner by more than one comterp in the same program. -- ComTerp -- * fix a problem in server-mode comterp. Part of making server-mode work was figuring out how to return from the depths of the lexical scanner in the middle of an expression, when an expression continues across multiple-lines, but the capability to retrieve a new line (or string) is external to the parser/scanner. To make this work I made up the convention that if the input function (the function pointer with an fgets signature passed to the parser/scanner C routines) returns a null string (a string that begins with '\000'), return out of the scanner and parser, yet assume there is more to come. When that function (ComTerpServ::s_fgets) was going to return the null string, it still traversed the entire input buffer, which is huge by default. * compress some code by making use of the new ComValue::is_object(int classid) method to test both whether something has a generic void* pointer for its value, and whether it has a known matching classid (based on a id in a symbol table for that kind of object). * migrate ComValue::geta() to AttributeValue::geta(). This is the method that returns a void* to an ObjectType if the classid matches. Work for every object but ComFunc's and AttributeValueList's, which have their own types (CommandType and ArrayType). -- IVGlyph -- * new Dialog methods to support stay-up dialog boxes that don't block events being handled by the main application: void map_for(Window*); virtual void map_for_aligned(Window*, float xalign, float yalign); void map_at(Coord x, Coord y); virtual void map_at_aligned( Coord x, Coord y, float xalign, float yalign ); void unmap(); boolean mapped(); These are an alternate to the pre-existing Dialog::post_* methods, which map the dialog box to the screen then enter their own event handling loop (the run() method), then unmap the dialog box when done. With this new approach you call one of the Dialog::map_* methods to bring up the dialog box, and control returns to the normal event-handling loop of the main application. The action taken when a Close or OK button has to be different with this new approach. Instead of setting a flag that causes the local run loop to terminate, you need to explicitly call Dialog::unmap. Dialog::unmapped is provided as a way to test if the dialog is currently displayed. Repeated calls to Dialog::map_* are ok, because the first thing these methods do is check if already mapped, and if so they do nothing. * create a new ObsTextDialog that uses the new Dialog::map_* methods (IVGlyph/odialogs.[ch]). * store the symbol id for a given ComFunc in a new _funcid member variable. * create a ComTerp::eval_expr method that takes an array of fully code-converted ComValue's ready to be executed. * so that a ComFunc execute method can ask ComTerp to invoke a certain ComFunc on the subsequent symbol to be encountered after the ComFunc execute method returns (ComTerp::func_for_next_sym()). * modify the various func of symbolfunc.c to generate scalar or vector results depending on whether there is a single or multiple argument. Affected are symbol, symid, and symvar. * add mechanism to ComTerp to pass values to the next expression (ComTerp::val_for_next_func) and invoke a func on the next symbol (ComTerp::func_for_next_sym). This allows for the stringing together of stand-alone expressions interspersed by keywords that lack parenthization. * add ComValue constructor that takes a ComFunc* directly and makes something of CommandType. * derive ComGlyph's ComTextEditor and ComTE_View from IVGlyph's EivTextEditor and TE_View. This adds an interactive command interpreter capability to the text editor object, where the user can enter expressions and see results computed. While a command history plus anything else goes to stdout, the results follow just the expression, so it is sometimes easier to keep track of the commands you're using. All of stdout could be rerouted to the texteditor window in the future. vhclmaps vhclviewer is the first place in the source tree where this capability is exposed for now. Check it out. -- OverlayUnidraw -- * the GraphicLoc tool to use the new ObsTextDialog box. Now the GraphicLoc dialog box can stay up between uses of the tool, and each new click refreshes the displayed text. -- FrameUnidraw -- * generalize the "select" command of comdraw to work in the interpreter of flipbook and anything derived from flipbook, by using the OverlayEditor::GetFrame() virtual method, which hides the fact whether a multi-frame system is in place or not. Miscellaneous and Config Changes * change the default behavior of make with no arguments to be the same as "make World" the first time it used. So now ivtools can build out of the box with the ubiquitous "./configure;make" * add --enable-install-subdir argument to ./configure. This allows a user to install in /usr/local/lib/ivtools and /usr/local/bin/ivtools if they want (/usr/local can be changed with --prefix). * change src/scripts/mkdirhier.sh to work with new versions of mkdir that no longer accept multiple arguments. * pare down the various config/site.def.$CPU files to the things actually used/required. Take out all definitions now provided by the ./configure script. * patches submitted by Gregor Zych to compile ivtools-0.8 with frozen Debian Potato. The first patch adds a function definition that is disabled by default. Someone would need to change the #if clause to correctly test for the Debian 2.2 release. This was the only thing that didn't compile smoothly on RedHat 5.1. * give variable names to all the constructor arguments in Attribute/attrvalue.h and ComTerp/comvalue.h, to improve the PERCEPS extracted web page. * change signature of accept() used in utils/sockets.cc to use an unsigned instead of signed int* as the third argument. This seems to be more the recent standard. - format bug in ComValue::ULongType ostream output. January 18th 2000 ivtools-0.8 Drawing Editor Changes * add "center" and "mbr" commands to comdraw, to return the center and minimum-bounding rectangle of a graphic. * make select-all the default behavior of the comdraw "select" command. * add -stripped argument to comdraw, to remove menubar and toolbar. Use a -geometry as well to specify size of canvas. Control resultant program via stdin or telnet using the builtin command interpreter. * add Pull/Push By One Commands to the Structure menu in drawtool, also making them available to any OverlayUnidraw based program. Interpreter Changes * add LISP-like symbol assignment semantics to comterp. Now expressions that return a symbol can appear on the right hand or left hand side of an assigment operator. See new command "symvar", and "symbol" has been renamed "symval". * add support for command aliases to comterp, to allow multiple symbols to point to a command without having them listed via help. * make posteval((1)) work, by improved handling of the token generated for the extra nested parens. Problem still remain with the handling of some forms of nested parens in post-evaluated expressions, but this is a start at fixing them. This is the last outstanding known bug in the comterp language, though many features remain to be added. * fix problem with nested parens in post-evaluated expressions. Now commands like these work: posteval((1+2)*3) cond((1+2)*3 1 0) The problem originated when for some reason the underlying parser was modified to spew a Blank whenever it popped an empty paren pair from the parser stack. Doing that made something, I don't recall what, and could be useful in the future for representing n-depth streams by nested parens (i.e. ((1,2,3),(3,4,5),(5,6,7)) could be a 3x3 pixmap (or a list of 3 rgb values). Config and Misc. Changes * add NetBSD support. * finalize links from embedded html (extractable by PERCEPS) to pre-existing man pages. Now every man page can be reached by its corresponding classes html documentation. * test and revise the src/html/README that describes how to gen a set of ivtools html documentation. ivtools-doc/ivtools-0.8-COPYRIGHT.txt0000644000076500007650000000410007374262632017763 0ustar scottscott00000000000000As of September 6th 2000 the portion of ivtools for which Vectaport Inc. holds the copyright is made available under the GPL as well as the following license. See the file COPYING for details on the GPL. /* * Copyright (c) 2000 Vectaport Inc., IET Inc * Copyright (c) 1999 Vectaport Inc., IET Inc, R.B. Kissh and Associates * Copyright (c) 1998 Vectaport Inc., R.B. Kissh and Associates, Eric F. Kahler * Copyright (c) 1997 Vectaport Inc., R.B. Kissh and Associates * Copyright (c) 1996 Vectaport Inc., R.B. Kissh and Associates, Cider Press * Copyright (c) 1994, 1995 Vectaport Inc., Cartoactive Systems, Cider Press * Copyright (c) 1993 David B. Hollenbeck * Copyright (c) 1993 Ellemtel Telecommunication Systems Labratories * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991 Silicon Graphics, Inc. * Copyright (c) 1989 Triple Vision Inc. * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * related documentation and data files for any purpose is hereby granted * without fee, provided that the above copyright notice appear in all copies * and that both that copyright notice and this permission notice appear in * supporting documentation, and that the names of the copyright holders not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holders * make no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ ivtools-doc/ivtools-0.8-INSTALL.txt0000644000076500007650000002310607374262633017531 0ustar scottscott00000000000000 INSTALL for ivtools-0.8 Instructions for building ivtools-0.8.4 from source: 0. Compilation Environment Things you will need (or might want) before building ivtools: 0.a. a Unix machine. We know it has been built on Linux, NetBSD, Solaris, Irix, Dec Alpha, HPUX, and SunOS. Alternately it can be built on Windows NT with the Cygwin utilities from RedHat. See README.cygwin for details. 0.b. The gcc compiler. Recently we've been building and testing with egcs-1.0.3 and gcc-2.8.1. gcc-2.7.2 will still work, as probably would gcc-2.6.3. You will also need an equivalent copy of libstdc++. The libstdc++ version numbers stay roughly in synch with the gcc version numbers. If you have gcc-2.8.1 you'd want libstdc++-2.8.1, etc.. Also be aware that sometimes the include files for libstdc++ are in /usr/local/include/g++-2, a place that cannot be auto-determined by the configure script. Establishing a symbolic link to /usr/local/include/g++ will fix the problem. 0.c. An installed copy of X11R6 as distributed by the Open Group, or an equivalent (XFree86 for Linux, or X11R5 from MIT). If you use a vendor's X11 product, the product should be based on X11R4 or later and the product should include imake and the config files. If you can't find imake on your system, you can get the sources for imake from the X11R5 or X11R6 distribution at several public ftp archives (such as ftp.x.org). ** warning -- imake used in combination with a non-GNU C preprocessor ** can be troublesome (i.e. the default one delivered with Solaris or ** DEC Alpha). You'll want to rig your PATH environment variable to ** find the gcc variant of cpp. Read more about it at ** http://www.vectaport.com/ivtools/faq.html#imakecppprob 0.d. If you want to use the polygon intersection tools, acquire and build clippoly, a LGPLed library for polygon clipping from: http://www.ph.tn.tudelft.nl/People/klamer/clippoly_entry.html Add -fPIC to the CCFLAGS in the Makefile, then do a make, then build a shared library in the clippoly directory with: "gcc -shared -o libclippoly.so *.o" (you can leave out test.o if you want). i0.e. If you want to use the network server capabilities of the ivtools programs, acquire and build ACE, a C++ middleware toolkit available from: http://www.cs.wustl.edu/%7Eschmidt/ACE.html We currently use ACE-5.1. If you have problems with the ./configure script, consider using the latest beta version of ACE instead. 0.f if you want to build the ivxt example program, which demonstrates the embedding of a ivtools drawing editor inside Motif widgets, you'll need some version of lesstif or Motif (libXm). To enable the ivxt build change line 7 of src/Imakefile from "#if 0" to "#if 1".Without these libraries and include files the build of ivxt will fail, which can be safely ignored. 0.g Finally, you might have an interest in building the IueServ library and iueserv program, a networked command interpreter wrapped around the class libraries of the Image Understanding Environment. See http://www.aai.com/AAI/IUE/IUE.html for details on acquiring and building this sizeable collection of public-domain and free software class libraries for image understanding application development. 1. Configuring ivtools: 1.a. You no longer need to set your CPU environment variable to build ivtools, but you still need a CPU specific configuration file. Ready-made configurations that have been known to work exist for LINUX, SUN4 (and Solaris), SGI, HP800 (HPUX), ALPHA, NETSBD, and now CYGWIN (for Windows NT). Use "make CPU" from the top directory to see the symbol ivtools will use for your OS (grep config/arch.def for ArchitectureName to get a complete list of possible OS'es). Then look for a matching config/site.def. file, where is the value returned by "make CPU". If it is there proceed to step 1.b. Other variants of Unix can be attempted by creating the corresponding config/site.def., i.e. site.def.AIX or site.def.MIPS. Use SUN4 for Solaris as well as SunOS. Although SUN5 would be more correct, the config files automatically determine the difference between the two OS'es by checking for SVR4'ness. 1.b Run the configure script in the top-level directory, by entering "./configure" followed by any of the following arguments (--with arguments are recognized as --enable as well): --with-ace= Path to ACE source --with-ace-libs= Path to ACE libraries --with-clippoly= Path to clippoly source --with-clippoly-libs= Path to clippoly libraries --with-iue= Path to IUE source --with-iue-libs= Path to IUE libraries --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR --enable-install-relative[=ARG] install relative to source tree --enable-install-subdir[=ARG] install in ivtools sub-directory --prefix=DIR to use when install-relative is false (default is /usr/local) --enable-use-rpath[=ARG] use -rpath when linking, to embed shared-library pathnames in executable. ARG can be 0 or 1, default is 1 when not specified. The configure script is usually able to automatically determine --x-includes and --x-libraries (except on DEC Alpha). If the arguments for ACE, clippoly, or IUE are not supplied, the configure script prints a reminder, then proceeds to set up to build ivtools without these libraries. If you want to run the executables without installing them, use --enable-use-rpath to embed the shared library pathnames into the executables at link time. Here is an example of using the configure script with ACE and clippoly libraries: ./configure --with-clippoly=/proj/clippoly --with-ace=/proj/ACE_wrappers Running the configure script generates two files, a config/config.mk that gets included into each Makefile when used, and a config/config--gcc.defs that gets used by "make Makefiles" described below. is something like linux. The last line of output from the configure script shows this pathname. Verify that this is the same as the file included at the end of the config/site.def. file. Change the site.def. file if necessary. Also you may want to review the rest of the entries in the site.def. file to see if they are good defaults for your system. ** See http://www.vectaport.com/ivtools/faq.html for more info. 2. Compiling ivtools: 2.a. cd to the ivtools-0.8/ directory (you'd already be in this directory after running the configure script). 2.b. Compile it with a "make" command. The first time it is run it does all these individual steps (the equivalent of "make World"): - regenerates the top-level Makefile to snap it to the current directory ("make Makefile"). - runs through the source tree and generates all the other Makefile's ("make Makefiles"). - generates compilation dependencies for each directory with code to compile -- see the Makefile.depend file in each sub-directory ("make depend"). - compiles and links everything ("make -k"). If you have any trouble at this stage take a look at: http://www.vectaport.com/ivtools/faq.html#SourceBuild ** Subsequent use of "make" will only do the "make -k" phase described ** above. To redo everything, either do a "make World", or do a "make ** clean" followed by a "make". The "make clean" deletes the files ** that suppress the make stateges, make.makefile, make.makefiles, ** make.depend, and make.make. 3. Testing: Each directory under ivtools-0.8/src that begins in lower case (except for "include" and "scripts") contains executables that exercise some particular functionality. "cd" to each particular directory, type "/a.out" and see what happens (the utils directory contains more than one executable, things named other than a.out). Quite a few directories have README's that go into further detail on how to use the programs. ivtools-0.8/src/glyphs contains sub-directories of glyph example programs. ivtools-0.8/src/glyphs/examples3.1 contains most of the simple example programs that were originally distributed with InterViews 3.1. There is also a src/tests directory, with one test program to date, y2k/y2ktest.c. This builds a small program that verifies the Date object of the Time class library has no problem with Y2K or Y2.038K, by allowing the user to enter "+" and "-" to increment/decrement the year past these boundaries. 4. Installation: "make install" is supported for all the libraries and a subset of the more utilitarian example programs: the four original InterViews programs (idraw, iclass, idemo, and dclock), the four idraw derived programs (drawtool, netdraw, flipbook, and comdraw) and the two comterp programs (comterp and glyphterp). In addition the scripts in src/scripts and utilities in src/utils get installed. "make uninstall" is supported as well. When relative install is enabled (--enable-install-relative for the configure script), the binaries are installed in ivtools-0.8/bin/, the libraries are installed in ivtools-0.8/lib/, and the run-time X resource and config files are installed in ivtools-0.8/lib/ivtools. When relative install is disabled (the default for the configure script) the binaries are installed as stripped executables in `prefix`/bin the libraries are installed in `prefix`/lib, and the run-time X resource and config files are installed in `prefix`/lib/ivtools. note: idemo, comterp, glyphterp, and comdraw have config files that must be installed (either relative or non-relative) for the program to find them at runtime. drawtool relies on several scripts and utilities for accessing graphics and image files that must be installed as well for them to work. ivtools-doc/ivtools-0.8-MANIFEST.txt0000644000076500007650000020757007374262633017642 0ustar scottscott00000000000000ivtools-0.8/CHANGES ivtools-0.8/CHANGES-0.4 ivtools-0.8/CHANGES-0.5 ivtools-0.8/CHANGES-0.6 ivtools-0.8/CHANGES-0.7 ivtools-0.8/COPYRIGHT ivtools-0.8/COPYRIGHT.proposed ivtools-0.8/INSTALL ivtools-0.8/Imakefile ivtools-0.8/MANIFEST ivtools-0.8/MANIFEST.comterp ivtools-0.8/MANIFEST.perceps ivtools-0.8/Makefile ivtools-0.8/README ivtools-0.8/README.cygwin ivtools-0.8/README.ivmkcm ivtools-0.8/VERSION ivtools-0.8/aclocal.m4 ivtools-0.8/comtop.tgz ivtools-0.8/config/Imakefile ivtools-0.8/config/InterViews/Imakefile ivtools-0.8/config/InterViews/Makefile ivtools-0.8/config/InterViews/TIFF.def ivtools-0.8/config/InterViews/arch.def ivtools-0.8/config/InterViews/cxx.def ivtools-0.8/config/InterViews/iv-DGUX.cf ivtools-0.8/config/InterViews/iv-Mips.cf ivtools-0.8/config/InterViews/iv-aix.cf ivtools-0.8/config/InterViews/iv-alpha.cf ivtools-0.8/config/InterViews/iv-apollo.cf ivtools-0.8/config/InterViews/iv-att.cf ivtools-0.8/config/InterViews/iv-bsd.cf ivtools-0.8/config/InterViews/iv-convex.cf ivtools-0.8/config/InterViews/iv-cray.cf ivtools-0.8/config/InterViews/iv-cygwin.cf ivtools-0.8/config/InterViews/iv-freebsd.cf ivtools-0.8/config/InterViews/iv-generic.cf ivtools-0.8/config/InterViews/iv-hp.cf ivtools-0.8/config/InterViews/iv-ibm.cf ivtools-0.8/config/InterViews/iv-linux.cf ivtools-0.8/config/InterViews/iv-luna.cf ivtools-0.8/config/InterViews/iv-m4330.cf ivtools-0.8/config/InterViews/iv-macII.cf ivtools-0.8/config/InterViews/iv-moto.cf ivtools-0.8/config/InterViews/iv-netbsd.cf ivtools-0.8/config/InterViews/iv-pegasus.cf ivtools-0.8/config/InterViews/iv-sgi.cf ivtools-0.8/config/InterViews/iv-sony.cf ivtools-0.8/config/InterViews/iv-stellar.cf ivtools-0.8/config/InterViews/iv-stratus.cf ivtools-0.8/config/InterViews/iv-sun.cf ivtools-0.8/config/InterViews/iv-ultrix.cf ivtools-0.8/config/InterViews/iv-x386.cf ivtools-0.8/config/InterViews/local.def ivtools-0.8/config/InterViews/params.def ivtools-0.8/config/InterViews/rules.def ivtools-0.8/config/InterViews/xparams.cf ivtools-0.8/config/Makefile ivtools-0.8/config/alpha3.0-gcc.mk ivtools-0.8/config/alpha3.2-gcc.mk ivtools-0.8/config/alpha4-gcc.mk ivtools-0.8/config/arch.def ivtools-0.8/config/config.defs.in ivtools-0.8/config/config.mk ivtools-0.8/config/config.null.mk ivtools-0.8/config/default-gcc.mk ivtools-0.8/config/freebsd-gcc.mk ivtools-0.8/config/freebsd2.1-gcc.mk ivtools-0.8/config/gcc.def ivtools-0.8/config/hpux-gcc.mk ivtools-0.8/config/hpux10.20-gcc.mk ivtools-0.8/config/irix5-gcc.mk ivtools-0.8/config/irix6-gcc.mk ivtools-0.8/config/linux-gcc.mk ivtools-0.8/config/local.def ivtools-0.8/config/m88k-sysv3-gcc.mk ivtools-0.8/config/m88k-sysv4-gcc.mk ivtools-0.8/config/makevars.def ivtools-0.8/config/netbsd-gcc.mk ivtools-0.8/config/params.def ivtools-0.8/config/rules.def ivtools-0.8/config/sco3.2.4-gcc.mk ivtools-0.8/config/site.def.ALPHA ivtools-0.8/config/site.def.CYGWIN ivtools-0.8/config/site.def.FREEBSD ivtools-0.8/config/site.def.HP800 ivtools-0.8/config/site.def.LINUX ivtools-0.8/config/site.def.NETBSD ivtools-0.8/config/site.def.SGI ivtools-0.8/config/site.def.SUN4 ivtools-0.8/config/solaris-gcc.mk ivtools-0.8/config/sunos4-gcc.mk ivtools-0.8/config/template ivtools-0.8/configure ivtools-0.8/configure.in ivtools-0.8/configure.notes ivtools-0.8/src/AceDispatch/Imakefile ivtools-0.8/src/AceDispatch/Makefile ivtools-0.8/src/AceDispatch/ace_dispatcher.c ivtools-0.8/src/AceDispatch/ace_dispatcher.h ivtools-0.8/src/AceDispatch/ace_iohandler.c ivtools-0.8/src/AceDispatch/ace_iohandler.h ivtools-0.8/src/AttrGlyph/Imakefile ivtools-0.8/src/AttrGlyph/Makefile ivtools-0.8/src/AttrGlyph/attredit.c ivtools-0.8/src/AttrGlyph/attredit.h ivtools-0.8/src/Attribute/Imakefile ivtools-0.8/src/Attribute/Makefile ivtools-0.8/src/Attribute/_comterp.h ivtools-0.8/src/Attribute/_comutil.h ivtools-0.8/src/Attribute/alist.c ivtools-0.8/src/Attribute/alist.h ivtools-0.8/src/Attribute/aliterator.c ivtools-0.8/src/Attribute/aliterator.h ivtools-0.8/src/Attribute/attribute.c ivtools-0.8/src/Attribute/attribute.h ivtools-0.8/src/Attribute/attrlist.c ivtools-0.8/src/Attribute/attrlist.h ivtools-0.8/src/Attribute/attrvalue.c ivtools-0.8/src/Attribute/attrvalue.h ivtools-0.8/src/Attribute/classid.h ivtools-0.8/src/Attribute/commodule.c ivtools-0.8/src/Attribute/commodule.h ivtools-0.8/src/Attribute/lexscan.c ivtools-0.8/src/Attribute/lexscan.h ivtools-0.8/src/Attribute/paramlist.c ivtools-0.8/src/Attribute/paramlist.h ivtools-0.8/src/ComGlyph/Imakefile ivtools-0.8/src/ComGlyph/Makefile ivtools-0.8/src/ComGlyph/attrdialog.c ivtools-0.8/src/ComGlyph/attrdialog.h ivtools-0.8/src/ComGlyph/comtextedit.c ivtools-0.8/src/ComGlyph/comtextedit.h ivtools-0.8/src/ComGlyph/comtextview.c ivtools-0.8/src/ComGlyph/comtextview.h ivtools-0.8/src/ComGlyph/terpdialog.c ivtools-0.8/src/ComGlyph/terpdialog.h ivtools-0.8/src/ComTerp/Imakefile ivtools-0.8/src/ComTerp/Makefile ivtools-0.8/src/ComTerp/_comterp.h ivtools-0.8/src/ComTerp/_comutil.h ivtools-0.8/src/ComTerp/assignfunc.c ivtools-0.8/src/ComTerp/assignfunc.h ivtools-0.8/src/ComTerp/boolfunc.c ivtools-0.8/src/ComTerp/boolfunc.h ivtools-0.8/src/ComTerp/bquotefunc.c ivtools-0.8/src/ComTerp/bquotefunc.h ivtools-0.8/src/ComTerp/comfunc.c ivtools-0.8/src/ComTerp/comfunc.h ivtools-0.8/src/ComTerp/comhandler.c ivtools-0.8/src/ComTerp/comhandler.h ivtools-0.8/src/ComTerp/commodule.h ivtools-0.8/src/ComTerp/comterp.c ivtools-0.8/src/ComTerp/comterp.h ivtools-0.8/src/ComTerp/comterpserv.c ivtools-0.8/src/ComTerp/comterpserv.h ivtools-0.8/src/ComTerp/comvalue.c ivtools-0.8/src/ComTerp/comvalue.h ivtools-0.8/src/ComTerp/condfunc.c ivtools-0.8/src/ComTerp/condfunc.h ivtools-0.8/src/ComTerp/ctrlfunc.c ivtools-0.8/src/ComTerp/ctrlfunc.h ivtools-0.8/src/ComTerp/debugfunc.c ivtools-0.8/src/ComTerp/debugfunc.h ivtools-0.8/src/ComTerp/dotfunc.c ivtools-0.8/src/ComTerp/dotfunc.h ivtools-0.8/src/ComTerp/helpfunc.c ivtools-0.8/src/ComTerp/helpfunc.h ivtools-0.8/src/ComTerp/iofunc.c ivtools-0.8/src/ComTerp/iofunc.h ivtools-0.8/src/ComTerp/lexscan.h ivtools-0.8/src/ComTerp/listfunc.c ivtools-0.8/src/ComTerp/listfunc.h ivtools-0.8/src/ComTerp/mathfunc.c ivtools-0.8/src/ComTerp/mathfunc.h ivtools-0.8/src/ComTerp/numfunc.c ivtools-0.8/src/ComTerp/numfunc.h ivtools-0.8/src/ComTerp/parser.c ivtools-0.8/src/ComTerp/parser.h ivtools-0.8/src/ComTerp/postfunc.c ivtools-0.8/src/ComTerp/postfunc.h ivtools-0.8/src/ComTerp/randfunc.c ivtools-0.8/src/ComTerp/randfunc.h ivtools-0.8/src/ComTerp/scanner.c ivtools-0.8/src/ComTerp/scanner.h ivtools-0.8/src/ComTerp/statfunc.c ivtools-0.8/src/ComTerp/statfunc.h ivtools-0.8/src/ComTerp/strmfunc.c ivtools-0.8/src/ComTerp/strmfunc.h ivtools-0.8/src/ComTerp/symbolfunc.c ivtools-0.8/src/ComTerp/symbolfunc.h ivtools-0.8/src/ComTerp/typefunc.c ivtools-0.8/src/ComTerp/typefunc.h ivtools-0.8/src/ComTerp/xformfunc.c ivtools-0.8/src/ComTerp/xformfunc.h ivtools-0.8/src/ComUnidraw/Imakefile ivtools-0.8/src/ComUnidraw/Makefile ivtools-0.8/src/ComUnidraw/comeditor.c ivtools-0.8/src/ComUnidraw/comeditor.h ivtools-0.8/src/ComUnidraw/comterp-acehandler.c ivtools-0.8/src/ComUnidraw/comterp-acehandler.h ivtools-0.8/src/ComUnidraw/comterp-iohandler.c ivtools-0.8/src/ComUnidraw/comterp-iohandler.h ivtools-0.8/src/ComUnidraw/dialogfunc.c ivtools-0.8/src/ComUnidraw/dialogfunc.h ivtools-0.8/src/ComUnidraw/grdotfunc.c ivtools-0.8/src/ComUnidraw/grdotfunc.h ivtools-0.8/src/ComUnidraw/grfunc.c ivtools-0.8/src/ComUnidraw/grfunc.h ivtools-0.8/src/ComUnidraw/grlistfunc.c ivtools-0.8/src/ComUnidraw/grlistfunc.h ivtools-0.8/src/ComUnidraw/groupfunc.c ivtools-0.8/src/ComUnidraw/groupfunc.h ivtools-0.8/src/ComUnidraw/grstatfunc.c ivtools-0.8/src/ComUnidraw/grstatfunc.h ivtools-0.8/src/ComUnidraw/highlightfunc.c ivtools-0.8/src/ComUnidraw/highlightfunc.h ivtools-0.8/src/ComUnidraw/nfunc.c ivtools-0.8/src/ComUnidraw/nfunc.h ivtools-0.8/src/ComUnidraw/plotfunc.c ivtools-0.8/src/ComUnidraw/plotfunc.h ivtools-0.8/src/ComUnidraw/unifunc.c ivtools-0.8/src/ComUnidraw/unifunc.h ivtools-0.8/src/ComUtil/Imakefile ivtools-0.8/src/ComUtil/Makefile ivtools-0.8/src/ComUtil/_lexscan.c ivtools-0.8/src/ComUtil/_parser.c ivtools-0.8/src/ComUtil/_scanner.c ivtools-0.8/src/ComUtil/atox.c ivtools-0.8/src/ComUtil/comerr.c ivtools-0.8/src/ComUtil/comterp.arg ivtools-0.8/src/ComUtil/comterp.ci ivtools-0.8/src/ComUtil/comterp.err ivtools-0.8/src/ComUtil/comterp.h ivtools-0.8/src/ComUtil/comutil.arg ivtools-0.8/src/ComUtil/comutil.ci ivtools-0.8/src/ComUtil/comutil.h ivtools-0.8/src/ComUtil/dmm.c ivtools-0.8/src/ComUtil/errfile.c ivtools-0.8/src/ComUtil/errsys.c ivtools-0.8/src/ComUtil/funcptrs.c ivtools-0.8/src/ComUtil/mblock.c ivtools-0.8/src/ComUtil/optable.c ivtools-0.8/src/ComUtil/symbols.c ivtools-0.8/src/ComUtil/txtutil.c ivtools-0.8/src/ComUtil/types.c ivtools-0.8/src/ComUtil/util.c ivtools-0.8/src/ComUtil/util.h ivtools-0.8/src/ComUtil/xdll.c ivtools-0.8/src/Dispatch/Imakefile ivtools-0.8/src/Dispatch/Makefile ivtools-0.8/src/Dispatch/dispatcher.c ivtools-0.8/src/Dispatch/iohandler.c ivtools-0.8/src/Dispatch/iostreamb.c ivtools-0.8/src/Dispatch/netinet_in.h ivtools-0.8/src/Dispatch/rpcbuf.c ivtools-0.8/src/Dispatch/rpchdr.c ivtools-0.8/src/Dispatch/rpcpeer.c ivtools-0.8/src/Dispatch/rpcreader.c ivtools-0.8/src/Dispatch/rpcregistry.c ivtools-0.8/src/Dispatch/rpcservice.c ivtools-0.8/src/Dispatch/rpcstream.c ivtools-0.8/src/Dispatch/rpcwriter.c ivtools-0.8/src/DrawServ/Imakefile ivtools-0.8/src/DrawServ/Makefile ivtools-0.8/src/DrawServ/drawcatalog.c ivtools-0.8/src/DrawServ/drawcatalog.h ivtools-0.8/src/DrawServ/drawclasses.h ivtools-0.8/src/DrawServ/drawcomps.c ivtools-0.8/src/DrawServ/drawcomps.h ivtools-0.8/src/DrawServ/drawcreator.c ivtools-0.8/src/DrawServ/drawcreator.h ivtools-0.8/src/DrawServ/drawkit.c ivtools-0.8/src/DrawServ/drawkit.h ivtools-0.8/src/DrawServ/drawviews.c ivtools-0.8/src/DrawServ/drawviews.h ivtools-0.8/src/FrameUnidraw/Imakefile ivtools-0.8/src/FrameUnidraw/Makefile ivtools-0.8/src/FrameUnidraw/framecatalog.c ivtools-0.8/src/FrameUnidraw/framecatalog.h ivtools-0.8/src/FrameUnidraw/frameclasses.h ivtools-0.8/src/FrameUnidraw/framecmds.c ivtools-0.8/src/FrameUnidraw/framecmds.h ivtools-0.8/src/FrameUnidraw/framecomps.c ivtools-0.8/src/FrameUnidraw/framecomps.h ivtools-0.8/src/FrameUnidraw/framecreator.c ivtools-0.8/src/FrameUnidraw/framecreator.h ivtools-0.8/src/FrameUnidraw/frameeditor.c ivtools-0.8/src/FrameUnidraw/frameeditor.h ivtools-0.8/src/FrameUnidraw/framefile.c ivtools-0.8/src/FrameUnidraw/framefile.h ivtools-0.8/src/FrameUnidraw/framefunc.c ivtools-0.8/src/FrameUnidraw/framefunc.h ivtools-0.8/src/FrameUnidraw/framekit.c ivtools-0.8/src/FrameUnidraw/framekit.h ivtools-0.8/src/FrameUnidraw/frameps.c ivtools-0.8/src/FrameUnidraw/frameps.h ivtools-0.8/src/FrameUnidraw/framescripts.c ivtools-0.8/src/FrameUnidraw/framescripts.h ivtools-0.8/src/FrameUnidraw/framestates.c ivtools-0.8/src/FrameUnidraw/framestates.h ivtools-0.8/src/FrameUnidraw/frameviewer.c ivtools-0.8/src/FrameUnidraw/frameviewer.h ivtools-0.8/src/FrameUnidraw/frameviews.c ivtools-0.8/src/FrameUnidraw/frameviews.h ivtools-0.8/src/GraphUnidraw/Imakefile ivtools-0.8/src/GraphUnidraw/Makefile ivtools-0.8/src/GraphUnidraw/edgecomp.c ivtools-0.8/src/GraphUnidraw/edgecomp.h ivtools-0.8/src/GraphUnidraw/graphcatalog.c ivtools-0.8/src/GraphUnidraw/graphcatalog.h ivtools-0.8/src/GraphUnidraw/graphclasses.h ivtools-0.8/src/GraphUnidraw/graphcmds.c ivtools-0.8/src/GraphUnidraw/graphcmds.h ivtools-0.8/src/GraphUnidraw/graphcomp.c ivtools-0.8/src/GraphUnidraw/graphcomp.h ivtools-0.8/src/GraphUnidraw/graphcreator.c ivtools-0.8/src/GraphUnidraw/graphcreator.h ivtools-0.8/src/GraphUnidraw/graphdata.c ivtools-0.8/src/GraphUnidraw/graphdata.h ivtools-0.8/src/GraphUnidraw/graphdialog.c ivtools-0.8/src/GraphUnidraw/graphdialog.h ivtools-0.8/src/GraphUnidraw/grapheditor.c ivtools-0.8/src/GraphUnidraw/grapheditor.h ivtools-0.8/src/GraphUnidraw/graphimport.c ivtools-0.8/src/GraphUnidraw/graphimport.h ivtools-0.8/src/GraphUnidraw/graphkit.c ivtools-0.8/src/GraphUnidraw/graphkit.h ivtools-0.8/src/GraphUnidraw/graphtools.c ivtools-0.8/src/GraphUnidraw/graphtools.h ivtools-0.8/src/GraphUnidraw/nodecomp.c ivtools-0.8/src/GraphUnidraw/nodecomp.h ivtools-0.8/src/IV-2_6/Imakefile ivtools-0.8/src/IV-2_6/Makefile ivtools-0.8/src/IV-2_6/adjuster2_6.c ivtools-0.8/src/IV-2_6/banner.c ivtools-0.8/src/IV-2_6/border2_6.c ivtools-0.8/src/IV-2_6/box2_6.c ivtools-0.8/src/IV-2_6/button2_6.c ivtools-0.8/src/IV-2_6/compeditor.c ivtools-0.8/src/IV-2_6/control.c ivtools-0.8/src/IV-2_6/deck2_6.c ivtools-0.8/src/IV-2_6/dialog2_6.c ivtools-0.8/src/IV-2_6/filebrowser.c ivtools-0.8/src/IV-2_6/filechooser.c ivtools-0.8/src/IV-2_6/frame.c ivtools-0.8/src/IV-2_6/glue2_6.c ivtools-0.8/src/IV-2_6/interactor.c ivtools-0.8/src/IV-2_6/matcheditor.c ivtools-0.8/src/IV-2_6/menu2_6.c ivtools-0.8/src/IV-2_6/message.c ivtools-0.8/src/IV-2_6/painter.c ivtools-0.8/src/IV-2_6/panner2_6.c ivtools-0.8/src/IV-2_6/perspective.c ivtools-0.8/src/IV-2_6/rubband.c ivtools-0.8/src/IV-2_6/rubcurve.c ivtools-0.8/src/IV-2_6/rubgroup.c ivtools-0.8/src/IV-2_6/rubline.c ivtools-0.8/src/IV-2_6/rubrect.c ivtools-0.8/src/IV-2_6/rubverts.c ivtools-0.8/src/IV-2_6/scene.c ivtools-0.8/src/IV-2_6/scrollbar2_6.c ivtools-0.8/src/IV-2_6/scroller2_6.c ivtools-0.8/src/IV-2_6/sensor.c ivtools-0.8/src/IV-2_6/shape.c ivtools-0.8/src/IV-2_6/strbrowser.c ivtools-0.8/src/IV-2_6/strchooser.c ivtools-0.8/src/IV-2_6/streditor.c ivtools-0.8/src/IV-2_6/subject.c ivtools-0.8/src/IV-2_6/textbuffer.c ivtools-0.8/src/IV-2_6/textdisplay.c ivtools-0.8/src/IV-2_6/texteditor.c ivtools-0.8/src/IV-2_6/tform2_6.c ivtools-0.8/src/IV-2_6/tray.c ivtools-0.8/src/IV-2_6/viewport.c ivtools-0.8/src/IV-2_6/world.c ivtools-0.8/src/IV-2_6/xbitmap2_6.c ivtools-0.8/src/IV-2_6/xevent2_6.c ivtools-0.8/src/IV-2_6/xinter.c ivtools-0.8/src/IV-2_6/xpainter.c ivtools-0.8/src/IV-2_6/xpattern.c ivtools-0.8/src/IV-X11/Imakefile ivtools-0.8/src/IV-X11/Makefile ivtools-0.8/src/IV-X11/glcontext.c ivtools-0.8/src/IV-X11/wtable.h ivtools-0.8/src/IV-X11/xbitmap.c ivtools-0.8/src/IV-X11/xbrush.c ivtools-0.8/src/IV-X11/xcanvas.c ivtools-0.8/src/IV-X11/xcolor.c ivtools-0.8/src/IV-X11/xcursor.c ivtools-0.8/src/IV-X11/xdrag.c ivtools-0.8/src/IV-X11/xevent.c ivtools-0.8/src/IV-X11/xfont.c ivtools-0.8/src/IV-X11/xraster.c ivtools-0.8/src/IV-X11/xreqerr.c ivtools-0.8/src/IV-X11/xselection.c ivtools-0.8/src/IV-X11/xwindow.c ivtools-0.8/src/IV-common/Imakefile ivtools-0.8/src/IV-common/Makefile ivtools-0.8/src/IV-common/listimpl.c ivtools-0.8/src/IV-common/math.c ivtools-0.8/src/IV-common/memory.c ivtools-0.8/src/IV-common/regexp.c ivtools-0.8/src/IV-common/resource.c ivtools-0.8/src/IV-common/string.c ivtools-0.8/src/IV-common/textbuffer.c ivtools-0.8/src/IV-common/tform2_6.c ivtools-0.8/src/IV-common/transformer.c ivtools-0.8/src/IV/Imakefile ivtools-0.8/src/IV/InterViews.defaults ivtools-0.8/src/IV/Makefile ivtools-0.8/src/IVGlyph/Imakefile ivtools-0.8/src/IVGlyph/Makefile ivtools-0.8/src/IVGlyph/bdfltform.c ivtools-0.8/src/IVGlyph/bdfltform.h ivtools-0.8/src/IVGlyph/bdtable.c ivtools-0.8/src/IVGlyph/bdtable.h ivtools-0.8/src/IVGlyph/bdvalue.c ivtools-0.8/src/IVGlyph/bdvalue.h ivtools-0.8/src/IVGlyph/boolform.c ivtools-0.8/src/IVGlyph/boolform.h ivtools-0.8/src/IVGlyph/charfield.c ivtools-0.8/src/IVGlyph/charfield.h ivtools-0.8/src/IVGlyph/dragedit.c ivtools-0.8/src/IVGlyph/dragedit.h ivtools-0.8/src/IVGlyph/enumform.c ivtools-0.8/src/IVGlyph/enumform.h ivtools-0.8/src/IVGlyph/exportchooser.c ivtools-0.8/src/IVGlyph/exportchooser.h ivtools-0.8/src/IVGlyph/fieldedit.c ivtools-0.8/src/IVGlyph/fieldedit.h ivtools-0.8/src/IVGlyph/figure.c ivtools-0.8/src/IVGlyph/figure.c ivtools-0.8/src/IVGlyph/figure.h ivtools-0.8/src/IVGlyph/figure.h ivtools-0.8/src/IVGlyph/gdialogs.c ivtools-0.8/src/IVGlyph/gdialogs.h ivtools-0.8/src/IVGlyph/globals.c ivtools-0.8/src/IVGlyph/globals.h ivtools-0.8/src/IVGlyph/grabber.bm ivtools-0.8/src/IVGlyph/grabberMask.bm ivtools-0.8/src/IVGlyph/idraw.c ivtools-0.8/src/IVGlyph/idraw.h ivtools-0.8/src/IVGlyph/importchooser.c ivtools-0.8/src/IVGlyph/importchooser.h ivtools-0.8/src/IVGlyph/namestate.c ivtools-0.8/src/IVGlyph/namestate.h ivtools-0.8/src/IVGlyph/observables.c ivtools-0.8/src/IVGlyph/observables.h ivtools-0.8/src/IVGlyph/odialogs.c ivtools-0.8/src/IVGlyph/odialogs.h ivtools-0.8/src/IVGlyph/ofilechooser.c ivtools-0.8/src/IVGlyph/ofilechooser.h ivtools-0.8/src/IVGlyph/printchooser.c ivtools-0.8/src/IVGlyph/printchooser.h ivtools-0.8/src/IVGlyph/saveaschooser.c ivtools-0.8/src/IVGlyph/saveaschooser.h ivtools-0.8/src/IVGlyph/scrollable.c ivtools-0.8/src/IVGlyph/scrollable.h ivtools-0.8/src/IVGlyph/strchooser.c ivtools-0.8/src/IVGlyph/strchooser.h ivtools-0.8/src/IVGlyph/stredit.c ivtools-0.8/src/IVGlyph/stredit.h ivtools-0.8/src/IVGlyph/strlist.c ivtools-0.8/src/IVGlyph/strlist.h ivtools-0.8/src/IVGlyph/textbuff.c ivtools-0.8/src/IVGlyph/textbuff.h ivtools-0.8/src/IVGlyph/textedit.c ivtools-0.8/src/IVGlyph/textedit.h ivtools-0.8/src/IVGlyph/texteditor.c ivtools-0.8/src/IVGlyph/texteditor.h ivtools-0.8/src/IVGlyph/textform.c ivtools-0.8/src/IVGlyph/textform.h ivtools-0.8/src/IVGlyph/textview.c ivtools-0.8/src/IVGlyph/textview.h ivtools-0.8/src/IVGlyph/textwindow.c ivtools-0.8/src/IVGlyph/textwindow.h ivtools-0.8/src/IVGlyph/toolbutton.c ivtools-0.8/src/IVGlyph/toolbutton.h ivtools-0.8/src/IVGlyph/valuator.c ivtools-0.8/src/IVGlyph/valuator.h ivtools-0.8/src/Imakefile ivtools-0.8/src/InterViews/Imakefile ivtools-0.8/src/InterViews/Makefile ivtools-0.8/src/InterViews/action.c ivtools-0.8/src/InterViews/adjust.c ivtools-0.8/src/InterViews/aggr.c ivtools-0.8/src/InterViews/align.c ivtools-0.8/src/InterViews/alloctbl.c ivtools-0.8/src/InterViews/arrcomp.c ivtools-0.8/src/InterViews/background.c ivtools-0.8/src/InterViews/bevel.c ivtools-0.8/src/InterViews/border.c ivtools-0.8/src/InterViews/box.c ivtools-0.8/src/InterViews/browser.c ivtools-0.8/src/InterViews/button.c ivtools-0.8/src/InterViews/character.c ivtools-0.8/src/InterViews/composition.c ivtools-0.8/src/InterViews/compositor.c ivtools-0.8/src/InterViews/debug.c ivtools-0.8/src/InterViews/deck.c ivtools-0.8/src/InterViews/dialogs.c ivtools-0.8/src/InterViews/fbrowser.c ivtools-0.8/src/InterViews/fchooser.c ivtools-0.8/src/InterViews/field.c ivtools-0.8/src/InterViews/geometry.c ivtools-0.8/src/InterViews/glyph.c ivtools-0.8/src/InterViews/group.c ivtools-0.8/src/InterViews/handler.c ivtools-0.8/src/InterViews/hit.c ivtools-0.8/src/InterViews/image.c ivtools-0.8/src/InterViews/input.c ivtools-0.8/src/InterViews/kit.c ivtools-0.8/src/InterViews/label.c ivtools-0.8/src/InterViews/layout.c ivtools-0.8/src/InterViews/lrmarker.c ivtools-0.8/src/InterViews/menu.c ivtools-0.8/src/InterViews/mf_dialogs.c ivtools-0.8/src/InterViews/mf_kit.c ivtools-0.8/src/InterViews/mono_kit.c ivtools-0.8/src/InterViews/monoglyph.c ivtools-0.8/src/InterViews/observe.c ivtools-0.8/src/InterViews/ol_dialogs.c ivtools-0.8/src/InterViews/ol_kit.c ivtools-0.8/src/InterViews/page.c ivtools-0.8/src/InterViews/patch.c ivtools-0.8/src/InterViews/place.c ivtools-0.8/src/InterViews/polyglyph.c ivtools-0.8/src/InterViews/printer.c ivtools-0.8/src/InterViews/psfont.c ivtools-0.8/src/InterViews/regexp.c ivtools-0.8/src/InterViews/resource.c ivtools-0.8/src/InterViews/rule.c ivtools-0.8/src/InterViews/scrbox.c ivtools-0.8/src/InterViews/session.c ivtools-0.8/src/InterViews/shadow.c ivtools-0.8/src/InterViews/simpcomp.c ivtools-0.8/src/InterViews/slider.c ivtools-0.8/src/InterViews/smf_kit.c ivtools-0.8/src/InterViews/stencil.c ivtools-0.8/src/InterViews/stepper.c ivtools-0.8/src/InterViews/style.c ivtools-0.8/src/InterViews/superpose.c ivtools-0.8/src/InterViews/target.c ivtools-0.8/src/InterViews/telltale.c ivtools-0.8/src/InterViews/texcomp.c ivtools-0.8/src/InterViews/tformsetter.c ivtools-0.8/src/InterViews/tiff.c ivtools-0.8/src/InterViews/tile.c ivtools-0.8/src/InterViews/transformer.c ivtools-0.8/src/InterViews/xymarker.c ivtools-0.8/src/IueServ/Imakefile ivtools-0.8/src/IueServ/Makefile ivtools-0.8/src/IueServ/exportfunc.c ivtools-0.8/src/IueServ/exportfunc.h ivtools-0.8/src/IueServ/ipfunc.c ivtools-0.8/src/IueServ/ipfunc.h ivtools-0.8/src/IueServ/iueclasses.h ivtools-0.8/src/IueServ/iuecomps.c ivtools-0.8/src/IueServ/iuecomps.h ivtools-0.8/src/IueServ/iuefunc.c ivtools-0.8/src/IueServ/iuefunc.h ivtools-0.8/src/IueServ/iuehandler.c ivtools-0.8/src/IueServ/iuehandler.h ivtools-0.8/src/IueServ/roifunc.c ivtools-0.8/src/IueServ/roifunc.h ivtools-0.8/src/Makefile ivtools-0.8/src/OS/Imakefile ivtools-0.8/src/OS/Makefile ivtools-0.8/src/OS/directory.c ivtools-0.8/src/OS/file.c ivtools-0.8/src/OS/host.c ivtools-0.8/src/OS/listimpl.c ivtools-0.8/src/OS/math.c ivtools-0.8/src/OS/memory.c ivtools-0.8/src/OS/string.c ivtools-0.8/src/OS/ustring.c ivtools-0.8/src/OverlayUnidraw/Imakefile ivtools-0.8/src/OverlayUnidraw/Makefile ivtools-0.8/src/OverlayUnidraw/aceimport.c ivtools-0.8/src/OverlayUnidraw/aceimport.h ivtools-0.8/src/OverlayUnidraw/algebra3.h ivtools-0.8/src/OverlayUnidraw/annotate.c ivtools-0.8/src/OverlayUnidraw/annotate.h ivtools-0.8/src/OverlayUnidraw/attrtool.c ivtools-0.8/src/OverlayUnidraw/attrtool.h ivtools-0.8/src/OverlayUnidraw/clipline.c ivtools-0.8/src/OverlayUnidraw/clipline.h ivtools-0.8/src/OverlayUnidraw/cliplinepoly.c ivtools-0.8/src/OverlayUnidraw/cliplinepoly.h ivtools-0.8/src/OverlayUnidraw/clippoly.c ivtools-0.8/src/OverlayUnidraw/clippoly.h ivtools-0.8/src/OverlayUnidraw/grayraster.c ivtools-0.8/src/OverlayUnidraw/grayraster.h ivtools-0.8/src/OverlayUnidraw/grloctool.c ivtools-0.8/src/OverlayUnidraw/grloctool.h ivtools-0.8/src/OverlayUnidraw/indexmixins.c ivtools-0.8/src/OverlayUnidraw/indexmixins.h ivtools-0.8/src/OverlayUnidraw/leakchecker.h ivtools-0.8/src/OverlayUnidraw/ovabout.c ivtools-0.8/src/OverlayUnidraw/ovabout.h ivtools-0.8/src/OverlayUnidraw/ovadjuster.c ivtools-0.8/src/OverlayUnidraw/ovadjuster.h ivtools-0.8/src/OverlayUnidraw/ovarrow.c ivtools-0.8/src/OverlayUnidraw/ovarrow.h ivtools-0.8/src/OverlayUnidraw/ovcamcmds.c ivtools-0.8/src/OverlayUnidraw/ovcamcmds.h ivtools-0.8/src/OverlayUnidraw/ovcatalog.c ivtools-0.8/src/OverlayUnidraw/ovcatalog.h ivtools-0.8/src/OverlayUnidraw/ovchainview.c ivtools-0.8/src/OverlayUnidraw/ovchainview.h ivtools-0.8/src/OverlayUnidraw/ovclasses.h ivtools-0.8/src/OverlayUnidraw/ovclip.c ivtools-0.8/src/OverlayUnidraw/ovclip.h ivtools-0.8/src/OverlayUnidraw/ovcmds.c ivtools-0.8/src/OverlayUnidraw/ovcmds.h ivtools-0.8/src/OverlayUnidraw/ovcomps.c ivtools-0.8/src/OverlayUnidraw/ovcomps.h ivtools-0.8/src/OverlayUnidraw/ovcreator.c ivtools-0.8/src/OverlayUnidraw/ovcreator.h ivtools-0.8/src/OverlayUnidraw/ovctrl.c ivtools-0.8/src/OverlayUnidraw/ovctrl.h ivtools-0.8/src/OverlayUnidraw/ovdamage.c ivtools-0.8/src/OverlayUnidraw/ovdamage.h ivtools-0.8/src/OverlayUnidraw/ovdialog.c ivtools-0.8/src/OverlayUnidraw/ovdialog.h ivtools-0.8/src/OverlayUnidraw/ovdoer.c ivtools-0.8/src/OverlayUnidraw/ovdoer.h ivtools-0.8/src/OverlayUnidraw/oved.c ivtools-0.8/src/OverlayUnidraw/oved.h ivtools-0.8/src/OverlayUnidraw/ovellipse.c ivtools-0.8/src/OverlayUnidraw/ovellipse.h ivtools-0.8/src/OverlayUnidraw/ovexport.c ivtools-0.8/src/OverlayUnidraw/ovexport.h ivtools-0.8/src/OverlayUnidraw/ovfile.c ivtools-0.8/src/OverlayUnidraw/ovfile.h ivtools-0.8/src/OverlayUnidraw/ovfixview.c ivtools-0.8/src/OverlayUnidraw/ovfixview.h ivtools-0.8/src/OverlayUnidraw/ovgdialog.c ivtools-0.8/src/OverlayUnidraw/ovgdialog.h ivtools-0.8/src/OverlayUnidraw/ovhull.c ivtools-0.8/src/OverlayUnidraw/ovhull.h ivtools-0.8/src/OverlayUnidraw/ovimport.c ivtools-0.8/src/OverlayUnidraw/ovimport.h ivtools-0.8/src/OverlayUnidraw/ovipcmds.c ivtools-0.8/src/OverlayUnidraw/ovipcmds.h ivtools-0.8/src/OverlayUnidraw/ovkit.c ivtools-0.8/src/OverlayUnidraw/ovkit.h ivtools-0.8/src/OverlayUnidraw/ovline.c ivtools-0.8/src/OverlayUnidraw/ovline.h ivtools-0.8/src/OverlayUnidraw/ovmanips.c ivtools-0.8/src/OverlayUnidraw/ovmanips.h ivtools-0.8/src/OverlayUnidraw/ovpage.c ivtools-0.8/src/OverlayUnidraw/ovpage.h ivtools-0.8/src/OverlayUnidraw/ovpainter.c ivtools-0.8/src/OverlayUnidraw/ovpainter.h ivtools-0.8/src/OverlayUnidraw/ovpanner.c ivtools-0.8/src/OverlayUnidraw/ovpanner.h ivtools-0.8/src/OverlayUnidraw/ovpolygon.c ivtools-0.8/src/OverlayUnidraw/ovpolygon.h ivtools-0.8/src/OverlayUnidraw/ovprecise.c ivtools-0.8/src/OverlayUnidraw/ovprecise.h ivtools-0.8/src/OverlayUnidraw/ovprint.c ivtools-0.8/src/OverlayUnidraw/ovprint.h ivtools-0.8/src/OverlayUnidraw/ovpspict.c ivtools-0.8/src/OverlayUnidraw/ovpspict.h ivtools-0.8/src/OverlayUnidraw/ovpsview.c ivtools-0.8/src/OverlayUnidraw/ovpsview.h ivtools-0.8/src/OverlayUnidraw/ovraster.c ivtools-0.8/src/OverlayUnidraw/ovraster.h ivtools-0.8/src/OverlayUnidraw/ovrect.c ivtools-0.8/src/OverlayUnidraw/ovrect.h ivtools-0.8/src/OverlayUnidraw/ovrestimage.c ivtools-0.8/src/OverlayUnidraw/ovrestimage.h ivtools-0.8/src/OverlayUnidraw/ovselect.c ivtools-0.8/src/OverlayUnidraw/ovselect.h ivtools-0.8/src/OverlayUnidraw/ovselection.c ivtools-0.8/src/OverlayUnidraw/ovselection.h ivtools-0.8/src/OverlayUnidraw/ovshowhide.c ivtools-0.8/src/OverlayUnidraw/ovshowhide.h ivtools-0.8/src/OverlayUnidraw/ovspline.c ivtools-0.8/src/OverlayUnidraw/ovspline.h ivtools-0.8/src/OverlayUnidraw/ovstates.c ivtools-0.8/src/OverlayUnidraw/ovstates.h ivtools-0.8/src/OverlayUnidraw/ovstencil.c ivtools-0.8/src/OverlayUnidraw/ovstencil.h ivtools-0.8/src/OverlayUnidraw/ovtext.c ivtools-0.8/src/OverlayUnidraw/ovtext.h ivtools-0.8/src/OverlayUnidraw/ovunidraw.c ivtools-0.8/src/OverlayUnidraw/ovunidraw.h ivtools-0.8/src/OverlayUnidraw/ovvars.c ivtools-0.8/src/OverlayUnidraw/ovvars.h ivtools-0.8/src/OverlayUnidraw/ovvertices.c ivtools-0.8/src/OverlayUnidraw/ovvertices.h ivtools-0.8/src/OverlayUnidraw/ovviewer.c ivtools-0.8/src/OverlayUnidraw/ovviewer.h ivtools-0.8/src/OverlayUnidraw/ovviews.c ivtools-0.8/src/OverlayUnidraw/ovviews.h ivtools-0.8/src/OverlayUnidraw/paramlist.h ivtools-0.8/src/OverlayUnidraw/phold.h ivtools-0.8/src/OverlayUnidraw/ptinpoly.c ivtools-0.8/src/OverlayUnidraw/ptinpoly.h ivtools-0.8/src/OverlayUnidraw/rastercmds.c ivtools-0.8/src/OverlayUnidraw/rastercmds.h ivtools-0.8/src/OverlayUnidraw/scriptview.c ivtools-0.8/src/OverlayUnidraw/scriptview.h ivtools-0.8/src/OverlayUnidraw/setattrbyexpr.c ivtools-0.8/src/OverlayUnidraw/setattrbyexpr.h ivtools-0.8/src/OverlayUnidraw/slctbyattr.c ivtools-0.8/src/OverlayUnidraw/slctbyattr.h ivtools-0.8/src/OverlayUnidraw/textfile.c ivtools-0.8/src/OverlayUnidraw/textfile.h ivtools-0.8/src/TIFF/Copyright ivtools-0.8/src/TIFF/HOWTO ivtools-0.8/src/TIFF/Imakefile ivtools-0.8/src/TIFF/Makefile ivtools-0.8/src/TIFF/README ivtools-0.8/src/TIFF/VERSION ivtools-0.8/src/TIFF/machdep.h ivtools-0.8/src/TIFF/mkg3states.c ivtools-0.8/src/TIFF/mkspans.c ivtools-0.8/src/TIFF/prototypes.h ivtools-0.8/src/TIFF/t4.h ivtools-0.8/src/TIFF/tif_aux.c ivtools-0.8/src/TIFF/tif_ccittrle.c ivtools-0.8/src/TIFF/tif_close.c ivtools-0.8/src/TIFF/tif_compat.c ivtools-0.8/src/TIFF/tif_compress.c ivtools-0.8/src/TIFF/tif_dir.c ivtools-0.8/src/TIFF/tif_dirinfo.c ivtools-0.8/src/TIFF/tif_dirread.c ivtools-0.8/src/TIFF/tif_dirwrite.c ivtools-0.8/src/TIFF/tif_dumpmode.c ivtools-0.8/src/TIFF/tif_error.c ivtools-0.8/src/TIFF/tif_fax3.c ivtools-0.8/src/TIFF/tif_fax3.h ivtools-0.8/src/TIFF/tif_fax4.c ivtools-0.8/src/TIFF/tif_flush.c ivtools-0.8/src/TIFF/tif_getimage.c ivtools-0.8/src/TIFF/tif_jpeg.c ivtools-0.8/src/TIFF/tif_lzw.c ivtools-0.8/src/TIFF/tif_machdep.c ivtools-0.8/src/TIFF/tif_next.c ivtools-0.8/src/TIFF/tif_open.c ivtools-0.8/src/TIFF/tif_packbits.c ivtools-0.8/src/TIFF/tif_print.c ivtools-0.8/src/TIFF/tif_read.c ivtools-0.8/src/TIFF/tif_strip.c ivtools-0.8/src/TIFF/tif_swab.c ivtools-0.8/src/TIFF/tif_thunder.c ivtools-0.8/src/TIFF/tif_tile.c ivtools-0.8/src/TIFF/tif_version.c ivtools-0.8/src/TIFF/tif_warning.c ivtools-0.8/src/TIFF/tif_write.c ivtools-0.8/src/TIFF/tiffcompat.h ivtools-0.8/src/TIFF/tiffioP.h ivtools-0.8/src/Time/Date.c ivtools-0.8/src/Time/Date.h ivtools-0.8/src/Time/Imakefile ivtools-0.8/src/Time/Makefile ivtools-0.8/src/Time/Time.c ivtools-0.8/src/Time/Time.h ivtools-0.8/src/Time/obstime.c ivtools-0.8/src/Time/obstime.h ivtools-0.8/src/Time/timeglyph.c ivtools-0.8/src/Time/timeglyph.h ivtools-0.8/src/TopoFace/Imakefile ivtools-0.8/src/TopoFace/Makefile ivtools-0.8/src/TopoFace/fgeomobjs.c ivtools-0.8/src/TopoFace/fgeomobjs.h ivtools-0.8/src/TopoFace/topoedge.c ivtools-0.8/src/TopoFace/topoedge.h ivtools-0.8/src/TopoFace/topoedgelist.c ivtools-0.8/src/TopoFace/topoedgelist.h ivtools-0.8/src/TopoFace/topoelt.c ivtools-0.8/src/TopoFace/topoelt.h ivtools-0.8/src/TopoFace/topoface.c ivtools-0.8/src/TopoFace/topoface.h ivtools-0.8/src/TopoFace/toponode.c ivtools-0.8/src/TopoFace/toponode.h ivtools-0.8/src/UniIdraw/Imakefile ivtools-0.8/src/UniIdraw/Makefile ivtools-0.8/src/UniIdraw/idarrow.c ivtools-0.8/src/UniIdraw/idarrow.h ivtools-0.8/src/UniIdraw/idarrowhead.c ivtools-0.8/src/UniIdraw/idarrowhead.h ivtools-0.8/src/UniIdraw/idarrows.c ivtools-0.8/src/UniIdraw/idarrows.h ivtools-0.8/src/UniIdraw/idcatalog.c ivtools-0.8/src/UniIdraw/idcatalog.h ivtools-0.8/src/UniIdraw/idclasses.h ivtools-0.8/src/UniIdraw/idcmds.c ivtools-0.8/src/UniIdraw/idcmds.h ivtools-0.8/src/UniIdraw/idcomp.c ivtools-0.8/src/UniIdraw/idcomp.h ivtools-0.8/src/UniIdraw/idcreator.c ivtools-0.8/src/UniIdraw/idcreator.h ivtools-0.8/src/UniIdraw/iddialogs.c ivtools-0.8/src/UniIdraw/iddialogs.h ivtools-0.8/src/UniIdraw/ided.c ivtools-0.8/src/UniIdraw/ided.h ivtools-0.8/src/UniIdraw/idkybd.c ivtools-0.8/src/UniIdraw/idkybd.h ivtools-0.8/src/UniIdraw/idvars.c ivtools-0.8/src/UniIdraw/idvars.h ivtools-0.8/src/UniIdraw/idversion.h ivtools-0.8/src/Unidraw-common/Imakefile ivtools-0.8/src/Unidraw-common/Makefile ivtools-0.8/src/Unidraw-common/component.c ivtools-0.8/src/Unidraw-common/compview.c ivtools-0.8/src/Unidraw-common/geomobjs.c ivtools-0.8/src/Unidraw-common/iterator.c ivtools-0.8/src/Unidraw-common/ulist.c ivtools-0.8/src/Unidraw/Imakefile ivtools-0.8/src/Unidraw/Makefile ivtools-0.8/src/Unidraw/align.c ivtools-0.8/src/Unidraw/brushcmd.c ivtools-0.8/src/Unidraw/catalog.c ivtools-0.8/src/Unidraw/catcmds.c ivtools-0.8/src/Unidraw/cglue.c ivtools-0.8/src/Unidraw/clipboard.c ivtools-0.8/src/Unidraw/colorcmd.c ivtools-0.8/src/Unidraw/command.c ivtools-0.8/src/Unidraw/component.c ivtools-0.8/src/Unidraw/compview.c ivtools-0.8/src/Unidraw/connect.c ivtools-0.8/src/Unidraw/connector.c ivtools-0.8/src/Unidraw/creator.c ivtools-0.8/src/Unidraw/csolver.c ivtools-0.8/src/Unidraw/ctrlinfo.c ivtools-0.8/src/Unidraw/damage.c ivtools-0.8/src/Unidraw/data.c ivtools-0.8/src/Unidraw/datas.c ivtools-0.8/src/Unidraw/dialogs.c ivtools-0.8/src/Unidraw/edit.c ivtools-0.8/src/Unidraw/editor.c ivtools-0.8/src/Unidraw/editorinfo.c ivtools-0.8/src/Unidraw/ellipse.c ivtools-0.8/src/Unidraw/ellipses.c ivtools-0.8/src/Unidraw/externview.c ivtools-0.8/src/Unidraw/font.c ivtools-0.8/src/Unidraw/geomobjs.c ivtools-0.8/src/Unidraw/globals.c ivtools-0.8/src/Unidraw/graphic.c ivtools-0.8/src/Unidraw/grblock.c ivtools-0.8/src/Unidraw/grcomp.c ivtools-0.8/src/Unidraw/grcomptool.c ivtools-0.8/src/Unidraw/grid.c ivtools-0.8/src/Unidraw/grview.c ivtools-0.8/src/Unidraw/gvupdater.c ivtools-0.8/src/Unidraw/import.c ivtools-0.8/src/Unidraw/iterator.c ivtools-0.8/src/Unidraw/keymap.c ivtools-0.8/src/Unidraw/kybd.c ivtools-0.8/src/Unidraw/line.c ivtools-0.8/src/Unidraw/lines.c ivtools-0.8/src/Unidraw/link.c ivtools-0.8/src/Unidraw/macro.c ivtools-0.8/src/Unidraw/magnify.c ivtools-0.8/src/Unidraw/manip.c ivtools-0.8/src/Unidraw/manips.c ivtools-0.8/src/Unidraw/move.c ivtools-0.8/src/Unidraw/nop.c ivtools-0.8/src/Unidraw/pad.c ivtools-0.8/src/Unidraw/patcmd.c ivtools-0.8/src/Unidraw/path.c ivtools-0.8/src/Unidraw/picture.c ivtools-0.8/src/Unidraw/pin.c ivtools-0.8/src/Unidraw/polygon.c ivtools-0.8/src/Unidraw/polygons.c ivtools-0.8/src/Unidraw/pspaint.c ivtools-0.8/src/Unidraw/psview.c ivtools-0.8/src/Unidraw/rastercomp.c ivtools-0.8/src/Unidraw/rasterrect.c ivtools-0.8/src/Unidraw/rect.c ivtools-0.8/src/Unidraw/reshape.c ivtools-0.8/src/Unidraw/rotate.c ivtools-0.8/src/Unidraw/scale.c ivtools-0.8/src/Unidraw/select.c ivtools-0.8/src/Unidraw/selection.c ivtools-0.8/src/Unidraw/slot.c ivtools-0.8/src/Unidraw/spline.c ivtools-0.8/src/Unidraw/splines.c ivtools-0.8/src/Unidraw/statevar.c ivtools-0.8/src/Unidraw/statevars.c ivtools-0.8/src/Unidraw/stateview.c ivtools-0.8/src/Unidraw/stateviews.c ivtools-0.8/src/Unidraw/stencilcomp.c ivtools-0.8/src/Unidraw/stretch.c ivtools-0.8/src/Unidraw/struct.c ivtools-0.8/src/Unidraw/text.c ivtools-0.8/src/Unidraw/tool.c ivtools-0.8/src/Unidraw/transfn.c ivtools-0.8/src/Unidraw/transfns.c ivtools-0.8/src/Unidraw/transforms.c ivtools-0.8/src/Unidraw/uarray.c ivtools-0.8/src/Unidraw/uctrl.c ivtools-0.8/src/Unidraw/uctrls.c ivtools-0.8/src/Unidraw/uhash.c ivtools-0.8/src/Unidraw/ulabel.c ivtools-0.8/src/Unidraw/ulist.c ivtools-0.8/src/Unidraw/umap.c ivtools-0.8/src/Unidraw/unidraw.c ivtools-0.8/src/Unidraw/upage.c ivtools-0.8/src/Unidraw/ustencil.c ivtools-0.8/src/Unidraw/vertices.c ivtools-0.8/src/Unidraw/verts.c ivtools-0.8/src/Unidraw/viewcmds.c ivtools-0.8/src/Unidraw/viewer.c ivtools-0.8/src/comdraw/Imakefile ivtools-0.8/src/comdraw/Makefile ivtools-0.8/src/comdraw/README ivtools-0.8/src/comdraw/main.c ivtools-0.8/src/comterp_/Imakefile ivtools-0.8/src/comterp_/Makefile ivtools-0.8/src/comterp_/README ivtools-0.8/src/comterp_/main.c ivtools-0.8/src/comtest/Imakefile ivtools-0.8/src/comtest/Makefile ivtools-0.8/src/comtest/main.c ivtools-0.8/src/dclock/Imakefile ivtools-0.8/src/dclock/Makefile ivtools-0.8/src/dclock/clocktime.c ivtools-0.8/src/dclock/clocktime.h ivtools-0.8/src/dclock/data.c ivtools-0.8/src/dclock/data.h ivtools-0.8/src/dclock/dclock.c ivtools-0.8/src/dclock/dclock.h ivtools-0.8/src/dclock/dface.c ivtools-0.8/src/dclock/dface.h ivtools-0.8/src/dclock/digit.c ivtools-0.8/src/dclock/digit.h ivtools-0.8/src/dclock/segment.c ivtools-0.8/src/dclock/segment.h ivtools-0.8/src/drawserv_/Imakefile ivtools-0.8/src/drawserv_/Makefile ivtools-0.8/src/drawserv_/main.c ivtools-0.8/src/drawtool/Imakefile ivtools-0.8/src/drawtool/Makefile ivtools-0.8/src/drawtool/README ivtools-0.8/src/drawtool/main.c ivtools-0.8/src/flipbook/Imakefile ivtools-0.8/src/flipbook/Makefile ivtools-0.8/src/flipbook/README ivtools-0.8/src/flipbook/main.c ivtools-0.8/src/glyphs/Imakefile ivtools-0.8/src/glyphs/Makefile ivtools-0.8/src/glyphs/README ivtools-0.8/src/glyphs/bdvtable/Imakefile ivtools-0.8/src/glyphs/bdvtable/Makefile ivtools-0.8/src/glyphs/bdvtable/main.c ivtools-0.8/src/glyphs/examples3.1/Imakefile ivtools-0.8/src/glyphs/examples3.1/Makefile ivtools-0.8/src/glyphs/examples3.1/README ivtools-0.8/src/glyphs/examples3.1/box1/Imakefile ivtools-0.8/src/glyphs/examples3.1/box1/Makefile ivtools-0.8/src/glyphs/examples3.1/box1/main.c ivtools-0.8/src/glyphs/examples3.1/box2/Imakefile ivtools-0.8/src/glyphs/examples3.1/box2/Makefile ivtools-0.8/src/glyphs/examples3.1/box2/main.c ivtools-0.8/src/glyphs/examples3.1/box3/Imakefile ivtools-0.8/src/glyphs/examples3.1/box3/Makefile ivtools-0.8/src/glyphs/examples3.1/box3/main.c ivtools-0.8/src/glyphs/examples3.1/box4/Imakefile ivtools-0.8/src/glyphs/examples3.1/box4/Makefile ivtools-0.8/src/glyphs/examples3.1/box4/main.c ivtools-0.8/src/glyphs/examples3.1/box5/Imakefile ivtools-0.8/src/glyphs/examples3.1/box5/Makefile ivtools-0.8/src/glyphs/examples3.1/box5/main.c ivtools-0.8/src/glyphs/examples3.1/button1/Imakefile ivtools-0.8/src/glyphs/examples3.1/button1/Makefile ivtools-0.8/src/glyphs/examples3.1/button1/main.c ivtools-0.8/src/glyphs/examples3.1/button2/Imakefile ivtools-0.8/src/glyphs/examples3.1/button2/Makefile ivtools-0.8/src/glyphs/examples3.1/button2/jello.tif ivtools-0.8/src/glyphs/examples3.1/button2/main.c ivtools-0.8/src/glyphs/examples3.1/button3/Imakefile ivtools-0.8/src/glyphs/examples3.1/button3/Makefile ivtools-0.8/src/glyphs/examples3.1/button3/main.c ivtools-0.8/src/glyphs/examples3.1/bvalue/Imakefile ivtools-0.8/src/glyphs/examples3.1/bvalue/Makefile ivtools-0.8/src/glyphs/examples3.1/bvalue/main.c ivtools-0.8/src/glyphs/examples3.1/circle/Imakefile ivtools-0.8/src/glyphs/examples3.1/circle/Makefile ivtools-0.8/src/glyphs/examples3.1/circle/main.c ivtools-0.8/src/glyphs/examples3.1/drag/Imakefile ivtools-0.8/src/glyphs/examples3.1/drag/Makefile ivtools-0.8/src/glyphs/examples3.1/drag/main.c ivtools-0.8/src/glyphs/examples3.1/fonts/Imakefile ivtools-0.8/src/glyphs/examples3.1/fonts/Makefile ivtools-0.8/src/glyphs/examples3.1/fonts/main.c ivtools-0.8/src/glyphs/examples3.1/himom/Imakefile ivtools-0.8/src/glyphs/examples3.1/himom/Makefile ivtools-0.8/src/glyphs/examples3.1/himom/main.c ivtools-0.8/src/glyphs/examples3.1/image/Imakefile ivtools-0.8/src/glyphs/examples3.1/image/Makefile ivtools-0.8/src/glyphs/examples3.1/image/main.c ivtools-0.8/src/glyphs/examples3.1/ips/Imakefile ivtools-0.8/src/glyphs/examples3.1/ips/Makefile ivtools-0.8/src/glyphs/examples3.1/ips/figure.c ivtools-0.8/src/glyphs/examples3.1/ips/figure.h ivtools-0.8/src/glyphs/examples3.1/ips/idraw.c ivtools-0.8/src/glyphs/examples3.1/ips/idraw.h ivtools-0.8/src/glyphs/examples3.1/ips/main.c ivtools-0.8/src/glyphs/examples3.1/menu/Imakefile ivtools-0.8/src/glyphs/examples3.1/menu/Makefile ivtools-0.8/src/glyphs/examples3.1/menu/main.c ivtools-0.8/src/glyphs/examples3.1/patch/Imakefile ivtools-0.8/src/glyphs/examples3.1/patch/Makefile ivtools-0.8/src/glyphs/examples3.1/patch/main.c ivtools-0.8/src/glyphs/examples3.1/plot/Axis.c ivtools-0.8/src/glyphs/examples3.1/plot/Axis.h ivtools-0.8/src/glyphs/examples3.1/plot/Graph.c ivtools-0.8/src/glyphs/examples3.1/plot/Graph.h ivtools-0.8/src/glyphs/examples3.1/plot/Imakefile ivtools-0.8/src/glyphs/examples3.1/plot/Makefile ivtools-0.8/src/glyphs/examples3.1/plot/Plot.c ivtools-0.8/src/glyphs/examples3.1/plot/Plot.h ivtools-0.8/src/glyphs/examples3.1/plot/README ivtools-0.8/src/glyphs/examples3.1/plot/main.c ivtools-0.8/src/glyphs/examples3.1/plot/rpc_read.c ivtools-0.8/src/glyphs/examples3.1/plot/rpc_read.h ivtools-0.8/src/glyphs/examples3.1/preview/Imakefile ivtools-0.8/src/glyphs/examples3.1/preview/Makefile ivtools-0.8/src/glyphs/examples3.1/preview/input ivtools-0.8/src/glyphs/examples3.1/preview/main.c ivtools-0.8/src/glyphs/examples3.1/print/Imakefile ivtools-0.8/src/glyphs/examples3.1/print/Makefile ivtools-0.8/src/glyphs/examples3.1/print/main.c ivtools-0.8/src/glyphs/examples3.1/rubband/Imakefile ivtools-0.8/src/glyphs/examples3.1/rubband/Makefile ivtools-0.8/src/glyphs/examples3.1/rubband/main.c ivtools-0.8/src/glyphs/examples3.1/sendplot/Imakefile ivtools-0.8/src/glyphs/examples3.1/sendplot/Makefile ivtools-0.8/src/glyphs/examples3.1/sendplot/main.c ivtools-0.8/src/glyphs/examples3.1/sendplot/rpc_write.c ivtools-0.8/src/glyphs/examples3.1/sendplot/rpc_write.h ivtools-0.8/src/glyphs/examples3.1/zoomer/Imakefile ivtools-0.8/src/glyphs/examples3.1/zoomer/Makefile ivtools-0.8/src/glyphs/examples3.1/zoomer/main.c ivtools-0.8/src/glyphs/formdemo/Imakefile ivtools-0.8/src/glyphs/formdemo/Makefile ivtools-0.8/src/glyphs/formdemo/main.c ivtools-0.8/src/glyphs/gclock/Imakefile ivtools-0.8/src/glyphs/gclock/Makefile ivtools-0.8/src/glyphs/gclock/main.c ivtools-0.8/src/glyphs/meter/Imakefile ivtools-0.8/src/glyphs/meter/Makefile ivtools-0.8/src/glyphs/meter/main.c ivtools-0.8/src/glyphs/morpher/Imakefile ivtools-0.8/src/glyphs/morpher/Makefile ivtools-0.8/src/glyphs/morpher/README ivtools-0.8/src/glyphs/morpher/balls ivtools-0.8/src/glyphs/morpher/glypheditor.c ivtools-0.8/src/glyphs/morpher/glypheditor.h ivtools-0.8/src/glyphs/morpher/glyphviewer.c ivtools-0.8/src/glyphs/morpher/glyphviewer.h ivtools-0.8/src/glyphs/morpher/icons/cont_play ivtools-0.8/src/glyphs/morpher/icons/fast_forward ivtools-0.8/src/glyphs/morpher/icons/fast_reverse ivtools-0.8/src/glyphs/morpher/icons/forward_pause ivtools-0.8/src/glyphs/morpher/icons/forward_play ivtools-0.8/src/glyphs/morpher/icons/new-record ivtools-0.8/src/glyphs/morpher/icons/panel ivtools-0.8/src/glyphs/morpher/icons/pause ivtools-0.8/src/glyphs/morpher/icons/record ivtools-0.8/src/glyphs/morpher/icons/reverse_pause ivtools-0.8/src/glyphs/morpher/icons/reverse_play ivtools-0.8/src/glyphs/morpher/main.c ivtools-0.8/src/glyphs/morpher/man.0 ivtools-0.8/src/glyphs/morpher/man.1 ivtools-0.8/src/glyphs/morpher/morpher.c ivtools-0.8/src/glyphs/morpher/morpher.h ivtools-0.8/src/glyphs/morpher/rect ivtools-0.8/src/glyphs/radiogroup/Imakefile ivtools-0.8/src/glyphs/radiogroup/Makefile ivtools-0.8/src/glyphs/radiogroup/main.c ivtools-0.8/src/glyphs/scrollable/Imakefile ivtools-0.8/src/glyphs/scrollable/Makefile ivtools-0.8/src/glyphs/scrollable/main.c ivtools-0.8/src/glyphs/scrollfield/Imakefile ivtools-0.8/src/glyphs/scrollfield/Makefile ivtools-0.8/src/glyphs/scrollfield/main.c ivtools-0.8/src/glyphs/strchooser/Imakefile ivtools-0.8/src/glyphs/strchooser/Makefile ivtools-0.8/src/glyphs/strchooser/main.c ivtools-0.8/src/glyphs/text-editor/Imakefile ivtools-0.8/src/glyphs/text-editor/Makefile ivtools-0.8/src/glyphs/text-editor/README ivtools-0.8/src/glyphs/text-editor/main.c ivtools-0.8/src/glyphs/timestamp/Imakefile ivtools-0.8/src/glyphs/timestamp/Makefile ivtools-0.8/src/glyphs/timestamp/main.c ivtools-0.8/src/glyphterp/Imakefile ivtools-0.8/src/glyphterp/Makefile ivtools-0.8/src/glyphterp/main.c ivtools-0.8/src/graphdraw/Imakefile ivtools-0.8/src/graphdraw/Makefile ivtools-0.8/src/graphdraw/README ivtools-0.8/src/graphdraw/main.c ivtools-0.8/src/html/Imakefile ivtools-0.8/src/html/Makefile ivtools-0.8/src/html/README ivtools-0.8/src/html/getman31.sh ivtools-0.8/src/html/getrefman31.sh ivtools-0.8/src/html/templates/CLASS.html.tmpl ivtools-0.8/src/html/templates/Imakefile ivtools-0.8/src/html/templates/Makefile ivtools-0.8/src/html/templates/bug_m.flt ivtools-0.8/src/html/templates/dr_m.flt ivtools-0.8/src/html/templates/err_m.flt ivtools-0.8/src/html/templates/in_m.flt ivtools-0.8/src/html/templates/includeflt.flt ivtools-0.8/src/html/templates/index.html.tmpl ivtools-0.8/src/html/templates/linkflt.flt ivtools-0.8/src/html/templates/other.html.tmpl ivtools-0.8/src/html/templates/out_m.flt ivtools-0.8/src/html/templates/ret_m.flt ivtools-0.8/src/html/templates/smindex.html.tmpl ivtools-0.8/src/html/templates/time.flt ivtools-0.8/src/iclass/Imakefile ivtools-0.8/src/iclass/Makefile ivtools-0.8/src/iclass/classbuffer.c ivtools-0.8/src/iclass/classbuffer.h ivtools-0.8/src/iclass/classeditor.c ivtools-0.8/src/iclass/classeditor.h ivtools-0.8/src/iclass/classinfo.c ivtools-0.8/src/iclass/classinfo.h ivtools-0.8/src/iclass/dialogs.c ivtools-0.8/src/iclass/dialogs.h ivtools-0.8/src/iclass/direct.c ivtools-0.8/src/iclass/direct.h ivtools-0.8/src/iclass/globals.c ivtools-0.8/src/iclass/globals.h ivtools-0.8/src/iclass/iclass.c ivtools-0.8/src/iclass/iclass.h ivtools-0.8/src/iclass/main.c ivtools-0.8/src/idemo/Idemo.defaults ivtools-0.8/src/idemo/Imakefile ivtools-0.8/src/idemo/Makefile ivtools-0.8/src/idemo/main.c ivtools-0.8/src/idraw/Imakefile ivtools-0.8/src/idraw/Makefile ivtools-0.8/src/idraw/README ivtools-0.8/src/idraw/main.c ivtools-0.8/src/include/Dispatch/Imakefile ivtools-0.8/src/include/Dispatch/Makefile ivtools-0.8/src/include/Dispatch/_defines.h ivtools-0.8/src/include/Dispatch/_undefs.h ivtools-0.8/src/include/Dispatch/dispatcher.h ivtools-0.8/src/include/Dispatch/dp.h ivtools-0.8/src/include/Dispatch/enter-scope.h ivtools-0.8/src/include/Dispatch/iocallback.h ivtools-0.8/src/include/Dispatch/iohandler.h ivtools-0.8/src/include/Dispatch/iostreamb.h ivtools-0.8/src/include/Dispatch/leave-scope.h ivtools-0.8/src/include/Dispatch/rpcbuf.h ivtools-0.8/src/include/Dispatch/rpchdr.h ivtools-0.8/src/include/Dispatch/rpcpeer.h ivtools-0.8/src/include/Dispatch/rpcreader.h ivtools-0.8/src/include/Dispatch/rpcregistry.h ivtools-0.8/src/include/Dispatch/rpcservice.h ivtools-0.8/src/include/Dispatch/rpcstream.h ivtools-0.8/src/include/Dispatch/rpcwriter.h ivtools-0.8/src/include/IV-2_6/Imakefile ivtools-0.8/src/include/IV-2_6/InterViews/Imakefile ivtools-0.8/src/include/IV-2_6/InterViews/Makefile ivtools-0.8/src/include/IV-2_6/InterViews/adjuster.h ivtools-0.8/src/include/IV-2_6/InterViews/alignment.h ivtools-0.8/src/include/IV-2_6/InterViews/banner.h ivtools-0.8/src/include/IV-2_6/InterViews/border.h ivtools-0.8/src/include/IV-2_6/InterViews/box.h ivtools-0.8/src/include/IV-2_6/InterViews/button.h ivtools-0.8/src/include/IV-2_6/InterViews/compeditor.h ivtools-0.8/src/include/IV-2_6/InterViews/control.h ivtools-0.8/src/include/IV-2_6/InterViews/deck.h ivtools-0.8/src/include/IV-2_6/InterViews/defs.h ivtools-0.8/src/include/IV-2_6/InterViews/dialog.h ivtools-0.8/src/include/IV-2_6/InterViews/filebrowser.h ivtools-0.8/src/include/IV-2_6/InterViews/filechooser.h ivtools-0.8/src/include/IV-2_6/InterViews/frame.h ivtools-0.8/src/include/IV-2_6/InterViews/glue.h ivtools-0.8/src/include/IV-2_6/InterViews/ihandler.h ivtools-0.8/src/include/IV-2_6/InterViews/interactor.h ivtools-0.8/src/include/IV-2_6/InterViews/iwindow.h ivtools-0.8/src/include/IV-2_6/InterViews/matcheditor.h ivtools-0.8/src/include/IV-2_6/InterViews/menu.h ivtools-0.8/src/include/IV-2_6/InterViews/message.h ivtools-0.8/src/include/IV-2_6/InterViews/minmax.h ivtools-0.8/src/include/IV-2_6/InterViews/paint.h ivtools-0.8/src/include/IV-2_6/InterViews/painter.h ivtools-0.8/src/include/IV-2_6/InterViews/panner.h ivtools-0.8/src/include/IV-2_6/InterViews/perspective.h ivtools-0.8/src/include/IV-2_6/InterViews/rubband.h ivtools-0.8/src/include/IV-2_6/InterViews/rubcurve.h ivtools-0.8/src/include/IV-2_6/InterViews/rubgroup.h ivtools-0.8/src/include/IV-2_6/InterViews/rubline.h ivtools-0.8/src/include/IV-2_6/InterViews/rubrect.h ivtools-0.8/src/include/IV-2_6/InterViews/rubverts.h ivtools-0.8/src/include/IV-2_6/InterViews/scene.h ivtools-0.8/src/include/IV-2_6/InterViews/scrollbar.h ivtools-0.8/src/include/IV-2_6/InterViews/scroller.h ivtools-0.8/src/include/IV-2_6/InterViews/sensor.h ivtools-0.8/src/include/IV-2_6/InterViews/shape.h ivtools-0.8/src/include/IV-2_6/InterViews/strbrowser.h ivtools-0.8/src/include/IV-2_6/InterViews/strchooser.h ivtools-0.8/src/include/IV-2_6/InterViews/streditor.h ivtools-0.8/src/include/IV-2_6/InterViews/subject.h ivtools-0.8/src/include/IV-2_6/InterViews/textbuffer.h ivtools-0.8/src/include/IV-2_6/InterViews/textdisplay.h ivtools-0.8/src/include/IV-2_6/InterViews/texteditor.h ivtools-0.8/src/include/IV-2_6/InterViews/textstyle.h ivtools-0.8/src/include/IV-2_6/InterViews/tray.h ivtools-0.8/src/include/IV-2_6/InterViews/viewport.h ivtools-0.8/src/include/IV-2_6/InterViews/world.h ivtools-0.8/src/include/IV-2_6/Makefile ivtools-0.8/src/include/IV-2_6/_enter.h ivtools-0.8/src/include/IV-2_6/_leave.h ivtools-0.8/src/include/IV-2_6/_names.h ivtools-0.8/src/include/IV-3_1/Imakefile ivtools-0.8/src/include/IV-3_1/InterViews ivtools-0.8/src/include/IV-X11/Imakefile ivtools-0.8/src/include/IV-X11/Makefile ivtools-0.8/src/include/IV-X11/Xdefs.h ivtools-0.8/src/include/IV-X11/Xext.h ivtools-0.8/src/include/IV-X11/Xlib.h ivtools-0.8/src/include/IV-X11/Xundefs.h ivtools-0.8/src/include/IV-X11/Xutil.h ivtools-0.8/src/include/IV-X11/xbitmap.h ivtools-0.8/src/include/IV-X11/xbrush.h ivtools-0.8/src/include/IV-X11/xcanvas.h ivtools-0.8/src/include/IV-X11/xcolor.h ivtools-0.8/src/include/IV-X11/xcursor.h ivtools-0.8/src/include/IV-X11/xdisplay.h ivtools-0.8/src/include/IV-X11/xdrag.h ivtools-0.8/src/include/IV-X11/xevent.h ivtools-0.8/src/include/IV-X11/xfont.h ivtools-0.8/src/include/IV-X11/xpainter.h ivtools-0.8/src/include/IV-X11/xpattern.h ivtools-0.8/src/include/IV-X11/xraster.h ivtools-0.8/src/include/IV-X11/xselection.h ivtools-0.8/src/include/IV-X11/xwindow.h ivtools-0.8/src/include/IV-look/Imakefile ivtools-0.8/src/include/IV-look/Makefile ivtools-0.8/src/include/IV-look/bevel.h ivtools-0.8/src/include/IV-look/browser.h ivtools-0.8/src/include/IV-look/button.h ivtools-0.8/src/include/IV-look/choice.h ivtools-0.8/src/include/IV-look/dialogs.h ivtools-0.8/src/include/IV-look/fbrowser.h ivtools-0.8/src/include/IV-look/fchooser.h ivtools-0.8/src/include/IV-look/field.h ivtools-0.8/src/include/IV-look/kit.h ivtools-0.8/src/include/IV-look/menu.h ivtools-0.8/src/include/IV-look/mf_dialogs.h ivtools-0.8/src/include/IV-look/mf_kit.h ivtools-0.8/src/include/IV-look/mono_kit.h ivtools-0.8/src/include/IV-look/ol_dialogs.h ivtools-0.8/src/include/IV-look/ol_kit.h ivtools-0.8/src/include/IV-look/slider.h ivtools-0.8/src/include/IV-look/smf_kit.h ivtools-0.8/src/include/IV-look/stepper.h ivtools-0.8/src/include/IV-look/telltale.h ivtools-0.8/src/include/Imakefile ivtools-0.8/src/include/InterViews/Bitmaps/Imakefile ivtools-0.8/src/include/InterViews/Bitmaps/Makefile ivtools-0.8/src/include/InterViews/Bitmaps/big_checkmark.bm ivtools-0.8/src/include/InterViews/Bitmaps/checkmark.bm ivtools-0.8/src/include/InterViews/Bitmaps/chkbox.bm ivtools-0.8/src/include/InterViews/Bitmaps/chkboxBoth.bm ivtools-0.8/src/include/InterViews/Bitmaps/chkboxChosen.bm ivtools-0.8/src/include/InterViews/Bitmaps/chkboxHit.bm ivtools-0.8/src/include/InterViews/Bitmaps/dfast.bm ivtools-0.8/src/include/InterViews/Bitmaps/dfastMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/dmover.bm ivtools-0.8/src/include/InterViews/Bitmaps/dmoverHit.bm ivtools-0.8/src/include/InterViews/Bitmaps/dmoverMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/enlarge.bm ivtools-0.8/src/include/InterViews/Bitmaps/enlargeHit.bm ivtools-0.8/src/include/InterViews/Bitmaps/enlargeMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/hand.bm ivtools-0.8/src/include/InterViews/Bitmaps/handMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/ldfast.bm ivtools-0.8/src/include/InterViews/Bitmaps/ldfastMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/lfast.bm ivtools-0.8/src/include/InterViews/Bitmaps/lfastMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/lmover.bm ivtools-0.8/src/include/InterViews/Bitmaps/lmoverHit.bm ivtools-0.8/src/include/InterViews/Bitmaps/lmoverMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/lufast.bm ivtools-0.8/src/include/InterViews/Bitmaps/lufastMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/page.bm ivtools-0.8/src/include/InterViews/Bitmaps/pageBoth.bm ivtools-0.8/src/include/InterViews/Bitmaps/pageChosen.bm ivtools-0.8/src/include/InterViews/Bitmaps/pageHit.bm ivtools-0.8/src/include/InterViews/Bitmaps/radio.bm ivtools-0.8/src/include/InterViews/Bitmaps/radioBoth.bm ivtools-0.8/src/include/InterViews/Bitmaps/radioChosen.bm ivtools-0.8/src/include/InterViews/Bitmaps/radioHit.bm ivtools-0.8/src/include/InterViews/Bitmaps/radioMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/rdfast.bm ivtools-0.8/src/include/InterViews/Bitmaps/rdfastMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/reducer.bm ivtools-0.8/src/include/InterViews/Bitmaps/reducerHit.bm ivtools-0.8/src/include/InterViews/Bitmaps/reducerMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/rfast.bm ivtools-0.8/src/include/InterViews/Bitmaps/rfastMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/rmover.bm ivtools-0.8/src/include/InterViews/Bitmaps/rmoverHit.bm ivtools-0.8/src/include/InterViews/Bitmaps/rmoverMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/rufast.bm ivtools-0.8/src/include/InterViews/Bitmaps/rufastMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/ufast.bm ivtools-0.8/src/include/InterViews/Bitmaps/ufastMask.bm ivtools-0.8/src/include/InterViews/Bitmaps/umover.bm ivtools-0.8/src/include/InterViews/Bitmaps/umoverHit.bm ivtools-0.8/src/include/InterViews/Bitmaps/umoverMask.bm ivtools-0.8/src/include/InterViews/Imakefile ivtools-0.8/src/include/InterViews/Makefile ivtools-0.8/src/include/InterViews/_defines.h ivtools-0.8/src/include/InterViews/_enter.h ivtools-0.8/src/include/InterViews/_leave.h ivtools-0.8/src/include/InterViews/_names.h ivtools-0.8/src/include/InterViews/_undefs.h ivtools-0.8/src/include/InterViews/action.h ivtools-0.8/src/include/InterViews/adjust.h ivtools-0.8/src/include/InterViews/aggr.h ivtools-0.8/src/include/InterViews/align.h ivtools-0.8/src/include/InterViews/alloctbl.h ivtools-0.8/src/include/InterViews/arraycomp.h ivtools-0.8/src/include/InterViews/background.h ivtools-0.8/src/include/InterViews/bitmap.h ivtools-0.8/src/include/InterViews/boolean.h ivtools-0.8/src/include/InterViews/border.h ivtools-0.8/src/include/InterViews/box.h ivtools-0.8/src/include/InterViews/brush.h ivtools-0.8/src/include/InterViews/canvas.h ivtools-0.8/src/include/InterViews/character.h ivtools-0.8/src/include/InterViews/color.h ivtools-0.8/src/include/InterViews/composition.h ivtools-0.8/src/include/InterViews/compositor.h ivtools-0.8/src/include/InterViews/coord.h ivtools-0.8/src/include/InterViews/cursor.h ivtools-0.8/src/include/InterViews/debug.h ivtools-0.8/src/include/InterViews/deck.h ivtools-0.8/src/include/InterViews/dialog.h ivtools-0.8/src/include/InterViews/display.h ivtools-0.8/src/include/InterViews/drag.h ivtools-0.8/src/include/InterViews/enter-scope.h ivtools-0.8/src/include/InterViews/event.h ivtools-0.8/src/include/InterViews/font.h ivtools-0.8/src/include/InterViews/geometry.h ivtools-0.8/src/include/InterViews/glcontext.h ivtools-0.8/src/include/InterViews/glue.h ivtools-0.8/src/include/InterViews/glyph.h ivtools-0.8/src/include/InterViews/group.h ivtools-0.8/src/include/InterViews/handler.h ivtools-0.8/src/include/InterViews/hit.h ivtools-0.8/src/include/InterViews/image.h ivtools-0.8/src/include/InterViews/input.h ivtools-0.8/src/include/InterViews/iv.h ivtools-0.8/src/include/InterViews/label.h ivtools-0.8/src/include/InterViews/layout.h ivtools-0.8/src/include/InterViews/leave-scope.h ivtools-0.8/src/include/InterViews/lrmarker.h ivtools-0.8/src/include/InterViews/monoglyph.h ivtools-0.8/src/include/InterViews/observe.h ivtools-0.8/src/include/InterViews/page.h ivtools-0.8/src/include/InterViews/patch.h ivtools-0.8/src/include/InterViews/pattern.h ivtools-0.8/src/include/InterViews/place.h ivtools-0.8/src/include/InterViews/polyglyph.h ivtools-0.8/src/include/InterViews/printer.h ivtools-0.8/src/include/InterViews/psfont.h ivtools-0.8/src/include/InterViews/raster.h ivtools-0.8/src/include/InterViews/regexp.h ivtools-0.8/src/include/InterViews/reqerr.h ivtools-0.8/src/include/InterViews/resource.h ivtools-0.8/src/include/InterViews/rule.h ivtools-0.8/src/include/InterViews/scrbox.h ivtools-0.8/src/include/InterViews/selection.h ivtools-0.8/src/include/InterViews/session.h ivtools-0.8/src/include/InterViews/shadow.h ivtools-0.8/src/include/InterViews/simplecomp.h ivtools-0.8/src/include/InterViews/stencil.h ivtools-0.8/src/include/InterViews/style.h ivtools-0.8/src/include/InterViews/superpose.h ivtools-0.8/src/include/InterViews/target.h ivtools-0.8/src/include/InterViews/telltale.h ivtools-0.8/src/include/InterViews/texcomp.h ivtools-0.8/src/include/InterViews/tformsetter.h ivtools-0.8/src/include/InterViews/tiff.h ivtools-0.8/src/include/InterViews/tile.h ivtools-0.8/src/include/InterViews/transformer.h ivtools-0.8/src/include/InterViews/window.h ivtools-0.8/src/include/InterViews/xymarker.h ivtools-0.8/src/include/Makefile ivtools-0.8/src/include/OS/Imakefile ivtools-0.8/src/include/OS/Makefile ivtools-0.8/src/include/OS/_defines.h ivtools-0.8/src/include/OS/_undefs.h ivtools-0.8/src/include/OS/directory.h ivtools-0.8/src/include/OS/enter-scope.h ivtools-0.8/src/include/OS/file.h ivtools-0.8/src/include/OS/host.h ivtools-0.8/src/include/OS/leave-scope.h ivtools-0.8/src/include/OS/list.h ivtools-0.8/src/include/OS/math.h ivtools-0.8/src/include/OS/memory.h ivtools-0.8/src/include/OS/os.h ivtools-0.8/src/include/OS/string.h ivtools-0.8/src/include/OS/table.h ivtools-0.8/src/include/OS/table2.h ivtools-0.8/src/include/OS/types.h ivtools-0.8/src/include/OS/ustring.h ivtools-0.8/src/include/TIFF/Imakefile ivtools-0.8/src/include/TIFF/Makefile ivtools-0.8/src/include/TIFF/format.h ivtools-0.8/src/include/TIFF/tiff.h ivtools-0.8/src/include/TIFF/tiffio.h ivtools-0.8/src/include/Unidraw/Commands/Imakefile ivtools-0.8/src/include/Unidraw/Commands/Makefile ivtools-0.8/src/include/Unidraw/Commands/align.h ivtools-0.8/src/include/Unidraw/Commands/brushcmd.h ivtools-0.8/src/include/Unidraw/Commands/catcmds.h ivtools-0.8/src/include/Unidraw/Commands/colorcmd.h ivtools-0.8/src/include/Unidraw/Commands/command.h ivtools-0.8/src/include/Unidraw/Commands/data.h ivtools-0.8/src/include/Unidraw/Commands/datas.h ivtools-0.8/src/include/Unidraw/Commands/dirty.h ivtools-0.8/src/include/Unidraw/Commands/edit.h ivtools-0.8/src/include/Unidraw/Commands/font.h ivtools-0.8/src/include/Unidraw/Commands/import.h ivtools-0.8/src/include/Unidraw/Commands/macro.h ivtools-0.8/src/include/Unidraw/Commands/nop.h ivtools-0.8/src/include/Unidraw/Commands/patcmd.h ivtools-0.8/src/include/Unidraw/Commands/struct.h ivtools-0.8/src/include/Unidraw/Commands/transforms.h ivtools-0.8/src/include/Unidraw/Commands/viewcmds.h ivtools-0.8/src/include/Unidraw/Components/Imakefile ivtools-0.8/src/include/Unidraw/Components/Makefile ivtools-0.8/src/include/Unidraw/Components/cglue.h ivtools-0.8/src/include/Unidraw/Components/component.h ivtools-0.8/src/include/Unidraw/Components/compview.h ivtools-0.8/src/include/Unidraw/Components/connector.h ivtools-0.8/src/include/Unidraw/Components/csolver.h ivtools-0.8/src/include/Unidraw/Components/ellipse.h ivtools-0.8/src/include/Unidraw/Components/externview.h ivtools-0.8/src/include/Unidraw/Components/grcomp.h ivtools-0.8/src/include/Unidraw/Components/grview.h ivtools-0.8/src/include/Unidraw/Components/gvupdater.h ivtools-0.8/src/include/Unidraw/Components/line.h ivtools-0.8/src/include/Unidraw/Components/link.h ivtools-0.8/src/include/Unidraw/Components/pad.h ivtools-0.8/src/include/Unidraw/Components/pin.h ivtools-0.8/src/include/Unidraw/Components/polygon.h ivtools-0.8/src/include/Unidraw/Components/psformat.h ivtools-0.8/src/include/Unidraw/Components/psview.h ivtools-0.8/src/include/Unidraw/Components/rastercomp.h ivtools-0.8/src/include/Unidraw/Components/rect.h ivtools-0.8/src/include/Unidraw/Components/slot.h ivtools-0.8/src/include/Unidraw/Components/spline.h ivtools-0.8/src/include/Unidraw/Components/stencilcomp.h ivtools-0.8/src/include/Unidraw/Components/text.h ivtools-0.8/src/include/Unidraw/Components/vertices.h ivtools-0.8/src/include/Unidraw/Graphic/Imakefile ivtools-0.8/src/include/Unidraw/Graphic/Makefile ivtools-0.8/src/include/Unidraw/Graphic/damage.h ivtools-0.8/src/include/Unidraw/Graphic/ellipses.h ivtools-0.8/src/include/Unidraw/Graphic/geomobjs.h ivtools-0.8/src/include/Unidraw/Graphic/graphic.h ivtools-0.8/src/include/Unidraw/Graphic/grblock.h ivtools-0.8/src/include/Unidraw/Graphic/lines.h ivtools-0.8/src/include/Unidraw/Graphic/picture.h ivtools-0.8/src/include/Unidraw/Graphic/polygons.h ivtools-0.8/src/include/Unidraw/Graphic/pspaint.h ivtools-0.8/src/include/Unidraw/Graphic/rasterrect.h ivtools-0.8/src/include/Unidraw/Graphic/splines.h ivtools-0.8/src/include/Unidraw/Graphic/ulabel.h ivtools-0.8/src/include/Unidraw/Graphic/ustencil.h ivtools-0.8/src/include/Unidraw/Graphic/util.h ivtools-0.8/src/include/Unidraw/Graphic/verts.h ivtools-0.8/src/include/Unidraw/Imakefile ivtools-0.8/src/include/Unidraw/Makefile ivtools-0.8/src/include/Unidraw/Tools/Imakefile ivtools-0.8/src/include/Unidraw/Tools/Makefile ivtools-0.8/src/include/Unidraw/Tools/connect.h ivtools-0.8/src/include/Unidraw/Tools/grcomptool.h ivtools-0.8/src/include/Unidraw/Tools/magnify.h ivtools-0.8/src/include/Unidraw/Tools/move.h ivtools-0.8/src/include/Unidraw/Tools/reshape.h ivtools-0.8/src/include/Unidraw/Tools/rotate.h ivtools-0.8/src/include/Unidraw/Tools/scale.h ivtools-0.8/src/include/Unidraw/Tools/select.h ivtools-0.8/src/include/Unidraw/Tools/stretch.h ivtools-0.8/src/include/Unidraw/Tools/tool.h ivtools-0.8/src/include/Unidraw/_defines.h ivtools-0.8/src/include/Unidraw/_undefs.h ivtools-0.8/src/include/Unidraw/catalog.h ivtools-0.8/src/include/Unidraw/classes.h ivtools-0.8/src/include/Unidraw/clipboard.h ivtools-0.8/src/include/Unidraw/creator.h ivtools-0.8/src/include/Unidraw/ctrlinfo.h ivtools-0.8/src/include/Unidraw/dialogs.h ivtools-0.8/src/include/Unidraw/editor.h ivtools-0.8/src/include/Unidraw/editorinfo.h ivtools-0.8/src/include/Unidraw/enter-scope.h ivtools-0.8/src/include/Unidraw/globals.h ivtools-0.8/src/include/Unidraw/grid.h ivtools-0.8/src/include/Unidraw/iterator.h ivtools-0.8/src/include/Unidraw/keymap.h ivtools-0.8/src/include/Unidraw/kybd.h ivtools-0.8/src/include/Unidraw/leave-scope.h ivtools-0.8/src/include/Unidraw/manip.h ivtools-0.8/src/include/Unidraw/manips.h ivtools-0.8/src/include/Unidraw/path.h ivtools-0.8/src/include/Unidraw/selection.h ivtools-0.8/src/include/Unidraw/statevar.h ivtools-0.8/src/include/Unidraw/statevars.h ivtools-0.8/src/include/Unidraw/stateview.h ivtools-0.8/src/include/Unidraw/stateviews.h ivtools-0.8/src/include/Unidraw/transfn.h ivtools-0.8/src/include/Unidraw/transfns.h ivtools-0.8/src/include/Unidraw/uarray.h ivtools-0.8/src/include/Unidraw/uctrl.h ivtools-0.8/src/include/Unidraw/uctrls.h ivtools-0.8/src/include/Unidraw/uformat.h ivtools-0.8/src/include/Unidraw/uhash.h ivtools-0.8/src/include/Unidraw/ulist.h ivtools-0.8/src/include/Unidraw/umap.h ivtools-0.8/src/include/Unidraw/unidraw.h ivtools-0.8/src/include/Unidraw/upage.h ivtools-0.8/src/include/Unidraw/viewer.h ivtools-0.8/src/include/ivstd/Imakefile ivtools-0.8/src/include/ivstd/Makefile ivtools-0.8/src/include/ivstd/math.h ivtools-0.8/src/include/ivstd/nan.h ivtools-0.8/src/include/ivstd/osfcn.h ivtools-0.8/src/include/ivstd/signal.h ivtools-0.8/src/include/ivstd/stdio.h ivtools-0.8/src/include/ivstd/string.h ivtools-0.8/src/include/ivstd/version.h ivtools-0.8/src/iueserv_/Imakefile ivtools-0.8/src/iueserv_/Makefile ivtools-0.8/src/iueserv_/README ivtools-0.8/src/iueserv_/main.c ivtools-0.8/src/ivxt/Imakefile ivtools-0.8/src/ivxt/Xd.h ivtools-0.8/src/ivxt/Xud.h ivtools-0.8/src/ivxt/glyphwidget.h ivtools-0.8/src/ivxt/glyphwidgetP.h ivtools-0.8/src/ivxt/main.c ivtools-0.8/src/ivxt/widgetwindow.c ivtools-0.8/src/ivxt/widgetwindow.h ivtools-0.8/src/ivxt/xtintrinsic.h ivtools-0.8/src/ivxt/xtsession.c ivtools-0.8/src/ivxt/xtsession.h ivtools-0.8/src/ivxt/xtudsession.c ivtools-0.8/src/ivxt/xtudsession.h ivtools-0.8/src/man/Imakefile ivtools-0.8/src/man/Makefile ivtools-0.8/src/man/man1/Imakefile ivtools-0.8/src/man/man1/Makefile ivtools-0.8/src/man/man1/comdraw.1 ivtools-0.8/src/man/man1/comterp.1 ivtools-0.8/src/man/man1/dclock.1 ivtools-0.8/src/man/man1/drawtool.1 ivtools-0.8/src/man/man1/flipbook.1 ivtools-0.8/src/man/man1/graphdraw.1 ivtools-0.8/src/man/man1/iclass.1 ivtools-0.8/src/man/man1/idraw.1 ivtools-0.8/src/man/man1/ivmkmf.1 ivtools-0.8/src/man/man3/Adjuster.3 ivtools-0.8/src/man/man3/Banner.3 ivtools-0.8/src/man/man3/BasicDialog.3 ivtools-0.8/src/man/man3/Border.3 ivtools-0.8/src/man/man3/Box2_6.3 ivtools-0.8/src/man/man3/BrushCmd.3 ivtools-0.8/src/man/man3/Button2_6.3 ivtools-0.8/src/man/man3/CGlue.3 ivtools-0.8/src/man/man3/CSolver.3 ivtools-0.8/src/man/man3/Catalog.3 ivtools-0.8/src/man/man3/Clipboard.3 ivtools-0.8/src/man/man3/ColorCmd.3 ivtools-0.8/src/man/man3/Command.3 ivtools-0.8/src/man/man3/CompletionEditor.3 ivtools-0.8/src/man/man3/Component.3 ivtools-0.8/src/man/man3/ComponentView.3 ivtools-0.8/src/man/man3/ConnectTool.3 ivtools-0.8/src/man/man3/Connector.3 ivtools-0.8/src/man/man3/Control.3 ivtools-0.8/src/man/man3/ControlInfo.3 ivtools-0.8/src/man/man3/Creator.3 ivtools-0.8/src/man/man3/Damage.3 ivtools-0.8/src/man/man3/Data.3 ivtools-0.8/src/man/man3/Deck2_6.3 ivtools-0.8/src/man/man3/Dialog.3 ivtools-0.8/src/man/man3/Dispatcher.3 ivtools-0.8/src/man/man3/Editor.3 ivtools-0.8/src/man/man3/EditorInfo.3 ivtools-0.8/src/man/man3/EllipseComp.3 ivtools-0.8/src/man/man3/ExternView.3 ivtools-0.8/src/man/man3/FileBrowser.3 ivtools-0.8/src/man/man3/FileChooser.3 ivtools-0.8/src/man/man3/FontCmd.3 ivtools-0.8/src/man/man3/Frame.3 ivtools-0.8/src/man/man3/GVUpdater.3 ivtools-0.8/src/man/man3/Glue2_6.3 ivtools-0.8/src/man/man3/Graphic.3 ivtools-0.8/src/man/man3/GraphicBlock.3 ivtools-0.8/src/man/man3/GraphicComp.3 ivtools-0.8/src/man/man3/GraphicCompTool.3 ivtools-0.8/src/man/man3/GraphicView.3 ivtools-0.8/src/man/man3/Grid.3 ivtools-0.8/src/man/man3/IOCallback.3 ivtools-0.8/src/man/man3/IOHandler.3 ivtools-0.8/src/man/man3/Imakefile ivtools-0.8/src/man/man3/ImportCmd.3 ivtools-0.8/src/man/man3/Interactor.3 ivtools-0.8/src/man/man3/Iterator.3 ivtools-0.8/src/man/man3/KeyMap.3 ivtools-0.8/src/man/man3/LineComp.3 ivtools-0.8/src/man/man3/LinkComp.3 ivtools-0.8/src/man/man3/MacroCmd.3 ivtools-0.8/src/man/man3/MagnifyTool.3 ivtools-0.8/src/man/man3/Manipulator.3 ivtools-0.8/src/man/man3/MatchEditor.3 ivtools-0.8/src/man/man3/Menu2_6.3 ivtools-0.8/src/man/man3/Message.3 ivtools-0.8/src/man/man3/MoveTool.3 ivtools-0.8/src/man/man3/NOPCmd.3 ivtools-0.8/src/man/man3/PadComp.3 ivtools-0.8/src/man/man3/Page.3 ivtools-0.8/src/man/man3/Painter.3 ivtools-0.8/src/man/man3/Panner.3 ivtools-0.8/src/man/man3/Path.3 ivtools-0.8/src/man/man3/Pattern.3 ivtools-0.8/src/man/man3/PatternCmd.3 ivtools-0.8/src/man/man3/Perspective.3 ivtools-0.8/src/man/man3/Picture.3 ivtools-0.8/src/man/man3/PinComp.3 ivtools-0.8/src/man/man3/PolygonComp.3 ivtools-0.8/src/man/man3/PostScriptView.3 ivtools-0.8/src/man/man3/RasterComp.3 ivtools-0.8/src/man/man3/RasterRect.3 ivtools-0.8/src/man/man3/RectComp.3 ivtools-0.8/src/man/man3/Regexp.3 ivtools-0.8/src/man/man3/ReqErr.3 ivtools-0.8/src/man/man3/ReshapeTool.3 ivtools-0.8/src/man/man3/Resource.3 ivtools-0.8/src/man/man3/RotateTool.3 ivtools-0.8/src/man/man3/RpcHdr.3 ivtools-0.8/src/man/man3/RpcPeer.3 ivtools-0.8/src/man/man3/RpcReader.3 ivtools-0.8/src/man/man3/RpcRegistry.3 ivtools-0.8/src/man/man3/RpcService.3 ivtools-0.8/src/man/man3/RpcWriter.3 ivtools-0.8/src/man/man3/Rubband.3 ivtools-0.8/src/man/man3/ScaleTool.3 ivtools-0.8/src/man/man3/Scene.3 ivtools-0.8/src/man/man3/Scroller.3 ivtools-0.8/src/man/man3/SelectTool.3 ivtools-0.8/src/man/man3/Selection.3 ivtools-0.8/src/man/man3/Sensor.3 ivtools-0.8/src/man/man3/Shape.3 ivtools-0.8/src/man/man3/SlotComp.3 ivtools-0.8/src/man/man3/SplineComp.3 ivtools-0.8/src/man/man3/StateVar.3 ivtools-0.8/src/man/man3/StateVarView.3 ivtools-0.8/src/man/man3/StencilComp.3 ivtools-0.8/src/man/man3/StrBrowser.3 ivtools-0.8/src/man/man3/StrChooser.3 ivtools-0.8/src/man/man3/StretchTool.3 ivtools-0.8/src/man/man3/StringEditor.3 ivtools-0.8/src/man/man3/Subject.3 ivtools-0.8/src/man/man3/TextBuffer.3 ivtools-0.8/src/man/man3/TextComp.3 ivtools-0.8/src/man/man3/TextDisplay.3 ivtools-0.8/src/man/man3/TextEditor.3 ivtools-0.8/src/man/man3/Tool.3 ivtools-0.8/src/man/man3/TransferFunct.3 ivtools-0.8/src/man/man3/Tray.3 ivtools-0.8/src/man/man3/UArray.3 ivtools-0.8/src/man/man3/UControl.3 ivtools-0.8/src/man/man3/UHashTable.3 ivtools-0.8/src/man/man3/ULabel.3 ivtools-0.8/src/man/man3/UList.3 ivtools-0.8/src/man/man3/UMap.3 ivtools-0.8/src/man/man3/UStencil.3 ivtools-0.8/src/man/man3/Unidraw.3 ivtools-0.8/src/man/man3/UnidrawIntro.3 ivtools-0.8/src/man/man3/Vertices.3 ivtools-0.8/src/man/man3/VerticesComp.3 ivtools-0.8/src/man/man3/Viewer.3 ivtools-0.8/src/man/man3/Viewport.3 ivtools-0.8/src/man/man3/World.3 ivtools-0.8/src/man/man3/align.3 ivtools-0.8/src/man/man3/catcmds.3 ivtools-0.8/src/man/man3/classes.3 ivtools-0.8/src/man/man3/datas.3 ivtools-0.8/src/man/man3/edit.3 ivtools-0.8/src/man/man3/ellipses.3 ivtools-0.8/src/man/man3/geomobjs.3 ivtools-0.8/src/man/man3/globals.3 ivtools-0.8/src/man/man3/iostreamb.3 ivtools-0.8/src/man/man3/kybd.3 ivtools-0.8/src/man/man3/lines.3 ivtools-0.8/src/man/man3/manips.3 ivtools-0.8/src/man/man3/polygons.3 ivtools-0.8/src/man/man3/pspaint.3 ivtools-0.8/src/man/man3/rpcbuf.3 ivtools-0.8/src/man/man3/rpcstream.3 ivtools-0.8/src/man/man3/splines.3 ivtools-0.8/src/man/man3/statevars.3 ivtools-0.8/src/man/man3/stateviews.3 ivtools-0.8/src/man/man3/struct.3 ivtools-0.8/src/man/man3/transfns.3 ivtools-0.8/src/man/man3/transforms.3 ivtools-0.8/src/man/man3/uctrls.3 ivtools-0.8/src/man/man3/viewcmds.3 ivtools-0.8/src/man/refman3.1/refman.PS ivtools-0.8/src/scripts/Imakefile ivtools-0.8/src/scripts/Makefile ivtools-0.8/src/scripts/anytopnm.sh ivtools-0.8/src/scripts/bsdinst.sh ivtools-0.8/src/scripts/chgsuffix.sh ivtools-0.8/src/scripts/cntsrclines.bash ivtools-0.8/src/scripts/config.guess ivtools-0.8/src/scripts/config.sub ivtools-0.8/src/scripts/cpu.sh ivtools-0.8/src/scripts/install-sh ivtools-0.8/src/scripts/ivcd.cpp ivtools-0.8/src/scripts/ivct.cpp ivtools-0.8/src/scripts/ivds.cpp ivtools-0.8/src/scripts/ivdt.cpp ivtools-0.8/src/scripts/ivfb.cpp ivtools-0.8/src/scripts/ivgd.cpp ivtools-0.8/src/scripts/ivgetjpg.bash ivtools-0.8/src/scripts/ivmkmf.cpp ivtools-0.8/src/scripts/mkdirhier.sh ivtools-0.8/src/scripts/mkgif89a.bash ivtools-0.8/src/scripts/mkgif89ac.bash ivtools-0.8/src/scripts/pnmtopgm.sh ivtools-0.8/src/scripts/tiftopnm.bash ivtools-0.8/src/tests/Imakefile ivtools-0.8/src/tests/Makefile ivtools-0.8/src/tests/y2k/Imakefile ivtools-0.8/src/tests/y2k/Makefile ivtools-0.8/src/tests/y2k/y2ktest.cc ivtools-0.8/src/utils/Imakefile ivtools-0.8/src/utils/Makefile ivtools-0.8/src/utils/downloader.cc ivtools-0.8/src/utils/downloader.h ivtools-0.8/src/utils/ftp.cc ivtools-0.8/src/utils/ftp.h ivtools-0.8/src/utils/http.cc ivtools-0.8/src/utils/http.h ivtools-0.8/src/utils/ivdl.cc ivtools-0.8/src/utils/parse.h ivtools-0.8/src/utils/readwrite.h ivtools-0.8/src/utils/sockets.cc ivtools-0.8/src/utils/sockets.h ivtools-0.8/src/utils/stdcmapppm.c ivtools-0.8/src/utils/thrower.cc ivtools-0.8/src/utils/thrower.h ivtools-0.8/src/utils/tmpnam.c ivtools-doc/ivtools-0.8-README.txt0000644000076500007650000004271407374262633017366 0ustar scottscott00000000000000 README for ivtools 0.8 This directory contains a release of ivtools 0.8.4 from Vectaport Inc.. You should read the rest of this file for information on what ivtools is and the INSTALL file for instructions on how to build it. The overall copyright and permission notice for ivtools can be found in the COPYRIGHT file in this directory. It is similar to the X11 copyright, otherwise known as non-copylefted freeware. * What is ivtools?: ivtools is a layered collection of application frameworks for building custom drawing editors and spatial data servers. It incorporates a backward compatible copy of the original InterViews and Unidraw class libraries and sample programs (from 3.2a.tar.Z), augmented with new class libraries and sample programs for a wide variety of generic spatial data applications. ivtools comprises four sets of interrelated capabilities useful for application programmers. The first set is the libraries and example programs borrowed whole from InterViews 3.1. The second set is for reusing and extending the light-weight glyph objects of InterViews 3.1 which embody a lot of the capability of TeX. The third set reuses and extends the Unidraw library (Unidraw is a major portion of the overall InterViews 3.1 release that provides an application framework for custom drawing editors). The fourth set adds a command interpreter and server mechanism to ivtools, and demonstrates these capabilities with text, glyph, and graphic front-ends. To get more of an overview of these layers you can read http://www.vectaport.com/ivtools/ivtools-layers.html. These are the libraries and example programs borrowed straight from InterViews 3.1: IV library of InterView 3.1, InterViews 2.6, Dispatch, OS, and TIFF objects dclock digital clock with fading digits iclass C++ class browser idemo glyph demo These are the libraries and example programs that make up the glyph part of ivtools (programs in the glyphs directory): IVGlyph library of Glyph derived classes bdvtable bounded-value editing formdemo value-editing gclock glyph-based clock meter sliding meter radiogroup radio-buttons scrollable 2d scrollable glyph scrollfield 2d scrollable field-editor strchooser string chooser text-editor emacs-like text editor timestamp editable time glyph Also all the glyph example programs from InterViews 3.1 have been added in an examples3.1 directory under the glyphs directory. These are the libraries and example programs that make up the Unidraw part of ivtools: Unidraw copy of Unidraw library from InterViews 3.1 UniIdraw librarification of 3.1 idraw OverlayUnidraw extended Unidraw/idraw framework TopoFace spatial network library (nodes, edges, faces) GraphUnidraw graph browser/editor library FrameUnidraw multi-frame display mechanism idraw idraw built on UniIdraw library drawtool extended version of idraw built on OverlayUnidraw graphdraw graph browser/editor integrated with drawtool flipbook flipbook multi-frame editor based on drawtool These are the libraries that make up the command interpreter part of ivtools: ComUtil command interpreter utility functions Attribute attribute property list mechanism AttrGlyph glyphs for Attribute library ComTerp command interpreter objects ComGlyph glyphs for ComTerp library ComUnidraw drawing editor with command interpreter DrawServ drawing server framework with support for graphs and frames. comtest test program comterp sample command interpreter glyphterp command interpreter user interface comdraw drawtool with command interpreter drawserv comdraw with both graphs and frames. Note: GraphUnidraw/graphdraw and FrameUnidraw/flipbook have been rearranged within the ivtools source tree to take advantage of the ComUnidraw framework layer, so they really could be listed in both of the previous sections. There is also a Time library with Date and Time classes borrowed from the NIH's class library, and an example program, ivxt, that shows how an Xt widget can be wrapped around an InterViews application. Finally, there is a collection of utilities (utils) and shell scripts (scripts) that augment the drawing editors of ivtools with minor capabilities. See the relevant directories and files for further information. A series of makefile targets support the checkin of sources to cvs/rcs, and their subsequent update and modification. This requires a copy of cvs available from the Free Software Foundation and ivmkcm-0.7.2 available through http://www.vectaport.com/ivmkcm/ * More ivtools details ivtools is known to build with many versions of gcc (<= gcc-2.7.2, >= gcc-2.8.1, >= egcs-1.0.1) and on a variety of Unix'es: SunOS 4.1 (MIT's X11R5), Solaris 2.6 (X11R6), Irix 5.2 (SGI's X11R5), Linux 1.2 (Slackware 3.0, XFree86 3.1), Linux 2.* (RedHat 4.0 thru 6.0, Debian 2.*), NetBSD, and perhaps now FreeBSD. There are contributed configs for HPUX and Dec Alpha. Recently it has been built on Windows NT 4.0 using Cygwin from Cygnus Solutions (see README.cygwin). You can pick up Linux-ELF binaries from the ivtools web page (http://www.vectaport.com/ivtools/). If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to the general purpose ivtools mailing list, ivtools-discuss@lists.sourceforge.net, or this Vectaport e-mail address: ivtools-info@vectaport.com. To subcribe to the mailing list, visit http://lists.sourceforge.net/mailman/listinfo/ivtools-discuss or send an informal request to ivtools-request@vectaport.com. Other ivtools related mailing lists can be found at: http://www.vectaport.com/ivtools/mailinglists.html Online documentation (including an FAQ) is available for ivtools at: http://www.vectaport.com/ivtools/doc/ Read about finding and generating all this from inline documentation below. A copy of the ivtools html documentation is available for download as well: http://www.vectaport.com/pub/src/ivtools-0.8-html.tgz A SourceForge project page for ivtools can be found at: http://sourceforge.net/project/?form_grp=275 * Finding and Generating Inline Documentation Extensive documentation is embedded within the ivtools source tree, including most all of the documentation originally available for InterViews 3.1 and Unidraw. Here is a list: - README/man pages for executable programs Within most directories that contain an executable program (a main.c) you'll find a README that explains something about the program, how to use it, what it does, what arguments it takes. In the case of the drawing editors and command interpreters this README has been further processed into a man page, which can be found in its uninstalled state in the src/man/man1 directory or wherever you elect to install them. - HTML class documentation Many of the C++ class libraries of ivtools are documented using comments in the header files (the .h files) that can be extracted using PERCEPS, a Perl documentation generator for C++ (http://starship.python.net/crew/tbryan/PERCEPS/). See src/html/README for instructions on auto-generating these web pages yourself, or see the result on-line at: http://www.vectaport.com/ivtools/doc/classes/ - InterViews 3.1 and Unidraw man pages All the original man pages from InterViews 3.1 and Unidraw have been preserved, and can be found in src/man/man3, or where ever you elect to install them. They also can be browsed online at: http://www.vectaport.com/ivtools/doc/man3.1/ - InterViews 3.1 reference manual The original reference manual for InterViews 3.1 can be found in PostScript form at src/man/refman3.1/refman.PS. It is also found in page-indexable online form at: http://www.vectaport.com/ivtools/doc/refman3.1/ * Building on top of ivtools Copied from the ivtools FAQ: http://www.vectaport.com/ivtools/faq.html#standalonedevel Q: How do I set up a stand-alone program or source tree on top of ivtools for development purposes? A: If you are writing a stand-alone program that will exist in a single directory, simply copy an appropriate Imakefile and main.c from a InterViews or ivtools example program directory, modify accordingly, then use "ivmkmf -a" to generate the Makefile. Make sure you are using a fresh ivmkmf that corresponds to your installation of ivtools. An example of this is the comtop sample program, a stand-alone program separate from ivtools that builds on top of the comterp command interpreter mechanism. ** comtop.tgz is now part of the ivtools distribution ** If you are setting up an entire source tree with both class libraries and executable programs, you will want to get started by replicating an equivalent source tree (i.e. vhclmaps) and change or rename all directories or files as appropriate. ** read more on vhclmaps at http://www.vectaport.com/vhclmaps/ ** * Acknowledgements: ivtools programmers at Vectaport: Scott Johnston Jorge Gautier ivtools programmers at large: Brian Hogencamp Rick Kissh Eric Kahler InterViews 3.1 programmers that we know of: Mark Linton John Vlissides Paul Calder John Interrante Scott Stanton Steven Tang ivtools can be built to leverage a variety of separate third-party libraries: * clippoly from Klamer Schutte for polygon intersection (licensed under the LGPL) * ACE from Doug Schmidt for middleware networking frameworks (licensed similar to X Windows) * IUE (the Image Understanding Environment) from Amerinex (half public-domain, half licensed similar to X Windows) ivtools detects and uses at runtime a variety of third-party executables: * qhull from the University of Minnesota Geometry Center * pstoedit from Wolfgang Glunz * ghostscript from L. Peter Deutsch and Aladdin Systems * djpeg from the JPEG group * giftopnm from Jef Poskanzer's pbmplus toolkit (a copy of anytopnm from the same toolkit is incorporated into the scripts directory) OverlayUnidraw incorporates Version 3.1 of a "C++ Vector and Matrix Algebra routnes" (algebra3.h) from Jean-Francois Doue. HPUX (HP-800) config contributed by Neal Becker. ALPHA config contributed by Bruno Delfosse at Thomson CSF. A lot of feedback on Solaris 2.6 building from M. Rasit Eskicioglu at the University of Alberta. NetBSD port by Todd Gruhn. Cygwin development environment for Windows NT from RedHat (Cygnus Solutions). Patches to iv-3.2a incorporated from the PDP++ distribution from Carnegie Mellon University Department of Psychiatry, Randall C. O'Reilly, et. al. Patches for Debian 2.0 packaging incorporated from Guenter Geiger. This work included the conversion of drawtool, flipbook, and graphdraw README's to man page format. Patch for iv-3.1 shift key handling from Doug Scott, the author of MiXViews. Certain InterViews libraries (Dispatch, IV, IV-2_6, IV-X11, InterViews, OS, TIFF, Unidraw) and example programs (iclass, idemo, idraw) are copied from the InterViews 3.1 sources. Here is the aggregrate copyright notice for that software package: /* * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * Copyright (c) 1991 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Stanford and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Stanford and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL STANFORD OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The building of iv-3.1 with gcc-2.5.* (and subsequent versions) was enabled by a patch from Adam Zell. The TIFF library was written by Sam Leffler and published with this copyright and permission notice: /* * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991, 1992 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The strchooser example and StrChooser class were contributed by David B. Hollenbeck, as well as the glyph-based Motif-look pull-down menus of OverlayUnidraw. Here is his copyright notice: /* * Copyright (c) 1993 David B. Hollenbeck * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notice and this permission notice appear in * all copies of the software and related documentation, and (ii) the name of * David B. Hollenbeck may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of David B. Hollenbeck. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL DAVID B. HOLLENBECK BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The scrollable example is based on code from Chen Wang The text-editor example program is by Jan Andersson of Torpa Konsult AB. Here is that copyright notice: // // Simple Text Editor // // // Copyright (C) 1993 Ellemtel Telecommunication Systems Labratories // // Permission is granted to any individual or institution to use, copy, // modify, and distribute this software, provided that this complete // copyright and permission notice is maintained, intact, in all copies // and supporting documentation. // // Ellemtel Telecommunication Systems Labratories make no representation // of the suitability of this software for any purpose. It is provided // "as is" without any expressed or implied warranty. // // Jan Andersson, Torpa Konsult AB // janne at torpa.se - 1993-08-29 The Date and Time classes in the Time library are borrowed from the NIHCL class library, written by K. E. Gorlen, Computer Sciences Laboratory, DCRT, National Institutes of Health, Bethesda, MD 20892, and published with this notice: THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A "UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY. The graylevel raster and painting mechanisms of OverlayUnidraw were originated by Richard B. Kissh under contract to Vectaport Inc, as well as the shared memory rasters and asychronous incremental download of rasters. The ComUtil library was originally developed at Triple Vision Inc. under NSF Grant ISI-8521259 (authors/contributors: Robert C. Fitch, Richard A. Fundakowski, Robert K. Graber, Scott E. Johnston). The ivdl URL downloading utility was developed by Eric F. Kahler under contract to Vectaport Inc. Keung Chi Ng of IET Inc. has provided a good deal of feedback on ivtools over the years, and has assisted in demonstrating the viability of the application frameworks by developing a variety of vertical applications on top of OverlayUnidraw, FrameUnidraw, and GraphUnidraw. The balance of ivtools has been developed by Vectaport Inc. (P.O. Box 7141, Redwood City, CA 94063), with additional support from IET Inc. (P.O. Box 112450, Campbell, CA 95011) in the form of ARPA subcontracts (DACA76-93-C-0025 and DACA76-97-C-0005), and more recently by granting part-time employee Scott Johnston the freedom to evolve ivtools and related open-source frameworks as part of his job. There was also support from Applied Sciences Inc, San Francisco, CA, in the form of a subcontract for a Phase II SBIR from NASA Ames. ivtools-doc/ivtools-0.9-CHANGES.txt0000644000076500007650000003626307374262633017504 0ustar scottscott00000000000000Oct 16th 2001 ivtools-0.9.7 ** last release before 1.0 -- if things are ok with this distribution I will simply roll over the version number ** - fix the pnmtopgm script to do the right thing for PBM files. - better error messages when someone tries to open an idraw format PostScript file that has ColorRast objects in it. These are rasters that are color-printer ready, and do not conform the idraw format. A future version upgrade of this format will include support for these. As an aside, these ColorRast objects cannot be filtered through pstoedit either (pstoedit -f idraw), because they have separate sources for R, G, and B. A future pstoedit back-end for the ivtools drawtool format would be needed to make this work instead, one that relied on the ghostscript mechanism for dumping out rasters to PNG files. - modifies the pstoedit import command lines to always use a temporary file for output with a %d indicator to support multi-page files. - add a StreamObject to AttributeValue/ComValue. This consists of a pointer to a ComFunc to use in getting the next value out of a stream, and local data storage to indicate current position. Sort of a procedural iterator. - add streaming mechanism to comterp, that leverages the ".." iterate and "**" repeat operators. Now arbitrary expressions can be composed where each operator is overdriven (repeatedly executed) by one or more of its arguments. Some examples: s1=0..10 # stream that iterates from 0 to 10 s2=0..10*3 # stream that iterates from 0 to 30 in steps of 3 next(s1) # returns 0 on first call, incremented by 1 each call after next(s2) # returns 0 on first call, incremented by 3 each call after A more complicated example counts to 4 Meg without using megs of memory: s=1..pow(2 22) x=0 while(next(s) x++) An example for computing a ramp step-function for a look-up-table: 0..255-0..255%10 Overdriven streaming operators were first presented here: "Command Language for Developing Real-Time Signal and Image Processing Applications", S. Johnston, R.C. Fitch, SPIE Proceedings on Automated Inspection and High Speed Vision Architectures II, vol. 1004, Nov. 1988. - fix != comparison of symbols. Found this problem when experimenting with the new stream objects. A while loop terminates on either 0 or nil, but a stream terminates with only nil. To differentiate nil from 0 I looked at the return type: s=0..255 while(`type(v=next(s))!=`type(nil) print("%d\n" v)) This didn't work without this change. - adds partial-string (:n) and symbol (:sym) comparison to the rest of the equality operators (!=, >, <, >=, <=). - add :nilchk option to terminate the while loop upon nil (instead of nil and zero). - make the seq operator (;) post-evaluated so that this works: s=0..100;while(v=next(s) print("%d " v) :nilchk) Without post-eval the stream on the left would overdrive the ";", which just didn't work. - more work on new stream and list concepts in comterp. Now ",," is the stream concatenator, and "," remains the list concatenator. stream(lst) converts a list to a stream, and list(strm) will converts a stream to a list (as soon as I debug it). - makes list(strm) work. Now you can convert streams to lists and lists to streams (with stream(lst)). - equate lists to arrays in all the API of ComValue, and make type(strm) return ListType instead of ArrayType. - fix problem with interacting with the KDE X server. Seems all other X servers allow a negative "length" argument, which causes the server to index backwards from a data pointer. This was not documented in the man pages, so the KDE folks "fixed" the problem by changing the code instead of the man page. So I have to fix the code as well. - Now the streams are really flowing. The ",," concatenation operator works for the most part, allowing for the composition of complex streams like this: s=0,,1,,2,,3**3,,4+100 which generates the sequence: 100 101 102 103 103 103 104 nil Probably a few minor issues left to clean up. So far I've discovered: 0,1**2 works partially as expected, generating a {0,1} followed by a {0,1}. But then it generates a {0,nil} repeatedly, never terminating. Hmmmm. - make ",," concat operator lower priority than the "," tuple operator. This means these two examples behave in a similar fashion: s=1,2,,3 # yields {1,2} followed by a 3 s=1,2,3,,4 # yields {1,2,3} followed by a 4 and you can construct 2-d structures in a pleasing way: s=1,2,3,,4,5,6,,7,8,9 # 3x3 grid - ensure streaming doesn't happen on post-evaluated commands. - create a hidden :strmlst argument to the list command, to have a way at looking at the AttributeValueList associated with a stream object. - NetBSD compile fix - fix the AttributeValueList constructor so it does a list copy as it advertises. - evaluate symbols when popping them off the stack to build a stream object. This may not be desirable in the long run, and it really wasn't causing any problem to delay this that I know of. Hmmm... - make the default value of the second "at" argument zero instead of nil, so that if nil is supplied it can be used to return nil (to terminate stream handling). - set up to "stream" over an AttributeList. - ensure ComValue::is_true() returns true for StreamType that exists. - touchups to glyph-based graphics (Graphic31). There were difficult-to-decipher problems in allocate/requisition which clipped graphics by one row or one column. So I just padded things a bit. This is only used in the addtool (custom toolbutton) mechanism of comdraw. - revert to using "r" instead of "r+" in fopen calls for graphics files to be read in. I had added "r+" when gcc-3.0 needed it to allow rewinding. Now gcc-3.0.1 has that fixed, and "r+" got in the way of read-only access (CD-ROMS). - set "." dot operator to 1) create AttributeList's as needed on the fly, and 2) create an emtpy AttributeList when a second argument is not given. For example: a.b.c.d.e.f=100 # this now works, without having to create # all the intermediate AttributeList's x=dot(z) # creates an empty AttributeList z which is # can be accessed through the variable x as well. - go through all the math commands to ensure they return nil given any nil argument. - add a :set argument to the list at() command. Aug 20th 2001 ivtools-0.9.6 - minor adjustments to adapt to gcc-3.0.1. One advantage of upgrading to gcc-3.0.1 is that incremental import of rasters from URL's works again. - introduce all the bitwise operators from C to comterp: &, |, ^, and ~. This change is slightly backward incompatible, in that "^" had been used as a shortcut for the pow command (raise something to a power). Scripts that rely on that single operator will need to be rewritten. Sorry for doing that -- but it is the first incompatible change in I can't remember how long, and something I wanted to get done before version 1.0 (where the syntax and semantics of comterp get "frozen", ready for wider use). - renames the tiftopnm bash script to a less confusing ivtiftopnm (less confusing in that people won't think it is part of netpbm). ivtiftopnm is a wrapper script for tifftopnm, which doesn't accept stdin input directly (because of its need for random access to the tiff file). Jul 25th 2001 ivtools-0.9.5 ** Most of the outstanding problems with gcc-3.0 and libstdc++-v3 have ** been resolved. Only known problem is with incremental importing ** (and display) of rasters from URL's. This is a long-standing ** stable feature of ivtools. Perhaps newer versions of gcc-3.* and ** libstdc++-v3 will fix the problem. - fixes a problem with importing files introduced when migrating away from the use of istream::gets (required for gcc-3.0 and libstdc++ v3). istream::gets would automatically skip the newline delimeter. When using istream::get in libstdc++ v3 I needed to manually skip the newline delimeter. - globally change optimization from -O6 to -O2, which makes gcc-3.0 compile time much more reasonable. - all the necessary changes to support ACE and gcc-3.0 at the same time. The majority of the work is in deferring (or avoiding) an fclose on a fdopen'ed socket, by a) saving a FILE* in some class to be fclose'd later, or b) rewriting without iostreams. Now there should no longer be any dangling FILE*'s to worry about. - adds built-in support for PNG rasters. That means they can be imported and save/restored by pathname (like JPEG and GIF). This requires that pngtopnm be available to be invoked by the ivtools drawing editors. - added test for whether socklen_t is typedef'ed to the configure script. Seems older versions of FreeBSD doen't have this. - fix the test for whether the X11 Shared Memory extensions exists in the server, and whether it can be utilized (which requires co-resident client and server). - add a -c argument (copy instead of move) to every install command for the benefit of the BSD's. - use "r+" for fopen of files to be rewound, otherwise they never get rewound. This is a recently introduced problem. "r+" is supposed to mean opening for reading and writing, but it seems necessary for rewinding as well. Jun 15th 2001 ivtools-0.9.4 - monstrous amount of changes required by forthcoming gcc-3.0. The heavy lifting was mostly due to the absence of filebuf::attach in v3 of libstdc++. Other issues to deal with: templated iostreams, change to meaning of -U (undefine compiler option), can't have static const char initializes in class definition, need class between "friend" and class name, use of , missing ostream::form, missing istream::gets, round needs to be Math::round. Unfortunately, gdb can't debug C++ generated by gcc-3.0 yet, so although things mostly work, I can't resolve problems with the wild iostream hacking I did. My recommendation: stick to gcc-2.95.* for now. - add an :eps and :idraw option to the comdraw export keyboard command. Now you can generate these formats as well as the default drawtool format. - fix export of EPS with color imagery, by correctly reading radio button for output format on export dialog box. Before it only generated the idraw format, which is EPS, but has only graylevel rasters visible to any PostScript interpreter (the color information is in comments). - change the declaration of an argument to getsockname() from unsigned int to socklen_t (in Dispatch/rpcbuf.c). This fixes the problem with portability caused by the fact signedness of a socklen_t is unstandardized. - restore full support for XBM (X bitmap) images to drawtool and its derivatives. idraw was always XBM capable, but drawtool lost support for this a while back. From John Denker (jsd at research.att.com): >Here is a patch that will allow ivtools to correctly output text >objects that contain backslashes. May 18th 2001 ivtools-0.9.3 Keyboard Commands: - add save func to comdraw: error=save([path]) -- save editor document (to pathname) With no argument it saves using the current document name. If none is current the SaveAs dialog box pops up. If the file already exists a warning dialog box pops up. If the current document is unmodified the func returns zero without doing anything. With a pathname argument it always tries to save to the document to that file, returning zero if the save doesn't work (at least it will after a bug is fixed). If the file already exists a warning dialog box pops up. - add export func to comdraw: with ACE: export(compview[,compview[,...compview]] [path] :host host_str :port port_int :socket :string|:str) -- export in drawtool format without ACE: export(compview[,compview[,...compview]] [path] :string|:str) -- export in drawtool format "; - add comdraw funcs to convert between drawing and screen coordinates: dx,dy=stod(sx,sy) -- convert from screen to drawing coordinates sx,sy=dtos(dx,dy) -- convert from drawing to screen coordinates - convert output of help func to a string, so it can be displayed in the keyboard command window on comdraw/graphdraw/flipbook/drawserv. Miscellaneous: - applied diffs by Guenter Geiger to generate ivtools-0.9.2-1 for latest Debian (sid). - attempt to upgrade to ACE 5.1 - put an arbitrary glyph in the lower left of each drawing editor with a keyboard command window. Defaults to text describing the editor and how to get help on keyboard commands. - check that an AttributeValue is_object() or is_command() before returning the void* pointer associated with some C++ object. - change for building on Solaris 2.6. - bug fix in growgroup comdraw func. Apr 5th 2001 ivtools-0.9.2 - set of changes to allow save/restore of graphics files internal to a drawing by the Unix command line used to generate them. For example, if "xwdtopnm temp.xwd" was used to import a raster file (with "from command" checked on the import dialog box), a subsequent save would write this command (and only this command) to the document on disk, and a subsequent restore would re-run the command to regenerate the contents. Should work equally well for rasters, PostScript, and ivtools drawtool files. - remove anytopnm from ivtools, since the enhancements our copy had over pbmplus were incorporated directly into the netpbm variant. The salient feature was the ability for anytopnm to recognize it had a file that was already in a pbmplus format, and pass it through. - remove duplicate IVGlyph/figure.[ch] from MANIFEST - add /usr/local/include/g++-3 and /usr/local/include/g++-2 to paths searched for libstdc++ include files by configure. - add "wget" to the list of download utilities searched for and used by the code that reads URLs. The others are ivdl (from ivtools), curl, and w3c. - changes to support compiling with older versions of libg++ and changes to support relative installation (--enable-install-relative) on FreeBSD. - add "name" and "value" labels to the attribute-list editing dialog box. - save rasters imported from Unix commands by writing out only the command string in an generic by-file drawtool object. For example: ovfile(:popen "djpeg -pnm test.jpg" ) would be output to the saved document if save-by-path was checked on the import box and save-by-path is checked (for the whole document) on the export box. Subsequent opens rerun the command. Jan 10th 2001 ivtools-0.9.1 Correct 0.9 oversights: - restore GPL dual licensing documentation in COPYRIGHT, COPYING, and MANIFEST. - correctly set version number to 0.9.1 December 19th 2000 ivtools-0.9 - fix segfault in new comdraw addtool command when the supplied pathname is non-existent. - allow for using new symbols (those with a nil value) in the various assignment operators of comterp, i.e. x++ or x+=1 work if x was undefined. - make ivtools available under the GPL as well as the original X11 style license. - changes type of third argument to accept() from an unportable (unsigned int*) to a more correct (socklent_t *) (in src/utils/sockets.cc). First done by Guenter Geiger in his Debianization of ivtools-0.8.3 - partial build (up to glyphterp and comterp) on SunOS 4.1.4 with gcc-2.4.5. After that I ran into static initialization (even though using collect2) and multiple-inheritance problems that made it no longer worth it. - patches for building with libace5.0 under Debian 2.3 (woody). - fix up the construction of symbolic links for Unidraw-common done by the configure script. - revises and extends the comterp pause, trace, and step commands. ivtools-doc/ivtools-0.9-COPYRIGHT.txt0000644000076500007650000000362707374262633020002 0ustar scottscott00000000000000/* * Copyright (c) 2001 Scott Johnston * Copyright (c) 2000 Vectaport Inc., IET Inc * Copyright (c) 1999 Vectaport Inc., IET Inc, R.B. Kissh and Associates * Copyright (c) 1998 Vectaport Inc., R.B. Kissh and Associates, Eric F. Kahler * Copyright (c) 1997 Vectaport Inc., R.B. Kissh and Associates * Copyright (c) 1996 Vectaport Inc., R.B. Kissh and Associates, Cider Press * Copyright (c) 1994, 1995 Vectaport Inc., Cartoactive Systems, Cider Press * Copyright (c) 1993 David B. Hollenbeck * Copyright (c) 1993 Ellemtel Telecommunication Systems Labratories * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991 Silicon Graphics, Inc. * Copyright (c) 1989 Triple Vision Inc. * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * related documentation and data files for any purpose is hereby granted * without fee, provided that the above copyright notice appear in all copies * and that both that copyright notice and this permission notice appear in * supporting documentation, and that the names of the copyright holders not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holders * make no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ ivtools-doc/ivtools-0.9-INSTALL.txt0000644000076500007650000002454307374262633017540 0ustar scottscott00000000000000 INSTALL for ivtools-0.9 Instructions for building ivtools-0.9.7 from source, the short version: ./configure make su -c "make install" And if that doesn't work... Instructions for building ivtools-0.9.7 from source, the long version: 0. Compilation Environment Things you will need (or might want) before building ivtools: 0.a. a Unix machine (for Windows see README.cygwin). We know it has been built on Linux, NetBSD, FreeBSD, Solaris, Irix, Dec Alpha, HPUX, and SunOS. 0.b. The gcc compiler. Recently we've been building and testing with egcs-1.0.3, gcc-2.95.*, and gcc-3.0.1. gcc-2.8.1 would still work, as probably would gcc-2.7.2. You will also need an equivalent copy of libstdc++. libstdc++ comes bundled with gcc-3.0. Before that the libstdc++ version numbers stay roughly in synch with the gcc version numbers. If you have gcc-2.8.1 you'd want libstdc++-2.8.1, etc.. Be aware that sometimes the include files for libstdc++ are in /usr/local/include/g++-2, a place that cannot be auto-determined by the configure script. Establishing a symbolic link to /usr/local/include/g++ will fix the problem. 0.c. An installed copy of X11R6 as distributed by the Open Group, or an equivalent (XFree86 for Linux, or X11R5 from MIT). If you use a vendor's X11 product, the product should be based on X11R4 or later and the product should include imake and the config files. If you can't find imake on your system, you can get the sources for imake from the X11R5 or X11R6 distribution at several public ftp archives (such as ftp.x.org). ** warning -- imake used in combination with a non-GNU C preprocessor ** can be troublesome (i.e. the default one delivered with Solaris or ** DEC Alpha). You'll want to rig your PATH environment variable to ** find the gcc variant of cpp. Read more about it at ** http://www.vectaport.com/ivtools/faq.html#imakecppprob 0.d. If you want to use the polygon intersection tools, acquire and build clippoly, a LGPLed library for polygon clipping from: http://www.ph.tn.tudelft.nl/People/klamer/clippoly_entry.html Add -fPIC to the CCFLAGS in the Makefile, then do a make, then build a shared library in the clippoly directory with: "gcc -shared -o libclippoly.so *.o" (you can leave out test.o if you want). i0.e. If you want to use the network server capabilities of the ivtools programs, acquire and build ACE, a C++ middleware toolkit available from: http://www.cs.wustl.edu/%7Eschmidt/ACE.html We are currently using ACE-5.1 (or the latest copy of ACE) built without threads support. Follow these steps to build it from source, or use the Debian binary if you happen to be working on that platform (libace5.1-dev): tar xvfz ACE-5.1.tar.gz cd ACE_wrappers export ACE_ROOT=`pwd` # csh: setenv ACE_ROOT `pwd` cd ace cp config-linux.h config.h # substitute appropriate OS name cd ../include/makeinclude cp platform_linux.GNU platform_macros.GNU # substitute OS emacs platform_macros.GNU # add "threads = 0" near top of file cd ../../ace make Then use "--with-ace=$ACE_ROOT" when running the configure script as described below. 0.f if you want to build the ivxt example program, which demonstrates the embedding of a ivtools drawing editor inside Motif widgets, you'll need some version of lesstif or Motif (libXm). To enable the ivxt build, change line 7 of src/Imakefile from "#if 0" to "#if 1". Without these libraries and include files the build of ivxt will fail, which can be safely ignored. 0.g Finally, you might have an interest in building the IueServ library and iueserv program, a networked command interpreter wrapped around the class libraries of the Image Understanding Environment. See http://www.aai.com/AAI/IUE/IUE.html for details on acquiring and building this sizeable collection of public-domain and free software class libraries for image understanding application development. 1. Configuring ivtools: 1.a. You no longer need to set your CPU environment variable to build ivtools, but you still need a CPU specific configuration file. Ready-made configurations that have been known to work exist for LINUX, SUN4 (and Solaris), SGI, HP800 (HPUX), ALPHA, NETSBD, FREEBSD, and CYGWIN (for Windows NT). HPUX config file is known to be out of quite out of date, the others will probably work with little or no tweaks. Use "make CPU" from the top directory to see the symbol ivtools will use for your OS (grep config/arch.def for ArchitectureName to get a complete list of possible OS'es). Then look for a matching config/site.def. file, where is the value returned by "make CPU". If it is there proceed to step 1.b. Other variants of Unix can be attempted by creating the corresponding config/site.def., i.e. site.def.AIX or site.def.MIPS. Use SUN4 for Solaris as well as SunOS. Although SUN5 would be more correct, the config files automatically determine the difference between the two OS'es by checking for SVR4'ness. 1.b Run the configure script in the top-level directory, by entering "./configure" followed by any of the following arguments (--with arguments are recognized as --enable as well): --with-ace= Path to ACE source --with-ace-libs= Path to ACE libraries --with-clippoly= Path to clippoly source --with-clippoly-libs= Path to clippoly libraries --with-iue= Path to IUE source --with-iue-libs= Path to IUE libraries --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR --enable-install-relative[=ARG] install relative to source tree --enable-install-subdir[=ARG] install in ivtools sub-directory --prefix=DIR to use when install-relative is false (default is /usr/local) --enable-use-rpath[=ARG] use -rpath when linking, to embed shared-library pathnames in executable. ARG can be 0 or 1, default is 1 when not specified. The configure script is usually able to automatically determine --x-includes and --x-libraries (except on DEC Alpha). If the arguments for ACE, clippoly, or IUE are not supplied, the configure script prints a reminder, then proceeds to set up to build ivtools without these libraries. If you want to run the executables without installing them, use --enable-use-rpath to embed the shared library pathnames into the executables at link time. Here is an example of using the configure script with ACE and clippoly libraries: ./configure --with-clippoly=/proj/clippoly --with-ace=/proj/ACE_wrappers Running the configure script generates two files, a config/config.mk that gets included into each Makefile when used, and a config/config--gcc.defs that gets used by "make Makefiles" described below. is something like linux. The last line of output from the configure script shows this pathname. Verify that this is the same as the file included at the end of the config/site.def. file. Change the site.def. file if necessary. Also you may want to review the rest of the entries in the site.def. file to see if they are good defaults for your system. ** See http://www.vectaport.com/ivtools/faq.html for more info. 2. Compiling ivtools: 2.a. cd to the ivtools-0.9/ directory (you'd already be in this directory after running the configure script). 2.b. Compile it with a "make" command. The first time it is run it does all these individual steps (the equivalent of "make World"): - regenerates the top-level Makefile to snap it to the current directory ("make Makefile"). - runs through the source tree and generates all the other Makefile's ("make Makefiles"). - generates compilation dependencies for each directory with code to compile -- see the Makefile.depend file in each sub-directory ("make depend"). - compiles and links everything ("make -k"). If you have any trouble at this stage take a look at: http://www.vectaport.com/ivtools/faq.html#SourceBuild ** Subsequent use of "make" will only do the "make -k" phase described ** above. To redo everything, either do a "make World", or do a "make ** clean" followed by a "make". The "make clean" deletes the files ** that suppress the make stateges, make.makefile, make.makefiles, ** make.depend, and make.make. 3. Testing: Each directory under ivtools-0.9/src that begins in lower case (except for "include" and "scripts") contains executables that exercise some particular functionality. "cd" to each particular directory, type "/a.out" and see what happens (the utils directory contains more than one executable, things named other than a.out). Quite a few directories have README's that go into further detail on how to use the programs. ivtools-0.9/src/glyphs contains sub-directories of glyph example programs. ivtools-0.9/src/glyphs/examples3.1 contains most of the simple example programs that were originally distributed with InterViews 3.1. There is also a src/tests directory, with one test program to date, y2k/y2ktest.c. This builds a small program that verifies the Date object of the Time class library has no problem with Y2K or Y2.038K, by allowing the user to enter "+" and "-" to increment/decrement the year past these boundaries. 4. Installation: "make install" is supported for all the libraries and a subset of the more utilitarian example programs: the four original InterViews programs (idraw, iclass, idemo, and dclock), the four idraw derived programs (drawtool, netdraw, flipbook, and comdraw) and the two comterp programs (comterp and glyphterp). In addition the scripts in src/scripts and utilities in src/utils get installed. "make uninstall" is supported as well. When relative install is enabled (--enable-install-relative for the configure script), the binaries are installed in ivtools-0.9/bin/, the libraries are installed in ivtools-0.9/lib/, and the run-time X resource and config files are installed in ivtools-0.9/lib/ivtools. When relative install is disabled (the default for the configure script) the binaries are installed as stripped executables in `prefix`/bin the libraries are installed in `prefix`/lib, and the run-time X resource and config files are installed in `prefix`/lib/ivtools. note: idemo, comterp, glyphterp, and comdraw have config files that must be installed (either relative or non-relative) for the program to find them at runtime. drawtool relies on several scripts and utilities for accessing graphics and image files that must be installed as well for them to work. ivtools-doc/ivtools-0.9-MANIFEST.txt0000644000076500007650000021012207374262633017626 0ustar scottscott00000000000000ivtools-0.9/CHANGES ivtools-0.9/CHANGES-0.4 ivtools-0.9/CHANGES-0.5 ivtools-0.9/CHANGES-0.6 ivtools-0.9/CHANGES-0.7 ivtools-0.9/CHANGES-0.8 ivtools-0.9/COPYING ivtools-0.9/COPYRIGHT ivtools-0.9/INSTALL ivtools-0.9/Imakefile ivtools-0.9/MANIFEST ivtools-0.9/MANIFEST.comterp ivtools-0.9/MANIFEST.perceps ivtools-0.9/Makefile ivtools-0.9/README ivtools-0.9/README.cygwin ivtools-0.9/README.ivmkcm ivtools-0.9/VERSION ivtools-0.9/aclocal.m4 ivtools-0.9/comtop.tgz ivtools-0.9/config/Imakefile ivtools-0.9/config/InterViews/Imakefile ivtools-0.9/config/InterViews/Makefile ivtools-0.9/config/InterViews/TIFF.def ivtools-0.9/config/InterViews/arch.def ivtools-0.9/config/InterViews/cxx.def ivtools-0.9/config/InterViews/iv-DGUX.cf ivtools-0.9/config/InterViews/iv-Mips.cf ivtools-0.9/config/InterViews/iv-aix.cf ivtools-0.9/config/InterViews/iv-alpha.cf ivtools-0.9/config/InterViews/iv-apollo.cf ivtools-0.9/config/InterViews/iv-att.cf ivtools-0.9/config/InterViews/iv-bsd.cf ivtools-0.9/config/InterViews/iv-convex.cf ivtools-0.9/config/InterViews/iv-cray.cf ivtools-0.9/config/InterViews/iv-cygwin.cf ivtools-0.9/config/InterViews/iv-freebsd.cf ivtools-0.9/config/InterViews/iv-generic.cf ivtools-0.9/config/InterViews/iv-hp.cf ivtools-0.9/config/InterViews/iv-ibm.cf ivtools-0.9/config/InterViews/iv-linux.cf ivtools-0.9/config/InterViews/iv-luna.cf ivtools-0.9/config/InterViews/iv-m4330.cf ivtools-0.9/config/InterViews/iv-macII.cf ivtools-0.9/config/InterViews/iv-moto.cf ivtools-0.9/config/InterViews/iv-netbsd.cf ivtools-0.9/config/InterViews/iv-pegasus.cf ivtools-0.9/config/InterViews/iv-sgi.cf ivtools-0.9/config/InterViews/iv-sony.cf ivtools-0.9/config/InterViews/iv-stellar.cf ivtools-0.9/config/InterViews/iv-stratus.cf ivtools-0.9/config/InterViews/iv-sun.cf ivtools-0.9/config/InterViews/iv-ultrix.cf ivtools-0.9/config/InterViews/iv-x386.cf ivtools-0.9/config/InterViews/local.def ivtools-0.9/config/InterViews/params.def ivtools-0.9/config/InterViews/rules.def ivtools-0.9/config/InterViews/xparams.cf ivtools-0.9/config/Makefile ivtools-0.9/config/alpha3.0-gcc.mk ivtools-0.9/config/alpha3.2-gcc.mk ivtools-0.9/config/alpha4-gcc.mk ivtools-0.9/config/arch.def ivtools-0.9/config/config.defs.in ivtools-0.9/config/config.mk ivtools-0.9/config/config.null.mk ivtools-0.9/config/default-gcc.mk ivtools-0.9/config/freebsd-gcc.mk ivtools-0.9/config/freebsd2.1-gcc.mk ivtools-0.9/config/gcc.def ivtools-0.9/config/hpux-gcc.mk ivtools-0.9/config/hpux10.20-gcc.mk ivtools-0.9/config/irix5-gcc.mk ivtools-0.9/config/irix6-gcc.mk ivtools-0.9/config/linux-gcc.mk ivtools-0.9/config/local.def ivtools-0.9/config/m88k-sysv3-gcc.mk ivtools-0.9/config/m88k-sysv4-gcc.mk ivtools-0.9/config/makevars.def ivtools-0.9/config/netbsd-gcc.mk ivtools-0.9/config/params.def ivtools-0.9/config/rules.def ivtools-0.9/config/sco3.2.4-gcc.mk ivtools-0.9/config/site.def.ALPHA ivtools-0.9/config/site.def.CYGWIN ivtools-0.9/config/site.def.FREEBSD ivtools-0.9/config/site.def.HP800 ivtools-0.9/config/site.def.LINUX ivtools-0.9/config/site.def.NETBSD ivtools-0.9/config/site.def.SGI ivtools-0.9/config/site.def.SUN4 ivtools-0.9/config/solaris-gcc.mk ivtools-0.9/config/sunos4-gcc.mk ivtools-0.9/config/template ivtools-0.9/configure ivtools-0.9/configure.in ivtools-0.9/configure.notes ivtools-0.9/src/AceDispatch/Imakefile ivtools-0.9/src/AceDispatch/Makefile ivtools-0.9/src/AceDispatch/ace_dispatcher.c ivtools-0.9/src/AceDispatch/ace_dispatcher.h ivtools-0.9/src/AceDispatch/ace_iohandler.c ivtools-0.9/src/AceDispatch/ace_iohandler.h ivtools-0.9/src/AttrGlyph/Imakefile ivtools-0.9/src/AttrGlyph/Makefile ivtools-0.9/src/AttrGlyph/attredit.c ivtools-0.9/src/AttrGlyph/attredit.h ivtools-0.9/src/Attribute/Imakefile ivtools-0.9/src/Attribute/Makefile ivtools-0.9/src/Attribute/_comterp.h ivtools-0.9/src/Attribute/_comutil.h ivtools-0.9/src/Attribute/alist.c ivtools-0.9/src/Attribute/alist.h ivtools-0.9/src/Attribute/aliterator.c ivtools-0.9/src/Attribute/aliterator.h ivtools-0.9/src/Attribute/attribute.c ivtools-0.9/src/Attribute/attribute.h ivtools-0.9/src/Attribute/attrlist.c ivtools-0.9/src/Attribute/attrlist.h ivtools-0.9/src/Attribute/attrvalue.c ivtools-0.9/src/Attribute/attrvalue.h ivtools-0.9/src/Attribute/classid.h ivtools-0.9/src/Attribute/commodule.c ivtools-0.9/src/Attribute/commodule.h ivtools-0.9/src/Attribute/lexscan.c ivtools-0.9/src/Attribute/lexscan.h ivtools-0.9/src/Attribute/paramlist.c ivtools-0.9/src/Attribute/paramlist.h ivtools-0.9/src/ComGlyph/Imakefile ivtools-0.9/src/ComGlyph/Makefile ivtools-0.9/src/ComGlyph/attrdialog.c ivtools-0.9/src/ComGlyph/attrdialog.h ivtools-0.9/src/ComGlyph/comtextedit.c ivtools-0.9/src/ComGlyph/comtextedit.h ivtools-0.9/src/ComGlyph/comtextview.c ivtools-0.9/src/ComGlyph/comtextview.h ivtools-0.9/src/ComGlyph/terpdialog.c ivtools-0.9/src/ComGlyph/terpdialog.h ivtools-0.9/src/ComTerp/Imakefile ivtools-0.9/src/ComTerp/Makefile ivtools-0.9/src/ComTerp/_comterp.h ivtools-0.9/src/ComTerp/_comutil.h ivtools-0.9/src/ComTerp/assignfunc.c ivtools-0.9/src/ComTerp/assignfunc.h ivtools-0.9/src/ComTerp/bitfunc.c ivtools-0.9/src/ComTerp/bitfunc.h ivtools-0.9/src/ComTerp/boolfunc.c ivtools-0.9/src/ComTerp/boolfunc.h ivtools-0.9/src/ComTerp/bquotefunc.c ivtools-0.9/src/ComTerp/bquotefunc.h ivtools-0.9/src/ComTerp/comfunc.c ivtools-0.9/src/ComTerp/comfunc.h ivtools-0.9/src/ComTerp/comhandler.c ivtools-0.9/src/ComTerp/comhandler.h ivtools-0.9/src/ComTerp/commodule.h ivtools-0.9/src/ComTerp/comterp.c ivtools-0.9/src/ComTerp/comterp.h ivtools-0.9/src/ComTerp/comterpserv.c ivtools-0.9/src/ComTerp/comterpserv.h ivtools-0.9/src/ComTerp/comvalue.c ivtools-0.9/src/ComTerp/comvalue.h ivtools-0.9/src/ComTerp/condfunc.c ivtools-0.9/src/ComTerp/condfunc.h ivtools-0.9/src/ComTerp/ctrlfunc.c ivtools-0.9/src/ComTerp/ctrlfunc.h ivtools-0.9/src/ComTerp/debugfunc.c ivtools-0.9/src/ComTerp/debugfunc.h ivtools-0.9/src/ComTerp/dotfunc.c ivtools-0.9/src/ComTerp/dotfunc.h ivtools-0.9/src/ComTerp/helpfunc.c ivtools-0.9/src/ComTerp/helpfunc.h ivtools-0.9/src/ComTerp/iofunc.c ivtools-0.9/src/ComTerp/iofunc.h ivtools-0.9/src/ComTerp/lexscan.h ivtools-0.9/src/ComTerp/listfunc.c ivtools-0.9/src/ComTerp/listfunc.h ivtools-0.9/src/ComTerp/mathfunc.c ivtools-0.9/src/ComTerp/mathfunc.h ivtools-0.9/src/ComTerp/numfunc.c ivtools-0.9/src/ComTerp/numfunc.h ivtools-0.9/src/ComTerp/parser.c ivtools-0.9/src/ComTerp/parser.h ivtools-0.9/src/ComTerp/postfunc.c ivtools-0.9/src/ComTerp/postfunc.h ivtools-0.9/src/ComTerp/randfunc.c ivtools-0.9/src/ComTerp/randfunc.h ivtools-0.9/src/ComTerp/scanner.c ivtools-0.9/src/ComTerp/scanner.h ivtools-0.9/src/ComTerp/statfunc.c ivtools-0.9/src/ComTerp/statfunc.h ivtools-0.9/src/ComTerp/strmfunc.c ivtools-0.9/src/ComTerp/strmfunc.h ivtools-0.9/src/ComTerp/symbolfunc.c ivtools-0.9/src/ComTerp/symbolfunc.h ivtools-0.9/src/ComTerp/typefunc.c ivtools-0.9/src/ComTerp/typefunc.h ivtools-0.9/src/ComTerp/xformfunc.c ivtools-0.9/src/ComTerp/xformfunc.h ivtools-0.9/src/ComUnidraw/Imakefile ivtools-0.9/src/ComUnidraw/Makefile ivtools-0.9/src/ComUnidraw/comeditor.c ivtools-0.9/src/ComUnidraw/comeditor.h ivtools-0.9/src/ComUnidraw/comterp-acehandler.c ivtools-0.9/src/ComUnidraw/comterp-acehandler.h ivtools-0.9/src/ComUnidraw/comterp-iohandler.c ivtools-0.9/src/ComUnidraw/comterp-iohandler.h ivtools-0.9/src/ComUnidraw/dialogfunc.c ivtools-0.9/src/ComUnidraw/dialogfunc.h ivtools-0.9/src/ComUnidraw/grdotfunc.c ivtools-0.9/src/ComUnidraw/grdotfunc.h ivtools-0.9/src/ComUnidraw/grfunc.c ivtools-0.9/src/ComUnidraw/grfunc.h ivtools-0.9/src/ComUnidraw/grlistfunc.c ivtools-0.9/src/ComUnidraw/grlistfunc.h ivtools-0.9/src/ComUnidraw/groupfunc.c ivtools-0.9/src/ComUnidraw/groupfunc.h ivtools-0.9/src/ComUnidraw/grstatfunc.c ivtools-0.9/src/ComUnidraw/grstatfunc.h ivtools-0.9/src/ComUnidraw/highlightfunc.c ivtools-0.9/src/ComUnidraw/highlightfunc.h ivtools-0.9/src/ComUnidraw/nfunc.c ivtools-0.9/src/ComUnidraw/nfunc.h ivtools-0.9/src/ComUnidraw/plotfunc.c ivtools-0.9/src/ComUnidraw/plotfunc.h ivtools-0.9/src/ComUnidraw/unifunc.c ivtools-0.9/src/ComUnidraw/unifunc.h ivtools-0.9/src/ComUtil/Imakefile ivtools-0.9/src/ComUtil/Makefile ivtools-0.9/src/ComUtil/_lexscan.c ivtools-0.9/src/ComUtil/_parser.c ivtools-0.9/src/ComUtil/_scanner.c ivtools-0.9/src/ComUtil/atox.c ivtools-0.9/src/ComUtil/comerr.c ivtools-0.9/src/ComUtil/comterp.arg ivtools-0.9/src/ComUtil/comterp.ci ivtools-0.9/src/ComUtil/comterp.err ivtools-0.9/src/ComUtil/comterp.h ivtools-0.9/src/ComUtil/comutil.arg ivtools-0.9/src/ComUtil/comutil.ci ivtools-0.9/src/ComUtil/comutil.h ivtools-0.9/src/ComUtil/dmm.c ivtools-0.9/src/ComUtil/errfile.c ivtools-0.9/src/ComUtil/errsys.c ivtools-0.9/src/ComUtil/funcptrs.c ivtools-0.9/src/ComUtil/mblock.c ivtools-0.9/src/ComUtil/optable.c ivtools-0.9/src/ComUtil/symbols.c ivtools-0.9/src/ComUtil/txtutil.c ivtools-0.9/src/ComUtil/types.c ivtools-0.9/src/ComUtil/util.c ivtools-0.9/src/ComUtil/util.h ivtools-0.9/src/ComUtil/xdll.c ivtools-0.9/src/Dispatch/Imakefile ivtools-0.9/src/Dispatch/Makefile ivtools-0.9/src/Dispatch/dispatcher.c ivtools-0.9/src/Dispatch/iohandler.c ivtools-0.9/src/Dispatch/iostreamb.c ivtools-0.9/src/Dispatch/netinet_in.h ivtools-0.9/src/Dispatch/rpcbuf.c ivtools-0.9/src/Dispatch/rpchdr.c ivtools-0.9/src/Dispatch/rpcpeer.c ivtools-0.9/src/Dispatch/rpcreader.c ivtools-0.9/src/Dispatch/rpcregistry.c ivtools-0.9/src/Dispatch/rpcservice.c ivtools-0.9/src/Dispatch/rpcstream.c ivtools-0.9/src/Dispatch/rpcwriter.c ivtools-0.9/src/DrawServ/Imakefile ivtools-0.9/src/DrawServ/Makefile ivtools-0.9/src/DrawServ/drawcatalog.c ivtools-0.9/src/DrawServ/drawcatalog.h ivtools-0.9/src/DrawServ/drawclasses.h ivtools-0.9/src/DrawServ/drawcomps.c ivtools-0.9/src/DrawServ/drawcomps.h ivtools-0.9/src/DrawServ/drawcreator.c ivtools-0.9/src/DrawServ/drawcreator.h ivtools-0.9/src/DrawServ/drawkit.c ivtools-0.9/src/DrawServ/drawkit.h ivtools-0.9/src/DrawServ/drawviews.c ivtools-0.9/src/DrawServ/drawviews.h ivtools-0.9/src/FrameUnidraw/Imakefile ivtools-0.9/src/FrameUnidraw/Makefile ivtools-0.9/src/FrameUnidraw/framecatalog.c ivtools-0.9/src/FrameUnidraw/framecatalog.h ivtools-0.9/src/FrameUnidraw/frameclasses.h ivtools-0.9/src/FrameUnidraw/framecmds.c ivtools-0.9/src/FrameUnidraw/framecmds.h ivtools-0.9/src/FrameUnidraw/framecomps.c ivtools-0.9/src/FrameUnidraw/framecomps.h ivtools-0.9/src/FrameUnidraw/framecreator.c ivtools-0.9/src/FrameUnidraw/framecreator.h ivtools-0.9/src/FrameUnidraw/frameeditor.c ivtools-0.9/src/FrameUnidraw/frameeditor.h ivtools-0.9/src/FrameUnidraw/framefile.c ivtools-0.9/src/FrameUnidraw/framefile.h ivtools-0.9/src/FrameUnidraw/framefunc.c ivtools-0.9/src/FrameUnidraw/framefunc.h ivtools-0.9/src/FrameUnidraw/framekit.c ivtools-0.9/src/FrameUnidraw/framekit.h ivtools-0.9/src/FrameUnidraw/frameps.c ivtools-0.9/src/FrameUnidraw/frameps.h ivtools-0.9/src/FrameUnidraw/framescripts.c ivtools-0.9/src/FrameUnidraw/framescripts.h ivtools-0.9/src/FrameUnidraw/framestates.c ivtools-0.9/src/FrameUnidraw/framestates.h ivtools-0.9/src/FrameUnidraw/frameviewer.c ivtools-0.9/src/FrameUnidraw/frameviewer.h ivtools-0.9/src/FrameUnidraw/frameviews.c ivtools-0.9/src/FrameUnidraw/frameviews.h ivtools-0.9/src/GraphUnidraw/Imakefile ivtools-0.9/src/GraphUnidraw/Makefile ivtools-0.9/src/GraphUnidraw/edgecomp.c ivtools-0.9/src/GraphUnidraw/edgecomp.h ivtools-0.9/src/GraphUnidraw/graphcatalog.c ivtools-0.9/src/GraphUnidraw/graphcatalog.h ivtools-0.9/src/GraphUnidraw/graphclasses.h ivtools-0.9/src/GraphUnidraw/graphcmds.c ivtools-0.9/src/GraphUnidraw/graphcmds.h ivtools-0.9/src/GraphUnidraw/graphcomp.c ivtools-0.9/src/GraphUnidraw/graphcomp.h ivtools-0.9/src/GraphUnidraw/graphcreator.c ivtools-0.9/src/GraphUnidraw/graphcreator.h ivtools-0.9/src/GraphUnidraw/graphdata.c ivtools-0.9/src/GraphUnidraw/graphdata.h ivtools-0.9/src/GraphUnidraw/graphdialog.c ivtools-0.9/src/GraphUnidraw/graphdialog.h ivtools-0.9/src/GraphUnidraw/grapheditor.c ivtools-0.9/src/GraphUnidraw/grapheditor.h ivtools-0.9/src/GraphUnidraw/graphimport.c ivtools-0.9/src/GraphUnidraw/graphimport.h ivtools-0.9/src/GraphUnidraw/graphkit.c ivtools-0.9/src/GraphUnidraw/graphkit.h ivtools-0.9/src/GraphUnidraw/graphtools.c ivtools-0.9/src/GraphUnidraw/graphtools.h ivtools-0.9/src/GraphUnidraw/nodecomp.c ivtools-0.9/src/GraphUnidraw/nodecomp.h ivtools-0.9/src/IV-2_6/Imakefile ivtools-0.9/src/IV-2_6/Makefile ivtools-0.9/src/IV-2_6/adjuster2_6.c ivtools-0.9/src/IV-2_6/banner.c ivtools-0.9/src/IV-2_6/border2_6.c ivtools-0.9/src/IV-2_6/box2_6.c ivtools-0.9/src/IV-2_6/button2_6.c ivtools-0.9/src/IV-2_6/compeditor.c ivtools-0.9/src/IV-2_6/control.c ivtools-0.9/src/IV-2_6/deck2_6.c ivtools-0.9/src/IV-2_6/dialog2_6.c ivtools-0.9/src/IV-2_6/filebrowser.c ivtools-0.9/src/IV-2_6/filechooser.c ivtools-0.9/src/IV-2_6/frame.c ivtools-0.9/src/IV-2_6/glue2_6.c ivtools-0.9/src/IV-2_6/interactor.c ivtools-0.9/src/IV-2_6/matcheditor.c ivtools-0.9/src/IV-2_6/menu2_6.c ivtools-0.9/src/IV-2_6/message.c ivtools-0.9/src/IV-2_6/painter.c ivtools-0.9/src/IV-2_6/panner2_6.c ivtools-0.9/src/IV-2_6/perspective.c ivtools-0.9/src/IV-2_6/rubband.c ivtools-0.9/src/IV-2_6/rubcurve.c ivtools-0.9/src/IV-2_6/rubgroup.c ivtools-0.9/src/IV-2_6/rubline.c ivtools-0.9/src/IV-2_6/rubrect.c ivtools-0.9/src/IV-2_6/rubverts.c ivtools-0.9/src/IV-2_6/scene.c ivtools-0.9/src/IV-2_6/scrollbar2_6.c ivtools-0.9/src/IV-2_6/scroller2_6.c ivtools-0.9/src/IV-2_6/sensor.c ivtools-0.9/src/IV-2_6/shape.c ivtools-0.9/src/IV-2_6/strbrowser.c ivtools-0.9/src/IV-2_6/strchooser.c ivtools-0.9/src/IV-2_6/streditor.c ivtools-0.9/src/IV-2_6/subject.c ivtools-0.9/src/IV-2_6/textbuffer.c ivtools-0.9/src/IV-2_6/textdisplay.c ivtools-0.9/src/IV-2_6/texteditor.c ivtools-0.9/src/IV-2_6/tform2_6.c ivtools-0.9/src/IV-2_6/tray.c ivtools-0.9/src/IV-2_6/viewport.c ivtools-0.9/src/IV-2_6/world.c ivtools-0.9/src/IV-2_6/xbitmap2_6.c ivtools-0.9/src/IV-2_6/xevent2_6.c ivtools-0.9/src/IV-2_6/xinter.c ivtools-0.9/src/IV-2_6/xpainter.c ivtools-0.9/src/IV-2_6/xpattern.c ivtools-0.9/src/IV-X11/Imakefile ivtools-0.9/src/IV-X11/Makefile ivtools-0.9/src/IV-X11/glcontext.c ivtools-0.9/src/IV-X11/wtable.h ivtools-0.9/src/IV-X11/xbitmap.c ivtools-0.9/src/IV-X11/xbrush.c ivtools-0.9/src/IV-X11/xcanvas.c ivtools-0.9/src/IV-X11/xcolor.c ivtools-0.9/src/IV-X11/xcursor.c ivtools-0.9/src/IV-X11/xdrag.c ivtools-0.9/src/IV-X11/xevent.c ivtools-0.9/src/IV-X11/xfont.c ivtools-0.9/src/IV-X11/xraster.c ivtools-0.9/src/IV-X11/xreqerr.c ivtools-0.9/src/IV-X11/xselection.c ivtools-0.9/src/IV-X11/xwindow.c ivtools-0.9/src/IV-common/Imakefile ivtools-0.9/src/IV-common/Makefile ivtools-0.9/src/IV-common/listimpl.c ivtools-0.9/src/IV-common/math.c ivtools-0.9/src/IV-common/memory.c ivtools-0.9/src/IV-common/regexp.c ivtools-0.9/src/IV-common/resource.c ivtools-0.9/src/IV-common/string.c ivtools-0.9/src/IV-common/textbuffer.c ivtools-0.9/src/IV-common/tform2_6.c ivtools-0.9/src/IV-common/transformer.c ivtools-0.9/src/IV/Imakefile ivtools-0.9/src/IV/InterViews.defaults ivtools-0.9/src/IV/Makefile ivtools-0.9/src/IVGlyph/Imakefile ivtools-0.9/src/IVGlyph/Makefile ivtools-0.9/src/IVGlyph/bdfltform.c ivtools-0.9/src/IVGlyph/bdfltform.h ivtools-0.9/src/IVGlyph/bdtable.c ivtools-0.9/src/IVGlyph/bdtable.h ivtools-0.9/src/IVGlyph/bdvalue.c ivtools-0.9/src/IVGlyph/bdvalue.h ivtools-0.9/src/IVGlyph/boolform.c ivtools-0.9/src/IVGlyph/boolform.h ivtools-0.9/src/IVGlyph/charfield.c ivtools-0.9/src/IVGlyph/charfield.h ivtools-0.9/src/IVGlyph/dragedit.c ivtools-0.9/src/IVGlyph/dragedit.h ivtools-0.9/src/IVGlyph/enumform.c ivtools-0.9/src/IVGlyph/enumform.h ivtools-0.9/src/IVGlyph/exportchooser.c ivtools-0.9/src/IVGlyph/exportchooser.h ivtools-0.9/src/IVGlyph/fieldedit.c ivtools-0.9/src/IVGlyph/fieldedit.h ivtools-0.9/src/IVGlyph/figure.c ivtools-0.9/src/IVGlyph/figure.h ivtools-0.9/src/IVGlyph/gdialogs.c ivtools-0.9/src/IVGlyph/gdialogs.h ivtools-0.9/src/IVGlyph/globals.c ivtools-0.9/src/IVGlyph/globals.h ivtools-0.9/src/IVGlyph/grabber.bm ivtools-0.9/src/IVGlyph/grabberMask.bm ivtools-0.9/src/IVGlyph/idraw.c ivtools-0.9/src/IVGlyph/idraw.h ivtools-0.9/src/IVGlyph/importchooser.c ivtools-0.9/src/IVGlyph/importchooser.h ivtools-0.9/src/IVGlyph/namestate.c ivtools-0.9/src/IVGlyph/namestate.h ivtools-0.9/src/IVGlyph/observables.c ivtools-0.9/src/IVGlyph/observables.h ivtools-0.9/src/IVGlyph/odialogs.c ivtools-0.9/src/IVGlyph/odialogs.h ivtools-0.9/src/IVGlyph/ofilechooser.c ivtools-0.9/src/IVGlyph/ofilechooser.h ivtools-0.9/src/IVGlyph/printchooser.c ivtools-0.9/src/IVGlyph/printchooser.h ivtools-0.9/src/IVGlyph/saveaschooser.c ivtools-0.9/src/IVGlyph/saveaschooser.h ivtools-0.9/src/IVGlyph/scrollable.c ivtools-0.9/src/IVGlyph/scrollable.h ivtools-0.9/src/IVGlyph/strchooser.c ivtools-0.9/src/IVGlyph/strchooser.h ivtools-0.9/src/IVGlyph/stredit.c ivtools-0.9/src/IVGlyph/stredit.h ivtools-0.9/src/IVGlyph/strlist.c ivtools-0.9/src/IVGlyph/strlist.h ivtools-0.9/src/IVGlyph/textbuff.c ivtools-0.9/src/IVGlyph/textbuff.h ivtools-0.9/src/IVGlyph/textedit.c ivtools-0.9/src/IVGlyph/textedit.h ivtools-0.9/src/IVGlyph/texteditor.c ivtools-0.9/src/IVGlyph/texteditor.h ivtools-0.9/src/IVGlyph/textform.c ivtools-0.9/src/IVGlyph/textform.h ivtools-0.9/src/IVGlyph/textview.c ivtools-0.9/src/IVGlyph/textview.h ivtools-0.9/src/IVGlyph/textwindow.c ivtools-0.9/src/IVGlyph/textwindow.h ivtools-0.9/src/IVGlyph/toolbutton.c ivtools-0.9/src/IVGlyph/toolbutton.h ivtools-0.9/src/IVGlyph/valuator.c ivtools-0.9/src/IVGlyph/valuator.h ivtools-0.9/src/Imakefile ivtools-0.9/src/InterViews/Imakefile ivtools-0.9/src/InterViews/Makefile ivtools-0.9/src/InterViews/action.c ivtools-0.9/src/InterViews/adjust.c ivtools-0.9/src/InterViews/aggr.c ivtools-0.9/src/InterViews/align.c ivtools-0.9/src/InterViews/alloctbl.c ivtools-0.9/src/InterViews/arrcomp.c ivtools-0.9/src/InterViews/background.c ivtools-0.9/src/InterViews/bevel.c ivtools-0.9/src/InterViews/border.c ivtools-0.9/src/InterViews/box.c ivtools-0.9/src/InterViews/browser.c ivtools-0.9/src/InterViews/button.c ivtools-0.9/src/InterViews/character.c ivtools-0.9/src/InterViews/composition.c ivtools-0.9/src/InterViews/compositor.c ivtools-0.9/src/InterViews/debug.c ivtools-0.9/src/InterViews/deck.c ivtools-0.9/src/InterViews/dialogs.c ivtools-0.9/src/InterViews/fbrowser.c ivtools-0.9/src/InterViews/fchooser.c ivtools-0.9/src/InterViews/field.c ivtools-0.9/src/InterViews/geometry.c ivtools-0.9/src/InterViews/glyph.c ivtools-0.9/src/InterViews/group.c ivtools-0.9/src/InterViews/handler.c ivtools-0.9/src/InterViews/hit.c ivtools-0.9/src/InterViews/image.c ivtools-0.9/src/InterViews/input.c ivtools-0.9/src/InterViews/kit.c ivtools-0.9/src/InterViews/label.c ivtools-0.9/src/InterViews/layout.c ivtools-0.9/src/InterViews/lrmarker.c ivtools-0.9/src/InterViews/menu.c ivtools-0.9/src/InterViews/mf_dialogs.c ivtools-0.9/src/InterViews/mf_kit.c ivtools-0.9/src/InterViews/mono_kit.c ivtools-0.9/src/InterViews/monoglyph.c ivtools-0.9/src/InterViews/observe.c ivtools-0.9/src/InterViews/ol_dialogs.c ivtools-0.9/src/InterViews/ol_kit.c ivtools-0.9/src/InterViews/page.c ivtools-0.9/src/InterViews/patch.c ivtools-0.9/src/InterViews/place.c ivtools-0.9/src/InterViews/polyglyph.c ivtools-0.9/src/InterViews/printer.c ivtools-0.9/src/InterViews/psfont.c ivtools-0.9/src/InterViews/regexp.c ivtools-0.9/src/InterViews/resource.c ivtools-0.9/src/InterViews/rule.c ivtools-0.9/src/InterViews/scrbox.c ivtools-0.9/src/InterViews/session.c ivtools-0.9/src/InterViews/shadow.c ivtools-0.9/src/InterViews/simpcomp.c ivtools-0.9/src/InterViews/slider.c ivtools-0.9/src/InterViews/smf_kit.c ivtools-0.9/src/InterViews/stencil.c ivtools-0.9/src/InterViews/stepper.c ivtools-0.9/src/InterViews/style.c ivtools-0.9/src/InterViews/superpose.c ivtools-0.9/src/InterViews/target.c ivtools-0.9/src/InterViews/telltale.c ivtools-0.9/src/InterViews/texcomp.c ivtools-0.9/src/InterViews/tformsetter.c ivtools-0.9/src/InterViews/tiff.c ivtools-0.9/src/InterViews/tile.c ivtools-0.9/src/InterViews/transformer.c ivtools-0.9/src/InterViews/xymarker.c ivtools-0.9/src/IueServ/Imakefile ivtools-0.9/src/IueServ/Makefile ivtools-0.9/src/IueServ/exportfunc.c ivtools-0.9/src/IueServ/exportfunc.h ivtools-0.9/src/IueServ/ipfunc.c ivtools-0.9/src/IueServ/ipfunc.h ivtools-0.9/src/IueServ/iueclasses.h ivtools-0.9/src/IueServ/iuecomps.c ivtools-0.9/src/IueServ/iuecomps.h ivtools-0.9/src/IueServ/iuefunc.c ivtools-0.9/src/IueServ/iuefunc.h ivtools-0.9/src/IueServ/iuehandler.c ivtools-0.9/src/IueServ/iuehandler.h ivtools-0.9/src/IueServ/roifunc.c ivtools-0.9/src/IueServ/roifunc.h ivtools-0.9/src/Makefile ivtools-0.9/src/OS/Imakefile ivtools-0.9/src/OS/Makefile ivtools-0.9/src/OS/directory.c ivtools-0.9/src/OS/file.c ivtools-0.9/src/OS/host.c ivtools-0.9/src/OS/listimpl.c ivtools-0.9/src/OS/math.c ivtools-0.9/src/OS/memory.c ivtools-0.9/src/OS/string.c ivtools-0.9/src/OS/ustring.c ivtools-0.9/src/OverlayUnidraw/Imakefile ivtools-0.9/src/OverlayUnidraw/Makefile ivtools-0.9/src/OverlayUnidraw/aceimport.c ivtools-0.9/src/OverlayUnidraw/aceimport.h ivtools-0.9/src/OverlayUnidraw/algebra3.h ivtools-0.9/src/OverlayUnidraw/annotate.c ivtools-0.9/src/OverlayUnidraw/annotate.h ivtools-0.9/src/OverlayUnidraw/attrtool.c ivtools-0.9/src/OverlayUnidraw/attrtool.h ivtools-0.9/src/OverlayUnidraw/clipline.c ivtools-0.9/src/OverlayUnidraw/clipline.h ivtools-0.9/src/OverlayUnidraw/cliplinepoly.c ivtools-0.9/src/OverlayUnidraw/cliplinepoly.h ivtools-0.9/src/OverlayUnidraw/clippoly.c ivtools-0.9/src/OverlayUnidraw/clippoly.h ivtools-0.9/src/OverlayUnidraw/grayraster.c ivtools-0.9/src/OverlayUnidraw/grayraster.h ivtools-0.9/src/OverlayUnidraw/grloctool.c ivtools-0.9/src/OverlayUnidraw/grloctool.h ivtools-0.9/src/OverlayUnidraw/indexmixins.c ivtools-0.9/src/OverlayUnidraw/indexmixins.h ivtools-0.9/src/OverlayUnidraw/leakchecker.h ivtools-0.9/src/OverlayUnidraw/ovabout.c ivtools-0.9/src/OverlayUnidraw/ovabout.h ivtools-0.9/src/OverlayUnidraw/ovadjuster.c ivtools-0.9/src/OverlayUnidraw/ovadjuster.h ivtools-0.9/src/OverlayUnidraw/ovarrow.c ivtools-0.9/src/OverlayUnidraw/ovarrow.h ivtools-0.9/src/OverlayUnidraw/ovcamcmds.c ivtools-0.9/src/OverlayUnidraw/ovcamcmds.h ivtools-0.9/src/OverlayUnidraw/ovcatalog.c ivtools-0.9/src/OverlayUnidraw/ovcatalog.h ivtools-0.9/src/OverlayUnidraw/ovchainview.c ivtools-0.9/src/OverlayUnidraw/ovchainview.h ivtools-0.9/src/OverlayUnidraw/ovclasses.h ivtools-0.9/src/OverlayUnidraw/ovclip.c ivtools-0.9/src/OverlayUnidraw/ovclip.h ivtools-0.9/src/OverlayUnidraw/ovcmds.c ivtools-0.9/src/OverlayUnidraw/ovcmds.h ivtools-0.9/src/OverlayUnidraw/ovcomps.c ivtools-0.9/src/OverlayUnidraw/ovcomps.h ivtools-0.9/src/OverlayUnidraw/ovcreator.c ivtools-0.9/src/OverlayUnidraw/ovcreator.h ivtools-0.9/src/OverlayUnidraw/ovctrl.c ivtools-0.9/src/OverlayUnidraw/ovctrl.h ivtools-0.9/src/OverlayUnidraw/ovdamage.c ivtools-0.9/src/OverlayUnidraw/ovdamage.h ivtools-0.9/src/OverlayUnidraw/ovdialog.c ivtools-0.9/src/OverlayUnidraw/ovdialog.h ivtools-0.9/src/OverlayUnidraw/ovdoer.c ivtools-0.9/src/OverlayUnidraw/ovdoer.h ivtools-0.9/src/OverlayUnidraw/oved.c ivtools-0.9/src/OverlayUnidraw/oved.h ivtools-0.9/src/OverlayUnidraw/ovellipse.c ivtools-0.9/src/OverlayUnidraw/ovellipse.h ivtools-0.9/src/OverlayUnidraw/ovexport.c ivtools-0.9/src/OverlayUnidraw/ovexport.h ivtools-0.9/src/OverlayUnidraw/ovfile.c ivtools-0.9/src/OverlayUnidraw/ovfile.h ivtools-0.9/src/OverlayUnidraw/ovfixview.c ivtools-0.9/src/OverlayUnidraw/ovfixview.h ivtools-0.9/src/OverlayUnidraw/ovgdialog.c ivtools-0.9/src/OverlayUnidraw/ovgdialog.h ivtools-0.9/src/OverlayUnidraw/ovhull.c ivtools-0.9/src/OverlayUnidraw/ovhull.h ivtools-0.9/src/OverlayUnidraw/ovimport.c ivtools-0.9/src/OverlayUnidraw/ovimport.h ivtools-0.9/src/OverlayUnidraw/ovipcmds.c ivtools-0.9/src/OverlayUnidraw/ovipcmds.h ivtools-0.9/src/OverlayUnidraw/ovkit.c ivtools-0.9/src/OverlayUnidraw/ovkit.h ivtools-0.9/src/OverlayUnidraw/ovline.c ivtools-0.9/src/OverlayUnidraw/ovline.h ivtools-0.9/src/OverlayUnidraw/ovmanips.c ivtools-0.9/src/OverlayUnidraw/ovmanips.h ivtools-0.9/src/OverlayUnidraw/ovpage.c ivtools-0.9/src/OverlayUnidraw/ovpage.h ivtools-0.9/src/OverlayUnidraw/ovpainter.c ivtools-0.9/src/OverlayUnidraw/ovpainter.h ivtools-0.9/src/OverlayUnidraw/ovpanner.c ivtools-0.9/src/OverlayUnidraw/ovpanner.h ivtools-0.9/src/OverlayUnidraw/ovpolygon.c ivtools-0.9/src/OverlayUnidraw/ovpolygon.h ivtools-0.9/src/OverlayUnidraw/ovprecise.c ivtools-0.9/src/OverlayUnidraw/ovprecise.h ivtools-0.9/src/OverlayUnidraw/ovprint.c ivtools-0.9/src/OverlayUnidraw/ovprint.h ivtools-0.9/src/OverlayUnidraw/ovpspict.c ivtools-0.9/src/OverlayUnidraw/ovpspict.h ivtools-0.9/src/OverlayUnidraw/ovpsview.c ivtools-0.9/src/OverlayUnidraw/ovpsview.h ivtools-0.9/src/OverlayUnidraw/ovraster.c ivtools-0.9/src/OverlayUnidraw/ovraster.h ivtools-0.9/src/OverlayUnidraw/ovrect.c ivtools-0.9/src/OverlayUnidraw/ovrect.h ivtools-0.9/src/OverlayUnidraw/ovrestimage.c ivtools-0.9/src/OverlayUnidraw/ovrestimage.h ivtools-0.9/src/OverlayUnidraw/ovselect.c ivtools-0.9/src/OverlayUnidraw/ovselect.h ivtools-0.9/src/OverlayUnidraw/ovselection.c ivtools-0.9/src/OverlayUnidraw/ovselection.h ivtools-0.9/src/OverlayUnidraw/ovshowhide.c ivtools-0.9/src/OverlayUnidraw/ovshowhide.h ivtools-0.9/src/OverlayUnidraw/ovspline.c ivtools-0.9/src/OverlayUnidraw/ovspline.h ivtools-0.9/src/OverlayUnidraw/ovstates.c ivtools-0.9/src/OverlayUnidraw/ovstates.h ivtools-0.9/src/OverlayUnidraw/ovstencil.c ivtools-0.9/src/OverlayUnidraw/ovstencil.h ivtools-0.9/src/OverlayUnidraw/ovtext.c ivtools-0.9/src/OverlayUnidraw/ovtext.h ivtools-0.9/src/OverlayUnidraw/ovunidraw.c ivtools-0.9/src/OverlayUnidraw/ovunidraw.h ivtools-0.9/src/OverlayUnidraw/ovvars.c ivtools-0.9/src/OverlayUnidraw/ovvars.h ivtools-0.9/src/OverlayUnidraw/ovvertices.c ivtools-0.9/src/OverlayUnidraw/ovvertices.h ivtools-0.9/src/OverlayUnidraw/ovviewer.c ivtools-0.9/src/OverlayUnidraw/ovviewer.h ivtools-0.9/src/OverlayUnidraw/ovviews.c ivtools-0.9/src/OverlayUnidraw/ovviews.h ivtools-0.9/src/OverlayUnidraw/paramlist.h ivtools-0.9/src/OverlayUnidraw/phold.h ivtools-0.9/src/OverlayUnidraw/ptinpoly.c ivtools-0.9/src/OverlayUnidraw/ptinpoly.h ivtools-0.9/src/OverlayUnidraw/rastercmds.c ivtools-0.9/src/OverlayUnidraw/rastercmds.h ivtools-0.9/src/OverlayUnidraw/scriptview.c ivtools-0.9/src/OverlayUnidraw/scriptview.h ivtools-0.9/src/OverlayUnidraw/setattrbyexpr.c ivtools-0.9/src/OverlayUnidraw/setattrbyexpr.h ivtools-0.9/src/OverlayUnidraw/slctbyattr.c ivtools-0.9/src/OverlayUnidraw/slctbyattr.h ivtools-0.9/src/OverlayUnidraw/textfile.c ivtools-0.9/src/OverlayUnidraw/textfile.h ivtools-0.9/src/TIFF/Copyright ivtools-0.9/src/TIFF/HOWTO ivtools-0.9/src/TIFF/Imakefile ivtools-0.9/src/TIFF/Makefile ivtools-0.9/src/TIFF/README ivtools-0.9/src/TIFF/VERSION ivtools-0.9/src/TIFF/machdep.h ivtools-0.9/src/TIFF/mkg3states.c ivtools-0.9/src/TIFF/mkspans.c ivtools-0.9/src/TIFF/prototypes.h ivtools-0.9/src/TIFF/t4.h ivtools-0.9/src/TIFF/tif_aux.c ivtools-0.9/src/TIFF/tif_ccittrle.c ivtools-0.9/src/TIFF/tif_close.c ivtools-0.9/src/TIFF/tif_compat.c ivtools-0.9/src/TIFF/tif_compress.c ivtools-0.9/src/TIFF/tif_dir.c ivtools-0.9/src/TIFF/tif_dirinfo.c ivtools-0.9/src/TIFF/tif_dirread.c ivtools-0.9/src/TIFF/tif_dirwrite.c ivtools-0.9/src/TIFF/tif_dumpmode.c ivtools-0.9/src/TIFF/tif_error.c ivtools-0.9/src/TIFF/tif_fax3.c ivtools-0.9/src/TIFF/tif_fax3.h ivtools-0.9/src/TIFF/tif_fax4.c ivtools-0.9/src/TIFF/tif_flush.c ivtools-0.9/src/TIFF/tif_getimage.c ivtools-0.9/src/TIFF/tif_jpeg.c ivtools-0.9/src/TIFF/tif_lzw.c ivtools-0.9/src/TIFF/tif_machdep.c ivtools-0.9/src/TIFF/tif_next.c ivtools-0.9/src/TIFF/tif_open.c ivtools-0.9/src/TIFF/tif_packbits.c ivtools-0.9/src/TIFF/tif_print.c ivtools-0.9/src/TIFF/tif_read.c ivtools-0.9/src/TIFF/tif_strip.c ivtools-0.9/src/TIFF/tif_swab.c ivtools-0.9/src/TIFF/tif_thunder.c ivtools-0.9/src/TIFF/tif_tile.c ivtools-0.9/src/TIFF/tif_version.c ivtools-0.9/src/TIFF/tif_warning.c ivtools-0.9/src/TIFF/tif_write.c ivtools-0.9/src/TIFF/tiffcompat.h ivtools-0.9/src/TIFF/tiffioP.h ivtools-0.9/src/Time/Date.c ivtools-0.9/src/Time/Date.h ivtools-0.9/src/Time/Imakefile ivtools-0.9/src/Time/Makefile ivtools-0.9/src/Time/Time.c ivtools-0.9/src/Time/Time.h ivtools-0.9/src/Time/obstime.c ivtools-0.9/src/Time/obstime.h ivtools-0.9/src/Time/timeglyph.c ivtools-0.9/src/Time/timeglyph.h ivtools-0.9/src/TopoFace/Imakefile ivtools-0.9/src/TopoFace/Makefile ivtools-0.9/src/TopoFace/fgeomobjs.c ivtools-0.9/src/TopoFace/fgeomobjs.h ivtools-0.9/src/TopoFace/topoedge.c ivtools-0.9/src/TopoFace/topoedge.h ivtools-0.9/src/TopoFace/topoedgelist.c ivtools-0.9/src/TopoFace/topoedgelist.h ivtools-0.9/src/TopoFace/topoelt.c ivtools-0.9/src/TopoFace/topoelt.h ivtools-0.9/src/TopoFace/topoface.c ivtools-0.9/src/TopoFace/topoface.h ivtools-0.9/src/TopoFace/toponode.c ivtools-0.9/src/TopoFace/toponode.h ivtools-0.9/src/UniIdraw/Imakefile ivtools-0.9/src/UniIdraw/Makefile ivtools-0.9/src/UniIdraw/idarrow.c ivtools-0.9/src/UniIdraw/idarrow.h ivtools-0.9/src/UniIdraw/idarrowhead.c ivtools-0.9/src/UniIdraw/idarrowhead.h ivtools-0.9/src/UniIdraw/idarrows.c ivtools-0.9/src/UniIdraw/idarrows.h ivtools-0.9/src/UniIdraw/idcatalog.c ivtools-0.9/src/UniIdraw/idcatalog.h ivtools-0.9/src/UniIdraw/idclasses.h ivtools-0.9/src/UniIdraw/idcmds.c ivtools-0.9/src/UniIdraw/idcmds.h ivtools-0.9/src/UniIdraw/idcomp.c ivtools-0.9/src/UniIdraw/idcomp.h ivtools-0.9/src/UniIdraw/idcreator.c ivtools-0.9/src/UniIdraw/idcreator.h ivtools-0.9/src/UniIdraw/iddialogs.c ivtools-0.9/src/UniIdraw/iddialogs.h ivtools-0.9/src/UniIdraw/ided.c ivtools-0.9/src/UniIdraw/ided.h ivtools-0.9/src/UniIdraw/idkybd.c ivtools-0.9/src/UniIdraw/idkybd.h ivtools-0.9/src/UniIdraw/idvars.c ivtools-0.9/src/UniIdraw/idvars.h ivtools-0.9/src/UniIdraw/idversion.h ivtools-0.9/src/Unidraw-common/Imakefile ivtools-0.9/src/Unidraw-common/Makefile ivtools-0.9/src/Unidraw-common/component.c ivtools-0.9/src/Unidraw-common/compview.c ivtools-0.9/src/Unidraw-common/geomobjs.c ivtools-0.9/src/Unidraw-common/iterator.c ivtools-0.9/src/Unidraw-common/uarray.c ivtools-0.9/src/Unidraw-common/uhash.c ivtools-0.9/src/Unidraw-common/ulist.c ivtools-0.9/src/Unidraw-common/umap.c ivtools-0.9/src/Unidraw/Imakefile ivtools-0.9/src/Unidraw/Makefile ivtools-0.9/src/Unidraw/align.c ivtools-0.9/src/Unidraw/brushcmd.c ivtools-0.9/src/Unidraw/catalog.c ivtools-0.9/src/Unidraw/catcmds.c ivtools-0.9/src/Unidraw/cglue.c ivtools-0.9/src/Unidraw/clipboard.c ivtools-0.9/src/Unidraw/colorcmd.c ivtools-0.9/src/Unidraw/command.c ivtools-0.9/src/Unidraw/component.c ivtools-0.9/src/Unidraw/compview.c ivtools-0.9/src/Unidraw/connect.c ivtools-0.9/src/Unidraw/connector.c ivtools-0.9/src/Unidraw/creator.c ivtools-0.9/src/Unidraw/csolver.c ivtools-0.9/src/Unidraw/ctrlinfo.c ivtools-0.9/src/Unidraw/damage.c ivtools-0.9/src/Unidraw/data.c ivtools-0.9/src/Unidraw/datas.c ivtools-0.9/src/Unidraw/dialogs.c ivtools-0.9/src/Unidraw/edit.c ivtools-0.9/src/Unidraw/editor.c ivtools-0.9/src/Unidraw/editorinfo.c ivtools-0.9/src/Unidraw/ellipse.c ivtools-0.9/src/Unidraw/ellipses.c ivtools-0.9/src/Unidraw/externview.c ivtools-0.9/src/Unidraw/font.c ivtools-0.9/src/Unidraw/geomobjs.c ivtools-0.9/src/Unidraw/globals.c ivtools-0.9/src/Unidraw/graphic.c ivtools-0.9/src/Unidraw/grblock.c ivtools-0.9/src/Unidraw/grcomp.c ivtools-0.9/src/Unidraw/grcomptool.c ivtools-0.9/src/Unidraw/grid.c ivtools-0.9/src/Unidraw/grview.c ivtools-0.9/src/Unidraw/gvupdater.c ivtools-0.9/src/Unidraw/import.c ivtools-0.9/src/Unidraw/iterator.c ivtools-0.9/src/Unidraw/keymap.c ivtools-0.9/src/Unidraw/kybd.c ivtools-0.9/src/Unidraw/line.c ivtools-0.9/src/Unidraw/lines.c ivtools-0.9/src/Unidraw/link.c ivtools-0.9/src/Unidraw/macro.c ivtools-0.9/src/Unidraw/magnify.c ivtools-0.9/src/Unidraw/manip.c ivtools-0.9/src/Unidraw/manips.c ivtools-0.9/src/Unidraw/move.c ivtools-0.9/src/Unidraw/nop.c ivtools-0.9/src/Unidraw/pad.c ivtools-0.9/src/Unidraw/patcmd.c ivtools-0.9/src/Unidraw/path.c ivtools-0.9/src/Unidraw/picture.c ivtools-0.9/src/Unidraw/pin.c ivtools-0.9/src/Unidraw/polygon.c ivtools-0.9/src/Unidraw/polygons.c ivtools-0.9/src/Unidraw/pspaint.c ivtools-0.9/src/Unidraw/psview.c ivtools-0.9/src/Unidraw/rastercomp.c ivtools-0.9/src/Unidraw/rasterrect.c ivtools-0.9/src/Unidraw/rect.c ivtools-0.9/src/Unidraw/reshape.c ivtools-0.9/src/Unidraw/rotate.c ivtools-0.9/src/Unidraw/scale.c ivtools-0.9/src/Unidraw/select.c ivtools-0.9/src/Unidraw/selection.c ivtools-0.9/src/Unidraw/slot.c ivtools-0.9/src/Unidraw/spline.c ivtools-0.9/src/Unidraw/splines.c ivtools-0.9/src/Unidraw/statevar.c ivtools-0.9/src/Unidraw/statevars.c ivtools-0.9/src/Unidraw/stateview.c ivtools-0.9/src/Unidraw/stateviews.c ivtools-0.9/src/Unidraw/stencilcomp.c ivtools-0.9/src/Unidraw/stretch.c ivtools-0.9/src/Unidraw/struct.c ivtools-0.9/src/Unidraw/text.c ivtools-0.9/src/Unidraw/tool.c ivtools-0.9/src/Unidraw/transfn.c ivtools-0.9/src/Unidraw/transfns.c ivtools-0.9/src/Unidraw/transforms.c ivtools-0.9/src/Unidraw/uarray.c ivtools-0.9/src/Unidraw/uctrl.c ivtools-0.9/src/Unidraw/uctrls.c ivtools-0.9/src/Unidraw/uhash.c ivtools-0.9/src/Unidraw/ulabel.c ivtools-0.9/src/Unidraw/ulist.c ivtools-0.9/src/Unidraw/umap.c ivtools-0.9/src/Unidraw/unidraw.c ivtools-0.9/src/Unidraw/upage.c ivtools-0.9/src/Unidraw/ustencil.c ivtools-0.9/src/Unidraw/vertices.c ivtools-0.9/src/Unidraw/verts.c ivtools-0.9/src/Unidraw/viewcmds.c ivtools-0.9/src/Unidraw/viewer.c ivtools-0.9/src/comdraw/Imakefile ivtools-0.9/src/comdraw/Makefile ivtools-0.9/src/comdraw/README ivtools-0.9/src/comdraw/main.c ivtools-0.9/src/comterp_/Imakefile ivtools-0.9/src/comterp_/Makefile ivtools-0.9/src/comterp_/README ivtools-0.9/src/comterp_/main.c ivtools-0.9/src/comtest/Imakefile ivtools-0.9/src/comtest/Makefile ivtools-0.9/src/comtest/main.c ivtools-0.9/src/dclock/Imakefile ivtools-0.9/src/dclock/Makefile ivtools-0.9/src/dclock/clocktime.c ivtools-0.9/src/dclock/clocktime.h ivtools-0.9/src/dclock/data.c ivtools-0.9/src/dclock/data.h ivtools-0.9/src/dclock/dclock.c ivtools-0.9/src/dclock/dclock.h ivtools-0.9/src/dclock/dface.c ivtools-0.9/src/dclock/dface.h ivtools-0.9/src/dclock/digit.c ivtools-0.9/src/dclock/digit.h ivtools-0.9/src/dclock/segment.c ivtools-0.9/src/dclock/segment.h ivtools-0.9/src/drawserv_/Imakefile ivtools-0.9/src/drawserv_/Makefile ivtools-0.9/src/drawserv_/main.c ivtools-0.9/src/drawtool/Imakefile ivtools-0.9/src/drawtool/Makefile ivtools-0.9/src/drawtool/README ivtools-0.9/src/drawtool/main.c ivtools-0.9/src/flipbook/Imakefile ivtools-0.9/src/flipbook/Makefile ivtools-0.9/src/flipbook/README ivtools-0.9/src/flipbook/main.c ivtools-0.9/src/glyphs/Imakefile ivtools-0.9/src/glyphs/Makefile ivtools-0.9/src/glyphs/README ivtools-0.9/src/glyphs/bdvtable/Imakefile ivtools-0.9/src/glyphs/bdvtable/Makefile ivtools-0.9/src/glyphs/bdvtable/main.c ivtools-0.9/src/glyphs/examples3.1/Imakefile ivtools-0.9/src/glyphs/examples3.1/Makefile ivtools-0.9/src/glyphs/examples3.1/README ivtools-0.9/src/glyphs/examples3.1/box1/Imakefile ivtools-0.9/src/glyphs/examples3.1/box1/Makefile ivtools-0.9/src/glyphs/examples3.1/box1/main.c ivtools-0.9/src/glyphs/examples3.1/box2/Imakefile ivtools-0.9/src/glyphs/examples3.1/box2/Makefile ivtools-0.9/src/glyphs/examples3.1/box2/main.c ivtools-0.9/src/glyphs/examples3.1/box3/Imakefile ivtools-0.9/src/glyphs/examples3.1/box3/Makefile ivtools-0.9/src/glyphs/examples3.1/box3/main.c ivtools-0.9/src/glyphs/examples3.1/box4/Imakefile ivtools-0.9/src/glyphs/examples3.1/box4/Makefile ivtools-0.9/src/glyphs/examples3.1/box4/main.c ivtools-0.9/src/glyphs/examples3.1/box5/Imakefile ivtools-0.9/src/glyphs/examples3.1/box5/Makefile ivtools-0.9/src/glyphs/examples3.1/box5/main.c ivtools-0.9/src/glyphs/examples3.1/button1/Imakefile ivtools-0.9/src/glyphs/examples3.1/button1/Makefile ivtools-0.9/src/glyphs/examples3.1/button1/main.c ivtools-0.9/src/glyphs/examples3.1/button2/Imakefile ivtools-0.9/src/glyphs/examples3.1/button2/Makefile ivtools-0.9/src/glyphs/examples3.1/button2/jello.tif ivtools-0.9/src/glyphs/examples3.1/button2/main.c ivtools-0.9/src/glyphs/examples3.1/button3/Imakefile ivtools-0.9/src/glyphs/examples3.1/button3/Makefile ivtools-0.9/src/glyphs/examples3.1/button3/main.c ivtools-0.9/src/glyphs/examples3.1/bvalue/Imakefile ivtools-0.9/src/glyphs/examples3.1/bvalue/Makefile ivtools-0.9/src/glyphs/examples3.1/bvalue/main.c ivtools-0.9/src/glyphs/examples3.1/circle/Imakefile ivtools-0.9/src/glyphs/examples3.1/circle/Makefile ivtools-0.9/src/glyphs/examples3.1/circle/main.c ivtools-0.9/src/glyphs/examples3.1/drag/Imakefile ivtools-0.9/src/glyphs/examples3.1/drag/Makefile ivtools-0.9/src/glyphs/examples3.1/drag/main.c ivtools-0.9/src/glyphs/examples3.1/fonts/Imakefile ivtools-0.9/src/glyphs/examples3.1/fonts/Makefile ivtools-0.9/src/glyphs/examples3.1/fonts/main.c ivtools-0.9/src/glyphs/examples3.1/himom/Imakefile ivtools-0.9/src/glyphs/examples3.1/himom/Makefile ivtools-0.9/src/glyphs/examples3.1/himom/main.c ivtools-0.9/src/glyphs/examples3.1/image/Imakefile ivtools-0.9/src/glyphs/examples3.1/image/Makefile ivtools-0.9/src/glyphs/examples3.1/image/main.c ivtools-0.9/src/glyphs/examples3.1/ips/Imakefile ivtools-0.9/src/glyphs/examples3.1/ips/Makefile ivtools-0.9/src/glyphs/examples3.1/ips/figure.c ivtools-0.9/src/glyphs/examples3.1/ips/figure.h ivtools-0.9/src/glyphs/examples3.1/ips/idraw.c ivtools-0.9/src/glyphs/examples3.1/ips/idraw.h ivtools-0.9/src/glyphs/examples3.1/ips/main.c ivtools-0.9/src/glyphs/examples3.1/menu/Imakefile ivtools-0.9/src/glyphs/examples3.1/menu/Makefile ivtools-0.9/src/glyphs/examples3.1/menu/main.c ivtools-0.9/src/glyphs/examples3.1/patch/Imakefile ivtools-0.9/src/glyphs/examples3.1/patch/Makefile ivtools-0.9/src/glyphs/examples3.1/patch/main.c ivtools-0.9/src/glyphs/examples3.1/plot/Axis.c ivtools-0.9/src/glyphs/examples3.1/plot/Axis.h ivtools-0.9/src/glyphs/examples3.1/plot/Graph.c ivtools-0.9/src/glyphs/examples3.1/plot/Graph.h ivtools-0.9/src/glyphs/examples3.1/plot/Imakefile ivtools-0.9/src/glyphs/examples3.1/plot/Makefile ivtools-0.9/src/glyphs/examples3.1/plot/Plot.c ivtools-0.9/src/glyphs/examples3.1/plot/Plot.h ivtools-0.9/src/glyphs/examples3.1/plot/README ivtools-0.9/src/glyphs/examples3.1/plot/main.c ivtools-0.9/src/glyphs/examples3.1/plot/rpc_read.c ivtools-0.9/src/glyphs/examples3.1/plot/rpc_read.h ivtools-0.9/src/glyphs/examples3.1/preview/Imakefile ivtools-0.9/src/glyphs/examples3.1/preview/Makefile ivtools-0.9/src/glyphs/examples3.1/preview/input ivtools-0.9/src/glyphs/examples3.1/preview/main.c ivtools-0.9/src/glyphs/examples3.1/print/Imakefile ivtools-0.9/src/glyphs/examples3.1/print/Makefile ivtools-0.9/src/glyphs/examples3.1/print/main.c ivtools-0.9/src/glyphs/examples3.1/rubband/Imakefile ivtools-0.9/src/glyphs/examples3.1/rubband/Makefile ivtools-0.9/src/glyphs/examples3.1/rubband/main.c ivtools-0.9/src/glyphs/examples3.1/sendplot/Imakefile ivtools-0.9/src/glyphs/examples3.1/sendplot/Makefile ivtools-0.9/src/glyphs/examples3.1/sendplot/main.c ivtools-0.9/src/glyphs/examples3.1/sendplot/rpc_write.c ivtools-0.9/src/glyphs/examples3.1/sendplot/rpc_write.h ivtools-0.9/src/glyphs/examples3.1/zoomer/Imakefile ivtools-0.9/src/glyphs/examples3.1/zoomer/Makefile ivtools-0.9/src/glyphs/examples3.1/zoomer/main.c ivtools-0.9/src/glyphs/formdemo/Imakefile ivtools-0.9/src/glyphs/formdemo/Makefile ivtools-0.9/src/glyphs/formdemo/main.c ivtools-0.9/src/glyphs/gclock/Imakefile ivtools-0.9/src/glyphs/gclock/Makefile ivtools-0.9/src/glyphs/gclock/main.c ivtools-0.9/src/glyphs/meter/Imakefile ivtools-0.9/src/glyphs/meter/Makefile ivtools-0.9/src/glyphs/meter/main.c ivtools-0.9/src/glyphs/morpher/Imakefile ivtools-0.9/src/glyphs/morpher/Makefile ivtools-0.9/src/glyphs/morpher/README ivtools-0.9/src/glyphs/morpher/balls ivtools-0.9/src/glyphs/morpher/glypheditor.c ivtools-0.9/src/glyphs/morpher/glypheditor.h ivtools-0.9/src/glyphs/morpher/glyphviewer.c ivtools-0.9/src/glyphs/morpher/glyphviewer.h ivtools-0.9/src/glyphs/morpher/icons/cont_play ivtools-0.9/src/glyphs/morpher/icons/fast_forward ivtools-0.9/src/glyphs/morpher/icons/fast_reverse ivtools-0.9/src/glyphs/morpher/icons/forward_pause ivtools-0.9/src/glyphs/morpher/icons/forward_play ivtools-0.9/src/glyphs/morpher/icons/new-record ivtools-0.9/src/glyphs/morpher/icons/panel ivtools-0.9/src/glyphs/morpher/icons/pause ivtools-0.9/src/glyphs/morpher/icons/record ivtools-0.9/src/glyphs/morpher/icons/reverse_pause ivtools-0.9/src/glyphs/morpher/icons/reverse_play ivtools-0.9/src/glyphs/morpher/main.c ivtools-0.9/src/glyphs/morpher/man.0 ivtools-0.9/src/glyphs/morpher/man.1 ivtools-0.9/src/glyphs/morpher/morpher.c ivtools-0.9/src/glyphs/morpher/morpher.h ivtools-0.9/src/glyphs/morpher/rect ivtools-0.9/src/glyphs/radiogroup/Imakefile ivtools-0.9/src/glyphs/radiogroup/Makefile ivtools-0.9/src/glyphs/radiogroup/main.c ivtools-0.9/src/glyphs/scrollable/Imakefile ivtools-0.9/src/glyphs/scrollable/Makefile ivtools-0.9/src/glyphs/scrollable/main.c ivtools-0.9/src/glyphs/scrollfield/Imakefile ivtools-0.9/src/glyphs/scrollfield/Makefile ivtools-0.9/src/glyphs/scrollfield/main.c ivtools-0.9/src/glyphs/strchooser/Imakefile ivtools-0.9/src/glyphs/strchooser/Makefile ivtools-0.9/src/glyphs/strchooser/main.c ivtools-0.9/src/glyphs/text-editor/Imakefile ivtools-0.9/src/glyphs/text-editor/Makefile ivtools-0.9/src/glyphs/text-editor/README ivtools-0.9/src/glyphs/text-editor/main.c ivtools-0.9/src/glyphs/timestamp/Imakefile ivtools-0.9/src/glyphs/timestamp/Makefile ivtools-0.9/src/glyphs/timestamp/main.c ivtools-0.9/src/glyphterp/Imakefile ivtools-0.9/src/glyphterp/Makefile ivtools-0.9/src/glyphterp/main.c ivtools-0.9/src/graphdraw/Imakefile ivtools-0.9/src/graphdraw/Makefile ivtools-0.9/src/graphdraw/README ivtools-0.9/src/graphdraw/main.c ivtools-0.9/src/html/Imakefile ivtools-0.9/src/html/Makefile ivtools-0.9/src/html/README ivtools-0.9/src/html/getman31.sh ivtools-0.9/src/html/getrefman31.sh ivtools-0.9/src/html/templates/CLASS.html.tmpl ivtools-0.9/src/html/templates/Imakefile ivtools-0.9/src/html/templates/Makefile ivtools-0.9/src/html/templates/bug_m.flt ivtools-0.9/src/html/templates/dr_m.flt ivtools-0.9/src/html/templates/err_m.flt ivtools-0.9/src/html/templates/in_m.flt ivtools-0.9/src/html/templates/includeflt.flt ivtools-0.9/src/html/templates/index.html.tmpl ivtools-0.9/src/html/templates/linkflt.flt ivtools-0.9/src/html/templates/other.html.tmpl ivtools-0.9/src/html/templates/out_m.flt ivtools-0.9/src/html/templates/ret_m.flt ivtools-0.9/src/html/templates/smindex.html.tmpl ivtools-0.9/src/html/templates/time.flt ivtools-0.9/src/iclass/Imakefile ivtools-0.9/src/iclass/Makefile ivtools-0.9/src/iclass/classbuffer.c ivtools-0.9/src/iclass/classbuffer.h ivtools-0.9/src/iclass/classeditor.c ivtools-0.9/src/iclass/classeditor.h ivtools-0.9/src/iclass/classinfo.c ivtools-0.9/src/iclass/classinfo.h ivtools-0.9/src/iclass/dialogs.c ivtools-0.9/src/iclass/dialogs.h ivtools-0.9/src/iclass/direct.c ivtools-0.9/src/iclass/direct.h ivtools-0.9/src/iclass/globals.c ivtools-0.9/src/iclass/globals.h ivtools-0.9/src/iclass/iclass.c ivtools-0.9/src/iclass/iclass.h ivtools-0.9/src/iclass/main.c ivtools-0.9/src/idemo/Idemo.defaults ivtools-0.9/src/idemo/Imakefile ivtools-0.9/src/idemo/Makefile ivtools-0.9/src/idemo/main.c ivtools-0.9/src/idraw/Imakefile ivtools-0.9/src/idraw/Makefile ivtools-0.9/src/idraw/README ivtools-0.9/src/idraw/main.c ivtools-0.9/src/include/Dispatch/Imakefile ivtools-0.9/src/include/Dispatch/Makefile ivtools-0.9/src/include/Dispatch/_defines.h ivtools-0.9/src/include/Dispatch/_undefs.h ivtools-0.9/src/include/Dispatch/dispatcher.h ivtools-0.9/src/include/Dispatch/dp.h ivtools-0.9/src/include/Dispatch/enter-scope.h ivtools-0.9/src/include/Dispatch/iocallback.h ivtools-0.9/src/include/Dispatch/iohandler.h ivtools-0.9/src/include/Dispatch/iostreamb.h ivtools-0.9/src/include/Dispatch/leave-scope.h ivtools-0.9/src/include/Dispatch/rpcbuf.h ivtools-0.9/src/include/Dispatch/rpchdr.h ivtools-0.9/src/include/Dispatch/rpcpeer.h ivtools-0.9/src/include/Dispatch/rpcreader.h ivtools-0.9/src/include/Dispatch/rpcregistry.h ivtools-0.9/src/include/Dispatch/rpcservice.h ivtools-0.9/src/include/Dispatch/rpcstream.h ivtools-0.9/src/include/Dispatch/rpcwriter.h ivtools-0.9/src/include/IV-2_6/Imakefile ivtools-0.9/src/include/IV-2_6/InterViews/Imakefile ivtools-0.9/src/include/IV-2_6/InterViews/Makefile ivtools-0.9/src/include/IV-2_6/InterViews/adjuster.h ivtools-0.9/src/include/IV-2_6/InterViews/alignment.h ivtools-0.9/src/include/IV-2_6/InterViews/banner.h ivtools-0.9/src/include/IV-2_6/InterViews/border.h ivtools-0.9/src/include/IV-2_6/InterViews/box.h ivtools-0.9/src/include/IV-2_6/InterViews/button.h ivtools-0.9/src/include/IV-2_6/InterViews/compeditor.h ivtools-0.9/src/include/IV-2_6/InterViews/control.h ivtools-0.9/src/include/IV-2_6/InterViews/deck.h ivtools-0.9/src/include/IV-2_6/InterViews/defs.h ivtools-0.9/src/include/IV-2_6/InterViews/dialog.h ivtools-0.9/src/include/IV-2_6/InterViews/filebrowser.h ivtools-0.9/src/include/IV-2_6/InterViews/filechooser.h ivtools-0.9/src/include/IV-2_6/InterViews/frame.h ivtools-0.9/src/include/IV-2_6/InterViews/glue.h ivtools-0.9/src/include/IV-2_6/InterViews/ihandler.h ivtools-0.9/src/include/IV-2_6/InterViews/interactor.h ivtools-0.9/src/include/IV-2_6/InterViews/iwindow.h ivtools-0.9/src/include/IV-2_6/InterViews/matcheditor.h ivtools-0.9/src/include/IV-2_6/InterViews/menu.h ivtools-0.9/src/include/IV-2_6/InterViews/message.h ivtools-0.9/src/include/IV-2_6/InterViews/minmax.h ivtools-0.9/src/include/IV-2_6/InterViews/paint.h ivtools-0.9/src/include/IV-2_6/InterViews/painter.h ivtools-0.9/src/include/IV-2_6/InterViews/panner.h ivtools-0.9/src/include/IV-2_6/InterViews/perspective.h ivtools-0.9/src/include/IV-2_6/InterViews/rubband.h ivtools-0.9/src/include/IV-2_6/InterViews/rubcurve.h ivtools-0.9/src/include/IV-2_6/InterViews/rubgroup.h ivtools-0.9/src/include/IV-2_6/InterViews/rubline.h ivtools-0.9/src/include/IV-2_6/InterViews/rubrect.h ivtools-0.9/src/include/IV-2_6/InterViews/rubverts.h ivtools-0.9/src/include/IV-2_6/InterViews/scene.h ivtools-0.9/src/include/IV-2_6/InterViews/scrollbar.h ivtools-0.9/src/include/IV-2_6/InterViews/scroller.h ivtools-0.9/src/include/IV-2_6/InterViews/sensor.h ivtools-0.9/src/include/IV-2_6/InterViews/shape.h ivtools-0.9/src/include/IV-2_6/InterViews/strbrowser.h ivtools-0.9/src/include/IV-2_6/InterViews/strchooser.h ivtools-0.9/src/include/IV-2_6/InterViews/streditor.h ivtools-0.9/src/include/IV-2_6/InterViews/subject.h ivtools-0.9/src/include/IV-2_6/InterViews/textbuffer.h ivtools-0.9/src/include/IV-2_6/InterViews/textdisplay.h ivtools-0.9/src/include/IV-2_6/InterViews/texteditor.h ivtools-0.9/src/include/IV-2_6/InterViews/textstyle.h ivtools-0.9/src/include/IV-2_6/InterViews/tray.h ivtools-0.9/src/include/IV-2_6/InterViews/viewport.h ivtools-0.9/src/include/IV-2_6/InterViews/world.h ivtools-0.9/src/include/IV-2_6/Makefile ivtools-0.9/src/include/IV-2_6/_enter.h ivtools-0.9/src/include/IV-2_6/_leave.h ivtools-0.9/src/include/IV-2_6/_names.h ivtools-0.9/src/include/IV-3_1/Imakefile ivtools-0.9/src/include/IV-3_1/InterViews ivtools-0.9/src/include/IV-X11/Imakefile ivtools-0.9/src/include/IV-X11/Makefile ivtools-0.9/src/include/IV-X11/Xdefs.h ivtools-0.9/src/include/IV-X11/Xext.h ivtools-0.9/src/include/IV-X11/Xlib.h ivtools-0.9/src/include/IV-X11/Xundefs.h ivtools-0.9/src/include/IV-X11/Xutil.h ivtools-0.9/src/include/IV-X11/xbitmap.h ivtools-0.9/src/include/IV-X11/xbrush.h ivtools-0.9/src/include/IV-X11/xcanvas.h ivtools-0.9/src/include/IV-X11/xcolor.h ivtools-0.9/src/include/IV-X11/xcursor.h ivtools-0.9/src/include/IV-X11/xdisplay.h ivtools-0.9/src/include/IV-X11/xdrag.h ivtools-0.9/src/include/IV-X11/xevent.h ivtools-0.9/src/include/IV-X11/xfont.h ivtools-0.9/src/include/IV-X11/xpainter.h ivtools-0.9/src/include/IV-X11/xpattern.h ivtools-0.9/src/include/IV-X11/xraster.h ivtools-0.9/src/include/IV-X11/xselection.h ivtools-0.9/src/include/IV-X11/xwindow.h ivtools-0.9/src/include/IV-look/Imakefile ivtools-0.9/src/include/IV-look/Makefile ivtools-0.9/src/include/IV-look/bevel.h ivtools-0.9/src/include/IV-look/browser.h ivtools-0.9/src/include/IV-look/button.h ivtools-0.9/src/include/IV-look/choice.h ivtools-0.9/src/include/IV-look/dialogs.h ivtools-0.9/src/include/IV-look/fbrowser.h ivtools-0.9/src/include/IV-look/fchooser.h ivtools-0.9/src/include/IV-look/field.h ivtools-0.9/src/include/IV-look/kit.h ivtools-0.9/src/include/IV-look/menu.h ivtools-0.9/src/include/IV-look/mf_dialogs.h ivtools-0.9/src/include/IV-look/mf_kit.h ivtools-0.9/src/include/IV-look/mono_kit.h ivtools-0.9/src/include/IV-look/ol_dialogs.h ivtools-0.9/src/include/IV-look/ol_kit.h ivtools-0.9/src/include/IV-look/slider.h ivtools-0.9/src/include/IV-look/smf_kit.h ivtools-0.9/src/include/IV-look/stepper.h ivtools-0.9/src/include/IV-look/telltale.h ivtools-0.9/src/include/Imakefile ivtools-0.9/src/include/InterViews/Bitmaps/Imakefile ivtools-0.9/src/include/InterViews/Bitmaps/Makefile ivtools-0.9/src/include/InterViews/Bitmaps/big_checkmark.bm ivtools-0.9/src/include/InterViews/Bitmaps/checkmark.bm ivtools-0.9/src/include/InterViews/Bitmaps/chkbox.bm ivtools-0.9/src/include/InterViews/Bitmaps/chkboxBoth.bm ivtools-0.9/src/include/InterViews/Bitmaps/chkboxChosen.bm ivtools-0.9/src/include/InterViews/Bitmaps/chkboxHit.bm ivtools-0.9/src/include/InterViews/Bitmaps/dfast.bm ivtools-0.9/src/include/InterViews/Bitmaps/dfastMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/dmover.bm ivtools-0.9/src/include/InterViews/Bitmaps/dmoverHit.bm ivtools-0.9/src/include/InterViews/Bitmaps/dmoverMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/enlarge.bm ivtools-0.9/src/include/InterViews/Bitmaps/enlargeHit.bm ivtools-0.9/src/include/InterViews/Bitmaps/enlargeMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/hand.bm ivtools-0.9/src/include/InterViews/Bitmaps/handMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/ldfast.bm ivtools-0.9/src/include/InterViews/Bitmaps/ldfastMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/lfast.bm ivtools-0.9/src/include/InterViews/Bitmaps/lfastMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/lmover.bm ivtools-0.9/src/include/InterViews/Bitmaps/lmoverHit.bm ivtools-0.9/src/include/InterViews/Bitmaps/lmoverMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/lufast.bm ivtools-0.9/src/include/InterViews/Bitmaps/lufastMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/page.bm ivtools-0.9/src/include/InterViews/Bitmaps/pageBoth.bm ivtools-0.9/src/include/InterViews/Bitmaps/pageChosen.bm ivtools-0.9/src/include/InterViews/Bitmaps/pageHit.bm ivtools-0.9/src/include/InterViews/Bitmaps/radio.bm ivtools-0.9/src/include/InterViews/Bitmaps/radioBoth.bm ivtools-0.9/src/include/InterViews/Bitmaps/radioChosen.bm ivtools-0.9/src/include/InterViews/Bitmaps/radioHit.bm ivtools-0.9/src/include/InterViews/Bitmaps/radioMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/rdfast.bm ivtools-0.9/src/include/InterViews/Bitmaps/rdfastMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/reducer.bm ivtools-0.9/src/include/InterViews/Bitmaps/reducerHit.bm ivtools-0.9/src/include/InterViews/Bitmaps/reducerMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/rfast.bm ivtools-0.9/src/include/InterViews/Bitmaps/rfastMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/rmover.bm ivtools-0.9/src/include/InterViews/Bitmaps/rmoverHit.bm ivtools-0.9/src/include/InterViews/Bitmaps/rmoverMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/rufast.bm ivtools-0.9/src/include/InterViews/Bitmaps/rufastMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/ufast.bm ivtools-0.9/src/include/InterViews/Bitmaps/ufastMask.bm ivtools-0.9/src/include/InterViews/Bitmaps/umover.bm ivtools-0.9/src/include/InterViews/Bitmaps/umoverHit.bm ivtools-0.9/src/include/InterViews/Bitmaps/umoverMask.bm ivtools-0.9/src/include/InterViews/Imakefile ivtools-0.9/src/include/InterViews/Makefile ivtools-0.9/src/include/InterViews/_defines.h ivtools-0.9/src/include/InterViews/_enter.h ivtools-0.9/src/include/InterViews/_leave.h ivtools-0.9/src/include/InterViews/_names.h ivtools-0.9/src/include/InterViews/_undefs.h ivtools-0.9/src/include/InterViews/action.h ivtools-0.9/src/include/InterViews/adjust.h ivtools-0.9/src/include/InterViews/aggr.h ivtools-0.9/src/include/InterViews/align.h ivtools-0.9/src/include/InterViews/alloctbl.h ivtools-0.9/src/include/InterViews/arraycomp.h ivtools-0.9/src/include/InterViews/background.h ivtools-0.9/src/include/InterViews/bitmap.h ivtools-0.9/src/include/InterViews/boolean.h ivtools-0.9/src/include/InterViews/border.h ivtools-0.9/src/include/InterViews/box.h ivtools-0.9/src/include/InterViews/brush.h ivtools-0.9/src/include/InterViews/canvas.h ivtools-0.9/src/include/InterViews/character.h ivtools-0.9/src/include/InterViews/color.h ivtools-0.9/src/include/InterViews/composition.h ivtools-0.9/src/include/InterViews/compositor.h ivtools-0.9/src/include/InterViews/coord.h ivtools-0.9/src/include/InterViews/cursor.h ivtools-0.9/src/include/InterViews/debug.h ivtools-0.9/src/include/InterViews/deck.h ivtools-0.9/src/include/InterViews/dialog.h ivtools-0.9/src/include/InterViews/display.h ivtools-0.9/src/include/InterViews/drag.h ivtools-0.9/src/include/InterViews/enter-scope.h ivtools-0.9/src/include/InterViews/event.h ivtools-0.9/src/include/InterViews/font.h ivtools-0.9/src/include/InterViews/geometry.h ivtools-0.9/src/include/InterViews/glcontext.h ivtools-0.9/src/include/InterViews/glue.h ivtools-0.9/src/include/InterViews/glyph.h ivtools-0.9/src/include/InterViews/group.h ivtools-0.9/src/include/InterViews/handler.h ivtools-0.9/src/include/InterViews/hit.h ivtools-0.9/src/include/InterViews/image.h ivtools-0.9/src/include/InterViews/input.h ivtools-0.9/src/include/InterViews/iv.h ivtools-0.9/src/include/InterViews/label.h ivtools-0.9/src/include/InterViews/layout.h ivtools-0.9/src/include/InterViews/leave-scope.h ivtools-0.9/src/include/InterViews/lrmarker.h ivtools-0.9/src/include/InterViews/monoglyph.h ivtools-0.9/src/include/InterViews/observe.h ivtools-0.9/src/include/InterViews/page.h ivtools-0.9/src/include/InterViews/patch.h ivtools-0.9/src/include/InterViews/pattern.h ivtools-0.9/src/include/InterViews/place.h ivtools-0.9/src/include/InterViews/polyglyph.h ivtools-0.9/src/include/InterViews/printer.h ivtools-0.9/src/include/InterViews/psfont.h ivtools-0.9/src/include/InterViews/raster.h ivtools-0.9/src/include/InterViews/regexp.h ivtools-0.9/src/include/InterViews/reqerr.h ivtools-0.9/src/include/InterViews/resource.h ivtools-0.9/src/include/InterViews/rule.h ivtools-0.9/src/include/InterViews/scrbox.h ivtools-0.9/src/include/InterViews/selection.h ivtools-0.9/src/include/InterViews/session.h ivtools-0.9/src/include/InterViews/shadow.h ivtools-0.9/src/include/InterViews/simplecomp.h ivtools-0.9/src/include/InterViews/stencil.h ivtools-0.9/src/include/InterViews/style.h ivtools-0.9/src/include/InterViews/superpose.h ivtools-0.9/src/include/InterViews/target.h ivtools-0.9/src/include/InterViews/telltale.h ivtools-0.9/src/include/InterViews/texcomp.h ivtools-0.9/src/include/InterViews/tformsetter.h ivtools-0.9/src/include/InterViews/tiff.h ivtools-0.9/src/include/InterViews/tile.h ivtools-0.9/src/include/InterViews/transformer.h ivtools-0.9/src/include/InterViews/window.h ivtools-0.9/src/include/InterViews/xymarker.h ivtools-0.9/src/include/Makefile ivtools-0.9/src/include/OS/Imakefile ivtools-0.9/src/include/OS/Makefile ivtools-0.9/src/include/OS/_defines.h ivtools-0.9/src/include/OS/_undefs.h ivtools-0.9/src/include/OS/directory.h ivtools-0.9/src/include/OS/enter-scope.h ivtools-0.9/src/include/OS/file.h ivtools-0.9/src/include/OS/host.h ivtools-0.9/src/include/OS/leave-scope.h ivtools-0.9/src/include/OS/list.h ivtools-0.9/src/include/OS/math.h ivtools-0.9/src/include/OS/memory.h ivtools-0.9/src/include/OS/os.h ivtools-0.9/src/include/OS/string.h ivtools-0.9/src/include/OS/table.h ivtools-0.9/src/include/OS/table2.h ivtools-0.9/src/include/OS/types.h ivtools-0.9/src/include/OS/ustring.h ivtools-0.9/src/include/TIFF/Imakefile ivtools-0.9/src/include/TIFF/Makefile ivtools-0.9/src/include/TIFF/format.h ivtools-0.9/src/include/TIFF/tiff.h ivtools-0.9/src/include/TIFF/tiffio.h ivtools-0.9/src/include/Unidraw/Commands/Imakefile ivtools-0.9/src/include/Unidraw/Commands/Makefile ivtools-0.9/src/include/Unidraw/Commands/align.h ivtools-0.9/src/include/Unidraw/Commands/brushcmd.h ivtools-0.9/src/include/Unidraw/Commands/catcmds.h ivtools-0.9/src/include/Unidraw/Commands/colorcmd.h ivtools-0.9/src/include/Unidraw/Commands/command.h ivtools-0.9/src/include/Unidraw/Commands/data.h ivtools-0.9/src/include/Unidraw/Commands/datas.h ivtools-0.9/src/include/Unidraw/Commands/dirty.h ivtools-0.9/src/include/Unidraw/Commands/edit.h ivtools-0.9/src/include/Unidraw/Commands/font.h ivtools-0.9/src/include/Unidraw/Commands/import.h ivtools-0.9/src/include/Unidraw/Commands/macro.h ivtools-0.9/src/include/Unidraw/Commands/nop.h ivtools-0.9/src/include/Unidraw/Commands/patcmd.h ivtools-0.9/src/include/Unidraw/Commands/struct.h ivtools-0.9/src/include/Unidraw/Commands/transforms.h ivtools-0.9/src/include/Unidraw/Commands/viewcmds.h ivtools-0.9/src/include/Unidraw/Components/Imakefile ivtools-0.9/src/include/Unidraw/Components/Makefile ivtools-0.9/src/include/Unidraw/Components/cglue.h ivtools-0.9/src/include/Unidraw/Components/component.h ivtools-0.9/src/include/Unidraw/Components/compview.h ivtools-0.9/src/include/Unidraw/Components/connector.h ivtools-0.9/src/include/Unidraw/Components/csolver.h ivtools-0.9/src/include/Unidraw/Components/ellipse.h ivtools-0.9/src/include/Unidraw/Components/externview.h ivtools-0.9/src/include/Unidraw/Components/grcomp.h ivtools-0.9/src/include/Unidraw/Components/grview.h ivtools-0.9/src/include/Unidraw/Components/gvupdater.h ivtools-0.9/src/include/Unidraw/Components/line.h ivtools-0.9/src/include/Unidraw/Components/link.h ivtools-0.9/src/include/Unidraw/Components/pad.h ivtools-0.9/src/include/Unidraw/Components/pin.h ivtools-0.9/src/include/Unidraw/Components/polygon.h ivtools-0.9/src/include/Unidraw/Components/psformat.h ivtools-0.9/src/include/Unidraw/Components/psview.h ivtools-0.9/src/include/Unidraw/Components/rastercomp.h ivtools-0.9/src/include/Unidraw/Components/rect.h ivtools-0.9/src/include/Unidraw/Components/slot.h ivtools-0.9/src/include/Unidraw/Components/spline.h ivtools-0.9/src/include/Unidraw/Components/stencilcomp.h ivtools-0.9/src/include/Unidraw/Components/text.h ivtools-0.9/src/include/Unidraw/Components/vertices.h ivtools-0.9/src/include/Unidraw/Graphic/Imakefile ivtools-0.9/src/include/Unidraw/Graphic/Makefile ivtools-0.9/src/include/Unidraw/Graphic/damage.h ivtools-0.9/src/include/Unidraw/Graphic/ellipses.h ivtools-0.9/src/include/Unidraw/Graphic/geomobjs.h ivtools-0.9/src/include/Unidraw/Graphic/graphic.h ivtools-0.9/src/include/Unidraw/Graphic/grblock.h ivtools-0.9/src/include/Unidraw/Graphic/lines.h ivtools-0.9/src/include/Unidraw/Graphic/picture.h ivtools-0.9/src/include/Unidraw/Graphic/polygons.h ivtools-0.9/src/include/Unidraw/Graphic/pspaint.h ivtools-0.9/src/include/Unidraw/Graphic/rasterrect.h ivtools-0.9/src/include/Unidraw/Graphic/splines.h ivtools-0.9/src/include/Unidraw/Graphic/ulabel.h ivtools-0.9/src/include/Unidraw/Graphic/ustencil.h ivtools-0.9/src/include/Unidraw/Graphic/util.h ivtools-0.9/src/include/Unidraw/Graphic/verts.h ivtools-0.9/src/include/Unidraw/Imakefile ivtools-0.9/src/include/Unidraw/Makefile ivtools-0.9/src/include/Unidraw/Tools/Imakefile ivtools-0.9/src/include/Unidraw/Tools/Makefile ivtools-0.9/src/include/Unidraw/Tools/connect.h ivtools-0.9/src/include/Unidraw/Tools/grcomptool.h ivtools-0.9/src/include/Unidraw/Tools/magnify.h ivtools-0.9/src/include/Unidraw/Tools/move.h ivtools-0.9/src/include/Unidraw/Tools/reshape.h ivtools-0.9/src/include/Unidraw/Tools/rotate.h ivtools-0.9/src/include/Unidraw/Tools/scale.h ivtools-0.9/src/include/Unidraw/Tools/select.h ivtools-0.9/src/include/Unidraw/Tools/stretch.h ivtools-0.9/src/include/Unidraw/Tools/tool.h ivtools-0.9/src/include/Unidraw/_defines.h ivtools-0.9/src/include/Unidraw/_undefs.h ivtools-0.9/src/include/Unidraw/catalog.h ivtools-0.9/src/include/Unidraw/classes.h ivtools-0.9/src/include/Unidraw/clipboard.h ivtools-0.9/src/include/Unidraw/creator.h ivtools-0.9/src/include/Unidraw/ctrlinfo.h ivtools-0.9/src/include/Unidraw/dialogs.h ivtools-0.9/src/include/Unidraw/editor.h ivtools-0.9/src/include/Unidraw/editorinfo.h ivtools-0.9/src/include/Unidraw/enter-scope.h ivtools-0.9/src/include/Unidraw/globals.h ivtools-0.9/src/include/Unidraw/grid.h ivtools-0.9/src/include/Unidraw/iterator.h ivtools-0.9/src/include/Unidraw/keymap.h ivtools-0.9/src/include/Unidraw/kybd.h ivtools-0.9/src/include/Unidraw/leave-scope.h ivtools-0.9/src/include/Unidraw/manip.h ivtools-0.9/src/include/Unidraw/manips.h ivtools-0.9/src/include/Unidraw/path.h ivtools-0.9/src/include/Unidraw/selection.h ivtools-0.9/src/include/Unidraw/statevar.h ivtools-0.9/src/include/Unidraw/statevars.h ivtools-0.9/src/include/Unidraw/stateview.h ivtools-0.9/src/include/Unidraw/stateviews.h ivtools-0.9/src/include/Unidraw/transfn.h ivtools-0.9/src/include/Unidraw/transfns.h ivtools-0.9/src/include/Unidraw/uarray.h ivtools-0.9/src/include/Unidraw/uctrl.h ivtools-0.9/src/include/Unidraw/uctrls.h ivtools-0.9/src/include/Unidraw/uformat.h ivtools-0.9/src/include/Unidraw/uhash.h ivtools-0.9/src/include/Unidraw/ulist.h ivtools-0.9/src/include/Unidraw/umap.h ivtools-0.9/src/include/Unidraw/unidraw.h ivtools-0.9/src/include/Unidraw/upage.h ivtools-0.9/src/include/Unidraw/viewer.h ivtools-0.9/src/include/ivstd/Imakefile ivtools-0.9/src/include/ivstd/Makefile ivtools-0.9/src/include/ivstd/fstream.h ivtools-0.9/src/include/ivstd/iosfwd ivtools-0.9/src/include/ivstd/iostream.h ivtools-0.9/src/include/ivstd/math.h ivtools-0.9/src/include/ivstd/nan.h ivtools-0.9/src/include/ivstd/osfcn.h ivtools-0.9/src/include/ivstd/signal.h ivtools-0.9/src/include/ivstd/stdio.h ivtools-0.9/src/include/ivstd/string.h ivtools-0.9/src/include/ivstd/version.h ivtools-0.9/src/iueserv_/Imakefile ivtools-0.9/src/iueserv_/Makefile ivtools-0.9/src/iueserv_/README ivtools-0.9/src/iueserv_/main.c ivtools-0.9/src/ivxt/Imakefile ivtools-0.9/src/ivxt/Xd.h ivtools-0.9/src/ivxt/Xud.h ivtools-0.9/src/ivxt/glyphwidget.h ivtools-0.9/src/ivxt/glyphwidgetP.h ivtools-0.9/src/ivxt/main.c ivtools-0.9/src/ivxt/widgetwindow.c ivtools-0.9/src/ivxt/widgetwindow.h ivtools-0.9/src/ivxt/xtintrinsic.h ivtools-0.9/src/ivxt/xtsession.c ivtools-0.9/src/ivxt/xtsession.h ivtools-0.9/src/ivxt/xtudsession.c ivtools-0.9/src/ivxt/xtudsession.h ivtools-0.9/src/man/Imakefile ivtools-0.9/src/man/Makefile ivtools-0.9/src/man/man1/Imakefile ivtools-0.9/src/man/man1/Makefile ivtools-0.9/src/man/man1/comdraw.1 ivtools-0.9/src/man/man1/comterp.1 ivtools-0.9/src/man/man1/dclock.1 ivtools-0.9/src/man/man1/drawtool.1 ivtools-0.9/src/man/man1/flipbook.1 ivtools-0.9/src/man/man1/graphdraw.1 ivtools-0.9/src/man/man1/iclass.1 ivtools-0.9/src/man/man1/idraw.1 ivtools-0.9/src/man/man1/ivmkmf.1 ivtools-0.9/src/man/man3/Adjuster.3 ivtools-0.9/src/man/man3/Banner.3 ivtools-0.9/src/man/man3/BasicDialog.3 ivtools-0.9/src/man/man3/Border.3 ivtools-0.9/src/man/man3/Box2_6.3 ivtools-0.9/src/man/man3/BrushCmd.3 ivtools-0.9/src/man/man3/Button2_6.3 ivtools-0.9/src/man/man3/CGlue.3 ivtools-0.9/src/man/man3/CSolver.3 ivtools-0.9/src/man/man3/Catalog.3 ivtools-0.9/src/man/man3/Clipboard.3 ivtools-0.9/src/man/man3/ColorCmd.3 ivtools-0.9/src/man/man3/Command.3 ivtools-0.9/src/man/man3/CompletionEditor.3 ivtools-0.9/src/man/man3/Component.3 ivtools-0.9/src/man/man3/ComponentView.3 ivtools-0.9/src/man/man3/ConnectTool.3 ivtools-0.9/src/man/man3/Connector.3 ivtools-0.9/src/man/man3/Control.3 ivtools-0.9/src/man/man3/ControlInfo.3 ivtools-0.9/src/man/man3/Creator.3 ivtools-0.9/src/man/man3/Damage.3 ivtools-0.9/src/man/man3/Data.3 ivtools-0.9/src/man/man3/Deck2_6.3 ivtools-0.9/src/man/man3/Dialog.3 ivtools-0.9/src/man/man3/Dispatcher.3 ivtools-0.9/src/man/man3/Editor.3 ivtools-0.9/src/man/man3/EditorInfo.3 ivtools-0.9/src/man/man3/EllipseComp.3 ivtools-0.9/src/man/man3/ExternView.3 ivtools-0.9/src/man/man3/FileBrowser.3 ivtools-0.9/src/man/man3/FileChooser.3 ivtools-0.9/src/man/man3/FontCmd.3 ivtools-0.9/src/man/man3/Frame.3 ivtools-0.9/src/man/man3/GVUpdater.3 ivtools-0.9/src/man/man3/Glue2_6.3 ivtools-0.9/src/man/man3/Graphic.3 ivtools-0.9/src/man/man3/GraphicBlock.3 ivtools-0.9/src/man/man3/GraphicComp.3 ivtools-0.9/src/man/man3/GraphicCompTool.3 ivtools-0.9/src/man/man3/GraphicView.3 ivtools-0.9/src/man/man3/Grid.3 ivtools-0.9/src/man/man3/IOCallback.3 ivtools-0.9/src/man/man3/IOHandler.3 ivtools-0.9/src/man/man3/Imakefile ivtools-0.9/src/man/man3/ImportCmd.3 ivtools-0.9/src/man/man3/Interactor.3 ivtools-0.9/src/man/man3/Iterator.3 ivtools-0.9/src/man/man3/KeyMap.3 ivtools-0.9/src/man/man3/LineComp.3 ivtools-0.9/src/man/man3/LinkComp.3 ivtools-0.9/src/man/man3/MacroCmd.3 ivtools-0.9/src/man/man3/MagnifyTool.3 ivtools-0.9/src/man/man3/Manipulator.3 ivtools-0.9/src/man/man3/MatchEditor.3 ivtools-0.9/src/man/man3/Menu2_6.3 ivtools-0.9/src/man/man3/Message.3 ivtools-0.9/src/man/man3/MoveTool.3 ivtools-0.9/src/man/man3/NOPCmd.3 ivtools-0.9/src/man/man3/PadComp.3 ivtools-0.9/src/man/man3/Page.3 ivtools-0.9/src/man/man3/Painter.3 ivtools-0.9/src/man/man3/Panner.3 ivtools-0.9/src/man/man3/Path.3 ivtools-0.9/src/man/man3/Pattern.3 ivtools-0.9/src/man/man3/PatternCmd.3 ivtools-0.9/src/man/man3/Perspective.3 ivtools-0.9/src/man/man3/Picture.3 ivtools-0.9/src/man/man3/PinComp.3 ivtools-0.9/src/man/man3/PolygonComp.3 ivtools-0.9/src/man/man3/PostScriptView.3 ivtools-0.9/src/man/man3/RasterComp.3 ivtools-0.9/src/man/man3/RasterRect.3 ivtools-0.9/src/man/man3/RectComp.3 ivtools-0.9/src/man/man3/Regexp.3 ivtools-0.9/src/man/man3/ReqErr.3 ivtools-0.9/src/man/man3/ReshapeTool.3 ivtools-0.9/src/man/man3/Resource.3 ivtools-0.9/src/man/man3/RotateTool.3 ivtools-0.9/src/man/man3/RpcHdr.3 ivtools-0.9/src/man/man3/RpcPeer.3 ivtools-0.9/src/man/man3/RpcReader.3 ivtools-0.9/src/man/man3/RpcRegistry.3 ivtools-0.9/src/man/man3/RpcService.3 ivtools-0.9/src/man/man3/RpcWriter.3 ivtools-0.9/src/man/man3/Rubband.3 ivtools-0.9/src/man/man3/ScaleTool.3 ivtools-0.9/src/man/man3/Scene.3 ivtools-0.9/src/man/man3/Scroller.3 ivtools-0.9/src/man/man3/SelectTool.3 ivtools-0.9/src/man/man3/Selection.3 ivtools-0.9/src/man/man3/Sensor.3 ivtools-0.9/src/man/man3/Shape.3 ivtools-0.9/src/man/man3/SlotComp.3 ivtools-0.9/src/man/man3/SplineComp.3 ivtools-0.9/src/man/man3/StateVar.3 ivtools-0.9/src/man/man3/StateVarView.3 ivtools-0.9/src/man/man3/StencilComp.3 ivtools-0.9/src/man/man3/StrBrowser.3 ivtools-0.9/src/man/man3/StrChooser.3 ivtools-0.9/src/man/man3/StretchTool.3 ivtools-0.9/src/man/man3/StringEditor.3 ivtools-0.9/src/man/man3/Subject.3 ivtools-0.9/src/man/man3/TextBuffer.3 ivtools-0.9/src/man/man3/TextComp.3 ivtools-0.9/src/man/man3/TextDisplay.3 ivtools-0.9/src/man/man3/TextEditor.3 ivtools-0.9/src/man/man3/Tool.3 ivtools-0.9/src/man/man3/TransferFunct.3 ivtools-0.9/src/man/man3/Tray.3 ivtools-0.9/src/man/man3/UArray.3 ivtools-0.9/src/man/man3/UControl.3 ivtools-0.9/src/man/man3/UHashTable.3 ivtools-0.9/src/man/man3/ULabel.3 ivtools-0.9/src/man/man3/UList.3 ivtools-0.9/src/man/man3/UMap.3 ivtools-0.9/src/man/man3/UStencil.3 ivtools-0.9/src/man/man3/Unidraw.3 ivtools-0.9/src/man/man3/UnidrawIntro.3 ivtools-0.9/src/man/man3/Vertices.3 ivtools-0.9/src/man/man3/VerticesComp.3 ivtools-0.9/src/man/man3/Viewer.3 ivtools-0.9/src/man/man3/Viewport.3 ivtools-0.9/src/man/man3/World.3 ivtools-0.9/src/man/man3/align.3 ivtools-0.9/src/man/man3/catcmds.3 ivtools-0.9/src/man/man3/classes.3 ivtools-0.9/src/man/man3/datas.3 ivtools-0.9/src/man/man3/edit.3 ivtools-0.9/src/man/man3/ellipses.3 ivtools-0.9/src/man/man3/geomobjs.3 ivtools-0.9/src/man/man3/globals.3 ivtools-0.9/src/man/man3/iostreamb.3 ivtools-0.9/src/man/man3/kybd.3 ivtools-0.9/src/man/man3/lines.3 ivtools-0.9/src/man/man3/manips.3 ivtools-0.9/src/man/man3/polygons.3 ivtools-0.9/src/man/man3/pspaint.3 ivtools-0.9/src/man/man3/rpcbuf.3 ivtools-0.9/src/man/man3/rpcstream.3 ivtools-0.9/src/man/man3/splines.3 ivtools-0.9/src/man/man3/statevars.3 ivtools-0.9/src/man/man3/stateviews.3 ivtools-0.9/src/man/man3/struct.3 ivtools-0.9/src/man/man3/transfns.3 ivtools-0.9/src/man/man3/transforms.3 ivtools-0.9/src/man/man3/uctrls.3 ivtools-0.9/src/man/man3/viewcmds.3 ivtools-0.9/src/man/refman3.1/refman.PS ivtools-0.9/src/scripts/Imakefile ivtools-0.9/src/scripts/Makefile ivtools-0.9/src/scripts/bsdinst.sh ivtools-0.9/src/scripts/chgsuffix.sh ivtools-0.9/src/scripts/cntsrclines.bash ivtools-0.9/src/scripts/config.guess ivtools-0.9/src/scripts/config.sub ivtools-0.9/src/scripts/cpu.sh ivtools-0.9/src/scripts/install-sh ivtools-0.9/src/scripts/ivcd.cpp ivtools-0.9/src/scripts/ivct.cpp ivtools-0.9/src/scripts/ivds.cpp ivtools-0.9/src/scripts/ivdt.cpp ivtools-0.9/src/scripts/ivfb.cpp ivtools-0.9/src/scripts/ivgd.cpp ivtools-0.9/src/scripts/ivgetjpg.bash ivtools-0.9/src/scripts/ivmkmf.cpp ivtools-0.9/src/scripts/ivtiftopnm.bash ivtools-0.9/src/scripts/mkdirhier.sh ivtools-0.9/src/scripts/mkgif89a.bash ivtools-0.9/src/scripts/mkgif89ac.bash ivtools-0.9/src/scripts/pnmtopgm.sh ivtools-0.9/src/tests/Imakefile ivtools-0.9/src/tests/Makefile ivtools-0.9/src/tests/y2k/Imakefile ivtools-0.9/src/tests/y2k/Makefile ivtools-0.9/src/tests/y2k/y2ktest.cc ivtools-0.9/src/utils/Imakefile ivtools-0.9/src/utils/Makefile ivtools-0.9/src/utils/downloader.cc ivtools-0.9/src/utils/downloader.h ivtools-0.9/src/utils/ftp.cc ivtools-0.9/src/utils/ftp.h ivtools-0.9/src/utils/http.cc ivtools-0.9/src/utils/http.h ivtools-0.9/src/utils/ivdl.cc ivtools-0.9/src/utils/parse.h ivtools-0.9/src/utils/readwrite.h ivtools-0.9/src/utils/sockets.cc ivtools-0.9/src/utils/sockets.h ivtools-0.9/src/utils/stdcmapppm.c ivtools-0.9/src/utils/thrower.cc ivtools-0.9/src/utils/thrower.h ivtools-0.9/src/utils/ivtmpnam.c ivtools-doc/ivtools-0.9-README.txt0000644000076500007650000004325207374262633017365 0ustar scottscott00000000000000 README for ivtools 0.9 This directory contains a release of ivtools 0.9.7. You should read the rest of this file for information on what ivtools is and the INSTALL file for instructions on how to build it. The overall copyright and permission notice for ivtools can be found in the COPYRIGHT file in this directory. It is similar to the X11 copyright, otherwise known as non-copylefted freeware. * What is ivtools?: Online documentation (including an FAQ) is available for ivtools at: http://www.ivtools.org/ivtools/doc/ ivtools is a layered collection of application frameworks for building custom drawing editors and spatial data servers. It incorporates a backward compatible copy of the original InterViews and Unidraw class libraries and sample programs (from 3.2a.tar.Z), augmented with new class libraries and sample programs for a wide variety of generic spatial data applications. ivtools comprises four sets of interrelated capabilities useful to application programmers. The first set is the libraries and example programs borrowed whole from InterViews 3.1. The second set is for reusing and extending the light-weight glyph objects of InterViews 3.1 which embody a lot of the capability of TeX. The third set reuses and extends the Unidraw library (Unidraw is a major portion of the overall InterViews 3.1 release that provides an application framework for custom drawing editors). The fourth set adds a command interpreter and server mechanism to ivtools, and demonstrates these capabilities with text, glyph, and graphic front-ends. To get more of an overview of these layers you can read: http://www.ivtools.org/ivtools/ivtools-layers.html. These are the libraries and example programs borrowed straight from InterViews 3.1: IV library of InterView 3.1, InterViews 2.6, Dispatch, OS, and TIFF objects dclock digital clock with fading digits iclass C++ class browser idemo glyph demo These are the libraries and example programs that make up the glyph part of ivtools (programs in the glyphs directory): IVGlyph library of Glyph derived classes bdvtable bounded-value editing formdemo value-editing gclock glyph-based clock meter sliding meter radiogroup radio-buttons scrollable 2d scrollable glyph scrollfield 2d scrollable field-editor strchooser string chooser text-editor emacs-like text editor timestamp editable time glyph Also all the glyph example programs from InterViews 3.1 have been added in an examples3.1 directory under the glyphs directory. These are the libraries and example programs that make up the Unidraw part of ivtools: Unidraw copy of Unidraw library from InterViews 3.1 UniIdraw librarification of 3.1 idraw OverlayUnidraw extended Unidraw/idraw framework TopoFace spatial network library (nodes, edges, faces) GraphUnidraw graph browser/editor library FrameUnidraw multi-frame display mechanism idraw idraw built on UniIdraw library drawtool extended version of idraw built on OverlayUnidraw graphdraw graph browser/editor integrated with drawtool flipbook flipbook multi-frame editor based on drawtool These are the libraries that make up the command interpreter part of ivtools: ComUtil command interpreter utility functions Attribute attribute property list mechanism AttrGlyph glyphs for Attribute library ComTerp command interpreter objects ComGlyph glyphs for ComTerp library ComUnidraw drawing editor with command interpreter DrawServ drawing server framework with support for graphs and frames. comtest test program comterp sample command interpreter glyphterp command interpreter user interface comdraw drawtool with command interpreter drawserv comdraw with both graphs and frames. Note: GraphUnidraw/graphdraw and FrameUnidraw/flipbook have been rearranged within the ivtools source tree to take advantage of the ComUnidraw framework layer, so they really could be listed in both of the previous sections. There is also a Time library with Date and Time classes borrowed from the NIH's class library, and an example program, ivxt, that shows how an Xt widget can be wrapped around an InterViews application. Finally, there is a collection of utilities (utils) and shell scripts (scripts) that augment the drawing editors of ivtools with minor capabilities. See the relevant directories and files for further information. A series of makefile targets support the checkin of sources to cvs/rcs, and their subsequent update and modification. This requires a copy of cvs available from the Free Software Foundation and ivmkcm-0.7.2 available through http://www.ivtools.org/ivmkcm/ * More ivtools details ivtools is known to build with many versions of gcc (<= gcc-2.7.2, >= gcc-2.8.1, >= egcs-1.0.1, gcc-3.0.1) and on a variety of Unix'es: SunOS 4.1 (MIT's X11R5), Solaris 2.6 (X11R6), Irix 5.2 (SGI's X11R5), Linux 1.2 (Slackware 3.0, XFree86 3.1), Linux 2.* (RedHat 4.0 thru 6.0, Debian 2.*), NetBSD, and FreeBSD. There are contributed configs that are out of date for HPUX and Dec Alpha. It has been built on Windows NT 4.0 using Cygwin from Cygnus Solutions (see README.cygwin). You can find links to available binaries on the ivtools web page (http://www.ivtools.org) and ivtools download page (http://www.ivtools.org/ivtools/download.html) If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to the general purpose ivtools mailing list, ivtools-user@lists.sourceforge.net, or this e-mail address: ivtools-info@vectaport.com. To subcribe to the mailing list, visit http://lists.sourceforge.net/mailman/listinfo/ivtools-user or send an informal request to ivtools-request@vectaport.com. Other ivtools related mailing lists can be found at: http://www.ivtools.org/ivtools/mailinglists.html Read about finding and generating all this from inline documentation below. A copy of the ivtools html documentation will be available for download as well: http://www.ivtools.org/pub/src/ivtools-doc-0.9.tgz A SourceForge project page for ivtools can be found at: http://sourceforge.net/project/ivtools Read about other vector graphic free software at: http://sourceforge.net/foundry/vectorgraphics * Finding and Generating Inline Documentation Extensive documentation is embedded within the ivtools source tree, including most all of the documentation originally available for InterViews 3.1 and Unidraw. You can find all of it pre-extracted here: http://www.ivtools.org/ivtools/doc/ Here is a list of documentation: - README/man pages for executable programs Within most directories that contain an executable program (a main.c) you'll find a README that explains something about the program, how to use it, what it does, what arguments it takes. In the case of the drawing editors and command interpreters this README has been further processed into a man page, which can be found in its uninstalled state in the src/man/man1 directory or wherever you elect to install them. - HTML class documentation Many of the C++ class libraries of ivtools are documented using comments in the header files (the .h files) that can be extracted using PERCEPS, a Perl documentation generator for C++ (http://starship.python.net/crew/tbryan/PERCEPS/). See src/html/README for instructions on auto-generating these web pages yourself, or see the result on-line at: http://www.ivtools.org/ivtools/doc/classes/ - InterViews 3.1 and Unidraw man pages All the original man pages from InterViews 3.1 and Unidraw have been preserved, and can be found in src/man/man3, or where ever you elect to install them. They also can be browsed online at: http://www.ivtools.org/ivtools/doc/man3.1/ - InterViews 3.1 reference manual The original reference manual for InterViews 3.1 can be found in PostScript form at src/man/refman3.1/refman.PS. It is also found in page-indexable online form at: http://www.ivtools.org/ivtools/doc/refman3.1/ * Building on top of ivtools Copied from the ivtools FAQ: http://www.ivtools.org/ivtools/faq.html#standalonedevel Q: How do I set up a stand-alone program or source tree on top of ivtools for development purposes? A: If you are writing a stand-alone program that will exist in a single directory, simply copy an appropriate Imakefile and main.c from a InterViews or ivtools example program directory, modify accordingly, then use "ivmkmf -a" to generate the Makefile. Make sure you are using a fresh ivmkmf that corresponds to your installation of ivtools. An example of this is the comtop sample program, a stand-alone program separate from ivtools that builds on top of the comterp command interpreter mechanism. ** comtop.tgz is now part of the ivtools distribution ** If you are setting up an entire source tree with both class libraries and executable programs, you will want to get started by replicating an equivalent source tree (i.e. vhclmaps) and change or rename all directories or files as appropriate. ** read more on vhclmaps at http://www.ivtools.org/vhclmaps/ ** * Acknowledgements: Roster of ivtools programmers: Scott Johnston Jorge Gautier Brian Hogencamp Rick Kissh Eric Kahler InterViews 3.1 programmers that we know of: Mark Linton John Vlissides Paul Calder John Interrante Scott Stanton Steven Tang ivtools can be built to leverage a variety of separate third-party libraries: * clippoly from Klamer Schutte for polygon intersection (licensed under the LGPL) * ACE from Doug Schmidt for middleware networking frameworks (licensed similar to X Windows) * IUE (the Image Understanding Environment) from Amerinex (half public-domain, half licensed similar to X Windows) ivtools detects and uses at runtime a variety of third-party executables: * qhull from the University of Minnesota Geometry Center * pstoedit from Wolfgang Glunz * ghostscript from L. Peter Deutsch and Aladdin Systems * djpeg from the JPEG group * giftopnm from Jef Poskanzer's pbmplus toolkit (a copy of anytopnm from the same toolkit is incorporated into the scripts directory) OverlayUnidraw incorporates Version 3.1 of a "C++ Vector and Matrix Algebra routnes" (algebra3.h) from Jean-Francois Doue. HPUX (HP-800) config contributed by Neal Becker. ALPHA config contributed by Bruno Delfosse at Thomson CSF. A lot of feedback on Solaris 2.6 building from M. Rasit Eskicioglu at the University of Alberta. NetBSD port by Todd Gruhn. Cygwin development environment for Windows NT from RedHat (Cygnus Solutions). Patches to iv-3.2a incorporated from the PDP++ distribution from Carnegie Mellon University Department of Psychiatry, Randall C. O'Reilly, et. al. Patches for Debian 2.0 packaging incorporated from Guenter Geiger. This work included the conversion of drawtool, flipbook, and graphdraw README's to man page format. Patch for iv-3.1 shift key handling from Doug Scott, the author of MiXViews. Certain InterViews libraries (Dispatch, IV, IV-2_6, IV-X11, InterViews, OS, TIFF, Unidraw) and example programs (iclass, idemo, idraw) are copied from the InterViews 3.1 sources. Here is the aggregrate copyright notice for that software package: /* * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * Copyright (c) 1991 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Stanford and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Stanford and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL STANFORD OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The building of Unidraw with gcc-2.5.* (and subsequent versions) was enabled by a patch from Adam Zell. The TIFF library was written by Sam Leffler and published with this copyright and permission notice: /* * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991, 1992 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The strchooser example and StrChooser class were contributed by David B. Hollenbeck, as well as the glyph-based Motif-look pull-down menus of OverlayUnidraw. Here is his copyright notice: /* * Copyright (c) 1993 David B. Hollenbeck * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notice and this permission notice appear in * all copies of the software and related documentation, and (ii) the name of * David B. Hollenbeck may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of David B. Hollenbeck. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL DAVID B. HOLLENBECK BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The scrollable example is based on code from Chen Wang The text-editor example program is by Jan Andersson of Torpa Konsult AB. Here is that copyright notice: // // Simple Text Editor // // // Copyright (C) 1993 Ellemtel Telecommunication Systems Labratories // // Permission is granted to any individual or institution to use, copy, // modify, and distribute this software, provided that this complete // copyright and permission notice is maintained, intact, in all copies // and supporting documentation. // // Ellemtel Telecommunication Systems Labratories make no representation // of the suitability of this software for any purpose. It is provided // "as is" without any expressed or implied warranty. // // Jan Andersson, Torpa Konsult AB // janne at torpa.se - 1993-08-29 The Date and Time classes in the Time library are borrowed from the NIHCL class library, written by K. E. Gorlen, Computer Sciences Laboratory, DCRT, National Institutes of Health, Bethesda, MD 20892, and published with this notice: THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A "UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY. The graylevel raster and painting mechanisms of OverlayUnidraw were originated by Richard B. Kissh under contract to Vectaport Inc, as well as the shared memory rasters and asychronous incremental download of rasters. The ComUtil library was originally developed at Triple Vision Inc. under NSF Grant ISI-8521259 (authors/contributors: Robert C. Fitch, Richard A. Fundakowski, Robert K. Graber, Scott E. Johnston). The ivdl URL downloading utility was developed by Eric F. Kahler under contract to Vectaport Inc. Keung Chi Ng of IET Inc. has provided a good deal of feedback on ivtools over the years, and has assisted in demonstrating the viability of the application frameworks by developing a variety of vertical applications on top of OverlayUnidraw, FrameUnidraw, and GraphUnidraw. The balance of ivtools has been developed by Vectaport Inc. (P.O. Box 7141, Redwood City, CA 94063), with additional support from IET Inc. (P.O. Box 112450, Campbell, CA 95011) in the form of ARPA subcontracts (DACA76-93-C-0025 and DACA76-97-C-0005), as well as directly employing Scott Johnston from April 1999 thru August 2000 and giving him the freedom to evolve ivtools and related open-source frameworks as part of his job. There was also support from Applied Sciences Inc, San Francisco, CA, in the form of a subcontract for a Phase II SBIR from NASA Ames. ivtools-doc/ivtools-020110-johnston-019.txt0000644000076500007650000000344307417430144021004 0ustar scottscott00000000000000Patch: ivtools-020110-johnston-019 For: ivtools-1.0.1 Author: johnston@users.sourceforge.net Subject: keep graphdraw compiling without ACE Requires: This is an intermediate patch to ivtools-1.0.1. To apply, cd to the top-level directory of the ivtools source tree (the directory with src and config subdirs), and apply like this: patch -p0 ) that does the same. Wrapped up the difference between 3.0.* and 3.1 by conditionally defining a fileptr_fstream in src/include/ivstd/fstream.h to filebuf for 3.0.* and __gnu_cxx::stdio_filebuf for 3.1. ** Constant evolution of the behavior and API of filebuf has been the single most challenging aspect of keeping ivtools compiling with gcc and working for the past decade. I really hope things will be stable for the next decade. ** - fixes for using ACE and ivtools with gcc-3.1 - fix up compiling with ACE using less than gcc-3.* - disable incremental display while incrementally loading from a URL. A placeholder raster still gets inserted before the connection is established, and the rest of the download and display is asynchronous, which avoids hanging on a net connection. - compilation fixes based on feedback from Gregory Kriehn. Mostly adding #include where missing. Don't know why this wasn't a problem in every environment. Should improve support for RedHat 7.*. June 21st, 2002 ivtools-1.0.4 - give special meaning to a set of parentheses that proceed the tuple operator ",", by adding an extra level of nesting to the resultant list. Before the expression "(1,2),(3,4)" yielded "{1,2,{3,4}}". Now it yields "{{1,2},{3,4}}" as one might expect. This anomaly stemmed from the fact the tuple operator "," works by concatenating its right-hand argument to its left-hand argument if the left-hand argument is already a list (that's how the interpreter concatenates a compound tuple-expression, i.e. "1,2,3,4"). - fix unitialized variable used when reading from sockets that would cause a hang. - add comterp commands for the value of PI (pi), converting radians to degrees (radtodeg), and converting degrees to radians (degtorad). - add new matrix transpose command (xpose), which takes a 2d list of numbers (i.e. a matrix), and transposes them. Examples: xpose(1,2,3) {{1,2,3}} xpose((1,2),(3,4)) {{1,3},{2,4}} xpose((1,2,3),(11,12,13),(21,22,23)) {{1,11,21},{2,12,22},{3,13,23}} - add a matrix addition capability to the comterp "+" operator. - add matrix multiplication to comterp "*" operator. If: a=(1,4),(2,-3),(3,1),(-1,0) b=(-1,2,1),(-9,2,-3) Then: a*b Yields: {{-37,10,-11},{25,-2,11},{-12,8,0},{1,-2,-1}} - extend matrix multiply to support vector inputs. Now: a=list,list(1),list(2),list(3) b=list,list(1,2,3) a*b Yields the same as: a=1,2,3 b=list,list(1,2,3) a*b Conversely: a=list,list(1,2,3) b=list,list(1),list(2),list(3) a*b Yields the same as: a=list,list(1,2,3) b=1,2,3 a*b And: list(2)*list(3) Yields: {{6}} - add support for panning with cursor keys (left/right/up/down) as well as Page Up and Page Down (PgUp/PgDn) for larger vertical moves. - greatly improve the efficiency of rendering alpha-transparent rasters with a TrueColor visual. Prior to this each input color was being looked up in a table that could be as long as 2 to the 24th, then the weighed average computed in floating point, then the result rescaled into a TrueColor color. Now everything is done with nothing more than 32 bit integer multiplies, adds, and shifts. Performance has gone from a multi-second lag to adequately interactive. - rename "Custom Tools" to "Extra Tools". - migrate Attribute, Annotate, and GraphicLoc to "Extra Tools". - add a :next flag to comdraw's import func. It attempts to auto-increment the numerics in the last URL and import again. - sync with diffs from latest Debian release (ivtools-0.9.2-6). - add gcc-2.96 warning to INSTALL and README files - remove installation of extraneous scripts when non-local install. - save/restore raster alpha-transparency value in drawing documents. - create AlphaTransparentCmd and make available under Edit/"Image Processing" - create raster peek command for comdraw (RasterPeekFunc). March 11th, 2002 ivtools-1.0.3 - add missing src/include/ivstd/stdlib.h to MANIFEST. This was needed to get socklen_t defined for Dispatch/rpc*.c on Darwin. - recognize files that start with plain "%!PS" as PostScript files. March 1st, 2002 ivtools-1.0.2 - add -stdin_off argument to comdraw/flipbook/graphdraw/drawserv to disable a comterp interpreter on stdin. - changes required to get things compiling with Cygwin under Windows 2K - try -gdwarf-2 as a compilation option for debugging with gdb-5.1 and gcc-3.0.*. Not sure if there was an improvement. Maybe this is already the default. - fix bug in GraphicLoc tool, where the text wasn't refreshed on subsequent uses after the dialog box had been unmapped. - make the "Show Prev Frame" command of flipbook take effect immediately (same for "Hide Prev Frame"). Needed to call FrameEditor::UpdateFrame as well as Unidraw::Update. - fix submitted by E.J. Neafsey (Loyola University) for drawing multi-point graphics with shift key pressed to make all the lines either completely horizontal or vertical. The shift key always worked, yet the origin used (for limiting motion to the horizontal or vertical) was never updated to the last vertex as the new points were added. - added alpha-transparency to raster display. It works, but there is no save/restore of the alpha value, or user interface to set or view the value. However, you can use OverlayRasterRect::alphaval() to set/get the constant (one per raster). No PostScript output yet as well. - propogated "None" background color to all drawing editor's BgColor menu. - add an alpha command to comdraw, to set/get the alpha value of a raster graphic: alpha(compview [alphaval]) -- set/get alpha transparency value a command line like the following will spin a raster forward as it appears (assume g is a variable pointing to a RasterComp, and the current selection): for(x=0 x<10 x++ alpha(g float(x)/10);rotate(30);scale(1/.9 1/.9);update) - partial changes for HPUX compilation. There might be other problems with the HP linker's desire to fully link a shared library when it is built, and problems with parameters like ExtraCCFlags that might need commenting out for reasons I don't understand (note -- it seems this might be avoided by using "ld -r" instead of "gcc -shared"). - further work on comdraw whiteboard capability. Setting up for a distributed drawing environment by ensuring that all graphics can be constructed via command line instead of directly. - instituted (then disabled) a transparent pixel capability. Needs an API in comdraw or drawtool first. - fix problem with hanging on stdin when comdraw/graphdraw/flipbook is launched as a helper app from a web browser. - all the changes necessary to bring up ivtools under Mac OS X (Darwin). - fix rewind() vulnerability in early libstdc++-v3 iostreams. Better to close/reopen the file than rewind. January 9th, 2002 ivtools-1.0.1 - add comdraw funcs to poke (grey-level) pixel values into a raster, and return the horizontal and vertical extent of the raster: poke(compview x y val) -- poke pixel value into raster pcols(compview) -- number of columns in a raster pcols(compview) -- number of rows in a raster - sometimes you can accidentally create a polygon with zero points (or a multi-line or spline). Changes to safeguard against crashing whenever this happens. - fix bug in comterp stream traversal via NextFunc::execute_impl. It was leaving an extra null-value on the stack, which confused the interpreter. - add an undocumented debug comterp func, stackheight - tweak of imake system to facilitate NetBSD packaging - add "None" color to background color menu, exposing the hidden fillbg flag (transparent background mechanism) for the first time in the history of this software. - fix drawing editor import's use of gunzip to decompress graphic files. - update config.guess and config.sub, support scripts for the configure script from the autoconf package. May fix some known problems with HPUX, ALPHA, and ARM. - add a comdraw command to create white rasters initialized with a 2 pixel wide black border: compview=raster(x0,y0,x1,y1) -- create an empty raster - make equality and inequality operators work for list objects. Note that the "," list concatenation operator always appends the second operand to the first operand if it is already a list, as illustrated by this example ("> " inserted for clarity): > l1=1,2,3 {1,2,3} > l2=l1,4 {1,2,3,4} > l1==l2 1 Alternately the "list" command can be used to create a distinct list: > l1=1,2,3 {1,2,3} > l2=list(l1),4 {1,2,3,4} > l1==l2 0 - fix up some more handling of nil by arithmetic operators. The rule is nil in, nil out. - minor fixup in comterp error message system - pclip command for clipping of rasters via a polygonal point list: pclip(compview x1,y1,x2,y2,x3,y3[,...,xn,yn]) -- clip raster with polygon - dtog and gtod commands for translating to/from graphic coordinates to drawing coordinates: gx,gy=dtog(compview dx,dy) -- convert from drawing to graphic coordinates dx,dy=gtod(compview gx,gy) -- convert from graphic to drawing coordinates - migration of conditional #define's from Time.c to Time.h by Todd Gruhn. - work on stdin handling for comdraw, flipbook, graphdraw, and drawserv November 2nd, 2001 ivtools-1.0 See CHANGES-0.9 for recent major changes. Minor changes since Oct. 16th 2001 (ivtools-0.9.7): - revise MANIFEST.comterp to reflect current state of comterp. - fix comterp memcpy problem on 64 bit Alpha - fix gcc-3.0.* build without ACE - fix compilation of Time/Time.c on NETBSD. - add :posteval flag to comterp help command in order to see which commands are control constructs (post-evaluated, i.e. there arguments are passed to them in an unevaluated state. The result is: cond,for,help,if,list,next,posteval,postfix,stream,while There are some post-evaluated operators as well. - restore symid and symadd to be normal, non post-evaluated commands. Didn't seem to be necessary, and making this change makes them available for streaming. - make confirmbox command return nil if Cancel is pressed. - comterp operator streaming fixes, mostly along the lines of working out nil termination in different circumstances. - $ unary-prefix operator as a short-cut for stream command. Useful when copying the same stream many times in one command. - each operator traverses a stream, exercising it until the end, and returns the length count. - make the AttributeValueList constructor that takes an AttributeValueList* a truly deep copy. - doc changesivtools-doc/ivtools-1.0-COPYRIGHT.txt0000644000076500007650000000363507417430144017761 0ustar scottscott00000000000000/* * Copyright (c) 2001, 2002 Scott Johnston * Copyright (c) 2000 Vectaport Inc., IET Inc * Copyright (c) 1999 Vectaport Inc., IET Inc, R.B. Kissh and Associates * Copyright (c) 1998 Vectaport Inc., R.B. Kissh and Associates, Eric F. Kahler * Copyright (c) 1997 Vectaport Inc., R.B. Kissh and Associates * Copyright (c) 1996 Vectaport Inc., R.B. Kissh and Associates, Cider Press * Copyright (c) 1994, 1995 Vectaport Inc., Cartoactive Systems, Cider Press * Copyright (c) 1993 David B. Hollenbeck * Copyright (c) 1993 Ellemtel Telecommunication Systems Labratories * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991 Silicon Graphics, Inc. * Copyright (c) 1989 Triple Vision Inc. * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * related documentation and data files for any purpose is hereby granted * without fee, provided that the above copyright notice appear in all copies * and that both that copyright notice and this permission notice appear in * supporting documentation, and that the names of the copyright holders not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holders * make no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ ivtools-doc/ivtools-1.0-INSTALL.txt0000644000076500007650000002531007571203534017513 0ustar scottscott00000000000000 INSTALL for ivtools-1.0 Instructions for building ivtools-1.0.7 from source, the short version: ./configure make su -c "make install" And if that doesn't work... Instructions for building ivtools-1.0.7 from source, the long version: 0. Compilation Environment Things you will need (or might want) before building ivtools: 0.a. a Unix machine (for Windows see README.cygwin). We know it has been built on Linux, NetBSD, FreeBSD, Solaris, Irix, Dec Alpha, HPUX, and SunOS. It also builds on Mac OS X (Darwin) which is a BSD-derivative OS. This version (1.0.7) may be Jaguar ready, give it a try. 0.b GNU make. Test to make sure this is the version you are using with "make -v" 0.c. The gcc compiler. Recently we've been building and testing with gcc-2.95.*, gcc-2.96, gcc-3.0.*, gcc-3.1, and gcc-3.2. egcs-1.0.3 would probably still work, as would gcc-2.8.1 and gcc-2.7.2. You will also need an equivalent copy of libstdc++. libstdc++ comes bundled with gcc-3.0 and greater. Before that the libstdc++ version numbers stay roughly in synch with the gcc version numbers. If you have gcc-2.8.1 you'd want libstdc++-2.8.1, etc.. ** NOTE ** Now you can use gcc-2.96. Ignore http://www.ivtools.org/ivtools/faq.html#gcc-2.96-problem Be aware that sometimes the include files for libstdc++ are in /usr/local/include/g++-2, a place that cannot be auto-determined by the configure script. Establishing a symbolic link to /usr/local/include/g++ will fix the problem. 0.d. An installed copy of X11R6 as distributed by the Open Group, or an equivalent (XFree86 for Linux/BSD/MacOS-X, or X11R5 from MIT). If you use a vendor's X11 product, the product should be based on X11R4 or later and the product should include imake and the config files. If you can't find imake on your system, you can get the sources for imake from the X11R5 or X11R6 distribution at several public ftp archives (such as ftp.x.org). ** warning -- imake used in combination with a non-GNU C preprocessor ** can be troublesome (i.e. the default one delivered with Solaris or ** DEC Alpha). You'll want to rig your PATH environment variable to ** find the gcc variant of cpp. Read more about it at ** http://www.ivtools.org/ivtools/faq.html#imakecppprob 0.e. If you want to use the polygon intersection tools, acquire and build clippoly, a LGPLed library for polygon clipping from: http://www.ph.tn.tudelft.nl/People/klamer/clippoly_entry.html Add -fPIC to the CCFLAGS in the Makefile, then do a make, then build a shared library in the clippoly directory with: "gcc -shared -o libclippoly.so *.o" (you can leave out test.o if you want). 0.f. If you want to use the network server capabilities of the ivtools programs, acquire and build ACE, a C++ middleware toolkit available from: http://www.cs.wustl.edu/%7Eschmidt/ACE.html We are currently using ACE-5.1 (or the latest copy of ACE) built without threads support. Follow these steps to build it from source, or use the Debian binary if you happen to be working on that platform (libace5.1-dev): tar xvfz ACE-5.1.tar.gz cd ACE_wrappers export ACE_ROOT=`pwd` # csh: setenv ACE_ROOT `pwd` cd ace cp config-linux.h config.h # substitute appropriate OS name cd ../include/makeinclude cp platform_linux.GNU platform_macros.GNU # substitute OS emacs platform_macros.GNU # add "threads = 0" near top of file cd ../../ace make Then use "--with-ace=$ACE_ROOT" when running the configure script as described below. 0.g if you want to build the ivxt example program, which demonstrates the embedding of a ivtools drawing editor inside Motif widgets, you'll need some version of lesstif or Motif (libXm). To enable the ivxt build, change line 7 of src/Imakefile from "#if 0" to "#if 1". Without these libraries and include files the build of ivxt will fail, which can be safely ignored. 0.h Finally, you might have an interest in building the IueServ library and iueserv program, a networked command interpreter wrapped around the class libraries of the Image Understanding Environment. See http://www.aai.com/AAI/IUE/IUE.html for details on acquiring and building this sizeable collection of public-domain and free software class libraries for image understanding application development. 1. Configuring ivtools: 1.a. You no longer need to set your CPU environment variable to build ivtools, but you still need a CPU specific configuration file. Ready-made configurations that have been known to work exist for LINUX, SUN4 (and Solaris), SGI, HP800 (HPUX), ALPHA, NETSBD, FREEBSD, and CYGWIN (for Windows NT). HPUX config file is known to be out of quite out of date, the others will probably work with little or no tweaks. Use "make CPU" from the top directory to see the symbol ivtools will use for your OS (grep config/arch.def for ArchitectureName to get a complete list of possible OS'es). Then look for a matching config/site.def. file, where is the value returned by "make CPU". If it is there proceed to step 1.b. Other variants of Unix can be attempted by creating the corresponding config/site.def., i.e. site.def.AIX or site.def.MIPS. Use SUN4 for Solaris as well as SunOS. Although SUN5 would be more correct, the config files automatically determine the difference between the two OS'es by checking for SVR4'ness. 1.b Run the configure script in the top-level directory, by entering "./configure" followed by any of the following arguments (--with arguments are recognized as --enable as well): --with-ace= Path to ACE source --with-ace-libs= Path to ACE libraries --with-clippoly= Path to clippoly source --with-clippoly-libs= Path to clippoly libraries --with-iue= Path to IUE source --with-iue-libs= Path to IUE libraries --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR --enable-install-relative[=ARG] install relative to source tree --enable-install-subdir[=ARG] install in ivtools sub-directory --prefix=DIR to use when install-relative is false (default is /usr/local) --enable-use-rpath[=ARG] use -rpath when linking, to embed shared-library pathnames in executable. ARG can be 0 or 1, default is 1 when not specified. The configure script is usually able to automatically determine --x-includes and --x-libraries (except on DEC Alpha). If the arguments for ACE, clippoly, or IUE are not supplied, the configure script prints a reminder, then proceeds to set up to build ivtools without these libraries. If you want to run the executables without installing them, use --enable-use-rpath to embed the shared library pathnames into the executables at link time. Here is an example of using the configure script with ACE and clippoly libraries: ./configure --with-clippoly=/proj/clippoly --with-ace=/proj/ACE_wrappers Running the configure script generates two files, a config/config.mk that gets included into each Makefile when used, and a config/config--gcc.defs that gets used by "make Makefiles" described below. is something like linux. The last line of output from the configure script shows this pathname. Verify that this is the same as the file included at the end of the config/site.def. file. Change the site.def. file if necessary. Also you may want to review the rest of the entries in the site.def. file to see if they are good defaults for your system. ** See http://www.ivtools.org/ivtools/faq.html for more info. 2. Compiling ivtools: 2.a. cd to the ivtools-1.0/ directory (you'd already be in this directory after running the configure script). 2.b. Compile it with a "make" command. The first time it is run it does all these individual steps (the equivalent of "make World"): - regenerates the top-level Makefile to snap it to the current directory ("make Makefile"). - runs through the source tree and generates all the other Makefile's ("make Makefiles"). - generates compilation dependencies for each directory with code to compile -- see the Makefile.depend file in each sub-directory ("make depend"). - compiles and links everything ("make -k"). If you have any trouble at this stage take a look at: http://www.ivtools.org/ivtools/faq.html#SourceBuild ** Subsequent use of "make" will only do the "make -k" phase described ** above. To redo everything, either do a "make World", or do a "make ** clean" followed by a "make". The "make clean" deletes the files ** that suppress the make stateges, make.makefile, make.makefiles, ** make.depend, and make.make. 3. Testing: Each directory under ivtools-1.0/src that begins in lower case (except for "include" and "scripts") contains executables that exercise some particular functionality. "cd" to each particular directory, type "/a.out" and see what happens (the utils directory contains more than one executable, things named other than a.out). Quite a few directories have README's that go into further detail on how to use the programs. ivtools-1.0/src/glyphs contains sub-directories of glyph example programs. ivtools-1.0/src/glyphs/examples3.1 contains most of the simple example programs that were originally distributed with InterViews 3.1. There is also a src/tests directory, with one test program to date, y2k/y2ktest.c. This builds a small program that verifies the Date object of the Time class library has no problem with Y2K or Y2.038K, by allowing the user to enter "+" and "-" to increment/decrement the year past these boundaries. 4. Installation: "make install" is supported for all the libraries and a subset of the more utilitarian example programs: the four original InterViews programs (idraw, iclass, idemo, and dclock), the four idraw derived programs (drawtool, netdraw, flipbook, and comdraw) and the two comterp programs (comterp and glyphterp). In addition the scripts in src/scripts and utilities in src/utils get installed. "make uninstall" is supported as well. When relative install is enabled (--enable-install-relative for the configure script), the binaries are installed in ivtools-1.0/bin/, the libraries are installed in ivtools-1.0/lib/, and the run-time X resource and config files are installed in ivtools-1.0/lib/ivtools. When relative install is disabled (the default for the configure script) the binaries are installed as stripped executables in `prefix`/bin the libraries are installed in `prefix`/lib, and the run-time X resource and config files are installed in `prefix`/lib/ivtools. note: idemo, comterp, glyphterp, and comdraw have config files that must be installed (either relative or non-relative) for the program to find them at runtime. drawtool relies on several scripts and utilities for accessing graphics and image files that must be installed as well for them to work. ivtools-doc/ivtools-1.0-MANIFEST.txt0000644000076500007650000021055407571203534017621 0ustar scottscott00000000000000ivtools-1.0/CHANGES ivtools-1.0/CHANGES-0.4 ivtools-1.0/CHANGES-0.5 ivtools-1.0/CHANGES-0.6 ivtools-1.0/CHANGES-0.7 ivtools-1.0/CHANGES-0.8 ivtools-1.0/CHANGES-0.9 ivtools-1.0/COPYING ivtools-1.0/COPYRIGHT ivtools-1.0/INSTALL ivtools-1.0/Imakefile ivtools-1.0/MANIFEST ivtools-1.0/MANIFEST.comterp ivtools-1.0/MANIFEST.perceps ivtools-1.0/Makefile ivtools-1.0/README ivtools-1.0/README.cygwin ivtools-1.0/README.ivmkcm ivtools-1.0/VERSION ivtools-1.0/aclocal.m4 ivtools-1.0/comtop.tgz ivtools-1.0/config/Imakefile ivtools-1.0/config/InterViews/Imakefile ivtools-1.0/config/InterViews/Makefile ivtools-1.0/config/InterViews/TIFF.def ivtools-1.0/config/InterViews/arch.def ivtools-1.0/config/InterViews/cxx.def ivtools-1.0/config/InterViews/iv-DGUX.cf ivtools-1.0/config/InterViews/iv-Mips.cf ivtools-1.0/config/InterViews/iv-aix.cf ivtools-1.0/config/InterViews/iv-alpha.cf ivtools-1.0/config/InterViews/iv-apollo.cf ivtools-1.0/config/InterViews/iv-att.cf ivtools-1.0/config/InterViews/iv-bsd.cf ivtools-1.0/config/InterViews/iv-convex.cf ivtools-1.0/config/InterViews/iv-cray.cf ivtools-1.0/config/InterViews/iv-cygwin.cf ivtools-1.0/config/InterViews/iv-darwin.cf ivtools-1.0/config/InterViews/iv-freebsd.cf ivtools-1.0/config/InterViews/iv-generic.cf ivtools-1.0/config/InterViews/iv-hp.cf ivtools-1.0/config/InterViews/iv-ibm.cf ivtools-1.0/config/InterViews/iv-linux.cf ivtools-1.0/config/InterViews/iv-luna.cf ivtools-1.0/config/InterViews/iv-m4330.cf ivtools-1.0/config/InterViews/iv-macII.cf ivtools-1.0/config/InterViews/iv-moto.cf ivtools-1.0/config/InterViews/iv-netbsd.cf ivtools-1.0/config/InterViews/iv-pegasus.cf ivtools-1.0/config/InterViews/iv-sgi.cf ivtools-1.0/config/InterViews/iv-sony.cf ivtools-1.0/config/InterViews/iv-stellar.cf ivtools-1.0/config/InterViews/iv-stratus.cf ivtools-1.0/config/InterViews/iv-sun.cf ivtools-1.0/config/InterViews/iv-ultrix.cf ivtools-1.0/config/InterViews/iv-x386.cf ivtools-1.0/config/InterViews/local.def ivtools-1.0/config/InterViews/params.def ivtools-1.0/config/InterViews/rules.def ivtools-1.0/config/InterViews/xparams.cf ivtools-1.0/config/Makefile ivtools-1.0/config/alpha3.0-gcc.mk ivtools-1.0/config/alpha3.2-gcc.mk ivtools-1.0/config/alpha4-gcc.mk ivtools-1.0/config/arch.def ivtools-1.0/config/config.defs.in ivtools-1.0/config/config.mk ivtools-1.0/config/config.null.mk ivtools-1.0/config/darwin-gcc.mk ivtools-1.0/config/default-gcc.mk ivtools-1.0/config/freebsd-gcc.mk ivtools-1.0/config/freebsd2.1-gcc.mk ivtools-1.0/config/gcc.def ivtools-1.0/config/hpux-gcc.mk ivtools-1.0/config/hpux10.20-gcc.mk ivtools-1.0/config/irix5-gcc.mk ivtools-1.0/config/irix6-gcc.mk ivtools-1.0/config/linux-gcc.mk ivtools-1.0/config/local.def ivtools-1.0/config/m88k-sysv3-gcc.mk ivtools-1.0/config/m88k-sysv4-gcc.mk ivtools-1.0/config/makevars.def ivtools-1.0/config/netbsd-gcc.mk ivtools-1.0/config/params.def ivtools-1.0/config/rules.def ivtools-1.0/config/sco3.2.4-gcc.mk ivtools-1.0/config/site.def.ALPHA ivtools-1.0/config/site.def.CYGWIN ivtools-1.0/config/site.def.DARWIN ivtools-1.0/config/site.def.FREEBSD ivtools-1.0/config/site.def.HP800 ivtools-1.0/config/site.def.LINUX ivtools-1.0/config/site.def.NETBSD ivtools-1.0/config/site.def.SGI ivtools-1.0/config/site.def.SUN4 ivtools-1.0/config/solaris-gcc.mk ivtools-1.0/config/sunos4-gcc.mk ivtools-1.0/config/template ivtools-1.0/configure ivtools-1.0/configure.in ivtools-1.0/configure.notes ivtools-1.0/src/AceDispatch/Imakefile ivtools-1.0/src/AceDispatch/Makefile ivtools-1.0/src/AceDispatch/ace_dispatcher.c ivtools-1.0/src/AceDispatch/ace_dispatcher.h ivtools-1.0/src/AceDispatch/ace_iohandler.c ivtools-1.0/src/AceDispatch/ace_iohandler.h ivtools-1.0/src/AttrGlyph/Imakefile ivtools-1.0/src/AttrGlyph/Makefile ivtools-1.0/src/AttrGlyph/attredit.c ivtools-1.0/src/AttrGlyph/attredit.h ivtools-1.0/src/Attribute/Imakefile ivtools-1.0/src/Attribute/Makefile ivtools-1.0/src/Attribute/_comterp.h ivtools-1.0/src/Attribute/_comutil.h ivtools-1.0/src/Attribute/alist.c ivtools-1.0/src/Attribute/alist.h ivtools-1.0/src/Attribute/aliterator.c ivtools-1.0/src/Attribute/aliterator.h ivtools-1.0/src/Attribute/attribute.c ivtools-1.0/src/Attribute/attribute.h ivtools-1.0/src/Attribute/attrlist.c ivtools-1.0/src/Attribute/attrlist.h ivtools-1.0/src/Attribute/attrvalue.c ivtools-1.0/src/Attribute/attrvalue.h ivtools-1.0/src/Attribute/classid.h ivtools-1.0/src/Attribute/commodule.c ivtools-1.0/src/Attribute/commodule.h ivtools-1.0/src/Attribute/lexscan.c ivtools-1.0/src/Attribute/lexscan.h ivtools-1.0/src/Attribute/paramlist.c ivtools-1.0/src/Attribute/paramlist.h ivtools-1.0/src/ComGlyph/Imakefile ivtools-1.0/src/ComGlyph/Makefile ivtools-1.0/src/ComGlyph/attrdialog.c ivtools-1.0/src/ComGlyph/attrdialog.h ivtools-1.0/src/ComGlyph/comtextedit.c ivtools-1.0/src/ComGlyph/comtextedit.h ivtools-1.0/src/ComGlyph/comtextview.c ivtools-1.0/src/ComGlyph/comtextview.h ivtools-1.0/src/ComGlyph/terpdialog.c ivtools-1.0/src/ComGlyph/terpdialog.h ivtools-1.0/src/ComTerp/Imakefile ivtools-1.0/src/ComTerp/Makefile ivtools-1.0/src/ComTerp/_comterp.h ivtools-1.0/src/ComTerp/_comutil.h ivtools-1.0/src/ComTerp/assignfunc.c ivtools-1.0/src/ComTerp/assignfunc.h ivtools-1.0/src/ComTerp/bitfunc.c ivtools-1.0/src/ComTerp/bitfunc.h ivtools-1.0/src/ComTerp/boolfunc.c ivtools-1.0/src/ComTerp/boolfunc.h ivtools-1.0/src/ComTerp/bquotefunc.c ivtools-1.0/src/ComTerp/bquotefunc.h ivtools-1.0/src/ComTerp/comfunc.c ivtools-1.0/src/ComTerp/comfunc.h ivtools-1.0/src/ComTerp/comhandler.c ivtools-1.0/src/ComTerp/comhandler.h ivtools-1.0/src/ComTerp/commodule.h ivtools-1.0/src/ComTerp/comterp.c ivtools-1.0/src/ComTerp/comterp.h ivtools-1.0/src/ComTerp/comterpserv.c ivtools-1.0/src/ComTerp/comterpserv.h ivtools-1.0/src/ComTerp/comvalue.c ivtools-1.0/src/ComTerp/comvalue.h ivtools-1.0/src/ComTerp/condfunc.c ivtools-1.0/src/ComTerp/condfunc.h ivtools-1.0/src/ComTerp/ctrlfunc.c ivtools-1.0/src/ComTerp/ctrlfunc.h ivtools-1.0/src/ComTerp/debugfunc.c ivtools-1.0/src/ComTerp/debugfunc.h ivtools-1.0/src/ComTerp/dotfunc.c ivtools-1.0/src/ComTerp/dotfunc.h ivtools-1.0/src/ComTerp/helpfunc.c ivtools-1.0/src/ComTerp/helpfunc.h ivtools-1.0/src/ComTerp/iofunc.c ivtools-1.0/src/ComTerp/iofunc.h ivtools-1.0/src/ComTerp/lexscan.h ivtools-1.0/src/ComTerp/listfunc.c ivtools-1.0/src/ComTerp/listfunc.h ivtools-1.0/src/ComTerp/mathfunc.c ivtools-1.0/src/ComTerp/mathfunc.h ivtools-1.0/src/ComTerp/numfunc.c ivtools-1.0/src/ComTerp/numfunc.h ivtools-1.0/src/ComTerp/parser.c ivtools-1.0/src/ComTerp/parser.h ivtools-1.0/src/ComTerp/postfunc.c ivtools-1.0/src/ComTerp/postfunc.h ivtools-1.0/src/ComTerp/randfunc.c ivtools-1.0/src/ComTerp/randfunc.h ivtools-1.0/src/ComTerp/scanner.c ivtools-1.0/src/ComTerp/scanner.h ivtools-1.0/src/ComTerp/statfunc.c ivtools-1.0/src/ComTerp/statfunc.h ivtools-1.0/src/ComTerp/strmfunc.c ivtools-1.0/src/ComTerp/strmfunc.h ivtools-1.0/src/ComTerp/symbolfunc.c ivtools-1.0/src/ComTerp/symbolfunc.h ivtools-1.0/src/ComTerp/typefunc.c ivtools-1.0/src/ComTerp/typefunc.h ivtools-1.0/src/ComTerp/xformfunc.c ivtools-1.0/src/ComTerp/xformfunc.h ivtools-1.0/src/ComUnidraw/Imakefile ivtools-1.0/src/ComUnidraw/Makefile ivtools-1.0/src/ComUnidraw/comeditor.c ivtools-1.0/src/ComUnidraw/comeditor.h ivtools-1.0/src/ComUnidraw/comterp-acehandler.c ivtools-1.0/src/ComUnidraw/comterp-acehandler.h ivtools-1.0/src/ComUnidraw/comterp-iohandler.c ivtools-1.0/src/ComUnidraw/comterp-iohandler.h ivtools-1.0/src/ComUnidraw/dialogfunc.c ivtools-1.0/src/ComUnidraw/dialogfunc.h ivtools-1.0/src/ComUnidraw/grdotfunc.c ivtools-1.0/src/ComUnidraw/grdotfunc.h ivtools-1.0/src/ComUnidraw/grfunc.c ivtools-1.0/src/ComUnidraw/grfunc.h ivtools-1.0/src/ComUnidraw/grlistfunc.c ivtools-1.0/src/ComUnidraw/grlistfunc.h ivtools-1.0/src/ComUnidraw/groupfunc.c ivtools-1.0/src/ComUnidraw/groupfunc.h ivtools-1.0/src/ComUnidraw/grstatfunc.c ivtools-1.0/src/ComUnidraw/grstatfunc.h ivtools-1.0/src/ComUnidraw/highlightfunc.c ivtools-1.0/src/ComUnidraw/highlightfunc.h ivtools-1.0/src/ComUnidraw/nfunc.c ivtools-1.0/src/ComUnidraw/nfunc.h ivtools-1.0/src/ComUnidraw/pixelfunc.c ivtools-1.0/src/ComUnidraw/pixelfunc.h ivtools-1.0/src/ComUnidraw/plotfunc.c ivtools-1.0/src/ComUnidraw/plotfunc.h ivtools-1.0/src/ComUnidraw/unifunc.c ivtools-1.0/src/ComUnidraw/unifunc.h ivtools-1.0/src/ComUtil/Imakefile ivtools-1.0/src/ComUtil/Makefile ivtools-1.0/src/ComUtil/_lexscan.c ivtools-1.0/src/ComUtil/_parser.c ivtools-1.0/src/ComUtil/_scanner.c ivtools-1.0/src/ComUtil/atox.c ivtools-1.0/src/ComUtil/comerr.c ivtools-1.0/src/ComUtil/comterp.arg ivtools-1.0/src/ComUtil/comterp.ci ivtools-1.0/src/ComUtil/comterp.err ivtools-1.0/src/ComUtil/comterp.h ivtools-1.0/src/ComUtil/comutil.arg ivtools-1.0/src/ComUtil/comutil.ci ivtools-1.0/src/ComUtil/comutil.h ivtools-1.0/src/ComUtil/dmm.c ivtools-1.0/src/ComUtil/errfile.c ivtools-1.0/src/ComUtil/errsys.c ivtools-1.0/src/ComUtil/funcptrs.c ivtools-1.0/src/ComUtil/mblock.c ivtools-1.0/src/ComUtil/optable.c ivtools-1.0/src/ComUtil/symbols.c ivtools-1.0/src/ComUtil/txtutil.c ivtools-1.0/src/ComUtil/types.c ivtools-1.0/src/ComUtil/util.c ivtools-1.0/src/ComUtil/util.h ivtools-1.0/src/ComUtil/xdll.c ivtools-1.0/src/Dispatch/Imakefile ivtools-1.0/src/Dispatch/Makefile ivtools-1.0/src/Dispatch/dispatcher.c ivtools-1.0/src/Dispatch/iohandler.c ivtools-1.0/src/Dispatch/iostreamb.c ivtools-1.0/src/Dispatch/netinet_in.h ivtools-1.0/src/Dispatch/rpcbuf.c ivtools-1.0/src/Dispatch/rpchdr.c ivtools-1.0/src/Dispatch/rpcpeer.c ivtools-1.0/src/Dispatch/rpcreader.c ivtools-1.0/src/Dispatch/rpcregistry.c ivtools-1.0/src/Dispatch/rpcservice.c ivtools-1.0/src/Dispatch/rpcstream.c ivtools-1.0/src/Dispatch/rpcwriter.c ivtools-1.0/src/DrawServ/Imakefile ivtools-1.0/src/DrawServ/Makefile ivtools-1.0/src/DrawServ/drawcatalog.c ivtools-1.0/src/DrawServ/drawcatalog.h ivtools-1.0/src/DrawServ/drawclasses.h ivtools-1.0/src/DrawServ/drawcomps.c ivtools-1.0/src/DrawServ/drawcomps.h ivtools-1.0/src/DrawServ/drawcreator.c ivtools-1.0/src/DrawServ/drawcreator.h ivtools-1.0/src/DrawServ/drawkit.c ivtools-1.0/src/DrawServ/drawkit.h ivtools-1.0/src/DrawServ/drawviews.c ivtools-1.0/src/DrawServ/drawviews.h ivtools-1.0/src/FrameUnidraw/Imakefile ivtools-1.0/src/FrameUnidraw/Makefile ivtools-1.0/src/FrameUnidraw/framecatalog.c ivtools-1.0/src/FrameUnidraw/framecatalog.h ivtools-1.0/src/FrameUnidraw/frameclasses.h ivtools-1.0/src/FrameUnidraw/framecmds.c ivtools-1.0/src/FrameUnidraw/framecmds.h ivtools-1.0/src/FrameUnidraw/framecomps.c ivtools-1.0/src/FrameUnidraw/framecomps.h ivtools-1.0/src/FrameUnidraw/framecreator.c ivtools-1.0/src/FrameUnidraw/framecreator.h ivtools-1.0/src/FrameUnidraw/frameeditor.c ivtools-1.0/src/FrameUnidraw/frameeditor.h ivtools-1.0/src/FrameUnidraw/framefile.c ivtools-1.0/src/FrameUnidraw/framefile.h ivtools-1.0/src/FrameUnidraw/framefunc.c ivtools-1.0/src/FrameUnidraw/framefunc.h ivtools-1.0/src/FrameUnidraw/framekit.c ivtools-1.0/src/FrameUnidraw/framekit.h ivtools-1.0/src/FrameUnidraw/frameps.c ivtools-1.0/src/FrameUnidraw/frameps.h ivtools-1.0/src/FrameUnidraw/framescripts.c ivtools-1.0/src/FrameUnidraw/framescripts.h ivtools-1.0/src/FrameUnidraw/framestates.c ivtools-1.0/src/FrameUnidraw/framestates.h ivtools-1.0/src/FrameUnidraw/frameviewer.c ivtools-1.0/src/FrameUnidraw/frameviewer.h ivtools-1.0/src/FrameUnidraw/frameviews.c ivtools-1.0/src/FrameUnidraw/frameviews.h ivtools-1.0/src/GraphUnidraw/Imakefile ivtools-1.0/src/GraphUnidraw/Makefile ivtools-1.0/src/GraphUnidraw/edgecomp.c ivtools-1.0/src/GraphUnidraw/edgecomp.h ivtools-1.0/src/GraphUnidraw/graphcatalog.c ivtools-1.0/src/GraphUnidraw/graphcatalog.h ivtools-1.0/src/GraphUnidraw/graphclasses.h ivtools-1.0/src/GraphUnidraw/graphcmds.c ivtools-1.0/src/GraphUnidraw/graphcmds.h ivtools-1.0/src/GraphUnidraw/graphcomp.c ivtools-1.0/src/GraphUnidraw/graphcomp.h ivtools-1.0/src/GraphUnidraw/graphcreator.c ivtools-1.0/src/GraphUnidraw/graphcreator.h ivtools-1.0/src/GraphUnidraw/graphdata.c ivtools-1.0/src/GraphUnidraw/graphdata.h ivtools-1.0/src/GraphUnidraw/graphdialog.c ivtools-1.0/src/GraphUnidraw/graphdialog.h ivtools-1.0/src/GraphUnidraw/grapheditor.c ivtools-1.0/src/GraphUnidraw/grapheditor.h ivtools-1.0/src/GraphUnidraw/graphimport.c ivtools-1.0/src/GraphUnidraw/graphimport.h ivtools-1.0/src/GraphUnidraw/graphkit.c ivtools-1.0/src/GraphUnidraw/graphkit.h ivtools-1.0/src/GraphUnidraw/graphtools.c ivtools-1.0/src/GraphUnidraw/graphtools.h ivtools-1.0/src/GraphUnidraw/nodecomp.c ivtools-1.0/src/GraphUnidraw/nodecomp.h ivtools-1.0/src/IV-2_6/Imakefile ivtools-1.0/src/IV-2_6/Makefile ivtools-1.0/src/IV-2_6/adjuster2_6.c ivtools-1.0/src/IV-2_6/banner.c ivtools-1.0/src/IV-2_6/border2_6.c ivtools-1.0/src/IV-2_6/box2_6.c ivtools-1.0/src/IV-2_6/button2_6.c ivtools-1.0/src/IV-2_6/compeditor.c ivtools-1.0/src/IV-2_6/control.c ivtools-1.0/src/IV-2_6/deck2_6.c ivtools-1.0/src/IV-2_6/dialog2_6.c ivtools-1.0/src/IV-2_6/filebrowser.c ivtools-1.0/src/IV-2_6/filechooser.c ivtools-1.0/src/IV-2_6/frame.c ivtools-1.0/src/IV-2_6/glue2_6.c ivtools-1.0/src/IV-2_6/interactor.c ivtools-1.0/src/IV-2_6/matcheditor.c ivtools-1.0/src/IV-2_6/menu2_6.c ivtools-1.0/src/IV-2_6/message.c ivtools-1.0/src/IV-2_6/painter.c ivtools-1.0/src/IV-2_6/panner2_6.c ivtools-1.0/src/IV-2_6/perspective.c ivtools-1.0/src/IV-2_6/rubband.c ivtools-1.0/src/IV-2_6/rubcurve.c ivtools-1.0/src/IV-2_6/rubgroup.c ivtools-1.0/src/IV-2_6/rubline.c ivtools-1.0/src/IV-2_6/rubrect.c ivtools-1.0/src/IV-2_6/rubverts.c ivtools-1.0/src/IV-2_6/scene.c ivtools-1.0/src/IV-2_6/scrollbar2_6.c ivtools-1.0/src/IV-2_6/scroller2_6.c ivtools-1.0/src/IV-2_6/sensor.c ivtools-1.0/src/IV-2_6/shape.c ivtools-1.0/src/IV-2_6/strbrowser.c ivtools-1.0/src/IV-2_6/strchooser.c ivtools-1.0/src/IV-2_6/streditor.c ivtools-1.0/src/IV-2_6/subject.c ivtools-1.0/src/IV-2_6/textbuffer.c ivtools-1.0/src/IV-2_6/textdisplay.c ivtools-1.0/src/IV-2_6/texteditor.c ivtools-1.0/src/IV-2_6/tform2_6.c ivtools-1.0/src/IV-2_6/tray.c ivtools-1.0/src/IV-2_6/viewport.c ivtools-1.0/src/IV-2_6/world.c ivtools-1.0/src/IV-2_6/xbitmap2_6.c ivtools-1.0/src/IV-2_6/xevent2_6.c ivtools-1.0/src/IV-2_6/xinter.c ivtools-1.0/src/IV-2_6/xpainter.c ivtools-1.0/src/IV-2_6/xpattern.c ivtools-1.0/src/IV-X11/Imakefile ivtools-1.0/src/IV-X11/Makefile ivtools-1.0/src/IV-X11/glcontext.c ivtools-1.0/src/IV-X11/wtable.h ivtools-1.0/src/IV-X11/xbitmap.c ivtools-1.0/src/IV-X11/xbrush.c ivtools-1.0/src/IV-X11/xcanvas.c ivtools-1.0/src/IV-X11/xcolor.c ivtools-1.0/src/IV-X11/xcursor.c ivtools-1.0/src/IV-X11/xdrag.c ivtools-1.0/src/IV-X11/xevent.c ivtools-1.0/src/IV-X11/xfont.c ivtools-1.0/src/IV-X11/xraster.c ivtools-1.0/src/IV-X11/xreqerr.c ivtools-1.0/src/IV-X11/xselection.c ivtools-1.0/src/IV-X11/xwindow.c ivtools-1.0/src/IV-common/Imakefile ivtools-1.0/src/IV-common/Makefile ivtools-1.0/src/IV-common/listimpl.c ivtools-1.0/src/IV-common/math.c ivtools-1.0/src/IV-common/memory.c ivtools-1.0/src/IV-common/regexp.c ivtools-1.0/src/IV-common/resource.c ivtools-1.0/src/IV-common/string.c ivtools-1.0/src/IV-common/textbuffer.c ivtools-1.0/src/IV-common/tform2_6.c ivtools-1.0/src/IV-common/transformer.c ivtools-1.0/src/IV/Imakefile ivtools-1.0/src/IV/InterViews.defaults ivtools-1.0/src/IV/Makefile ivtools-1.0/src/IVGlyph/Imakefile ivtools-1.0/src/IVGlyph/Makefile ivtools-1.0/src/IVGlyph/bdfltform.c ivtools-1.0/src/IVGlyph/bdfltform.h ivtools-1.0/src/IVGlyph/bdtable.c ivtools-1.0/src/IVGlyph/bdtable.h ivtools-1.0/src/IVGlyph/bdvalue.c ivtools-1.0/src/IVGlyph/bdvalue.h ivtools-1.0/src/IVGlyph/boolform.c ivtools-1.0/src/IVGlyph/boolform.h ivtools-1.0/src/IVGlyph/charfield.c ivtools-1.0/src/IVGlyph/charfield.h ivtools-1.0/src/IVGlyph/dragedit.c ivtools-1.0/src/IVGlyph/dragedit.h ivtools-1.0/src/IVGlyph/enumform.c ivtools-1.0/src/IVGlyph/enumform.h ivtools-1.0/src/IVGlyph/exportchooser.c ivtools-1.0/src/IVGlyph/exportchooser.h ivtools-1.0/src/IVGlyph/fieldedit.c ivtools-1.0/src/IVGlyph/fieldedit.h ivtools-1.0/src/IVGlyph/figure.c ivtools-1.0/src/IVGlyph/figure.h ivtools-1.0/src/IVGlyph/gdialogs.c ivtools-1.0/src/IVGlyph/gdialogs.h ivtools-1.0/src/IVGlyph/globals.c ivtools-1.0/src/IVGlyph/globals.h ivtools-1.0/src/IVGlyph/grabber.bm ivtools-1.0/src/IVGlyph/grabberMask.bm ivtools-1.0/src/IVGlyph/idraw.c ivtools-1.0/src/IVGlyph/idraw.h ivtools-1.0/src/IVGlyph/importchooser.c ivtools-1.0/src/IVGlyph/importchooser.h ivtools-1.0/src/IVGlyph/namestate.c ivtools-1.0/src/IVGlyph/namestate.h ivtools-1.0/src/IVGlyph/observables.c ivtools-1.0/src/IVGlyph/observables.h ivtools-1.0/src/IVGlyph/odialogs.c ivtools-1.0/src/IVGlyph/odialogs.h ivtools-1.0/src/IVGlyph/ofilechooser.c ivtools-1.0/src/IVGlyph/ofilechooser.h ivtools-1.0/src/IVGlyph/printchooser.c ivtools-1.0/src/IVGlyph/printchooser.h ivtools-1.0/src/IVGlyph/saveaschooser.c ivtools-1.0/src/IVGlyph/saveaschooser.h ivtools-1.0/src/IVGlyph/scrollable.c ivtools-1.0/src/IVGlyph/scrollable.h ivtools-1.0/src/IVGlyph/strchooser.c ivtools-1.0/src/IVGlyph/strchooser.h ivtools-1.0/src/IVGlyph/stredit.c ivtools-1.0/src/IVGlyph/stredit.h ivtools-1.0/src/IVGlyph/strlist.c ivtools-1.0/src/IVGlyph/strlist.h ivtools-1.0/src/IVGlyph/textbuff.c ivtools-1.0/src/IVGlyph/textbuff.h ivtools-1.0/src/IVGlyph/textedit.c ivtools-1.0/src/IVGlyph/textedit.h ivtools-1.0/src/IVGlyph/texteditor.c ivtools-1.0/src/IVGlyph/texteditor.h ivtools-1.0/src/IVGlyph/textform.c ivtools-1.0/src/IVGlyph/textform.h ivtools-1.0/src/IVGlyph/textview.c ivtools-1.0/src/IVGlyph/textview.h ivtools-1.0/src/IVGlyph/textwindow.c ivtools-1.0/src/IVGlyph/textwindow.h ivtools-1.0/src/IVGlyph/toolbutton.c ivtools-1.0/src/IVGlyph/toolbutton.h ivtools-1.0/src/IVGlyph/valuator.c ivtools-1.0/src/IVGlyph/valuator.h ivtools-1.0/src/Imakefile ivtools-1.0/src/InterViews/Imakefile ivtools-1.0/src/InterViews/Makefile ivtools-1.0/src/InterViews/action.c ivtools-1.0/src/InterViews/adjust.c ivtools-1.0/src/InterViews/aggr.c ivtools-1.0/src/InterViews/align.c ivtools-1.0/src/InterViews/alloctbl.c ivtools-1.0/src/InterViews/arrcomp.c ivtools-1.0/src/InterViews/background.c ivtools-1.0/src/InterViews/bevel.c ivtools-1.0/src/InterViews/border.c ivtools-1.0/src/InterViews/box.c ivtools-1.0/src/InterViews/browser.c ivtools-1.0/src/InterViews/button.c ivtools-1.0/src/InterViews/character.c ivtools-1.0/src/InterViews/composition.c ivtools-1.0/src/InterViews/compositor.c ivtools-1.0/src/InterViews/debug.c ivtools-1.0/src/InterViews/deck.c ivtools-1.0/src/InterViews/dialogs.c ivtools-1.0/src/InterViews/fbrowser.c ivtools-1.0/src/InterViews/fchooser.c ivtools-1.0/src/InterViews/field.c ivtools-1.0/src/InterViews/geometry.c ivtools-1.0/src/InterViews/glyph.c ivtools-1.0/src/InterViews/group.c ivtools-1.0/src/InterViews/handler.c ivtools-1.0/src/InterViews/hit.c ivtools-1.0/src/InterViews/image.c ivtools-1.0/src/InterViews/input.c ivtools-1.0/src/InterViews/kit.c ivtools-1.0/src/InterViews/label.c ivtools-1.0/src/InterViews/layout.c ivtools-1.0/src/InterViews/lrmarker.c ivtools-1.0/src/InterViews/menu.c ivtools-1.0/src/InterViews/mf_dialogs.c ivtools-1.0/src/InterViews/mf_kit.c ivtools-1.0/src/InterViews/mono_kit.c ivtools-1.0/src/InterViews/monoglyph.c ivtools-1.0/src/InterViews/observe.c ivtools-1.0/src/InterViews/ol_dialogs.c ivtools-1.0/src/InterViews/ol_kit.c ivtools-1.0/src/InterViews/page.c ivtools-1.0/src/InterViews/patch.c ivtools-1.0/src/InterViews/place.c ivtools-1.0/src/InterViews/polyglyph.c ivtools-1.0/src/InterViews/printer.c ivtools-1.0/src/InterViews/psfont.c ivtools-1.0/src/InterViews/regexp.c ivtools-1.0/src/InterViews/resource.c ivtools-1.0/src/InterViews/rule.c ivtools-1.0/src/InterViews/scrbox.c ivtools-1.0/src/InterViews/session.c ivtools-1.0/src/InterViews/shadow.c ivtools-1.0/src/InterViews/simpcomp.c ivtools-1.0/src/InterViews/slider.c ivtools-1.0/src/InterViews/smf_kit.c ivtools-1.0/src/InterViews/stencil.c ivtools-1.0/src/InterViews/stepper.c ivtools-1.0/src/InterViews/style.c ivtools-1.0/src/InterViews/superpose.c ivtools-1.0/src/InterViews/target.c ivtools-1.0/src/InterViews/telltale.c ivtools-1.0/src/InterViews/texcomp.c ivtools-1.0/src/InterViews/tformsetter.c ivtools-1.0/src/InterViews/tiff.c ivtools-1.0/src/InterViews/tile.c ivtools-1.0/src/InterViews/transformer.c ivtools-1.0/src/InterViews/xymarker.c ivtools-1.0/src/IueServ/Imakefile ivtools-1.0/src/IueServ/Makefile ivtools-1.0/src/IueServ/exportfunc.c ivtools-1.0/src/IueServ/exportfunc.h ivtools-1.0/src/IueServ/ipfunc.c ivtools-1.0/src/IueServ/ipfunc.h ivtools-1.0/src/IueServ/iueclasses.h ivtools-1.0/src/IueServ/iuecomps.c ivtools-1.0/src/IueServ/iuecomps.h ivtools-1.0/src/IueServ/iuefunc.c ivtools-1.0/src/IueServ/iuefunc.h ivtools-1.0/src/IueServ/iuehandler.c ivtools-1.0/src/IueServ/iuehandler.h ivtools-1.0/src/IueServ/roifunc.c ivtools-1.0/src/IueServ/roifunc.h ivtools-1.0/src/Makefile ivtools-1.0/src/OS/Imakefile ivtools-1.0/src/OS/Makefile ivtools-1.0/src/OS/directory.c ivtools-1.0/src/OS/file.c ivtools-1.0/src/OS/host.c ivtools-1.0/src/OS/listimpl.c ivtools-1.0/src/OS/math.c ivtools-1.0/src/OS/memory.c ivtools-1.0/src/OS/string.c ivtools-1.0/src/OS/ustring.c ivtools-1.0/src/OverlayUnidraw/Imakefile ivtools-1.0/src/OverlayUnidraw/Makefile ivtools-1.0/src/OverlayUnidraw/aceimport.c ivtools-1.0/src/OverlayUnidraw/aceimport.h ivtools-1.0/src/OverlayUnidraw/algebra3.h ivtools-1.0/src/OverlayUnidraw/annotate.c ivtools-1.0/src/OverlayUnidraw/annotate.h ivtools-1.0/src/OverlayUnidraw/attrtool.c ivtools-1.0/src/OverlayUnidraw/attrtool.h ivtools-1.0/src/OverlayUnidraw/clipline.c ivtools-1.0/src/OverlayUnidraw/clipline.h ivtools-1.0/src/OverlayUnidraw/cliplinepoly.c ivtools-1.0/src/OverlayUnidraw/cliplinepoly.h ivtools-1.0/src/OverlayUnidraw/clippoly.c ivtools-1.0/src/OverlayUnidraw/clippoly.h ivtools-1.0/src/OverlayUnidraw/grayraster.c ivtools-1.0/src/OverlayUnidraw/grayraster.h ivtools-1.0/src/OverlayUnidraw/grloctool.c ivtools-1.0/src/OverlayUnidraw/grloctool.h ivtools-1.0/src/OverlayUnidraw/indexmixins.c ivtools-1.0/src/OverlayUnidraw/indexmixins.h ivtools-1.0/src/OverlayUnidraw/leakchecker.h ivtools-1.0/src/OverlayUnidraw/ovabout.c ivtools-1.0/src/OverlayUnidraw/ovabout.h ivtools-1.0/src/OverlayUnidraw/ovadjuster.c ivtools-1.0/src/OverlayUnidraw/ovadjuster.h ivtools-1.0/src/OverlayUnidraw/ovarrow.c ivtools-1.0/src/OverlayUnidraw/ovarrow.h ivtools-1.0/src/OverlayUnidraw/ovcamcmds.c ivtools-1.0/src/OverlayUnidraw/ovcamcmds.h ivtools-1.0/src/OverlayUnidraw/ovcatalog.c ivtools-1.0/src/OverlayUnidraw/ovcatalog.h ivtools-1.0/src/OverlayUnidraw/ovchainview.c ivtools-1.0/src/OverlayUnidraw/ovchainview.h ivtools-1.0/src/OverlayUnidraw/ovclasses.h ivtools-1.0/src/OverlayUnidraw/ovclip.c ivtools-1.0/src/OverlayUnidraw/ovclip.h ivtools-1.0/src/OverlayUnidraw/ovcmds.c ivtools-1.0/src/OverlayUnidraw/ovcmds.h ivtools-1.0/src/OverlayUnidraw/ovcomps.c ivtools-1.0/src/OverlayUnidraw/ovcomps.h ivtools-1.0/src/OverlayUnidraw/ovcreator.c ivtools-1.0/src/OverlayUnidraw/ovcreator.h ivtools-1.0/src/OverlayUnidraw/ovctrl.c ivtools-1.0/src/OverlayUnidraw/ovctrl.h ivtools-1.0/src/OverlayUnidraw/ovdamage.c ivtools-1.0/src/OverlayUnidraw/ovdamage.h ivtools-1.0/src/OverlayUnidraw/ovdialog.c ivtools-1.0/src/OverlayUnidraw/ovdialog.h ivtools-1.0/src/OverlayUnidraw/ovdoer.c ivtools-1.0/src/OverlayUnidraw/ovdoer.h ivtools-1.0/src/OverlayUnidraw/oved.c ivtools-1.0/src/OverlayUnidraw/oved.h ivtools-1.0/src/OverlayUnidraw/ovellipse.c ivtools-1.0/src/OverlayUnidraw/ovellipse.h ivtools-1.0/src/OverlayUnidraw/ovexport.c ivtools-1.0/src/OverlayUnidraw/ovexport.h ivtools-1.0/src/OverlayUnidraw/ovfile.c ivtools-1.0/src/OverlayUnidraw/ovfile.h ivtools-1.0/src/OverlayUnidraw/ovfixview.c ivtools-1.0/src/OverlayUnidraw/ovfixview.h ivtools-1.0/src/OverlayUnidraw/ovgdialog.c ivtools-1.0/src/OverlayUnidraw/ovgdialog.h ivtools-1.0/src/OverlayUnidraw/ovhull.c ivtools-1.0/src/OverlayUnidraw/ovhull.h ivtools-1.0/src/OverlayUnidraw/ovimport.c ivtools-1.0/src/OverlayUnidraw/ovimport.h ivtools-1.0/src/OverlayUnidraw/ovipcmds.c ivtools-1.0/src/OverlayUnidraw/ovipcmds.h ivtools-1.0/src/OverlayUnidraw/ovkit.c ivtools-1.0/src/OverlayUnidraw/ovkit.h ivtools-1.0/src/OverlayUnidraw/ovline.c ivtools-1.0/src/OverlayUnidraw/ovline.h ivtools-1.0/src/OverlayUnidraw/ovmanips.c ivtools-1.0/src/OverlayUnidraw/ovmanips.h ivtools-1.0/src/OverlayUnidraw/ovpage.c ivtools-1.0/src/OverlayUnidraw/ovpage.h ivtools-1.0/src/OverlayUnidraw/ovpainter.c ivtools-1.0/src/OverlayUnidraw/ovpainter.h ivtools-1.0/src/OverlayUnidraw/ovpanner.c ivtools-1.0/src/OverlayUnidraw/ovpanner.h ivtools-1.0/src/OverlayUnidraw/ovpolygon.c ivtools-1.0/src/OverlayUnidraw/ovpolygon.h ivtools-1.0/src/OverlayUnidraw/ovprecise.c ivtools-1.0/src/OverlayUnidraw/ovprecise.h ivtools-1.0/src/OverlayUnidraw/ovprint.c ivtools-1.0/src/OverlayUnidraw/ovprint.h ivtools-1.0/src/OverlayUnidraw/ovpspict.c ivtools-1.0/src/OverlayUnidraw/ovpspict.h ivtools-1.0/src/OverlayUnidraw/ovpsview.c ivtools-1.0/src/OverlayUnidraw/ovpsview.h ivtools-1.0/src/OverlayUnidraw/ovraster.c ivtools-1.0/src/OverlayUnidraw/ovraster.h ivtools-1.0/src/OverlayUnidraw/ovrect.c ivtools-1.0/src/OverlayUnidraw/ovrect.h ivtools-1.0/src/OverlayUnidraw/ovrestimage.c ivtools-1.0/src/OverlayUnidraw/ovrestimage.h ivtools-1.0/src/OverlayUnidraw/ovselect.c ivtools-1.0/src/OverlayUnidraw/ovselect.h ivtools-1.0/src/OverlayUnidraw/ovselection.c ivtools-1.0/src/OverlayUnidraw/ovselection.h ivtools-1.0/src/OverlayUnidraw/ovshowhide.c ivtools-1.0/src/OverlayUnidraw/ovshowhide.h ivtools-1.0/src/OverlayUnidraw/ovspline.c ivtools-1.0/src/OverlayUnidraw/ovspline.h ivtools-1.0/src/OverlayUnidraw/ovstates.c ivtools-1.0/src/OverlayUnidraw/ovstates.h ivtools-1.0/src/OverlayUnidraw/ovstencil.c ivtools-1.0/src/OverlayUnidraw/ovstencil.h ivtools-1.0/src/OverlayUnidraw/ovtext.c ivtools-1.0/src/OverlayUnidraw/ovtext.h ivtools-1.0/src/OverlayUnidraw/ovunidraw.c ivtools-1.0/src/OverlayUnidraw/ovunidraw.h ivtools-1.0/src/OverlayUnidraw/ovvars.c ivtools-1.0/src/OverlayUnidraw/ovvars.h ivtools-1.0/src/OverlayUnidraw/ovvertices.c ivtools-1.0/src/OverlayUnidraw/ovvertices.h ivtools-1.0/src/OverlayUnidraw/ovviewer.c ivtools-1.0/src/OverlayUnidraw/ovviewer.h ivtools-1.0/src/OverlayUnidraw/ovviews.c ivtools-1.0/src/OverlayUnidraw/ovviews.h ivtools-1.0/src/OverlayUnidraw/paramlist.h ivtools-1.0/src/OverlayUnidraw/phold.h ivtools-1.0/src/OverlayUnidraw/ptinpoly.c ivtools-1.0/src/OverlayUnidraw/ptinpoly.h ivtools-1.0/src/OverlayUnidraw/rastercmds.c ivtools-1.0/src/OverlayUnidraw/rastercmds.h ivtools-1.0/src/OverlayUnidraw/scriptview.c ivtools-1.0/src/OverlayUnidraw/scriptview.h ivtools-1.0/src/OverlayUnidraw/setattrbyexpr.c ivtools-1.0/src/OverlayUnidraw/setattrbyexpr.h ivtools-1.0/src/OverlayUnidraw/slctbyattr.c ivtools-1.0/src/OverlayUnidraw/slctbyattr.h ivtools-1.0/src/OverlayUnidraw/textfile.c ivtools-1.0/src/OverlayUnidraw/textfile.h ivtools-1.0/src/TIFF/Copyright ivtools-1.0/src/TIFF/HOWTO ivtools-1.0/src/TIFF/Imakefile ivtools-1.0/src/TIFF/Makefile ivtools-1.0/src/TIFF/README ivtools-1.0/src/TIFF/VERSION ivtools-1.0/src/TIFF/machdep.h ivtools-1.0/src/TIFF/mkg3states.c ivtools-1.0/src/TIFF/mkspans.c ivtools-1.0/src/TIFF/prototypes.h ivtools-1.0/src/TIFF/t4.h ivtools-1.0/src/TIFF/tif_aux.c ivtools-1.0/src/TIFF/tif_ccittrle.c ivtools-1.0/src/TIFF/tif_close.c ivtools-1.0/src/TIFF/tif_compat.c ivtools-1.0/src/TIFF/tif_compress.c ivtools-1.0/src/TIFF/tif_dir.c ivtools-1.0/src/TIFF/tif_dirinfo.c ivtools-1.0/src/TIFF/tif_dirread.c ivtools-1.0/src/TIFF/tif_dirwrite.c ivtools-1.0/src/TIFF/tif_dumpmode.c ivtools-1.0/src/TIFF/tif_error.c ivtools-1.0/src/TIFF/tif_fax3.c ivtools-1.0/src/TIFF/tif_fax3.h ivtools-1.0/src/TIFF/tif_fax4.c ivtools-1.0/src/TIFF/tif_flush.c ivtools-1.0/src/TIFF/tif_getimage.c ivtools-1.0/src/TIFF/tif_jpeg.c ivtools-1.0/src/TIFF/tif_lzw.c ivtools-1.0/src/TIFF/tif_machdep.c ivtools-1.0/src/TIFF/tif_next.c ivtools-1.0/src/TIFF/tif_open.c ivtools-1.0/src/TIFF/tif_packbits.c ivtools-1.0/src/TIFF/tif_print.c ivtools-1.0/src/TIFF/tif_read.c ivtools-1.0/src/TIFF/tif_strip.c ivtools-1.0/src/TIFF/tif_swab.c ivtools-1.0/src/TIFF/tif_thunder.c ivtools-1.0/src/TIFF/tif_tile.c ivtools-1.0/src/TIFF/tif_version.c ivtools-1.0/src/TIFF/tif_warning.c ivtools-1.0/src/TIFF/tif_write.c ivtools-1.0/src/TIFF/tiffcompat.h ivtools-1.0/src/TIFF/tiffioP.h ivtools-1.0/src/Time/Date.c ivtools-1.0/src/Time/Date.h ivtools-1.0/src/Time/Imakefile ivtools-1.0/src/Time/Makefile ivtools-1.0/src/Time/Time.c ivtools-1.0/src/Time/Time.h ivtools-1.0/src/Time/obstime.c ivtools-1.0/src/Time/obstime.h ivtools-1.0/src/Time/timeglyph.c ivtools-1.0/src/Time/timeglyph.h ivtools-1.0/src/TopoFace/Imakefile ivtools-1.0/src/TopoFace/Makefile ivtools-1.0/src/TopoFace/fgeomobjs.c ivtools-1.0/src/TopoFace/fgeomobjs.h ivtools-1.0/src/TopoFace/topoedge.c ivtools-1.0/src/TopoFace/topoedge.h ivtools-1.0/src/TopoFace/topoedgelist.c ivtools-1.0/src/TopoFace/topoedgelist.h ivtools-1.0/src/TopoFace/topoelt.c ivtools-1.0/src/TopoFace/topoelt.h ivtools-1.0/src/TopoFace/topoface.c ivtools-1.0/src/TopoFace/topoface.h ivtools-1.0/src/TopoFace/toponode.c ivtools-1.0/src/TopoFace/toponode.h ivtools-1.0/src/UniIdraw/Imakefile ivtools-1.0/src/UniIdraw/Makefile ivtools-1.0/src/UniIdraw/idarrow.c ivtools-1.0/src/UniIdraw/idarrow.h ivtools-1.0/src/UniIdraw/idarrowhead.c ivtools-1.0/src/UniIdraw/idarrowhead.h ivtools-1.0/src/UniIdraw/idarrows.c ivtools-1.0/src/UniIdraw/idarrows.h ivtools-1.0/src/UniIdraw/idcatalog.c ivtools-1.0/src/UniIdraw/idcatalog.h ivtools-1.0/src/UniIdraw/idclasses.h ivtools-1.0/src/UniIdraw/idcmds.c ivtools-1.0/src/UniIdraw/idcmds.h ivtools-1.0/src/UniIdraw/idcomp.c ivtools-1.0/src/UniIdraw/idcomp.h ivtools-1.0/src/UniIdraw/idcreator.c ivtools-1.0/src/UniIdraw/idcreator.h ivtools-1.0/src/UniIdraw/iddialogs.c ivtools-1.0/src/UniIdraw/iddialogs.h ivtools-1.0/src/UniIdraw/ided.c ivtools-1.0/src/UniIdraw/ided.h ivtools-1.0/src/UniIdraw/idkybd.c ivtools-1.0/src/UniIdraw/idkybd.h ivtools-1.0/src/UniIdraw/idvars.c ivtools-1.0/src/UniIdraw/idvars.h ivtools-1.0/src/UniIdraw/idversion.h ivtools-1.0/src/Unidraw-common/Imakefile ivtools-1.0/src/Unidraw-common/Makefile ivtools-1.0/src/Unidraw-common/component.c ivtools-1.0/src/Unidraw-common/compview.c ivtools-1.0/src/Unidraw-common/geomobjs.c ivtools-1.0/src/Unidraw-common/iterator.c ivtools-1.0/src/Unidraw-common/uarray.c ivtools-1.0/src/Unidraw-common/uhash.c ivtools-1.0/src/Unidraw-common/ulist.c ivtools-1.0/src/Unidraw-common/umap.c ivtools-1.0/src/Unidraw/Imakefile ivtools-1.0/src/Unidraw/Makefile ivtools-1.0/src/Unidraw/align.c ivtools-1.0/src/Unidraw/brushcmd.c ivtools-1.0/src/Unidraw/catalog.c ivtools-1.0/src/Unidraw/catcmds.c ivtools-1.0/src/Unidraw/cglue.c ivtools-1.0/src/Unidraw/clipboard.c ivtools-1.0/src/Unidraw/colorcmd.c ivtools-1.0/src/Unidraw/command.c ivtools-1.0/src/Unidraw/component.c ivtools-1.0/src/Unidraw/compview.c ivtools-1.0/src/Unidraw/connect.c ivtools-1.0/src/Unidraw/connector.c ivtools-1.0/src/Unidraw/creator.c ivtools-1.0/src/Unidraw/csolver.c ivtools-1.0/src/Unidraw/ctrlinfo.c ivtools-1.0/src/Unidraw/damage.c ivtools-1.0/src/Unidraw/data.c ivtools-1.0/src/Unidraw/datas.c ivtools-1.0/src/Unidraw/dialogs.c ivtools-1.0/src/Unidraw/edit.c ivtools-1.0/src/Unidraw/editor.c ivtools-1.0/src/Unidraw/editorinfo.c ivtools-1.0/src/Unidraw/ellipse.c ivtools-1.0/src/Unidraw/ellipses.c ivtools-1.0/src/Unidraw/externview.c ivtools-1.0/src/Unidraw/font.c ivtools-1.0/src/Unidraw/geomobjs.c ivtools-1.0/src/Unidraw/globals.c ivtools-1.0/src/Unidraw/graphic.c ivtools-1.0/src/Unidraw/grblock.c ivtools-1.0/src/Unidraw/grcomp.c ivtools-1.0/src/Unidraw/grcomptool.c ivtools-1.0/src/Unidraw/grid.c ivtools-1.0/src/Unidraw/grview.c ivtools-1.0/src/Unidraw/gvupdater.c ivtools-1.0/src/Unidraw/import.c ivtools-1.0/src/Unidraw/iterator.c ivtools-1.0/src/Unidraw/keymap.c ivtools-1.0/src/Unidraw/kybd.c ivtools-1.0/src/Unidraw/line.c ivtools-1.0/src/Unidraw/lines.c ivtools-1.0/src/Unidraw/link.c ivtools-1.0/src/Unidraw/macro.c ivtools-1.0/src/Unidraw/magnify.c ivtools-1.0/src/Unidraw/manip.c ivtools-1.0/src/Unidraw/manips.c ivtools-1.0/src/Unidraw/move.c ivtools-1.0/src/Unidraw/nop.c ivtools-1.0/src/Unidraw/pad.c ivtools-1.0/src/Unidraw/patcmd.c ivtools-1.0/src/Unidraw/path.c ivtools-1.0/src/Unidraw/picture.c ivtools-1.0/src/Unidraw/pin.c ivtools-1.0/src/Unidraw/polygon.c ivtools-1.0/src/Unidraw/polygons.c ivtools-1.0/src/Unidraw/pspaint.c ivtools-1.0/src/Unidraw/psview.c ivtools-1.0/src/Unidraw/rastercomp.c ivtools-1.0/src/Unidraw/rasterrect.c ivtools-1.0/src/Unidraw/rect.c ivtools-1.0/src/Unidraw/reshape.c ivtools-1.0/src/Unidraw/rotate.c ivtools-1.0/src/Unidraw/scale.c ivtools-1.0/src/Unidraw/select.c ivtools-1.0/src/Unidraw/selection.c ivtools-1.0/src/Unidraw/slot.c ivtools-1.0/src/Unidraw/spline.c ivtools-1.0/src/Unidraw/splines.c ivtools-1.0/src/Unidraw/statevar.c ivtools-1.0/src/Unidraw/statevars.c ivtools-1.0/src/Unidraw/stateview.c ivtools-1.0/src/Unidraw/stateviews.c ivtools-1.0/src/Unidraw/stencilcomp.c ivtools-1.0/src/Unidraw/stretch.c ivtools-1.0/src/Unidraw/struct.c ivtools-1.0/src/Unidraw/text.c ivtools-1.0/src/Unidraw/tool.c ivtools-1.0/src/Unidraw/transfn.c ivtools-1.0/src/Unidraw/transfns.c ivtools-1.0/src/Unidraw/transforms.c ivtools-1.0/src/Unidraw/uarray.c ivtools-1.0/src/Unidraw/uctrl.c ivtools-1.0/src/Unidraw/uctrls.c ivtools-1.0/src/Unidraw/uhash.c ivtools-1.0/src/Unidraw/ulabel.c ivtools-1.0/src/Unidraw/ulist.c ivtools-1.0/src/Unidraw/umap.c ivtools-1.0/src/Unidraw/unidraw.c ivtools-1.0/src/Unidraw/upage.c ivtools-1.0/src/Unidraw/ustencil.c ivtools-1.0/src/Unidraw/vertices.c ivtools-1.0/src/Unidraw/verts.c ivtools-1.0/src/Unidraw/viewcmds.c ivtools-1.0/src/Unidraw/viewer.c ivtools-1.0/src/comdraw/Imakefile ivtools-1.0/src/comdraw/Makefile ivtools-1.0/src/comdraw/README ivtools-1.0/src/comdraw/main.c ivtools-1.0/src/comterp_/Imakefile ivtools-1.0/src/comterp_/Makefile ivtools-1.0/src/comterp_/README ivtools-1.0/src/comterp_/main.c ivtools-1.0/src/comtest/Imakefile ivtools-1.0/src/comtest/Makefile ivtools-1.0/src/comtest/main.c ivtools-1.0/src/dclock/Imakefile ivtools-1.0/src/dclock/Makefile ivtools-1.0/src/dclock/clocktime.c ivtools-1.0/src/dclock/clocktime.h ivtools-1.0/src/dclock/data.c ivtools-1.0/src/dclock/data.h ivtools-1.0/src/dclock/dclock.c ivtools-1.0/src/dclock/dclock.h ivtools-1.0/src/dclock/dface.c ivtools-1.0/src/dclock/dface.h ivtools-1.0/src/dclock/digit.c ivtools-1.0/src/dclock/digit.h ivtools-1.0/src/dclock/segment.c ivtools-1.0/src/dclock/segment.h ivtools-1.0/src/drawserv_/Imakefile ivtools-1.0/src/drawserv_/Makefile ivtools-1.0/src/drawserv_/main.c ivtools-1.0/src/drawtool/Imakefile ivtools-1.0/src/drawtool/Makefile ivtools-1.0/src/drawtool/README ivtools-1.0/src/drawtool/main.c ivtools-1.0/src/flipbook/Imakefile ivtools-1.0/src/flipbook/Makefile ivtools-1.0/src/flipbook/README ivtools-1.0/src/flipbook/main.c ivtools-1.0/src/glyphs/Imakefile ivtools-1.0/src/glyphs/Makefile ivtools-1.0/src/glyphs/README ivtools-1.0/src/glyphs/bdvtable/Imakefile ivtools-1.0/src/glyphs/bdvtable/Makefile ivtools-1.0/src/glyphs/bdvtable/main.c ivtools-1.0/src/glyphs/examples3.1/Imakefile ivtools-1.0/src/glyphs/examples3.1/Makefile ivtools-1.0/src/glyphs/examples3.1/README ivtools-1.0/src/glyphs/examples3.1/box1/Imakefile ivtools-1.0/src/glyphs/examples3.1/box1/Makefile ivtools-1.0/src/glyphs/examples3.1/box1/main.c ivtools-1.0/src/glyphs/examples3.1/box2/Imakefile ivtools-1.0/src/glyphs/examples3.1/box2/Makefile ivtools-1.0/src/glyphs/examples3.1/box2/main.c ivtools-1.0/src/glyphs/examples3.1/box3/Imakefile ivtools-1.0/src/glyphs/examples3.1/box3/Makefile ivtools-1.0/src/glyphs/examples3.1/box3/main.c ivtools-1.0/src/glyphs/examples3.1/box4/Imakefile ivtools-1.0/src/glyphs/examples3.1/box4/Makefile ivtools-1.0/src/glyphs/examples3.1/box4/main.c ivtools-1.0/src/glyphs/examples3.1/box5/Imakefile ivtools-1.0/src/glyphs/examples3.1/box5/Makefile ivtools-1.0/src/glyphs/examples3.1/box5/main.c ivtools-1.0/src/glyphs/examples3.1/button1/Imakefile ivtools-1.0/src/glyphs/examples3.1/button1/Makefile ivtools-1.0/src/glyphs/examples3.1/button1/main.c ivtools-1.0/src/glyphs/examples3.1/button2/Imakefile ivtools-1.0/src/glyphs/examples3.1/button2/Makefile ivtools-1.0/src/glyphs/examples3.1/button2/jello.tif ivtools-1.0/src/glyphs/examples3.1/button2/main.c ivtools-1.0/src/glyphs/examples3.1/button3/Imakefile ivtools-1.0/src/glyphs/examples3.1/button3/Makefile ivtools-1.0/src/glyphs/examples3.1/button3/main.c ivtools-1.0/src/glyphs/examples3.1/bvalue/Imakefile ivtools-1.0/src/glyphs/examples3.1/bvalue/Makefile ivtools-1.0/src/glyphs/examples3.1/bvalue/main.c ivtools-1.0/src/glyphs/examples3.1/circle/Imakefile ivtools-1.0/src/glyphs/examples3.1/circle/Makefile ivtools-1.0/src/glyphs/examples3.1/circle/main.c ivtools-1.0/src/glyphs/examples3.1/drag/Imakefile ivtools-1.0/src/glyphs/examples3.1/drag/Makefile ivtools-1.0/src/glyphs/examples3.1/drag/main.c ivtools-1.0/src/glyphs/examples3.1/fonts/Imakefile ivtools-1.0/src/glyphs/examples3.1/fonts/Makefile ivtools-1.0/src/glyphs/examples3.1/fonts/main.c ivtools-1.0/src/glyphs/examples3.1/himom/Imakefile ivtools-1.0/src/glyphs/examples3.1/himom/Makefile ivtools-1.0/src/glyphs/examples3.1/himom/main.c ivtools-1.0/src/glyphs/examples3.1/image/Imakefile ivtools-1.0/src/glyphs/examples3.1/image/Makefile ivtools-1.0/src/glyphs/examples3.1/image/main.c ivtools-1.0/src/glyphs/examples3.1/ips/Imakefile ivtools-1.0/src/glyphs/examples3.1/ips/Makefile ivtools-1.0/src/glyphs/examples3.1/ips/figure.c ivtools-1.0/src/glyphs/examples3.1/ips/figure.h ivtools-1.0/src/glyphs/examples3.1/ips/idraw.c ivtools-1.0/src/glyphs/examples3.1/ips/idraw.h ivtools-1.0/src/glyphs/examples3.1/ips/main.c ivtools-1.0/src/glyphs/examples3.1/menu/Imakefile ivtools-1.0/src/glyphs/examples3.1/menu/Makefile ivtools-1.0/src/glyphs/examples3.1/menu/main.c ivtools-1.0/src/glyphs/examples3.1/patch/Imakefile ivtools-1.0/src/glyphs/examples3.1/patch/Makefile ivtools-1.0/src/glyphs/examples3.1/patch/main.c ivtools-1.0/src/glyphs/examples3.1/plot/Axis.c ivtools-1.0/src/glyphs/examples3.1/plot/Axis.h ivtools-1.0/src/glyphs/examples3.1/plot/Graph.c ivtools-1.0/src/glyphs/examples3.1/plot/Graph.h ivtools-1.0/src/glyphs/examples3.1/plot/Imakefile ivtools-1.0/src/glyphs/examples3.1/plot/Makefile ivtools-1.0/src/glyphs/examples3.1/plot/Plot.c ivtools-1.0/src/glyphs/examples3.1/plot/Plot.h ivtools-1.0/src/glyphs/examples3.1/plot/README ivtools-1.0/src/glyphs/examples3.1/plot/main.c ivtools-1.0/src/glyphs/examples3.1/plot/rpc_read.c ivtools-1.0/src/glyphs/examples3.1/plot/rpc_read.h ivtools-1.0/src/glyphs/examples3.1/preview/Imakefile ivtools-1.0/src/glyphs/examples3.1/preview/Makefile ivtools-1.0/src/glyphs/examples3.1/preview/input ivtools-1.0/src/glyphs/examples3.1/preview/main.c ivtools-1.0/src/glyphs/examples3.1/print/Imakefile ivtools-1.0/src/glyphs/examples3.1/print/Makefile ivtools-1.0/src/glyphs/examples3.1/print/main.c ivtools-1.0/src/glyphs/examples3.1/rubband/Imakefile ivtools-1.0/src/glyphs/examples3.1/rubband/Makefile ivtools-1.0/src/glyphs/examples3.1/rubband/main.c ivtools-1.0/src/glyphs/examples3.1/sendplot/Imakefile ivtools-1.0/src/glyphs/examples3.1/sendplot/Makefile ivtools-1.0/src/glyphs/examples3.1/sendplot/main.c ivtools-1.0/src/glyphs/examples3.1/sendplot/rpc_write.c ivtools-1.0/src/glyphs/examples3.1/sendplot/rpc_write.h ivtools-1.0/src/glyphs/examples3.1/zoomer/Imakefile ivtools-1.0/src/glyphs/examples3.1/zoomer/Makefile ivtools-1.0/src/glyphs/examples3.1/zoomer/main.c ivtools-1.0/src/glyphs/formdemo/Imakefile ivtools-1.0/src/glyphs/formdemo/Makefile ivtools-1.0/src/glyphs/formdemo/main.c ivtools-1.0/src/glyphs/gclock/Imakefile ivtools-1.0/src/glyphs/gclock/Makefile ivtools-1.0/src/glyphs/gclock/main.c ivtools-1.0/src/glyphs/meter/Imakefile ivtools-1.0/src/glyphs/meter/Makefile ivtools-1.0/src/glyphs/meter/main.c ivtools-1.0/src/glyphs/morpher/Imakefile ivtools-1.0/src/glyphs/morpher/Makefile ivtools-1.0/src/glyphs/morpher/README ivtools-1.0/src/glyphs/morpher/balls ivtools-1.0/src/glyphs/morpher/glypheditor.c ivtools-1.0/src/glyphs/morpher/glypheditor.h ivtools-1.0/src/glyphs/morpher/glyphviewer.c ivtools-1.0/src/glyphs/morpher/glyphviewer.h ivtools-1.0/src/glyphs/morpher/icons/cont_play ivtools-1.0/src/glyphs/morpher/icons/fast_forward ivtools-1.0/src/glyphs/morpher/icons/fast_reverse ivtools-1.0/src/glyphs/morpher/icons/forward_pause ivtools-1.0/src/glyphs/morpher/icons/forward_play ivtools-1.0/src/glyphs/morpher/icons/new-record ivtools-1.0/src/glyphs/morpher/icons/panel ivtools-1.0/src/glyphs/morpher/icons/pause ivtools-1.0/src/glyphs/morpher/icons/record ivtools-1.0/src/glyphs/morpher/icons/reverse_pause ivtools-1.0/src/glyphs/morpher/icons/reverse_play ivtools-1.0/src/glyphs/morpher/main.c ivtools-1.0/src/glyphs/morpher/man.0 ivtools-1.0/src/glyphs/morpher/man.1 ivtools-1.0/src/glyphs/morpher/morpher.c ivtools-1.0/src/glyphs/morpher/morpher.h ivtools-1.0/src/glyphs/morpher/rect ivtools-1.0/src/glyphs/radiogroup/Imakefile ivtools-1.0/src/glyphs/radiogroup/Makefile ivtools-1.0/src/glyphs/radiogroup/main.c ivtools-1.0/src/glyphs/scrollable/Imakefile ivtools-1.0/src/glyphs/scrollable/Makefile ivtools-1.0/src/glyphs/scrollable/main.c ivtools-1.0/src/glyphs/scrollfield/Imakefile ivtools-1.0/src/glyphs/scrollfield/Makefile ivtools-1.0/src/glyphs/scrollfield/main.c ivtools-1.0/src/glyphs/strchooser/Imakefile ivtools-1.0/src/glyphs/strchooser/Makefile ivtools-1.0/src/glyphs/strchooser/main.c ivtools-1.0/src/glyphs/timestamp/Imakefile ivtools-1.0/src/glyphs/timestamp/Makefile ivtools-1.0/src/glyphs/timestamp/main.c ivtools-1.0/src/glyphterp/Imakefile ivtools-1.0/src/glyphterp/Makefile ivtools-1.0/src/glyphterp/main.c ivtools-1.0/src/graphdraw/Imakefile ivtools-1.0/src/graphdraw/Makefile ivtools-1.0/src/graphdraw/README ivtools-1.0/src/graphdraw/main.c ivtools-1.0/src/html/Imakefile ivtools-1.0/src/html/Makefile ivtools-1.0/src/html/README ivtools-1.0/src/html/getman31.sh ivtools-1.0/src/html/getrefman31.sh ivtools-1.0/src/html/templates/CLASS.html.tmpl ivtools-1.0/src/html/templates/Imakefile ivtools-1.0/src/html/templates/Makefile ivtools-1.0/src/html/templates/bug_m.flt ivtools-1.0/src/html/templates/dr_m.flt ivtools-1.0/src/html/templates/err_m.flt ivtools-1.0/src/html/templates/in_m.flt ivtools-1.0/src/html/templates/includeflt.flt ivtools-1.0/src/html/templates/index.html.tmpl ivtools-1.0/src/html/templates/linkflt.flt ivtools-1.0/src/html/templates/other.html.tmpl ivtools-1.0/src/html/templates/out_m.flt ivtools-1.0/src/html/templates/ret_m.flt ivtools-1.0/src/html/templates/smindex.html.tmpl ivtools-1.0/src/html/templates/time.flt ivtools-1.0/src/iclass/Imakefile ivtools-1.0/src/iclass/Makefile ivtools-1.0/src/iclass/classbuffer.c ivtools-1.0/src/iclass/classbuffer.h ivtools-1.0/src/iclass/classeditor.c ivtools-1.0/src/iclass/classeditor.h ivtools-1.0/src/iclass/classinfo.c ivtools-1.0/src/iclass/classinfo.h ivtools-1.0/src/iclass/dialogs.c ivtools-1.0/src/iclass/dialogs.h ivtools-1.0/src/iclass/direct.c ivtools-1.0/src/iclass/direct.h ivtools-1.0/src/iclass/globals.c ivtools-1.0/src/iclass/globals.h ivtools-1.0/src/iclass/iclass.c ivtools-1.0/src/iclass/iclass.h ivtools-1.0/src/iclass/main.c ivtools-1.0/src/idemo/Idemo.defaults ivtools-1.0/src/idemo/Imakefile ivtools-1.0/src/idemo/Makefile ivtools-1.0/src/idemo/main.c ivtools-1.0/src/idraw/Imakefile ivtools-1.0/src/idraw/Makefile ivtools-1.0/src/idraw/README ivtools-1.0/src/idraw/main.c ivtools-1.0/src/include/Dispatch/Imakefile ivtools-1.0/src/include/Dispatch/Makefile ivtools-1.0/src/include/Dispatch/_defines.h ivtools-1.0/src/include/Dispatch/_undefs.h ivtools-1.0/src/include/Dispatch/dispatcher.h ivtools-1.0/src/include/Dispatch/dp.h ivtools-1.0/src/include/Dispatch/enter-scope.h ivtools-1.0/src/include/Dispatch/iocallback.h ivtools-1.0/src/include/Dispatch/iohandler.h ivtools-1.0/src/include/Dispatch/iostreamb.h ivtools-1.0/src/include/Dispatch/leave-scope.h ivtools-1.0/src/include/Dispatch/rpcbuf.h ivtools-1.0/src/include/Dispatch/rpchdr.h ivtools-1.0/src/include/Dispatch/rpcpeer.h ivtools-1.0/src/include/Dispatch/rpcreader.h ivtools-1.0/src/include/Dispatch/rpcregistry.h ivtools-1.0/src/include/Dispatch/rpcservice.h ivtools-1.0/src/include/Dispatch/rpcstream.h ivtools-1.0/src/include/Dispatch/rpcwriter.h ivtools-1.0/src/include/IV-2_6/Imakefile ivtools-1.0/src/include/IV-2_6/InterViews/Imakefile ivtools-1.0/src/include/IV-2_6/InterViews/Makefile ivtools-1.0/src/include/IV-2_6/InterViews/adjuster.h ivtools-1.0/src/include/IV-2_6/InterViews/alignment.h ivtools-1.0/src/include/IV-2_6/InterViews/banner.h ivtools-1.0/src/include/IV-2_6/InterViews/border.h ivtools-1.0/src/include/IV-2_6/InterViews/box.h ivtools-1.0/src/include/IV-2_6/InterViews/button.h ivtools-1.0/src/include/IV-2_6/InterViews/compeditor.h ivtools-1.0/src/include/IV-2_6/InterViews/control.h ivtools-1.0/src/include/IV-2_6/InterViews/deck.h ivtools-1.0/src/include/IV-2_6/InterViews/defs.h ivtools-1.0/src/include/IV-2_6/InterViews/dialog.h ivtools-1.0/src/include/IV-2_6/InterViews/filebrowser.h ivtools-1.0/src/include/IV-2_6/InterViews/filechooser.h ivtools-1.0/src/include/IV-2_6/InterViews/frame.h ivtools-1.0/src/include/IV-2_6/InterViews/glue.h ivtools-1.0/src/include/IV-2_6/InterViews/ihandler.h ivtools-1.0/src/include/IV-2_6/InterViews/interactor.h ivtools-1.0/src/include/IV-2_6/InterViews/iwindow.h ivtools-1.0/src/include/IV-2_6/InterViews/matcheditor.h ivtools-1.0/src/include/IV-2_6/InterViews/menu.h ivtools-1.0/src/include/IV-2_6/InterViews/message.h ivtools-1.0/src/include/IV-2_6/InterViews/minmax.h ivtools-1.0/src/include/IV-2_6/InterViews/paint.h ivtools-1.0/src/include/IV-2_6/InterViews/painter.h ivtools-1.0/src/include/IV-2_6/InterViews/panner.h ivtools-1.0/src/include/IV-2_6/InterViews/perspective.h ivtools-1.0/src/include/IV-2_6/InterViews/rubband.h ivtools-1.0/src/include/IV-2_6/InterViews/rubcurve.h ivtools-1.0/src/include/IV-2_6/InterViews/rubgroup.h ivtools-1.0/src/include/IV-2_6/InterViews/rubline.h ivtools-1.0/src/include/IV-2_6/InterViews/rubrect.h ivtools-1.0/src/include/IV-2_6/InterViews/rubverts.h ivtools-1.0/src/include/IV-2_6/InterViews/scene.h ivtools-1.0/src/include/IV-2_6/InterViews/scrollbar.h ivtools-1.0/src/include/IV-2_6/InterViews/scroller.h ivtools-1.0/src/include/IV-2_6/InterViews/sensor.h ivtools-1.0/src/include/IV-2_6/InterViews/shape.h ivtools-1.0/src/include/IV-2_6/InterViews/strbrowser.h ivtools-1.0/src/include/IV-2_6/InterViews/strchooser.h ivtools-1.0/src/include/IV-2_6/InterViews/streditor.h ivtools-1.0/src/include/IV-2_6/InterViews/subject.h ivtools-1.0/src/include/IV-2_6/InterViews/textbuffer.h ivtools-1.0/src/include/IV-2_6/InterViews/textdisplay.h ivtools-1.0/src/include/IV-2_6/InterViews/texteditor.h ivtools-1.0/src/include/IV-2_6/InterViews/textstyle.h ivtools-1.0/src/include/IV-2_6/InterViews/tray.h ivtools-1.0/src/include/IV-2_6/InterViews/viewport.h ivtools-1.0/src/include/IV-2_6/InterViews/world.h ivtools-1.0/src/include/IV-2_6/Makefile ivtools-1.0/src/include/IV-2_6/_enter.h ivtools-1.0/src/include/IV-2_6/_leave.h ivtools-1.0/src/include/IV-2_6/_names.h ivtools-1.0/src/include/IV-3_1/Imakefile ivtools-1.0/src/include/IV-3_1/InterViews ivtools-1.0/src/include/IV-X11/Imakefile ivtools-1.0/src/include/IV-X11/Makefile ivtools-1.0/src/include/IV-X11/Xdefs.h ivtools-1.0/src/include/IV-X11/Xext.h ivtools-1.0/src/include/IV-X11/Xlib.h ivtools-1.0/src/include/IV-X11/Xundefs.h ivtools-1.0/src/include/IV-X11/Xutil.h ivtools-1.0/src/include/IV-X11/xbitmap.h ivtools-1.0/src/include/IV-X11/xbrush.h ivtools-1.0/src/include/IV-X11/xcanvas.h ivtools-1.0/src/include/IV-X11/xcolor.h ivtools-1.0/src/include/IV-X11/xcursor.h ivtools-1.0/src/include/IV-X11/xdisplay.h ivtools-1.0/src/include/IV-X11/xdrag.h ivtools-1.0/src/include/IV-X11/xevent.h ivtools-1.0/src/include/IV-X11/xfont.h ivtools-1.0/src/include/IV-X11/xpainter.h ivtools-1.0/src/include/IV-X11/xpattern.h ivtools-1.0/src/include/IV-X11/xraster.h ivtools-1.0/src/include/IV-X11/xselection.h ivtools-1.0/src/include/IV-X11/xwindow.h ivtools-1.0/src/include/IV-look/Imakefile ivtools-1.0/src/include/IV-look/Makefile ivtools-1.0/src/include/IV-look/bevel.h ivtools-1.0/src/include/IV-look/browser.h ivtools-1.0/src/include/IV-look/button.h ivtools-1.0/src/include/IV-look/choice.h ivtools-1.0/src/include/IV-look/dialogs.h ivtools-1.0/src/include/IV-look/fbrowser.h ivtools-1.0/src/include/IV-look/fchooser.h ivtools-1.0/src/include/IV-look/field.h ivtools-1.0/src/include/IV-look/kit.h ivtools-1.0/src/include/IV-look/menu.h ivtools-1.0/src/include/IV-look/mf_dialogs.h ivtools-1.0/src/include/IV-look/mf_kit.h ivtools-1.0/src/include/IV-look/mono_kit.h ivtools-1.0/src/include/IV-look/ol_dialogs.h ivtools-1.0/src/include/IV-look/ol_kit.h ivtools-1.0/src/include/IV-look/slider.h ivtools-1.0/src/include/IV-look/smf_kit.h ivtools-1.0/src/include/IV-look/stepper.h ivtools-1.0/src/include/IV-look/telltale.h ivtools-1.0/src/include/Imakefile ivtools-1.0/src/include/InterViews/Bitmaps/Imakefile ivtools-1.0/src/include/InterViews/Bitmaps/Makefile ivtools-1.0/src/include/InterViews/Bitmaps/big_checkmark.bm ivtools-1.0/src/include/InterViews/Bitmaps/checkmark.bm ivtools-1.0/src/include/InterViews/Bitmaps/chkbox.bm ivtools-1.0/src/include/InterViews/Bitmaps/chkboxBoth.bm ivtools-1.0/src/include/InterViews/Bitmaps/chkboxChosen.bm ivtools-1.0/src/include/InterViews/Bitmaps/chkboxHit.bm ivtools-1.0/src/include/InterViews/Bitmaps/dfast.bm ivtools-1.0/src/include/InterViews/Bitmaps/dfastMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/dmover.bm ivtools-1.0/src/include/InterViews/Bitmaps/dmoverHit.bm ivtools-1.0/src/include/InterViews/Bitmaps/dmoverMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/enlarge.bm ivtools-1.0/src/include/InterViews/Bitmaps/enlargeHit.bm ivtools-1.0/src/include/InterViews/Bitmaps/enlargeMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/hand.bm ivtools-1.0/src/include/InterViews/Bitmaps/handMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/ldfast.bm ivtools-1.0/src/include/InterViews/Bitmaps/ldfastMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/lfast.bm ivtools-1.0/src/include/InterViews/Bitmaps/lfastMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/lmover.bm ivtools-1.0/src/include/InterViews/Bitmaps/lmoverHit.bm ivtools-1.0/src/include/InterViews/Bitmaps/lmoverMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/lufast.bm ivtools-1.0/src/include/InterViews/Bitmaps/lufastMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/page.bm ivtools-1.0/src/include/InterViews/Bitmaps/pageBoth.bm ivtools-1.0/src/include/InterViews/Bitmaps/pageChosen.bm ivtools-1.0/src/include/InterViews/Bitmaps/pageHit.bm ivtools-1.0/src/include/InterViews/Bitmaps/radio.bm ivtools-1.0/src/include/InterViews/Bitmaps/radioBoth.bm ivtools-1.0/src/include/InterViews/Bitmaps/radioChosen.bm ivtools-1.0/src/include/InterViews/Bitmaps/radioHit.bm ivtools-1.0/src/include/InterViews/Bitmaps/radioMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/rdfast.bm ivtools-1.0/src/include/InterViews/Bitmaps/rdfastMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/reducer.bm ivtools-1.0/src/include/InterViews/Bitmaps/reducerHit.bm ivtools-1.0/src/include/InterViews/Bitmaps/reducerMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/rfast.bm ivtools-1.0/src/include/InterViews/Bitmaps/rfastMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/rmover.bm ivtools-1.0/src/include/InterViews/Bitmaps/rmoverHit.bm ivtools-1.0/src/include/InterViews/Bitmaps/rmoverMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/rufast.bm ivtools-1.0/src/include/InterViews/Bitmaps/rufastMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/ufast.bm ivtools-1.0/src/include/InterViews/Bitmaps/ufastMask.bm ivtools-1.0/src/include/InterViews/Bitmaps/umover.bm ivtools-1.0/src/include/InterViews/Bitmaps/umoverHit.bm ivtools-1.0/src/include/InterViews/Bitmaps/umoverMask.bm ivtools-1.0/src/include/InterViews/Imakefile ivtools-1.0/src/include/InterViews/Makefile ivtools-1.0/src/include/InterViews/_defines.h ivtools-1.0/src/include/InterViews/_enter.h ivtools-1.0/src/include/InterViews/_leave.h ivtools-1.0/src/include/InterViews/_names.h ivtools-1.0/src/include/InterViews/_undefs.h ivtools-1.0/src/include/InterViews/action.h ivtools-1.0/src/include/InterViews/adjust.h ivtools-1.0/src/include/InterViews/aggr.h ivtools-1.0/src/include/InterViews/align.h ivtools-1.0/src/include/InterViews/alloctbl.h ivtools-1.0/src/include/InterViews/arraycomp.h ivtools-1.0/src/include/InterViews/background.h ivtools-1.0/src/include/InterViews/bitmap.h ivtools-1.0/src/include/InterViews/boolean.h ivtools-1.0/src/include/InterViews/border.h ivtools-1.0/src/include/InterViews/box.h ivtools-1.0/src/include/InterViews/brush.h ivtools-1.0/src/include/InterViews/canvas.h ivtools-1.0/src/include/InterViews/character.h ivtools-1.0/src/include/InterViews/color.h ivtools-1.0/src/include/InterViews/composition.h ivtools-1.0/src/include/InterViews/compositor.h ivtools-1.0/src/include/InterViews/coord.h ivtools-1.0/src/include/InterViews/cursor.h ivtools-1.0/src/include/InterViews/debug.h ivtools-1.0/src/include/InterViews/deck.h ivtools-1.0/src/include/InterViews/dialog.h ivtools-1.0/src/include/InterViews/display.h ivtools-1.0/src/include/InterViews/drag.h ivtools-1.0/src/include/InterViews/enter-scope.h ivtools-1.0/src/include/InterViews/event.h ivtools-1.0/src/include/InterViews/font.h ivtools-1.0/src/include/InterViews/geometry.h ivtools-1.0/src/include/InterViews/glcontext.h ivtools-1.0/src/include/InterViews/glue.h ivtools-1.0/src/include/InterViews/glyph.h ivtools-1.0/src/include/InterViews/group.h ivtools-1.0/src/include/InterViews/handler.h ivtools-1.0/src/include/InterViews/hit.h ivtools-1.0/src/include/InterViews/image.h ivtools-1.0/src/include/InterViews/input.h ivtools-1.0/src/include/InterViews/iv.h ivtools-1.0/src/include/InterViews/label.h ivtools-1.0/src/include/InterViews/layout.h ivtools-1.0/src/include/InterViews/leave-scope.h ivtools-1.0/src/include/InterViews/lrmarker.h ivtools-1.0/src/include/InterViews/monoglyph.h ivtools-1.0/src/include/InterViews/observe.h ivtools-1.0/src/include/InterViews/page.h ivtools-1.0/src/include/InterViews/patch.h ivtools-1.0/src/include/InterViews/pattern.h ivtools-1.0/src/include/InterViews/place.h ivtools-1.0/src/include/InterViews/polyglyph.h ivtools-1.0/src/include/InterViews/printer.h ivtools-1.0/src/include/InterViews/psfont.h ivtools-1.0/src/include/InterViews/raster.h ivtools-1.0/src/include/InterViews/regexp.h ivtools-1.0/src/include/InterViews/reqerr.h ivtools-1.0/src/include/InterViews/resource.h ivtools-1.0/src/include/InterViews/rule.h ivtools-1.0/src/include/InterViews/scrbox.h ivtools-1.0/src/include/InterViews/selection.h ivtools-1.0/src/include/InterViews/session.h ivtools-1.0/src/include/InterViews/shadow.h ivtools-1.0/src/include/InterViews/simplecomp.h ivtools-1.0/src/include/InterViews/stencil.h ivtools-1.0/src/include/InterViews/style.h ivtools-1.0/src/include/InterViews/superpose.h ivtools-1.0/src/include/InterViews/target.h ivtools-1.0/src/include/InterViews/telltale.h ivtools-1.0/src/include/InterViews/texcomp.h ivtools-1.0/src/include/InterViews/tformsetter.h ivtools-1.0/src/include/InterViews/tiff.h ivtools-1.0/src/include/InterViews/tile.h ivtools-1.0/src/include/InterViews/transformer.h ivtools-1.0/src/include/InterViews/window.h ivtools-1.0/src/include/InterViews/xymarker.h ivtools-1.0/src/include/Makefile ivtools-1.0/src/include/OS/Imakefile ivtools-1.0/src/include/OS/Makefile ivtools-1.0/src/include/OS/_defines.h ivtools-1.0/src/include/OS/_undefs.h ivtools-1.0/src/include/OS/directory.h ivtools-1.0/src/include/OS/enter-scope.h ivtools-1.0/src/include/OS/file.h ivtools-1.0/src/include/OS/host.h ivtools-1.0/src/include/OS/leave-scope.h ivtools-1.0/src/include/OS/list.h ivtools-1.0/src/include/OS/math.h ivtools-1.0/src/include/OS/memory.h ivtools-1.0/src/include/OS/os.h ivtools-1.0/src/include/OS/string.h ivtools-1.0/src/include/OS/table.h ivtools-1.0/src/include/OS/table2.h ivtools-1.0/src/include/OS/types.h ivtools-1.0/src/include/OS/ustring.h ivtools-1.0/src/include/TIFF/Imakefile ivtools-1.0/src/include/TIFF/Makefile ivtools-1.0/src/include/TIFF/format.h ivtools-1.0/src/include/TIFF/tiff.h ivtools-1.0/src/include/TIFF/tiffio.h ivtools-1.0/src/include/Unidraw/Commands/Imakefile ivtools-1.0/src/include/Unidraw/Commands/Makefile ivtools-1.0/src/include/Unidraw/Commands/align.h ivtools-1.0/src/include/Unidraw/Commands/brushcmd.h ivtools-1.0/src/include/Unidraw/Commands/catcmds.h ivtools-1.0/src/include/Unidraw/Commands/colorcmd.h ivtools-1.0/src/include/Unidraw/Commands/command.h ivtools-1.0/src/include/Unidraw/Commands/data.h ivtools-1.0/src/include/Unidraw/Commands/datas.h ivtools-1.0/src/include/Unidraw/Commands/dirty.h ivtools-1.0/src/include/Unidraw/Commands/edit.h ivtools-1.0/src/include/Unidraw/Commands/font.h ivtools-1.0/src/include/Unidraw/Commands/import.h ivtools-1.0/src/include/Unidraw/Commands/macro.h ivtools-1.0/src/include/Unidraw/Commands/nop.h ivtools-1.0/src/include/Unidraw/Commands/patcmd.h ivtools-1.0/src/include/Unidraw/Commands/struct.h ivtools-1.0/src/include/Unidraw/Commands/transforms.h ivtools-1.0/src/include/Unidraw/Commands/viewcmds.h ivtools-1.0/src/include/Unidraw/Components/Imakefile ivtools-1.0/src/include/Unidraw/Components/Makefile ivtools-1.0/src/include/Unidraw/Components/cglue.h ivtools-1.0/src/include/Unidraw/Components/component.h ivtools-1.0/src/include/Unidraw/Components/compview.h ivtools-1.0/src/include/Unidraw/Components/connector.h ivtools-1.0/src/include/Unidraw/Components/csolver.h ivtools-1.0/src/include/Unidraw/Components/ellipse.h ivtools-1.0/src/include/Unidraw/Components/externview.h ivtools-1.0/src/include/Unidraw/Components/grcomp.h ivtools-1.0/src/include/Unidraw/Components/grview.h ivtools-1.0/src/include/Unidraw/Components/gvupdater.h ivtools-1.0/src/include/Unidraw/Components/line.h ivtools-1.0/src/include/Unidraw/Components/link.h ivtools-1.0/src/include/Unidraw/Components/pad.h ivtools-1.0/src/include/Unidraw/Components/pin.h ivtools-1.0/src/include/Unidraw/Components/polygon.h ivtools-1.0/src/include/Unidraw/Components/psformat.h ivtools-1.0/src/include/Unidraw/Components/psview.h ivtools-1.0/src/include/Unidraw/Components/rastercomp.h ivtools-1.0/src/include/Unidraw/Components/rect.h ivtools-1.0/src/include/Unidraw/Components/slot.h ivtools-1.0/src/include/Unidraw/Components/spline.h ivtools-1.0/src/include/Unidraw/Components/stencilcomp.h ivtools-1.0/src/include/Unidraw/Components/text.h ivtools-1.0/src/include/Unidraw/Components/vertices.h ivtools-1.0/src/include/Unidraw/Graphic/Imakefile ivtools-1.0/src/include/Unidraw/Graphic/Makefile ivtools-1.0/src/include/Unidraw/Graphic/damage.h ivtools-1.0/src/include/Unidraw/Graphic/ellipses.h ivtools-1.0/src/include/Unidraw/Graphic/geomobjs.h ivtools-1.0/src/include/Unidraw/Graphic/graphic.h ivtools-1.0/src/include/Unidraw/Graphic/grblock.h ivtools-1.0/src/include/Unidraw/Graphic/lines.h ivtools-1.0/src/include/Unidraw/Graphic/picture.h ivtools-1.0/src/include/Unidraw/Graphic/polygons.h ivtools-1.0/src/include/Unidraw/Graphic/pspaint.h ivtools-1.0/src/include/Unidraw/Graphic/rasterrect.h ivtools-1.0/src/include/Unidraw/Graphic/splines.h ivtools-1.0/src/include/Unidraw/Graphic/ulabel.h ivtools-1.0/src/include/Unidraw/Graphic/ustencil.h ivtools-1.0/src/include/Unidraw/Graphic/util.h ivtools-1.0/src/include/Unidraw/Graphic/verts.h ivtools-1.0/src/include/Unidraw/Imakefile ivtools-1.0/src/include/Unidraw/Makefile ivtools-1.0/src/include/Unidraw/Tools/Imakefile ivtools-1.0/src/include/Unidraw/Tools/Makefile ivtools-1.0/src/include/Unidraw/Tools/connect.h ivtools-1.0/src/include/Unidraw/Tools/grcomptool.h ivtools-1.0/src/include/Unidraw/Tools/magnify.h ivtools-1.0/src/include/Unidraw/Tools/move.h ivtools-1.0/src/include/Unidraw/Tools/reshape.h ivtools-1.0/src/include/Unidraw/Tools/rotate.h ivtools-1.0/src/include/Unidraw/Tools/scale.h ivtools-1.0/src/include/Unidraw/Tools/select.h ivtools-1.0/src/include/Unidraw/Tools/stretch.h ivtools-1.0/src/include/Unidraw/Tools/tool.h ivtools-1.0/src/include/Unidraw/_defines.h ivtools-1.0/src/include/Unidraw/_undefs.h ivtools-1.0/src/include/Unidraw/catalog.h ivtools-1.0/src/include/Unidraw/classes.h ivtools-1.0/src/include/Unidraw/clipboard.h ivtools-1.0/src/include/Unidraw/creator.h ivtools-1.0/src/include/Unidraw/ctrlinfo.h ivtools-1.0/src/include/Unidraw/dialogs.h ivtools-1.0/src/include/Unidraw/editor.h ivtools-1.0/src/include/Unidraw/editorinfo.h ivtools-1.0/src/include/Unidraw/enter-scope.h ivtools-1.0/src/include/Unidraw/globals.h ivtools-1.0/src/include/Unidraw/grid.h ivtools-1.0/src/include/Unidraw/iterator.h ivtools-1.0/src/include/Unidraw/keymap.h ivtools-1.0/src/include/Unidraw/kybd.h ivtools-1.0/src/include/Unidraw/leave-scope.h ivtools-1.0/src/include/Unidraw/manip.h ivtools-1.0/src/include/Unidraw/manips.h ivtools-1.0/src/include/Unidraw/path.h ivtools-1.0/src/include/Unidraw/selection.h ivtools-1.0/src/include/Unidraw/statevar.h ivtools-1.0/src/include/Unidraw/statevars.h ivtools-1.0/src/include/Unidraw/stateview.h ivtools-1.0/src/include/Unidraw/stateviews.h ivtools-1.0/src/include/Unidraw/transfn.h ivtools-1.0/src/include/Unidraw/transfns.h ivtools-1.0/src/include/Unidraw/uarray.h ivtools-1.0/src/include/Unidraw/uctrl.h ivtools-1.0/src/include/Unidraw/uctrls.h ivtools-1.0/src/include/Unidraw/uformat.h ivtools-1.0/src/include/Unidraw/uhash.h ivtools-1.0/src/include/Unidraw/ulist.h ivtools-1.0/src/include/Unidraw/umap.h ivtools-1.0/src/include/Unidraw/unidraw.h ivtools-1.0/src/include/Unidraw/upage.h ivtools-1.0/src/include/Unidraw/viewer.h ivtools-1.0/src/include/ivstd/Imakefile ivtools-1.0/src/include/ivstd/Makefile ivtools-1.0/src/include/ivstd/fstream.h ivtools-1.0/src/include/ivstd/iosfwd ivtools-1.0/src/include/ivstd/iostream.h ivtools-1.0/src/include/ivstd/malloc.h ivtools-1.0/src/include/ivstd/math.h ivtools-1.0/src/include/ivstd/nan.h ivtools-1.0/src/include/ivstd/osfcn.h ivtools-1.0/src/include/ivstd/signal.h ivtools-1.0/src/include/ivstd/stdio.h ivtools-1.0/src/include/ivstd/stdlib.h ivtools-1.0/src/include/ivstd/stream.h ivtools-1.0/src/include/ivstd/string.h ivtools-1.0/src/include/ivstd/version.h ivtools-1.0/src/iueserv_/Imakefile ivtools-1.0/src/iueserv_/Makefile ivtools-1.0/src/iueserv_/README ivtools-1.0/src/iueserv_/main.c ivtools-1.0/src/ivtext/Imakefile ivtools-1.0/src/ivtext/Makefile ivtools-1.0/src/ivtext/README ivtools-1.0/src/ivtext/main.c ivtools-1.0/src/ivxt/Imakefile ivtools-1.0/src/ivxt/Xd.h ivtools-1.0/src/ivxt/Xud.h ivtools-1.0/src/ivxt/glyphwidget.h ivtools-1.0/src/ivxt/glyphwidgetP.h ivtools-1.0/src/ivxt/main.c ivtools-1.0/src/ivxt/widgetwindow.c ivtools-1.0/src/ivxt/widgetwindow.h ivtools-1.0/src/ivxt/xtintrinsic.h ivtools-1.0/src/ivxt/xtsession.c ivtools-1.0/src/ivxt/xtsession.h ivtools-1.0/src/ivxt/xtudsession.c ivtools-1.0/src/ivxt/xtudsession.h ivtools-1.0/src/man/Imakefile ivtools-1.0/src/man/Makefile ivtools-1.0/src/man/man1/Imakefile ivtools-1.0/src/man/man1/Makefile ivtools-1.0/src/man/man1/comdraw.1 ivtools-1.0/src/man/man1/comterp.1 ivtools-1.0/src/man/man1/dclock.1 ivtools-1.0/src/man/man1/drawtool.1 ivtools-1.0/src/man/man1/flipbook.1 ivtools-1.0/src/man/man1/graphdraw.1 ivtools-1.0/src/man/man1/iclass.1 ivtools-1.0/src/man/man1/idraw.1 ivtools-1.0/src/man/man1/ivmkmf.1 ivtools-1.0/src/man/man3/Adjuster.3 ivtools-1.0/src/man/man3/Banner.3 ivtools-1.0/src/man/man3/BasicDialog.3 ivtools-1.0/src/man/man3/Border.3 ivtools-1.0/src/man/man3/Box2_6.3 ivtools-1.0/src/man/man3/BrushCmd.3 ivtools-1.0/src/man/man3/Button2_6.3 ivtools-1.0/src/man/man3/CGlue.3 ivtools-1.0/src/man/man3/CSolver.3 ivtools-1.0/src/man/man3/Catalog.3 ivtools-1.0/src/man/man3/Clipboard.3 ivtools-1.0/src/man/man3/ColorCmd.3 ivtools-1.0/src/man/man3/Command.3 ivtools-1.0/src/man/man3/CompletionEditor.3 ivtools-1.0/src/man/man3/Component.3 ivtools-1.0/src/man/man3/ComponentView.3 ivtools-1.0/src/man/man3/ConnectTool.3 ivtools-1.0/src/man/man3/Connector.3 ivtools-1.0/src/man/man3/Control.3 ivtools-1.0/src/man/man3/ControlInfo.3 ivtools-1.0/src/man/man3/Creator.3 ivtools-1.0/src/man/man3/Damage.3 ivtools-1.0/src/man/man3/Data.3 ivtools-1.0/src/man/man3/Deck2_6.3 ivtools-1.0/src/man/man3/Dialog.3 ivtools-1.0/src/man/man3/Dispatcher.3 ivtools-1.0/src/man/man3/Editor.3 ivtools-1.0/src/man/man3/EditorInfo.3 ivtools-1.0/src/man/man3/EllipseComp.3 ivtools-1.0/src/man/man3/ExternView.3 ivtools-1.0/src/man/man3/FileBrowser.3 ivtools-1.0/src/man/man3/FileChooser.3 ivtools-1.0/src/man/man3/FontCmd.3 ivtools-1.0/src/man/man3/Frame.3 ivtools-1.0/src/man/man3/GVUpdater.3 ivtools-1.0/src/man/man3/Glue2_6.3 ivtools-1.0/src/man/man3/Graphic.3 ivtools-1.0/src/man/man3/GraphicBlock.3 ivtools-1.0/src/man/man3/GraphicComp.3 ivtools-1.0/src/man/man3/GraphicCompTool.3 ivtools-1.0/src/man/man3/GraphicView.3 ivtools-1.0/src/man/man3/Grid.3 ivtools-1.0/src/man/man3/IOCallback.3 ivtools-1.0/src/man/man3/IOHandler.3 ivtools-1.0/src/man/man3/Imakefile ivtools-1.0/src/man/man3/ImportCmd.3 ivtools-1.0/src/man/man3/Interactor.3 ivtools-1.0/src/man/man3/Iterator.3 ivtools-1.0/src/man/man3/KeyMap.3 ivtools-1.0/src/man/man3/LineComp.3 ivtools-1.0/src/man/man3/LinkComp.3 ivtools-1.0/src/man/man3/MacroCmd.3 ivtools-1.0/src/man/man3/MagnifyTool.3 ivtools-1.0/src/man/man3/Manipulator.3 ivtools-1.0/src/man/man3/MatchEditor.3 ivtools-1.0/src/man/man3/Menu2_6.3 ivtools-1.0/src/man/man3/Message.3 ivtools-1.0/src/man/man3/MoveTool.3 ivtools-1.0/src/man/man3/NOPCmd.3 ivtools-1.0/src/man/man3/PadComp.3 ivtools-1.0/src/man/man3/Page.3 ivtools-1.0/src/man/man3/Painter.3 ivtools-1.0/src/man/man3/Panner.3 ivtools-1.0/src/man/man3/Path.3 ivtools-1.0/src/man/man3/Pattern.3 ivtools-1.0/src/man/man3/PatternCmd.3 ivtools-1.0/src/man/man3/Perspective.3 ivtools-1.0/src/man/man3/Picture.3 ivtools-1.0/src/man/man3/PinComp.3 ivtools-1.0/src/man/man3/PolygonComp.3 ivtools-1.0/src/man/man3/PostScriptView.3 ivtools-1.0/src/man/man3/RasterComp.3 ivtools-1.0/src/man/man3/RasterRect.3 ivtools-1.0/src/man/man3/RectComp.3 ivtools-1.0/src/man/man3/Regexp.3 ivtools-1.0/src/man/man3/ReqErr.3 ivtools-1.0/src/man/man3/ReshapeTool.3 ivtools-1.0/src/man/man3/Resource.3 ivtools-1.0/src/man/man3/RotateTool.3 ivtools-1.0/src/man/man3/RpcHdr.3 ivtools-1.0/src/man/man3/RpcPeer.3 ivtools-1.0/src/man/man3/RpcReader.3 ivtools-1.0/src/man/man3/RpcRegistry.3 ivtools-1.0/src/man/man3/RpcService.3 ivtools-1.0/src/man/man3/RpcWriter.3 ivtools-1.0/src/man/man3/Rubband.3 ivtools-1.0/src/man/man3/ScaleTool.3 ivtools-1.0/src/man/man3/Scene.3 ivtools-1.0/src/man/man3/Scroller.3 ivtools-1.0/src/man/man3/SelectTool.3 ivtools-1.0/src/man/man3/Selection.3 ivtools-1.0/src/man/man3/Sensor.3 ivtools-1.0/src/man/man3/Shape.3 ivtools-1.0/src/man/man3/SlotComp.3 ivtools-1.0/src/man/man3/SplineComp.3 ivtools-1.0/src/man/man3/StateVar.3 ivtools-1.0/src/man/man3/StateVarView.3 ivtools-1.0/src/man/man3/StencilComp.3 ivtools-1.0/src/man/man3/StrBrowser.3 ivtools-1.0/src/man/man3/StrChooser.3 ivtools-1.0/src/man/man3/StretchTool.3 ivtools-1.0/src/man/man3/StringEditor.3 ivtools-1.0/src/man/man3/Subject.3 ivtools-1.0/src/man/man3/TextBuffer.3 ivtools-1.0/src/man/man3/TextComp.3 ivtools-1.0/src/man/man3/TextDisplay.3 ivtools-1.0/src/man/man3/TextEditor.3 ivtools-1.0/src/man/man3/Tool.3 ivtools-1.0/src/man/man3/TransferFunct.3 ivtools-1.0/src/man/man3/Tray.3 ivtools-1.0/src/man/man3/UArray.3 ivtools-1.0/src/man/man3/UControl.3 ivtools-1.0/src/man/man3/UHashTable.3 ivtools-1.0/src/man/man3/ULabel.3 ivtools-1.0/src/man/man3/UList.3 ivtools-1.0/src/man/man3/UMap.3 ivtools-1.0/src/man/man3/UStencil.3 ivtools-1.0/src/man/man3/Unidraw.3 ivtools-1.0/src/man/man3/UnidrawIntro.3 ivtools-1.0/src/man/man3/Vertices.3 ivtools-1.0/src/man/man3/VerticesComp.3 ivtools-1.0/src/man/man3/Viewer.3 ivtools-1.0/src/man/man3/Viewport.3 ivtools-1.0/src/man/man3/World.3 ivtools-1.0/src/man/man3/align.3 ivtools-1.0/src/man/man3/catcmds.3 ivtools-1.0/src/man/man3/classes.3 ivtools-1.0/src/man/man3/datas.3 ivtools-1.0/src/man/man3/edit.3 ivtools-1.0/src/man/man3/ellipses.3 ivtools-1.0/src/man/man3/geomobjs.3 ivtools-1.0/src/man/man3/globals.3 ivtools-1.0/src/man/man3/iostreamb.3 ivtools-1.0/src/man/man3/kybd.3 ivtools-1.0/src/man/man3/lines.3 ivtools-1.0/src/man/man3/manips.3 ivtools-1.0/src/man/man3/polygons.3 ivtools-1.0/src/man/man3/pspaint.3 ivtools-1.0/src/man/man3/rpcbuf.3 ivtools-1.0/src/man/man3/rpcstream.3 ivtools-1.0/src/man/man3/splines.3 ivtools-1.0/src/man/man3/statevars.3 ivtools-1.0/src/man/man3/stateviews.3 ivtools-1.0/src/man/man3/struct.3 ivtools-1.0/src/man/man3/transfns.3 ivtools-1.0/src/man/man3/transforms.3 ivtools-1.0/src/man/man3/uctrls.3 ivtools-1.0/src/man/man3/viewcmds.3 ivtools-1.0/src/man/refman3.1/refman.PS ivtools-1.0/src/scripts/Imakefile ivtools-1.0/src/scripts/Makefile ivtools-1.0/src/scripts/bsdinst.sh ivtools-1.0/src/scripts/chgsuffix.sh ivtools-1.0/src/scripts/cntsrclines.bash ivtools-1.0/src/scripts/config.guess ivtools-1.0/src/scripts/config.sub ivtools-1.0/src/scripts/cpu.sh ivtools-1.0/src/scripts/install-sh ivtools-1.0/src/scripts/ivcd.cpp ivtools-1.0/src/scripts/ivct.cpp ivtools-1.0/src/scripts/ivds.cpp ivtools-1.0/src/scripts/ivdt.cpp ivtools-1.0/src/scripts/ivfb.cpp ivtools-1.0/src/scripts/ivgd.cpp ivtools-1.0/src/scripts/ivgetjpg.bash ivtools-1.0/src/scripts/ivmkmf.cpp ivtools-1.0/src/scripts/ivtiftopnm.bash ivtools-1.0/src/scripts/mkdirhier.sh ivtools-1.0/src/scripts/mkgif89a.bash ivtools-1.0/src/scripts/mkgif89ac.bash ivtools-1.0/src/scripts/pnmtopgm.sh ivtools-1.0/src/tests/Imakefile ivtools-1.0/src/tests/Makefile ivtools-1.0/src/tests/y2k/Imakefile ivtools-1.0/src/tests/y2k/Makefile ivtools-1.0/src/tests/y2k/y2ktest.cc ivtools-1.0/src/utils/Imakefile ivtools-1.0/src/utils/Makefile ivtools-1.0/src/utils/downloader.cc ivtools-1.0/src/utils/downloader.h ivtools-1.0/src/utils/ftp.cc ivtools-1.0/src/utils/ftp.h ivtools-1.0/src/utils/http.cc ivtools-1.0/src/utils/http.h ivtools-1.0/src/utils/ivdl.cc ivtools-1.0/src/utils/ivtmpnam.c ivtools-1.0/src/utils/parse.h ivtools-1.0/src/utils/readwrite.h ivtools-1.0/src/utils/sockets.cc ivtools-1.0/src/utils/sockets.h ivtools-1.0/src/utils/stdcmapppm.c ivtools-1.0/src/utils/thrower.cc ivtools-1.0/src/utils/thrower.h ivtools-doc/ivtools-1.0-README.txt0000644000076500007650000004367307571203534017356 0ustar scottscott00000000000000 README for ivtools 1.0 This directory contains a release of ivtools 1.0.7. You should read the rest of this file for information on what ivtools is and the INSTALL file for instructions on how to build it. The overall copyright and permission notice for ivtools can be found in the COPYRIGHT file in this directory. It is similar to the X11 copyright, otherwise known as non-copylefted freeware. * What is ivtools?: Online documentation (including an FAQ) is available for ivtools at: http://www.ivtools.org/ivtools/doc/ ivtools is a layered collection of application frameworks for building custom drawing editors and spatial data servers. It incorporates a backward compatible copy of the original InterViews and Unidraw class libraries and sample programs (from 3.2a.tar.Z), augmented with new class libraries and sample programs for a wide variety of generic spatial data applications. ivtools comprises four sets of interrelated capabilities useful to application programmers. The first set is the libraries and example programs borrowed whole from InterViews 3.1. The second set is for reusing and extending the light-weight glyph objects of InterViews 3.1 which embody a lot of the capability of TeX. The third set reuses and extends the Unidraw library (Unidraw is a major portion of the overall InterViews 3.1 release that provides an application framework for custom drawing editors). The fourth set adds a command interpreter and server mechanism to ivtools, and demonstrates these capabilities with text, glyph, and graphic front-ends. To get more of an overview of these layers you can read: http://www.ivtools.org/ivtools/ivtools-layers.html. These are the libraries and example programs borrowed straight from InterViews 3.1: IV library of InterView 3.1, InterViews 2.6, Dispatch, OS, and TIFF objects dclock digital clock with fading digits iclass C++ class browser idemo glyph demo These are the libraries and example programs that make up the glyph part of ivtools (programs in the glyphs directory): IVGlyph library of Glyph derived classes bdvtable bounded-value editing formdemo value-editing gclock glyph-based clock meter sliding meter radiogroup radio-buttons scrollable 2d scrollable glyph scrollfield 2d scrollable field-editor strchooser string chooser timestamp editable time glyph Plus a generally useful text display and editing program: ivtext emacs-like text editor Also all the glyph example programs from InterViews 3.1 have been added in an examples3.1 directory under the glyphs directory. These are the libraries and example programs that make up the Unidraw part of ivtools: Unidraw copy of Unidraw library from InterViews 3.1 UniIdraw librarification of 3.1 idraw OverlayUnidraw extended Unidraw/idraw framework TopoFace spatial network library (nodes, edges, faces) GraphUnidraw graph browser/editor library FrameUnidraw multi-frame display mechanism idraw idraw built on UniIdraw library drawtool extended version of idraw built on OverlayUnidraw graphdraw graph browser/editor integrated with drawtool flipbook flipbook multi-frame editor based on drawtool These are the libraries that make up the command interpreter part of ivtools: ComUtil command interpreter utility functions Attribute attribute property list mechanism AttrGlyph glyphs for Attribute library ComTerp command interpreter objects ComGlyph glyphs for ComTerp library ComUnidraw drawing editor with command interpreter DrawServ drawing server framework with support for graphs and frames. comtest test program comterp sample command interpreter glyphterp command interpreter user interface comdraw drawtool with command interpreter drawserv comdraw with both graphs and frames. Note: GraphUnidraw/graphdraw and FrameUnidraw/flipbook have been rearranged within the ivtools source tree to take advantage of the ComUnidraw framework layer, so they really could be listed in both of the previous sections. There is also a Time library with Date and Time classes borrowed from the NIH's class library, and an example program, ivxt, that shows how an Xt widget can be wrapped around an InterViews application. Finally, there is a collection of utilities (utils) and shell scripts (scripts) that augment the drawing editors of ivtools with minor capabilities. See the relevant directories and files for further information. A series of makefile targets support the checkin of sources to cvs/rcs, and their subsequent update and modification. This requires a copy of cvs available from the Free Software Foundation and ivmkcm-0.7.2 available through http://www.ivtools.org/ivmkcm/ * More ivtools details ivtools is known to build with many versions of gcc (>= gcc-2.8.1, >= egcs-1.0.1, gcc-3.0.*, gcc-3.1.*) and on a variety of Unix'es: SunOS 4.1 (MIT's X11R5), Solaris 2.6 (X11R6), Irix 5.2 (SGI's X11R5), Linux 1.2 (Slackware 3.0, XFree86 3.1), Linux 2.* (RedHat 4.0 thru 7.0, Debian 2.* and 3.*), NetBSD, FreeBSD, and Darwin (Mac OS X). There are contributed configs that are out of date for HPUX and Dec Alpha (though the HPUX contrib might almost have it right). It has been built on Windows NT 4.0 using Cygwin from Cygnus Solutions (see README.cygwin). You can find links to available binaries on the ivtools web page (http://www.ivtools.org) and ivtools download page (http://www.ivtools.org/ivtools/download.html) ** NOTE ** Do not use gcc-2.96, the default compiler shipped with RedHat 7.*. This branch of gcc was never approved by the gcc steering committee. The workaround is to upgrade to gcc-3.* or downgrade to gcc-2.95.*. If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to the general purpose ivtools mailing list, ivtools-user@lists.sourceforge.net. To subcribe to the mailing list, visit http://lists.sourceforge.net/mailman/listinfo/ivtools-user. Other ivtools related mailing lists can be found at: http://www.ivtools.org/ivtools/mailinglists.html Read about finding and generating all this from inline documentation below. A copy of the ivtools html documentation will be available for download as well: http://downloads.sourceforge.net/ivtools/ivtools-doc-1.0.tgz A SourceForge project page for ivtools can be found at: http://sourceforge.net/project/ivtools Read about other vector graphic free software at: http://sourceforge.net/foundry/vectorgraphics * Finding and Generating Inline Documentation Extensive documentation is embedded within the ivtools source tree, including most all of the documentation originally available for InterViews 3.1 and Unidraw. You can find all of it pre-extracted here: http://www.ivtools.org/ivtools/doc/ Here is a list of documentation: - README/man pages for executable programs Within most directories that contain an executable program (a main.c) you'll find a README that explains something about the program, how to use it, what it does, what arguments it takes. In the case of the drawing editors and command interpreters this README has been further processed into a man page, which can be found in its uninstalled state in the src/man/man1 directory or wherever you elect to install them. - HTML class documentation Many of the C++ class libraries of ivtools are documented using comments in the header files (the .h files) that can be extracted using PERCEPS, a Perl documentation generator for C++ (http://starship.python.net/crew/tbryan/PERCEPS/). See src/html/README for instructions on auto-generating these web pages yourself, or see the result on-line at: http://www.ivtools.org/ivtools/doc/classes/ - InterViews 3.1 and Unidraw man pages All the original man pages from InterViews 3.1 and Unidraw have been preserved, and can be found in src/man/man3, or where ever you elect to install them. They also can be browsed online at: http://www.ivtools.org/ivtools/doc/man3.1/ - InterViews 3.1 reference manual The original reference manual for InterViews 3.1 can be found in PostScript form at src/man/refman3.1/refman.PS. It is also found in page-indexable online form at: http://www.ivtools.org/ivtools/doc/refman3.1/ * Building on top of ivtools Copied from the ivtools FAQ: http://www.ivtools.org/ivtools/faq.html#standalonedevel Q: How do I set up a stand-alone program or source tree on top of ivtools for development purposes? A: If you are writing a stand-alone program that will exist in a single directory, simply copy an appropriate Imakefile and main.c from a InterViews or ivtools example program directory, modify accordingly, then use "ivmkmf -a" to generate the Makefile. Make sure you are using a fresh ivmkmf that corresponds to your installation of ivtools. An example of this is the comtop sample program, a stand-alone program separate from ivtools that builds on top of the comterp command interpreter mechanism. ** comtop.tgz is now part of the ivtools distribution ** If you are setting up an entire source tree with both class libraries and executable programs, you will want to get started by replicating an equivalent source tree (i.e. vhclmaps) and change or rename all directories or files as appropriate. ** read more on vhclmaps at http://www.ivtools.org/vhclmaps/ ** * Acknowledgements: Roster of ivtools programmers: Scott Johnston Jorge Gautier Brian Hogencamp Rick Kissh Eric Kahler InterViews 3.1 programmers that we know of: Mark Linton John Vlissides Paul Calder John Interrante Scott Stanton Steven Tang ivtools can be built to leverage a variety of separate third-party libraries: * clippoly from Klamer Schutte for polygon intersection (licensed under the LGPL) * ACE from Doug Schmidt for middleware networking frameworks (licensed similar to X Windows) * IUE (the Image Understanding Environment) from Amerinex (half public-domain, half licensed similar to X Windows) ivtools detects and uses at runtime a variety of third-party executables: * qhull from the University of Minnesota Geometry Center * pstoedit from Wolfgang Glunz * ghostscript from L. Peter Deutsch and Aladdin Systems * djpeg from the JPEG group * giftopnm from Jef Poskanzer's pbmplus toolkit (a copy of anytopnm from the same toolkit is incorporated into the scripts directory) OverlayUnidraw incorporates Version 3.1 of a "C++ Vector and Matrix Algebra routnes" (algebra3.h) from Jean-Francois Doue. HPUX (HP-800) config contributed by Neal Becker. ALPHA config contributed by Bruno Delfosse at Thomson CSF. A lot of feedback on Solaris 2.6 building from M. Rasit Eskicioglu at the University of Alberta. NetBSD port and other assistance from Todd Gruhn. Cygwin development environment for Windows NT from RedHat (Cygnus Solutions). Patches to iv-3.2a incorporated from the PDP++ distribution from Carnegie Mellon University Department of Psychiatry, Randall C. O'Reilly, et. al. Patches for Debian 2.0 packaging incorporated from Guenter Geiger. This work included the conversion of drawtool, flipbook, and graphdraw README's to man page format. Patch for iv-3.1 shift key handling from Doug Scott, the author of MiXViews. Certain InterViews libraries (Dispatch, IV, IV-2_6, IV-X11, InterViews, OS, TIFF, Unidraw) and example programs (iclass, idemo, idraw) are copied from the InterViews 3.1 sources. Here is the aggregrate copyright notice for that software package: /* * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * Copyright (c) 1991 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Stanford and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Stanford and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL STANFORD OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The building of Unidraw with gcc-2.5.* (and subsequent versions) was enabled by a patch from Adam Zell. The TIFF library was written by Sam Leffler and published with this copyright and permission notice: /* * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991, 1992 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The strchooser example and StrChooser class were contributed by David B. Hollenbeck, as well as the glyph-based Motif-look pull-down menus of OverlayUnidraw. Here is his copyright notice: /* * Copyright (c) 1993 David B. Hollenbeck * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notice and this permission notice appear in * all copies of the software and related documentation, and (ii) the name of * David B. Hollenbeck may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of David B. Hollenbeck. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL DAVID B. HOLLENBECK BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The scrollable example is based on code from Chen Wang The text-editor example program is by Jan Andersson of Torpa Konsult AB. Here is that copyright notice: // // Simple Text Editor // // // Copyright (C) 1993 Ellemtel Telecommunication Systems Labratories // // Permission is granted to any individual or institution to use, copy, // modify, and distribute this software, provided that this complete // copyright and permission notice is maintained, intact, in all copies // and supporting documentation. // // Ellemtel Telecommunication Systems Labratories make no representation // of the suitability of this software for any purpose. It is provided // "as is" without any expressed or implied warranty. // // Jan Andersson, Torpa Konsult AB // janne at torpa.se - 1993-08-29 The Date and Time classes in the Time library are borrowed from the NIHCL class library, written by K. E. Gorlen, Computer Sciences Laboratory, DCRT, National Institutes of Health, Bethesda, MD 20892, and published with this notice: THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A "UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY. The graylevel raster and painting mechanisms of OverlayUnidraw were originated by Richard B. Kissh under contract to Vectaport Inc, as well as the shared memory rasters and asychronous incremental download of rasters. The ComUtil library was originally developed at Triple Vision Inc. under NSF Grant ISI-8521259 (authors/contributors: Robert C. Fitch, Richard A. Fundakowski, Robert K. Graber, Scott E. Johnston). The ivdl URL downloading utility was developed by Eric F. Kahler under contract to Vectaport Inc. Keung Chi Ng of IET Inc. has provided a good deal of feedback on ivtools over the years, and has assisted in demonstrating the viability of the application frameworks by developing a variety of vertical applications on top of OverlayUnidraw, FrameUnidraw, and GraphUnidraw. The balance of ivtools has been developed by Vectaport Inc. (P.O. Box 7141, Redwood City, CA 94063), with additional support from IET Inc. (P.O. Box 112450, Campbell, CA 95011) in the form of ARPA subcontracts (DACA76-93-C-0025 and DACA76-97-C-0005), as well as directly employing Scott Johnston from April 1999 thru August 2000 and giving him the freedom to evolve ivtools and related open-source frameworks as part of his job. There was also support from Applied Sciences Inc, San Francisco, CA, in the form of a subcontract for a Phase II SBIR from NASA Ames. ivtools-doc/ivtools-1.1-CHANGES.txt0000644000076500007650000000324610014736515017456 0ustar scottscott00000000000000February 18th, 2004 ivtools-1.1.3 - continue evolution of iostreams usage to keep up with changes to libstdc++-v3. Many thanks for reinstating a filebuf constructor that accepts an integer file descriptor. Hard to wrap them around sockets any other way. - fix problem with use of ACE on Darwin with gcc-3.3. - fix problem with lexical scanning introduced when "#" comment lines were first handled. December December 8th, 2003 ivtools-1.1.2 - fixes a problem with using gcc-2.95 to compile ivtools-1.1.*. It avoids the use of a local copy of strstream.h, which worked fine for gcc-3.3, but not for gcc-2.9.5. Instead it uses strstream directly, and appends istrstream and ostrstream with the std:: using prefix. Fix contributed by Mark Davies. November 16th, 2003 ivtools-1.1.1 - add missing src/include/ivstd/strstream.h to MANIFEST file and tar file October 29th, 2003 ivtools-1.1.0 - re-enable use of shared memory for X11 image rendering under MacOS X - fix command passed to popen() to detect executables on MacOS X - fix up some AttrValue stuff - all the changes it took to get it built with ACE on MacOS X (though it doesn't work yet). - the cpp bundled with gcc-3.3 has a bug, and gets confused by back-slashed commas in macro arguments (it thinks they start a new argument, which they don't). This introduced a problem to long stable config files, but a workaround is here. - this also fixes things so FreeBSD can configure on alpha architectures. - add -svgexport flag to drawtool that by default suppresses (the incomplete) SVG export mechanism. - incorporate an XML dump of all the SourceForge tracker info, in case SourceForge goes away (sourceforge.102203.xml). ivtools-doc/ivtools-1.1-COPYRIGHT.txt0000644000076500007650000000365410014736515017761 0ustar scottscott00000000000000/* * Copyright (c) 2001, 2002, 2003, 2004 Scott E. Johnston * Copyright (c) 2000 Vectaport Inc., IET Inc * Copyright (c) 1999 Vectaport Inc., IET Inc, R.B. Kissh and Associates * Copyright (c) 1998 Vectaport Inc., R.B. Kissh and Associates, Eric F. Kahler * Copyright (c) 1997 Vectaport Inc., R.B. Kissh and Associates * Copyright (c) 1996 Vectaport Inc., R.B. Kissh and Associates, Cider Press * Copyright (c) 1994, 1995 Vectaport Inc., Cartoactive Systems, Cider Press * Copyright (c) 1993 David B. Hollenbeck * Copyright (c) 1993 Ellemtel Telecommunication Systems Labratories * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991 Silicon Graphics, Inc. * Copyright (c) 1989 Triple Vision Inc. * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * related documentation and data files for any purpose is hereby granted * without fee, provided that the above copyright notice appear in all copies * and that both that copyright notice and this permission notice appear in * supporting documentation, and that the names of the copyright holders not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holders * make no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ ivtools-doc/ivtools-1.1-INSTALL.txt0000644000076500007650000002530310014736515017512 0ustar scottscott00000000000000 INSTALL for ivtools-1.1 Instructions for building ivtools-1.1.3 from source, the short version: ./configure make su -c "make install" And if that doesn't work... Instructions for building ivtools-1.1.3 from source, the long version: 0. Compilation Environment Things you will need (or might want) before building ivtools: 0.a. a Unix machine (for Windows see README.cygwin). We know it has been built on Linux, NetBSD, FreeBSD, Solaris, Irix, Dec Alpha, HPUX, and SunOS. It also builds on Mac OS X (Darwin) which is a BSD-derivative OS. As of version 1.0.7 ivtools is Jaguar ready. 0.b GNU make. Test to make sure this is the version you are using with "make -v" 0.c. The gcc compiler. Recently we've been building and testing with gcc-2.95.*, gcc-2.96, gcc-3.0.*, gcc-3.1, gcc-3.2, and gcc-3.3. egcs-1.0.3 would probably still work, as would gcc-2.8.1 and gcc-2.7.2. You will also need an equivalent copy of libstdc++. libstdc++ comes bundled with gcc-3.0 and greater. Before that the libstdc++ version numbers stay roughly in synch with the gcc version numbers. If you have gcc-2.8.1 you'd want libstdc++-2.8.1, etc.. ** NOTE ** Now you can use gcc-2.96. Ignore http://www.ivtools.org/ivtools/faq.html#gcc-2.96-problem Be aware that sometimes the include files for libstdc++ are in /usr/local/include/g++-2, a place that cannot be auto-determined by the configure script. Establishing a symbolic link to /usr/local/include/g++ will fix the problem. 0.d. An installed copy of X11R6 as distributed by the Open Group, or an equivalent (XFree86 for Linux/BSD/MacOS-X, or X11R5 from MIT). If you use a vendor's X11 product, the product should be based on X11R4 or later and the product should include imake and the config files. If you can't find imake on your system, you can get the sources for imake from the X11R5 or X11R6 distribution at several public ftp archives (such as ftp.x.org). ** warning -- imake used in combination with a non-GNU C preprocessor ** can be troublesome (i.e. the default one delivered with Solaris or ** DEC Alpha). You'll want to rig your PATH environment variable to ** find the gcc variant of cpp. Read more about it at ** http://www.ivtools.org/ivtools/faq.html#imakecppprob 0.e. If you want to use the polygon intersection tools, acquire and build clippoly, a LGPLed library for polygon clipping from: http://www.ph.tn.tudelft.nl/People/klamer/clippoly_entry.html Add -fPIC to the CCFLAGS in the Makefile, then do a make, then build a shared library in the clippoly directory with: "gcc -shared -o libclippoly.so *.o" (you can leave out test.o if you want). 0.f. If you want to use the network server capabilities of the ivtools programs, acquire and build ACE, a C++ middleware toolkit available from: http://www.cs.wustl.edu/%7Eschmidt/ACE.html We are currently using ACE-5.1 (or the latest copy of ACE) built without threads support. Follow these steps to build it from source, or use the Debian binary if you happen to be working on that platform (libace5.1-dev): tar xvfz ACE-5.1.tar.gz cd ACE_wrappers export ACE_ROOT=`pwd` # csh: setenv ACE_ROOT `pwd` cd ace cp config-linux.h config.h # substitute appropriate OS name cd ../include/makeinclude cp platform_linux.GNU platform_macros.GNU # substitute OS emacs platform_macros.GNU # add "threads = 0" near top of file cd ../../ace make Then use "--with-ace=$ACE_ROOT" when running the configure script as described below. 0.g if you want to build the ivxt example program, which demonstrates the embedding of a ivtools drawing editor inside Motif widgets, you'll need some version of lesstif or Motif (libXm). To enable the ivxt build, change line 7 of src/Imakefile from "#if 0" to "#if 1". Without these libraries and include files the build of ivxt will fail, which can be safely ignored. 0.h Finally, you might have an interest in building the IueServ library and iueserv program, a networked command interpreter wrapped around the class libraries of the Image Understanding Environment. See http://www.aai.com/AAI/IUE/IUE.html for details on acquiring and building this sizeable collection of public-domain and free software class libraries for image understanding application development. 1. Configuring ivtools: 1.a. You no longer need to set your CPU environment variable to build ivtools, but you still need a CPU specific configuration file. Ready-made configurations that have been known to work exist for LINUX, SUN4 (and Solaris), SGI, HP800 (HPUX), ALPHA, NETSBD, FREEBSD, and CYGWIN (for Windows NT). HPUX config file is known to be out of quite out of date, the others will probably work with little or no tweaks. Use "make CPU" from the top directory to see the symbol ivtools will use for your OS (grep config/arch.def for ArchitectureName to get a complete list of possible OS'es). Then look for a matching config/site.def. file, where is the value returned by "make CPU". If it is there proceed to step 1.b. Other variants of Unix can be attempted by creating the corresponding config/site.def., i.e. site.def.AIX or site.def.MIPS. Use SUN4 for Solaris as well as SunOS. Although SUN5 would be more correct, the config files automatically determine the difference between the two OS'es by checking for SVR4'ness. 1.b Run the configure script in the top-level directory, by entering "./configure" followed by any of the following arguments (--with arguments are recognized as --enable as well): --with-ace= Path to ACE source --with-ace-libs= Path to ACE libraries --with-clippoly= Path to clippoly source --with-clippoly-libs= Path to clippoly libraries --with-iue= Path to IUE source --with-iue-libs= Path to IUE libraries --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR --enable-install-relative[=ARG] install relative to source tree --enable-install-subdir[=ARG] install in ivtools sub-directory --prefix=DIR to use when install-relative is false (default is /usr/local) --enable-use-rpath[=ARG] use -rpath when linking, to embed shared-library pathnames in executable. ARG can be 0 or 1, default is 1 when not specified. The configure script is usually able to automatically determine --x-includes and --x-libraries (except on DEC Alpha). If the arguments for ACE, clippoly, or IUE are not supplied, the configure script prints a reminder, then proceeds to set up to build ivtools without these libraries. If you want to run the executables without installing them, use --enable-use-rpath to embed the shared library pathnames into the executables at link time. Here is an example of using the configure script with ACE and clippoly libraries: ./configure --with-clippoly=/proj/clippoly --with-ace=/proj/ACE_wrappers Running the configure script generates two files, a config/config.mk that gets included into each Makefile when used, and a config/config--gcc.defs that gets used by "make Makefiles" described below. is something like linux. The last line of output from the configure script shows this pathname. Verify that this is the same as the file included at the end of the config/site.def. file. Change the site.def. file if necessary. Also you may want to review the rest of the entries in the site.def. file to see if they are good defaults for your system. ** See http://www.ivtools.org/ivtools/faq.html for more info. 2. Compiling ivtools: 2.a. cd to the ivtools-1.1/ directory (you'd already be in this directory after running the configure script). 2.b. Compile it with a "make" command. The first time it is run it does all these individual steps (the equivalent of "make World"): - regenerates the top-level Makefile to snap it to the current directory ("make Makefile"). - runs through the source tree and generates all the other Makefile's ("make Makefiles"). - generates compilation dependencies for each directory with code to compile -- see the Makefile.depend file in each sub-directory ("make depend"). - compiles and links everything ("make -k"). If you have any trouble at this stage take a look at: http://www.ivtools.org/ivtools/faq.html#SourceBuild ** Subsequent use of "make" will only do the "make -k" phase described ** above. To redo everything, either do a "make World", or do a "make ** clean" followed by a "make". The "make clean" deletes the files ** that suppress the make stateges, make.makefile, make.makefiles, ** make.depend, and make.make. 3. Testing: Each directory under ivtools-1.1/src that begins in lower case (except for "include" and "scripts") contains executables that exercise some particular functionality. "cd" to each particular directory, type "/a.out" and see what happens (the utils directory contains more than one executable, things named other than a.out). Quite a few directories have README's that go into further detail on how to use the programs. ivtools-1.1/src/glyphs contains sub-directories of glyph example programs. ivtools-1.1/src/glyphs/examples3.1 contains most of the simple example programs that were originally distributed with InterViews 3.1. There is also a src/tests directory, with one test program to date, y2k/y2ktest.c. This builds a small program that verifies the Date object of the Time class library has no problem with Y2K or Y2.038K, by allowing the user to enter "+" and "-" to increment/decrement the year past these boundaries. 4. Installation: "make install" is supported for all the libraries and a subset of the more utilitarian example programs: the four original InterViews programs (idraw, iclass, idemo, and dclock), the four idraw derived programs (drawtool, netdraw, flipbook, and comdraw) and the two comterp programs (comterp and glyphterp). In addition the scripts in src/scripts and utilities in src/utils get installed. "make uninstall" is supported as well. When relative install is enabled (--enable-install-relative for the configure script), the binaries are installed in ivtools-1.1/bin/, the libraries are installed in ivtools-1.1/lib/, and the run-time X resource and config files are installed in ivtools-1.1/lib/ivtools. When relative install is disabled (the default for the configure script) the binaries are installed as stripped executables in `prefix`/bin the libraries are installed in `prefix`/lib, and the run-time X resource and config files are installed in `prefix`/lib/ivtools. note: idemo, comterp, glyphterp, and comdraw have config files that must be installed (either relative or non-relative) for the program to find them at runtime. drawtool relies on several scripts and utilities for accessing graphics and image files that must be installed as well for them to work. ivtools-doc/ivtools-1.1-MANIFEST.txt0000644000076500007650000021120310014736515017606 0ustar scottscott00000000000000ivtools-1.1/CHANGES ivtools-1.1/CHANGES-0.4 ivtools-1.1/CHANGES-0.5 ivtools-1.1/CHANGES-0.6 ivtools-1.1/CHANGES-0.7 ivtools-1.1/CHANGES-0.8 ivtools-1.1/CHANGES-0.9 ivtools-1.1/CHANGES-1.0 ivtools-1.1/COPYING ivtools-1.1/COPYRIGHT ivtools-1.1/INSTALL ivtools-1.1/Imakefile ivtools-1.1/MANIFEST ivtools-1.1/MANIFEST.comterp ivtools-1.1/MANIFEST.perceps ivtools-1.1/Makefile ivtools-1.1/README ivtools-1.1/README.cygwin ivtools-1.1/README.ivmkcm ivtools-1.1/VERSION ivtools-1.1/aclocal.m4 ivtools-1.1/comtop.tgz ivtools-1.1/config/Imakefile ivtools-1.1/config/InterViews/Imakefile ivtools-1.1/config/InterViews/Makefile ivtools-1.1/config/InterViews/TIFF.def ivtools-1.1/config/InterViews/arch.def ivtools-1.1/config/InterViews/cxx.def ivtools-1.1/config/InterViews/iv-DGUX.cf ivtools-1.1/config/InterViews/iv-Mips.cf ivtools-1.1/config/InterViews/iv-aix.cf ivtools-1.1/config/InterViews/iv-alpha.cf ivtools-1.1/config/InterViews/iv-apollo.cf ivtools-1.1/config/InterViews/iv-att.cf ivtools-1.1/config/InterViews/iv-bsd.cf ivtools-1.1/config/InterViews/iv-convex.cf ivtools-1.1/config/InterViews/iv-cray.cf ivtools-1.1/config/InterViews/iv-cygwin.cf ivtools-1.1/config/InterViews/iv-darwin.cf ivtools-1.1/config/InterViews/iv-freebsd.cf ivtools-1.1/config/InterViews/iv-generic.cf ivtools-1.1/config/InterViews/iv-hp.cf ivtools-1.1/config/InterViews/iv-ibm.cf ivtools-1.1/config/InterViews/iv-linux.cf ivtools-1.1/config/InterViews/iv-luna.cf ivtools-1.1/config/InterViews/iv-m4330.cf ivtools-1.1/config/InterViews/iv-macII.cf ivtools-1.1/config/InterViews/iv-moto.cf ivtools-1.1/config/InterViews/iv-netbsd.cf ivtools-1.1/config/InterViews/iv-pegasus.cf ivtools-1.1/config/InterViews/iv-sgi.cf ivtools-1.1/config/InterViews/iv-sony.cf ivtools-1.1/config/InterViews/iv-stellar.cf ivtools-1.1/config/InterViews/iv-stratus.cf ivtools-1.1/config/InterViews/iv-sun.cf ivtools-1.1/config/InterViews/iv-ultrix.cf ivtools-1.1/config/InterViews/iv-x386.cf ivtools-1.1/config/InterViews/local.def ivtools-1.1/config/InterViews/params.def ivtools-1.1/config/InterViews/rules.def ivtools-1.1/config/InterViews/xparams.cf ivtools-1.1/config/Makefile ivtools-1.1/config/alpha3.0-gcc.mk ivtools-1.1/config/alpha3.2-gcc.mk ivtools-1.1/config/alpha4-gcc.mk ivtools-1.1/config/arch.def ivtools-1.1/config/config.defs.in ivtools-1.1/config/config.mk ivtools-1.1/config/config.null.mk ivtools-1.1/config/darwin-gcc.mk ivtools-1.1/config/default-gcc.mk ivtools-1.1/config/freebsd-gcc.mk ivtools-1.1/config/freebsd2.1-gcc.mk ivtools-1.1/config/gcc.def ivtools-1.1/config/hpux-gcc.mk ivtools-1.1/config/hpux10.20-gcc.mk ivtools-1.1/config/irix5-gcc.mk ivtools-1.1/config/irix6-gcc.mk ivtools-1.1/config/linux-gcc.mk ivtools-1.1/config/local.def ivtools-1.1/config/m88k-sysv3-gcc.mk ivtools-1.1/config/m88k-sysv4-gcc.mk ivtools-1.1/config/makevars.def ivtools-1.1/config/netbsd-gcc.mk ivtools-1.1/config/params.def ivtools-1.1/config/rules.def ivtools-1.1/config/sco3.2.4-gcc.mk ivtools-1.1/config/site.def.ALPHA ivtools-1.1/config/site.def.CYGWIN ivtools-1.1/config/site.def.DARWIN ivtools-1.1/config/site.def.FREEBSD ivtools-1.1/config/site.def.HP800 ivtools-1.1/config/site.def.LINUX ivtools-1.1/config/site.def.NETBSD ivtools-1.1/config/site.def.SGI ivtools-1.1/config/site.def.SUN4 ivtools-1.1/config/solaris-gcc.mk ivtools-1.1/config/sunos4-gcc.mk ivtools-1.1/config/template ivtools-1.1/configure ivtools-1.1/configure.in ivtools-1.1/configure.notes ivtools-1.1/sourceforge.102203.xml ivtools-1.1/src/AceDispatch/Imakefile ivtools-1.1/src/AceDispatch/Makefile ivtools-1.1/src/AceDispatch/ace_dispatcher.c ivtools-1.1/src/AceDispatch/ace_dispatcher.h ivtools-1.1/src/AceDispatch/ace_iohandler.c ivtools-1.1/src/AceDispatch/ace_iohandler.h ivtools-1.1/src/AttrGlyph/Imakefile ivtools-1.1/src/AttrGlyph/Makefile ivtools-1.1/src/AttrGlyph/attredit.c ivtools-1.1/src/AttrGlyph/attredit.h ivtools-1.1/src/Attribute/Imakefile ivtools-1.1/src/Attribute/Makefile ivtools-1.1/src/Attribute/_comterp.h ivtools-1.1/src/Attribute/_comutil.h ivtools-1.1/src/Attribute/alist.c ivtools-1.1/src/Attribute/alist.h ivtools-1.1/src/Attribute/aliterator.c ivtools-1.1/src/Attribute/aliterator.h ivtools-1.1/src/Attribute/attribute.c ivtools-1.1/src/Attribute/attribute.h ivtools-1.1/src/Attribute/attrlist.c ivtools-1.1/src/Attribute/attrlist.h ivtools-1.1/src/Attribute/attrvalue.c ivtools-1.1/src/Attribute/attrvalue.h ivtools-1.1/src/Attribute/classid.h ivtools-1.1/src/Attribute/commodule.c ivtools-1.1/src/Attribute/commodule.h ivtools-1.1/src/Attribute/lexscan.c ivtools-1.1/src/Attribute/lexscan.h ivtools-1.1/src/Attribute/paramlist.c ivtools-1.1/src/Attribute/paramlist.h ivtools-1.1/src/ComGlyph/Imakefile ivtools-1.1/src/ComGlyph/Makefile ivtools-1.1/src/ComGlyph/attrdialog.c ivtools-1.1/src/ComGlyph/attrdialog.h ivtools-1.1/src/ComGlyph/comtextedit.c ivtools-1.1/src/ComGlyph/comtextedit.h ivtools-1.1/src/ComGlyph/comtextview.c ivtools-1.1/src/ComGlyph/comtextview.h ivtools-1.1/src/ComGlyph/terpdialog.c ivtools-1.1/src/ComGlyph/terpdialog.h ivtools-1.1/src/ComTerp/Imakefile ivtools-1.1/src/ComTerp/Makefile ivtools-1.1/src/ComTerp/_comterp.h ivtools-1.1/src/ComTerp/_comutil.h ivtools-1.1/src/ComTerp/assignfunc.c ivtools-1.1/src/ComTerp/assignfunc.h ivtools-1.1/src/ComTerp/bitfunc.c ivtools-1.1/src/ComTerp/bitfunc.h ivtools-1.1/src/ComTerp/boolfunc.c ivtools-1.1/src/ComTerp/boolfunc.h ivtools-1.1/src/ComTerp/bquotefunc.c ivtools-1.1/src/ComTerp/bquotefunc.h ivtools-1.1/src/ComTerp/comfunc.c ivtools-1.1/src/ComTerp/comfunc.h ivtools-1.1/src/ComTerp/comhandler.c ivtools-1.1/src/ComTerp/comhandler.h ivtools-1.1/src/ComTerp/commodule.h ivtools-1.1/src/ComTerp/comterp.c ivtools-1.1/src/ComTerp/comterp.h ivtools-1.1/src/ComTerp/comterpserv.c ivtools-1.1/src/ComTerp/comterpserv.h ivtools-1.1/src/ComTerp/comvalue.c ivtools-1.1/src/ComTerp/comvalue.h ivtools-1.1/src/ComTerp/condfunc.c ivtools-1.1/src/ComTerp/condfunc.h ivtools-1.1/src/ComTerp/ctrlfunc.c ivtools-1.1/src/ComTerp/ctrlfunc.h ivtools-1.1/src/ComTerp/debugfunc.c ivtools-1.1/src/ComTerp/debugfunc.h ivtools-1.1/src/ComTerp/dotfunc.c ivtools-1.1/src/ComTerp/dotfunc.h ivtools-1.1/src/ComTerp/helpfunc.c ivtools-1.1/src/ComTerp/helpfunc.h ivtools-1.1/src/ComTerp/iofunc.c ivtools-1.1/src/ComTerp/iofunc.h ivtools-1.1/src/ComTerp/lexscan.h ivtools-1.1/src/ComTerp/listfunc.c ivtools-1.1/src/ComTerp/listfunc.h ivtools-1.1/src/ComTerp/mathfunc.c ivtools-1.1/src/ComTerp/mathfunc.h ivtools-1.1/src/ComTerp/numfunc.c ivtools-1.1/src/ComTerp/numfunc.h ivtools-1.1/src/ComTerp/parser.c ivtools-1.1/src/ComTerp/parser.h ivtools-1.1/src/ComTerp/postfunc.c ivtools-1.1/src/ComTerp/postfunc.h ivtools-1.1/src/ComTerp/randfunc.c ivtools-1.1/src/ComTerp/randfunc.h ivtools-1.1/src/ComTerp/scanner.c ivtools-1.1/src/ComTerp/scanner.h ivtools-1.1/src/ComTerp/statfunc.c ivtools-1.1/src/ComTerp/statfunc.h ivtools-1.1/src/ComTerp/strmfunc.c ivtools-1.1/src/ComTerp/strmfunc.h ivtools-1.1/src/ComTerp/symbolfunc.c ivtools-1.1/src/ComTerp/symbolfunc.h ivtools-1.1/src/ComTerp/typefunc.c ivtools-1.1/src/ComTerp/typefunc.h ivtools-1.1/src/ComTerp/xformfunc.c ivtools-1.1/src/ComTerp/xformfunc.h ivtools-1.1/src/ComUnidraw/Imakefile ivtools-1.1/src/ComUnidraw/Makefile ivtools-1.1/src/ComUnidraw/comeditor.c ivtools-1.1/src/ComUnidraw/comeditor.h ivtools-1.1/src/ComUnidraw/comterp-acehandler.c ivtools-1.1/src/ComUnidraw/comterp-acehandler.h ivtools-1.1/src/ComUnidraw/comterp-iohandler.c ivtools-1.1/src/ComUnidraw/comterp-iohandler.h ivtools-1.1/src/ComUnidraw/dialogfunc.c ivtools-1.1/src/ComUnidraw/dialogfunc.h ivtools-1.1/src/ComUnidraw/grdotfunc.c ivtools-1.1/src/ComUnidraw/grdotfunc.h ivtools-1.1/src/ComUnidraw/grfunc.c ivtools-1.1/src/ComUnidraw/grfunc.h ivtools-1.1/src/ComUnidraw/grlistfunc.c ivtools-1.1/src/ComUnidraw/grlistfunc.h ivtools-1.1/src/ComUnidraw/groupfunc.c ivtools-1.1/src/ComUnidraw/groupfunc.h ivtools-1.1/src/ComUnidraw/grstatfunc.c ivtools-1.1/src/ComUnidraw/grstatfunc.h ivtools-1.1/src/ComUnidraw/highlightfunc.c ivtools-1.1/src/ComUnidraw/highlightfunc.h ivtools-1.1/src/ComUnidraw/nfunc.c ivtools-1.1/src/ComUnidraw/nfunc.h ivtools-1.1/src/ComUnidraw/pixelfunc.c ivtools-1.1/src/ComUnidraw/pixelfunc.h ivtools-1.1/src/ComUnidraw/plotfunc.c ivtools-1.1/src/ComUnidraw/plotfunc.h ivtools-1.1/src/ComUnidraw/unifunc.c ivtools-1.1/src/ComUnidraw/unifunc.h ivtools-1.1/src/ComUtil/Imakefile ivtools-1.1/src/ComUtil/Makefile ivtools-1.1/src/ComUtil/_lexscan.c ivtools-1.1/src/ComUtil/_parser.c ivtools-1.1/src/ComUtil/_scanner.c ivtools-1.1/src/ComUtil/atox.c ivtools-1.1/src/ComUtil/comerr.c ivtools-1.1/src/ComUtil/comterp.arg ivtools-1.1/src/ComUtil/comterp.ci ivtools-1.1/src/ComUtil/comterp.err ivtools-1.1/src/ComUtil/comterp.h ivtools-1.1/src/ComUtil/comutil.arg ivtools-1.1/src/ComUtil/comutil.ci ivtools-1.1/src/ComUtil/comutil.h ivtools-1.1/src/ComUtil/dmm.c ivtools-1.1/src/ComUtil/errfile.c ivtools-1.1/src/ComUtil/errsys.c ivtools-1.1/src/ComUtil/funcptrs.c ivtools-1.1/src/ComUtil/mblock.c ivtools-1.1/src/ComUtil/optable.c ivtools-1.1/src/ComUtil/symbols.c ivtools-1.1/src/ComUtil/txtutil.c ivtools-1.1/src/ComUtil/types.c ivtools-1.1/src/ComUtil/util.c ivtools-1.1/src/ComUtil/util.h ivtools-1.1/src/ComUtil/xdll.c ivtools-1.1/src/Dispatch/Imakefile ivtools-1.1/src/Dispatch/Makefile ivtools-1.1/src/Dispatch/dispatcher.c ivtools-1.1/src/Dispatch/iohandler.c ivtools-1.1/src/Dispatch/iostreamb.c ivtools-1.1/src/Dispatch/netinet_in.h ivtools-1.1/src/Dispatch/rpcbuf.c ivtools-1.1/src/Dispatch/rpchdr.c ivtools-1.1/src/Dispatch/rpcpeer.c ivtools-1.1/src/Dispatch/rpcreader.c ivtools-1.1/src/Dispatch/rpcregistry.c ivtools-1.1/src/Dispatch/rpcservice.c ivtools-1.1/src/Dispatch/rpcstream.c ivtools-1.1/src/Dispatch/rpcwriter.c ivtools-1.1/src/DrawServ/Imakefile ivtools-1.1/src/DrawServ/Makefile ivtools-1.1/src/DrawServ/drawcatalog.c ivtools-1.1/src/DrawServ/drawcatalog.h ivtools-1.1/src/DrawServ/drawclasses.h ivtools-1.1/src/DrawServ/drawcomps.c ivtools-1.1/src/DrawServ/drawcomps.h ivtools-1.1/src/DrawServ/drawcreator.c ivtools-1.1/src/DrawServ/drawcreator.h ivtools-1.1/src/DrawServ/draweditor.c ivtools-1.1/src/DrawServ/draweditor.h ivtools-1.1/src/DrawServ/drawfunc.c ivtools-1.1/src/DrawServ/drawfunc.h ivtools-1.1/src/DrawServ/drawkit.c ivtools-1.1/src/DrawServ/drawkit.h ivtools-1.1/src/DrawServ/drawserv.c ivtools-1.1/src/DrawServ/drawserv.h ivtools-1.1/src/DrawServ/drawviews.c ivtools-1.1/src/DrawServ/drawviews.h ivtools-1.1/src/FrameUnidraw/Imakefile ivtools-1.1/src/FrameUnidraw/Makefile ivtools-1.1/src/FrameUnidraw/framecatalog.c ivtools-1.1/src/FrameUnidraw/framecatalog.h ivtools-1.1/src/FrameUnidraw/frameclasses.h ivtools-1.1/src/FrameUnidraw/framecmds.c ivtools-1.1/src/FrameUnidraw/framecmds.h ivtools-1.1/src/FrameUnidraw/framecomps.c ivtools-1.1/src/FrameUnidraw/framecomps.h ivtools-1.1/src/FrameUnidraw/framecreator.c ivtools-1.1/src/FrameUnidraw/framecreator.h ivtools-1.1/src/FrameUnidraw/frameeditor.c ivtools-1.1/src/FrameUnidraw/frameeditor.h ivtools-1.1/src/FrameUnidraw/framefile.c ivtools-1.1/src/FrameUnidraw/framefile.h ivtools-1.1/src/FrameUnidraw/framefunc.c ivtools-1.1/src/FrameUnidraw/framefunc.h ivtools-1.1/src/FrameUnidraw/framekit.c ivtools-1.1/src/FrameUnidraw/framekit.h ivtools-1.1/src/FrameUnidraw/frameps.c ivtools-1.1/src/FrameUnidraw/frameps.h ivtools-1.1/src/FrameUnidraw/framescripts.c ivtools-1.1/src/FrameUnidraw/framescripts.h ivtools-1.1/src/FrameUnidraw/framestates.c ivtools-1.1/src/FrameUnidraw/framestates.h ivtools-1.1/src/FrameUnidraw/frameviewer.c ivtools-1.1/src/FrameUnidraw/frameviewer.h ivtools-1.1/src/FrameUnidraw/frameviews.c ivtools-1.1/src/FrameUnidraw/frameviews.h ivtools-1.1/src/GraphUnidraw/Imakefile ivtools-1.1/src/GraphUnidraw/Makefile ivtools-1.1/src/GraphUnidraw/edgecomp.c ivtools-1.1/src/GraphUnidraw/edgecomp.h ivtools-1.1/src/GraphUnidraw/graphcatalog.c ivtools-1.1/src/GraphUnidraw/graphcatalog.h ivtools-1.1/src/GraphUnidraw/graphclasses.h ivtools-1.1/src/GraphUnidraw/graphcmds.c ivtools-1.1/src/GraphUnidraw/graphcmds.h ivtools-1.1/src/GraphUnidraw/graphcomp.c ivtools-1.1/src/GraphUnidraw/graphcomp.h ivtools-1.1/src/GraphUnidraw/graphcreator.c ivtools-1.1/src/GraphUnidraw/graphcreator.h ivtools-1.1/src/GraphUnidraw/graphdata.c ivtools-1.1/src/GraphUnidraw/graphdata.h ivtools-1.1/src/GraphUnidraw/graphdialog.c ivtools-1.1/src/GraphUnidraw/graphdialog.h ivtools-1.1/src/GraphUnidraw/grapheditor.c ivtools-1.1/src/GraphUnidraw/grapheditor.h ivtools-1.1/src/GraphUnidraw/graphimport.c ivtools-1.1/src/GraphUnidraw/graphimport.h ivtools-1.1/src/GraphUnidraw/graphkit.c ivtools-1.1/src/GraphUnidraw/graphkit.h ivtools-1.1/src/GraphUnidraw/graphtools.c ivtools-1.1/src/GraphUnidraw/graphtools.h ivtools-1.1/src/GraphUnidraw/nodecomp.c ivtools-1.1/src/GraphUnidraw/nodecomp.h ivtools-1.1/src/IV-2_6/Imakefile ivtools-1.1/src/IV-2_6/Makefile ivtools-1.1/src/IV-2_6/adjuster2_6.c ivtools-1.1/src/IV-2_6/banner.c ivtools-1.1/src/IV-2_6/border2_6.c ivtools-1.1/src/IV-2_6/box2_6.c ivtools-1.1/src/IV-2_6/button2_6.c ivtools-1.1/src/IV-2_6/compeditor.c ivtools-1.1/src/IV-2_6/control.c ivtools-1.1/src/IV-2_6/deck2_6.c ivtools-1.1/src/IV-2_6/dialog2_6.c ivtools-1.1/src/IV-2_6/filebrowser.c ivtools-1.1/src/IV-2_6/filechooser.c ivtools-1.1/src/IV-2_6/frame.c ivtools-1.1/src/IV-2_6/glue2_6.c ivtools-1.1/src/IV-2_6/interactor.c ivtools-1.1/src/IV-2_6/matcheditor.c ivtools-1.1/src/IV-2_6/menu2_6.c ivtools-1.1/src/IV-2_6/message.c ivtools-1.1/src/IV-2_6/painter.c ivtools-1.1/src/IV-2_6/panner2_6.c ivtools-1.1/src/IV-2_6/perspective.c ivtools-1.1/src/IV-2_6/rubband.c ivtools-1.1/src/IV-2_6/rubcurve.c ivtools-1.1/src/IV-2_6/rubgroup.c ivtools-1.1/src/IV-2_6/rubline.c ivtools-1.1/src/IV-2_6/rubrect.c ivtools-1.1/src/IV-2_6/rubverts.c ivtools-1.1/src/IV-2_6/scene.c ivtools-1.1/src/IV-2_6/scrollbar2_6.c ivtools-1.1/src/IV-2_6/scroller2_6.c ivtools-1.1/src/IV-2_6/sensor.c ivtools-1.1/src/IV-2_6/shape.c ivtools-1.1/src/IV-2_6/strbrowser.c ivtools-1.1/src/IV-2_6/strchooser.c ivtools-1.1/src/IV-2_6/streditor.c ivtools-1.1/src/IV-2_6/subject.c ivtools-1.1/src/IV-2_6/textbuffer.c ivtools-1.1/src/IV-2_6/textdisplay.c ivtools-1.1/src/IV-2_6/texteditor.c ivtools-1.1/src/IV-2_6/tform2_6.c ivtools-1.1/src/IV-2_6/tray.c ivtools-1.1/src/IV-2_6/viewport.c ivtools-1.1/src/IV-2_6/world.c ivtools-1.1/src/IV-2_6/xbitmap2_6.c ivtools-1.1/src/IV-2_6/xevent2_6.c ivtools-1.1/src/IV-2_6/xinter.c ivtools-1.1/src/IV-2_6/xpainter.c ivtools-1.1/src/IV-2_6/xpattern.c ivtools-1.1/src/IV-X11/Imakefile ivtools-1.1/src/IV-X11/Makefile ivtools-1.1/src/IV-X11/glcontext.c ivtools-1.1/src/IV-X11/wtable.h ivtools-1.1/src/IV-X11/xbitmap.c ivtools-1.1/src/IV-X11/xbrush.c ivtools-1.1/src/IV-X11/xcanvas.c ivtools-1.1/src/IV-X11/xcolor.c ivtools-1.1/src/IV-X11/xcursor.c ivtools-1.1/src/IV-X11/xdrag.c ivtools-1.1/src/IV-X11/xevent.c ivtools-1.1/src/IV-X11/xfont.c ivtools-1.1/src/IV-X11/xraster.c ivtools-1.1/src/IV-X11/xreqerr.c ivtools-1.1/src/IV-X11/xselection.c ivtools-1.1/src/IV-X11/xwindow.c ivtools-1.1/src/IV-common/Imakefile ivtools-1.1/src/IV-common/Makefile ivtools-1.1/src/IV-common/listimpl.c ivtools-1.1/src/IV-common/math.c ivtools-1.1/src/IV-common/memory.c ivtools-1.1/src/IV-common/regexp.c ivtools-1.1/src/IV-common/resource.c ivtools-1.1/src/IV-common/string.c ivtools-1.1/src/IV-common/textbuffer.c ivtools-1.1/src/IV-common/tform2_6.c ivtools-1.1/src/IV-common/transformer.c ivtools-1.1/src/IV/Imakefile ivtools-1.1/src/IV/InterViews.defaults ivtools-1.1/src/IV/Makefile ivtools-1.1/src/IVGlyph/Imakefile ivtools-1.1/src/IVGlyph/Makefile ivtools-1.1/src/IVGlyph/bdfltform.c ivtools-1.1/src/IVGlyph/bdfltform.h ivtools-1.1/src/IVGlyph/bdtable.c ivtools-1.1/src/IVGlyph/bdtable.h ivtools-1.1/src/IVGlyph/bdvalue.c ivtools-1.1/src/IVGlyph/bdvalue.h ivtools-1.1/src/IVGlyph/boolform.c ivtools-1.1/src/IVGlyph/boolform.h ivtools-1.1/src/IVGlyph/charfield.c ivtools-1.1/src/IVGlyph/charfield.h ivtools-1.1/src/IVGlyph/dragedit.c ivtools-1.1/src/IVGlyph/dragedit.h ivtools-1.1/src/IVGlyph/enumform.c ivtools-1.1/src/IVGlyph/enumform.h ivtools-1.1/src/IVGlyph/exportchooser.c ivtools-1.1/src/IVGlyph/exportchooser.h ivtools-1.1/src/IVGlyph/fieldedit.c ivtools-1.1/src/IVGlyph/fieldedit.h ivtools-1.1/src/IVGlyph/figure.c ivtools-1.1/src/IVGlyph/figure.h ivtools-1.1/src/IVGlyph/gdialogs.c ivtools-1.1/src/IVGlyph/gdialogs.h ivtools-1.1/src/IVGlyph/globals.c ivtools-1.1/src/IVGlyph/globals.h ivtools-1.1/src/IVGlyph/grabber.bm ivtools-1.1/src/IVGlyph/grabberMask.bm ivtools-1.1/src/IVGlyph/idraw.c ivtools-1.1/src/IVGlyph/idraw.h ivtools-1.1/src/IVGlyph/importchooser.c ivtools-1.1/src/IVGlyph/importchooser.h ivtools-1.1/src/IVGlyph/namestate.c ivtools-1.1/src/IVGlyph/namestate.h ivtools-1.1/src/IVGlyph/observables.c ivtools-1.1/src/IVGlyph/observables.h ivtools-1.1/src/IVGlyph/odialogs.c ivtools-1.1/src/IVGlyph/odialogs.h ivtools-1.1/src/IVGlyph/ofilechooser.c ivtools-1.1/src/IVGlyph/ofilechooser.h ivtools-1.1/src/IVGlyph/printchooser.c ivtools-1.1/src/IVGlyph/printchooser.h ivtools-1.1/src/IVGlyph/saveaschooser.c ivtools-1.1/src/IVGlyph/saveaschooser.h ivtools-1.1/src/IVGlyph/scrollable.c ivtools-1.1/src/IVGlyph/scrollable.h ivtools-1.1/src/IVGlyph/strchooser.c ivtools-1.1/src/IVGlyph/strchooser.h ivtools-1.1/src/IVGlyph/stredit.c ivtools-1.1/src/IVGlyph/stredit.h ivtools-1.1/src/IVGlyph/strlist.c ivtools-1.1/src/IVGlyph/strlist.h ivtools-1.1/src/IVGlyph/textbuff.c ivtools-1.1/src/IVGlyph/textbuff.h ivtools-1.1/src/IVGlyph/textedit.c ivtools-1.1/src/IVGlyph/textedit.h ivtools-1.1/src/IVGlyph/texteditor.c ivtools-1.1/src/IVGlyph/texteditor.h ivtools-1.1/src/IVGlyph/textform.c ivtools-1.1/src/IVGlyph/textform.h ivtools-1.1/src/IVGlyph/textview.c ivtools-1.1/src/IVGlyph/textview.h ivtools-1.1/src/IVGlyph/textwindow.c ivtools-1.1/src/IVGlyph/textwindow.h ivtools-1.1/src/IVGlyph/toolbutton.c ivtools-1.1/src/IVGlyph/toolbutton.h ivtools-1.1/src/IVGlyph/valuator.c ivtools-1.1/src/IVGlyph/valuator.h ivtools-1.1/src/Imakefile ivtools-1.1/src/InterViews/Imakefile ivtools-1.1/src/InterViews/Makefile ivtools-1.1/src/InterViews/action.c ivtools-1.1/src/InterViews/adjust.c ivtools-1.1/src/InterViews/aggr.c ivtools-1.1/src/InterViews/align.c ivtools-1.1/src/InterViews/alloctbl.c ivtools-1.1/src/InterViews/arrcomp.c ivtools-1.1/src/InterViews/background.c ivtools-1.1/src/InterViews/bevel.c ivtools-1.1/src/InterViews/border.c ivtools-1.1/src/InterViews/box.c ivtools-1.1/src/InterViews/browser.c ivtools-1.1/src/InterViews/button.c ivtools-1.1/src/InterViews/character.c ivtools-1.1/src/InterViews/composition.c ivtools-1.1/src/InterViews/compositor.c ivtools-1.1/src/InterViews/debug.c ivtools-1.1/src/InterViews/deck.c ivtools-1.1/src/InterViews/dialogs.c ivtools-1.1/src/InterViews/fbrowser.c ivtools-1.1/src/InterViews/fchooser.c ivtools-1.1/src/InterViews/field.c ivtools-1.1/src/InterViews/geometry.c ivtools-1.1/src/InterViews/glyph.c ivtools-1.1/src/InterViews/group.c ivtools-1.1/src/InterViews/handler.c ivtools-1.1/src/InterViews/hit.c ivtools-1.1/src/InterViews/image.c ivtools-1.1/src/InterViews/input.c ivtools-1.1/src/InterViews/kit.c ivtools-1.1/src/InterViews/label.c ivtools-1.1/src/InterViews/layout.c ivtools-1.1/src/InterViews/lrmarker.c ivtools-1.1/src/InterViews/menu.c ivtools-1.1/src/InterViews/mf_dialogs.c ivtools-1.1/src/InterViews/mf_kit.c ivtools-1.1/src/InterViews/mono_kit.c ivtools-1.1/src/InterViews/monoglyph.c ivtools-1.1/src/InterViews/observe.c ivtools-1.1/src/InterViews/ol_dialogs.c ivtools-1.1/src/InterViews/ol_kit.c ivtools-1.1/src/InterViews/page.c ivtools-1.1/src/InterViews/patch.c ivtools-1.1/src/InterViews/place.c ivtools-1.1/src/InterViews/polyglyph.c ivtools-1.1/src/InterViews/printer.c ivtools-1.1/src/InterViews/psfont.c ivtools-1.1/src/InterViews/regexp.c ivtools-1.1/src/InterViews/resource.c ivtools-1.1/src/InterViews/rule.c ivtools-1.1/src/InterViews/scrbox.c ivtools-1.1/src/InterViews/session.c ivtools-1.1/src/InterViews/shadow.c ivtools-1.1/src/InterViews/simpcomp.c ivtools-1.1/src/InterViews/slider.c ivtools-1.1/src/InterViews/smf_kit.c ivtools-1.1/src/InterViews/stencil.c ivtools-1.1/src/InterViews/stepper.c ivtools-1.1/src/InterViews/style.c ivtools-1.1/src/InterViews/superpose.c ivtools-1.1/src/InterViews/target.c ivtools-1.1/src/InterViews/telltale.c ivtools-1.1/src/InterViews/texcomp.c ivtools-1.1/src/InterViews/tformsetter.c ivtools-1.1/src/InterViews/tiff.c ivtools-1.1/src/InterViews/tile.c ivtools-1.1/src/InterViews/transformer.c ivtools-1.1/src/InterViews/xymarker.c ivtools-1.1/src/IueServ/Imakefile ivtools-1.1/src/IueServ/Makefile ivtools-1.1/src/IueServ/exportfunc.c ivtools-1.1/src/IueServ/exportfunc.h ivtools-1.1/src/IueServ/ipfunc.c ivtools-1.1/src/IueServ/ipfunc.h ivtools-1.1/src/IueServ/iueclasses.h ivtools-1.1/src/IueServ/iuecomps.c ivtools-1.1/src/IueServ/iuecomps.h ivtools-1.1/src/IueServ/iuefunc.c ivtools-1.1/src/IueServ/iuefunc.h ivtools-1.1/src/IueServ/iuehandler.c ivtools-1.1/src/IueServ/iuehandler.h ivtools-1.1/src/IueServ/roifunc.c ivtools-1.1/src/IueServ/roifunc.h ivtools-1.1/src/Makefile ivtools-1.1/src/OS/Imakefile ivtools-1.1/src/OS/Makefile ivtools-1.1/src/OS/directory.c ivtools-1.1/src/OS/file.c ivtools-1.1/src/OS/host.c ivtools-1.1/src/OS/listimpl.c ivtools-1.1/src/OS/math.c ivtools-1.1/src/OS/memory.c ivtools-1.1/src/OS/string.c ivtools-1.1/src/OS/ustring.c ivtools-1.1/src/OverlayUnidraw/Imakefile ivtools-1.1/src/OverlayUnidraw/Makefile ivtools-1.1/src/OverlayUnidraw/aceimport.c ivtools-1.1/src/OverlayUnidraw/aceimport.h ivtools-1.1/src/OverlayUnidraw/algebra3.h ivtools-1.1/src/OverlayUnidraw/annotate.c ivtools-1.1/src/OverlayUnidraw/annotate.h ivtools-1.1/src/OverlayUnidraw/attrtool.c ivtools-1.1/src/OverlayUnidraw/attrtool.h ivtools-1.1/src/OverlayUnidraw/clipline.c ivtools-1.1/src/OverlayUnidraw/clipline.h ivtools-1.1/src/OverlayUnidraw/cliplinepoly.c ivtools-1.1/src/OverlayUnidraw/cliplinepoly.h ivtools-1.1/src/OverlayUnidraw/clippoly.c ivtools-1.1/src/OverlayUnidraw/clippoly.h ivtools-1.1/src/OverlayUnidraw/grayraster.c ivtools-1.1/src/OverlayUnidraw/grayraster.h ivtools-1.1/src/OverlayUnidraw/grloctool.c ivtools-1.1/src/OverlayUnidraw/grloctool.h ivtools-1.1/src/OverlayUnidraw/indexmixins.c ivtools-1.1/src/OverlayUnidraw/indexmixins.h ivtools-1.1/src/OverlayUnidraw/leakchecker.h ivtools-1.1/src/OverlayUnidraw/ovabout.c ivtools-1.1/src/OverlayUnidraw/ovabout.h ivtools-1.1/src/OverlayUnidraw/ovadjuster.c ivtools-1.1/src/OverlayUnidraw/ovadjuster.h ivtools-1.1/src/OverlayUnidraw/ovarrow.c ivtools-1.1/src/OverlayUnidraw/ovarrow.h ivtools-1.1/src/OverlayUnidraw/ovcamcmds.c ivtools-1.1/src/OverlayUnidraw/ovcamcmds.h ivtools-1.1/src/OverlayUnidraw/ovcatalog.c ivtools-1.1/src/OverlayUnidraw/ovcatalog.h ivtools-1.1/src/OverlayUnidraw/ovchainview.c ivtools-1.1/src/OverlayUnidraw/ovchainview.h ivtools-1.1/src/OverlayUnidraw/ovclasses.h ivtools-1.1/src/OverlayUnidraw/ovclip.c ivtools-1.1/src/OverlayUnidraw/ovclip.h ivtools-1.1/src/OverlayUnidraw/ovcmds.c ivtools-1.1/src/OverlayUnidraw/ovcmds.h ivtools-1.1/src/OverlayUnidraw/ovcomps.c ivtools-1.1/src/OverlayUnidraw/ovcomps.h ivtools-1.1/src/OverlayUnidraw/ovcreator.c ivtools-1.1/src/OverlayUnidraw/ovcreator.h ivtools-1.1/src/OverlayUnidraw/ovctrl.c ivtools-1.1/src/OverlayUnidraw/ovctrl.h ivtools-1.1/src/OverlayUnidraw/ovdamage.c ivtools-1.1/src/OverlayUnidraw/ovdamage.h ivtools-1.1/src/OverlayUnidraw/ovdialog.c ivtools-1.1/src/OverlayUnidraw/ovdialog.h ivtools-1.1/src/OverlayUnidraw/ovdoer.c ivtools-1.1/src/OverlayUnidraw/ovdoer.h ivtools-1.1/src/OverlayUnidraw/oved.c ivtools-1.1/src/OverlayUnidraw/oved.h ivtools-1.1/src/OverlayUnidraw/ovellipse.c ivtools-1.1/src/OverlayUnidraw/ovellipse.h ivtools-1.1/src/OverlayUnidraw/ovexport.c ivtools-1.1/src/OverlayUnidraw/ovexport.h ivtools-1.1/src/OverlayUnidraw/ovfile.c ivtools-1.1/src/OverlayUnidraw/ovfile.h ivtools-1.1/src/OverlayUnidraw/ovfixview.c ivtools-1.1/src/OverlayUnidraw/ovfixview.h ivtools-1.1/src/OverlayUnidraw/ovgdialog.c ivtools-1.1/src/OverlayUnidraw/ovgdialog.h ivtools-1.1/src/OverlayUnidraw/ovhull.c ivtools-1.1/src/OverlayUnidraw/ovhull.h ivtools-1.1/src/OverlayUnidraw/ovimport.c ivtools-1.1/src/OverlayUnidraw/ovimport.h ivtools-1.1/src/OverlayUnidraw/ovipcmds.c ivtools-1.1/src/OverlayUnidraw/ovipcmds.h ivtools-1.1/src/OverlayUnidraw/ovkit.c ivtools-1.1/src/OverlayUnidraw/ovkit.h ivtools-1.1/src/OverlayUnidraw/ovline.c ivtools-1.1/src/OverlayUnidraw/ovline.h ivtools-1.1/src/OverlayUnidraw/ovmanips.c ivtools-1.1/src/OverlayUnidraw/ovmanips.h ivtools-1.1/src/OverlayUnidraw/ovpage.c ivtools-1.1/src/OverlayUnidraw/ovpage.h ivtools-1.1/src/OverlayUnidraw/ovpainter.c ivtools-1.1/src/OverlayUnidraw/ovpainter.h ivtools-1.1/src/OverlayUnidraw/ovpanner.c ivtools-1.1/src/OverlayUnidraw/ovpanner.h ivtools-1.1/src/OverlayUnidraw/ovpolygon.c ivtools-1.1/src/OverlayUnidraw/ovpolygon.h ivtools-1.1/src/OverlayUnidraw/ovprecise.c ivtools-1.1/src/OverlayUnidraw/ovprecise.h ivtools-1.1/src/OverlayUnidraw/ovprint.c ivtools-1.1/src/OverlayUnidraw/ovprint.h ivtools-1.1/src/OverlayUnidraw/ovpspict.c ivtools-1.1/src/OverlayUnidraw/ovpspict.h ivtools-1.1/src/OverlayUnidraw/ovpsview.c ivtools-1.1/src/OverlayUnidraw/ovpsview.h ivtools-1.1/src/OverlayUnidraw/ovraster.c ivtools-1.1/src/OverlayUnidraw/ovraster.h ivtools-1.1/src/OverlayUnidraw/ovrect.c ivtools-1.1/src/OverlayUnidraw/ovrect.h ivtools-1.1/src/OverlayUnidraw/ovrestimage.c ivtools-1.1/src/OverlayUnidraw/ovrestimage.h ivtools-1.1/src/OverlayUnidraw/ovselect.c ivtools-1.1/src/OverlayUnidraw/ovselect.h ivtools-1.1/src/OverlayUnidraw/ovselection.c ivtools-1.1/src/OverlayUnidraw/ovselection.h ivtools-1.1/src/OverlayUnidraw/ovshowhide.c ivtools-1.1/src/OverlayUnidraw/ovshowhide.h ivtools-1.1/src/OverlayUnidraw/ovspline.c ivtools-1.1/src/OverlayUnidraw/ovspline.h ivtools-1.1/src/OverlayUnidraw/ovstates.c ivtools-1.1/src/OverlayUnidraw/ovstates.h ivtools-1.1/src/OverlayUnidraw/ovstencil.c ivtools-1.1/src/OverlayUnidraw/ovstencil.h ivtools-1.1/src/OverlayUnidraw/ovtext.c ivtools-1.1/src/OverlayUnidraw/ovtext.h ivtools-1.1/src/OverlayUnidraw/ovunidraw.c ivtools-1.1/src/OverlayUnidraw/ovunidraw.h ivtools-1.1/src/OverlayUnidraw/ovvars.c ivtools-1.1/src/OverlayUnidraw/ovvars.h ivtools-1.1/src/OverlayUnidraw/ovvertices.c ivtools-1.1/src/OverlayUnidraw/ovvertices.h ivtools-1.1/src/OverlayUnidraw/ovviewer.c ivtools-1.1/src/OverlayUnidraw/ovviewer.h ivtools-1.1/src/OverlayUnidraw/ovviews.c ivtools-1.1/src/OverlayUnidraw/ovviews.h ivtools-1.1/src/OverlayUnidraw/paramlist.h ivtools-1.1/src/OverlayUnidraw/phold.h ivtools-1.1/src/OverlayUnidraw/ptinpoly.c ivtools-1.1/src/OverlayUnidraw/ptinpoly.h ivtools-1.1/src/OverlayUnidraw/rastercmds.c ivtools-1.1/src/OverlayUnidraw/rastercmds.h ivtools-1.1/src/OverlayUnidraw/scriptview.c ivtools-1.1/src/OverlayUnidraw/scriptview.h ivtools-1.1/src/OverlayUnidraw/setattrbyexpr.c ivtools-1.1/src/OverlayUnidraw/setattrbyexpr.h ivtools-1.1/src/OverlayUnidraw/slctbyattr.c ivtools-1.1/src/OverlayUnidraw/slctbyattr.h ivtools-1.1/src/OverlayUnidraw/textfile.c ivtools-1.1/src/OverlayUnidraw/textfile.h ivtools-1.1/src/TIFF/Copyright ivtools-1.1/src/TIFF/HOWTO ivtools-1.1/src/TIFF/Imakefile ivtools-1.1/src/TIFF/Makefile ivtools-1.1/src/TIFF/README ivtools-1.1/src/TIFF/VERSION ivtools-1.1/src/TIFF/machdep.h ivtools-1.1/src/TIFF/mkg3states.c ivtools-1.1/src/TIFF/mkspans.c ivtools-1.1/src/TIFF/prototypes.h ivtools-1.1/src/TIFF/t4.h ivtools-1.1/src/TIFF/tif_aux.c ivtools-1.1/src/TIFF/tif_ccittrle.c ivtools-1.1/src/TIFF/tif_close.c ivtools-1.1/src/TIFF/tif_compat.c ivtools-1.1/src/TIFF/tif_compress.c ivtools-1.1/src/TIFF/tif_dir.c ivtools-1.1/src/TIFF/tif_dirinfo.c ivtools-1.1/src/TIFF/tif_dirread.c ivtools-1.1/src/TIFF/tif_dirwrite.c ivtools-1.1/src/TIFF/tif_dumpmode.c ivtools-1.1/src/TIFF/tif_error.c ivtools-1.1/src/TIFF/tif_fax3.c ivtools-1.1/src/TIFF/tif_fax3.h ivtools-1.1/src/TIFF/tif_fax4.c ivtools-1.1/src/TIFF/tif_flush.c ivtools-1.1/src/TIFF/tif_getimage.c ivtools-1.1/src/TIFF/tif_jpeg.c ivtools-1.1/src/TIFF/tif_lzw.c ivtools-1.1/src/TIFF/tif_machdep.c ivtools-1.1/src/TIFF/tif_next.c ivtools-1.1/src/TIFF/tif_open.c ivtools-1.1/src/TIFF/tif_packbits.c ivtools-1.1/src/TIFF/tif_print.c ivtools-1.1/src/TIFF/tif_read.c ivtools-1.1/src/TIFF/tif_strip.c ivtools-1.1/src/TIFF/tif_swab.c ivtools-1.1/src/TIFF/tif_thunder.c ivtools-1.1/src/TIFF/tif_tile.c ivtools-1.1/src/TIFF/tif_version.c ivtools-1.1/src/TIFF/tif_warning.c ivtools-1.1/src/TIFF/tif_write.c ivtools-1.1/src/TIFF/tiffcompat.h ivtools-1.1/src/TIFF/tiffioP.h ivtools-1.1/src/Time/Date.c ivtools-1.1/src/Time/Date.h ivtools-1.1/src/Time/Imakefile ivtools-1.1/src/Time/Makefile ivtools-1.1/src/Time/Time.c ivtools-1.1/src/Time/Time.h ivtools-1.1/src/Time/obstime.c ivtools-1.1/src/Time/obstime.h ivtools-1.1/src/Time/timeglyph.c ivtools-1.1/src/Time/timeglyph.h ivtools-1.1/src/TopoFace/Imakefile ivtools-1.1/src/TopoFace/Makefile ivtools-1.1/src/TopoFace/fgeomobjs.c ivtools-1.1/src/TopoFace/fgeomobjs.h ivtools-1.1/src/TopoFace/topoedge.c ivtools-1.1/src/TopoFace/topoedge.h ivtools-1.1/src/TopoFace/topoedgelist.c ivtools-1.1/src/TopoFace/topoedgelist.h ivtools-1.1/src/TopoFace/topoelt.c ivtools-1.1/src/TopoFace/topoelt.h ivtools-1.1/src/TopoFace/topoface.c ivtools-1.1/src/TopoFace/topoface.h ivtools-1.1/src/TopoFace/toponode.c ivtools-1.1/src/TopoFace/toponode.h ivtools-1.1/src/UniIdraw/Imakefile ivtools-1.1/src/UniIdraw/Makefile ivtools-1.1/src/UniIdraw/idarrow.c ivtools-1.1/src/UniIdraw/idarrow.h ivtools-1.1/src/UniIdraw/idarrowhead.c ivtools-1.1/src/UniIdraw/idarrowhead.h ivtools-1.1/src/UniIdraw/idarrows.c ivtools-1.1/src/UniIdraw/idarrows.h ivtools-1.1/src/UniIdraw/idcatalog.c ivtools-1.1/src/UniIdraw/idcatalog.h ivtools-1.1/src/UniIdraw/idclasses.h ivtools-1.1/src/UniIdraw/idcmds.c ivtools-1.1/src/UniIdraw/idcmds.h ivtools-1.1/src/UniIdraw/idcomp.c ivtools-1.1/src/UniIdraw/idcomp.h ivtools-1.1/src/UniIdraw/idcreator.c ivtools-1.1/src/UniIdraw/idcreator.h ivtools-1.1/src/UniIdraw/iddialogs.c ivtools-1.1/src/UniIdraw/iddialogs.h ivtools-1.1/src/UniIdraw/ided.c ivtools-1.1/src/UniIdraw/ided.h ivtools-1.1/src/UniIdraw/idkybd.c ivtools-1.1/src/UniIdraw/idkybd.h ivtools-1.1/src/UniIdraw/idvars.c ivtools-1.1/src/UniIdraw/idvars.h ivtools-1.1/src/UniIdraw/idversion.h ivtools-1.1/src/Unidraw-common/Imakefile ivtools-1.1/src/Unidraw-common/Makefile ivtools-1.1/src/Unidraw-common/component.c ivtools-1.1/src/Unidraw-common/compview.c ivtools-1.1/src/Unidraw-common/geomobjs.c ivtools-1.1/src/Unidraw-common/iterator.c ivtools-1.1/src/Unidraw-common/uarray.c ivtools-1.1/src/Unidraw-common/uhash.c ivtools-1.1/src/Unidraw-common/ulist.c ivtools-1.1/src/Unidraw-common/umap.c ivtools-1.1/src/Unidraw/Imakefile ivtools-1.1/src/Unidraw/Makefile ivtools-1.1/src/Unidraw/align.c ivtools-1.1/src/Unidraw/brushcmd.c ivtools-1.1/src/Unidraw/catalog.c ivtools-1.1/src/Unidraw/catcmds.c ivtools-1.1/src/Unidraw/cglue.c ivtools-1.1/src/Unidraw/clipboard.c ivtools-1.1/src/Unidraw/colorcmd.c ivtools-1.1/src/Unidraw/command.c ivtools-1.1/src/Unidraw/component.c ivtools-1.1/src/Unidraw/compview.c ivtools-1.1/src/Unidraw/connect.c ivtools-1.1/src/Unidraw/connector.c ivtools-1.1/src/Unidraw/creator.c ivtools-1.1/src/Unidraw/csolver.c ivtools-1.1/src/Unidraw/ctrlinfo.c ivtools-1.1/src/Unidraw/damage.c ivtools-1.1/src/Unidraw/data.c ivtools-1.1/src/Unidraw/datas.c ivtools-1.1/src/Unidraw/dialogs.c ivtools-1.1/src/Unidraw/edit.c ivtools-1.1/src/Unidraw/editor.c ivtools-1.1/src/Unidraw/editorinfo.c ivtools-1.1/src/Unidraw/ellipse.c ivtools-1.1/src/Unidraw/ellipses.c ivtools-1.1/src/Unidraw/externview.c ivtools-1.1/src/Unidraw/font.c ivtools-1.1/src/Unidraw/geomobjs.c ivtools-1.1/src/Unidraw/globals.c ivtools-1.1/src/Unidraw/graphic.c ivtools-1.1/src/Unidraw/grblock.c ivtools-1.1/src/Unidraw/grcomp.c ivtools-1.1/src/Unidraw/grcomptool.c ivtools-1.1/src/Unidraw/grid.c ivtools-1.1/src/Unidraw/grview.c ivtools-1.1/src/Unidraw/gvupdater.c ivtools-1.1/src/Unidraw/import.c ivtools-1.1/src/Unidraw/iterator.c ivtools-1.1/src/Unidraw/keymap.c ivtools-1.1/src/Unidraw/kybd.c ivtools-1.1/src/Unidraw/line.c ivtools-1.1/src/Unidraw/lines.c ivtools-1.1/src/Unidraw/link.c ivtools-1.1/src/Unidraw/macro.c ivtools-1.1/src/Unidraw/magnify.c ivtools-1.1/src/Unidraw/manip.c ivtools-1.1/src/Unidraw/manips.c ivtools-1.1/src/Unidraw/move.c ivtools-1.1/src/Unidraw/nop.c ivtools-1.1/src/Unidraw/pad.c ivtools-1.1/src/Unidraw/patcmd.c ivtools-1.1/src/Unidraw/path.c ivtools-1.1/src/Unidraw/picture.c ivtools-1.1/src/Unidraw/pin.c ivtools-1.1/src/Unidraw/polygon.c ivtools-1.1/src/Unidraw/polygons.c ivtools-1.1/src/Unidraw/pspaint.c ivtools-1.1/src/Unidraw/psview.c ivtools-1.1/src/Unidraw/rastercomp.c ivtools-1.1/src/Unidraw/rasterrect.c ivtools-1.1/src/Unidraw/rect.c ivtools-1.1/src/Unidraw/reshape.c ivtools-1.1/src/Unidraw/rotate.c ivtools-1.1/src/Unidraw/scale.c ivtools-1.1/src/Unidraw/select.c ivtools-1.1/src/Unidraw/selection.c ivtools-1.1/src/Unidraw/slot.c ivtools-1.1/src/Unidraw/spline.c ivtools-1.1/src/Unidraw/splines.c ivtools-1.1/src/Unidraw/statevar.c ivtools-1.1/src/Unidraw/statevars.c ivtools-1.1/src/Unidraw/stateview.c ivtools-1.1/src/Unidraw/stateviews.c ivtools-1.1/src/Unidraw/stencilcomp.c ivtools-1.1/src/Unidraw/stretch.c ivtools-1.1/src/Unidraw/struct.c ivtools-1.1/src/Unidraw/text.c ivtools-1.1/src/Unidraw/tool.c ivtools-1.1/src/Unidraw/transfn.c ivtools-1.1/src/Unidraw/transfns.c ivtools-1.1/src/Unidraw/transforms.c ivtools-1.1/src/Unidraw/uarray.c ivtools-1.1/src/Unidraw/uctrl.c ivtools-1.1/src/Unidraw/uctrls.c ivtools-1.1/src/Unidraw/uhash.c ivtools-1.1/src/Unidraw/ulabel.c ivtools-1.1/src/Unidraw/ulist.c ivtools-1.1/src/Unidraw/umap.c ivtools-1.1/src/Unidraw/unidraw.c ivtools-1.1/src/Unidraw/upage.c ivtools-1.1/src/Unidraw/ustencil.c ivtools-1.1/src/Unidraw/vertices.c ivtools-1.1/src/Unidraw/verts.c ivtools-1.1/src/Unidraw/viewcmds.c ivtools-1.1/src/Unidraw/viewer.c ivtools-1.1/src/comdraw/Imakefile ivtools-1.1/src/comdraw/Makefile ivtools-1.1/src/comdraw/README ivtools-1.1/src/comdraw/main.c ivtools-1.1/src/comterp_/Imakefile ivtools-1.1/src/comterp_/Makefile ivtools-1.1/src/comterp_/README ivtools-1.1/src/comterp_/main.c ivtools-1.1/src/comtest/Imakefile ivtools-1.1/src/comtest/Makefile ivtools-1.1/src/comtest/main.c ivtools-1.1/src/dclock/Imakefile ivtools-1.1/src/dclock/Makefile ivtools-1.1/src/dclock/clocktime.c ivtools-1.1/src/dclock/clocktime.h ivtools-1.1/src/dclock/data.c ivtools-1.1/src/dclock/data.h ivtools-1.1/src/dclock/dclock.c ivtools-1.1/src/dclock/dclock.h ivtools-1.1/src/dclock/dface.c ivtools-1.1/src/dclock/dface.h ivtools-1.1/src/dclock/digit.c ivtools-1.1/src/dclock/digit.h ivtools-1.1/src/dclock/segment.c ivtools-1.1/src/dclock/segment.h ivtools-1.1/src/drawserv_/Imakefile ivtools-1.1/src/drawserv_/Makefile ivtools-1.1/src/drawserv_/main.c ivtools-1.1/src/drawtool/Imakefile ivtools-1.1/src/drawtool/Makefile ivtools-1.1/src/drawtool/README ivtools-1.1/src/drawtool/main.c ivtools-1.1/src/flipbook/Imakefile ivtools-1.1/src/flipbook/Makefile ivtools-1.1/src/flipbook/README ivtools-1.1/src/flipbook/main.c ivtools-1.1/src/glyphs/Imakefile ivtools-1.1/src/glyphs/Makefile ivtools-1.1/src/glyphs/README ivtools-1.1/src/glyphs/bdvtable/Imakefile ivtools-1.1/src/glyphs/bdvtable/Makefile ivtools-1.1/src/glyphs/bdvtable/main.c ivtools-1.1/src/glyphs/examples3.1/Imakefile ivtools-1.1/src/glyphs/examples3.1/Makefile ivtools-1.1/src/glyphs/examples3.1/README ivtools-1.1/src/glyphs/examples3.1/box1/Imakefile ivtools-1.1/src/glyphs/examples3.1/box1/Makefile ivtools-1.1/src/glyphs/examples3.1/box1/main.c ivtools-1.1/src/glyphs/examples3.1/box2/Imakefile ivtools-1.1/src/glyphs/examples3.1/box2/Makefile ivtools-1.1/src/glyphs/examples3.1/box2/main.c ivtools-1.1/src/glyphs/examples3.1/box3/Imakefile ivtools-1.1/src/glyphs/examples3.1/box3/Makefile ivtools-1.1/src/glyphs/examples3.1/box3/main.c ivtools-1.1/src/glyphs/examples3.1/box4/Imakefile ivtools-1.1/src/glyphs/examples3.1/box4/Makefile ivtools-1.1/src/glyphs/examples3.1/box4/main.c ivtools-1.1/src/glyphs/examples3.1/box5/Imakefile ivtools-1.1/src/glyphs/examples3.1/box5/Makefile ivtools-1.1/src/glyphs/examples3.1/box5/main.c ivtools-1.1/src/glyphs/examples3.1/button1/Imakefile ivtools-1.1/src/glyphs/examples3.1/button1/Makefile ivtools-1.1/src/glyphs/examples3.1/button1/main.c ivtools-1.1/src/glyphs/examples3.1/button2/Imakefile ivtools-1.1/src/glyphs/examples3.1/button2/Makefile ivtools-1.1/src/glyphs/examples3.1/button2/jello.tif ivtools-1.1/src/glyphs/examples3.1/button2/main.c ivtools-1.1/src/glyphs/examples3.1/button3/Imakefile ivtools-1.1/src/glyphs/examples3.1/button3/Makefile ivtools-1.1/src/glyphs/examples3.1/button3/main.c ivtools-1.1/src/glyphs/examples3.1/bvalue/Imakefile ivtools-1.1/src/glyphs/examples3.1/bvalue/Makefile ivtools-1.1/src/glyphs/examples3.1/bvalue/main.c ivtools-1.1/src/glyphs/examples3.1/circle/Imakefile ivtools-1.1/src/glyphs/examples3.1/circle/Makefile ivtools-1.1/src/glyphs/examples3.1/circle/main.c ivtools-1.1/src/glyphs/examples3.1/drag/Imakefile ivtools-1.1/src/glyphs/examples3.1/drag/Makefile ivtools-1.1/src/glyphs/examples3.1/drag/main.c ivtools-1.1/src/glyphs/examples3.1/fonts/Imakefile ivtools-1.1/src/glyphs/examples3.1/fonts/Makefile ivtools-1.1/src/glyphs/examples3.1/fonts/main.c ivtools-1.1/src/glyphs/examples3.1/himom/Imakefile ivtools-1.1/src/glyphs/examples3.1/himom/Makefile ivtools-1.1/src/glyphs/examples3.1/himom/main.c ivtools-1.1/src/glyphs/examples3.1/image/Imakefile ivtools-1.1/src/glyphs/examples3.1/image/Makefile ivtools-1.1/src/glyphs/examples3.1/image/main.c ivtools-1.1/src/glyphs/examples3.1/ips/Imakefile ivtools-1.1/src/glyphs/examples3.1/ips/Makefile ivtools-1.1/src/glyphs/examples3.1/ips/figure.c ivtools-1.1/src/glyphs/examples3.1/ips/figure.h ivtools-1.1/src/glyphs/examples3.1/ips/idraw.c ivtools-1.1/src/glyphs/examples3.1/ips/idraw.h ivtools-1.1/src/glyphs/examples3.1/ips/main.c ivtools-1.1/src/glyphs/examples3.1/menu/Imakefile ivtools-1.1/src/glyphs/examples3.1/menu/Makefile ivtools-1.1/src/glyphs/examples3.1/menu/main.c ivtools-1.1/src/glyphs/examples3.1/patch/Imakefile ivtools-1.1/src/glyphs/examples3.1/patch/Makefile ivtools-1.1/src/glyphs/examples3.1/patch/main.c ivtools-1.1/src/glyphs/examples3.1/plot/Axis.c ivtools-1.1/src/glyphs/examples3.1/plot/Axis.h ivtools-1.1/src/glyphs/examples3.1/plot/Graph.c ivtools-1.1/src/glyphs/examples3.1/plot/Graph.h ivtools-1.1/src/glyphs/examples3.1/plot/Imakefile ivtools-1.1/src/glyphs/examples3.1/plot/Makefile ivtools-1.1/src/glyphs/examples3.1/plot/Plot.c ivtools-1.1/src/glyphs/examples3.1/plot/Plot.h ivtools-1.1/src/glyphs/examples3.1/plot/README ivtools-1.1/src/glyphs/examples3.1/plot/main.c ivtools-1.1/src/glyphs/examples3.1/plot/rpc_read.c ivtools-1.1/src/glyphs/examples3.1/plot/rpc_read.h ivtools-1.1/src/glyphs/examples3.1/preview/Imakefile ivtools-1.1/src/glyphs/examples3.1/preview/Makefile ivtools-1.1/src/glyphs/examples3.1/preview/input ivtools-1.1/src/glyphs/examples3.1/preview/main.c ivtools-1.1/src/glyphs/examples3.1/print/Imakefile ivtools-1.1/src/glyphs/examples3.1/print/Makefile ivtools-1.1/src/glyphs/examples3.1/print/main.c ivtools-1.1/src/glyphs/examples3.1/rubband/Imakefile ivtools-1.1/src/glyphs/examples3.1/rubband/Makefile ivtools-1.1/src/glyphs/examples3.1/rubband/main.c ivtools-1.1/src/glyphs/examples3.1/sendplot/Imakefile ivtools-1.1/src/glyphs/examples3.1/sendplot/Makefile ivtools-1.1/src/glyphs/examples3.1/sendplot/main.c ivtools-1.1/src/glyphs/examples3.1/sendplot/rpc_write.c ivtools-1.1/src/glyphs/examples3.1/sendplot/rpc_write.h ivtools-1.1/src/glyphs/examples3.1/zoomer/Imakefile ivtools-1.1/src/glyphs/examples3.1/zoomer/Makefile ivtools-1.1/src/glyphs/examples3.1/zoomer/main.c ivtools-1.1/src/glyphs/formdemo/Imakefile ivtools-1.1/src/glyphs/formdemo/Makefile ivtools-1.1/src/glyphs/formdemo/main.c ivtools-1.1/src/glyphs/gclock/Imakefile ivtools-1.1/src/glyphs/gclock/Makefile ivtools-1.1/src/glyphs/gclock/main.c ivtools-1.1/src/glyphs/meter/Imakefile ivtools-1.1/src/glyphs/meter/Makefile ivtools-1.1/src/glyphs/meter/main.c ivtools-1.1/src/glyphs/morpher/Imakefile ivtools-1.1/src/glyphs/morpher/Makefile ivtools-1.1/src/glyphs/morpher/README ivtools-1.1/src/glyphs/morpher/balls ivtools-1.1/src/glyphs/morpher/glypheditor.c ivtools-1.1/src/glyphs/morpher/glypheditor.h ivtools-1.1/src/glyphs/morpher/glyphviewer.c ivtools-1.1/src/glyphs/morpher/glyphviewer.h ivtools-1.1/src/glyphs/morpher/icons/cont_play ivtools-1.1/src/glyphs/morpher/icons/fast_forward ivtools-1.1/src/glyphs/morpher/icons/fast_reverse ivtools-1.1/src/glyphs/morpher/icons/forward_pause ivtools-1.1/src/glyphs/morpher/icons/forward_play ivtools-1.1/src/glyphs/morpher/icons/new-record ivtools-1.1/src/glyphs/morpher/icons/panel ivtools-1.1/src/glyphs/morpher/icons/pause ivtools-1.1/src/glyphs/morpher/icons/record ivtools-1.1/src/glyphs/morpher/icons/reverse_pause ivtools-1.1/src/glyphs/morpher/icons/reverse_play ivtools-1.1/src/glyphs/morpher/main.c ivtools-1.1/src/glyphs/morpher/man.0 ivtools-1.1/src/glyphs/morpher/man.1 ivtools-1.1/src/glyphs/morpher/morpher.c ivtools-1.1/src/glyphs/morpher/morpher.h ivtools-1.1/src/glyphs/morpher/rect ivtools-1.1/src/glyphs/radiogroup/Imakefile ivtools-1.1/src/glyphs/radiogroup/Makefile ivtools-1.1/src/glyphs/radiogroup/main.c ivtools-1.1/src/glyphs/scrollable/Imakefile ivtools-1.1/src/glyphs/scrollable/Makefile ivtools-1.1/src/glyphs/scrollable/main.c ivtools-1.1/src/glyphs/scrollfield/Imakefile ivtools-1.1/src/glyphs/scrollfield/Makefile ivtools-1.1/src/glyphs/scrollfield/main.c ivtools-1.1/src/glyphs/strchooser/Imakefile ivtools-1.1/src/glyphs/strchooser/Makefile ivtools-1.1/src/glyphs/strchooser/main.c ivtools-1.1/src/glyphs/timestamp/Imakefile ivtools-1.1/src/glyphs/timestamp/Makefile ivtools-1.1/src/glyphs/timestamp/main.c ivtools-1.1/src/glyphterp/Imakefile ivtools-1.1/src/glyphterp/Makefile ivtools-1.1/src/glyphterp/main.c ivtools-1.1/src/graphdraw/Imakefile ivtools-1.1/src/graphdraw/Makefile ivtools-1.1/src/graphdraw/README ivtools-1.1/src/graphdraw/main.c ivtools-1.1/src/html/Imakefile ivtools-1.1/src/html/Makefile ivtools-1.1/src/html/README ivtools-1.1/src/html/getman31.sh ivtools-1.1/src/html/getrefman31.sh ivtools-1.1/src/html/templates/CLASS.html.tmpl ivtools-1.1/src/html/templates/Imakefile ivtools-1.1/src/html/templates/Makefile ivtools-1.1/src/html/templates/bug_m.flt ivtools-1.1/src/html/templates/dr_m.flt ivtools-1.1/src/html/templates/err_m.flt ivtools-1.1/src/html/templates/in_m.flt ivtools-1.1/src/html/templates/includeflt.flt ivtools-1.1/src/html/templates/index.html.tmpl ivtools-1.1/src/html/templates/linkflt.flt ivtools-1.1/src/html/templates/other.html.tmpl ivtools-1.1/src/html/templates/out_m.flt ivtools-1.1/src/html/templates/ret_m.flt ivtools-1.1/src/html/templates/smindex.html.tmpl ivtools-1.1/src/html/templates/time.flt ivtools-1.1/src/iclass/Imakefile ivtools-1.1/src/iclass/Makefile ivtools-1.1/src/iclass/classbuffer.c ivtools-1.1/src/iclass/classbuffer.h ivtools-1.1/src/iclass/classeditor.c ivtools-1.1/src/iclass/classeditor.h ivtools-1.1/src/iclass/classinfo.c ivtools-1.1/src/iclass/classinfo.h ivtools-1.1/src/iclass/dialogs.c ivtools-1.1/src/iclass/dialogs.h ivtools-1.1/src/iclass/direct.c ivtools-1.1/src/iclass/direct.h ivtools-1.1/src/iclass/globals.c ivtools-1.1/src/iclass/globals.h ivtools-1.1/src/iclass/iclass.c ivtools-1.1/src/iclass/iclass.h ivtools-1.1/src/iclass/main.c ivtools-1.1/src/idemo/Idemo.defaults ivtools-1.1/src/idemo/Imakefile ivtools-1.1/src/idemo/Makefile ivtools-1.1/src/idemo/main.c ivtools-1.1/src/idraw/Imakefile ivtools-1.1/src/idraw/Makefile ivtools-1.1/src/idraw/README ivtools-1.1/src/idraw/main.c ivtools-1.1/src/include/Dispatch/Imakefile ivtools-1.1/src/include/Dispatch/Makefile ivtools-1.1/src/include/Dispatch/_defines.h ivtools-1.1/src/include/Dispatch/_undefs.h ivtools-1.1/src/include/Dispatch/dispatcher.h ivtools-1.1/src/include/Dispatch/dp.h ivtools-1.1/src/include/Dispatch/enter-scope.h ivtools-1.1/src/include/Dispatch/iocallback.h ivtools-1.1/src/include/Dispatch/iohandler.h ivtools-1.1/src/include/Dispatch/iostreamb.h ivtools-1.1/src/include/Dispatch/leave-scope.h ivtools-1.1/src/include/Dispatch/rpcbuf.h ivtools-1.1/src/include/Dispatch/rpchdr.h ivtools-1.1/src/include/Dispatch/rpcpeer.h ivtools-1.1/src/include/Dispatch/rpcreader.h ivtools-1.1/src/include/Dispatch/rpcregistry.h ivtools-1.1/src/include/Dispatch/rpcservice.h ivtools-1.1/src/include/Dispatch/rpcstream.h ivtools-1.1/src/include/Dispatch/rpcwriter.h ivtools-1.1/src/include/IV-2_6/Imakefile ivtools-1.1/src/include/IV-2_6/InterViews/Imakefile ivtools-1.1/src/include/IV-2_6/InterViews/Makefile ivtools-1.1/src/include/IV-2_6/InterViews/adjuster.h ivtools-1.1/src/include/IV-2_6/InterViews/alignment.h ivtools-1.1/src/include/IV-2_6/InterViews/banner.h ivtools-1.1/src/include/IV-2_6/InterViews/border.h ivtools-1.1/src/include/IV-2_6/InterViews/box.h ivtools-1.1/src/include/IV-2_6/InterViews/button.h ivtools-1.1/src/include/IV-2_6/InterViews/compeditor.h ivtools-1.1/src/include/IV-2_6/InterViews/control.h ivtools-1.1/src/include/IV-2_6/InterViews/deck.h ivtools-1.1/src/include/IV-2_6/InterViews/defs.h ivtools-1.1/src/include/IV-2_6/InterViews/dialog.h ivtools-1.1/src/include/IV-2_6/InterViews/filebrowser.h ivtools-1.1/src/include/IV-2_6/InterViews/filechooser.h ivtools-1.1/src/include/IV-2_6/InterViews/frame.h ivtools-1.1/src/include/IV-2_6/InterViews/glue.h ivtools-1.1/src/include/IV-2_6/InterViews/ihandler.h ivtools-1.1/src/include/IV-2_6/InterViews/interactor.h ivtools-1.1/src/include/IV-2_6/InterViews/iwindow.h ivtools-1.1/src/include/IV-2_6/InterViews/matcheditor.h ivtools-1.1/src/include/IV-2_6/InterViews/menu.h ivtools-1.1/src/include/IV-2_6/InterViews/message.h ivtools-1.1/src/include/IV-2_6/InterViews/minmax.h ivtools-1.1/src/include/IV-2_6/InterViews/paint.h ivtools-1.1/src/include/IV-2_6/InterViews/painter.h ivtools-1.1/src/include/IV-2_6/InterViews/panner.h ivtools-1.1/src/include/IV-2_6/InterViews/perspective.h ivtools-1.1/src/include/IV-2_6/InterViews/rubband.h ivtools-1.1/src/include/IV-2_6/InterViews/rubcurve.h ivtools-1.1/src/include/IV-2_6/InterViews/rubgroup.h ivtools-1.1/src/include/IV-2_6/InterViews/rubline.h ivtools-1.1/src/include/IV-2_6/InterViews/rubrect.h ivtools-1.1/src/include/IV-2_6/InterViews/rubverts.h ivtools-1.1/src/include/IV-2_6/InterViews/scene.h ivtools-1.1/src/include/IV-2_6/InterViews/scrollbar.h ivtools-1.1/src/include/IV-2_6/InterViews/scroller.h ivtools-1.1/src/include/IV-2_6/InterViews/sensor.h ivtools-1.1/src/include/IV-2_6/InterViews/shape.h ivtools-1.1/src/include/IV-2_6/InterViews/strbrowser.h ivtools-1.1/src/include/IV-2_6/InterViews/strchooser.h ivtools-1.1/src/include/IV-2_6/InterViews/streditor.h ivtools-1.1/src/include/IV-2_6/InterViews/subject.h ivtools-1.1/src/include/IV-2_6/InterViews/textbuffer.h ivtools-1.1/src/include/IV-2_6/InterViews/textdisplay.h ivtools-1.1/src/include/IV-2_6/InterViews/texteditor.h ivtools-1.1/src/include/IV-2_6/InterViews/textstyle.h ivtools-1.1/src/include/IV-2_6/InterViews/tray.h ivtools-1.1/src/include/IV-2_6/InterViews/viewport.h ivtools-1.1/src/include/IV-2_6/InterViews/world.h ivtools-1.1/src/include/IV-2_6/Makefile ivtools-1.1/src/include/IV-2_6/_enter.h ivtools-1.1/src/include/IV-2_6/_leave.h ivtools-1.1/src/include/IV-2_6/_names.h ivtools-1.1/src/include/IV-3_1/Imakefile ivtools-1.1/src/include/IV-3_1/InterViews ivtools-1.1/src/include/IV-X11/Imakefile ivtools-1.1/src/include/IV-X11/Makefile ivtools-1.1/src/include/IV-X11/Xdefs.h ivtools-1.1/src/include/IV-X11/Xext.h ivtools-1.1/src/include/IV-X11/Xlib.h ivtools-1.1/src/include/IV-X11/Xundefs.h ivtools-1.1/src/include/IV-X11/Xutil.h ivtools-1.1/src/include/IV-X11/xbitmap.h ivtools-1.1/src/include/IV-X11/xbrush.h ivtools-1.1/src/include/IV-X11/xcanvas.h ivtools-1.1/src/include/IV-X11/xcolor.h ivtools-1.1/src/include/IV-X11/xcursor.h ivtools-1.1/src/include/IV-X11/xdisplay.h ivtools-1.1/src/include/IV-X11/xdrag.h ivtools-1.1/src/include/IV-X11/xevent.h ivtools-1.1/src/include/IV-X11/xfont.h ivtools-1.1/src/include/IV-X11/xpainter.h ivtools-1.1/src/include/IV-X11/xpattern.h ivtools-1.1/src/include/IV-X11/xraster.h ivtools-1.1/src/include/IV-X11/xselection.h ivtools-1.1/src/include/IV-X11/xwindow.h ivtools-1.1/src/include/IV-look/Imakefile ivtools-1.1/src/include/IV-look/Makefile ivtools-1.1/src/include/IV-look/bevel.h ivtools-1.1/src/include/IV-look/browser.h ivtools-1.1/src/include/IV-look/button.h ivtools-1.1/src/include/IV-look/choice.h ivtools-1.1/src/include/IV-look/dialogs.h ivtools-1.1/src/include/IV-look/fbrowser.h ivtools-1.1/src/include/IV-look/fchooser.h ivtools-1.1/src/include/IV-look/field.h ivtools-1.1/src/include/IV-look/kit.h ivtools-1.1/src/include/IV-look/menu.h ivtools-1.1/src/include/IV-look/mf_dialogs.h ivtools-1.1/src/include/IV-look/mf_kit.h ivtools-1.1/src/include/IV-look/mono_kit.h ivtools-1.1/src/include/IV-look/ol_dialogs.h ivtools-1.1/src/include/IV-look/ol_kit.h ivtools-1.1/src/include/IV-look/slider.h ivtools-1.1/src/include/IV-look/smf_kit.h ivtools-1.1/src/include/IV-look/stepper.h ivtools-1.1/src/include/IV-look/telltale.h ivtools-1.1/src/include/Imakefile ivtools-1.1/src/include/InterViews/Bitmaps/Imakefile ivtools-1.1/src/include/InterViews/Bitmaps/Makefile ivtools-1.1/src/include/InterViews/Bitmaps/big_checkmark.bm ivtools-1.1/src/include/InterViews/Bitmaps/checkmark.bm ivtools-1.1/src/include/InterViews/Bitmaps/chkbox.bm ivtools-1.1/src/include/InterViews/Bitmaps/chkboxBoth.bm ivtools-1.1/src/include/InterViews/Bitmaps/chkboxChosen.bm ivtools-1.1/src/include/InterViews/Bitmaps/chkboxHit.bm ivtools-1.1/src/include/InterViews/Bitmaps/dfast.bm ivtools-1.1/src/include/InterViews/Bitmaps/dfastMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/dmover.bm ivtools-1.1/src/include/InterViews/Bitmaps/dmoverHit.bm ivtools-1.1/src/include/InterViews/Bitmaps/dmoverMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/enlarge.bm ivtools-1.1/src/include/InterViews/Bitmaps/enlargeHit.bm ivtools-1.1/src/include/InterViews/Bitmaps/enlargeMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/hand.bm ivtools-1.1/src/include/InterViews/Bitmaps/handMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/ldfast.bm ivtools-1.1/src/include/InterViews/Bitmaps/ldfastMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/lfast.bm ivtools-1.1/src/include/InterViews/Bitmaps/lfastMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/lmover.bm ivtools-1.1/src/include/InterViews/Bitmaps/lmoverHit.bm ivtools-1.1/src/include/InterViews/Bitmaps/lmoverMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/lufast.bm ivtools-1.1/src/include/InterViews/Bitmaps/lufastMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/page.bm ivtools-1.1/src/include/InterViews/Bitmaps/pageBoth.bm ivtools-1.1/src/include/InterViews/Bitmaps/pageChosen.bm ivtools-1.1/src/include/InterViews/Bitmaps/pageHit.bm ivtools-1.1/src/include/InterViews/Bitmaps/radio.bm ivtools-1.1/src/include/InterViews/Bitmaps/radioBoth.bm ivtools-1.1/src/include/InterViews/Bitmaps/radioChosen.bm ivtools-1.1/src/include/InterViews/Bitmaps/radioHit.bm ivtools-1.1/src/include/InterViews/Bitmaps/radioMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/rdfast.bm ivtools-1.1/src/include/InterViews/Bitmaps/rdfastMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/reducer.bm ivtools-1.1/src/include/InterViews/Bitmaps/reducerHit.bm ivtools-1.1/src/include/InterViews/Bitmaps/reducerMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/rfast.bm ivtools-1.1/src/include/InterViews/Bitmaps/rfastMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/rmover.bm ivtools-1.1/src/include/InterViews/Bitmaps/rmoverHit.bm ivtools-1.1/src/include/InterViews/Bitmaps/rmoverMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/rufast.bm ivtools-1.1/src/include/InterViews/Bitmaps/rufastMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/ufast.bm ivtools-1.1/src/include/InterViews/Bitmaps/ufastMask.bm ivtools-1.1/src/include/InterViews/Bitmaps/umover.bm ivtools-1.1/src/include/InterViews/Bitmaps/umoverHit.bm ivtools-1.1/src/include/InterViews/Bitmaps/umoverMask.bm ivtools-1.1/src/include/InterViews/Imakefile ivtools-1.1/src/include/InterViews/Makefile ivtools-1.1/src/include/InterViews/_defines.h ivtools-1.1/src/include/InterViews/_enter.h ivtools-1.1/src/include/InterViews/_leave.h ivtools-1.1/src/include/InterViews/_names.h ivtools-1.1/src/include/InterViews/_undefs.h ivtools-1.1/src/include/InterViews/action.h ivtools-1.1/src/include/InterViews/adjust.h ivtools-1.1/src/include/InterViews/aggr.h ivtools-1.1/src/include/InterViews/align.h ivtools-1.1/src/include/InterViews/alloctbl.h ivtools-1.1/src/include/InterViews/arraycomp.h ivtools-1.1/src/include/InterViews/background.h ivtools-1.1/src/include/InterViews/bitmap.h ivtools-1.1/src/include/InterViews/boolean.h ivtools-1.1/src/include/InterViews/border.h ivtools-1.1/src/include/InterViews/box.h ivtools-1.1/src/include/InterViews/brush.h ivtools-1.1/src/include/InterViews/canvas.h ivtools-1.1/src/include/InterViews/character.h ivtools-1.1/src/include/InterViews/color.h ivtools-1.1/src/include/InterViews/composition.h ivtools-1.1/src/include/InterViews/compositor.h ivtools-1.1/src/include/InterViews/coord.h ivtools-1.1/src/include/InterViews/cursor.h ivtools-1.1/src/include/InterViews/debug.h ivtools-1.1/src/include/InterViews/deck.h ivtools-1.1/src/include/InterViews/dialog.h ivtools-1.1/src/include/InterViews/display.h ivtools-1.1/src/include/InterViews/drag.h ivtools-1.1/src/include/InterViews/enter-scope.h ivtools-1.1/src/include/InterViews/event.h ivtools-1.1/src/include/InterViews/font.h ivtools-1.1/src/include/InterViews/geometry.h ivtools-1.1/src/include/InterViews/glcontext.h ivtools-1.1/src/include/InterViews/glue.h ivtools-1.1/src/include/InterViews/glyph.h ivtools-1.1/src/include/InterViews/group.h ivtools-1.1/src/include/InterViews/handler.h ivtools-1.1/src/include/InterViews/hit.h ivtools-1.1/src/include/InterViews/image.h ivtools-1.1/src/include/InterViews/input.h ivtools-1.1/src/include/InterViews/iv.h ivtools-1.1/src/include/InterViews/label.h ivtools-1.1/src/include/InterViews/layout.h ivtools-1.1/src/include/InterViews/leave-scope.h ivtools-1.1/src/include/InterViews/lrmarker.h ivtools-1.1/src/include/InterViews/monoglyph.h ivtools-1.1/src/include/InterViews/observe.h ivtools-1.1/src/include/InterViews/page.h ivtools-1.1/src/include/InterViews/patch.h ivtools-1.1/src/include/InterViews/pattern.h ivtools-1.1/src/include/InterViews/place.h ivtools-1.1/src/include/InterViews/polyglyph.h ivtools-1.1/src/include/InterViews/printer.h ivtools-1.1/src/include/InterViews/psfont.h ivtools-1.1/src/include/InterViews/raster.h ivtools-1.1/src/include/InterViews/regexp.h ivtools-1.1/src/include/InterViews/reqerr.h ivtools-1.1/src/include/InterViews/resource.h ivtools-1.1/src/include/InterViews/rule.h ivtools-1.1/src/include/InterViews/scrbox.h ivtools-1.1/src/include/InterViews/selection.h ivtools-1.1/src/include/InterViews/session.h ivtools-1.1/src/include/InterViews/shadow.h ivtools-1.1/src/include/InterViews/simplecomp.h ivtools-1.1/src/include/InterViews/stencil.h ivtools-1.1/src/include/InterViews/style.h ivtools-1.1/src/include/InterViews/superpose.h ivtools-1.1/src/include/InterViews/target.h ivtools-1.1/src/include/InterViews/telltale.h ivtools-1.1/src/include/InterViews/texcomp.h ivtools-1.1/src/include/InterViews/tformsetter.h ivtools-1.1/src/include/InterViews/tiff.h ivtools-1.1/src/include/InterViews/tile.h ivtools-1.1/src/include/InterViews/transformer.h ivtools-1.1/src/include/InterViews/window.h ivtools-1.1/src/include/InterViews/xymarker.h ivtools-1.1/src/include/Makefile ivtools-1.1/src/include/OS/Imakefile ivtools-1.1/src/include/OS/Makefile ivtools-1.1/src/include/OS/_defines.h ivtools-1.1/src/include/OS/_undefs.h ivtools-1.1/src/include/OS/directory.h ivtools-1.1/src/include/OS/enter-scope.h ivtools-1.1/src/include/OS/file.h ivtools-1.1/src/include/OS/host.h ivtools-1.1/src/include/OS/leave-scope.h ivtools-1.1/src/include/OS/list.h ivtools-1.1/src/include/OS/math.h ivtools-1.1/src/include/OS/memory.h ivtools-1.1/src/include/OS/os.h ivtools-1.1/src/include/OS/string.h ivtools-1.1/src/include/OS/table.h ivtools-1.1/src/include/OS/table2.h ivtools-1.1/src/include/OS/types.h ivtools-1.1/src/include/OS/ustring.h ivtools-1.1/src/include/TIFF/Imakefile ivtools-1.1/src/include/TIFF/Makefile ivtools-1.1/src/include/TIFF/format.h ivtools-1.1/src/include/TIFF/tiff.h ivtools-1.1/src/include/TIFF/tiffio.h ivtools-1.1/src/include/Unidraw/Commands/Imakefile ivtools-1.1/src/include/Unidraw/Commands/Makefile ivtools-1.1/src/include/Unidraw/Commands/align.h ivtools-1.1/src/include/Unidraw/Commands/brushcmd.h ivtools-1.1/src/include/Unidraw/Commands/catcmds.h ivtools-1.1/src/include/Unidraw/Commands/colorcmd.h ivtools-1.1/src/include/Unidraw/Commands/command.h ivtools-1.1/src/include/Unidraw/Commands/data.h ivtools-1.1/src/include/Unidraw/Commands/datas.h ivtools-1.1/src/include/Unidraw/Commands/dirty.h ivtools-1.1/src/include/Unidraw/Commands/edit.h ivtools-1.1/src/include/Unidraw/Commands/font.h ivtools-1.1/src/include/Unidraw/Commands/import.h ivtools-1.1/src/include/Unidraw/Commands/macro.h ivtools-1.1/src/include/Unidraw/Commands/nop.h ivtools-1.1/src/include/Unidraw/Commands/patcmd.h ivtools-1.1/src/include/Unidraw/Commands/struct.h ivtools-1.1/src/include/Unidraw/Commands/transforms.h ivtools-1.1/src/include/Unidraw/Commands/viewcmds.h ivtools-1.1/src/include/Unidraw/Components/Imakefile ivtools-1.1/src/include/Unidraw/Components/Makefile ivtools-1.1/src/include/Unidraw/Components/cglue.h ivtools-1.1/src/include/Unidraw/Components/component.h ivtools-1.1/src/include/Unidraw/Components/compview.h ivtools-1.1/src/include/Unidraw/Components/connector.h ivtools-1.1/src/include/Unidraw/Components/csolver.h ivtools-1.1/src/include/Unidraw/Components/ellipse.h ivtools-1.1/src/include/Unidraw/Components/externview.h ivtools-1.1/src/include/Unidraw/Components/grcomp.h ivtools-1.1/src/include/Unidraw/Components/grview.h ivtools-1.1/src/include/Unidraw/Components/gvupdater.h ivtools-1.1/src/include/Unidraw/Components/line.h ivtools-1.1/src/include/Unidraw/Components/link.h ivtools-1.1/src/include/Unidraw/Components/pad.h ivtools-1.1/src/include/Unidraw/Components/pin.h ivtools-1.1/src/include/Unidraw/Components/polygon.h ivtools-1.1/src/include/Unidraw/Components/psformat.h ivtools-1.1/src/include/Unidraw/Components/psview.h ivtools-1.1/src/include/Unidraw/Components/rastercomp.h ivtools-1.1/src/include/Unidraw/Components/rect.h ivtools-1.1/src/include/Unidraw/Components/slot.h ivtools-1.1/src/include/Unidraw/Components/spline.h ivtools-1.1/src/include/Unidraw/Components/stencilcomp.h ivtools-1.1/src/include/Unidraw/Components/text.h ivtools-1.1/src/include/Unidraw/Components/vertices.h ivtools-1.1/src/include/Unidraw/Graphic/Imakefile ivtools-1.1/src/include/Unidraw/Graphic/Makefile ivtools-1.1/src/include/Unidraw/Graphic/damage.h ivtools-1.1/src/include/Unidraw/Graphic/ellipses.h ivtools-1.1/src/include/Unidraw/Graphic/geomobjs.h ivtools-1.1/src/include/Unidraw/Graphic/graphic.h ivtools-1.1/src/include/Unidraw/Graphic/grblock.h ivtools-1.1/src/include/Unidraw/Graphic/lines.h ivtools-1.1/src/include/Unidraw/Graphic/picture.h ivtools-1.1/src/include/Unidraw/Graphic/polygons.h ivtools-1.1/src/include/Unidraw/Graphic/pspaint.h ivtools-1.1/src/include/Unidraw/Graphic/rasterrect.h ivtools-1.1/src/include/Unidraw/Graphic/splines.h ivtools-1.1/src/include/Unidraw/Graphic/ulabel.h ivtools-1.1/src/include/Unidraw/Graphic/ustencil.h ivtools-1.1/src/include/Unidraw/Graphic/util.h ivtools-1.1/src/include/Unidraw/Graphic/verts.h ivtools-1.1/src/include/Unidraw/Imakefile ivtools-1.1/src/include/Unidraw/Makefile ivtools-1.1/src/include/Unidraw/Tools/Imakefile ivtools-1.1/src/include/Unidraw/Tools/Makefile ivtools-1.1/src/include/Unidraw/Tools/connect.h ivtools-1.1/src/include/Unidraw/Tools/grcomptool.h ivtools-1.1/src/include/Unidraw/Tools/magnify.h ivtools-1.1/src/include/Unidraw/Tools/move.h ivtools-1.1/src/include/Unidraw/Tools/reshape.h ivtools-1.1/src/include/Unidraw/Tools/rotate.h ivtools-1.1/src/include/Unidraw/Tools/scale.h ivtools-1.1/src/include/Unidraw/Tools/select.h ivtools-1.1/src/include/Unidraw/Tools/stretch.h ivtools-1.1/src/include/Unidraw/Tools/tool.h ivtools-1.1/src/include/Unidraw/_defines.h ivtools-1.1/src/include/Unidraw/_undefs.h ivtools-1.1/src/include/Unidraw/catalog.h ivtools-1.1/src/include/Unidraw/classes.h ivtools-1.1/src/include/Unidraw/clipboard.h ivtools-1.1/src/include/Unidraw/creator.h ivtools-1.1/src/include/Unidraw/ctrlinfo.h ivtools-1.1/src/include/Unidraw/dialogs.h ivtools-1.1/src/include/Unidraw/editor.h ivtools-1.1/src/include/Unidraw/editorinfo.h ivtools-1.1/src/include/Unidraw/enter-scope.h ivtools-1.1/src/include/Unidraw/globals.h ivtools-1.1/src/include/Unidraw/grid.h ivtools-1.1/src/include/Unidraw/iterator.h ivtools-1.1/src/include/Unidraw/keymap.h ivtools-1.1/src/include/Unidraw/kybd.h ivtools-1.1/src/include/Unidraw/leave-scope.h ivtools-1.1/src/include/Unidraw/manip.h ivtools-1.1/src/include/Unidraw/manips.h ivtools-1.1/src/include/Unidraw/path.h ivtools-1.1/src/include/Unidraw/selection.h ivtools-1.1/src/include/Unidraw/statevar.h ivtools-1.1/src/include/Unidraw/statevars.h ivtools-1.1/src/include/Unidraw/stateview.h ivtools-1.1/src/include/Unidraw/stateviews.h ivtools-1.1/src/include/Unidraw/transfn.h ivtools-1.1/src/include/Unidraw/transfns.h ivtools-1.1/src/include/Unidraw/uarray.h ivtools-1.1/src/include/Unidraw/uctrl.h ivtools-1.1/src/include/Unidraw/uctrls.h ivtools-1.1/src/include/Unidraw/uformat.h ivtools-1.1/src/include/Unidraw/uhash.h ivtools-1.1/src/include/Unidraw/ulist.h ivtools-1.1/src/include/Unidraw/umap.h ivtools-1.1/src/include/Unidraw/unidraw.h ivtools-1.1/src/include/Unidraw/upage.h ivtools-1.1/src/include/Unidraw/viewer.h ivtools-1.1/src/include/ivstd/Imakefile ivtools-1.1/src/include/ivstd/Makefile ivtools-1.1/src/include/ivstd/fstream.h ivtools-1.1/src/include/ivstd/iosfwd ivtools-1.1/src/include/ivstd/iostream.h ivtools-1.1/src/include/ivstd/malloc.h ivtools-1.1/src/include/ivstd/math.h ivtools-1.1/src/include/ivstd/nan.h ivtools-1.1/src/include/ivstd/osfcn.h ivtools-1.1/src/include/ivstd/signal.h ivtools-1.1/src/include/ivstd/stdio.h ivtools-1.1/src/include/ivstd/stdlib.h ivtools-1.1/src/include/ivstd/stream.h ivtools-1.1/src/include/ivstd/string.h ivtools-1.1/src/include/ivstd/version.h ivtools-1.1/src/iueserv_/Imakefile ivtools-1.1/src/iueserv_/Makefile ivtools-1.1/src/iueserv_/README ivtools-1.1/src/iueserv_/main.c ivtools-1.1/src/ivtext/Imakefile ivtools-1.1/src/ivtext/Makefile ivtools-1.1/src/ivtext/README ivtools-1.1/src/ivtext/main.c ivtools-1.1/src/ivxt/Imakefile ivtools-1.1/src/ivxt/Xd.h ivtools-1.1/src/ivxt/Xud.h ivtools-1.1/src/ivxt/glyphwidget.h ivtools-1.1/src/ivxt/glyphwidgetP.h ivtools-1.1/src/ivxt/main.c ivtools-1.1/src/ivxt/widgetwindow.c ivtools-1.1/src/ivxt/widgetwindow.h ivtools-1.1/src/ivxt/xtintrinsic.h ivtools-1.1/src/ivxt/xtsession.c ivtools-1.1/src/ivxt/xtsession.h ivtools-1.1/src/ivxt/xtudsession.c ivtools-1.1/src/ivxt/xtudsession.h ivtools-1.1/src/man/Imakefile ivtools-1.1/src/man/Makefile ivtools-1.1/src/man/man1/Imakefile ivtools-1.1/src/man/man1/Makefile ivtools-1.1/src/man/man1/comdraw.1 ivtools-1.1/src/man/man1/comterp.1 ivtools-1.1/src/man/man1/dclock.1 ivtools-1.1/src/man/man1/drawtool.1 ivtools-1.1/src/man/man1/flipbook.1 ivtools-1.1/src/man/man1/graphdraw.1 ivtools-1.1/src/man/man1/iclass.1 ivtools-1.1/src/man/man1/idraw.1 ivtools-1.1/src/man/man1/ivmkmf.1 ivtools-1.1/src/man/man3/Adjuster.3 ivtools-1.1/src/man/man3/Banner.3 ivtools-1.1/src/man/man3/BasicDialog.3 ivtools-1.1/src/man/man3/Border.3 ivtools-1.1/src/man/man3/Box2_6.3 ivtools-1.1/src/man/man3/BrushCmd.3 ivtools-1.1/src/man/man3/Button2_6.3 ivtools-1.1/src/man/man3/CGlue.3 ivtools-1.1/src/man/man3/CSolver.3 ivtools-1.1/src/man/man3/Catalog.3 ivtools-1.1/src/man/man3/Clipboard.3 ivtools-1.1/src/man/man3/ColorCmd.3 ivtools-1.1/src/man/man3/Command.3 ivtools-1.1/src/man/man3/CompletionEditor.3 ivtools-1.1/src/man/man3/Component.3 ivtools-1.1/src/man/man3/ComponentView.3 ivtools-1.1/src/man/man3/ConnectTool.3 ivtools-1.1/src/man/man3/Connector.3 ivtools-1.1/src/man/man3/Control.3 ivtools-1.1/src/man/man3/ControlInfo.3 ivtools-1.1/src/man/man3/Creator.3 ivtools-1.1/src/man/man3/Damage.3 ivtools-1.1/src/man/man3/Data.3 ivtools-1.1/src/man/man3/Deck2_6.3 ivtools-1.1/src/man/man3/Dialog.3 ivtools-1.1/src/man/man3/Dispatcher.3 ivtools-1.1/src/man/man3/Editor.3 ivtools-1.1/src/man/man3/EditorInfo.3 ivtools-1.1/src/man/man3/EllipseComp.3 ivtools-1.1/src/man/man3/ExternView.3 ivtools-1.1/src/man/man3/FileBrowser.3 ivtools-1.1/src/man/man3/FileChooser.3 ivtools-1.1/src/man/man3/FontCmd.3 ivtools-1.1/src/man/man3/Frame.3 ivtools-1.1/src/man/man3/GVUpdater.3 ivtools-1.1/src/man/man3/Glue2_6.3 ivtools-1.1/src/man/man3/Graphic.3 ivtools-1.1/src/man/man3/GraphicBlock.3 ivtools-1.1/src/man/man3/GraphicComp.3 ivtools-1.1/src/man/man3/GraphicCompTool.3 ivtools-1.1/src/man/man3/GraphicView.3 ivtools-1.1/src/man/man3/Grid.3 ivtools-1.1/src/man/man3/IOCallback.3 ivtools-1.1/src/man/man3/IOHandler.3 ivtools-1.1/src/man/man3/Imakefile ivtools-1.1/src/man/man3/ImportCmd.3 ivtools-1.1/src/man/man3/Interactor.3 ivtools-1.1/src/man/man3/Iterator.3 ivtools-1.1/src/man/man3/KeyMap.3 ivtools-1.1/src/man/man3/LineComp.3 ivtools-1.1/src/man/man3/LinkComp.3 ivtools-1.1/src/man/man3/MacroCmd.3 ivtools-1.1/src/man/man3/MagnifyTool.3 ivtools-1.1/src/man/man3/Manipulator.3 ivtools-1.1/src/man/man3/MatchEditor.3 ivtools-1.1/src/man/man3/Menu2_6.3 ivtools-1.1/src/man/man3/Message.3 ivtools-1.1/src/man/man3/MoveTool.3 ivtools-1.1/src/man/man3/NOPCmd.3 ivtools-1.1/src/man/man3/PadComp.3 ivtools-1.1/src/man/man3/Page.3 ivtools-1.1/src/man/man3/Painter.3 ivtools-1.1/src/man/man3/Panner.3 ivtools-1.1/src/man/man3/Path.3 ivtools-1.1/src/man/man3/Pattern.3 ivtools-1.1/src/man/man3/PatternCmd.3 ivtools-1.1/src/man/man3/Perspective.3 ivtools-1.1/src/man/man3/Picture.3 ivtools-1.1/src/man/man3/PinComp.3 ivtools-1.1/src/man/man3/PolygonComp.3 ivtools-1.1/src/man/man3/PostScriptView.3 ivtools-1.1/src/man/man3/RasterComp.3 ivtools-1.1/src/man/man3/RasterRect.3 ivtools-1.1/src/man/man3/RectComp.3 ivtools-1.1/src/man/man3/Regexp.3 ivtools-1.1/src/man/man3/ReqErr.3 ivtools-1.1/src/man/man3/ReshapeTool.3 ivtools-1.1/src/man/man3/Resource.3 ivtools-1.1/src/man/man3/RotateTool.3 ivtools-1.1/src/man/man3/RpcHdr.3 ivtools-1.1/src/man/man3/RpcPeer.3 ivtools-1.1/src/man/man3/RpcReader.3 ivtools-1.1/src/man/man3/RpcRegistry.3 ivtools-1.1/src/man/man3/RpcService.3 ivtools-1.1/src/man/man3/RpcWriter.3 ivtools-1.1/src/man/man3/Rubband.3 ivtools-1.1/src/man/man3/ScaleTool.3 ivtools-1.1/src/man/man3/Scene.3 ivtools-1.1/src/man/man3/Scroller.3 ivtools-1.1/src/man/man3/SelectTool.3 ivtools-1.1/src/man/man3/Selection.3 ivtools-1.1/src/man/man3/Sensor.3 ivtools-1.1/src/man/man3/Shape.3 ivtools-1.1/src/man/man3/SlotComp.3 ivtools-1.1/src/man/man3/SplineComp.3 ivtools-1.1/src/man/man3/StateVar.3 ivtools-1.1/src/man/man3/StateVarView.3 ivtools-1.1/src/man/man3/StencilComp.3 ivtools-1.1/src/man/man3/StrBrowser.3 ivtools-1.1/src/man/man3/StrChooser.3 ivtools-1.1/src/man/man3/StretchTool.3 ivtools-1.1/src/man/man3/StringEditor.3 ivtools-1.1/src/man/man3/Subject.3 ivtools-1.1/src/man/man3/TextBuffer.3 ivtools-1.1/src/man/man3/TextComp.3 ivtools-1.1/src/man/man3/TextDisplay.3 ivtools-1.1/src/man/man3/TextEditor.3 ivtools-1.1/src/man/man3/Tool.3 ivtools-1.1/src/man/man3/TransferFunct.3 ivtools-1.1/src/man/man3/Tray.3 ivtools-1.1/src/man/man3/UArray.3 ivtools-1.1/src/man/man3/UControl.3 ivtools-1.1/src/man/man3/UHashTable.3 ivtools-1.1/src/man/man3/ULabel.3 ivtools-1.1/src/man/man3/UList.3 ivtools-1.1/src/man/man3/UMap.3 ivtools-1.1/src/man/man3/UStencil.3 ivtools-1.1/src/man/man3/Unidraw.3 ivtools-1.1/src/man/man3/UnidrawIntro.3 ivtools-1.1/src/man/man3/Vertices.3 ivtools-1.1/src/man/man3/VerticesComp.3 ivtools-1.1/src/man/man3/Viewer.3 ivtools-1.1/src/man/man3/Viewport.3 ivtools-1.1/src/man/man3/World.3 ivtools-1.1/src/man/man3/align.3 ivtools-1.1/src/man/man3/catcmds.3 ivtools-1.1/src/man/man3/classes.3 ivtools-1.1/src/man/man3/datas.3 ivtools-1.1/src/man/man3/edit.3 ivtools-1.1/src/man/man3/ellipses.3 ivtools-1.1/src/man/man3/geomobjs.3 ivtools-1.1/src/man/man3/globals.3 ivtools-1.1/src/man/man3/iostreamb.3 ivtools-1.1/src/man/man3/kybd.3 ivtools-1.1/src/man/man3/lines.3 ivtools-1.1/src/man/man3/manips.3 ivtools-1.1/src/man/man3/polygons.3 ivtools-1.1/src/man/man3/pspaint.3 ivtools-1.1/src/man/man3/rpcbuf.3 ivtools-1.1/src/man/man3/rpcstream.3 ivtools-1.1/src/man/man3/splines.3 ivtools-1.1/src/man/man3/statevars.3 ivtools-1.1/src/man/man3/stateviews.3 ivtools-1.1/src/man/man3/struct.3 ivtools-1.1/src/man/man3/transfns.3 ivtools-1.1/src/man/man3/transforms.3 ivtools-1.1/src/man/man3/uctrls.3 ivtools-1.1/src/man/man3/viewcmds.3 ivtools-1.1/src/man/refman3.1/refman.PS ivtools-1.1/src/scripts/Imakefile ivtools-1.1/src/scripts/Makefile ivtools-1.1/src/scripts/bsdinst.sh ivtools-1.1/src/scripts/chgsuffix.sh ivtools-1.1/src/scripts/cntsrclines.bash ivtools-1.1/src/scripts/config.guess ivtools-1.1/src/scripts/config.sub ivtools-1.1/src/scripts/cpu.sh ivtools-1.1/src/scripts/install-sh ivtools-1.1/src/scripts/ivcd.cpp ivtools-1.1/src/scripts/ivct.cpp ivtools-1.1/src/scripts/ivds.cpp ivtools-1.1/src/scripts/ivdt.cpp ivtools-1.1/src/scripts/ivfb.cpp ivtools-1.1/src/scripts/ivgd.cpp ivtools-1.1/src/scripts/ivgetjpg.bash ivtools-1.1/src/scripts/ivmkmf.cpp ivtools-1.1/src/scripts/ivtiftopnm.bash ivtools-1.1/src/scripts/mkdirhier.sh ivtools-1.1/src/scripts/mkgif89a.bash ivtools-1.1/src/scripts/mkgif89ac.bash ivtools-1.1/src/scripts/pnmtopgm.sh ivtools-1.1/src/tests/Imakefile ivtools-1.1/src/tests/Makefile ivtools-1.1/src/tests/y2k/Imakefile ivtools-1.1/src/tests/y2k/Makefile ivtools-1.1/src/tests/y2k/y2ktest.cc ivtools-1.1/src/utils/Imakefile ivtools-1.1/src/utils/Makefile ivtools-1.1/src/utils/downloader.cc ivtools-1.1/src/utils/downloader.h ivtools-1.1/src/utils/ftp.cc ivtools-1.1/src/utils/ftp.h ivtools-1.1/src/utils/http.cc ivtools-1.1/src/utils/http.h ivtools-1.1/src/utils/ivdl.cc ivtools-1.1/src/utils/ivtmpnam.c ivtools-1.1/src/utils/parse.h ivtools-1.1/src/utils/readwrite.h ivtools-1.1/src/utils/sockets.cc ivtools-1.1/src/utils/sockets.h ivtools-1.1/src/utils/stdcmapppm.c ivtools-1.1/src/utils/thrower.cc ivtools-1.1/src/utils/thrower.h ivtools-doc/ivtools-1.1-README.txt0000644000076500007650000004332210014736515017342 0ustar scottscott00000000000000 README for ivtools 1.1 This directory contains a release of ivtools 1.1.3. You should read the rest of this file for information on what ivtools is and the INSTALL file for instructions on how to build it. The overall copyright and permission notice for ivtools can be found in the COPYRIGHT file in this directory. It is similar to the X11 copyright, otherwise known as non-copylefted freeware. * What is ivtools?: Online documentation (including an FAQ) is available for ivtools at: http://www.ivtools.org/ivtools/doc/ ivtools is a layered collection of application frameworks for building custom drawing editors and spatial data servers. It incorporates a backward compatible copy of the original InterViews and Unidraw class libraries and sample programs (from 3.2a.tar.Z), augmented with new class libraries and sample programs for a wide variety of generic spatial data applications. ivtools comprises four sets of interrelated capabilities useful to application programmers. The first set is the libraries and example programs borrowed whole from InterViews 3.1. The second set is for reusing and extending the light-weight glyph objects of InterViews 3.1 which embody a lot of the capability of TeX. The third set reuses and extends the Unidraw library (Unidraw is a major portion of the overall InterViews 3.1 release that provides an application framework for custom drawing editors). The fourth set adds a command interpreter and server mechanism to ivtools, and demonstrates these capabilities with text, glyph, and graphic front-ends. To get more of an overview of these layers you can read: http://www.ivtools.org/ivtools/ivtools-layers.html. These are the libraries and example programs borrowed straight from InterViews 3.1: IV library of InterView 3.1, InterViews 2.6, Dispatch, OS, and TIFF objects dclock digital clock with fading digits iclass C++ class browser idemo glyph demo These are the libraries and example programs that make up the glyph part of ivtools (programs in the glyphs directory): IVGlyph library of Glyph derived classes bdvtable bounded-value editing formdemo value-editing gclock glyph-based clock meter sliding meter radiogroup radio-buttons scrollable 2d scrollable glyph scrollfield 2d scrollable field-editor strchooser string chooser timestamp editable time glyph Plus a generally useful text display and editing program: ivtext emacs-like text editor Also all the glyph example programs from InterViews 3.1 have been added in an examples3.1 directory under the glyphs directory. These are the libraries and example programs that make up the Unidraw part of ivtools: Unidraw copy of Unidraw library from InterViews 3.1 UniIdraw librarification of 3.1 idraw OverlayUnidraw extended Unidraw/idraw framework TopoFace spatial network library (nodes, edges, faces) GraphUnidraw graph browser/editor library FrameUnidraw multi-frame display mechanism idraw idraw built on UniIdraw library drawtool extended version of idraw built on OverlayUnidraw graphdraw graph browser/editor integrated with drawtool flipbook flipbook multi-frame editor based on drawtool These are the libraries that make up the command interpreter part of ivtools: ComUtil command interpreter utility functions Attribute attribute property list mechanism AttrGlyph glyphs for Attribute library ComTerp command interpreter objects ComGlyph glyphs for ComTerp library ComUnidraw drawing editor with command interpreter DrawServ drawing server framework with support for graphs and frames. comtest test program comterp sample command interpreter glyphterp command interpreter user interface comdraw drawtool with command interpreter drawserv comdraw with both graphs and frames. Note: GraphUnidraw/graphdraw and FrameUnidraw/flipbook have been rearranged within the ivtools source tree to take advantage of the ComUnidraw framework layer, so they really could be listed in both of the previous sections. There is also a Time library with Date and Time classes borrowed from the NIH's class library, and an example program, ivxt, that shows how an Xt widget can be wrapped around an InterViews application. Finally, there is a collection of utilities (utils) and shell scripts (scripts) that augment the drawing editors of ivtools with minor capabilities. See the relevant directories and files for further information. A series of makefile targets support the checkin of sources to cvs/rcs, and their subsequent update and modification. This requires a copy of cvs available from the Free Software Foundation and ivmkcm-0.7.2 available through http://www.ivtools.org/ivmkcm/ * More ivtools details ivtools is known to build with many versions of gcc (>= gcc-2.8.1, >= egcs-1.0.1, gcc-3.*) and on a variety of Unix'es: SunOS 4.1 (MIT's X11R5), Solaris 2.6 (X11R6), Irix 5.2 (SGI's X11R5), Linux 1.2 (Slackware 3.0, XFree86 3.1), Linux 2.* (RedHat 4.0 thru 7.0, Debian 2.* and 3.*), NetBSD, FreeBSD, and Darwin (Mac OS X). There are contributed configs that are out of date for HPUX and Dec Alpha (though the HPUX contrib might almost have it right). It has been built on Windows NT 4.0 using Cygwin from Cygnus Solutions (see README.cygwin). You can find links to available binaries on the ivtools web page (http://www.ivtools.org) and ivtools download page (http://www.ivtools.org/ivtools/download.html) If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to the general purpose ivtools mailing list, ivtools-user@lists.sourceforge.net. To subcribe to the mailing list, visit http://lists.sourceforge.net/mailman/listinfo/ivtools-user. Other ivtools related mailing lists can be found at: http://www.ivtools.org/ivtools/mailinglists.html Read about finding and generating all this from inline documentation below. A copy of the ivtools html documentation will be available for download as well: http://downloads.sourceforge.net/ivtools/ivtools-doc-1.1.tgz A SourceForge project page for ivtools can be found at: http://sourceforge.net/project/ivtools Read about other vector graphic free software at: http://sourceforge.net/foundry/vectorgraphics * Finding and Generating Inline Documentation Extensive documentation is embedded within the ivtools source tree, including most all of the documentation originally available for InterViews 3.1 and Unidraw. You can find all of it pre-extracted here: http://www.ivtools.org/ivtools/doc/ Here is a list of documentation: - README/man pages for executable programs Within most directories that contain an executable program (a main.c) you'll find a README that explains something about the program, how to use it, what it does, what arguments it takes. In the case of the drawing editors and command interpreters this README has been further processed into a man page, which can be found in its uninstalled state in the src/man/man1 directory or wherever you elect to install them. - HTML class documentation Many of the C++ class libraries of ivtools are documented using comments in the header files (the .h files) that can be extracted using PERCEPS, a Perl documentation generator for C++ (http://starship.python.net/crew/tbryan/PERCEPS/). See src/html/README for instructions on auto-generating these web pages yourself, or see the result on-line at: http://www.ivtools.org/ivtools/doc/classes/ - InterViews 3.1 and Unidraw man pages All the original man pages from InterViews 3.1 and Unidraw have been preserved, and can be found in src/man/man3, or where ever you elect to install them. They also can be browsed online at: http://www.ivtools.org/ivtools/doc/man3.1/ - InterViews 3.1 reference manual The original reference manual for InterViews 3.1 can be found in PostScript form at src/man/refman3.1/refman.PS. It is also found in page-indexable online form at: http://www.ivtools.org/ivtools/doc/refman3.1/ * Building on top of ivtools Copied from the ivtools FAQ: http://www.ivtools.org/ivtools/faq.html#standalonedevel Q: How do I set up a stand-alone program or source tree on top of ivtools for development purposes? A: If you are writing a stand-alone program that will exist in a single directory, simply copy an appropriate Imakefile and main.c from a InterViews or ivtools example program directory, modify accordingly, then use "ivmkmf -a" to generate the Makefile. Make sure you are using a fresh ivmkmf that corresponds to your installation of ivtools. An example of this is the comtop sample program, a stand-alone program separate from ivtools that builds on top of the comterp command interpreter mechanism. ** comtop.tgz is now part of the ivtools distribution ** If you are setting up an entire source tree with both class libraries and executable programs, you will want to get started by replicating an equivalent source tree (i.e. vhclmaps) and change or rename all directories or files as appropriate. ** read more on vhclmaps at http://www.ivtools.org/vhclmaps/ ** * Acknowledgements: Roster of ivtools programmers: Scott Johnston Jorge Gautier Brian Hogencamp Rick Kissh Eric Kahler InterViews 3.1 programmers that we know of: Mark Linton John Vlissides Paul Calder John Interrante Scott Stanton Steven Tang ivtools can be built to leverage a variety of separate third-party libraries: * clippoly from Klamer Schutte for polygon intersection (licensed under the LGPL) * ACE from Doug Schmidt for middleware networking frameworks (licensed similar to X Windows) * IUE (the Image Understanding Environment) from Amerinex (half public-domain, half licensed similar to X Windows) ivtools detects and uses at runtime a variety of third-party executables: * qhull from the University of Minnesota Geometry Center * pstoedit from Wolfgang Glunz * ghostscript from L. Peter Deutsch and Aladdin Systems * djpeg from the JPEG group * giftopnm from Jef Poskanzer's pbmplus toolkit (a copy of anytopnm from the same toolkit is incorporated into the scripts directory) OverlayUnidraw incorporates Version 3.1 of a "C++ Vector and Matrix Algebra routnes" (algebra3.h) from Jean-Francois Doue. HPUX (HP-800) config contributed by Neal Becker. ALPHA config contributed by Bruno Delfosse at Thomson CSF. A lot of feedback on Solaris 2.6 building from M. Rasit Eskicioglu at the University of Alberta. NetBSD port and other assistance from Todd Gruhn. Cygwin development environment for Windows NT from RedHat (Cygnus Solutions). Patches to iv-3.2a incorporated from the PDP++ distribution from Carnegie Mellon University Department of Psychiatry, Randall C. O'Reilly, et. al. Patches for Debian 2.0 packaging incorporated from Guenter Geiger. This work included the conversion of drawtool, flipbook, and graphdraw README's to man page format. Patch for iv-3.1 shift key handling from Doug Scott, the author of MiXViews. Certain InterViews libraries (Dispatch, IV, IV-2_6, IV-X11, InterViews, OS, TIFF, Unidraw) and example programs (iclass, idemo, idraw) are copied from the InterViews 3.1 sources. Here is the aggregrate copyright notice for that software package: /* * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * Copyright (c) 1991 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Stanford and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Stanford and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL STANFORD OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The building of Unidraw with gcc-2.5.* (and subsequent versions) was enabled by a patch from Adam Zell. The TIFF library was written by Sam Leffler and published with this copyright and permission notice: /* * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991, 1992 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The strchooser example and StrChooser class were contributed by David B. Hollenbeck, as well as the glyph-based Motif-look pull-down menus of OverlayUnidraw. Here is his copyright notice: /* * Copyright (c) 1993 David B. Hollenbeck * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notice and this permission notice appear in * all copies of the software and related documentation, and (ii) the name of * David B. Hollenbeck may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of David B. Hollenbeck. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL DAVID B. HOLLENBECK BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The scrollable example is based on code from Chen Wang The text-editor example program is by Jan Andersson of Torpa Konsult AB. Here is that copyright notice: // // Simple Text Editor // // // Copyright (C) 1993 Ellemtel Telecommunication Systems Labratories // // Permission is granted to any individual or institution to use, copy, // modify, and distribute this software, provided that this complete // copyright and permission notice is maintained, intact, in all copies // and supporting documentation. // // Ellemtel Telecommunication Systems Labratories make no representation // of the suitability of this software for any purpose. It is provided // "as is" without any expressed or implied warranty. // // Jan Andersson, Torpa Konsult AB // janne at torpa.se - 1993-08-29 The Date and Time classes in the Time library are borrowed from the NIHCL class library, written by K. E. Gorlen, Computer Sciences Laboratory, DCRT, National Institutes of Health, Bethesda, MD 20892, and published with this notice: THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A "UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY. The graylevel raster and painting mechanisms of OverlayUnidraw were originated by Richard B. Kissh under contract to Vectaport Inc, as well as the shared memory rasters and asychronous incremental download of rasters. The ComUtil library was originally developed at Triple Vision Inc. under NSF Grant ISI-8521259 (authors/contributors: Robert C. Fitch, Richard A. Fundakowski, Robert K. Graber, Scott E. Johnston). The ivdl URL downloading utility was developed by Eric F. Kahler under contract to Vectaport Inc. Keung Chi Ng of IET Inc. has provided a good deal of feedback on ivtools over the years, and has assisted in demonstrating the viability of the application frameworks by developing a variety of vertical applications on top of OverlayUnidraw, FrameUnidraw, and GraphUnidraw. The balance of ivtools has been developed by Vectaport Inc. (P.O. Box 7141, Redwood City, CA 94063), with additional support from IET Inc. (P.O. Box 112450, Campbell, CA 95011) in the form of ARPA subcontracts (DACA76-93-C-0025 and DACA76-97-C-0005), as well as directly employing Scott Johnston from April 1999 thru August 2000 and giving him the freedom to evolve ivtools and related open-source frameworks as part of his job. There was also support from Applied Sciences Inc, San Francisco, CA, in the form of a subcontract for a Phase II SBIR from NASA Ames. ivtools-doc/ivtools-1.2-CHANGES.txt0000644000076500007650000001211011302027543017440 0ustar scottscott00000000000000Nov. 21st, 2009 ivtools-1.2.8 - significant work on keeping up with gcc and libstdc++. A wrapper for stdio.h was inadvertently getting pulled in by /usr/include files, causing a lot of trouble. Now builds with gcc-4.4 on Ubuntu 9.10. August 25th, 2009 ivtools-1.2.7 - series of memory leak checking commands: alistleak, attrvleak, commandleak, compleak, graphlicleak, mlineleak, viewleak. Each returns the current number of allocated objects of that type (AttributeValueList, AttributeValue, Command, OverlayComp, Graphic, MultiLineObj, and OverlayView). - added reference counting to OverlayView's (ComponentView's) referred from AttributeValue's (#define RESOURCE_COMPVIEW) - fixed attrname func. - fixed stddev func. - added BooleanType to NumFunc promotion method. - fixed graphdraw copy/paste of graph fragments - new SocketObj for use comterp - fix behavior of symbol manipulating funcs, by using internal bquote. - port to Ubuntu Heron - applied (most of) patch to build on Fedora 10 contributed by John Heidemann - balance of changes to support ipl-1.0.4 July 9th, 2008 ivtools-1.2.6 - Debian contributed patch for iostreams backward compatibility - bug fix for dispatcher.c contributed by Damon Permezel - add mute command to comterp - balance of changes to support ipl-1.0.2 March 4th, 2008 ivtools-1.2.5 - overall evolution to support use by ipl-1.0.1 (see http://sf.net/projects/ipl for further details) July 20th, 2006 ivtools-1.2.4 - changes for compiling with gcc-4.0 - changes to socket-driven (ACE) use of comterp to support multi-line commands - changes to allow re-use of scanner/parser with multiple operator tables October 7th, 2005 ivtools-1.2.3 - add support for an external libtiff with a --with-tiff (and -with-tiff-lib) configure arguments. - changes necessary to compile with gcc-4.0 - changes necessary to compile with gcc-4.0 on top of ACE-5.4.7 - changes necessary to compile on suse-9.3 linux (amd64 platform). Contributed by Paul Vixie. - fixed bug in "addtool" command/mechanism in graphdraw and drawserv - added support for color expressions to graphdraw (:colexpr), to allow attribute-sensitive computation of a node's color. January 25th, 2005 ivtools-1.2.2 If you submitted a patch in the past half year to ivtools that you don't see reflected here, please resubmit. I lost that e-mail. - fix for problem writing to /tmp - compilation fix on NetBSD for comterp.c - compilation patch submitted by Michal Palczew. July 13th, 2004 ivtools-1.2.1 Two crashes discovered and fixed by Michal Palczewski (mpalczew at users.sourceforge.net). One was a crash on exit after a delete with idraw/drawtool, the other was a crash upon delete with graphdraw. They turned out to be long-standing bugs in the order of object deletion, problems that hadn't appeared with other versions of gcc. RedHat must have adopted a more aggressive recycling of freed space in a recent release. Thanks Michal. June 3rd, 2004 ivtools-1.2 ivtools-1.2 sets a new direction for the package, toward peer-to-peer drawing chat. ivtools' drawserv, the editor that incorporates every ivtool mechanism to date (multi-frame, graph-editing, integrated scripting language) has been extended to support a unique kind of small-granularity shared whiteboard. This work was based on the pre-existing networked scripting capability of ivtools' comdraw. Then the pasting of any graphic was intercepted, and the graphic serialized into a command that could be communicated to other drawing editors to keep them in sync. Then a connection management system was established, that supported two-way peer-to-peer links between drawing editors. In addition the return path on each socket was used for detecting timeout, which causes the connection to be dropped. Finally, a distributed mutually-exclusive graphic selection mechanism was created, where every drawing editor is aware of who currently has a graphic selected or who had it selected last if it is not currently selected. When one drawing editor tries to select a graphic, it first requests that permission from the last selector (after determining it is unselected). Now you can link to other drawing editors, draw graphics and see them appear remotely (although only in black and white), and exercise the distributed selection mechanism. Four pieces remain to be developed: 1) support for full-up graphic state transmittal (it is sent, but not interpreted on the remote end);, 2) support for transmission of the complete set of drawing editor commands; 3) extending the distributed mutual-exclusion mechanism to select pseudo-graphics to acquire global permission for connection, pasting, moving front-to-back, and grouping; and 4) a two-tier mechanism for invoking select(), that will allow the bypass of selection requests while engaged in lengthy direct manipulations. If all this interests you, and you'd like to help, build this version of ivtools with ACE support, subscribe to the ivtools-dev mailing, and help me do some testing, programming, thinking, whatever. Or visit http://www.ivtools.org to make a donation to support this work. Thanks. Scott Johnston ivtools-doc/ivtools-1.2-COPYRIGHT.txt0000644000076500007650000000370411302027543017751 0ustar scottscott00000000000000/* * Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Scott E. Johnston * Copyright (c) 2000 Vectaport Inc., IET Inc * Copyright (c) 1999 Vectaport Inc., IET Inc, R.B. Kissh and Associates * Copyright (c) 1998 Vectaport Inc., R.B. Kissh and Associates, Eric F. Kahler * Copyright (c) 1997 Vectaport Inc., R.B. Kissh and Associates * Copyright (c) 1996 Vectaport Inc., R.B. Kissh and Associates, Cider Press * Copyright (c) 1994, 1995 Vectaport Inc., Cartoactive Systems, Cider Press * Copyright (c) 1993 David B. Hollenbeck * Copyright (c) 1993 Ellemtel Telecommunication Systems Labratories * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991 Silicon Graphics, Inc. * Copyright (c) 1989 Triple Vision Inc. * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * related documentation and data files for any purpose is hereby granted * without fee, provided that the above copyright notice appear in all copies * and that both that copyright notice and this permission notice appear in * supporting documentation, and that the names of the copyright holders not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holders * make no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ ivtools-doc/ivtools-1.2-INSTALL.txt0000644000076500007650000002474111302027543017513 0ustar scottscott00000000000000 INSTALL for ivtools-1.2 Instructions for building ivtools-1.2.8 from source, the short version: ./configure make su -c "make install" And if that doesn't work... Instructions for building ivtools-1.2.6 from source, the long version: 0. Compilation Environment Things you will need (or might want) before building ivtools: 0.a. a Unix machine (for Windows see README.cygwin). We know it has been built on Linux, NetBSD, FreeBSD, Solaris, Irix, Dec Alpha, HPUX, and SunOS. It also builds on Mac OS X (Darwin) which is a BSD-derivative OS. As of version 1.0.7 ivtools is Jaguar ready. 0.b GNU make. Test to make sure this is the version you are using with "make -v" 0.c. The gcc compiler. Almost any recent version of gcc will work, up to gcc-4.4. You will also need an equivalent copy of libstdc++. libstdc++ comes bundled with gcc-3.0 and greater. Before that the libstdc++ version numbers stay roughly in synch with the gcc version numbers. If you have gcc-2.8.1 you'd want libstdc++-2.8.1, etc.. Be aware that sometimes the include files for libstdc++ are in /usr/local/include/g++-2, a place that cannot be auto-determined by the configure script. Establishing a symbolic link to /usr/local/include/g++ will fix the problem. 0.d. An installed copy of X11R6 as distributed by the Open Group, or an equivalent (XFree86 for Linux/BSD/MacOS-X, or X11R5 from MIT). If you use a vendor's X11 product, the product should be based on X11R4 or later and the product should include imake and the config files. If you can't find imake on your system, you can get the sources for imake from the X11R5 or X11R6 distribution at several public ftp archives (such as ftp.x.org). ** warning -- imake used in combination with a non-GNU C preprocessor ** can be troublesome (i.e. the default one delivered with Solaris or ** DEC Alpha). You'll want to rig your PATH environment variable to ** find the gcc variant of cpp. Read more about it at ** http://www.ivtools.org/ivtools/faq.html#imakecppprob 0.e. If you want to use the polygon intersection tools, acquire and build clippoly, a LGPLed library for polygon clipping from: http://clippoly.sourceforge.net Add -fPIC to the CCFLAGS in the Makefile, then do a make, then build a shared library in the clippoly directory with: "gcc -shared -o libclippoly.so *.o" (you can leave out test.o if you want). 0.f. If you want to use the network server capabilities of the ivtools programs, acquire and build ACE, a C++ middleware toolkit available from: http://www.cs.wustl.edu/%7Eschmidt/ACE.html We are currently using ACE-5.6 (or the latest copy of ACE) built without threads support. Follow these steps to build it from source, or use the Debian binary if you happen to be working on that platform (libace5.1-dev): tar xvfz ACE-5.6.tar.gz cd ACE_wrappers export ACE_ROOT=`pwd` # csh: setenv ACE_ROOT `pwd` cd ace cp config-linux.h config.h # substitute appropriate OS name cd ../include/makeinclude cp platform_linux.GNU platform_macros.GNU # substitute OS emacs platform_macros.GNU # add "threads = 0" near top of file, step may no longer be needed cd ../../ace make Then use "--with-ace=$ACE_ROOT" when running the configure script as described below. 0.g if you want to build the ivxt example program, which demonstrates the embedding of a ivtools drawing editor inside Motif widgets, you'll need some version of lesstif or Motif (libXm). To enable the ivxt build, change line 7 of src/Imakefile from "#if 0" to "#if 1". Without these libraries and include files the build of ivxt will fail, which can be safely ignored. 0.h Finally, you might have an interest in building the IueServ library and iueserv program, a networked command interpreter wrapped around the class libraries of the Image Understanding Environment. See http://www.aai.com/AAI/IUE/IUE.html for details on acquiring and building this sizeable collection of public-domain and free software class libraries for image understanding application development. 1. Configuring ivtools: 1.a. You no longer need to set your CPU environment variable to build ivtools, but you still need a CPU specific configuration file. Ready-made configurations that have been known to work exist for LINUX, SUN4 (and Solaris), SGI, HP800 (HPUX), ALPHA, NETSBD, FREEBSD, and CYGWIN (for Windows NT). HPUX config file is known to be out of quite out of date, the others will probably work with little or no tweaks. Use "make CPU" from the top directory to see the symbol ivtools will use for your OS (grep config/arch.def for ArchitectureName to get a complete list of possible OS'es). Then look for a matching config/site.def. file, where is the value returned by "make CPU". If it is there proceed to step 1.b. Other variants of Unix can be attempted by creating the corresponding config/site.def., i.e. site.def.AIX or site.def.MIPS. Use SUN4 for Solaris as well as SunOS. Although SUN5 would be more correct, the config files automatically determine the difference between the two OS'es by checking for SVR4'ness. 1.b Run the configure script in the top-level directory, by entering "./configure" followed by any of the following arguments (--with arguments are recognized as --enable as well): --with-ace= Path to ACE source --with-ace-libs= Path to ACE libraries --with-clippoly= Path to clippoly source --with-clippoly-libs= Path to clippoly libraries --with-iue= Path to IUE source --with-iue-libs= Path to IUE libraries --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR --enable-install-relative[=ARG] install relative to source tree --enable-install-subdir[=ARG] install in ivtools sub-directory --prefix=DIR to use when install-relative is false (default is /usr/local) --enable-use-rpath[=ARG] use -rpath when linking, to embed shared-library pathnames in executable. ARG can be 0 or 1, default is 1 when not specified. The configure script is usually able to automatically determine --x-includes and --x-libraries (except on DEC Alpha). If the arguments for ACE, clippoly, or IUE are not supplied, the configure script prints a reminder, then proceeds to set up to build ivtools without these libraries. If you want to run the executables without installing them, use --enable-use-rpath to embed the shared library pathnames into the executables at link time. Here is an example of using the configure script with ACE and clippoly libraries: ./configure --with-clippoly=/proj/clippoly --with-ace=/proj/ACE_wrappers Running the configure script generates two files, a config/config.mk that gets included into each Makefile when used, and a config/config--gcc.defs that gets used by "make Makefiles" described below. is something like linux. The last line of output from the configure script shows this pathname. Verify that this is the same as the file included at the end of the config/site.def. file. Change the site.def. file if necessary. Also you may want to review the rest of the entries in the site.def. file to see if they are good defaults for your system. ** See http://www.ivtools.org/ivtools/faq.html for more info. 2. Compiling ivtools: 2.a. cd to the ivtools-1.2/ directory (you'd already be in this directory after running the configure script). 2.b. Compile it with a "make" command. The first time it is run it does all these individual steps (the equivalent of "make World"): - regenerates the top-level Makefile to snap it to the current directory ("make Makefile"). - runs through the source tree and generates all the other Makefile's ("make Makefiles"). - generates compilation dependencies for each directory with code to compile -- see the Makefile.depend file in each sub-directory ("make depend"). - compiles and links everything ("make -k"). If you have any trouble at this stage take a look at: http://www.ivtools.org/ivtools/faq.html#SourceBuild ** Subsequent use of "make" will only do the "make -k" phase described ** above. To redo everything, either do a "make World", or do a "make ** clean" followed by a "make". The "make clean" deletes the files ** that suppress the make stateges, make.makefile, make.makefiles, ** make.depend, and make.make. 3. Testing: Each directory under ivtools-1.2/src that begins in lower case (except for "include" and "scripts") contains executables that exercise some particular functionality. "cd" to each particular directory, type "/a.out" and see what happens (the utils directory contains more than one executable, things named other than a.out). Quite a few directories have README's that go into further detail on how to use the programs. ivtools-1.2/src/glyphs contains sub-directories of glyph example programs. ivtools-1.2/src/glyphs/examples3.1 contains most of the simple example programs that were originally distributed with InterViews 3.1. There is also a src/tests directory, with one test program to date, y2k/y2ktest.c. This builds a small program that verifies the Date object of the Time class library has no problem with Y2K or Y2.038K, by allowing the user to enter "+" and "-" to increment/decrement the year past these boundaries. 4. Installation: "make install" is supported for all the libraries and a subset of the more utilitarian example programs: the four original InterViews programs (idraw, iclass, idemo, and dclock), the four idraw derived programs (drawtool, netdraw, flipbook, and comdraw) and the two comterp programs (comterp and glyphterp). In addition the scripts in src/scripts and utilities in src/utils get installed. "make uninstall" is supported as well. When relative install is enabled (--enable-install-relative for the configure script), the binaries are installed in ivtools-1.2/bin/, the libraries are installed in ivtools-1.2/lib/, and the run-time X resource and config files are installed in ivtools-1.2/lib/ivtools. When relative install is disabled (the default for the configure script) the binaries are installed as stripped executables in `prefix`/bin the libraries are installed in `prefix`/lib, and the run-time X resource and config files are installed in `prefix`/lib/ivtools. note: idemo, comterp, glyphterp, and comdraw have config files that must be installed (either relative or non-relative) for the program to find them at runtime. drawtool relies on several scripts and utilities for accessing graphics and image files that must be installed as well for them to work. ivtools-doc/ivtools-1.2-MANIFEST.txt0000644000076500007650000021343111302027543017607 0ustar scottscott00000000000000ivtools-1.2/CHANGES ivtools-1.2/CHANGES-0.4 ivtools-1.2/CHANGES-0.5 ivtools-1.2/CHANGES-0.6 ivtools-1.2/CHANGES-0.7 ivtools-1.2/CHANGES-0.8 ivtools-1.2/CHANGES-0.9 ivtools-1.2/CHANGES-1.0 ivtools-1.2/CHANGES-1.1 ivtools-1.2/COPYING ivtools-1.2/COPYRIGHT ivtools-1.2/INSTALL ivtools-1.2/Imakefile ivtools-1.2/MANIFEST ivtools-1.2/MANIFEST.comterp ivtools-1.2/MANIFEST.perceps ivtools-1.2/Makefile ivtools-1.2/README ivtools-1.2/README.cygwin ivtools-1.2/README.ivmkcm ivtools-1.2/VERSION ivtools-1.2/aclocal.m4 ivtools-1.2/comtop.tgz ivtools-1.2/config/Imakefile ivtools-1.2/config/InterViews/Imakefile ivtools-1.2/config/InterViews/Makefile ivtools-1.2/config/InterViews/TIFF.def ivtools-1.2/config/InterViews/arch.def ivtools-1.2/config/InterViews/cxx.def ivtools-1.2/config/InterViews/iv-DGUX.cf ivtools-1.2/config/InterViews/iv-Mips.cf ivtools-1.2/config/InterViews/iv-aix.cf ivtools-1.2/config/InterViews/iv-alpha.cf ivtools-1.2/config/InterViews/iv-apollo.cf ivtools-1.2/config/InterViews/iv-att.cf ivtools-1.2/config/InterViews/iv-bsd.cf ivtools-1.2/config/InterViews/iv-convex.cf ivtools-1.2/config/InterViews/iv-cray.cf ivtools-1.2/config/InterViews/iv-cygwin.cf ivtools-1.2/config/InterViews/iv-darwin.cf ivtools-1.2/config/InterViews/iv-freebsd.cf ivtools-1.2/config/InterViews/iv-generic.cf ivtools-1.2/config/InterViews/iv-hp.cf ivtools-1.2/config/InterViews/iv-ibm.cf ivtools-1.2/config/InterViews/iv-linux.cf ivtools-1.2/config/InterViews/iv-luna.cf ivtools-1.2/config/InterViews/iv-m4330.cf ivtools-1.2/config/InterViews/iv-macII.cf ivtools-1.2/config/InterViews/iv-moto.cf ivtools-1.2/config/InterViews/iv-netbsd.cf ivtools-1.2/config/InterViews/iv-pegasus.cf ivtools-1.2/config/InterViews/iv-sgi.cf ivtools-1.2/config/InterViews/iv-sony.cf ivtools-1.2/config/InterViews/iv-stellar.cf ivtools-1.2/config/InterViews/iv-stratus.cf ivtools-1.2/config/InterViews/iv-sun.cf ivtools-1.2/config/InterViews/iv-ultrix.cf ivtools-1.2/config/InterViews/iv-x386.cf ivtools-1.2/config/InterViews/local.def ivtools-1.2/config/InterViews/params.def ivtools-1.2/config/InterViews/rules.def ivtools-1.2/config/InterViews/xparams.cf ivtools-1.2/config/Makefile ivtools-1.2/config/alpha3.0-gcc.mk ivtools-1.2/config/alpha3.2-gcc.mk ivtools-1.2/config/alpha4-gcc.mk ivtools-1.2/config/arch.def ivtools-1.2/config/config.defs.in ivtools-1.2/config/config.mk ivtools-1.2/config/config.null.mk ivtools-1.2/config/darwin-gcc.mk ivtools-1.2/config/default-gcc.mk ivtools-1.2/config/freebsd-gcc.mk ivtools-1.2/config/freebsd2.1-gcc.mk ivtools-1.2/config/gcc.def ivtools-1.2/config/hpux-gcc.mk ivtools-1.2/config/hpux10.20-gcc.mk ivtools-1.2/config/irix5-gcc.mk ivtools-1.2/config/irix6-gcc.mk ivtools-1.2/config/linux-gcc.mk ivtools-1.2/config/local.def ivtools-1.2/config/m88k-sysv3-gcc.mk ivtools-1.2/config/m88k-sysv4-gcc.mk ivtools-1.2/config/makevars.def ivtools-1.2/config/netbsd-gcc.mk ivtools-1.2/config/params.def ivtools-1.2/config/rules.def ivtools-1.2/config/sco3.2.4-gcc.mk ivtools-1.2/config/site.def.ALPHA ivtools-1.2/config/site.def.CYGWIN ivtools-1.2/config/site.def.DARWIN ivtools-1.2/config/site.def.FREEBSD ivtools-1.2/config/site.def.HP800 ivtools-1.2/config/site.def.LINUX ivtools-1.2/config/site.def.NETBSD ivtools-1.2/config/site.def.SGI ivtools-1.2/config/site.def.SUN4 ivtools-1.2/config/solaris-gcc.mk ivtools-1.2/config/sunos4-gcc.mk ivtools-1.2/config/template ivtools-1.2/configure ivtools-1.2/configure.in ivtools-1.2/configure.notes ivtools-1.2/sourceforge.102203.xml ivtools-1.2/src/AceDispatch/Imakefile ivtools-1.2/src/AceDispatch/Makefile ivtools-1.2/src/AceDispatch/ace_dispatcher.c ivtools-1.2/src/AceDispatch/ace_dispatcher.h ivtools-1.2/src/AceDispatch/ace_iohandler.c ivtools-1.2/src/AceDispatch/ace_iohandler.h ivtools-1.2/src/AttrGlyph/Imakefile ivtools-1.2/src/AttrGlyph/Makefile ivtools-1.2/src/AttrGlyph/attredit.c ivtools-1.2/src/AttrGlyph/attredit.h ivtools-1.2/src/Attribute/Imakefile ivtools-1.2/src/Attribute/Makefile ivtools-1.2/src/Attribute/_comterp.h ivtools-1.2/src/Attribute/_comutil.h ivtools-1.2/src/Attribute/alist.c ivtools-1.2/src/Attribute/alist.h ivtools-1.2/src/Attribute/aliterator.c ivtools-1.2/src/Attribute/aliterator.h ivtools-1.2/src/Attribute/attribute.c ivtools-1.2/src/Attribute/attribute.h ivtools-1.2/src/Attribute/attrlist.c ivtools-1.2/src/Attribute/attrlist.h ivtools-1.2/src/Attribute/attrvalue.c ivtools-1.2/src/Attribute/attrvalue.h ivtools-1.2/src/Attribute/classid.h ivtools-1.2/src/Attribute/commodule.c ivtools-1.2/src/Attribute/commodule.h ivtools-1.2/src/Attribute/lexscan.c ivtools-1.2/src/Attribute/lexscan.h ivtools-1.2/src/Attribute/paramlist.c ivtools-1.2/src/Attribute/paramlist.h ivtools-1.2/src/ComGlyph/Imakefile ivtools-1.2/src/ComGlyph/Makefile ivtools-1.2/src/ComGlyph/attrdialog.c ivtools-1.2/src/ComGlyph/attrdialog.h ivtools-1.2/src/ComGlyph/comtextedit.c ivtools-1.2/src/ComGlyph/comtextedit.h ivtools-1.2/src/ComGlyph/comtextview.c ivtools-1.2/src/ComGlyph/comtextview.h ivtools-1.2/src/ComGlyph/terpdialog.c ivtools-1.2/src/ComGlyph/terpdialog.h ivtools-1.2/src/ComTerp/Imakefile ivtools-1.2/src/ComTerp/Makefile ivtools-1.2/src/ComTerp/_comterp.h ivtools-1.2/src/ComTerp/_comutil.h ivtools-1.2/src/ComTerp/assignfunc.c ivtools-1.2/src/ComTerp/assignfunc.h ivtools-1.2/src/ComTerp/bitfunc.c ivtools-1.2/src/ComTerp/bitfunc.h ivtools-1.2/src/ComTerp/boolfunc.c ivtools-1.2/src/ComTerp/boolfunc.h ivtools-1.2/src/ComTerp/bquotefunc.c ivtools-1.2/src/ComTerp/bquotefunc.h ivtools-1.2/src/ComTerp/charfunc.c ivtools-1.2/src/ComTerp/charfunc.h ivtools-1.2/src/ComTerp/comfunc.c ivtools-1.2/src/ComTerp/comfunc.h ivtools-1.2/src/ComTerp/comhandler.c ivtools-1.2/src/ComTerp/comhandler.h ivtools-1.2/src/ComTerp/commodule.h ivtools-1.2/src/ComTerp/comterp.c ivtools-1.2/src/ComTerp/comterp.h ivtools-1.2/src/ComTerp/comterpserv.c ivtools-1.2/src/ComTerp/comterpserv.h ivtools-1.2/src/ComTerp/comvalue.c ivtools-1.2/src/ComTerp/comvalue.h ivtools-1.2/src/ComTerp/condfunc.c ivtools-1.2/src/ComTerp/condfunc.h ivtools-1.2/src/ComTerp/ctrlfunc.c ivtools-1.2/src/ComTerp/ctrlfunc.h ivtools-1.2/src/ComTerp/debugfunc.c ivtools-1.2/src/ComTerp/debugfunc.h ivtools-1.2/src/ComTerp/dotfunc.c ivtools-1.2/src/ComTerp/dotfunc.h ivtools-1.2/src/ComTerp/helpfunc.c ivtools-1.2/src/ComTerp/helpfunc.h ivtools-1.2/src/ComTerp/iofunc.c ivtools-1.2/src/ComTerp/iofunc.h ivtools-1.2/src/ComTerp/lexscan.h ivtools-1.2/src/ComTerp/listfunc.c ivtools-1.2/src/ComTerp/listfunc.h ivtools-1.2/src/ComTerp/mathfunc.c ivtools-1.2/src/ComTerp/mathfunc.h ivtools-1.2/src/ComTerp/numfunc.c ivtools-1.2/src/ComTerp/numfunc.h ivtools-1.2/src/ComTerp/parser.c ivtools-1.2/src/ComTerp/parser.h ivtools-1.2/src/ComTerp/postfunc.c ivtools-1.2/src/ComTerp/postfunc.h ivtools-1.2/src/ComTerp/randfunc.c ivtools-1.2/src/ComTerp/randfunc.h ivtools-1.2/src/ComTerp/scanner.c ivtools-1.2/src/ComTerp/scanner.h ivtools-1.2/src/ComTerp/statfunc.c ivtools-1.2/src/ComTerp/statfunc.h ivtools-1.2/src/ComTerp/strmfunc.c ivtools-1.2/src/ComTerp/strmfunc.h ivtools-1.2/src/ComTerp/symbolfunc.c ivtools-1.2/src/ComTerp/symbolfunc.h ivtools-1.2/src/ComTerp/typefunc.c ivtools-1.2/src/ComTerp/typefunc.h ivtools-1.2/src/ComTerp/xformfunc.c ivtools-1.2/src/ComTerp/xformfunc.h ivtools-1.2/src/ComUnidraw/Imakefile ivtools-1.2/src/ComUnidraw/Makefile ivtools-1.2/src/ComUnidraw/comeditor.c ivtools-1.2/src/ComUnidraw/comeditor.h ivtools-1.2/src/ComUnidraw/comterp-acehandler.c ivtools-1.2/src/ComUnidraw/comterp-acehandler.h ivtools-1.2/src/ComUnidraw/comterp-iohandler.c ivtools-1.2/src/ComUnidraw/comterp-iohandler.h ivtools-1.2/src/ComUnidraw/dialogfunc.c ivtools-1.2/src/ComUnidraw/dialogfunc.h ivtools-1.2/src/ComUnidraw/grdotfunc.c ivtools-1.2/src/ComUnidraw/grdotfunc.h ivtools-1.2/src/ComUnidraw/grfunc.c ivtools-1.2/src/ComUnidraw/grfunc.h ivtools-1.2/src/ComUnidraw/grlistfunc.c ivtools-1.2/src/ComUnidraw/grlistfunc.h ivtools-1.2/src/ComUnidraw/groupfunc.c ivtools-1.2/src/ComUnidraw/groupfunc.h ivtools-1.2/src/ComUnidraw/grstatfunc.c ivtools-1.2/src/ComUnidraw/grstatfunc.h ivtools-1.2/src/ComUnidraw/highlightfunc.c ivtools-1.2/src/ComUnidraw/highlightfunc.h ivtools-1.2/src/ComUnidraw/nfunc.c ivtools-1.2/src/ComUnidraw/nfunc.h ivtools-1.2/src/ComUnidraw/pixelfunc.c ivtools-1.2/src/ComUnidraw/pixelfunc.h ivtools-1.2/src/ComUnidraw/plotfunc.c ivtools-1.2/src/ComUnidraw/plotfunc.h ivtools-1.2/src/ComUnidraw/unifunc.c ivtools-1.2/src/ComUnidraw/unifunc.h ivtools-1.2/src/ComUtil/Imakefile ivtools-1.2/src/ComUtil/Makefile ivtools-1.2/src/ComUtil/_lexscan.c ivtools-1.2/src/ComUtil/_parser.c ivtools-1.2/src/ComUtil/_scanner.c ivtools-1.2/src/ComUtil/atox.c ivtools-1.2/src/ComUtil/comerr.c ivtools-1.2/src/ComUtil/comterp.arg ivtools-1.2/src/ComUtil/comterp.ci ivtools-1.2/src/ComUtil/comterp.err ivtools-1.2/src/ComUtil/comterp.h ivtools-1.2/src/ComUtil/comutil.arg ivtools-1.2/src/ComUtil/comutil.ci ivtools-1.2/src/ComUtil/comutil.h ivtools-1.2/src/ComUtil/dmm.c ivtools-1.2/src/ComUtil/errfile.c ivtools-1.2/src/ComUtil/errsys.c ivtools-1.2/src/ComUtil/funcptrs.c ivtools-1.2/src/ComUtil/mblock.c ivtools-1.2/src/ComUtil/optable.c ivtools-1.2/src/ComUtil/symbols.c ivtools-1.2/src/ComUtil/txtutil.c ivtools-1.2/src/ComUtil/types.c ivtools-1.2/src/ComUtil/util.c ivtools-1.2/src/ComUtil/util.h ivtools-1.2/src/ComUtil/xdll.c ivtools-1.2/src/Dispatch/Imakefile ivtools-1.2/src/Dispatch/Makefile ivtools-1.2/src/Dispatch/dispatcher.c ivtools-1.2/src/Dispatch/iohandler.c ivtools-1.2/src/Dispatch/iostreamb.c ivtools-1.2/src/Dispatch/netinet_in.h ivtools-1.2/src/Dispatch/rpcbuf.c ivtools-1.2/src/Dispatch/rpchdr.c ivtools-1.2/src/Dispatch/rpcpeer.c ivtools-1.2/src/Dispatch/rpcreader.c ivtools-1.2/src/Dispatch/rpcregistry.c ivtools-1.2/src/Dispatch/rpcservice.c ivtools-1.2/src/Dispatch/rpcstream.c ivtools-1.2/src/Dispatch/rpcwriter.c ivtools-1.2/src/DrawServ/Imakefile ivtools-1.2/src/DrawServ/Makefile ivtools-1.2/src/DrawServ/ackback-handler.c ivtools-1.2/src/DrawServ/ackback-handler.h ivtools-1.2/src/DrawServ/drawcatalog.c ivtools-1.2/src/DrawServ/drawcatalog.h ivtools-1.2/src/DrawServ/drawclasses.h ivtools-1.2/src/DrawServ/drawcmds.c ivtools-1.2/src/DrawServ/drawcmds.h ivtools-1.2/src/DrawServ/drawcomps.c ivtools-1.2/src/DrawServ/drawcomps.h ivtools-1.2/src/DrawServ/drawcreator.c ivtools-1.2/src/DrawServ/drawcreator.h ivtools-1.2/src/DrawServ/draweditor.c ivtools-1.2/src/DrawServ/draweditor.h ivtools-1.2/src/DrawServ/drawfunc.c ivtools-1.2/src/DrawServ/drawfunc.h ivtools-1.2/src/DrawServ/drawimport.c ivtools-1.2/src/DrawServ/drawimport.h ivtools-1.2/src/DrawServ/drawkit.c ivtools-1.2/src/DrawServ/drawkit.h ivtools-1.2/src/DrawServ/drawlink.c ivtools-1.2/src/DrawServ/drawlink.h ivtools-1.2/src/DrawServ/drawlinkcomp.c ivtools-1.2/src/DrawServ/drawlinkcomp.h ivtools-1.2/src/DrawServ/drawlinklist.c ivtools-1.2/src/DrawServ/drawlinklist.h ivtools-1.2/src/DrawServ/drawserv.c ivtools-1.2/src/DrawServ/drawserv.h ivtools-1.2/src/DrawServ/drawserv-handler.c ivtools-1.2/src/DrawServ/drawserv-handler.h ivtools-1.2/src/DrawServ/drawviews.c ivtools-1.2/src/DrawServ/drawviews.h ivtools-1.2/src/DrawServ/grid.c ivtools-1.2/src/DrawServ/grid.h ivtools-1.2/src/DrawServ/gridlist.c ivtools-1.2/src/DrawServ/gridlist.h ivtools-1.2/src/DrawServ/linkselection.c ivtools-1.2/src/DrawServ/linkselection.h ivtools-1.2/src/DrawServ/rcdialog.c ivtools-1.2/src/DrawServ/rcdialog.h ivtools-1.2/src/DrawServ/sid.c ivtools-1.2/src/DrawServ/sid.h ivtools-1.2/src/FrameUnidraw/Imakefile ivtools-1.2/src/FrameUnidraw/Makefile ivtools-1.2/src/FrameUnidraw/framecatalog.c ivtools-1.2/src/FrameUnidraw/framecatalog.h ivtools-1.2/src/FrameUnidraw/frameclasses.h ivtools-1.2/src/FrameUnidraw/framecmds.c ivtools-1.2/src/FrameUnidraw/framecmds.h ivtools-1.2/src/FrameUnidraw/framecomps.c ivtools-1.2/src/FrameUnidraw/framecomps.h ivtools-1.2/src/FrameUnidraw/framecreator.c ivtools-1.2/src/FrameUnidraw/framecreator.h ivtools-1.2/src/FrameUnidraw/frameeditor.c ivtools-1.2/src/FrameUnidraw/frameeditor.h ivtools-1.2/src/FrameUnidraw/framefile.c ivtools-1.2/src/FrameUnidraw/framefile.h ivtools-1.2/src/FrameUnidraw/framefunc.c ivtools-1.2/src/FrameUnidraw/framefunc.h ivtools-1.2/src/FrameUnidraw/frameimport.c ivtools-1.2/src/FrameUnidraw/frameimport.h ivtools-1.2/src/FrameUnidraw/framekit.c ivtools-1.2/src/FrameUnidraw/framekit.h ivtools-1.2/src/FrameUnidraw/frameps.c ivtools-1.2/src/FrameUnidraw/frameps.h ivtools-1.2/src/FrameUnidraw/framescripts.c ivtools-1.2/src/FrameUnidraw/framescripts.h ivtools-1.2/src/FrameUnidraw/framestates.c ivtools-1.2/src/FrameUnidraw/framestates.h ivtools-1.2/src/FrameUnidraw/frameviewer.c ivtools-1.2/src/FrameUnidraw/frameviewer.h ivtools-1.2/src/FrameUnidraw/frameviews.c ivtools-1.2/src/FrameUnidraw/frameviews.h ivtools-1.2/src/GraphUnidraw/Imakefile ivtools-1.2/src/GraphUnidraw/Makefile ivtools-1.2/src/GraphUnidraw/edgecomp.c ivtools-1.2/src/GraphUnidraw/edgecomp.h ivtools-1.2/src/GraphUnidraw/graphcatalog.c ivtools-1.2/src/GraphUnidraw/graphcatalog.h ivtools-1.2/src/GraphUnidraw/graphclasses.h ivtools-1.2/src/GraphUnidraw/graphcmds.c ivtools-1.2/src/GraphUnidraw/graphcmds.h ivtools-1.2/src/GraphUnidraw/graphcomp.c ivtools-1.2/src/GraphUnidraw/graphcomp.h ivtools-1.2/src/GraphUnidraw/graphcreator.c ivtools-1.2/src/GraphUnidraw/graphcreator.h ivtools-1.2/src/GraphUnidraw/graphdata.c ivtools-1.2/src/GraphUnidraw/graphdata.h ivtools-1.2/src/GraphUnidraw/graphdialog.c ivtools-1.2/src/GraphUnidraw/graphdialog.h ivtools-1.2/src/GraphUnidraw/grapheditor.c ivtools-1.2/src/GraphUnidraw/grapheditor.h ivtools-1.2/src/GraphUnidraw/graphimport.c ivtools-1.2/src/GraphUnidraw/graphimport.h ivtools-1.2/src/GraphUnidraw/graphkit.c ivtools-1.2/src/GraphUnidraw/graphkit.h ivtools-1.2/src/GraphUnidraw/graphtools.c ivtools-1.2/src/GraphUnidraw/graphtools.h ivtools-1.2/src/GraphUnidraw/nodecomp.c ivtools-1.2/src/GraphUnidraw/nodecomp.h ivtools-1.2/src/IV-2_6/Imakefile ivtools-1.2/src/IV-2_6/Makefile ivtools-1.2/src/IV-2_6/adjuster2_6.c ivtools-1.2/src/IV-2_6/banner.c ivtools-1.2/src/IV-2_6/border2_6.c ivtools-1.2/src/IV-2_6/box2_6.c ivtools-1.2/src/IV-2_6/button2_6.c ivtools-1.2/src/IV-2_6/compeditor.c ivtools-1.2/src/IV-2_6/control.c ivtools-1.2/src/IV-2_6/deck2_6.c ivtools-1.2/src/IV-2_6/dialog2_6.c ivtools-1.2/src/IV-2_6/filebrowser.c ivtools-1.2/src/IV-2_6/filechooser.c ivtools-1.2/src/IV-2_6/frame.c ivtools-1.2/src/IV-2_6/glue2_6.c ivtools-1.2/src/IV-2_6/interactor.c ivtools-1.2/src/IV-2_6/matcheditor.c ivtools-1.2/src/IV-2_6/menu2_6.c ivtools-1.2/src/IV-2_6/message.c ivtools-1.2/src/IV-2_6/painter.c ivtools-1.2/src/IV-2_6/panner2_6.c ivtools-1.2/src/IV-2_6/perspective.c ivtools-1.2/src/IV-2_6/rubband.c ivtools-1.2/src/IV-2_6/rubcurve.c ivtools-1.2/src/IV-2_6/rubgroup.c ivtools-1.2/src/IV-2_6/rubline.c ivtools-1.2/src/IV-2_6/rubrect.c ivtools-1.2/src/IV-2_6/rubverts.c ivtools-1.2/src/IV-2_6/scene.c ivtools-1.2/src/IV-2_6/scrollbar2_6.c ivtools-1.2/src/IV-2_6/scroller2_6.c ivtools-1.2/src/IV-2_6/sensor.c ivtools-1.2/src/IV-2_6/shape.c ivtools-1.2/src/IV-2_6/strbrowser.c ivtools-1.2/src/IV-2_6/strchooser.c ivtools-1.2/src/IV-2_6/streditor.c ivtools-1.2/src/IV-2_6/subject.c ivtools-1.2/src/IV-2_6/textbuffer.c ivtools-1.2/src/IV-2_6/textdisplay.c ivtools-1.2/src/IV-2_6/texteditor.c ivtools-1.2/src/IV-2_6/tform2_6.c ivtools-1.2/src/IV-2_6/tray.c ivtools-1.2/src/IV-2_6/viewport.c ivtools-1.2/src/IV-2_6/world.c ivtools-1.2/src/IV-2_6/xbitmap2_6.c ivtools-1.2/src/IV-2_6/xevent2_6.c ivtools-1.2/src/IV-2_6/xinter.c ivtools-1.2/src/IV-2_6/xpainter.c ivtools-1.2/src/IV-2_6/xpattern.c ivtools-1.2/src/IV-X11/Imakefile ivtools-1.2/src/IV-X11/Makefile ivtools-1.2/src/IV-X11/glcontext.c ivtools-1.2/src/IV-X11/wtable.h ivtools-1.2/src/IV-X11/xbitmap.c ivtools-1.2/src/IV-X11/xbrush.c ivtools-1.2/src/IV-X11/xcanvas.c ivtools-1.2/src/IV-X11/xcolor.c ivtools-1.2/src/IV-X11/xcursor.c ivtools-1.2/src/IV-X11/xdrag.c ivtools-1.2/src/IV-X11/xevent.c ivtools-1.2/src/IV-X11/xfont.c ivtools-1.2/src/IV-X11/xraster.c ivtools-1.2/src/IV-X11/xreqerr.c ivtools-1.2/src/IV-X11/xselection.c ivtools-1.2/src/IV-X11/xwindow.c ivtools-1.2/src/IV-common/Imakefile ivtools-1.2/src/IV-common/Makefile ivtools-1.2/src/IV-common/listimpl.c ivtools-1.2/src/IV-common/math.c ivtools-1.2/src/IV-common/memory.c ivtools-1.2/src/IV-common/regexp.c ivtools-1.2/src/IV-common/resource.c ivtools-1.2/src/IV-common/string.c ivtools-1.2/src/IV-common/textbuffer.c ivtools-1.2/src/IV-common/tform2_6.c ivtools-1.2/src/IV-common/transformer.c ivtools-1.2/src/IV/Imakefile ivtools-1.2/src/IV/InterViews.defaults ivtools-1.2/src/IV/Makefile ivtools-1.2/src/IVGlyph/Imakefile ivtools-1.2/src/IVGlyph/Makefile ivtools-1.2/src/IVGlyph/bdfltform.c ivtools-1.2/src/IVGlyph/bdfltform.h ivtools-1.2/src/IVGlyph/bdtable.c ivtools-1.2/src/IVGlyph/bdtable.h ivtools-1.2/src/IVGlyph/bdvalue.c ivtools-1.2/src/IVGlyph/bdvalue.h ivtools-1.2/src/IVGlyph/boolform.c ivtools-1.2/src/IVGlyph/boolform.h ivtools-1.2/src/IVGlyph/charfield.c ivtools-1.2/src/IVGlyph/charfield.h ivtools-1.2/src/IVGlyph/dragedit.c ivtools-1.2/src/IVGlyph/dragedit.h ivtools-1.2/src/IVGlyph/enumform.c ivtools-1.2/src/IVGlyph/enumform.h ivtools-1.2/src/IVGlyph/exportchooser.c ivtools-1.2/src/IVGlyph/exportchooser.h ivtools-1.2/src/IVGlyph/fieldedit.c ivtools-1.2/src/IVGlyph/fieldedit.h ivtools-1.2/src/IVGlyph/figure.c ivtools-1.2/src/IVGlyph/figure.h ivtools-1.2/src/IVGlyph/gdialogs.c ivtools-1.2/src/IVGlyph/gdialogs.h ivtools-1.2/src/IVGlyph/globals.c ivtools-1.2/src/IVGlyph/globals.h ivtools-1.2/src/IVGlyph/grabber.bm ivtools-1.2/src/IVGlyph/grabberMask.bm ivtools-1.2/src/IVGlyph/idraw.c ivtools-1.2/src/IVGlyph/idraw.h ivtools-1.2/src/IVGlyph/importchooser.c ivtools-1.2/src/IVGlyph/importchooser.h ivtools-1.2/src/IVGlyph/namestate.c ivtools-1.2/src/IVGlyph/namestate.h ivtools-1.2/src/IVGlyph/observables.c ivtools-1.2/src/IVGlyph/observables.h ivtools-1.2/src/IVGlyph/odialogs.c ivtools-1.2/src/IVGlyph/odialogs.h ivtools-1.2/src/IVGlyph/ofilechooser.c ivtools-1.2/src/IVGlyph/ofilechooser.h ivtools-1.2/src/IVGlyph/printchooser.c ivtools-1.2/src/IVGlyph/printchooser.h ivtools-1.2/src/IVGlyph/saveaschooser.c ivtools-1.2/src/IVGlyph/saveaschooser.h ivtools-1.2/src/IVGlyph/scrollable.c ivtools-1.2/src/IVGlyph/scrollable.h ivtools-1.2/src/IVGlyph/strchooser.c ivtools-1.2/src/IVGlyph/strchooser.h ivtools-1.2/src/IVGlyph/stredit.c ivtools-1.2/src/IVGlyph/stredit.h ivtools-1.2/src/IVGlyph/strlist.c ivtools-1.2/src/IVGlyph/strlist.h ivtools-1.2/src/IVGlyph/textbuff.c ivtools-1.2/src/IVGlyph/textbuff.h ivtools-1.2/src/IVGlyph/textedit.c ivtools-1.2/src/IVGlyph/textedit.h ivtools-1.2/src/IVGlyph/texteditor.c ivtools-1.2/src/IVGlyph/texteditor.h ivtools-1.2/src/IVGlyph/textform.c ivtools-1.2/src/IVGlyph/textform.h ivtools-1.2/src/IVGlyph/textview.c ivtools-1.2/src/IVGlyph/textview.h ivtools-1.2/src/IVGlyph/textwindow.c ivtools-1.2/src/IVGlyph/textwindow.h ivtools-1.2/src/IVGlyph/toolbutton.c ivtools-1.2/src/IVGlyph/toolbutton.h ivtools-1.2/src/IVGlyph/valuator.c ivtools-1.2/src/IVGlyph/valuator.h ivtools-1.2/src/Imakefile ivtools-1.2/src/InterViews/Imakefile ivtools-1.2/src/InterViews/Makefile ivtools-1.2/src/InterViews/action.c ivtools-1.2/src/InterViews/adjust.c ivtools-1.2/src/InterViews/aggr.c ivtools-1.2/src/InterViews/align.c ivtools-1.2/src/InterViews/alloctbl.c ivtools-1.2/src/InterViews/arrcomp.c ivtools-1.2/src/InterViews/background.c ivtools-1.2/src/InterViews/bevel.c ivtools-1.2/src/InterViews/border.c ivtools-1.2/src/InterViews/box.c ivtools-1.2/src/InterViews/browser.c ivtools-1.2/src/InterViews/button.c ivtools-1.2/src/InterViews/character.c ivtools-1.2/src/InterViews/composition.c ivtools-1.2/src/InterViews/compositor.c ivtools-1.2/src/InterViews/debug.c ivtools-1.2/src/InterViews/deck.c ivtools-1.2/src/InterViews/dialogs.c ivtools-1.2/src/InterViews/fbrowser.c ivtools-1.2/src/InterViews/fchooser.c ivtools-1.2/src/InterViews/field.c ivtools-1.2/src/InterViews/geometry.c ivtools-1.2/src/InterViews/glyph.c ivtools-1.2/src/InterViews/group.c ivtools-1.2/src/InterViews/handler.c ivtools-1.2/src/InterViews/hit.c ivtools-1.2/src/InterViews/image.c ivtools-1.2/src/InterViews/input.c ivtools-1.2/src/InterViews/kit.c ivtools-1.2/src/InterViews/label.c ivtools-1.2/src/InterViews/layout.c ivtools-1.2/src/InterViews/lrmarker.c ivtools-1.2/src/InterViews/menu.c ivtools-1.2/src/InterViews/mf_dialogs.c ivtools-1.2/src/InterViews/mf_kit.c ivtools-1.2/src/InterViews/mono_kit.c ivtools-1.2/src/InterViews/monoglyph.c ivtools-1.2/src/InterViews/observe.c ivtools-1.2/src/InterViews/ol_dialogs.c ivtools-1.2/src/InterViews/ol_kit.c ivtools-1.2/src/InterViews/page.c ivtools-1.2/src/InterViews/patch.c ivtools-1.2/src/InterViews/place.c ivtools-1.2/src/InterViews/polyglyph.c ivtools-1.2/src/InterViews/printer.c ivtools-1.2/src/InterViews/psfont.c ivtools-1.2/src/InterViews/regexp.c ivtools-1.2/src/InterViews/resource.c ivtools-1.2/src/InterViews/rule.c ivtools-1.2/src/InterViews/scrbox.c ivtools-1.2/src/InterViews/session.c ivtools-1.2/src/InterViews/shadow.c ivtools-1.2/src/InterViews/simpcomp.c ivtools-1.2/src/InterViews/slider.c ivtools-1.2/src/InterViews/smf_kit.c ivtools-1.2/src/InterViews/stencil.c ivtools-1.2/src/InterViews/stepper.c ivtools-1.2/src/InterViews/style.c ivtools-1.2/src/InterViews/superpose.c ivtools-1.2/src/InterViews/target.c ivtools-1.2/src/InterViews/telltale.c ivtools-1.2/src/InterViews/texcomp.c ivtools-1.2/src/InterViews/tformsetter.c ivtools-1.2/src/InterViews/tiff.c ivtools-1.2/src/InterViews/tile.c ivtools-1.2/src/InterViews/transformer.c ivtools-1.2/src/InterViews/xymarker.c ivtools-1.2/src/IueServ/Imakefile ivtools-1.2/src/IueServ/Makefile ivtools-1.2/src/IueServ/exportfunc.c ivtools-1.2/src/IueServ/exportfunc.h ivtools-1.2/src/IueServ/ipfunc.c ivtools-1.2/src/IueServ/ipfunc.h ivtools-1.2/src/IueServ/iueclasses.h ivtools-1.2/src/IueServ/iuecomps.c ivtools-1.2/src/IueServ/iuecomps.h ivtools-1.2/src/IueServ/iuefunc.c ivtools-1.2/src/IueServ/iuefunc.h ivtools-1.2/src/IueServ/iuehandler.c ivtools-1.2/src/IueServ/iuehandler.h ivtools-1.2/src/IueServ/roifunc.c ivtools-1.2/src/IueServ/roifunc.h ivtools-1.2/src/Makefile ivtools-1.2/src/OS/Imakefile ivtools-1.2/src/OS/Makefile ivtools-1.2/src/OS/directory.c ivtools-1.2/src/OS/file.c ivtools-1.2/src/OS/host.c ivtools-1.2/src/OS/listimpl.c ivtools-1.2/src/OS/math.c ivtools-1.2/src/OS/memory.c ivtools-1.2/src/OS/string.c ivtools-1.2/src/OS/ustring.c ivtools-1.2/src/OverlayUnidraw/Imakefile ivtools-1.2/src/OverlayUnidraw/Makefile ivtools-1.2/src/OverlayUnidraw/aceimport.c ivtools-1.2/src/OverlayUnidraw/aceimport.h ivtools-1.2/src/OverlayUnidraw/algebra3.h ivtools-1.2/src/OverlayUnidraw/annotate.c ivtools-1.2/src/OverlayUnidraw/annotate.h ivtools-1.2/src/OverlayUnidraw/attrtool.c ivtools-1.2/src/OverlayUnidraw/attrtool.h ivtools-1.2/src/OverlayUnidraw/clipline.c ivtools-1.2/src/OverlayUnidraw/clipline.h ivtools-1.2/src/OverlayUnidraw/cliplinepoly.c ivtools-1.2/src/OverlayUnidraw/cliplinepoly.h ivtools-1.2/src/OverlayUnidraw/clippoly.c ivtools-1.2/src/OverlayUnidraw/clippoly.h ivtools-1.2/src/OverlayUnidraw/grayraster.c ivtools-1.2/src/OverlayUnidraw/grayraster.h ivtools-1.2/src/OverlayUnidraw/grloctool.c ivtools-1.2/src/OverlayUnidraw/grloctool.h ivtools-1.2/src/OverlayUnidraw/indexmixins.c ivtools-1.2/src/OverlayUnidraw/indexmixins.h ivtools-1.2/src/OverlayUnidraw/leafwalker.c ivtools-1.2/src/OverlayUnidraw/leafwalker.h ivtools-1.2/src/OverlayUnidraw/ovabout.c ivtools-1.2/src/OverlayUnidraw/ovabout.h ivtools-1.2/src/OverlayUnidraw/ovadjuster.c ivtools-1.2/src/OverlayUnidraw/ovadjuster.h ivtools-1.2/src/OverlayUnidraw/ovarrow.c ivtools-1.2/src/OverlayUnidraw/ovarrow.h ivtools-1.2/src/OverlayUnidraw/ovcamcmds.c ivtools-1.2/src/OverlayUnidraw/ovcamcmds.h ivtools-1.2/src/OverlayUnidraw/ovcatalog.c ivtools-1.2/src/OverlayUnidraw/ovcatalog.h ivtools-1.2/src/OverlayUnidraw/ovchainview.c ivtools-1.2/src/OverlayUnidraw/ovchainview.h ivtools-1.2/src/OverlayUnidraw/ovclasses.h ivtools-1.2/src/OverlayUnidraw/ovclip.c ivtools-1.2/src/OverlayUnidraw/ovclip.h ivtools-1.2/src/OverlayUnidraw/ovcmds.c ivtools-1.2/src/OverlayUnidraw/ovcmds.h ivtools-1.2/src/OverlayUnidraw/ovcomps.c ivtools-1.2/src/OverlayUnidraw/ovcomps.h ivtools-1.2/src/OverlayUnidraw/ovcreator.c ivtools-1.2/src/OverlayUnidraw/ovcreator.h ivtools-1.2/src/OverlayUnidraw/ovctrl.c ivtools-1.2/src/OverlayUnidraw/ovctrl.h ivtools-1.2/src/OverlayUnidraw/ovdamage.c ivtools-1.2/src/OverlayUnidraw/ovdamage.h ivtools-1.2/src/OverlayUnidraw/ovdialog.c ivtools-1.2/src/OverlayUnidraw/ovdialog.h ivtools-1.2/src/OverlayUnidraw/ovdoer.c ivtools-1.2/src/OverlayUnidraw/ovdoer.h ivtools-1.2/src/OverlayUnidraw/oved.c ivtools-1.2/src/OverlayUnidraw/oved.h ivtools-1.2/src/OverlayUnidraw/ovellipse.c ivtools-1.2/src/OverlayUnidraw/ovellipse.h ivtools-1.2/src/OverlayUnidraw/ovexport.c ivtools-1.2/src/OverlayUnidraw/ovexport.h ivtools-1.2/src/OverlayUnidraw/ovfile.c ivtools-1.2/src/OverlayUnidraw/ovfile.h ivtools-1.2/src/OverlayUnidraw/ovfixview.c ivtools-1.2/src/OverlayUnidraw/ovfixview.h ivtools-1.2/src/OverlayUnidraw/ovgdialog.c ivtools-1.2/src/OverlayUnidraw/ovgdialog.h ivtools-1.2/src/OverlayUnidraw/ovhull.c ivtools-1.2/src/OverlayUnidraw/ovhull.h ivtools-1.2/src/OverlayUnidraw/ovimport.c ivtools-1.2/src/OverlayUnidraw/ovimport.h ivtools-1.2/src/OverlayUnidraw/ovipcmds.c ivtools-1.2/src/OverlayUnidraw/ovipcmds.h ivtools-1.2/src/OverlayUnidraw/ovkit.c ivtools-1.2/src/OverlayUnidraw/ovkit.h ivtools-1.2/src/OverlayUnidraw/ovline.c ivtools-1.2/src/OverlayUnidraw/ovline.h ivtools-1.2/src/OverlayUnidraw/ovmanips.c ivtools-1.2/src/OverlayUnidraw/ovmanips.h ivtools-1.2/src/OverlayUnidraw/ovpage.c ivtools-1.2/src/OverlayUnidraw/ovpage.h ivtools-1.2/src/OverlayUnidraw/ovpainter.c ivtools-1.2/src/OverlayUnidraw/ovpainter.h ivtools-1.2/src/OverlayUnidraw/ovpanner.c ivtools-1.2/src/OverlayUnidraw/ovpanner.h ivtools-1.2/src/OverlayUnidraw/ovpolygon.c ivtools-1.2/src/OverlayUnidraw/ovpolygon.h ivtools-1.2/src/OverlayUnidraw/ovprecise.c ivtools-1.2/src/OverlayUnidraw/ovprecise.h ivtools-1.2/src/OverlayUnidraw/ovprint.c ivtools-1.2/src/OverlayUnidraw/ovprint.h ivtools-1.2/src/OverlayUnidraw/ovpspict.c ivtools-1.2/src/OverlayUnidraw/ovpspict.h ivtools-1.2/src/OverlayUnidraw/ovpsview.c ivtools-1.2/src/OverlayUnidraw/ovpsview.h ivtools-1.2/src/OverlayUnidraw/ovraster.c ivtools-1.2/src/OverlayUnidraw/ovraster.h ivtools-1.2/src/OverlayUnidraw/ovrect.c ivtools-1.2/src/OverlayUnidraw/ovrect.h ivtools-1.2/src/OverlayUnidraw/ovrestimage.c ivtools-1.2/src/OverlayUnidraw/ovrestimage.h ivtools-1.2/src/OverlayUnidraw/ovselect.c ivtools-1.2/src/OverlayUnidraw/ovselect.h ivtools-1.2/src/OverlayUnidraw/ovselection.c ivtools-1.2/src/OverlayUnidraw/ovselection.h ivtools-1.2/src/OverlayUnidraw/ovshowhide.c ivtools-1.2/src/OverlayUnidraw/ovshowhide.h ivtools-1.2/src/OverlayUnidraw/ovspline.c ivtools-1.2/src/OverlayUnidraw/ovspline.h ivtools-1.2/src/OverlayUnidraw/ovstates.c ivtools-1.2/src/OverlayUnidraw/ovstates.h ivtools-1.2/src/OverlayUnidraw/ovstencil.c ivtools-1.2/src/OverlayUnidraw/ovstencil.h ivtools-1.2/src/OverlayUnidraw/ovtext.c ivtools-1.2/src/OverlayUnidraw/ovtext.h ivtools-1.2/src/OverlayUnidraw/ovunidraw.c ivtools-1.2/src/OverlayUnidraw/ovunidraw.h ivtools-1.2/src/OverlayUnidraw/ovvars.c ivtools-1.2/src/OverlayUnidraw/ovvars.h ivtools-1.2/src/OverlayUnidraw/ovvertices.c ivtools-1.2/src/OverlayUnidraw/ovvertices.h ivtools-1.2/src/OverlayUnidraw/ovviewer.c ivtools-1.2/src/OverlayUnidraw/ovviewer.h ivtools-1.2/src/OverlayUnidraw/ovviews.c ivtools-1.2/src/OverlayUnidraw/ovviews.h ivtools-1.2/src/OverlayUnidraw/paramlist.h ivtools-1.2/src/OverlayUnidraw/phold.h ivtools-1.2/src/OverlayUnidraw/ptinpoly.c ivtools-1.2/src/OverlayUnidraw/ptinpoly.h ivtools-1.2/src/OverlayUnidraw/rastercmds.c ivtools-1.2/src/OverlayUnidraw/rastercmds.h ivtools-1.2/src/OverlayUnidraw/scriptview.c ivtools-1.2/src/OverlayUnidraw/scriptview.h ivtools-1.2/src/OverlayUnidraw/setattrbyexpr.c ivtools-1.2/src/OverlayUnidraw/setattrbyexpr.h ivtools-1.2/src/OverlayUnidraw/slctbyattr.c ivtools-1.2/src/OverlayUnidraw/slctbyattr.h ivtools-1.2/src/OverlayUnidraw/textfile.c ivtools-1.2/src/OverlayUnidraw/textfile.h ivtools-1.2/src/TIFF/Copyright ivtools-1.2/src/TIFF/HOWTO ivtools-1.2/src/TIFF/Imakefile ivtools-1.2/src/TIFF/Makefile ivtools-1.2/src/TIFF/README ivtools-1.2/src/TIFF/VERSION ivtools-1.2/src/TIFF/machdep.h ivtools-1.2/src/TIFF/mkg3states.c ivtools-1.2/src/TIFF/mkspans.c ivtools-1.2/src/TIFF/prototypes.h ivtools-1.2/src/TIFF/t4.h ivtools-1.2/src/TIFF/tif_aux.c ivtools-1.2/src/TIFF/tif_ccittrle.c ivtools-1.2/src/TIFF/tif_close.c ivtools-1.2/src/TIFF/tif_compat.c ivtools-1.2/src/TIFF/tif_compress.c ivtools-1.2/src/TIFF/tif_dir.c ivtools-1.2/src/TIFF/tif_dirinfo.c ivtools-1.2/src/TIFF/tif_dirread.c ivtools-1.2/src/TIFF/tif_dirwrite.c ivtools-1.2/src/TIFF/tif_dumpmode.c ivtools-1.2/src/TIFF/tif_error.c ivtools-1.2/src/TIFF/tif_fax3.c ivtools-1.2/src/TIFF/tif_fax3.h ivtools-1.2/src/TIFF/tif_fax4.c ivtools-1.2/src/TIFF/tif_flush.c ivtools-1.2/src/TIFF/tif_getimage.c ivtools-1.2/src/TIFF/tif_jpeg.c ivtools-1.2/src/TIFF/tif_lzw.c ivtools-1.2/src/TIFF/tif_machdep.c ivtools-1.2/src/TIFF/tif_next.c ivtools-1.2/src/TIFF/tif_open.c ivtools-1.2/src/TIFF/tif_packbits.c ivtools-1.2/src/TIFF/tif_print.c ivtools-1.2/src/TIFF/tif_read.c ivtools-1.2/src/TIFF/tif_strip.c ivtools-1.2/src/TIFF/tif_swab.c ivtools-1.2/src/TIFF/tif_thunder.c ivtools-1.2/src/TIFF/tif_tile.c ivtools-1.2/src/TIFF/tif_version.c ivtools-1.2/src/TIFF/tif_warning.c ivtools-1.2/src/TIFF/tif_write.c ivtools-1.2/src/TIFF/tiffcompat.h ivtools-1.2/src/TIFF/tiffioP.h ivtools-1.2/src/Time/Date.c ivtools-1.2/src/Time/Date.h ivtools-1.2/src/Time/Imakefile ivtools-1.2/src/Time/Makefile ivtools-1.2/src/Time/Time.c ivtools-1.2/src/Time/Time_.h ivtools-1.2/src/Time/obstime.c ivtools-1.2/src/Time/obstime.h ivtools-1.2/src/Time/timeglyph.c ivtools-1.2/src/Time/timeglyph.h ivtools-1.2/src/TopoFace/Imakefile ivtools-1.2/src/TopoFace/Makefile ivtools-1.2/src/TopoFace/fgeomobjs.c ivtools-1.2/src/TopoFace/fgeomobjs.h ivtools-1.2/src/TopoFace/topoedge.c ivtools-1.2/src/TopoFace/topoedge.h ivtools-1.2/src/TopoFace/topoedgelist.c ivtools-1.2/src/TopoFace/topoedgelist.h ivtools-1.2/src/TopoFace/topoelt.c ivtools-1.2/src/TopoFace/topoelt.h ivtools-1.2/src/TopoFace/topoface.c ivtools-1.2/src/TopoFace/topoface.h ivtools-1.2/src/TopoFace/toponode.c ivtools-1.2/src/TopoFace/toponode.h ivtools-1.2/src/UniIdraw/Imakefile ivtools-1.2/src/UniIdraw/Makefile ivtools-1.2/src/UniIdraw/idarrow.c ivtools-1.2/src/UniIdraw/idarrow.h ivtools-1.2/src/UniIdraw/idarrowhead.c ivtools-1.2/src/UniIdraw/idarrowhead.h ivtools-1.2/src/UniIdraw/idarrows.c ivtools-1.2/src/UniIdraw/idarrows.h ivtools-1.2/src/UniIdraw/idcatalog.c ivtools-1.2/src/UniIdraw/idcatalog.h ivtools-1.2/src/UniIdraw/idclasses.h ivtools-1.2/src/UniIdraw/idcmds.c ivtools-1.2/src/UniIdraw/idcmds.h ivtools-1.2/src/UniIdraw/idcomp.c ivtools-1.2/src/UniIdraw/idcomp.h ivtools-1.2/src/UniIdraw/idcreator.c ivtools-1.2/src/UniIdraw/idcreator.h ivtools-1.2/src/UniIdraw/iddialogs.c ivtools-1.2/src/UniIdraw/iddialogs.h ivtools-1.2/src/UniIdraw/ided.c ivtools-1.2/src/UniIdraw/ided.h ivtools-1.2/src/UniIdraw/idkybd.c ivtools-1.2/src/UniIdraw/idkybd.h ivtools-1.2/src/UniIdraw/idvars.c ivtools-1.2/src/UniIdraw/idvars.h ivtools-1.2/src/UniIdraw/idversion.h ivtools-1.2/src/Unidraw-common/Imakefile ivtools-1.2/src/Unidraw-common/Makefile ivtools-1.2/src/Unidraw-common/component.c ivtools-1.2/src/Unidraw-common/compview.c ivtools-1.2/src/Unidraw-common/geomobjs.c ivtools-1.2/src/Unidraw-common/iterator.c ivtools-1.2/src/Unidraw-common/uarray.c ivtools-1.2/src/Unidraw-common/uhash.c ivtools-1.2/src/Unidraw-common/ulist.c ivtools-1.2/src/Unidraw-common/umap.c ivtools-1.2/src/Unidraw/Imakefile ivtools-1.2/src/Unidraw/Makefile ivtools-1.2/src/Unidraw/align.c ivtools-1.2/src/Unidraw/brushcmd.c ivtools-1.2/src/Unidraw/catalog.c ivtools-1.2/src/Unidraw/catcmds.c ivtools-1.2/src/Unidraw/cglue.c ivtools-1.2/src/Unidraw/clipboard.c ivtools-1.2/src/Unidraw/colorcmd.c ivtools-1.2/src/Unidraw/command.c ivtools-1.2/src/Unidraw/component.c ivtools-1.2/src/Unidraw/compview.c ivtools-1.2/src/Unidraw/connect.c ivtools-1.2/src/Unidraw/connector.c ivtools-1.2/src/Unidraw/creator.c ivtools-1.2/src/Unidraw/csolver.c ivtools-1.2/src/Unidraw/ctrlinfo.c ivtools-1.2/src/Unidraw/damage.c ivtools-1.2/src/Unidraw/data.c ivtools-1.2/src/Unidraw/datas.c ivtools-1.2/src/Unidraw/dialogs.c ivtools-1.2/src/Unidraw/edit.c ivtools-1.2/src/Unidraw/editor.c ivtools-1.2/src/Unidraw/editorinfo.c ivtools-1.2/src/Unidraw/ellipse.c ivtools-1.2/src/Unidraw/ellipses.c ivtools-1.2/src/Unidraw/externview.c ivtools-1.2/src/Unidraw/font.c ivtools-1.2/src/Unidraw/geomobjs.c ivtools-1.2/src/Unidraw/globals.c ivtools-1.2/src/Unidraw/graphic.c ivtools-1.2/src/Unidraw/grblock.c ivtools-1.2/src/Unidraw/grcomp.c ivtools-1.2/src/Unidraw/grcomptool.c ivtools-1.2/src/Unidraw/grid.c ivtools-1.2/src/Unidraw/grview.c ivtools-1.2/src/Unidraw/gvupdater.c ivtools-1.2/src/Unidraw/import.c ivtools-1.2/src/Unidraw/iterator.c ivtools-1.2/src/Unidraw/keymap.c ivtools-1.2/src/Unidraw/kybd.c ivtools-1.2/src/Unidraw/line.c ivtools-1.2/src/Unidraw/lines.c ivtools-1.2/src/Unidraw/link.c ivtools-1.2/src/Unidraw/macro.c ivtools-1.2/src/Unidraw/magnify.c ivtools-1.2/src/Unidraw/manip.c ivtools-1.2/src/Unidraw/manips.c ivtools-1.2/src/Unidraw/move.c ivtools-1.2/src/Unidraw/nop.c ivtools-1.2/src/Unidraw/pad.c ivtools-1.2/src/Unidraw/patcmd.c ivtools-1.2/src/Unidraw/path.c ivtools-1.2/src/Unidraw/picture.c ivtools-1.2/src/Unidraw/pin.c ivtools-1.2/src/Unidraw/polygon.c ivtools-1.2/src/Unidraw/polygons.c ivtools-1.2/src/Unidraw/pspaint.c ivtools-1.2/src/Unidraw/psview.c ivtools-1.2/src/Unidraw/rastercomp.c ivtools-1.2/src/Unidraw/rasterrect.c ivtools-1.2/src/Unidraw/rect.c ivtools-1.2/src/Unidraw/reshape.c ivtools-1.2/src/Unidraw/rotate.c ivtools-1.2/src/Unidraw/scale.c ivtools-1.2/src/Unidraw/select.c ivtools-1.2/src/Unidraw/selection.c ivtools-1.2/src/Unidraw/slot.c ivtools-1.2/src/Unidraw/spline.c ivtools-1.2/src/Unidraw/splines.c ivtools-1.2/src/Unidraw/statevar.c ivtools-1.2/src/Unidraw/statevars.c ivtools-1.2/src/Unidraw/stateview.c ivtools-1.2/src/Unidraw/stateviews.c ivtools-1.2/src/Unidraw/stencilcomp.c ivtools-1.2/src/Unidraw/stretch.c ivtools-1.2/src/Unidraw/struct.c ivtools-1.2/src/Unidraw/text.c ivtools-1.2/src/Unidraw/tool.c ivtools-1.2/src/Unidraw/transfn.c ivtools-1.2/src/Unidraw/transfns.c ivtools-1.2/src/Unidraw/transforms.c ivtools-1.2/src/Unidraw/uarray.c ivtools-1.2/src/Unidraw/uctrl.c ivtools-1.2/src/Unidraw/uctrls.c ivtools-1.2/src/Unidraw/uhash.c ivtools-1.2/src/Unidraw/ulabel.c ivtools-1.2/src/Unidraw/ulist.c ivtools-1.2/src/Unidraw/umap.c ivtools-1.2/src/Unidraw/unidraw.c ivtools-1.2/src/Unidraw/upage.c ivtools-1.2/src/Unidraw/ustencil.c ivtools-1.2/src/Unidraw/vertices.c ivtools-1.2/src/Unidraw/verts.c ivtools-1.2/src/Unidraw/viewcmds.c ivtools-1.2/src/Unidraw/viewer.c ivtools-1.2/src/comdraw/Imakefile ivtools-1.2/src/comdraw/Makefile ivtools-1.2/src/comdraw/README ivtools-1.2/src/comdraw/main.c ivtools-1.2/src/comterp_/Imakefile ivtools-1.2/src/comterp_/Makefile ivtools-1.2/src/comterp_/README ivtools-1.2/src/comterp_/main.c ivtools-1.2/src/comtest/Imakefile ivtools-1.2/src/comtest/Makefile ivtools-1.2/src/comtest/main.c ivtools-1.2/src/dclock/Imakefile ivtools-1.2/src/dclock/Makefile ivtools-1.2/src/dclock/clocktime.c ivtools-1.2/src/dclock/clocktime.h ivtools-1.2/src/dclock/data.c ivtools-1.2/src/dclock/data.h ivtools-1.2/src/dclock/dclock.c ivtools-1.2/src/dclock/dclock.h ivtools-1.2/src/dclock/dface.c ivtools-1.2/src/dclock/dface.h ivtools-1.2/src/dclock/digit.c ivtools-1.2/src/dclock/digit.h ivtools-1.2/src/dclock/segment.c ivtools-1.2/src/dclock/segment.h ivtools-1.2/src/drawserv_/Imakefile ivtools-1.2/src/drawserv_/Makefile ivtools-1.2/src/drawserv_/main.c ivtools-1.2/src/drawtool/Imakefile ivtools-1.2/src/drawtool/Makefile ivtools-1.2/src/drawtool/README ivtools-1.2/src/drawtool/main.c ivtools-1.2/src/flipbook/Imakefile ivtools-1.2/src/flipbook/Makefile ivtools-1.2/src/flipbook/README ivtools-1.2/src/flipbook/main.c ivtools-1.2/src/glyphs/Imakefile ivtools-1.2/src/glyphs/Makefile ivtools-1.2/src/glyphs/README ivtools-1.2/src/glyphs/bdvtable/Imakefile ivtools-1.2/src/glyphs/bdvtable/Makefile ivtools-1.2/src/glyphs/bdvtable/main.c ivtools-1.2/src/glyphs/examples3.1/Imakefile ivtools-1.2/src/glyphs/examples3.1/Makefile ivtools-1.2/src/glyphs/examples3.1/README ivtools-1.2/src/glyphs/examples3.1/box1/Imakefile ivtools-1.2/src/glyphs/examples3.1/box1/Makefile ivtools-1.2/src/glyphs/examples3.1/box1/main.c ivtools-1.2/src/glyphs/examples3.1/box2/Imakefile ivtools-1.2/src/glyphs/examples3.1/box2/Makefile ivtools-1.2/src/glyphs/examples3.1/box2/main.c ivtools-1.2/src/glyphs/examples3.1/box3/Imakefile ivtools-1.2/src/glyphs/examples3.1/box3/Makefile ivtools-1.2/src/glyphs/examples3.1/box3/main.c ivtools-1.2/src/glyphs/examples3.1/box4/Imakefile ivtools-1.2/src/glyphs/examples3.1/box4/Makefile ivtools-1.2/src/glyphs/examples3.1/box4/main.c ivtools-1.2/src/glyphs/examples3.1/box5/Imakefile ivtools-1.2/src/glyphs/examples3.1/box5/Makefile ivtools-1.2/src/glyphs/examples3.1/box5/main.c ivtools-1.2/src/glyphs/examples3.1/button1/Imakefile ivtools-1.2/src/glyphs/examples3.1/button1/Makefile ivtools-1.2/src/glyphs/examples3.1/button1/main.c ivtools-1.2/src/glyphs/examples3.1/button2/Imakefile ivtools-1.2/src/glyphs/examples3.1/button2/Makefile ivtools-1.2/src/glyphs/examples3.1/button2/jello.tif ivtools-1.2/src/glyphs/examples3.1/button2/main.c ivtools-1.2/src/glyphs/examples3.1/button3/Imakefile ivtools-1.2/src/glyphs/examples3.1/button3/Makefile ivtools-1.2/src/glyphs/examples3.1/button3/main.c ivtools-1.2/src/glyphs/examples3.1/bvalue/Imakefile ivtools-1.2/src/glyphs/examples3.1/bvalue/Makefile ivtools-1.2/src/glyphs/examples3.1/bvalue/main.c ivtools-1.2/src/glyphs/examples3.1/circle/Imakefile ivtools-1.2/src/glyphs/examples3.1/circle/Makefile ivtools-1.2/src/glyphs/examples3.1/circle/main.c ivtools-1.2/src/glyphs/examples3.1/drag/Imakefile ivtools-1.2/src/glyphs/examples3.1/drag/Makefile ivtools-1.2/src/glyphs/examples3.1/drag/main.c ivtools-1.2/src/glyphs/examples3.1/fonts/Imakefile ivtools-1.2/src/glyphs/examples3.1/fonts/Makefile ivtools-1.2/src/glyphs/examples3.1/fonts/main.c ivtools-1.2/src/glyphs/examples3.1/himom/Imakefile ivtools-1.2/src/glyphs/examples3.1/himom/Makefile ivtools-1.2/src/glyphs/examples3.1/himom/main.c ivtools-1.2/src/glyphs/examples3.1/image/Imakefile ivtools-1.2/src/glyphs/examples3.1/image/Makefile ivtools-1.2/src/glyphs/examples3.1/image/main.c ivtools-1.2/src/glyphs/examples3.1/ips/Imakefile ivtools-1.2/src/glyphs/examples3.1/ips/Makefile ivtools-1.2/src/glyphs/examples3.1/ips/figure.c ivtools-1.2/src/glyphs/examples3.1/ips/figure.h ivtools-1.2/src/glyphs/examples3.1/ips/idraw.c ivtools-1.2/src/glyphs/examples3.1/ips/idraw.h ivtools-1.2/src/glyphs/examples3.1/ips/main.c ivtools-1.2/src/glyphs/examples3.1/menu/Imakefile ivtools-1.2/src/glyphs/examples3.1/menu/Makefile ivtools-1.2/src/glyphs/examples3.1/menu/main.c ivtools-1.2/src/glyphs/examples3.1/patch/Imakefile ivtools-1.2/src/glyphs/examples3.1/patch/Makefile ivtools-1.2/src/glyphs/examples3.1/patch/main.c ivtools-1.2/src/glyphs/examples3.1/plot/Axis.c ivtools-1.2/src/glyphs/examples3.1/plot/Axis.h ivtools-1.2/src/glyphs/examples3.1/plot/Graph.c ivtools-1.2/src/glyphs/examples3.1/plot/Graph.h ivtools-1.2/src/glyphs/examples3.1/plot/Imakefile ivtools-1.2/src/glyphs/examples3.1/plot/Makefile ivtools-1.2/src/glyphs/examples3.1/plot/Plot.c ivtools-1.2/src/glyphs/examples3.1/plot/Plot.h ivtools-1.2/src/glyphs/examples3.1/plot/README ivtools-1.2/src/glyphs/examples3.1/plot/main.c ivtools-1.2/src/glyphs/examples3.1/plot/rpc_read.c ivtools-1.2/src/glyphs/examples3.1/plot/rpc_read.h ivtools-1.2/src/glyphs/examples3.1/preview/Imakefile ivtools-1.2/src/glyphs/examples3.1/preview/Makefile ivtools-1.2/src/glyphs/examples3.1/preview/input ivtools-1.2/src/glyphs/examples3.1/preview/main.c ivtools-1.2/src/glyphs/examples3.1/print/Imakefile ivtools-1.2/src/glyphs/examples3.1/print/Makefile ivtools-1.2/src/glyphs/examples3.1/print/main.c ivtools-1.2/src/glyphs/examples3.1/rubband/Imakefile ivtools-1.2/src/glyphs/examples3.1/rubband/Makefile ivtools-1.2/src/glyphs/examples3.1/rubband/main.c ivtools-1.2/src/glyphs/examples3.1/sendplot/Imakefile ivtools-1.2/src/glyphs/examples3.1/sendplot/Makefile ivtools-1.2/src/glyphs/examples3.1/sendplot/main.c ivtools-1.2/src/glyphs/examples3.1/sendplot/rpc_write.c ivtools-1.2/src/glyphs/examples3.1/sendplot/rpc_write.h ivtools-1.2/src/glyphs/examples3.1/zoomer/Imakefile ivtools-1.2/src/glyphs/examples3.1/zoomer/Makefile ivtools-1.2/src/glyphs/examples3.1/zoomer/main.c ivtools-1.2/src/glyphs/formdemo/Imakefile ivtools-1.2/src/glyphs/formdemo/Makefile ivtools-1.2/src/glyphs/formdemo/main.c ivtools-1.2/src/glyphs/gclock/Imakefile ivtools-1.2/src/glyphs/gclock/Makefile ivtools-1.2/src/glyphs/gclock/main.c ivtools-1.2/src/glyphs/meter/Imakefile ivtools-1.2/src/glyphs/meter/Makefile ivtools-1.2/src/glyphs/meter/main.c ivtools-1.2/src/glyphs/morpher/Imakefile ivtools-1.2/src/glyphs/morpher/Makefile ivtools-1.2/src/glyphs/morpher/README ivtools-1.2/src/glyphs/morpher/balls ivtools-1.2/src/glyphs/morpher/glypheditor.c ivtools-1.2/src/glyphs/morpher/glypheditor.h ivtools-1.2/src/glyphs/morpher/glyphviewer.c ivtools-1.2/src/glyphs/morpher/glyphviewer.h ivtools-1.2/src/glyphs/morpher/icons/cont_play ivtools-1.2/src/glyphs/morpher/icons/fast_forward ivtools-1.2/src/glyphs/morpher/icons/fast_reverse ivtools-1.2/src/glyphs/morpher/icons/forward_pause ivtools-1.2/src/glyphs/morpher/icons/forward_play ivtools-1.2/src/glyphs/morpher/icons/new-record ivtools-1.2/src/glyphs/morpher/icons/panel ivtools-1.2/src/glyphs/morpher/icons/pause ivtools-1.2/src/glyphs/morpher/icons/record ivtools-1.2/src/glyphs/morpher/icons/reverse_pause ivtools-1.2/src/glyphs/morpher/icons/reverse_play ivtools-1.2/src/glyphs/morpher/main.c ivtools-1.2/src/glyphs/morpher/man.0 ivtools-1.2/src/glyphs/morpher/man.1 ivtools-1.2/src/glyphs/morpher/morpher.c ivtools-1.2/src/glyphs/morpher/morpher.h ivtools-1.2/src/glyphs/morpher/rect ivtools-1.2/src/glyphs/radiogroup/Imakefile ivtools-1.2/src/glyphs/radiogroup/Makefile ivtools-1.2/src/glyphs/radiogroup/main.c ivtools-1.2/src/glyphs/scrollable/Imakefile ivtools-1.2/src/glyphs/scrollable/Makefile ivtools-1.2/src/glyphs/scrollable/main.c ivtools-1.2/src/glyphs/scrollfield/Imakefile ivtools-1.2/src/glyphs/scrollfield/Makefile ivtools-1.2/src/glyphs/scrollfield/main.c ivtools-1.2/src/glyphs/strchooser/Imakefile ivtools-1.2/src/glyphs/strchooser/Makefile ivtools-1.2/src/glyphs/strchooser/main.c ivtools-1.2/src/glyphs/timestamp/Imakefile ivtools-1.2/src/glyphs/timestamp/Makefile ivtools-1.2/src/glyphs/timestamp/main.c ivtools-1.2/src/glyphterp/Imakefile ivtools-1.2/src/glyphterp/Makefile ivtools-1.2/src/glyphterp/main.c ivtools-1.2/src/graphdraw/Imakefile ivtools-1.2/src/graphdraw/Makefile ivtools-1.2/src/graphdraw/README ivtools-1.2/src/graphdraw/main.c ivtools-1.2/src/html/Imakefile ivtools-1.2/src/html/Makefile ivtools-1.2/src/html/README ivtools-1.2/src/html/getman31.sh ivtools-1.2/src/html/getrefman31.sh ivtools-1.2/src/html/templates/CLASS.html.tmpl ivtools-1.2/src/html/templates/Imakefile ivtools-1.2/src/html/templates/Makefile ivtools-1.2/src/html/templates/bug_m.flt ivtools-1.2/src/html/templates/dr_m.flt ivtools-1.2/src/html/templates/err_m.flt ivtools-1.2/src/html/templates/in_m.flt ivtools-1.2/src/html/templates/includeflt.flt ivtools-1.2/src/html/templates/index.html.tmpl ivtools-1.2/src/html/templates/linkflt.flt ivtools-1.2/src/html/templates/other.html.tmpl ivtools-1.2/src/html/templates/out_m.flt ivtools-1.2/src/html/templates/ret_m.flt ivtools-1.2/src/html/templates/smindex.html.tmpl ivtools-1.2/src/html/templates/time.flt ivtools-1.2/src/iclass/Imakefile ivtools-1.2/src/iclass/Makefile ivtools-1.2/src/iclass/classbuffer.c ivtools-1.2/src/iclass/classbuffer.h ivtools-1.2/src/iclass/classeditor.c ivtools-1.2/src/iclass/classeditor.h ivtools-1.2/src/iclass/classinfo.c ivtools-1.2/src/iclass/classinfo.h ivtools-1.2/src/iclass/dialogs.c ivtools-1.2/src/iclass/dialogs.h ivtools-1.2/src/iclass/direct.c ivtools-1.2/src/iclass/direct.h ivtools-1.2/src/iclass/globals.c ivtools-1.2/src/iclass/globals.h ivtools-1.2/src/iclass/iclass.c ivtools-1.2/src/iclass/iclass.h ivtools-1.2/src/iclass/main.c ivtools-1.2/src/idemo/Idemo.defaults ivtools-1.2/src/idemo/Imakefile ivtools-1.2/src/idemo/Makefile ivtools-1.2/src/idemo/main.c ivtools-1.2/src/idraw/Imakefile ivtools-1.2/src/idraw/Makefile ivtools-1.2/src/idraw/README ivtools-1.2/src/idraw/main.c ivtools-1.2/src/include/Dispatch/Imakefile ivtools-1.2/src/include/Dispatch/Makefile ivtools-1.2/src/include/Dispatch/_defines.h ivtools-1.2/src/include/Dispatch/_undefs.h ivtools-1.2/src/include/Dispatch/dispatcher.h ivtools-1.2/src/include/Dispatch/dp.h ivtools-1.2/src/include/Dispatch/enter-scope.h ivtools-1.2/src/include/Dispatch/iocallback.h ivtools-1.2/src/include/Dispatch/iohandler.h ivtools-1.2/src/include/Dispatch/iostreamb.h ivtools-1.2/src/include/Dispatch/leave-scope.h ivtools-1.2/src/include/Dispatch/rpcbuf.h ivtools-1.2/src/include/Dispatch/rpchdr.h ivtools-1.2/src/include/Dispatch/rpcpeer.h ivtools-1.2/src/include/Dispatch/rpcreader.h ivtools-1.2/src/include/Dispatch/rpcregistry.h ivtools-1.2/src/include/Dispatch/rpcservice.h ivtools-1.2/src/include/Dispatch/rpcstream.h ivtools-1.2/src/include/Dispatch/rpcwriter.h ivtools-1.2/src/include/IV-2_6/Imakefile ivtools-1.2/src/include/IV-2_6/InterViews/Imakefile ivtools-1.2/src/include/IV-2_6/InterViews/Makefile ivtools-1.2/src/include/IV-2_6/InterViews/adjuster.h ivtools-1.2/src/include/IV-2_6/InterViews/alignment.h ivtools-1.2/src/include/IV-2_6/InterViews/banner.h ivtools-1.2/src/include/IV-2_6/InterViews/border.h ivtools-1.2/src/include/IV-2_6/InterViews/box.h ivtools-1.2/src/include/IV-2_6/InterViews/button.h ivtools-1.2/src/include/IV-2_6/InterViews/compeditor.h ivtools-1.2/src/include/IV-2_6/InterViews/control.h ivtools-1.2/src/include/IV-2_6/InterViews/deck.h ivtools-1.2/src/include/IV-2_6/InterViews/defs.h ivtools-1.2/src/include/IV-2_6/InterViews/dialog.h ivtools-1.2/src/include/IV-2_6/InterViews/filebrowser.h ivtools-1.2/src/include/IV-2_6/InterViews/filechooser.h ivtools-1.2/src/include/IV-2_6/InterViews/frame.h ivtools-1.2/src/include/IV-2_6/InterViews/glue.h ivtools-1.2/src/include/IV-2_6/InterViews/ihandler.h ivtools-1.2/src/include/IV-2_6/InterViews/interactor.h ivtools-1.2/src/include/IV-2_6/InterViews/iwindow.h ivtools-1.2/src/include/IV-2_6/InterViews/matcheditor.h ivtools-1.2/src/include/IV-2_6/InterViews/menu.h ivtools-1.2/src/include/IV-2_6/InterViews/message.h ivtools-1.2/src/include/IV-2_6/InterViews/minmax.h ivtools-1.2/src/include/IV-2_6/InterViews/paint.h ivtools-1.2/src/include/IV-2_6/InterViews/painter.h ivtools-1.2/src/include/IV-2_6/InterViews/panner.h ivtools-1.2/src/include/IV-2_6/InterViews/perspective.h ivtools-1.2/src/include/IV-2_6/InterViews/rubband.h ivtools-1.2/src/include/IV-2_6/InterViews/rubcurve.h ivtools-1.2/src/include/IV-2_6/InterViews/rubgroup.h ivtools-1.2/src/include/IV-2_6/InterViews/rubline.h ivtools-1.2/src/include/IV-2_6/InterViews/rubrect.h ivtools-1.2/src/include/IV-2_6/InterViews/rubverts.h ivtools-1.2/src/include/IV-2_6/InterViews/scene.h ivtools-1.2/src/include/IV-2_6/InterViews/scrollbar.h ivtools-1.2/src/include/IV-2_6/InterViews/scroller.h ivtools-1.2/src/include/IV-2_6/InterViews/sensor.h ivtools-1.2/src/include/IV-2_6/InterViews/shape.h ivtools-1.2/src/include/IV-2_6/InterViews/strbrowser.h ivtools-1.2/src/include/IV-2_6/InterViews/strchooser.h ivtools-1.2/src/include/IV-2_6/InterViews/streditor.h ivtools-1.2/src/include/IV-2_6/InterViews/subject.h ivtools-1.2/src/include/IV-2_6/InterViews/textbuffer.h ivtools-1.2/src/include/IV-2_6/InterViews/textdisplay.h ivtools-1.2/src/include/IV-2_6/InterViews/texteditor.h ivtools-1.2/src/include/IV-2_6/InterViews/textstyle.h ivtools-1.2/src/include/IV-2_6/InterViews/tray.h ivtools-1.2/src/include/IV-2_6/InterViews/viewport.h ivtools-1.2/src/include/IV-2_6/InterViews/world.h ivtools-1.2/src/include/IV-2_6/Makefile ivtools-1.2/src/include/IV-2_6/_enter.h ivtools-1.2/src/include/IV-2_6/_leave.h ivtools-1.2/src/include/IV-2_6/_names.h ivtools-1.2/src/include/IV-3_1/Imakefile ivtools-1.2/src/include/IV-3_1/InterViews ivtools-1.2/src/include/IV-X11/Imakefile ivtools-1.2/src/include/IV-X11/Makefile ivtools-1.2/src/include/IV-X11/Xdefs.h ivtools-1.2/src/include/IV-X11/Xext.h ivtools-1.2/src/include/IV-X11/Xlib.h ivtools-1.2/src/include/IV-X11/Xundefs.h ivtools-1.2/src/include/IV-X11/Xutil.h ivtools-1.2/src/include/IV-X11/xbitmap.h ivtools-1.2/src/include/IV-X11/xbrush.h ivtools-1.2/src/include/IV-X11/xcanvas.h ivtools-1.2/src/include/IV-X11/xcolor.h ivtools-1.2/src/include/IV-X11/xcursor.h ivtools-1.2/src/include/IV-X11/xdisplay.h ivtools-1.2/src/include/IV-X11/xdrag.h ivtools-1.2/src/include/IV-X11/xevent.h ivtools-1.2/src/include/IV-X11/xfont.h ivtools-1.2/src/include/IV-X11/xpainter.h ivtools-1.2/src/include/IV-X11/xpattern.h ivtools-1.2/src/include/IV-X11/xraster.h ivtools-1.2/src/include/IV-X11/xselection.h ivtools-1.2/src/include/IV-X11/xwindow.h ivtools-1.2/src/include/IV-look/Imakefile ivtools-1.2/src/include/IV-look/Makefile ivtools-1.2/src/include/IV-look/bevel.h ivtools-1.2/src/include/IV-look/browser.h ivtools-1.2/src/include/IV-look/button.h ivtools-1.2/src/include/IV-look/choice.h ivtools-1.2/src/include/IV-look/dialogs.h ivtools-1.2/src/include/IV-look/fbrowser.h ivtools-1.2/src/include/IV-look/fchooser.h ivtools-1.2/src/include/IV-look/field.h ivtools-1.2/src/include/IV-look/kit.h ivtools-1.2/src/include/IV-look/menu.h ivtools-1.2/src/include/IV-look/mf_dialogs.h ivtools-1.2/src/include/IV-look/mf_kit.h ivtools-1.2/src/include/IV-look/mono_kit.h ivtools-1.2/src/include/IV-look/ol_dialogs.h ivtools-1.2/src/include/IV-look/ol_kit.h ivtools-1.2/src/include/IV-look/slider.h ivtools-1.2/src/include/IV-look/smf_kit.h ivtools-1.2/src/include/IV-look/stepper.h ivtools-1.2/src/include/IV-look/telltale.h ivtools-1.2/src/include/Imakefile ivtools-1.2/src/include/InterViews/Bitmaps/Imakefile ivtools-1.2/src/include/InterViews/Bitmaps/Makefile ivtools-1.2/src/include/InterViews/Bitmaps/big_checkmark.bm ivtools-1.2/src/include/InterViews/Bitmaps/checkmark.bm ivtools-1.2/src/include/InterViews/Bitmaps/chkbox.bm ivtools-1.2/src/include/InterViews/Bitmaps/chkboxBoth.bm ivtools-1.2/src/include/InterViews/Bitmaps/chkboxChosen.bm ivtools-1.2/src/include/InterViews/Bitmaps/chkboxHit.bm ivtools-1.2/src/include/InterViews/Bitmaps/dfast.bm ivtools-1.2/src/include/InterViews/Bitmaps/dfastMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/dmover.bm ivtools-1.2/src/include/InterViews/Bitmaps/dmoverHit.bm ivtools-1.2/src/include/InterViews/Bitmaps/dmoverMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/enlarge.bm ivtools-1.2/src/include/InterViews/Bitmaps/enlargeHit.bm ivtools-1.2/src/include/InterViews/Bitmaps/enlargeMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/hand.bm ivtools-1.2/src/include/InterViews/Bitmaps/handMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/ldfast.bm ivtools-1.2/src/include/InterViews/Bitmaps/ldfastMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/lfast.bm ivtools-1.2/src/include/InterViews/Bitmaps/lfastMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/lmover.bm ivtools-1.2/src/include/InterViews/Bitmaps/lmoverHit.bm ivtools-1.2/src/include/InterViews/Bitmaps/lmoverMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/lufast.bm ivtools-1.2/src/include/InterViews/Bitmaps/lufastMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/page.bm ivtools-1.2/src/include/InterViews/Bitmaps/pageBoth.bm ivtools-1.2/src/include/InterViews/Bitmaps/pageChosen.bm ivtools-1.2/src/include/InterViews/Bitmaps/pageHit.bm ivtools-1.2/src/include/InterViews/Bitmaps/radio.bm ivtools-1.2/src/include/InterViews/Bitmaps/radioBoth.bm ivtools-1.2/src/include/InterViews/Bitmaps/radioChosen.bm ivtools-1.2/src/include/InterViews/Bitmaps/radioHit.bm ivtools-1.2/src/include/InterViews/Bitmaps/radioMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/rdfast.bm ivtools-1.2/src/include/InterViews/Bitmaps/rdfastMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/reducer.bm ivtools-1.2/src/include/InterViews/Bitmaps/reducerHit.bm ivtools-1.2/src/include/InterViews/Bitmaps/reducerMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/rfast.bm ivtools-1.2/src/include/InterViews/Bitmaps/rfastMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/rmover.bm ivtools-1.2/src/include/InterViews/Bitmaps/rmoverHit.bm ivtools-1.2/src/include/InterViews/Bitmaps/rmoverMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/rufast.bm ivtools-1.2/src/include/InterViews/Bitmaps/rufastMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/ufast.bm ivtools-1.2/src/include/InterViews/Bitmaps/ufastMask.bm ivtools-1.2/src/include/InterViews/Bitmaps/umover.bm ivtools-1.2/src/include/InterViews/Bitmaps/umoverHit.bm ivtools-1.2/src/include/InterViews/Bitmaps/umoverMask.bm ivtools-1.2/src/include/InterViews/Imakefile ivtools-1.2/src/include/InterViews/Makefile ivtools-1.2/src/include/InterViews/_defines.h ivtools-1.2/src/include/InterViews/_enter.h ivtools-1.2/src/include/InterViews/_leave.h ivtools-1.2/src/include/InterViews/_names.h ivtools-1.2/src/include/InterViews/_undefs.h ivtools-1.2/src/include/InterViews/action.h ivtools-1.2/src/include/InterViews/adjust.h ivtools-1.2/src/include/InterViews/aggr.h ivtools-1.2/src/include/InterViews/align.h ivtools-1.2/src/include/InterViews/alloctbl.h ivtools-1.2/src/include/InterViews/arraycomp.h ivtools-1.2/src/include/InterViews/background.h ivtools-1.2/src/include/InterViews/bitmap.h ivtools-1.2/src/include/InterViews/boolean.h ivtools-1.2/src/include/InterViews/border.h ivtools-1.2/src/include/InterViews/box.h ivtools-1.2/src/include/InterViews/brush.h ivtools-1.2/src/include/InterViews/canvas.h ivtools-1.2/src/include/InterViews/character.h ivtools-1.2/src/include/InterViews/color.h ivtools-1.2/src/include/InterViews/composition.h ivtools-1.2/src/include/InterViews/compositor.h ivtools-1.2/src/include/InterViews/coord.h ivtools-1.2/src/include/InterViews/cursor.h ivtools-1.2/src/include/InterViews/debug.h ivtools-1.2/src/include/InterViews/deck.h ivtools-1.2/src/include/InterViews/dialog.h ivtools-1.2/src/include/InterViews/display.h ivtools-1.2/src/include/InterViews/drag.h ivtools-1.2/src/include/InterViews/enter-scope.h ivtools-1.2/src/include/InterViews/event.h ivtools-1.2/src/include/InterViews/font.h ivtools-1.2/src/include/InterViews/geometry.h ivtools-1.2/src/include/InterViews/glcontext.h ivtools-1.2/src/include/InterViews/glue.h ivtools-1.2/src/include/InterViews/glyph.h ivtools-1.2/src/include/InterViews/group.h ivtools-1.2/src/include/InterViews/handler.h ivtools-1.2/src/include/InterViews/hit.h ivtools-1.2/src/include/InterViews/image.h ivtools-1.2/src/include/InterViews/input.h ivtools-1.2/src/include/InterViews/iv.h ivtools-1.2/src/include/InterViews/label.h ivtools-1.2/src/include/InterViews/layout.h ivtools-1.2/src/include/InterViews/leave-scope.h ivtools-1.2/src/include/InterViews/lrmarker.h ivtools-1.2/src/include/InterViews/monoglyph.h ivtools-1.2/src/include/InterViews/observe.h ivtools-1.2/src/include/InterViews/page.h ivtools-1.2/src/include/InterViews/patch.h ivtools-1.2/src/include/InterViews/pattern.h ivtools-1.2/src/include/InterViews/place.h ivtools-1.2/src/include/InterViews/polyglyph.h ivtools-1.2/src/include/InterViews/printer.h ivtools-1.2/src/include/InterViews/psfont.h ivtools-1.2/src/include/InterViews/raster.h ivtools-1.2/src/include/InterViews/regexp.h ivtools-1.2/src/include/InterViews/reqerr.h ivtools-1.2/src/include/InterViews/resource.h ivtools-1.2/src/include/InterViews/rule.h ivtools-1.2/src/include/InterViews/scrbox.h ivtools-1.2/src/include/InterViews/selection.h ivtools-1.2/src/include/InterViews/session.h ivtools-1.2/src/include/InterViews/shadow.h ivtools-1.2/src/include/InterViews/simplecomp.h ivtools-1.2/src/include/InterViews/stencil.h ivtools-1.2/src/include/InterViews/style.h ivtools-1.2/src/include/InterViews/superpose.h ivtools-1.2/src/include/InterViews/target.h ivtools-1.2/src/include/InterViews/telltale.h ivtools-1.2/src/include/InterViews/texcomp.h ivtools-1.2/src/include/InterViews/tformsetter.h ivtools-1.2/src/include/InterViews/tiff.h ivtools-1.2/src/include/InterViews/tile.h ivtools-1.2/src/include/InterViews/transformer.h ivtools-1.2/src/include/InterViews/window.h ivtools-1.2/src/include/InterViews/xymarker.h ivtools-1.2/src/include/Makefile ivtools-1.2/src/include/OS/Imakefile ivtools-1.2/src/include/OS/Makefile ivtools-1.2/src/include/OS/_defines.h ivtools-1.2/src/include/OS/_undefs.h ivtools-1.2/src/include/OS/directory.h ivtools-1.2/src/include/OS/enter-scope.h ivtools-1.2/src/include/OS/file.h ivtools-1.2/src/include/OS/host.h ivtools-1.2/src/include/OS/leave-scope.h ivtools-1.2/src/include/OS/list.h ivtools-1.2/src/include/OS/math.h ivtools-1.2/src/include/OS/memory.h ivtools-1.2/src/include/OS/os.h ivtools-1.2/src/include/OS/string.h ivtools-1.2/src/include/OS/table.h ivtools-1.2/src/include/OS/table2.h ivtools-1.2/src/include/OS/types.h ivtools-1.2/src/include/OS/ustring.h ivtools-1.2/src/include/TIFF/Imakefile ivtools-1.2/src/include/TIFF/Makefile ivtools-1.2/src/include/TIFF/format.h ivtools-1.2/src/include/TIFF/tiff.h ivtools-1.2/src/include/TIFF/tiffio.h ivtools-1.2/src/include/Unidraw/Commands/Imakefile ivtools-1.2/src/include/Unidraw/Commands/Makefile ivtools-1.2/src/include/Unidraw/Commands/align.h ivtools-1.2/src/include/Unidraw/Commands/brushcmd.h ivtools-1.2/src/include/Unidraw/Commands/catcmds.h ivtools-1.2/src/include/Unidraw/Commands/colorcmd.h ivtools-1.2/src/include/Unidraw/Commands/command.h ivtools-1.2/src/include/Unidraw/Commands/data.h ivtools-1.2/src/include/Unidraw/Commands/datas.h ivtools-1.2/src/include/Unidraw/Commands/dirty.h ivtools-1.2/src/include/Unidraw/Commands/edit.h ivtools-1.2/src/include/Unidraw/Commands/font.h ivtools-1.2/src/include/Unidraw/Commands/import.h ivtools-1.2/src/include/Unidraw/Commands/macro.h ivtools-1.2/src/include/Unidraw/Commands/nop.h ivtools-1.2/src/include/Unidraw/Commands/patcmd.h ivtools-1.2/src/include/Unidraw/Commands/struct.h ivtools-1.2/src/include/Unidraw/Commands/transforms.h ivtools-1.2/src/include/Unidraw/Commands/viewcmds.h ivtools-1.2/src/include/Unidraw/Components/Imakefile ivtools-1.2/src/include/Unidraw/Components/Makefile ivtools-1.2/src/include/Unidraw/Components/cglue.h ivtools-1.2/src/include/Unidraw/Components/component.h ivtools-1.2/src/include/Unidraw/Components/compview.h ivtools-1.2/src/include/Unidraw/Components/connector.h ivtools-1.2/src/include/Unidraw/Components/csolver.h ivtools-1.2/src/include/Unidraw/Components/ellipse.h ivtools-1.2/src/include/Unidraw/Components/externview.h ivtools-1.2/src/include/Unidraw/Components/grcomp.h ivtools-1.2/src/include/Unidraw/Components/grview.h ivtools-1.2/src/include/Unidraw/Components/gvupdater.h ivtools-1.2/src/include/Unidraw/Components/line.h ivtools-1.2/src/include/Unidraw/Components/link.h ivtools-1.2/src/include/Unidraw/Components/pad.h ivtools-1.2/src/include/Unidraw/Components/pin.h ivtools-1.2/src/include/Unidraw/Components/polygon.h ivtools-1.2/src/include/Unidraw/Components/psformat.h ivtools-1.2/src/include/Unidraw/Components/psview.h ivtools-1.2/src/include/Unidraw/Components/rastercomp.h ivtools-1.2/src/include/Unidraw/Components/rect.h ivtools-1.2/src/include/Unidraw/Components/slot.h ivtools-1.2/src/include/Unidraw/Components/spline.h ivtools-1.2/src/include/Unidraw/Components/stencilcomp.h ivtools-1.2/src/include/Unidraw/Components/text.h ivtools-1.2/src/include/Unidraw/Components/vertices.h ivtools-1.2/src/include/Unidraw/Graphic/Imakefile ivtools-1.2/src/include/Unidraw/Graphic/Makefile ivtools-1.2/src/include/Unidraw/Graphic/damage.h ivtools-1.2/src/include/Unidraw/Graphic/ellipses.h ivtools-1.2/src/include/Unidraw/Graphic/geomobjs.h ivtools-1.2/src/include/Unidraw/Graphic/graphic.h ivtools-1.2/src/include/Unidraw/Graphic/grblock.h ivtools-1.2/src/include/Unidraw/Graphic/lines.h ivtools-1.2/src/include/Unidraw/Graphic/picture.h ivtools-1.2/src/include/Unidraw/Graphic/polygons.h ivtools-1.2/src/include/Unidraw/Graphic/pspaint.h ivtools-1.2/src/include/Unidraw/Graphic/rasterrect.h ivtools-1.2/src/include/Unidraw/Graphic/splines.h ivtools-1.2/src/include/Unidraw/Graphic/ulabel.h ivtools-1.2/src/include/Unidraw/Graphic/ustencil.h ivtools-1.2/src/include/Unidraw/Graphic/util.h ivtools-1.2/src/include/Unidraw/Graphic/verts.h ivtools-1.2/src/include/Unidraw/Imakefile ivtools-1.2/src/include/Unidraw/Makefile ivtools-1.2/src/include/Unidraw/Tools/Imakefile ivtools-1.2/src/include/Unidraw/Tools/Makefile ivtools-1.2/src/include/Unidraw/Tools/connect.h ivtools-1.2/src/include/Unidraw/Tools/grcomptool.h ivtools-1.2/src/include/Unidraw/Tools/magnify.h ivtools-1.2/src/include/Unidraw/Tools/move.h ivtools-1.2/src/include/Unidraw/Tools/reshape.h ivtools-1.2/src/include/Unidraw/Tools/rotate.h ivtools-1.2/src/include/Unidraw/Tools/scale.h ivtools-1.2/src/include/Unidraw/Tools/select.h ivtools-1.2/src/include/Unidraw/Tools/stretch.h ivtools-1.2/src/include/Unidraw/Tools/tool.h ivtools-1.2/src/include/Unidraw/_defines.h ivtools-1.2/src/include/Unidraw/_undefs.h ivtools-1.2/src/include/Unidraw/catalog.h ivtools-1.2/src/include/Unidraw/classes.h ivtools-1.2/src/include/Unidraw/clipboard.h ivtools-1.2/src/include/Unidraw/creator.h ivtools-1.2/src/include/Unidraw/ctrlinfo.h ivtools-1.2/src/include/Unidraw/dialogs.h ivtools-1.2/src/include/Unidraw/editor.h ivtools-1.2/src/include/Unidraw/editorinfo.h ivtools-1.2/src/include/Unidraw/enter-scope.h ivtools-1.2/src/include/Unidraw/globals.h ivtools-1.2/src/include/Unidraw/grid.h ivtools-1.2/src/include/Unidraw/iterator.h ivtools-1.2/src/include/Unidraw/keymap.h ivtools-1.2/src/include/Unidraw/kybd.h ivtools-1.2/src/include/Unidraw/leave-scope.h ivtools-1.2/src/include/Unidraw/manip.h ivtools-1.2/src/include/Unidraw/manips.h ivtools-1.2/src/include/Unidraw/path.h ivtools-1.2/src/include/Unidraw/selection.h ivtools-1.2/src/include/Unidraw/statevar.h ivtools-1.2/src/include/Unidraw/statevars.h ivtools-1.2/src/include/Unidraw/stateview.h ivtools-1.2/src/include/Unidraw/stateviews.h ivtools-1.2/src/include/Unidraw/transfn.h ivtools-1.2/src/include/Unidraw/transfns.h ivtools-1.2/src/include/Unidraw/uarray.h ivtools-1.2/src/include/Unidraw/uctrl.h ivtools-1.2/src/include/Unidraw/uctrls.h ivtools-1.2/src/include/Unidraw/uformat.h ivtools-1.2/src/include/Unidraw/uhash.h ivtools-1.2/src/include/Unidraw/ulist.h ivtools-1.2/src/include/Unidraw/umap.h ivtools-1.2/src/include/Unidraw/unidraw.h ivtools-1.2/src/include/Unidraw/upage.h ivtools-1.2/src/include/Unidraw/viewer.h ivtools-1.2/src/include/ivstd/Imakefile ivtools-1.2/src/include/ivstd/Makefile ivtools-1.2/src/include/ivstd/fstream.h ivtools-1.2/src/include/ivstd/iosfwd ivtools-1.2/src/include/ivstd/iostream.h ivtools-1.2/src/include/ivstd/leakchecker.h ivtools-1.2/src/include/ivstd/malloc.h ivtools-1.2/src/include/ivstd/math.h ivtools-1.2/src/include/ivstd/nan.h ivtools-1.2/src/include/ivstd/osfcn.h ivtools-1.2/src/include/ivstd/signal.h ivtools-1.2/src/include/ivstd/stdio.h ivtools-1.2/src/include/ivstd/stdlib.h ivtools-1.2/src/include/ivstd/stream.h ivtools-1.2/src/include/ivstd/string.h ivtools-1.2/src/include/ivstd/version.h ivtools-1.2/src/iueserv_/Imakefile ivtools-1.2/src/iueserv_/Makefile ivtools-1.2/src/iueserv_/README ivtools-1.2/src/iueserv_/main.c ivtools-1.2/src/ivtext/Imakefile ivtools-1.2/src/ivtext/Makefile ivtools-1.2/src/ivtext/README ivtools-1.2/src/ivtext/main.c ivtools-1.2/src/ivxt/Imakefile ivtools-1.2/src/ivxt/Xd.h ivtools-1.2/src/ivxt/Xud.h ivtools-1.2/src/ivxt/glyphwidget.h ivtools-1.2/src/ivxt/glyphwidgetP.h ivtools-1.2/src/ivxt/main.c ivtools-1.2/src/ivxt/widgetwindow.c ivtools-1.2/src/ivxt/widgetwindow.h ivtools-1.2/src/ivxt/xtintrinsic.h ivtools-1.2/src/ivxt/xtsession.c ivtools-1.2/src/ivxt/xtsession.h ivtools-1.2/src/ivxt/xtudsession.c ivtools-1.2/src/ivxt/xtudsession.h ivtools-1.2/src/man/Imakefile ivtools-1.2/src/man/Makefile ivtools-1.2/src/man/man1/Imakefile ivtools-1.2/src/man/man1/Makefile ivtools-1.2/src/man/man1/comdraw.1 ivtools-1.2/src/man/man1/comterp.1 ivtools-1.2/src/man/man1/dclock.1 ivtools-1.2/src/man/man1/drawtool.1 ivtools-1.2/src/man/man1/flipbook.1 ivtools-1.2/src/man/man1/graphdraw.1 ivtools-1.2/src/man/man1/iclass.1 ivtools-1.2/src/man/man1/idraw.1 ivtools-1.2/src/man/man1/ivmkmf.1 ivtools-1.2/src/man/man3/Adjuster.3 ivtools-1.2/src/man/man3/Banner.3 ivtools-1.2/src/man/man3/BasicDialog.3 ivtools-1.2/src/man/man3/Border.3 ivtools-1.2/src/man/man3/Box2_6.3 ivtools-1.2/src/man/man3/BrushCmd.3 ivtools-1.2/src/man/man3/Button2_6.3 ivtools-1.2/src/man/man3/CGlue.3 ivtools-1.2/src/man/man3/CSolver.3 ivtools-1.2/src/man/man3/Catalog.3 ivtools-1.2/src/man/man3/Clipboard.3 ivtools-1.2/src/man/man3/ColorCmd.3 ivtools-1.2/src/man/man3/Command.3 ivtools-1.2/src/man/man3/CompletionEditor.3 ivtools-1.2/src/man/man3/Component.3 ivtools-1.2/src/man/man3/ComponentView.3 ivtools-1.2/src/man/man3/ConnectTool.3 ivtools-1.2/src/man/man3/Connector.3 ivtools-1.2/src/man/man3/Control.3 ivtools-1.2/src/man/man3/ControlInfo.3 ivtools-1.2/src/man/man3/Creator.3 ivtools-1.2/src/man/man3/Damage.3 ivtools-1.2/src/man/man3/Data.3 ivtools-1.2/src/man/man3/Deck2_6.3 ivtools-1.2/src/man/man3/Dialog.3 ivtools-1.2/src/man/man3/Dispatcher.3 ivtools-1.2/src/man/man3/Editor.3 ivtools-1.2/src/man/man3/EditorInfo.3 ivtools-1.2/src/man/man3/EllipseComp.3 ivtools-1.2/src/man/man3/ExternView.3 ivtools-1.2/src/man/man3/FileBrowser.3 ivtools-1.2/src/man/man3/FileChooser.3 ivtools-1.2/src/man/man3/FontCmd.3 ivtools-1.2/src/man/man3/Frame.3 ivtools-1.2/src/man/man3/GVUpdater.3 ivtools-1.2/src/man/man3/Glue2_6.3 ivtools-1.2/src/man/man3/Graphic.3 ivtools-1.2/src/man/man3/GraphicBlock.3 ivtools-1.2/src/man/man3/GraphicComp.3 ivtools-1.2/src/man/man3/GraphicCompTool.3 ivtools-1.2/src/man/man3/GraphicView.3 ivtools-1.2/src/man/man3/Grid.3 ivtools-1.2/src/man/man3/IOCallback.3 ivtools-1.2/src/man/man3/IOHandler.3 ivtools-1.2/src/man/man3/Imakefile ivtools-1.2/src/man/man3/ImportCmd.3 ivtools-1.2/src/man/man3/Interactor.3 ivtools-1.2/src/man/man3/Iterator.3 ivtools-1.2/src/man/man3/KeyMap.3 ivtools-1.2/src/man/man3/LineComp.3 ivtools-1.2/src/man/man3/LinkComp.3 ivtools-1.2/src/man/man3/MacroCmd.3 ivtools-1.2/src/man/man3/MagnifyTool.3 ivtools-1.2/src/man/man3/Manipulator.3 ivtools-1.2/src/man/man3/MatchEditor.3 ivtools-1.2/src/man/man3/Menu2_6.3 ivtools-1.2/src/man/man3/Message.3 ivtools-1.2/src/man/man3/MoveTool.3 ivtools-1.2/src/man/man3/NOPCmd.3 ivtools-1.2/src/man/man3/PadComp.3 ivtools-1.2/src/man/man3/Page.3 ivtools-1.2/src/man/man3/Painter.3 ivtools-1.2/src/man/man3/Panner.3 ivtools-1.2/src/man/man3/Path.3 ivtools-1.2/src/man/man3/Pattern.3 ivtools-1.2/src/man/man3/PatternCmd.3 ivtools-1.2/src/man/man3/Perspective.3 ivtools-1.2/src/man/man3/Picture.3 ivtools-1.2/src/man/man3/PinComp.3 ivtools-1.2/src/man/man3/PolygonComp.3 ivtools-1.2/src/man/man3/PostScriptView.3 ivtools-1.2/src/man/man3/RasterComp.3 ivtools-1.2/src/man/man3/RasterRect.3 ivtools-1.2/src/man/man3/RectComp.3 ivtools-1.2/src/man/man3/Regexp.3 ivtools-1.2/src/man/man3/ReqErr.3 ivtools-1.2/src/man/man3/ReshapeTool.3 ivtools-1.2/src/man/man3/Resource.3 ivtools-1.2/src/man/man3/RotateTool.3 ivtools-1.2/src/man/man3/RpcHdr.3 ivtools-1.2/src/man/man3/RpcPeer.3 ivtools-1.2/src/man/man3/RpcReader.3 ivtools-1.2/src/man/man3/RpcRegistry.3 ivtools-1.2/src/man/man3/RpcService.3 ivtools-1.2/src/man/man3/RpcWriter.3 ivtools-1.2/src/man/man3/Rubband.3 ivtools-1.2/src/man/man3/ScaleTool.3 ivtools-1.2/src/man/man3/Scene.3 ivtools-1.2/src/man/man3/Scroller.3 ivtools-1.2/src/man/man3/SelectTool.3 ivtools-1.2/src/man/man3/Selection.3 ivtools-1.2/src/man/man3/Sensor.3 ivtools-1.2/src/man/man3/Shape.3 ivtools-1.2/src/man/man3/SlotComp.3 ivtools-1.2/src/man/man3/SplineComp.3 ivtools-1.2/src/man/man3/StateVar.3 ivtools-1.2/src/man/man3/StateVarView.3 ivtools-1.2/src/man/man3/StencilComp.3 ivtools-1.2/src/man/man3/StrBrowser.3 ivtools-1.2/src/man/man3/StrChooser.3 ivtools-1.2/src/man/man3/StretchTool.3 ivtools-1.2/src/man/man3/StringEditor.3 ivtools-1.2/src/man/man3/Subject.3 ivtools-1.2/src/man/man3/TextBuffer.3 ivtools-1.2/src/man/man3/TextComp.3 ivtools-1.2/src/man/man3/TextDisplay.3 ivtools-1.2/src/man/man3/TextEditor.3 ivtools-1.2/src/man/man3/Tool.3 ivtools-1.2/src/man/man3/TransferFunct.3 ivtools-1.2/src/man/man3/Tray.3 ivtools-1.2/src/man/man3/UArray.3 ivtools-1.2/src/man/man3/UControl.3 ivtools-1.2/src/man/man3/UHashTable.3 ivtools-1.2/src/man/man3/ULabel.3 ivtools-1.2/src/man/man3/UList.3 ivtools-1.2/src/man/man3/UMap.3 ivtools-1.2/src/man/man3/UStencil.3 ivtools-1.2/src/man/man3/Unidraw.3 ivtools-1.2/src/man/man3/UnidrawIntro.3 ivtools-1.2/src/man/man3/Vertices.3 ivtools-1.2/src/man/man3/VerticesComp.3 ivtools-1.2/src/man/man3/Viewer.3 ivtools-1.2/src/man/man3/Viewport.3 ivtools-1.2/src/man/man3/World.3 ivtools-1.2/src/man/man3/align.3 ivtools-1.2/src/man/man3/catcmds.3 ivtools-1.2/src/man/man3/classes.3 ivtools-1.2/src/man/man3/datas.3 ivtools-1.2/src/man/man3/edit.3 ivtools-1.2/src/man/man3/ellipses.3 ivtools-1.2/src/man/man3/geomobjs.3 ivtools-1.2/src/man/man3/globals.3 ivtools-1.2/src/man/man3/iostreamb.3 ivtools-1.2/src/man/man3/kybd.3 ivtools-1.2/src/man/man3/lines.3 ivtools-1.2/src/man/man3/manips.3 ivtools-1.2/src/man/man3/polygons.3 ivtools-1.2/src/man/man3/pspaint.3 ivtools-1.2/src/man/man3/rpcbuf.3 ivtools-1.2/src/man/man3/rpcstream.3 ivtools-1.2/src/man/man3/splines.3 ivtools-1.2/src/man/man3/statevars.3 ivtools-1.2/src/man/man3/stateviews.3 ivtools-1.2/src/man/man3/struct.3 ivtools-1.2/src/man/man3/transfns.3 ivtools-1.2/src/man/man3/transforms.3 ivtools-1.2/src/man/man3/uctrls.3 ivtools-1.2/src/man/man3/viewcmds.3 ivtools-1.2/src/man/refman3.1/refman.PS ivtools-1.2/src/scripts/Imakefile ivtools-1.2/src/scripts/Makefile ivtools-1.2/src/scripts/bsdinst.sh ivtools-1.2/src/scripts/chgsuffix.sh ivtools-1.2/src/scripts/cntsrclines.bash ivtools-1.2/src/scripts/config.guess ivtools-1.2/src/scripts/config.sub ivtools-1.2/src/scripts/cpu.sh ivtools-1.2/src/scripts/install-sh ivtools-1.2/src/scripts/ivcd.cpp ivtools-1.2/src/scripts/ivct.cpp ivtools-1.2/src/scripts/ivds.cpp ivtools-1.2/src/scripts/ivdt.cpp ivtools-1.2/src/scripts/ivfb.cpp ivtools-1.2/src/scripts/ivgd.cpp ivtools-1.2/src/scripts/ivgetjpg.bash ivtools-1.2/src/scripts/ivmkmf.cpp ivtools-1.2/src/scripts/ivtiftopnm.bash ivtools-1.2/src/scripts/mkdirhier.sh ivtools-1.2/src/scripts/mkgif89a.bash ivtools-1.2/src/scripts/mkgif89ac.bash ivtools-1.2/src/scripts/pnmtopgm.sh ivtools-1.2/src/tests/Imakefile ivtools-1.2/src/tests/Makefile ivtools-1.2/src/tests/y2k/Imakefile ivtools-1.2/src/tests/y2k/Makefile ivtools-1.2/src/tests/y2k/y2ktest.cc ivtools-1.2/src/utils/Imakefile ivtools-1.2/src/utils/Makefile ivtools-1.2/src/utils/downloader.cc ivtools-1.2/src/utils/downloader.h ivtools-1.2/src/utils/ftp.cc ivtools-1.2/src/utils/ftp.h ivtools-1.2/src/utils/http.cc ivtools-1.2/src/utils/http.h ivtools-1.2/src/utils/ivdl.cc ivtools-1.2/src/utils/ivtmpnam.c ivtools-1.2/src/utils/parse.h ivtools-1.2/src/utils/readwrite.h ivtools-1.2/src/utils/sockets.cc ivtools-1.2/src/utils/sockets.h ivtools-1.2/src/utils/stdcmapppm.c ivtools-1.2/src/utils/thrower.cc ivtools-1.2/src/utils/thrower.h ivtools-doc/ivtools-1.2-README.txt0000644000076500007650000004327311302027543017343 0ustar scottscott00000000000000 README for ivtools 1.2 This directory contains a release of ivtools 1.2.7. You should read the rest of this file for information on what ivtools is and the INSTALL file for instructions on how to build it. The overall copyright and permission notice for ivtools can be found in the COPYRIGHT file in this directory. It is similar to the X11 copyright, otherwise known as non-copylefted freeware. * What is ivtools?: Online documentation (including an FAQ) is available for ivtools at: http://www.ivtools.org/ivtools/doc/ ivtools is a layered collection of application frameworks for building custom drawing editors and spatial data servers. It incorporates a backward compatible copy of the original InterViews and Unidraw class libraries and sample programs (from 3.2a.tar.Z), augmented with new class libraries and sample programs for a wide variety of generic spatial data applications. ivtools comprises four sets of interrelated capabilities useful to application programmers. The first set is the libraries and example programs borrowed whole from InterViews 3.1. The second set is for reusing and extending the light-weight glyph objects of InterViews 3.1 which embody a lot of the capability of TeX. The third set reuses and extends the Unidraw library (Unidraw is a major portion of the overall InterViews 3.1 release that provides an application framework for custom drawing editors). The fourth set adds a command interpreter and server mechanism to ivtools, and demonstrates these capabilities with text, glyph, and graphic front-ends. To get more of an overview of these layers you can read: http://www.ivtools.org/ivtools/ivtools-layers.html. These are the libraries and example programs borrowed straight from InterViews 3.1: IV library of InterView 3.1, InterViews 2.6, Dispatch, OS, and TIFF objects dclock digital clock with fading digits iclass C++ class browser idemo glyph demo These are the libraries and example programs that make up the glyph part of ivtools (programs in the glyphs directory): IVGlyph library of Glyph derived classes bdvtable bounded-value editing formdemo value-editing gclock glyph-based clock meter sliding meter radiogroup radio-buttons scrollable 2d scrollable glyph scrollfield 2d scrollable field-editor strchooser string chooser timestamp editable time glyph Plus a generally useful text display and editing program: ivtext emacs-like text editor Also all the glyph example programs from InterViews 3.1 have been added in an examples3.1 directory under the glyphs directory. These are the libraries and example programs that make up the Unidraw part of ivtools: Unidraw copy of Unidraw library from InterViews 3.1 UniIdraw librarification of 3.1 idraw OverlayUnidraw extended Unidraw/idraw framework TopoFace spatial network library (nodes, edges, faces) GraphUnidraw graph browser/editor library FrameUnidraw multi-frame display mechanism idraw idraw built on UniIdraw library drawtool extended version of idraw built on OverlayUnidraw graphdraw graph browser/editor integrated with drawtool flipbook flipbook multi-frame editor based on drawtool These are the libraries that make up the command interpreter part of ivtools: ComUtil command interpreter utility functions Attribute attribute property list mechanism AttrGlyph glyphs for Attribute library ComTerp command interpreter objects ComGlyph glyphs for ComTerp library ComUnidraw drawing editor with command interpreter DrawServ drawing server framework with support for graphs and frames. comtest test program comterp sample command interpreter glyphterp command interpreter user interface comdraw drawtool with command interpreter drawserv comdraw with both graphs and frames. Note: GraphUnidraw/graphdraw and FrameUnidraw/flipbook have been rearranged within the ivtools source tree to take advantage of the ComUnidraw framework layer, so they really could be listed in both of the previous sections. There is also a Time library with Date and Time classes borrowed from the NIH's class library, and an example program, ivxt, that shows how an Xt widget can be wrapped around an InterViews application. Finally, there is a collection of utilities (utils) and shell scripts (scripts) that augment the drawing editors of ivtools with minor capabilities. See the relevant directories and files for further information. A series of makefile targets support the checkin of sources to cvs/rcs, and their subsequent update and modification. This requires a copy of cvs available from the Free Software Foundation and ivmkcm-0.7.2 available through http://www.ivtools.org/ivmkcm/ * More ivtools details ivtools is known to build with many versions of gcc (up to gcc-4.3) and on a variety of Unix'es: SunOS 4.1 (MIT's X11R5), Solaris 2.6 (X11R6), Irix 5.2 (SGI's X11R5), Linux 1.2 (Slackware 3.0, XFree86 3.1), Linux 2.* (RedHat 4.0 thru 7.0, Debian 2.* and 3.*), NetBSD, FreeBSD, and Darwin (Mac OS X). There are contributed configs that are out of date for HPUX and Dec Alpha (though the HPUX contrib might almost have it right). It has been built on Windows NT 4.0 using Cygwin from Cygnus Solutions (see README.cygwin). You can find links to available binaries on the ivtools web page (http://www.ivtools.org) and ivtools download page (http://www.ivtools.org/ivtools/download.html) If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to the general purpose ivtools mailing list, ivtools-user@lists.sourceforge.net. To subcribe to the mailing list, visit http://lists.sourceforge.net/mailman/listinfo/ivtools-user. Other ivtools related mailing lists can be found at: http://www.ivtools.org/ivtools/mailinglists.html Read about finding and generating all this from inline documentation below. A copy of the ivtools html documentation will be available for download as well: http://downloads.sourceforge.net/ivtools/ivtools-doc-1.2.tgz A SourceForge project page for ivtools can be found at: http://sourceforge.net/project/ivtools Read about other vector graphic free software at: http://sourceforge.net/foundry/vectorgraphics * Finding and Generating Inline Documentation Extensive documentation is embedded within the ivtools source tree, including most all of the documentation originally available for InterViews 3.1 and Unidraw. You can find all of it pre-extracted here: http://www.ivtools.org/ivtools/doc/ Here is a list of documentation: - README/man pages for executable programs Within most directories that contain an executable program (a main.c) you'll find a README that explains something about the program, how to use it, what it does, what arguments it takes. In the case of the drawing editors and command interpreters this README has been further processed into a man page, which can be found in its uninstalled state in the src/man/man1 directory or wherever you elect to install them. - HTML class documentation Many of the C++ class libraries of ivtools are documented using comments in the header files (the .h files) that can be extracted using PERCEPS, a Perl documentation generator for C++ (http://starship.python.net/crew/tbryan/PERCEPS/). See src/html/README for instructions on auto-generating these web pages yourself, or see the result on-line at: http://www.ivtools.org/ivtools/doc/classes/ - InterViews 3.1 and Unidraw man pages All the original man pages from InterViews 3.1 and Unidraw have been preserved, and can be found in src/man/man3, or where ever you elect to install them. They also can be browsed online at: http://www.ivtools.org/ivtools/doc/man3.1/ - InterViews 3.1 reference manual The original reference manual for InterViews 3.1 can be found in PostScript form at src/man/refman3.1/refman.PS. It is also found in page-indexable online form at: http://www.ivtools.org/ivtools/doc/refman3.1/ * Building on top of ivtools Copied from the ivtools FAQ: http://www.ivtools.org/ivtools/faq.html#standalonedevel Q: How do I set up a stand-alone program or source tree on top of ivtools for development purposes? A: If you are writing a stand-alone program that will exist in a single directory, simply copy an appropriate Imakefile and main.c from a InterViews or ivtools example program directory, modify accordingly, then use "ivmkmf -a" to generate the Makefile. Make sure you are using a fresh ivmkmf that corresponds to your installation of ivtools. An example of this is the comtop sample program, a stand-alone program separate from ivtools that builds on top of the comterp command interpreter mechanism. ** comtop.tgz is now part of the ivtools distribution ** If you are setting up an entire source tree with both class libraries and executable programs, you will want to get started by replicating an equivalent source tree (i.e. vhclmaps) and change or rename all directories or files as appropriate. ** read more on vhclmaps at http://www.ivtools.org/vhclmaps/ ** * Acknowledgements: Roster of ivtools programmers: Scott Johnston Jorge Gautier Brian Hogencamp Rick Kissh Eric Kahler InterViews 3.1 programmers that we know of: Mark Linton John Vlissides Paul Calder John Interrante Scott Stanton Steven Tang ivtools can be built to leverage a variety of separate third-party libraries: * clippoly from Klamer Schutte for polygon intersection (licensed under the LGPL) * ACE from Doug Schmidt for middleware networking frameworks (licensed similar to X Windows) * IUE (the Image Understanding Environment) from Amerinex (half public-domain, half licensed similar to X Windows) ivtools detects and uses at runtime a variety of third-party executables: * qhull from the University of Minnesota Geometry Center * pstoedit from Wolfgang Glunz * ghostscript from L. Peter Deutsch and Aladdin Systems * djpeg from the JPEG group * giftopnm from Jef Poskanzer's pbmplus toolkit (a copy of anytopnm from the same toolkit is incorporated into the scripts directory) OverlayUnidraw incorporates Version 3.1 of a "C++ Vector and Matrix Algebra routnes" (algebra3.h) from Jean-Francois Doue. HPUX (HP-800) config contributed by Neal Becker. ALPHA config contributed by Bruno Delfosse at Thomson CSF. A lot of feedback on Solaris 2.6 building from M. Rasit Eskicioglu at the University of Alberta. NetBSD port and other assistance from Todd Gruhn. Cygwin development environment for Windows NT from RedHat (Cygnus Solutions). Patches to iv-3.2a incorporated from the PDP++ distribution from Carnegie Mellon University Department of Psychiatry, Randall C. O'Reilly, et. al. Patches for Debian 2.0 packaging incorporated from Guenter Geiger. This work included the conversion of drawtool, flipbook, and graphdraw README's to man page format. Patch for iv-3.1 shift key handling from Doug Scott, the author of MiXViews. Certain InterViews libraries (Dispatch, IV, IV-2_6, IV-X11, InterViews, OS, TIFF, Unidraw) and example programs (iclass, idemo, idraw) are copied from the InterViews 3.1 sources. Here is the aggregrate copyright notice for that software package: /* * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University * Copyright (c) 1991 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Stanford and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Stanford and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL STANFORD OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The building of Unidraw with gcc-2.5.* (and subsequent versions) was enabled by a patch from Adam Zell. The TIFF library was written by Sam Leffler and published with this copyright and permission notice: /* * Copyright (c) 1991, 1992 Sam Leffler * Copyright (c) 1991, 1992 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The strchooser example and StrChooser class were contributed by David B. Hollenbeck, as well as the glyph-based Motif-look pull-down menus of OverlayUnidraw. Here is his copyright notice: /* * Copyright (c) 1993 David B. Hollenbeck * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notice and this permission notice appear in * all copies of the software and related documentation, and (ii) the name of * David B. Hollenbeck may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of David B. Hollenbeck. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL DAVID B. HOLLENBECK BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ The scrollable example is based on code from Chen Wang The text-editor example program is by Jan Andersson of Torpa Konsult AB. Here is that copyright notice: // // Simple Text Editor // // // Copyright (C) 1993 Ellemtel Telecommunication Systems Labratories // // Permission is granted to any individual or institution to use, copy, // modify, and distribute this software, provided that this complete // copyright and permission notice is maintained, intact, in all copies // and supporting documentation. // // Ellemtel Telecommunication Systems Labratories make no representation // of the suitability of this software for any purpose. It is provided // "as is" without any expressed or implied warranty. // // Jan Andersson, Torpa Konsult AB // janne at torpa.se - 1993-08-29 The Date and Time classes in the Time library are borrowed from the NIHCL class library, written by K. E. Gorlen, Computer Sciences Laboratory, DCRT, National Institutes of Health, Bethesda, MD 20892, and published with this notice: THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A "UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY. The graylevel raster and painting mechanisms of OverlayUnidraw were originated by Richard B. Kissh under contract to Vectaport Inc, as well as the shared memory rasters and asychronous incremental download of rasters. The ComUtil library was originally developed at Triple Vision Inc. under NSF Grant ISI-8521259 (authors/contributors: Robert C. Fitch, Richard A. Fundakowski, Robert K. Graber, Scott E. Johnston). The ivdl URL downloading utility was developed by Eric F. Kahler under contract to Vectaport Inc. Keung Chi Ng of IET Inc. has provided a good deal of feedback on ivtools over the years, and has assisted in demonstrating the viability of the application frameworks by developing a variety of vertical applications on top of OverlayUnidraw, FrameUnidraw, and GraphUnidraw. The balance of ivtools has been developed by Vectaport Inc. (P.O. Box 7141, Redwood City, CA 94063), with additional support from IET Inc. (P.O. Box 112450, Campbell, CA 95011) in the form of ARPA subcontracts (DACA76-93-C-0025 and DACA76-97-C-0005), as well as directly employing Scott Johnston from April 1999 thru August 2000 and giving him the freedom to evolve ivtools and related open-source frameworks as part of his job. There was also support from Applied Sciences Inc, San Francisco, CA, in the form of a subcontract for a Phase II SBIR from NASA Ames. ivtools-doc/ivtools-layers.html0000644000076500007650000002174107512656521017544 0ustar scottscott00000000000000 Layers of C++ Frameworks in ivtools

    Layers of C++ Frameworks in ivtools

    ivtools comprises 6 distinct layers of C++ frameworks. The first 5 of them are copies or extensions of frameworks originated by InterViews. Taken together they provide a unified environment for developing a wide variety of interactive applications for structured graphics, structured documents, and spatial databases. Taken separately they each have their merit for consideration by programming projects with matching requirements (one of the six frameworks, Unidraw, forms the basis for 6 other layers within ivtools, and at least 7 layers built on top of ivtools).

    These frameworks were created with a balance of design and evolution. Thanks to the C++ compiler and the care taken by all programmers involved in the source tree to date, the end result is far from heavy, but instead a seasoned toolkit with an edge in performance and representational power. With it a source-intensive programmer can create their own custom drawing editors that conform to standards, with no barriers for integration with other systems.

    The investment required to be productive with this toolkit is sizeable, but then the investment in the toolkit by others that you get to leverage is sizeable as well. And the non-copylefted free software license of ivtools (and InterViews) protects your investment, leaving you free to engage in any commercial or non-commercial activity with the software, and to join up or go your own way with any community of programmers you can find in the future.

    X Protocol (Xlib) Wrappers

    The first layer of C++ classes in ivtools (and InterViews) are fairly straightforward wrappers for the primitive constructs supported by the X protocol: elements of graphic state -- font, color, brush, pattern; and elements of graphical data -- point, line, multi-line, and raster. Originally part of InterViews 2.6, these classes were integrated into the main-line library of InterView 3.1 (the part that did not rely on an InterViews 2.6 backward compatibility mode), and remain largely unmodified in the ivtools source tree. A programmer of raw Xlib clients could reuse these classes without need for the rest of ivtools.

    X Window Wrappers

    The next layer of C++ classes in ivtools, and chronologically the second layer to probably be developed in InterViews, is a set of classes for wrapping around X windows, the nestable rectangular portions of screen real-estate managed by the X server. The base class is Interactor. These classes are similar in architecture to the widgets of an Xt or Xt-derived toolkit like Motif. There are mechanisms for layout built into derived Interactors, structured-document primitives like boxes, glue, and trays, to allow for dynamic reallocation of screen real estate when windows are resized.

    Interactors were the essential class of InterViews 2.6. But due to the inherent overhead in relying on the server to manage a complex pyramid of window ids, in InterViews 3.1 they were augmented by the flyweight glyphs discussed below. To support legacy code, and because they were used for the drawing area of idraw, the Interactors live on thanks to the InterViews 2.6 backward compatibility of InterViews 3.1. Little new development uses the Interactors outside of work done with the Unidraw application framework discussed below. A programmer who otherwise wanted to program in a Xt like way would probably use Motif or lesstif.

    Interactive Structured Graphics

    Structured graphics seem the first experimentation by the InterViews team in lighter weight objects for screen rendering, and the libgraphic in InterViews 2.6 was absorbed and re-used in InterViews 3.1 Unidraw. InterViews 2.6 programs that relied on libgraphic can be readily upgraded to Unidraw's copy of the classes. This framework has support for all the objects that idraw can render: line, multiline, polygon, ellipse, rectangle, open/closed spline, rasters, bitmaps. And support for groups of graphics (the Composite design pattern).

    Application Foundations for Structured Graphics

    Unidraw was the thesis work of John Vlissides and lays a foundation which he showed could be built upon with a schematic editor, a GUI builder, and idraw. The layer which turned Unidraw into idraw is another foundation laid on the first, which was proof by induction of the utility of Unidraw. With OverlayUnidraw, ComUnidraw, FrameUnidraw, and GraphUnidraw in ivtools, MapUnidraw, ProjUnidraw, UtmUnidraw, VpfUnidraw, DlgUnidraw, and VhclUnidraw in vhclmaps we've continued building our own repeated layers on the foundation. The idraw of InterViews 2.6 and the fdraw in Fresco have proven to be similar foundations where projects like Target Jr and IUE have used similar layering of frameworks.

    Lightweight Glyphs

    Glyphs are the more recent structured document classes of ivtools (and InterViews). They are structured document objects that can do some structured graphics as well. The most complex example program for glyphs that came with InterViews 3.1 is a structured document editor, doc. A derivative of doc called lexi was the source examined in the first Design Patterns book.

    Programming and debugging with them is quite a different thing from programming and debugging with libgraphic or Unidraw. The rendering is procedural and TeX like, and requires a tracing of the layout process to debug. Fresco glyphs are multi-platform glyphs evolved from InterViews glyphs

    Extendable Command Interpreter

    The interpreter embedded into ivtools was originally developed for interpreting image processing algorithms. It evolved into a stack-based interpreter for generic command processing; a C expression evaluator written in C++ where new commands can be added by C or C++ programmers.

    It can be built and used mostly without InterViews. Only a few files are duplicated verbatim in the IV-common and Unidraw-common libraries to facilitate this, the generic base classes of Resource, Regexp, UList, and Iterator. It is a fairly lightweight interpreter augmented with server capability by ACE objects. In addition to the stand-alone demonstrator comterp, this capability has been integrated into drawing editors evolved from idraw. It makes for an interactive drawing capability controllable by local or remote commands, extendable by C or C++ programmers.

    References

    Applying Object-Oriented Design to Structured Graphics (libgraphic.ps or ftp://interviews.stanford.edu/pub/papers/libgraphic.ps.Z), John M. Vlissides and Mark A. Linton, Stanford University

    Unidraw: A Framework for Building Domain-Specific Graphical Editors (unidraw.ps or ftp://interviews.stanford.edu/pub/papers/unidraw.ps.Z), John M. Vlissides and Mark A. Linton, Stanford University.

    Glyphs: Flyweight Objects for User Interfaces (glyphs.ps or ftp://interviews.stanford.edu/pub/papers/glyphs.ps.Z), Paul R. Calder and Mark A. Linton, Stanford University.

    Reusing Unidraw and idraw, Scott E. Johnston and Jorge A. Gautier, Vectaport Inc.

    ivtools-doc/ivtools-logo-square.gif0000644000076500007650000000060107374262633020277 0ustar scottscott00000000000000GIF87a@@,@@ڋcعSlx_2:&llـnc B!¡QFǥ!g@6nK7RR[&rp%i7Dӧa0%gģ"qi'UY$7V&:&:ZX 7ƶʻYf;LXw Y:K)u|}ˍVU 6[=]e?N\k~V~&Y Aא(q[6:QȐȐ`ȑ*| 3̙4kڼ3Ν7qh4A#|"d҆ɍE|,9L. E΄͂vfР;=4;ivtools-doc/ivtools.lsm.txt0000644000076500007650000000331007374262633016707 0ustar scottscott00000000000000Begin3 Title: ivtools Version: 0.6.10 Entered-date: 29SEP98 Description: drawing editors and servers written in C++ - new auto-conf generated configure script - full-featured multi-window drawing editors with rubberbands, full undo/redo, arbitrary and precise pan/zoom/scale/rotate/stretch, switch-selectable widget appearance: Motif, OpenLook, Mac, SGI-Motif. - incorporates alternate distribution of InterViews, Unidraw, and idraw. - save/restore in readable text file format. - import idraw Postscript, TIFF, pbm, pgm, ppm, xbitmap, map features from ivmaps, and from other arbitrary filters i.e. GNU plotting utilities). - export idraw Postscript or readable text, and to other arbitrary filters or viewers (i.e. ghostview). - support for X11 standard colormap and dithering with djpeg or ppmdither - node/graph editing and multi-frame editing. - double-buffered graphics update with large raster and gray-level optimizations. - remote drawing and import services via ACE. - polygon clipping tools via clippoly. - convex hull tool via qhull. - built-in command interpreter Keywords: structured graphics, object-oriented application framework, InterViews, idraw, Unidraw, ACE, drawing editor, server, viewer, graph editing, flipbook animation, command interpreter Author: info@vectaport.com (Vectaport Inc.) Maintained-by: info@vectaport.com (Vectaport Inc.) Primary-site: http://www.vectaport.com 1.4 MB /pub/src/ivtools-0.6.10.tgz 2.7 MB /pub/bin/ivtools-0.6.10-LINUX.tgz Alternate-site: ftp://sunsite.unc.edu/pub/Linux/apps/graphics/draw/ WWW-site: http://www.vectaport.com/ivtools/ Copying-policy: X Consortium End ivtools-doc/jellybeans.gif0000644000076500007650000005000007374262633016472 0ustar scottscott00000000000000GIF87a<QQ@;4>&,<0I8ͻ`(di(5lp*0( poMŸ{N^l|g[PIA#17AWjS[$K)#e#?8r#8@Ifid IN6dH YޕEU_!i(&,j&i)QySzfNJhhm 5sBI7){i8**L誏nB+ yūr w ѭbK*PJ +nփ,GNZuNֻ)D=ڭ:*&+EF&.^yzRǨbL^$G:.WHn*3X'j q$(,ܰBY1nJ8oY본b]rF} IM;M1/zcpZם MȘ%(=/Ԉ{ܽ=7ݐ͙ޔkKްϜ0sۭzϤS'pnvI:ۜ.nuXcށװ옛`2{=|w/U"7/,iG~ORo ޗ{_~#@<꽯zՋ_$_b#W)E'I* b0l bQ@stfrPB}`У!X&M { y{XĿSD)p$icE+Qb3x$񎳨nhnk?.s\(փ@N@ uFV$h_ !bC, AN>PڑshpKSϩd@b$bTޏ;(o=VNt&$93'8druc&MI&BmF"gZ̙̏IB;uiޱ|&=ߗ ℨ1s~O|Tڊ^ W$ eJE  -=Q[Ԡ%))6|S jJUɖF0 P#)#R,4SOI6ԩHm  *T?A62JU,J5VկbkKSHŨs+ɫL~٪غU%Y k0a0pc*WxD)a4a-` tFlG6啶eU:,`9SXӆhMjouMMMmD%1Mw'QBB\Ȝ|ʦM/u7e-xgK}7ږWo{aEj*F>XGWټ6(.p`5a/D/jw  t1<TSdd<2́ SX2Jư,'sr#lRyX޲|`"Y3,+_/;3MgpxN[:J0SDsZD:/>4_7_ zqαoj:w20_x,Ծ$Z:.]xz^+Y-P;/x[qQ^Y* z|'+A7\NKݸ W]T@g/~LN_la@Ӟ>m~路곾Cg|r/?x`/1Ut <ۉ߯g?Nc07~%V[6X׀w~Wu7l|vuwpYbԷ&&XwٓVLr`6闂4BXJHxH(+ȂoCnDz<X؀L,|RjEwPIx#Mȅ-m` YvB-7g5u 3Xd6zb(XaJlȆ–jYUgq``(d^qWH>(k؈g6[Fcssyh, v+Ghph(xzySSLhXPk׍TXxKiDǸ$F%Rݨ+A9،(|hqx~vR(@`xl8X!7ԎG i ' ~au Rr 99v(i>ٓ4)dȏijQ(7NĨ?)YS1ٕɔp#iW=Y,)z'"pFHcNIL ikIiQ-0ɕA@ؗoj)irYHX!Z7%z9N miIwX)Y9F9`x" |p؛IE{IUIQaIiBIZ&빜-i@Y^y}g)Њ+ rRh9yst,5wםid`j :32IxJ)5,*N-zRlj:;1v7` )zY(t{YRIh8KV@5i2g'S:bKꝭ`Rp`RڦQv=ڠYCz'J"9*~ڤ6 P Snzm Z *t\EV0J.ʩj 3zljZ)@ࡎJ)yZ W jnPʡ$uƚ<*!iŧU&ʩ Q: J ȪuNJ:[z ]Ыu*}!pJЮڐEiJz݊`* Z&k쪰*tP+6`7{M!k{蚴Za`jjRXkD\< X5{*";H*¬&'>oc]^ks{˞jh+L[m+qɲ '1[WkY}[8428YxpCA[ 괘Hv[xS۟[d3a+nPĸ("i˶"*>^习{˩g/[XuXUug;Kn춷+kMT&[u6Oɾy[{˼ ).*~ 6~]:^t?^A>EN].+[[`,PT|nW 4^ ƎΌ;=}j~y(䞫,ڞr L6Ҏz^{0S+.Q+~뾾矎 ƮPͪSP}k7>q5!n S~ >Pnv=6NL혮 .-I~ƞ ~>v|(# ٺ$ Ⱦ N^0N4襮_ߍ%o'_i-34k8V/! \]gfPj5o-7:o< ]_a?DUKƋSvuLx}/^?hN/^+o?r?ov[-.dˢ[/ ʰ@O+y/or^c/Ow7UWt/v?x!Q LRm&0GDHWp_8 0@`defKhcRP$im.ZZ6r3n wxvCIłѠճA da p]x\pv=lhGb!%4L/Q32 DBK}9IL9Iiѧ9h2jp0HćSO!UEETVaI.ErCuegۤn.8B`囕m5&̄ğf#y%;lj("%9+-@_~*Ti#&FcOy 7PzJIgC9x!׃V\k?.E۶R @dYEQ 'NA; YWv=c Un> t9:q@S$ʺC6O BC<^ap16uG+vk?C_Q,LU;toE_#GT!|,<Pc yK:EH(L!!TRX 60TMAxK/S?ŬL3=SQ>QArV|tR:xԄ I^X@{ uEuR-$=V[SFbRM @XVaU4OqksvW^T5`N˵Ld-O#UvZiŖRm1&' < uX=w*y#wHSXGE n\OE$݄ Y3z%bR.\=K}BpWr؂5y9fgcYc䒵IzݮkzzjK9_ْ6zc~`FzlflaXk|븜T+!d;Ȅ3 VR⤑u\)50z<*WarHj aKıe-qK!Yx ̵q,44Lprd.i.@|:`;av;$ T6zGcVJJue\]K\6QQPg"X~b}تVv*"KY&םUkQWMӍ!}H[ZJMXkZZV} S {qFi WEx@򚠣+3onZGVẎn,{~W}- ;A>vnKmy`u@ &G `]u]LA-q|vT{*e¸͆a8QrʩTݔ/ OA󠱒M]9e)(eXPVf"{d8ןNF0 FLg5f]58򌽉g&Yc'g'׉WvjdLxsj8]b=zE SBiDyѳ4GwӨn#g`wМj(:Qy-ՆF残Mkl  ,u%, v;lbؔEv5nIkYg{vw&i(őͬp3 kk3Mjڨ7 /[,i2k 0? ok ];,y#x_%?m-Hxx~|5QH=0=]0in["zՍ]e7?^uD^ψΉ}RyK^@]?LJ^yˣ '',/x_=3>?^^ӣ滬x^-p헖{c^G;\eN>m!P9|%_0zg_b,LxW7r?hcAٻAҨA53-;+JqAlB3F$JGfGtuSxDžXjpHOEqj MLTL tKMo<*M4DGjЃCM DK=B4Ɯ?lĪ24dͣM\'xO|N4L4%L0qGkD7ϢN)Nvk|Ì49QcPüLkͧ,ES `P4O\O$ JPe-D5I$P݆4m]P1rИlOa R ,є"5R+BһlEuGtD]RPӮ,<Q|°Q24eSN.&1El<?@ TAOS8IDԊFu;4<ӘIAQUMDuJ| U8xS9S7HTtUXXU;&UETB]Ve_`VLM Rj dMKϰ%It $V ;$9-3b4`-664;!yd!9 cBc#Nd:;ZFudPc5dSVc%sRdGeXn[JKec>VVd\$9eCF"L܏^dX~HF abe+Ffbf+he:f5fkaqofpp1-gxNsޔ5*u``ry~WNgh^燸g!&Sgyg0dffhnP}Nyd ~或hmd~Nh4 1iΝ>nhr&i*^ngM@ ji^i~j,&mKNjufjx6bb .vɺiaP*j^HG^j6}jSjʸ6k&kVȺkQkvjeT&NobqN#GrqnCnqGrZ&.7%snMCp3?s*O?q6!k8.:1stq5*,g`~E_t(p {Ӱ'|ƗRtЏ|j.|ڿmH﹒vn}&w?aܮ}ҟ}G l~ }a-/}/w~:(UgnњzǺo(pfP'X'0gJcMz?jY'غ/3rz@y,L%)j*Vs{],L [c4`a bdSe㡟Vؗgh藪i^,lm+i-oUb㏰_$2fX'h43ui55^-mwF590pP1䱲R3:MV~}k9 }UY谆]kn;x6D(i},LBvzKp۹R|'Xt1X[B&^A:G& c*|YBL"%W8x,Ȗk,"6{E9Dj6[:iaf2ȏ 󫼏p0vկU4 +NaW&a:&)]Qe-3Q#]ڷ`S^F.졬C x>o9hPKEx/x½d^/!)`bgQubHC y2h8r߉9(;M~8 JWŅbg"ladĨ݌MӤ+U i$E&_?1O֥.hr`ee^n yVQ9JFqj`(uBbFzJ2r1%#uyF8&G 5YN&-`PQhUYsj-*1h)~@\)lJT pm/zj-b% mRV.iڵ\-)%*imX@vٖ˄ 0\X* 5/||y0Fr0Ί|rI.-1=( n6q+_l1dLb;k;T2J;fB FstOo@a5h.?[mBfN\XL;6y".r m87SV5jG.4t*#ވ* 6کOθp];9{*/8PC ]s5{ˮ4!~|%h“}# _#VѸ +;cהn]{΢YG2 X =m{;!G1O,$I-@ p! _?]~6̝TjH@:]#hz>/|  U E<}A|^(FB+a ӈ5PNy fCHD'D(ΪhŚxώ<DQjW4b DRzgT#((6Qd5#.Y GjԄ(KUB*#h06O4$0 })r4YHfd2!(mʰB xVS#:Fqnk2&1sN^(39bY<q*Ԡ ~n6#M5Z '*SLWr̤@y< ^d6_޳P泊B,??ڋgTtJ !I&Tv)/d9t *'Pԥ^Le%ә27#T[!URi*W0+ˊS>2X+Alj$]WGu^Xt:ף.zJ8! fNlzz!&Sc-HF65m`1Bk?Y8V<+r;Hܲ}.XZ{J]sG!䊯"t;/l^Mlg&BWᝮWb)#o;YڷV`y Ah!lJ[, l`޲d Gؽdk M0]A<".6q9=2 (.=1G+OXul4S%[!t2Z2OAjP17hҀ3*_ym@/rk\K"p`!UC[.7(O[t *I;\E'9_8ߦq+XO WG]zשu[@ؘ~5@o;شŀk`ڿ:G-=w/k)<[ ƦMk_؉"mg@.p1@ ˭prchoo_s|w%o}$Op#-oƇփs K`=PO*A>(.wFxM'S\cy]WCLGfϬI>Vҝ.w{<ꛨɭNu:*ߺw9_nj<>ǝ znuxٹ /ZaC>m| N˹_D<_~<?#o˾qf< %"ѳp7ώ7 ޹_%ཟ[j]]IeC 靠: :IR]q_ _)^@ F Še nʀfaV:} 2`_OY eR N!V!]!;inaB!!H=&!!4!bJ"I 4 )X!a+ / *aJb)z$" u)$Vd!5"0.ra"&""#2+Y,>b-Z d@.י`y'~"!#:R*2dBcq%V]6f#6>)..w/ ))&$:JR262;"#ETP=N #G#&z&^8A 9B:*b=bEEb%FOj#?n@/Q!w!C6C.cL#cF#P$WGA7rH`IF8OR*;dLeDZE4e=WvdW?P"Je))N9%d>\Ɨ" EeeLc_`?_dXAH%j@%r&B%\[֦\T^if gW&?&/nkB`nr!¦qdVgdަ!#p gq'iX~cjYT!tƦS&Lҧv cNuZdf}h Abh(/Nhyv%AYg It2f!}hmwݹ ŇZ}4 h(`&& VbT(>d\҃#8z(@=gh( zVF(Ƥa7AY6 ;ޤڅjV&@aFMXh24mۖBj@T 鉎irH5D}&ZTe at!.nz P*[N(!(jEa)4Vj6i% y*e~#ʨ@u} +1I)f\fj6ުa ż AB_Myuk}a ⠲kj")NniUN+!%ijb_^ *,kxenkp,φS ,lX:n>۾1k:˺Lt,֖N\, wO6q«+V>IJq0>A-<$x-xퟀBӶzlN\}DdB<ح Hs .ArӲfBµX.Zb.dB=DC@ 6m튀?.jGB= qk4$4hm `5Q5j35kud33B2^'f,!+eGo:sgdo)Akw/6̎o8u{:993*r)|h8;w/.9W2^zs:+BsH@;úVGFSzhg 5az77|~(k9M;oAgbW#4§;»J\@[ü<[4w_{iyoi3ڷb#|{6<˳ vFPӼ׼|n7۫=87#Hwz#ɷJmGTC3E= w{؋4 yBG0(kqV;/DjŇtq|#}G䟼۫{=9{t' |+rO6(;&]w2 ?{#+=Z~ӟk'?+?OF @8_K?Yfgy q=SP[⠏o.HQ"0 ġ$ ~MLuNQ* =8̈́Dy=/ŀp1o#ɂb"hST$&ueeF'v3(HH&W7x8k7/9Yyyٸt .nNr90M|\AAwԂS~$_?&V;µ$ݽ'V|]q/^T,CD5бc7Df(l lQBdj.Bћ'OCO`j 6xVBI:0!uI4{, 쇓 $%ܗ44f M=B^&T5|B/!l/_A U@Y\&kufVȒkMIZP\e#"\M7q.ߟT;0mq7$`nuҽvW&XiX #mGsOw]x?@Bp1Ϟ32/ .#7 C4YoYDn@2{q-T(b@p8pFS넔7 ƛjXm>Ǐ&l+DNo>رo+ bL:AJ MSA:/N4 ?,1dc5LR5EE/.c1L3-L@r|sSu!3һ8j#Q.+GŚrRhKP9%EA;|^ғ 7:VZ Q]іPTHs{\L\?dܡ]zTR,TRuI򶕃[æI*066rUq.$_vޕca)V߼50BΔt΋v2B6P8O-9wbtMcL= 䓇B`dYJ߬]If+W(]k;oơlqɕy"KAA۴2 iw{N &uv$R)“?+]8[XBp_ق(ȭDrc tAJL0x`2CjwτID!HD'>QJҰ@^цbp>KUpx,KY'áDJ0=vRGo|1aE>2 ]Th72dCN%0ם0 K>T̀ɾR8`ldHvP\34a=җT' 2"DR\eZIƐQC\KLj =dN`$:р4hR5I/XSH\~SL0HP`4& LDq) 8t岰9!s^72uAwީib 4B_HM͠IER(N,T\ Ks Xu(4hpzB먂Cu7;?SJua"9qѮf>)>͞ZzЂ dTEMwjS,TYL-E (ap7^n@ Ke1 EUaWߪѵQ&E׸* AM(kj+[YPB.]"ʦg7{GZ]'bk{"v钠[ @OSзULU W] ϗ$iqI f38:P)q[ڷ00yAYX&t+@;c'?vq$@I|qqPO;y+F̅>os (GXVt]rt^^%gR1ƅִiڕUғtICL=%zCьu !zzKo; jz™汩OY4d¶yksԾ퓅=\b؟wi{Ж; .._LnYr?UUlPfpps!']w/OHb\Ѓ̛q9w7֊V kfkl QG~x0n{,!VP WPЊ 8ӐP M- ~JpP y/ f;)Cr9 9>\s3l83<{>r+;7(/T0/ ({I?C?ĩAw=) @R7eS.Kt1qDCwE;4:}v?FkDE])WI(;ivtools-doc/largeimage.html0000644000076500007650000001024607374262633016646 0ustar scottscott00000000000000 Handling large images in ivtools drawing editors

    Handling large images in ivtools drawing editors

    First, the image (raster) handling software in an ivtools drawing editor has been optimized beyond the mechanisms of idraw for more efficient zoom-in, by limiting the zooming activity (and hence the virtual memory required) to just the on-screen region. This mechanism kicks in at 4x or greater magnification. In addition, the rendering algorithm switches to using rectangle drawing instead of pix-blitting at higher resolutions like 16x.

    After that there are four distinct and composable methods for tiling large images in ivtools drawing editors:

  • on-the-fly tiling
  • tiling by drawing editor document
  • internal raster tiling
  • external raster tiling
  • on-the-fly tiling: ivtools drawtool and all other drawing editors derived from drawtool support a "-tile", "-theight", and "-twidth" command line arguments. If "-tile" is supplied, all binary PPM or PGM images greater than twidth x theight in size are automatically loaded into an internal tiled representation. "-theight" and "-twidth" default to 512x512 if not supplied. Any tile not currently on the screen is not loaded into memory. A "level-of-detail" pyramid is maintained for each tile, and pixel data is only loaded into memory at the resolutions at which it appears in the on-screen viewer. This means the entirety of a sizeable raster (10K by 10K or greater) can be viewed at once without requiring a gigabyte of swap. If the document into which a large image has been imported is saved to disk, the result will be one entry for each tile with the original pathname specified along with the subimage coordinates of the tile.

    tiling by drawing editor document: a user can manually create an ivtools drawing editor document that tiles a large image into pieces using the :sub argument on the raster entry. The easiest way to get an example of this kind of tiling is by using the "-tile" mechanism described above and saving the document out to a file.

    internal raster tiling: large binary PGM or PPM image files can be internally tiled using the tilefile command on ivtools comdraw. The arguments to the tilefile command can be viewed by typing "help(tilefile)" into stdin on comdraw, but for reference they are: "tilefile(oldpath newpath [xtilesize] [ytilesize])". The newly generated binary PGM or PPM file contains a comment field which is used later by ivtools drawing editors to access the internally tiled raster.

    external raster tiling: finally, the most efficient mechanism, if you have the disk space available, is to use a utility like "pnmcut" to manually split a large image into smaller tiles, then in a text editor generate the drawing editor document with a raster entry for each tile with an appropriate :transform argument to position the raster relative to the origin and other tiles. If the tile should be positioned at 2048,32768 relative the origin of the large image, the :transform argument would read ":transform 1,0,0,1,2048,32768".


    Please send comments or questions on this document to ivtools-info@vectaport.com. The majority of the tiling extensions to the original raster display mechanisms of InterViews were done by Rick Kissh under contract to Vectaport Inc.

    ivtools-doc/latexbuttons/0000755000076500007650000000000010747654212016410 5ustar scottscott00000000000000ivtools-doc/latexbuttons/chem/0000755000076500007650000000000010747654212017324 5ustar scottscott00000000000000ivtools-doc/latexbuttons/chem/chem-fig1.jpeg0000644000076500007650000001016407374262641021740 0ustar scottscott00000000000000GIF87aZJHH0HJ.HHHP TΊ(0HH1H.H |1H#H 0ΊJHX,0JȜШ(0HZ,HHdU l(0HH 4ѿMnH(lJHHXШϿ((dumHР7(7G/HHM+R)U¿ s U sH1HzZӈGG ,ZH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿-@p0a&̸㞃 Kx˘[F_Ҁ&`H.56$af(vhЅ "s&`b("-Q8w9ir@Z8> ZD_T\ MzGW\݆j%j`I?h&BZt>[zBP7fwzlR(6=ٟVzG228BFzj*jj:P⺪zJ+ K@[떃*,ʊll>,F{Zb -vژtF.K놉fs)[V+uoVo6I 3VjH& T%aXE,1ZL0 0 /t"U,Oo r*CsFrǮP3e>CW4;ItT7oZFS)ʬ0I鐈N81UbaSxTCZTĭB;#2ߵΘb, js漿UU*0Qyֱ3^f/9f3Z׮իd=a@yP#OK`arذ~m[X'u_fKZiըYٛR Z>ղN*bG&Sp@[&׹ƅp+\ֺ].s]b}nx;閷f]%{ӛ]nwۅo{0K 6W jc+<`_lp`CJXM慫NmbP"gL)(l:F;[,u1jD5:S\J=25Nl5Z$h{X<'Ә$0tC ˯W޲ӊya{I٫k6sMdU3/l3n"ɂvg'6ъq:6 Vx^5Š mt9N,XMO;'Nq6U,t WtC44yS$xx^z"vN\lMƜ{F?HXd2B?O74mT)ӥ'5I_}$Q{h[ 3i&Wk"wxa$A9EPߩ^>R!.ac ty|9WvIo˧ʕ_}]uo}7Iڔ+cC#Jw;t>;Է(O,Qp%}#\5Ӹn|.UKKYGCCBg~nۧH}y$]~GdF~ַrґvJw^uݷIKZ{iMq|Tb9EmVdUYZ9VȀ@7yg$~g.|3/r{H*X;WJZXD<JWׅ0@HXS (yЇbGG%:Yx1"Tg iz2W}'w Hyx({H#X{HNH[7{׀7WrnH>V?GxVN̖\BH?vxow``WZ,v+CƋTtk(o{w؇hyֈDV8Yw{RǸ(($Sjt;hP{.[+k+iox 6@A ,IW肤Slq51A_|",LrG6,GCaCp8 47 130u5_NmujkHI?`oybCGTXgv\:ӣ7|sv}+Ig,κjn&~]zoK_N-珇kk,D~G{+zn9~:b< p;ygXw:#і//qHއo]|:|Gvԏp.%;[wsMc6@i_?%rT"fj2%πÛ&~)3 bv *ZY!\h:r+1,4 -K?TPh,%ѻ^Þ5d5; =E\! XmN|Hy2d(;bCZW\2#6ьAԈ0!`B=*=$cE>1md"9BT i%`$}y*9S"SILHִKYI|05Ɨ# 5a7^\rBp2;S72EK'j< `MjS YlHRj aGeE$^!qM*LX=ΐB/P2RJKNg%F(ZYUJbU|ښX26[hзաh`UmbW =v^vkjػ4mU? ֯|Zjm;vrlcpE$,E=-iϺ®J봠}SSY6[7vq1l7)/QUe5cc\dkYw}(AY/|۪^؁B_ c0Kr~D)GEw4{7SoOZKX$Tq]c&El$KFr)J%{. 2O|/OaLXֻk83vV2fs0D,g+4g(?޺ ^ե)Ng9͐~Im^ZZxFtc6=?eɨ'S7ՙickӍ5vc\#6IwPžI0O/c3f3Ѷr`jAh8c:µO~Wpff: !j$264L=^e5GcbuQ}uo%,}.x&/;_j}Bgg\m\aMK\8:ģ~B\-=տF6]۟~AeF7{q[ۋ";cf>hIEBdhc_BO಑}ik+?^q>iÿ=m}j}x{H'w1W2O*gL]rH"Ww*ׁ+(T((hWB,%.K2}yUDB8#:;҃>x#@32DxHJF~g!}LhgL8qMxmYqWnZՀ`Hw}w' uqf_膦1t"fܶsz%}r3.舑+x8pȈX)aHvȉyw8Xx)wD:YdwlJWHJvfy7ZrsGOɗ%׋XZRnǧ|B%Ul\$'8htw\voUKhI!I~Ȍ݆L$t8ٖLw3m zHY ɑ].|wLt8GM~ɒ G#UMjhpX((fVB#|=ŐR|:(Ɠ#T)ه-?YqJYKrwX; 8ْdOB( _ {r$Wp9)lbkɒҖ2-a)mIrƐ)\ґȆ)3h{Y ZEnj+X]5@)*7U'?yĆvUGڇmWAb4xyWĔ16Q9Yy虞깞ٞ9Yy";ivtools-doc/latexbuttons/chem/chem-fig3.jpeg0000644000076500007650000000726507374262641021752 0ustar scottscott00000000000000GIF87a"peg'H?0HJ.HHHPHTΊ(0HH1H.H |1H#H 0ΊJHX,0JȜШ(0HZ,HHdU l(0HH 4ѿMnHo(lmJHHXШϿ((dumHР`(`G/HHM`<&OveHrJRwrit)e exisid ng f il'1/uHsr/Yg;ues,t/*toYd;dG/ te%Hx*/sYt;ru ct%_GfinHa,"H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ7c.2KNy$o>9t-gK<]O/`@F@ {~_ނ_ŠUrHba[>x||"b)(c\hcV52)%TQNiRU^QYneP]~)&OaiMeLifKm)I(igLy('}qzr4hAj%!5h: GfZ#Vzjԩx2NX]Jj*JQ*)\GzP:J&֙nB{[rF-&In!*z.Z f뮮n`c2ҙhI+н\;/{;dp 6âۑnRL)icL°\}i1%wr3W/.dr5lq#[r? БFM1mQ"+1B|qLLYm[^wvhd3g4qG7ms^]:˄~@')D i ߊN_ya$7wGݬ.sN,ysҶV|cïߵxNXB{Ec-oqKş`78B+_Y*X< ]n_~D6A 4? z.H2&;BM%T8A^n5e9krOTG:ңYBLB {F@0hs"ܠjE!!͊Oq @qE4t5@nѨ521JGaǪx+&6񄆜b!H$quLB;$Uj5g.TFd[IC"V9 peNN9# `pl`V& ɘZ0(RsLɣiR&&YmĚfXp: 9Ħ3\9ۉw}'yOlg?7P}&:H-3A2=(CЧA}M~8VBM*MQbqBdiPd˨6e VeM+& Hj҆<*AOU!HʶI֋i80TjKZ+_88AZPqz3-D]0Õt[^̖5[g+}Ocfj XY"ljMN7J"3"K2F}_f4b^X-e/|{bx1ծ[R~gĉ/`ḫޱH,dX׵E|$uN )SYP2tmq˵2|1{fN6#[Mf됖=LDz WĂ.HQ9ђYbI@CX4Q7}iʌLճ;8;X>5Wh:ځu\Z'%atm^cׄ` !b؀A6f;ЎMj[Xjrzr:.J̼w^#+D?)Tu]uR]W4(X`֖)@51?# |vҺq2Dq[]b1-3ܠM.WT5虿j(D`ms|m¡v 0QҔ6+tG^^gݸu?L`]ʁO{t9XLT۝z̨^IdL+}u565iV7:NOyW_ekEX5&1 QՁe%&څpSxwgIqDx$BpC~LhKqB p>$E$qgF"vDŽbtV~VA'LYtWwY1WiiX}b_ϗ3$5n{ts7^M|s}|p8}2q({!APxc$]g'_,~t#vHcz97V{8{׊G#gvyvTihEw>8Gv7z^g8l{hptvssz瑋'8oxyxs+&ixxuR $w-֎H6w8z_UVs{ڭe[~_kjwÕn\f ^⅋.?},jsOvvũ|y捧]oU}mUF yVA~WI!Z Ea-`߅6\gVg.Z]r0u4"/h#;ܑ!nAVc題@~%v 8~XeJ9mN ى6wڞީ$u#'߇|rfc (.(%trZ^[ڧi:b*(k [T &^),ji*fn:;)ϞJ&k,tjq:{h>㬩}n:l{^ ,f/y+Y~fm0"/9mg;{$w 7kc >(^f|4ljtu|;{|0L%P/|VVvq!Z}o[nX^.sh,pwjWCptu7] ne r{i,%|͟Z.*?nzħ͢iR̎] gt^/쎬/X粵%Ov+gۧn-񽇟K_;ܽoӏ)笽<8~ׇ,ݲ[ؐW[ @Gl-T1 zaD< Wp)| gH2Hw@ H"HL&:PH*ZX̢8.z` H2hLc6pH:Qɣ> IBL"F:򑐌$PJZ̤&7Nzғ(GIRL*WV&,gIL̥.w\ 0)bL2f:Ќ4IjZf6Zz,-ILmSL:veSӪS+/yNҐEU:*ֲuL'YˮR՛$jK3l-*Y{UaL*ҧ=mk_ 5uZ{WZ֬EgZ!ɮi=lXSYvNM/:Xҵk-e͝S%-1u2mU-o#Kݭcz"װ_,[3K]knVutKw.q ZVdz3XWm&^qvwEm}+Fױj{TM]`cnV2*]P5|^6}- VjnazumQW+3,pR |cX@n_{)#8?^m8a{IZX.eXƗ \WxL^q}[|fȦ]r<:Ok/`g yh>֦!r./cTh`xX.Y;i_jc2e(-gitmH%'3*s:S8uw8=>vbsx}8B䓈׈*({H"s/|1XB臧؊' 5芴XvȊwzȋtx88vhǘhuXԨuECXܘu}8H(G~۸oHxoXxX`H؏Q89R8YP2y y<Y9V=3"IOy*`ѐ#W"@rU15Xu391t> J)_B"s?ICITrMic$“?U$ RZ@J1`$us8P hrS<Ç1rX"eȕ]{YilB镋@՘ IYaI mEŚ(yəYiٛs 9~٘iiɜ(9~8}ij)4ȝuiIYx+IJq9)󙟞y9,yՓ=1Ih *fi"ʠ"L"$[>J L:C>}Zz-N':)o2#@ѡ/z ::kZ_ܚ5gsx*%M%6 犮ӣGɡ*6Hj352 :5oBXa48ˍ 3F? *sSìj$ؗK;:%jlu)+˲t#1+8+:k0<۳J !7+'G৴c$M]2TˈD_ٵ^[[Tckѱik˶oDuˁVt9 w{}z[W(ߩx=ۀ+;bȸy4[. [-N ;˺sS$b/1Fv9)]ㅫ؂:#2 x1~w 0"J',ʸS?6ll˳+1\Vw"/kAg<}W&'򗁩!l~g鬌뜧x\ߧt|uLзΧI*}e!mQ- |JXqO %mv(ݶ+=aCA/ ]цӸӰB\֘-:7 [>s$a\&ԛ*.;24N6~6 <f,NA1^Fbu ^!-VL-=U.WY1-AA]Δ>.@>^欌X Tb&U}nů|ΎɝKx.{~H ..Mk^]NޥHέk >ԭꨞ꫽Rm٣=߳lN6ܮ~Qͭ ~ Nt^g ܉m~س~u. .> 9/.P>^e ~D^Vq׽jmCO۾j5R^E'Q|"?$oU GpoiHh> 6o> -G.O^LJ| OV9?F>[/\j٭ec^tɎn~ϑE(Yd3^G1:y="?ဟڗs֟v^aI:-#8 ?稟oNX綟?9I,OD@?r5oQPxQ4K?AiE`o& DPB >QD-^ĘQF=~RdDLDRJ-])pL5męSN=},i@PEETҥ2>UTU^V]~e͚ZmݾWgK ]aX`… ۷^{Xdʕ-_Yb;ohҥM4X_[*lڵmߖvx{*pōS o^]A/}sݽѺbwCV^z=O}^+.?$ w @10C 7i²L0DOC*Q1FR5gktFVG#t*DzD2J)SrH&")*LРL3o03߄s4\>3 S3PAO:crPEDR>|_uL?}WW?~m?3 N/L!ЁQ``:0(`5,Hf6B DaCDXB)!Bp3І` QPa|CjC$4$&1zK$Z o\4zEˡ?nwcA'F-jl]WX;6Nqmтdװ~ =ӣ#[I%xRMciKҮT in;Vͦ;ZOT ՋD}QES3lj9U,bjTՋ*j~՟aƪuhݕV*p+[C8xRpхЮ l%i,4:,D:yl]ٌNU,lf!k؃,@uR .6̰ ,n bګveiWMo]r?5֩ѕn ֪к^vkU--gE*J9vխ\]𒇽5nz"WeTy5X^`+`򺶫*L\/$(W>m!anXPpK>&>f7/V Om#]!>վfm~d.OM2z`2*v\>9f8-vƤ%5L&3D2`/vsqPb:hЈNt >E- O)iKU3mTUZך͉^)z;H,qd#1X6"бvz]ku-4o;ϩo-[t{wJ텞hRto~ם\~^ ߺpuT|)(g xŻ ;%j#oG[!^<+r?wγVC|7DzғsKs@;ivtools-doc/latexbuttons/chem/CVS/0000755000076500007650000000000010747654212017757 5ustar scottscott00000000000000ivtools-doc/latexbuttons/chem/CVS/Entries0000644000076500007650000000077410747654212021323 0ustar scottscott00000000000000/P-marinus.jpeg/1.1/Fri Mar 15 13:10:01 2002// /chem-fig1.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /chem-fig2.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /chem-fig3.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /comdraw.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /index.html/1.2/Tue Mar 12 13:42:50 2002// /nitrophenol1_2.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /nitrophenol2_2.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /pyridine1.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /pyridine2.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// D ivtools-doc/latexbuttons/chem/CVS/Repository0000644000076500007650000000003610747654211022057 0ustar scottscott00000000000000ivtools-doc/latexbuttons/chem ivtools-doc/latexbuttons/chem/CVS/Root0000644000076500007650000000007310747654211020624 0ustar scottscott00000000000000:ext:johnston@ivtools.cvs.sourceforge.net:/cvsroot/ivtools ivtools-doc/latexbuttons/chem/index.html0000644000076500007650000001347207443402732021325 0ustar scottscott00000000000000 Chemistry with IVtools: Building complex chemical structures with a basic widget set and comdraw

    ivtools Chem-widgets

    ivtools Chem-widgets is a set of chemical building blocks such as simple rings, polycyclic rings, and a porphoryn ring for building your own chemical structures to be used in LaTeX documents etc. Many of these structures such as benzene, c4, c5, c6, and c7 have removable angle vertexes making the contruction of heterocycles a snap. Below is an example showing how the build the complex molecule adenosine-triphosphate (ATP). The following examples were all done with comdraw.

    We start with a ring system and create 2 colored, dashed lines and a bunch of required symbols. We then use the dashed lines to align the single bonds and symbols like so:

    When we have everything in its place, we then get rid of any extraneous symbols, lines, glyphs, etc. and select the completed structure by pressing the left mouse button (Mouse-1) and dragging across the structure diagonally. The selected chemical should similar to Fig. 2.

    The last step, after selecting the completed structure, is to select Structure::Ungroup from the IVtools menu 2 or 3 times. You then reselect the completed structure and select Structure::Group from the IVtools menu. This will give you the result in Fig. 3 below.

    Since the structure is now treated as 1 large object, you can reposition it by selecting it, and then moving the mouse while holding the middle button down.

    To include this structure in a technical paper or journal article, simply export it as encapsulated PostScript (EPS) by choosing File::Export Graphic. Click on "EPS", then click on "Export". Then insert the following before the \begin{document} line in your LaTeX document:

    \input psfig.sty

    To display the graphic, insert the following in the body of your LaTeX code:

    \begin{figure}[htbp]
    \psfig{file=file.ps,width=6in,height=3in} % see Kenneth Shultis, pp. 100-103
    \end{figure}

    Where file.ps is the name of your graphic; there cannot be any extraneous spaces inside the braces on the \psfig line. See Ken Shultis' book "LaTeX NOTES: Practical Tips for Preparing Technical Documents", ISBN: 0-13-120973-6

    IVtools does Curvey-arrows
    "Curvey arrow notation" is an official notation used by chemists for specifiying chemical mechanisms by showing where the electrons go based on Lewis Acid-Base and VSEPR (Valence Shell Electron Pair Repulsion) theories, and the Octet Rule.

    A very simple example of this is the resonance structure of 4-nitrophenol:

    IVtools and heterocycles: The cyclical structures cyclobutane, cyclopentane, cyclohexane, benzene, cycloheptane, and cyclooctane were designed with removable angle vertexes making construction of heterocycles a snap:

    The IVtools custom toolbar allows one to load custom toolbar configurations for different typesetting projects. Instead of loading all of the possible chemical widgets, and believe me there are alot, only load the ones required for the project at hand, or the ones you find most useful. To build a custom toolbar, write a toolbar script similar to this:

    addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Chem-Toolbar/widgets/c5-ring.idraw" :popen) addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Chem-Toolbar/widgets/c6-ring.idraw" :popen) addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Chem-Toolbar/widgets/phenyl.idraw" :popen) addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Chem-Toolbar/widgets/c7-ring.idraw" :popen) addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Chem-Toolbar/widgetsc/8-ring.idraw" :popen) addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Chem-Toolbar/widgets/c6-boat.idraw" :popen) addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Chem-Toolbar/widgets/c6-chair.idraw" :popen) addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Chem-Toolbar/widgets/t-butyl.idraw" :popen)

    To load the desired toolbar click on Tools::Custom Tools. This will give a stripped down toolbar into which custom widgets can be inserted. To load the custom widgets, click into the Comdraw command window, and enter the following command:

    run ("$PATH/file")

    Where $PATH is the complete path to the custom toolbar script and "file" is the name of the script.

    The chemistry widgets must be in idraw format to be added to the toolbar in this manner. To convert a widget to idraw format for use in the toolbar:

    • Import the desired graphic

    • Select from the menu File::Export Graphic

    • Choose "idraw EPS"

    • Click on the Export button

    Below is a shot of the comdraw GUI with chem widgets loaded:

    up to LaTeX toolbutton page

    As an aside, I have also built a protein widget set, for use in amino-acid sequencing, building biomolecules etc. Here is a comparison of the first 15 amino-acid residues that comprise 3 different kinds of haemoglobin found in the sea lamprey, Petromyzon marinus:

    SEE: Isabelle,H., et al. (1987) Primary Structure of the Minor Haemoglobins of the Sea Lamprey (Petromyzon marinus, Cyclostomata). Biol. Chem. Hoppe-Seyler. Vol 368, pp 145-154

    [In the above example, the "spacing-widget.ps" template was used to line up the 3 amino-acid sequences] ivtools-doc/latexbuttons/chem/nitrophenol1_2.jpeg0000644000076500007650000000366607374262641023054 0ustar scottscott00000000000000GIF87aHJHH0HJ.HHHPPeΊ(0HH1H.H |1H#H 0ΊJHX,0JȜШ(0HZ,HHdU l(0HH 4ѿMnH(l}JHHXШϿ((dumHР(G/HHMD8R)U¿ s U sH1HGG ,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx~Azg@Á=LpaĉO.~<бF-cr͙ ^r4`ͤNr[ϵmuaܼ{tcuN8sĐ-سۥ')~iO?q={?/% G` G A(уbDa}1W!~iaAEaH!zH"w("_b~1N/xeh1y2wِ9581%}TI e 9yy əo9ia%A$uty.YUvi!'qu5(: "K1o}Z a H靣ihPѪv*~W{-&-)k2+M" l@|ꚒpB$- .۟~ނbtnKj֞:Dn)>髼I%\oD drύl\/1;q lb;/LmGdjɦ-(Zʭ’6qɲ:5{3;7 uX\2bSuwΪ oMM u}֑ܺw6g}y)z *)x8|#4ٕڦl덣Gc~KigbAe4^-Ӟzo{; ׼^ϳ=^ӣg4x]X}/8o~ۛھ[Ο8U? ?|_lLWH$reu] 8giXqP.,AN UµHke |6\$EaK~ň2bx8g|sbڄkMvrלXE.O}b<͌c67&N5tXD"@L!Rz IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰴d@;ivtools-doc/latexbuttons/chem/nitrophenol2_2.jpeg0000644000076500007650000000423707374262641023050 0ustar scottscott00000000000000GIF87aHJHH0HJ.HHHPPeΊ(0HH1H.H |1H#H 0ΊJHX,0JȜШ(0HZ,HHdU l(0HH 4ѿMnH(l}JHHXШϿ((dumHР(G/HHMD8R)U¿ s U sH1HGG ,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]#mʝ;@t ܽ_kÈ>8> 3n eR̹͞Cn z#K^:֑߾ u6x3){jۻm.47a߲J:9uNN0wn2|IQW؁a'5֛ 8`)Ubj'h3Bb!#GȣCv'c"RJVc!nQqOBiVj]jWrav$ ej7_iIabJ&n5gx'un''yJPV2Eࢇ*xZCBiDة|@*z*֡Ɨ\U*v>kdug+SVʔ_![F+RZTRb߰z]kX9*y"H,Xni-lII߹|,&[oܛN& q: Af1f]"Kį|_YrZ3?-cܢ&s Y|̭=BZ\;:4SS=Jg5lylel6Xcl`#,څ Q7 4xdA)ekXql$Kg/ W:{Ʒ"8g:¡7%7/-Re+:E7H_uL㎘GԪ9ocBOuRq)J_\©ft>:u#~)mio5sZ=_t#@D/N֘ h*W2nD_dS,x pp &~q wdj̈́Bwy0L OQl~8,jDD_IX$p;! 1O! h(+>(OH䢟<6BQ{5⩍DAA()uhZؚ3:Җ'ώ 27HxFcd ٻNI| s-T|_WJr \$xHYkwR.+DT>Od *e'ӥ0&S"SXjn+tf6Ln֊e޴a8Mt|4U9,3oΜ&4)v~ʼnTZNyL;Our &&(Ft2ԉz(#*$*(nt2hA JWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXj;ivtools-doc/latexbuttons/chem/P-marinus.jpeg0000644000076500007650000004042707444371251022054 0ustar scottscott00000000000000JFIFHH: Image generated by Aladdin Ghostscript (device=pnmraw) C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222}#N  !"1ATUV#2Qafq$3B68Ru%5CSbrs.!"1AQ423aq ?@P( @P( @^ ح!QR^,1 Fzrrw5={'d,K~&޺ZX@P( @P("ʚ`)F[Ŕc !AYj <O ʜ6ǓחNuECn:sޓ\NOɣ.'Ͻef.wtו[UXJ@P( @PE\Ԣny ?W7/lxm˛}%--pKGJ#1j! @{YI#)88W]\[3ej-)i {.4:+Α@ keDb4Rj9y@܌znv:P%8KA )^^q [Msg͸$7ȎK, tG&6-Z{FVp8u^sA|-] %-!O&Bl%vNAUsrͻ[9.8%Cn vs05\Ts Ε $n`Nž{S̵!-L[cLdZ^J 0C}JzuAtvzɶz,mWx>b("iXKLtr4@*#-36(y*zb\pTw7c{.[\q%I+WS߂Q"i>{5ơ+a8!{$d`j ʴ7l" ,M} hZR@IIP=A ˆ!G76$[\5)`%Jr @@ŗS\)/VðO$)ZA=Gmō-줭+ڃisA}ɬ-FDrf~_eY_mj)UtA|#ra.iR±(0@4em; j~8#"=r#k}?pԨZ&d م ~1ת:rȷiV-R[2ڲJ=@ IڮRΫrҖ8K,W[_) )U6#d[Keۉ3$_h0V%pZηǓ8oh mVW64UܑvjPY^ )ZL>:Iso)Ar{N(.xЬ{PdՎ Woj͡MIeQ V;Cpxc%lA{i")-HAZ˅R@OBh73d^n;4[d7Gz!؂$T#DbtH! FOiwV=Ruĩݨ a 8$nED5BwQLa{KaT ՃKNsA/I k޿ʼn"\ij[VA;Pvs]P҉Iy#꒕8TkKm@$v Oxl4Ɩ\22K`K@QH'ZP( @P( ۖ^\C|yKlmJFHF9K@m/(^xt1"E0IpUƃ܍E àr6/_P:#iQBE àr6/_P:#iQBE àr6/_P:v5m3,QQh$  E àr6/_P:#iQBE à濣 Ӗw0 &iT{l7m1A/ 'FG#iQBE àr6/_P:#iQBE àr6/_P:#iQBE àr6/_P:#iQBE àr6/_P:#iQBE àr6/_P:#iQBE àr6/_P:#iQBE àr6/_P:#iQBE àr6/_P:#iQBE àr6/_P:#iQBE àr6/_P:#iQBE àr6/4fan4f-$%HHaA qNMm8źj8|@$Peb\/z_V&]t #}Ax 0ڊqzicVn.SM-jBC}A,kJ3qEjf!,!IxgX)P)쏻׵Ajq!JQwAp>}Dt-ǵY!rBGuAijbK.)vSq @P( @P( @P(jY-q~Z҂h-% w) _e}\M]jBP+)J$m=h=5! fwmRUN1a=_5&>UFTw%+[-QvI?2bCŁWGڏv;* )~r )~r )~r )~r )~r )~r ~"ɝr,8hWXRr~";)˪tV^NN¬=uhz-#q!]60XBp(; )~r )~r )~r )~r )~r r%ct-{ mRC4ѕQێdN,ҘCehږ 0+kJj HbBPH :TyO8GvHpy(a=4ݍ(„QX9P6vN PYr )~r )~VJRI#U5S"3Jy8㴂K6a_ނ\tI"Lkљuҕpr2;% )~r )~r )~r )~r )~r )~r )~r )~r )~r )~r )~ФmHNIOyj仪LGn#ocvp.%$"}qAAfc$M!nmzb0l{)oQ-ۤFMЉw{.((+)Mp7Zm1sn7CqDhͲڜR0 O4)MVE)FALj˺-ܺ]!̉]~ }l i[[6K$`vh5ljدX3P܇]ܒSj}]nO 8'AVE{oU˷)Hqo!̶/c;G#fj2ۏkqC(fJs/jk8$ PHdAWnW[PҮ1߬lFQvB' 1ʹ-?ݕKoX'$$J?fs(-%j|9NGv=KlQf-4RG ՚-dy-+s 3ڒJt%Ed+1l8WxƓ!͇u[X9JWOq4ȃ:)D6'3-G֫zrD~"*Y[*P=r($">2ZYe\v[T| `AknQn6xLy2,]JqMmk~OJ-jk!F-A 1)*-zPqTkfZַq!'zU#Nւ&9?>KYiKd.S5PYIJZ#=3nȽ?]elzۊm@R{P( @P(Ɛz1szlFhdO)$h#7jS!u)R 2|Ċ#BG^/! p7 U<,s1Rz2cz4szh,"h Xz;Ckm3B?X6ex4h&s+Uʷf1nk36B FbO B[2JR@_G_|N}в @dAc2}x* >="K:KHxyZBTe% ۳:PwzY'o6''jKd$ԄPN>___>5ShR2+OAVGA'h36= .vU[ܤ׭,3*3^z~sƗ% l' 9ѬFD@CU1*-%I%T =: ^YEgPV?sT[i7nACPysu._nRe#qu JR !#A2aKq@CMVĎ l<åz$rjM SHW6 x{zuz‚ZUY{ rQAgoى/mn>k;{MI?' \'ڋ xQ_ĶKCKٜ*B#=pzPqWэY[,1%N2pA O5񶷭ͼVT䷜(A#dQ|TYEgP9fO@>__+BRQBC8De/SSo1p $$ےGB(9؟""{1rXʐKi1wJBRzcG^S3Tr#0㾦A݂? " ʔЏ\89PmTGB;ְeۏUU=v0RK62'(!B%Qe&$BJv mХ6($g$ւ}D-/s;B V܃AhV,7լ1 #rW JRmu Eno0j)I@JQNNz`tVuTȻ +[%-G*!.)Ax ݁8{u8% mťx+A ;@@A2&x\YqNʳ7tf:C. S0R q ۵';$kv="b᭣ܕ6IciA9 6MNk e#pq38[(m_6<()G@T;:L8<n푐Ֆ `=ӂ2:d7U(K\FZRyG!u)WNz` $s(J}AIA) tYRیւf6YTx.))]{QP3Adz1shz%/'vKHq*2c#( i}m1myjKh$HJ@&䦌yr e ԂC] +<>'A'`Ǝbeno`2[HPV)!u+ z]BbdTTI$I$I$I$M4fʑ&D ZJ7Xz$huin6V|c[[\Pʗ+쒠zpb\m5k |FېZ1+-نJ*bR2=AӪtNp.B'<%AoAjbDƗvhnyNt!u@RĒ6eP2B0{~ķ&R3攲<-2:.1y#JX"ÌĆˣK{9@8PHcY'`xT#%j)N@(8rBdңNc8m;,dYJ!/;.nB&s tƝIn; 6$w*H^GQ1A;8λRu؎ ,;!ŭ_qJ+'뜌‚%0Ħ\jjn/'n߼ 8NӖ+UW5qE)Ķ7%!}!1=4s !BC.:R!ЂJP:t,QRmWG.KOd;;+u5LǴ_ C[݉-3JXTJڒn2:cq4Eo%>Z۩/mܥ%ga$cu4Q0VuJ e wpK#MmDi tNG@) $⮽M4;0mi\wR[ qN␱@J*=:c&gY-n}#8Iڔ3h8ΰZJLWe< ImCbi zPv:fШR[u)O,AĄn* wAsM\~cseapo#c;ւmJN JUE%Dʘ $(a'&oT#D̗% ) wT2砲Uڻ+aJpO,rRNр;sKi%5ip$D`Ↄ‚wg(.mVuo C:A9ڜDghvjTKϬvw+jP1% ڂ-ܖiIH(N:P~Fi OFyPTܦu'@K*}%[AW^9~@,lEDP% %*? =@j%Thn6"6%݄6l; @P^ptă)%({(N  ^>hLN!]me!-q`RPGAg mL8orN)G*%JQR$I$z>QIKmԟ⨶AQQ$ISւU_eo8]Bl<J@P( #t:īc:)Ce4PJxj X쑌A#P5yb$g 4Je#[}}\RyFuR r{}٥;6Ӌ|(/o$'m9OB5=yb&Ub_NSRa#Ӽ] FW):wLgH-ͧ<TǻH[:ܸ(p%qW n$/x@PjI2q]S"2Hd#r4:rUW9ɑ6r(!'ҔpIH#_lNqnFuy #-d(+CVd' yrbmaWK$6q؋^W +;P A*VH ƒiWbcۢ匀D+.tIrcK? *#,] Y!Oi] ;oJ'ιHe[^!*G[K}mi*-SHwR(;\$jK%}m.+̎5W'=!2mV5f*C'$r[JDҞCE)!ˋl\A_ZT'J2 Ǔ8Zr#uMhIMn.DbZv(I =N7- $UMK"~LF>n Gt_咕!# N2h9¸u۪\C q"XV[ڌ(<(6CV'"!Kܜg.caATi_GևyLŷWK:"De<J-uti n ZRi1!RFvTZr/^nC7VOIINGLе1s5Ey1[Tƒ%@)'? zvUMMP#NHO d+^0 Ye*%| NCC JP:G ,}k!nf.ꐥe n#og fWHM 2eIby@LУ<4xx_9=A}P%wg#&{<2ݻkidKB YVZ+V@9! ji*ү^OHiV䆣J ҋ[VR:h&ܮ:P \N\lRQؕl) mAo,ENz0BkrKBpQQ!Iq`deQmJq]rYZTmR\J7tA% Sw)z?؊l%X!Pyy=T{6+ۃ0̋aHla%)pl A!@q፤٠64U+1`XŹJ[N!! #w):ړەpd-;ANxޒ3=Hhד}\[YnԼyҧpUvF{P 3M%`[2 RD ^ vҜU/Nm։^ͻT8ߚ Kַ:nR*jQ+K 2h)YeG*7[46S0$(ǵ(/5Gd J&NjRK\r=q砂P1q~ 7n=+})0 ZIXA 46ڊdB YݪfTEK4AH`B $ i7뚊切%2M#xqCGbs3N3cmh-Y # 3R$4ErI.$[r K70gzOPmh @P( @P( ALffDz,!MچBF?5 (x̧8Q ~Y@P( +mmބiܜ#@PyBV) W u?փDemĔ(g`r =Q" RI$I9'E@P( @P( @P( @P( @P( ivtools-doc/latexbuttons/chem/pyridine1.jpeg0000644000076500007650000000233307374262641022103 0ustar scottscott00000000000000GIF87agJHH0HJ.HHHPPmΊ(0HH1H.H |1H#H 0ΊJHX,0JȜШ(0HZ,HHdU l(0HH 4ѿMn@Hk(liJHHXШϿ((dumHР(G/HHMD=gR)U¿ s U sH1HgGG ,gH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟJԣPB]jL:Щԫ T)V^rϱb˒m[U&*۷pNmɻf;u_pDHU ,1E?fuð3d覧<25秦9x+l&pQwG )Wh#rʗW[zJv5js&ËF_R=?|EŸ?.ǜe( m 7 jVX/1H!!,!$h(,0(4hcqcWDiH&Y f*Y}N^)%Y㏥}c\>6Xi%&lp)tix|;ivtools-doc/latexbuttons/chem/pyridine2.jpeg0000644000076500007650000000251507374262641022106 0ustar scottscott00000000000000JFIF22C      g= 1 G7v!"18$%?t)JT?[U)JRW;~*R)RwdoUT+4<@]=qUjeݴxW#0"? hD0B$K%pҹqy^91Wm-3mvKn}@%$ҥ_߰_6.*x GڄB:ffH `nf@!"氛uLȼi/#P3#ޯq`K!:}i YUht f\4 ~3g/F+ h 7uI]mX@Q53R\qskƋyoY_cKmͲ>U\-?2@sX8qeuBS;-{%jJV_/ΰd:]Du?"vHV%7Ļ%əcIn@;ivܠ$$N[K?[U+*-' 7]ZWizώ3$Zи"N 8H$"Q\sOFc_޾s'~ªe^%]Z>SFbq޳VJVU)kwdoUT+Xpc۹D/1BY2gǚ .tm\A55$۰:mn.\{}vg8!A٫W-csdo u9LKquz^yD-/rʜ.j.h ]/5QmO3 k+lɛj4s$!oepJv򔳖Yvf+!霹@"JGzI5lI\']qPQH32/܈WzU쟭 r6 YGkvn4}ɫla$0S2-ق(q& Qy ]R_߰JRJ9ݓaUR)J|s'~ª)JR*vOivtools-doc/latexbuttons/chem-buttons.tgz0000644000076500007650000002634407443402732021554 0ustar scottscott00000000000000֌<chem-buttons.tar][۶3sڞJ;uu}i"!5EʼJٓ:zN!/q`0G"`6MY͗1ߎ}s|_\UEXvna)'toXuW}Ӕiz>_'cۑ.Fr w.Ɂysv3ԃ4XRM5k0cYe JM)'q5M,8泋ٴqcYeU^%ʊX\`$[߿R uY5aF}x]}V-D>O EH;kgce6Gjzt!Pm#kM*")S~FbiVSH΋= sЩLӋ'4P,?B^gcΉއz7Y)$[VކT `?^ 4<^Ƕlx:ɡh^٬%1 b@ӂ Tkʯ?2okHWa*2?T.]l+fWl5{ьT?q3rvxLa3x S~ ;sxa%+x o- ~OTq7U iTN,*t]%LT a M!JXGZkX~<[XQddyt iِ3T=z<'m]$2 {cRagZD' Ҍ=/h OU^\>@SuZ\$&d kNN[Vy"̣矔˵TsYS-ajRΤ(rUV83vMLl^;u }w1K)kҸQ˹Qi lq_ @[hlmDT4*T2Uu?2HY^;iv&;Й蚳sx™YRKs'e.dMtΛ9 /eKYRR,\| rxo%[m'iyY0{pҫ!V,c8 X"FC:Kj.F{֙(cA& eZ/QdX:KYUW=:k%HEƨ4b-su^ڲ7{yG-,w|%Z򂓥:Qfz-AfDA֠ݭ$!󕻜׼y\f H<1 kgWFy2kζHE%Ӟ/S\ȜM*eX8e0mE'.tU<~:#Iުbc8tl N7٢{JTKusG(ͰWbRW: Y+~c,_ p^J(e-!E+ѝ5柃DvR/]2kqdS 扝 lGY>d#+P-% }xNa[]Tل7n*u-4GHwvO v3ab]˙ZRNeu1Ψf^h -H]d;+{cfR^Z\ݐv #lTY65j^z3Ovyg;E(/.sk#wk ή2Z@w-iajhEHW+Q|#IvB i_TC&HdwVbZ7(Jŗә.FQD p'r&]gJN]=+jSVE7D+z1LݩUl+bm$cb HLS2LW\[yc]")wNNQNv5JeR~]&y#w7 n.T:{Ƅ q-z|g[CGtzɵ 0REf<1^٭Rm͢d\o\# 'N8mjy\W7R?NRvnW+k9dm':vR$HBRʾ@7DMqr{%}0A~;eK޶-qe[z¤;'!dj)ٷP{PVROwo{*jul; {c(cTDEhɥ"tNNfDv^^鑵h QR^OwH/tPgk;ڸ%EU: UK:+D*{{Pzȇ8kux[uxZ[}OMV8^L]DO5&m%2[8ڳȥm׃nE‶W5K߭nQ[^k،%Trw*tKnjSAN7]Y9ߨUmP*M0T>NQFkO6Yli}zB+0r8_e)z##f)4w)`Yi.tR^ # 4T󞕤 bB\})b,b (*3H҅ G.B7h#冿 (j[\>$q5r#a%F Bb0Ʈ"(B^8܍HZN ,u#caje~DuFG`BF6&pBԴ 1#>ilA#w.xA5(cퟥ?NϾN7[:Zzg/{)%:> |b$;EhRc þF8 qp+NmEb}?>} ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~?Y G <u;! ]/׋G4_u}eDu\;#ձ*cQr~ؿǠcRY-e16z59xO1gf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`P` e'7 h?@Vw%whn(0'Iv}t w茽/]7Bãx/YjL8tC0B?(X^H߀Y}L4J8Sigu >~bLoÂ9uLU3h03h0#Sh0H`8H=nwxCvCEW ^<cqD l8'FÆMV8} ɦ> *`Id =# $'h߄Wu6+ p\ѩ\x:.RYX "ԝVOq:$+ DG8ڂyUQtN<e[4Pg+/@-Ci_`"!f?<'pO{.x 5/ ?`Rs'jTN2u7Np1L I09d_9R@ K@ Wp +XςW|+4ĹtlHřځETH' ˻ݡ]-fq.HbQ`:Dd{IL֜㝶@DGϟ kReNѶZ/Ji8f"P9VYFx511%^;u }w1K)kҸs58Np lFD%}A1yO%SX#e3)əogz 9;J(%>ר{ YB 7sx!^V*9JMk}+ijo{V?L ވcguNz5ʀ%qǒqa ]h]qI%5רy:e,dL+8 KYg)JU'Cg-VRFen#K@?B;000000000000?80)vGO0tϏFWqݐ>)jGc^0ۇ3Gḻ3X 3rsYd:a0 Ba4=Tvw<^ܱc-Tv۷7Dh䉖&ӵ#L aS]yڶǼ`w؆Q28?Լa;]ȵOui;kS1odkZ1MjRD_?azh(QP;pVmoDc1Q8F6E=>A48=9N4*sm7tC7#ڕ?- :h:eӬ] AQV8t??KwFH][s}gz/^~'L?|]}?}?7~?g5_5_5_5_5_5_5_5_5_5_5_5߯ l}o*TdC/Fnda`#Pr#p=Q\gcޖ#Ǒ3SƗD 1w6±oL%RKEFwZTDDHK'^?(nfhq: -V( ਕeL3k6X!˄׵OKp6H-\Gi[ O`L=B03cib8zcDx΋D5]/0ͷ?ZPM:/N[|q'bנ#q: $wX ɝPAPT#'鱄0aB9x2m7M嬟R/r̈{3q헿{[cѽ{cpn#5Ұ>k+j-)&H:I3Ͷ{>Z}5Jks}&h wbyjZxIK+DK'm9 4nj+bDdɪy5M}:"@+#~Q+]b1xCNz:L)",ϸr=|IDICsV$.]*sZxES&rf6*Cb Pw(]X\w=ibjDzf v̮#[1ń0-S.G"] rC;1Sbb8moRqNt{7^h˫.gВdNvV#wEZҸζ(%1Ǭ9DikJD9jWYKR.ΫӢgx++ tqn7\F|eHvSQ2$j*JJ܄<>n 6htfVmyצxÕ.exvZ r8c-F7Ofɬ%:"_,^I]'쩕ŭ-Ye Cb8LkcF $:IU&|BOڟs\7=ߺx`>~u+DV1~HvB41Kqvm Mr;!"C&4N7iDMnIGHGfdb`S[~WM>>\M"2)1$̲vikOeُDivŢQq[SzK?un0Rb9IN4Ƥ=J<_商cI|e"t+ci\ cFyR)EwEޘj D. H~Ow=U<XG?}H;l;]Kާ[ajʠVt:JCQLkOMCjsφ`&EDT:8/>Z?; [fؖ қdm͙"j%9vr|>ɓ_cLde{!q!,s @kmΡX}R2P.b;"YVZ[^"w;v;fF_9;]15G˘zCޫ޾@Nf8w<*X47/StnD\IB;u,?2>,r{iܿ5''_g=cN閗g l o=˿{f$+C?8>rYJZKлjcp*q~|LT^iên(2\[\“Lc)V)9M4fS}j!. ;jEn~ޯ1{?m0yzW==8V\^݊kLLfF[o[ q/Ts#4xӎKPiz7wa./6ɭmSQE&d6`bZ4_dƛD&=QI)Ι3Id1,i/dש&H|[vҽFp}шn虠6Sf|۹3k;m^r=,Ɠi DN̲/#.mX#02vb*xzQ(Ϗ2UſΚ(-:,y~4&_giY34YcHUl=tAH{Dž߾~/j~9>ԦAS?6ܼynmUqiZVe&4$ע75o=磻DD{s^,AѝX"(t-ADvCe?p(:,BrECEL;FKVVpqKŏ:g^mUx.FFmݖOD퍩_ffF[v/wFEr( =weoi{F30\>\a%bljgv1,}qK ~~I]'徔=jqk<8&G C,񥨱F_M,UGiW*u-G|Ue=TpX/#Ո1Hg4i$;c2X|'i]\+Zbfx5ăW^s\qW7W3=y{X<~HK*U>8>RiMU):v2)l')[]e2VO֓ CR},^/>N-.RcmM%Zۚ+[coW#Ŋ|o_. Q߫[AdcM=\_'>G5ՈtR}`V[8jQ2+C5Gܱ4Dw~96{/u8>;s%;_\[0*;}mv[rFAܽݮ$Zn/zbKyx322쨼" wq ո-[nNjl^w80\`/ƌl2ѪG%Gbj5(qiHo]3Ƕq3Jwq5zXyu֩-e2=?jqX;Х:mmw뒘,XxgكKTwL%z%f-m)o r s.>4nΫkv.HֳydcAQL;9ƿ<䮮JȞlpZ_5NRe(|YEmqP;/?HL/Ʋivtools-doc/latexbuttons/chem.jpeg0000644000076500007650000000131507374262641020176 0ustar scottscott00000000000000JFIF22v CREATOR: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) CREATOR: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) C    $.' ",#(7),01444'9=82<.342 $)0 !1A"Q235CRcqrs?pӴQB[Yq)mI%1?,rsoZ7Y4=T[<_xamLmI-{xl"GLzneEYQdL(c{f^8,CDk 8|Ȕ0E$U%ud$T EI/kXÎxקb:if}$1њyFA@&SfHsZ}^L&t4ctg\?~ûµX`Hi-إ^%oLxX޲bM+hاYزBLzN kf~9f tk6Y4+vX_|4[1ϧ2$sMO?V}>Z7|:Y>,šA7Q?P?Y6O۷fcw,5a1l`X}G;&fq=Lo7߱ZZVG&=8]\bUAgLrcuSh>WbjWg%[,aot]H5eMٺzUD?ܲ g>moX sx糆K`fsdhg`LϚ٪IQWMUʸj֗#_oSŞArNh}Qfz~|aEc^@ 6`lBf9t/PM=M@\VL@M&lrN׫"0JJr/ N A;A.ARVWlS_mt6j$ރW&plV;Oe,|czʣWqw9[pEn;,,ذ ^koo8~"S9ؓ ,O3,%FJ!i+p0fuhmu0R05+rͥSS?rJ,GWrt¹"&/9kmJy*0f5? ]g|hoa'(^5:|2,)&P6it7'Ohu?gg07[_Hct=̱? bH%;aUmiYZO;롻NܠNE}ƀ+HVlgUSK!/r*۱}oUzVcHi.Z}1p+ !i ݔl+v0DԬ=}lVc(f6)~T޼YN~gX;ۏ,׋\"}vrk?B&Mydi**D8f~9)a1~iP],{Il c4ܤچ @~{Ժp0b~,?Q䃥x Mm#?"+zU}/,fw۱o%A)swHE0iȱ 9Y_t~y .aV~*I:fq4+ ,1*2ѰRSMiy(Fv//pLnw)grZX\6C$6u:ZeǿE-ߔ[Q)`ɛޅb<*y+dɾmv@y$gL`V|///_K,VtP9p؋zQN.*DŌVD/ fPe\{i"^ I6-:t1>8^Lnrq(mʭ춊5~NtqԐM<Ѧa7{{Gc,LSV2NSz^Q=SCnyidLt{\h)vӗL)qbwo|*vt=Nn;ƒ^,D? F_ӿÏU~yk9m-gٸƺ s&åzư?)Wϭ4ͼ]Hgqo-{h_,TNJ:j66peVm^2~r-Xf6~Ͽ\tb,%˿MT釧Br QHgWQr8V>`񃭨dJV;=ۍ䲂Z.4OXR2u+Z`s"HcU| J5+E4ĭ-8Jfdhl3m,Z:qhyT8_at+g`>TvA@Gy*c= +5Co``[&K@ y\ ,{v^pNJ-GYY5zj4O<4'sO? $O? $O? $O? $O? $O? $O? $O? |g;J:j=&ō !I%)W)+0z{mo)MZ֚_o >f>?KO1'" h,GDGDGDGDG߄?#?#?#H k\4sRpR'됥l*r@D-}dL*ϔ:&% c{u0!@nDޒuPA`\uN~Tzp[d *+f| H=xN˥(ɬD4_օrrr8Z H7O0u|G=4?ŠGGGGGGGGC.YՆˮZ.-K^<p'5q5PC& Ȅd&pgYF{u`J—(AW<=3?!Sz)'XOѺ9,e;Y⿎<!]' DF`DF`DF`DF`DF`DF`DF`D09ZAٝ5:4˼]5-*%^,,7G= R; *:8w*;6:*x])p+.Wg`:d0<=}T{fmE<QŻZ1 ]݄d``x0F%_׌)|0\˽1aY9[쵴Fs${W紇Ω3òZ^`[5"\_=yښQg$*dN0S?؊>{e]GaӐߒt2¨C{{I_%SK/K/K/K/K/K/K/ _g6x $RX^6| erk[v#(ce6=B5KY_te%Ljh5諛vXńhF_*X+22P'\KW`8f4mz#%X.,3Tr}p/ i2;4p\E`n^ 0/D&}ƙL \Px>wqL&0p"x/հ3POj}6 5_S{<4'eO?$O?$O?$O?$O?$O?$O?$O?|u'"aֺRƪjgo\x)%#)精;&TK  KNJ.u6e*5(b WYeQMg*/ vca: Y* zouP!k#j@ A&Ë*d꣞P˕627Zp C0kfAN_@E&%v+ejYlG@V'5q6mBЀC-z6@@ %el7YE $K!Ɔ#Y26>.G?~b{ b;D"@z!@ G D""@ D"?VUD7fkUa?y@3<Ԕ.||uմ|u=iTkdu'oM*n68 c3)^̊:BЍӂ/1Tz_-M5QH>~?Cd|F=i?0?O'?O'?O'??zi`&!6͹zwZaZ|798[TjIS M˞;Zua=6T$g |k05ԌJIڛbV?߹0K=zy2;4yI]י5_W|J=Z%%( B@!P( B@!P( B@!P( B@!{$+ʜ\@rΒ(6rsIY_?Iձ͒~9pC^ֳ!ڲLԸMru=/K K&1|hk=֯O MbԴ /h}~,6ԜO36>&T=)5owj8k#̰zEgm?C$Hɿ )r}$=1id\fnv9,&7awlelGʙKNEY ֥:W1wlAe48eBAq]}@;Mx[54ߒqFE# n'ɇ yP^ ^m-A*Vb#S~tLLtYW= #v\m:E:ɥK(¡?~@oE1CcI҂9/Q3[_d9lFܬsB8Jk ָyEW_&kf+ sjĶm,;q/?dJF]uo3֠]-ivtools-doc/latexbuttons/CVS/0000755000076500007650000000000010747654610017045 5ustar scottscott00000000000000ivtools-doc/latexbuttons/CVS/Entries0000644000076500007650000000101710747654610020400 0ustar scottscott00000000000000/chem-buttons.tgz/1.3/Tue Mar 12 13:42:50 2002// /chem.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /circ-buttons.tgz/1.2/Tue Mar 12 13:42:50 2002// /circ.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /feyn.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /feynman-buttons.tgz/1.2/Tue Mar 12 13:42:50 2002// /index.html/1.2/Tue Mar 12 13:42:50 2002// /prot-buttons.tgz/1.1/Fri Mar 15 13:10:01 2002// /templ.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /templates.tgz/1.4/Fri Jan 16 13:40:40 2004// D/chem//// D/electr//// D/feynman//// D/templates//// ivtools-doc/latexbuttons/CVS/Repository0000644000076500007650000000003110747654211021136 0ustar scottscott00000000000000ivtools-doc/latexbuttons ivtools-doc/latexbuttons/CVS/Root0000644000076500007650000000007310747654211017710 0ustar scottscott00000000000000:ext:johnston@ivtools.cvs.sourceforge.net:/cvsroot/ivtools ivtools-doc/latexbuttons/electr/0000755000076500007650000000000010747654212017666 5ustar scottscott00000000000000ivtools-doc/latexbuttons/electr/circuit-fig1.jpeg0000644000076500007650000000462707374262641023037 0ustar scottscott00000000000000GIF87a}HJHH HJ.HHHPPmΊ(0HH1H.H |1H#H 0ΊJHX, JȜϨ(0HZ,HHTU l(0HH$ѿMnHolmJHHHШϿ(TumHР@@xG/HHM@D?R|)U¿ s Ux sH1H@}xGG ,}H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JhKH0ʴӧ L իDN]ׯ3 ٳ!E˶ۈJK.AT{VچdKHy. װ;vXc+yeʐC^|wʖO3\ѰcĬmƗY-wlڨ^Ծ?VLoeŗ.L}2hسkνOӫ_mG;ݺusO 6n lqUhfv!m$h:"a x_ȗ #E2EclxA>ڵ#}(Qu!N1i$}WNY[Ru[j_Y= bDgQFn͹t☧Bx٘@R*(C— -izF\Z Ziy2xr馧yj {Ꝭtʝj⪝b򊝯VI&W,Kұ1)lҦEmAK!jmߊFɭޞn똽[Ko;3 ^pQ-`?<Iq#G^l|"7qɤr!|+#ڲ/ sʞl:Grρ 4~֬t!X-):=2K=5Sl5U(3x[3>[cl2=]u {]mqŁV\ݎHox[ec71r-,z\\'v8 5}bK]PU / S<'21XQ[ob/1PoBKoO~Lα_d?W/!/L旳Hs,kh5_TS ,Njߝrnd1Ӷ%~TMO}s`MuFqɧ&|\$.D&/WI쌸Q1cH\ {EI@f#F0|@tB :.c.Ļq(9,nD3'y mgp5 ܡ LjA.PJ #Fg5~ˣݔ3bRpQᄮsd|G75*4)0u9|+Yʒo4ά+e`w$IckjMLʚ8 8UJf#)[o%LI<O[ ;Q2|ڄ@? 3(LzN*tP΄>4*hN4ωޯhd>* K4)'PI|EW'Øz;mS1Z/5.op#lgR%TAoT冩Tw/NUtk+/֞R &-+2*RƫRv j.b퓯k^YuZD* eXti!UvutEdXe}6{UV<̜=5Iڰ^poՂ$DD*֬jJ]ڰj{VvDŃKZإ׆bz .]y3:Mz \w|Kͯ~LN;( ;ivtools-doc/latexbuttons/electr/circuit-fig2.jpeg0000644000076500007650000000511307374262641023027 0ustar scottscott00000000000000GIF87a HJ.HHHPPmΊ(0HH1H.H |1H#H 0ΊJHX, JȜϨ(0HZ,HHTU l(0HH$ѿMnHlJHHHШϿ(TumHР``xG/HHM`DDR|)U¿ s Ux sH1H`xGG , H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪZ`۷pK]swe޾ wÈN̸Ŏ#K yf+c̙ΠCK,ӨS^ͺװc˞=4۸/ͻw?'0s} 8uM3_~;=kN*xĹ_/7{+=Sx3/n_B=TFD_N݃4`~iנ@nw`^U! 2'!u!X([}r.a&BY6>ʈOaw!?>}D`T5eXue\e`vedb5fhNu&T1 k9o'tYgw2^bJ U^ 0ez*T~eHi騤JP2:P@fp+ wp :[kb˪r*+kR6:uZZ[9j;U*ZR[#U$2 EqsθpF̱P"ogCKAߘ7#/3#C?Scߗr{_ohq揇N#<_T?L; U2@w-Ph |I fɂ"A`Sdڵd* U(H+DI I "3|a mXh<|zڏB*4D !ELtDѨRReư  u0z5J9qDg˸']NA=<(U# M1j҄0DB$)Ә0Qc|$V$6g:\(H-/q r"+%I:LJ[|%F6I[)/̑ ;1VL,:P4̐L3G0 kyfqޒ&:u*<9]³q}-o?{KZslۏ*PmLшn(CƊ"dT1&=*ϋ2'B w@Uq mJgX() FS):S<]'PY..TKMajo#$ojGUjLeQgU5ɍcҴP RZɔT>`JXsNub%j+ Wy缠IjJAA8`5e+jk.k^γ=%j٩վ-)lc[Ӷ-SiDBmf+\,r -*q\7szf5wO݁4yWW^W4 jwA/h a!J0:»{tyaX5?~%㉣FF8M!~qdb,иH\P/(LJ1#!Ocү[d#N |>2.{63,洐ZB7άf^7YL󝵒g=;MBЈNF; ;ivtools-doc/latexbuttons/electr/comdraw2.jpeg0000644000076500007650000001772607374262641022273 0ustar scottscott00000000000000GIF87al@UUUqqq HJ.HHHPLaΊ (0HH 1H.H  |1H#H 0Ί JHؓX,JȜϨ(0HZ,HHHU \؜(0HHѿMn@H` \^JHH<ШϿ( HumH Р" "lG/HHM@.@RpӼ)U¿ s Ul sH1Hl@lGxG ,l@H*\ȰÇ#JHŋ3jȱǏ Chɓ(S\ɲ˗0cʜI͛8sɳϟ@ JN(]ʴӧPJJիXjʵׯ`ÊKٳhӪ:ڷpʝKݻxݻm| LÈ+fvǐ#KL\R@w)hYKO&Y-k:6TRm{MwTݰ>{ڭe[^_kjwÕn\f ^⅋.?},jsOvvũ|9捧]oU}mUF yVA~WI!Z Eawm יYb܋Awox݌;x3B:gj}zEz=ʨߕee慘@h)frw$R*fb흦w9I݈[oy(2~^j)i*RZ)F詄#ZF恭6z)h9o~VKZGڠɮ۲JJΙ;fh\A-އ(k(kjުKc [ṉ繆K2$룣BK'*i)JJ J+2*\+X?8-Fqۛ+pY r|۬|OJl #UckUK&aK촿mb @7*LĜ-O fj6o=1%u]awJj>m+[njnnzϟ5vBg?*;ž"s|^;Ø'ͻ"+4ҩ,kz{B|IW;<#/|ї sb)+; p~t_Cp4y_xʄ 5u >Ƃ̠Rz1#L3&L Wv. gH3ȡw@ H"HL&:PH*ZXbG.z` H2h6pH: 9x̣> IBL"F:D @JZ̤&7Nv8(GIRr<*WT򕰌,gIZ̥.w^ 0KLғL2IPҕÄ&1IjZ̦6nҘ 8YIgRD7v< Nr4.K~ @JЂ޲LBPneDI:ͨF7JM<`$MAВ(DiJu|)G9ӚS2}&EsNV4PÉ҃~d)*;ҁԦ(TM(ՠ,-դnUORhT*UusSj׼jH=eLKF}U_JwcזRj89I5b%YJ=k`V",le[|Mku;[bv N1{[ֵumyk6@f*9Mz%U}㾕oe,]ּk]y'V+Z zg)RzyQ*3D0&L'ӜLjw^2U0VNִ{9 bM~_[LZƷs61#(CyXFX+9.YpmI{/|g=MTtU7fs,g yV6g͏w6Ɔxq8/s(͇Nubm{|XA3w*ȈxyXW"2x8x7ቦx~Xʷ1G狓xvҊ،CWZ<ČXW~hPؘ8}G䘎)aUFX%ŎA䏇y'aِ96 INقS?`Y5dA&ْ0>-X,89^0I4<9@Oq9949Dٔ'4'2@BXIJRTXe{f/W)CC?\!sْu|ٗ%(I d٘: 9E I{`}əzᙇ (yAٚwIIɑY(ٔQiIagIdi9x#iٝuqYIy͘yiȎԃ=1ɟJ2^AIhK$2ʠ蠫s9s;ZQi-Mj7}s$mṞ'zy-EC#&kH79ȣ4A*H39PB>I8 rSJyhAYnȥ!_ d(eejZ"kʦO"!q*EHb&w;a}0f1Z + Z᛿ɜ ɩjʩ᩟ʃ E! Ycڃ*@ZzA**Gȫ1ĪȚ'2h^Z5gyںzحѣV9AZ6R:[H\&S)ʫQ4*J8$Hyzr㯬Æ+J[F jv%*ѷ''ɧH.$Ҳ3|0(2;Zs#8볹,%CKgRI)P;R[T[KzuѳZ;jј_뀡*ehk˭ۇDAoYt[zz;|~ʵ੶ |LK[۸뷸˅4 6i~r銸*;kz[6?D&O@/\)3c?K/k_+4Kx:r/6ڣhC׋v536ފ+ K 8-R={8K3=v {Wȓc u[)\FwCLt: [`R ¡ ñzI4|w2l/kb;8owmCLmgGIRwr+= śhqV sX\UŃK`\tbܿeg,d4Pnbp̼m<W)Ǔ-7z||pRÂ<ǻ +Cs\K^x܏\2{,4؜hɈL1}lPԌJmՄO\ SSaxH\WծZj]oU3[=WUgqx]L\G{}}q=؀m*׊$؏]qͨ]uiEJٞl}*ࡃ~^!.ҝ.~-[ ~82+26n]T=XA߾-F~-E k\µZ`޺b>gen 3rw }[q}E"v.W}Ћc荍+(\2{\]~图5.꣎·9=(^rsꮾQdݿ nUN0>=D.EM.NR><^P^t~~CnX^nNa>!S6 } NG nOOl> &(*t42?/O7O4}B_=~A_=.EP/۞?WYG½LG/eNObdߴ3 Ct_~zRr}G~}g{}:Ot*!bݳ-}1_D?/?V?ƹU@MfE_/R?N)m)`Oo?Og3>?=q@@ DPB >QD-^ĘQF`H%M4 Jl9R%J5 N=}TPERM/RfԨP^S'R]~VXdbE%թ2:ֲuśW^EKqۤWbƍ?lRLiȝ=Zɚk%tMΣ][ِm>zn޽}XpͺG\gĝ5\tտ6qNݽv&G^=ݟ__ݓO_~.$9 dARj 'B /0C 7Ԑ?1D@ DOD1EWdE_JDg!_1GwT1G H#D2I%dI&= 2J)?D02K-ӫ۰2L13M5{+\3N9m8P ?8Ol;OC} P)OB}D4RIRt%=-B'Ӱ*m0LMCSSONF͔RQ5V@0V{UV]we֓nMy%؆|MK,WcYD}Zk-HZRl%V[V.gEPqSK\sM7NuwnU_%WSoPzFx΁*YxxLz#8uD܌?RU-7yMfDSjgf0Bo9g+fG&ăFzfiN:jtjȞak:F7m)fӆ[6q}*{m3PfbG|Sdm!\ű3@WkrR=&s>W=6P=hv=G'K^x]Yq_>ow>{6>`?}ȧr;^}/C~Vӯ落} K%HL62 fP}X=(>̄'DaG9ͅ. W֐h15Ї*̡@8-шcsItYD'đXE ^"qbo E;e?&! &E;"r4Ala,ALf2t a'=9P^DTJVR\PIj%9K2#\J )K^ j M&s]eX2d6{;6ͬf8f3f>whNkjg@7JvMyy>|*OX{;{ ҘVϤ7 dK~h~O*]ꕼOi]k[)>8:Q_g;ivtools-doc/latexbuttons/electr/CVS/0000755000076500007650000000000010747654212020321 5ustar scottscott00000000000000ivtools-doc/latexbuttons/electr/CVS/Entries0000644000076500007650000000031710747654212021656 0ustar scottscott00000000000000/circuit-fig1.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /circuit-fig2.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /comdraw2.jpeg/1.1.1.1/Tue Nov 13 18:25:37 2001// /index.html/1.1.1.1/Tue Nov 13 18:25:37 2001// D ivtools-doc/latexbuttons/electr/CVS/Repository0000644000076500007650000000004010747654212022415 0ustar scottscott00000000000000ivtools-doc/latexbuttons/electr ivtools-doc/latexbuttons/electr/CVS/Root0000644000076500007650000000007310747654212021167 0ustar scottscott00000000000000:ext:johnston@ivtools.cvs.sourceforge.net:/cvsroot/ivtools ivtools-doc/latexbuttons/electr/index.html0000644000076500007650000000542207374262641021671 0ustar scottscott00000000000000 Electronics with IVtools: Building complex electrical circuits with a basic widget set and comdraw

    ivtools Circ-widgets

    ivtools Circ-widgets is a set of electrical building blocks such as resistors, inductors, capacitors, and/or, nan/nor gates, etc for building both analog and digital electrical circuits.

    The symbols can be lined up with dashed lines as in the chemical example (see Chem-widgets). To draw in the wire, simply use 2 dashed colored lines, and follow as closely with a multi- segment line.

    LaTeX: To include the graphic in a LaTeX document, simply export it as encapsulated PostScript (EPS) by choosing File::Export Graphic. Click on "EPS", then click on "Export". Then insert the following before the \begin{document} line in your LaTeX document:

    \input psfig.sty

    To display the graphic, insert the following in the body of your LaTeX code:

    \begin{figure}[htbp]
    \psfig{file=file.ps,width=6in,height=3in} % see Kenneth Shultis, pp. 100-103
    \end{figure}

    Where file.ps is the name of your graphic; there cannot be any extraneous spaces inside the braces on the \psfig line. See Ken Shultis' book "LaTeX NOTES: Practical Tips for Preparing Technical Documents", ISBN: 0-13-120973-6

    The IVtools custom toolbar allows one to load custom toolbar configurations for different typesetting projects. Instead of loading all of the possible electrical widgets, and believe me there are alot, only load the ones required for the project at hand, or the ones you find most useful. One could even have 2 toolbars: one analog and one digital. To build a custom toolbar, write a toolbar script similar to this:

    addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Electrical-toolbar/widgets/meter.idraw" :popen) addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Electrical-toolbar/widgets/resistor.idraw" :popen) addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Electrical-toolbar/widgets/inductor.idraw" :popen) addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/Electrical-toolbar/widgets/switch.idraw" :popen)

    NOTE: To be as flexible as possible I deliberately left the letter out of the meter widget. To get an ammeter, click on the meter icon, do Structure::Ungroup, and then modify it by adding an "A", and then do Structure::Group to regroup the new widget. You can now stick the ammeter in the diagram where desired. The same procedure is used to create a galvanometer and voltmeter :-) .

    Below is a screendump of IVtools with electrical widgets loaded.

    up to LaTeX toolbutton page ivtools-doc/latexbuttons/feyn.jpeg0000644000076500007650000000153307374262641020225 0ustar scottscott00000000000000JFIF22< CREATOR: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) C    $.' ",#(7),01444'9=82<.342 $G1!1Q7"Aa2BRUbq?M5s[03$TSMx׹Umj/V\.)IaS&z3(bpH_w E{ܭyҨR@:Z6#fl#d}mqpO TRޫt|p3ךx~J^*`v\}BᛥAr4P<󅍃X Aj@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AVqq, Р_SoSL<#ɮZPEq-[؉ F=^u:Pq_gخxÖsV2;}]ĝ+\Wu{1fW+5?7A=PNѥ_B*6*5h?ik {ڿ G&.Ql͙޴aM@pn$~f _3 %U1 }Xx-T;N^6{z x9e6y'/:c`nM ,Q 6-{6B>!}\x)+$,.t ^e{̵W tLd"6 !H'w ?_^ `kߒvh#xsLF^f}PA9yx!ǔ!v6 Bi[)_ O6\{4<OJA${ wOt*D`rT0A꯳/2IZ潡!#`BkN.eQc0l}#loX<$^K{ \ !cBna#̕S!,= J$? 2WM~zPIѠ'iAd26w4;{ϩq%N&ϑ+r$N'@ ~׷m?70h3dxӣx:s;9P)+ ;TVW J)?S y~˟zOfXy99>@#:`iP[p߲V{LlObǺ v+~a\kn;6[+ԅGvH+Rr̅9vqyz#.|dcCNCLBV \ĕIuJ,I{HNXy6M╍|oik|AAVLB!F5 "Ǚ+~ve-;2W>7+a7JQmnIO@Mb*ϥk4d=m{g1TepgVk{r=Њ hSGWyĵ}*O+Z߅UFDx؀PEpBĵ,b2R1O<7[op€cJS\ذ̣q2OIsMhsPsdl_mOɸtϤKmM@@@@@@@@@@@@@@@@@@@@@@@@@@@@AW;va"}A*zs,{%F潎sN ?cR:,u,gP~o sZ9hs\4A ݅YIy+7^Tr~cqa҂Ŗ7FWGs)%z׽4H'ՂHjUW844f@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AXV)3+VnF$G< LfJ_[#M$a#GG#5aW33skM8zh*vx暾W3EMzMs3nmēJivtools-doc/latexbuttons/feynman/feynman-fig2.jpeg0000644000076500007650000002473607374262641023215 0ustar scottscott00000000000000JFIFHH: Image generated by Aladdin Ghostscript (device=pnmraw) C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222V$F !1AQ"2aq#RUb36BTrt$SC%4Dc)R!1QSaA2CqB ?-np)J2Trv@P( @P( @P( @P( @P( @P( @P( @P( A_і!ʞm4in(%#[$ޯ <2o~O}GW_/WHj1BۜUs9VӘozzO gZթw8KZJR %Dfja}˂q,~97K|7yRagC%'x&>֧O՜x[?R,-K,\b:꽔!janqc͞+د):iS 'XWBTRpAY:Ny5 ~lw U{vsafr-(jzwO.Yx\!Iic̎mkmԨ'Aڪgf9eʃ}OW_/NETLK(Usf9W_k-(jzwO.YxC {qgvnm>?O}mw}OW_/ˌKc:HBUW dݥ˃0喞RO{"nfE+.q䤏]Leia-eM.l1cYF[;ʋ>+c:y*85ϧq[] hyGSúyt[Vo-Fm%d%)Lz3Y50q8˖ZyI?US3ג<[skSkm<-ko%.1u^TOY50ics81N{lW̋FOJT; ]08Ly%{nj48Ft6T5Dfa=ǃr,tH8\-ŝRٞ9{JNsjad*hJUu2:}IVo4SEBT"L :[xwstcfr-(jzwO.Yx\!Iic̎mkmԨ'Aڪgf9eʃ}OW_/NETLK(Usf9W_k-(jzwO.Yx^nem)'U,8g\ͯp/erЗR$dQw$oY>\kRho7D6JI$49̞h|v|'>jC{jQ(i.P\ rϥuu;jͶޡ35RS2 m3]k*tV"̻fN.G ' NYu} QCn'I MN9b"";@,WW>i !dwRAE% m[^\VmGIJɞXͥx!AHet! mu3kka-ԣԔi&rm-Wg^U_ ۚqd! ]cu+ ̤oM.yMF81`.9n:RBڢ}S96G;ٯ{y*|IG>RIyewa[v'p7_ ziQ =)>ϺZMRi<<$oNYu,%' msa#~ rϥuu;al6!#7<v7@,WWSgkG1O>[o;s~8fpk-v,NYuSRt^'?%m3]` _2U?s?,WWSl[oȳ_-Ʌs5$^7dCȍL)wgk9gҺ7isBRA,8?1caGB)usWaUƐeIJsivx!AIat!Sh۩[^;.+RmJRA4S96:M ˄vS7Nq6ͭX+p:ms^,)-q WS96O‹^'_'[)%(m6< ;BEZI\Zy(WGZm5sZwul;쫗&3re]t?zi$<>7@,WWSfZlАz hY|7@,WWSfZJ OTmsa#~ rϥuu;aeT'-̼N"%L)ņeuHBIM9gҺ˒ݳ/+LUIi@q%@r8h|vGmOqqt$Jw_,^-WV84M͔ $[Dy]\U&K.SZT$@AS}+|N)<<$oNYul4Ɛ; Sycvx"J@B6}V.+S6椃Md,fҼLf2T: 6ٵɾ]i9AF<6 q8$씌DBjg&=\]v>iuH+Q {)pTk;OzAo2u?hMLZwEgkYǎɎ;@hG=i$YZKeTD}xH߳]]N*t`Vnі!1`_ ٞ/ [aZPQւ.. %$\/6@1䄌%#dJV%C AX|.ʢ"@SSM@P(8|Mu,xvpw2; ^AeFڃRn,nj=ԢI&@ոݭ Mh;8c{4-&]zl(I|dynp%T@q,7 fe鍩ْpAŠOe)=cp1#(f3 R(93wa]SAQ0}qƂ>w(i,"APz{(: AUʞ$r[l q$JNp9JG =AjP(*ML\;H'd?',:斕B":A└$D% dppj r-*n4;`N琵P(;O / k. t ҅y'[( RrgJQKS:ܞw&V-sWdx]Dfa>sEG`P(*T.[0#HZUcR;PZ @_Jp;q%<<;r Bl%%jAؠP(+͙ٻ[" ^+mDvR JsbhrTT"Abv@PU:|F g9BVyޤ{Zh _ەk`2U5DZpV$(fӭii[n$) IP;(3P(0ueo:T$ 4i9wR\i`# +#,Y R0uBQ۱nUS!1l?S`( 7޴pdR<`h>UZ1Ace·40#+OrNI=ɠP(A 𢟳O’舎}`W@$S)( Qx^!÷0) 1G4U {՞VC-!6) P(;t{UZ5GҚpwA[ؑjhB$2*,4 z}iT(z.GߖIYc΂@P(9KivduKS)~ F$wχ5mr$eMc9,RJA˵^ mѶhR<2՞jAsR-+C @P(*W1Į-W"W'Q|d-t sn\ pe7K$X跏8O40۠GxJFBzA=App_ Z@S֧G#C7|'jP(*FOG ERj>6~)|:A@ѼZؽYd[*II{ ߝ}^--LH 8]OXywh WQ-ZeuY_gcN[wE@P(+SYL;ձֵ8FCJqPu{l{'C - y؎v"jA:lkly,aWD Aሒ?3,w!G|IR<Վ:@q+nnQx3jq1[SNTbsz+Mړ 8u!hZBFA"Jkz|[x BVPJ$< [$"]#җA'!=~ AܠP( $kE<$$SHķoJ\QfGV7q_Q':Ad3cE- #IZwRϽJ%GMF[*W(, @Pi]Q/V BB@*J@A pq"%:#`s dduA(f<ãbm~AuHgs6Xqg #BbEȒfe3)x@GLC@P( m <<ˁXVptRN LkEqG.Q!~^9w=n^7Gd@B9p-dJW=(:KkWeǟy $N>jQPt AŽXUpGACRRIZ ?]6##z &TXgGu :GXP 13[F$Gp"mm}ca 4>ʼXm{a2B@>=ϼ٠P( bMf"KB/ <)Y$f63\k!, $)PxxmbtX OB?A6{K38,8͡(O/HAւ@P( QASUSxV-J1v[ysfoklP>'YN*qI>].#,CZ'{qA.E!>µŀ/X#VN/Gv@P( y" ?k)z3-ںA]J0Cn7&jx3#C`~¼ºMw:%J~L '$j3ADɰYyg 2;c)KJ)$z 5psLT͆ BFs~s$$A۠PW/ers.vvb+r(H[Kx(IQ‚UPjB] .1Vi ]Ք!M 1 v5]}͸uA)Cr4g9(7e:L[I=>=8 }یule>פ!E(%_&Nz9˅ <ӔʎR n(5m [qDq҃eZןƃ̘D`*3J}!OРg*(2vZ^EVCoZHP=/m!uNryqquOxWzzXm|czYqG"8^-% * ΌwՃ$'ao٘W2R.;#TNdW8];gȠP( @P( @P( @P( 6m]Ԙn8yIanc+qMU.ָ\6#^YJRV;gʃj$En\ybL#(.XF JRH`oM:iegMcEޥ6uG V"zOy\f:kӫN{ϺhE^:mBu%յ=T{zc;Bn)Jp &v2 )JJS@'lP@'-GtRQ2$9Ddwڂ:j&KAc )-te!CV {,Oł`gb(Zpe(QR69FW4nDpkؐ]9Pƅ (½d=0Ҷ\.o%%ӥ(d08*u=sl ,-lPQ}Y:om;r]ɘż.":(#e$4pB`t*X*#M+֠Z\ɧN Q6.{{Qf2a RZҴ¤iPh-=męEi˄ uN% dd9ݲsAĉҢ\#Zy x(MAzS1רImǧۗvn~L^^mi!)ٲ2rTTI4૊Qz'Ѥk[βiU:t` X[#Li>"kxu[:N\ԣ%'*I/ ~{n <B6[-ObwuhKv,Z%΅)%o:'N#$cʃV×{xj޴ڬ[V!jҭ2r;j X8e* =Zk iաz I:}Ui5!Y,ExIvjI}e6,%J) 9ߥQ) ۑފC%-+Ii -#Nያ1!nxb rdgV;d7k\E )iж$Pq'ܚ Yy}Rir% "7=-Yƒ'^13g` D^,v֭J]!xtt.02RA*=-W|lRc"90&*Cq' u$Pr,9t7i=evC!ū2gNsq S][ CӸh2t%a(jA-oLU#H$8a.kNrAg8ή88#Fv-< K`K)^%]!%Y7XkdT!!*d0!!ZTZ g[gA~&{QZr12qSG4(Nwl|W|3VKVeKV?!aU'* V` mAo[cy{FmjBBuyh7h @P( @P( @P( @P( 3\U3D86ĵuydUgՕc匤*;~>K*ڜRН%KF*Nz!:`ę )R ]i+ k:Wm:#FPlM] wT=Si[Tdj d}ey;'ʑ TUPeZ0QJ-w-cMYK6X 8yJ^Fs `^"ݶ}G؞Zy SMA`OtՌeR.&H^D1% l)VV~MsAv9mh: ЫkZ0d3n7U=6:䛂!8PKIAd9$\:H888==P( @P( @P( @P( @P( @P( @P( @Pi".)eSӌc^3{'ThCS P0> (5#la֘ (j2F A;V,B\&n"ka $!Z*qN|h5D)N4ZdiSc8A#'n cY퐦?2%#~yJV( E_fG-^ccŵ8IQ.Ӎ#`1D@M2ᑗqh0o-[[Q4@ OJ~NX5EQʏRTu&;-N(6(J8I$K@P( @P( @P( @P( @P( @P( @P(?ivtools-doc/latexbuttons/feynman/feynman-fig3.jpeg0000644000076500007650000001257007374262641023207 0ustar scottscott00000000000000JFIFHH: Image generated by Aladdin Ghostscript (device=pnmraw) C    $.' ",#(7),01444'9=82<.342 s ; !1A"2Qa#3BRSqr$5CTU?QplW26 ܞ 9JR)JR)JR)JRC&<8n-0Ҋ$A)U@5K7C}ܲaO+ 5un1%epwKItFAl+ {eҤ 51ǪOl)JR)JR)JR)ɪc=$9kL42JUpP8-6GMxR&0fa-! 8JR8Э5un1%epwKItFA⠙ Xɋf>{518HMo2\iąh9 I")JR)JR)JRy-CM6j J@z_S*"h[u ͒|_=;  QmCL6)HBRoRֹK*?8SU;5J upl0UJl|>M})JR)JR)JT4xlvYm[p<~I9&JRB֞ 9/FSN:{ TS_xY5tC)cG Z)JR)JR)JRd1גŵQDH$*i:k–>oqRoGX,Г/;yHS)JRoHiոĖWŖñ-'_j76oJ0_Oi? R)JR)JRC&<8n-0Ҋ$A)U@5K7CQmCL6)HBR)JRoHiոĖWŖñ-'hwP ﶽ 6`dQuc/JD; qyê1HeV d2N 9@?-ւ)SHdde$ʈߑk~46":+% H娓ddrGԒG|.کJ㾗̭R20znNDG=kE[XBsԎw A   +UvUȰ\$JrJXpK@Tj^z|C8Ӆ㼝0 < A.),%Dq!pw1a0 4m!m Rl)JR)TOhv{E-[HZwR9mJ3>iCKzY .DH_e)HH$~\j{S+b\ນP'? > 5ߴ 8"Mb$풅kQmj7&Ĺ(a23xQ%KP*RifgoyJ@t 'm`%cJ#TZ 15Dضt}Nz`- c8"5^qdǶ7 JsJ$̈Y-Bq I# T6c-K=܈YVn[(g9q7,9BdnqԒ*JФgJUtTcv۔]KkJ_;Y +EKԩ yIN:8Lk{l'o(9C(_KʀR?*U$#Fߦ?'sv rI('BVPVqVtCrBXq)Nzoaj; Z@BU;KNmȏr d2@IV:OI5ZACT=+>5!;VC:SM|{k jU^rfjQ!`m ۃx_n)JR)Uӥj)Yרּe',~c- 00#2G)^(@8fxXܐpr2:5+%+N$(}{JIJR0AP`iX m!(HJG@ ʕPgjBrrp1$fdWHl8Sn!])$`UJ:2k6?eya}ӕ2+%g8&JR)JN+QNzg}lDe[.)>Yd1mY 1m?5JR)JR+Az")Z&q96gPN I=+暃Z)r]b8*ҲIax9y79 j [Ź#8?2*xZR`뭰y6T$'_?o/X!dZ3^l(L!̧kmpyVp֞d.5KEA`gY$n GR.y1mhv%۔ZK Yt $dy6wia:a r1Ԕ!ũ@ /nmqaMMCpȘTTKa{Zc+8Jڦt*+ol[RYD cyT(]$GsLI+$d`[4˥pc2?fν"%wPq%nn S,m;4uMEuueRK cOx@{\K - a4)%KPPF=O]"LmbJ^aI8A80HmNjڂ hەs ^KA^M!))ywNȚtzܫu1aJ-/)E*SRBA8dUT^G8cJCҖ'aS# [TvIH㏫%Lӿh!q#Tq-J|D '*έpeaAau ? %ey!Jqk R3E-4rCbC:VTq/$c". niXpCLy/JZv!hl;N7'j=.scBrDGZe9JJ=빉pn9n4XX^R$*2+~9V@ mjEmEM*׺hbzCox88 Ծry-A J(qB?V~Jp~1^𥶆Ziiz"҅TB%8QƾE^a}wfnJIRTJO\F>zhZض+S&R S)sO8WB# 5)J%o7h"gnc۴Lwz&:׻d?\ J,~{bl[I%q 2-n) !I`(du潕n-okbD7JZ\i k~R{Q**D3=h1eNŶJR\V缁^H[eb||GGLJo¢2?*}uS*ۡ,+sFC sW;U}bZza YS4\eG*OTFqjZ㴥,JQ@$yCZdZ-ۢ> .P2BU<9OiC%Bi+ P@ kblpz ;%חKV̾Nf7;Tm$7)9O^͹e+O}L4* ϋy |;όԘ'k:B6]r][Vp'xB|$JUbtZs{;b#*pyI'i; qEi--EƂ8RrBFDz\FPŦlWG-!o2RډRSQrt|bFRV#)>ڋF@# tϕlқXmr>+q;FquQ} %^D]<$6I灀UMr=o˾M{v1o0By1RVSPnF窼jO6TaFHQiEPcW';=3v oPǘeצHR)YHRV6cq7o1;ZeG^#"TƓ-.rV, y24rcHF\-h5b  Npҷvl^}gT}V3"DiR ;8Rŀ K͈l6>mpdpmjqUCiqRܶܓ)2zC qH8 $xZW\a=c 8Ӄ)RO`B'FMfv},7orTzadܩUˣWl=3X L#+ &l(L!̧kmpyR)JR)JR)JRaFz~3(qRT6Nͦ^XnqtLY R)JR)JR)JR)JV\ac 8ӉThgivtools-doc/latexbuttons/feynman/feynman-fig4.jpeg0000644000076500007650000002250107374262641023203 0ustar scottscott00000000000000JFIFHH: Image generated by Aladdin Ghostscript (device=pnmraw) C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222sB !1A"Qa2qb#BR3r45DSf.!1"AQaq2Rc ? ~nJa 9bp  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AcwftbFf9S'Z,2x`dZosV;k{GoխP] ꜥX\?dj|l1mґ4t8m|>*:w^0ƗI$IA1W+Rֵ[uJIT\HGyvCyit3GIG%fWDakp ZQ b`kbj6f<< ƱVZ9&6g8w@T>mp&J`ݝ}>6h#ޥ_%B+q+،# F#~>s11m/md7ý * W1qK#Y+8ϑr@AK4qE]t:!WK 뵱grfZ%6J8F[܂g`=% @4􍼕iǁf"[n~NAߗ|Eg,]֊ƣywQCX߽a+lnwkZA T ԋ5fGqvdEٯwT:wCG !2xNr=X|G˘ޟ?*l۹U´}oit - :s!~'zXe{ ҹa2;"4e1JI,d|;-bqav\鞫O#Yb_ܷjClCLWwi&;ii6sVrي=  cqktGAA|ho߁d=lImrMd}'XI$+ ۙŻn 8kA@@@@@@@@@@@@@@@@@@@@@@@@@AKY[XΓ`y= f{-A;r9(VxxdL h?ֽ#DBUզڵ[04 v@@@@@@AYL:Yjg@= ?!bu^VKF#`)ٙ+Nf^sZH۞tƍo@ZSqcrZw<4 o`s$#>}?#S+B+gdd Awd!kF{F3FPiPVezw9odD5%0}Cm\^1ǻA9E謯c}څ~Gpւ'{B$3Ȏ~i] {o/.[c"Tծð?NvAFִl-zlg. CԯB+6gw\5vH8;X+eRnb@r\sIw [Rgb]/۳dL^9`kt\FA%*3o.PnK-!sh v[Z$l=a#`?SelѭZ4F_6#opƂ'C1x?>r}=Z 3~y/M\|/l3mٯinG kVNkvdnG kF`)¿Ǚt6j$1׈%:!ޣtPعb+"RZ&hوypsvZ\IAA4qk3Xz;"ĔrdG=Y*M}hWN#Xӭ1c=}Ts?Yqyo?N='tkX Kwy lq2wk?U1m*bmq ?InGhۜTiAÇلX؏H8d af)=[-0Z{ pHAVj>UTvOo|۝{= a⣦_<ΖisJI?'Z{X2xkC-A; x q d7}w_t^DNsCK@k aV7 ОZZ$ g`yԱ؍+ײ嵣L[.qX99 !. ;kx(*Ln Zg_k jnv.fFn.ss{A iilFzw^1(Gx2L:ذڷQҙ'}%{;xq$ z5:Oot"f?61iݟR|C8{-i#H/9d=kvAC'C0ًm!%I7G<+|F@|z[q-pRѲt <("flK#4%{},x>5Z$`\uz8 ww7-7Pt4ΌQ OZwhiՊhGlks$x,24kx Ȥeɩf4zNqiA4r^fb1$1xsHA`*t9־lC'%k擿:'`𶠻c3|24F} -2FN2]1n=+rF$3>LwyОx%Ņ{dݛ:s pvN9ӁWxh6]hP uㆬ,֏d~_%Z,f")q##Q[vMoq.hh>lubFř,?kZP|w> uU܄qޅ\щ560kAקvIk%(1pN}|MJ|h({ߨ%" oyukQtG:(+:{4>97Я#c205İw9և@;a*ǐ lf2<V/{cegyv`Zڴj3Ҹv `HyדzԱ#v;M%s'2踃tOh"P| ;6Fp!},eVӯRNUll />zR٭/Ǫc9H!k~AX煒湧`!OOcҿ!d4ES?栦_~H[0gHGU߳~>9Ud>FI6+LA==2ݣ%j|U?n6;ҮQ>yj71ezWOHKO]kp? b ڂ>|>O=f:Fԛkb?vٿtV@@@@@@@@A)r̆ 2K#΃(3,cY'YJbqnZ#(cj#!dMgƆ$n Fe_~Pu>7q^<@ Y6y|H- >1FG珳F\7Vm:fR?2& P\^cilpz@@@@AWl"qK71ێ7kqY Y(}j6ڋ C ?Xk=5rH{tAelFF k kd,%+2h!deZ:X_6:k17>p-%8(jy-k0\@ zRn#N߈ ,,Ni /V@p؃J1oMF եܰ2fHǍ(%=qA凪p"ߩ˵q$v5F61.<[=̵2-eNG~cPU,1<hie+ 8'BZFB (9OjV'#baqZ7=I4Q>&I+]\ ݢ\u _QX8:ܮ>o4 pk=ivxc>@U\1=;<1kX-t08I;\񯿄pϕ-hq= 6v$=;*ǚC%MI:tpq$Ā՚9mkn0Ԭ\kCHh' Uf&u&-cȐ4drIc6βKA[>old6v9~߲ QC[9ZJ )VV %i2LFƉ=Un<>f+F2,4Z۾yTf5GJ8.W} G3?j6=h=Ph:8|ndqz5P2;p& ,R+ q #R("c3;\KFGnA-Ԗ`fzVWHטWs;Ll`7OeΥZX7) Z$3]Ŏ$o}Kٚ0r8o(4}YR2xkic[hp X<;ZH'MM;\ÙGcἠHc8Σ׉LCOoxqi/XZG$@#6OD?]_Z`V Cv؏!.C`"ޤ@Lm4'島1%؆9NrM3 uJѱ8A2ͬͯ2Me+O5@3NHh%:Gu{*C,P|-G,7۷}$Y֑uu,z=ⳐB&=K9C hn4-qyݨP%QGnN}/0Hg rV2% ۑ5d<\7zq4Yf_"x;u\}640Ӱdn<65Ff+J.dXcwmCpL̯PЦhӉk](;oPgK0k3'Ɖ{M-,=~(,%<'\d8eMhi[D9]A" _|L4-i[,S}m/v o@,: DramR_Tcξ?b)-z\SlqN۸fJ.g;`lVFb2L|I("7΁,9 U>U-;D~|7OTONstcmf[#"  x{˚HCtw 'R:ڶ:,??:zҶ9_ xę8Zu̾ :;f2{h6n !~ ^g9QGuK3bkwcZ6% lGh|2zE)0 ^HpiCe`{sڑS v>#txp!~_ZQ XG!s\4Ox>@AWך8_$O/}eft8>s+dPY &Ӿ+ k^ÇsZ@$yG~=jJ,kچ^KZd 7q>"?,V\] i cFs;l޵9 $گJmF;, kGܓ!?n,e1[6Y<,)?#SeBq{xU^VK H״=tA_-e避O;PK-Kߚ5>f'W ;IpnϸqPU͇l tqFd$8bcc o+Ժiu#r[w@ qsBKZKYl | F2?t0 c_ђ醷c֑ UFIVwSA8[ .'Vԑd7ri!)Z#ݭom%GzAdqX`'H׶ItI{PxfoJ*B;Q@;#^8!`dQ41445 8Va4'd6xOPEۇ%Xhbk, p449ivtools-doc/latexbuttons/feynman/index.html0000644000076500007650000001242207443402732022040 0ustar scottscott00000000000000 Feynman Diagrams with IVtools: Doing particle physics with a basic widget set and comdraw

    ivtools Feynman-widgets

    Feynman diagrams are used in many branches of physics, to show how to organize the various calculational contributions of various elementary processes. The ivtools Feynman-widgets is a set of graphical widgets that allow one to build these diagrams in a GUI environment such as Comdraw and then export the finished diagram as PostScript for inclusion into a technical paper via LaTeX and psfig macro.

    The basic set of widgets used to build Feynman diagrams is listed in The LaTeX Graphics Companion, p. 233 by Goosens, et al. (ISBN: 0-201-85469-4) . Below is an example of a Feynman diagram:

    You start by first constructing an enlarged version of the middle wavy line. You use a large colored line to keep both wave pieces even. Then you disclose the wave using Structure::Ungroup several times, the resulting wave should look like this:

    Then use scale to shrink the wave; adding arrows, and vectors and symbols like so:

    The last step, after selecting the completed structure, is to select Structure::Ungroup from the IVtools menu 2 or 3 times. You then reselect the completed structure and select Structure::Group from the IVtools menu. This will give you the result in Fig. 3 above. Since the structure is now treated as 1 large object, you can reposition it by selecting it, and then moving the mouse while holding down the middle-mouse button.

    Here ia a more complex, finished example:

    To include this structure in a technical paper or journal article, simply export it as encapsulated PostScript (EPS) by choosing File::Export Graphic. Click on "EPS", then click on "Export". Then insert the following before the \begin{document} line in your LaTeX document:

    \input psfig.sty

    To display the graphic, insert the following in the body of your LaTeX code:

    \begin{figure}[htbp]
    \psfig{file=file.ps,width=6in,height=3in} % see Kenneth Shultis, pp. 100-103
    \end{figure}

    Where file.ps is the name of your graphic; there cannot be any extraneous spaces inside the braces on the \psfig line. See Ken Shultis' book "LaTeX NOTES: Practical Tips for Preparing Technical Documents", ISBN: 0-13-120973-6

    The IVtools custom toolbar allows one to load custom toolbar configurations for different typesetting projects. Instead of loading all of the possible chemical widgets, and believe me there are alot, only load the ones required for the project at hand, or the ones you find most useful. To build a custom toolbar, write a toolbar script similar to this:

    addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/FEYNMAN/widgets/wiggly.idraw")
    addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/FEYNMAN/widgets/zigzag.idraw")
    addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/FEYNMAN/widgets/dbl_wiggly.idraw")
    addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/FEYNMAN/widgets/dbl_zigzag.idraw")
    addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/FEYNMAN/widgets/arrow.idraw")
    addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/FEYNMAN/widgets/circle.idraw")
    addtool("/usr/guest/todd/graphics/IVTOOLS/ToolBars/FEYNMAN/widgets/tetragram.idraw")

    To load the desired toolbar click on Tools::Custom Tools. This will give a stripped down Comdraw toolbar into which custom widgets can be inserted. To load the custom widgets, click into the Comdraw command window, and enter the following command:

    run ("$PATH/file")

    Where $PATH is the complete path to the custom toolbar script and "file" is the name of the script.

    The Feynman widgets must be in idraw format to be added to the toolbar in this manner. To convert a widget to idraw format for use in the toolbar:

    • Import the desired graphic

    • Select from the menu File::Export Graphic

    • Choose "idraw EPS"

    • Click on the Export button

    Adding Fonts to IVtools for technical Typesetting: As you can see from the complex example, Fig. 4, it would be useful to add Greek chars to the Idraw/Comdraw/Drawserv Font menus. The best example I have found of this is given in Minimal idraw help (also listed at the bottom of the idraw page). The basic process:

    1. Edit your .Xresources or .Xdefaults file by adding: comdraw.font12:-adobe-symbol-*-*-*-*-*-100-*-*-*-*-*-* Symbol 10
      comdraw.font13:-adobe-symbol-*-*-*-*-*-120-*-*-*-*-*-* Symbol 12
      comdraw.font14:-adobe-symbol-*-*-*-*-*-140-*-*-*-*-*-* Symbol 14
      comdraw.font15:-adobe-symbol-*-*-*-*-*-180-*-*-*-*-*-* Symbol 18
    2. Save the file and execute: xrdb -load ~/.Xresources (or if you are using .Xdefaults, xrdb -load ~/.Xdefaults)
    3. Shutdown and restart the X server and restart Comdraw/Idraw

    up to LaTeX toolbutton page ivtools-doc/latexbuttons/feynman-buttons.tgz0000644000076500007650000001522707443402732022273 0ustar scottscott00000000000000׌<feynman-buttons.tar[sFOB}o oNU}<Z+;z0Oaw{gUOR|uׯU9F>9|7T)ߐûZ|#MSVPN~:|=ላCVl2UYtU(>fR\rl9O<݈|Lފ9j(VWBۍVᣈR6AĀ)s:T<1=gs-_|;YKIU5 U֖qQ-iSŞUrϖlVukzIDkTծ_Fa:,屬̨Lْi!+ik[!s6`כ bR\ɗܳV`&2'OW{+N[6ARGn`|5L2n,I~RyYetH.,%7r-c}'@r^g?1\kXnT-Ew?tZq#ƨ}iʼnmA;_=bi9?[OB,я,ٸ6u[nn[WFdJ׮viwIJizwyzkWJʱ;W'֔%d[ x5B3L5]漷O 㽊..7]cRC/ߏk"F;,{D tS)hՇjdǞjWWWl;5[Ď8]ShC(E-ONo0$I}*LܚP9cL>qB2꽛|˚T9~_ Iv4DޣWNn} ص0zMMM'^Ex>hR/idlQE'םn5=)I#u:#,91{7lOh @){YxvY>s5.ql}ة}g0n(usjRy W5ZA} M̫[:t&,[MwldވLg1'bLezU?U\:6Crcf{NUvGTbkWZWSsPŁ6`i;޹lY{kvc}Os|.tngլ>Ҏ{6o8r3]^DcV!^$ 4ެ >5u^z4tZ>ԧΛL]䫺U wsq>}r}'>C_ח Ww} w$ـ~_#l;/ nnǺv*_(69 ɋ&XzQ-9tSh" 0g}uyqn R\\1$aׇq%HA2ǫj1bB̘gNի/BQ|'jZTm!c[} KڊO'vBnWi!Syfh֜_;7OYNbu׍Y&^k*uaZs ;3F{bkV>\7):'dbmM'Ka{z_KRM1#]@'T7j־iFv꺺 k7V+iQV%1:g!RR\uSUC}n%T Mm&ލO1%kL^'X\VS$w碎:HTV~h[eۧetx|l۟ݘ-CIcײFv}V-PQUCZyv^?7mwB90놠6ƺj8E܈7臭\WvN3jz!ŒiljnApέ4FFE6nt9>8ǃ([=>T2mY:* ksTuIOAMģC3Wtuxf/cygRqwo9 IdsL3}1VWn ?u?a}2f+O/w%B O)DV _ dYC^;~ Fer~2/Lm/ =גRלWz#MP~멂Ken+KX[,sm0yۤYM)KR jZ_Eu=^ Q%Q,{.|O_%PXB”&>,3mv߭UuŨh}7ԃ'4'<> :,w,S??@?@?@?@9_܉Iy dHOY5_?qZ(- )Q]?Aˀ @ @ @ @ @ @ @ ΗR慧M9 oJ\]`/i" L;SP[.dQ)(rNѣa=*0e)T㳣KYGUQsD-kKC䱇.eu s /_ /_ /_ /_:cVBحsӦqG=EE\cJk:jm/< y"wpJض~/J/g_ϾF8?˳/B8\p.~8kyY_:oI<='|$( ????Ϙ./a*֖ԥkǟ͝PF}_=ӢPOQzjg ͯmv_hx{ilF:9 eҌ, 0` 0` 0` 0` >=C?7 Y[ɥ^bvt:|Q(]̥t ԫWevº27ʴ+2GBd V '^zEw*Q;eI{Zek%>:_Y?UYժnU}~%nI X6!ЦFܿ%cȱtte6(e*3ٷZ;k瓴Bh6x0e2EU`T”d/}k-*+}쥎v|+I)=Rz֤YKҽ`Uȧv_z忮e4;_Sv/S_%͞Y0` 0` 0` 0`v!w2wAv(bY]:Dwe5ޗ:K氈H.ʈ 'CB_FtJb:^dK@y>5v%Sc?eg????'z^ڗfd+UBP.l~XOLkNa2>P8m.mUȴ*&SEJ?=x>c5D2% =~+XSCٯgQIQƒ?@?@?@?ΗQc?ֽ4jVdJ+B~|9ٮC:|8?-9?:?0G`  0@`  0@`  0@`  0@`t PD/__VWU[ε7A$N%3]/GϒoD,? f#);a2=)q&ƏvV!Oocʼ43fG99 SR`?`?`?`؟3ftxi?F ʍ10FRo?eTVFX5SpuўO2;SqiG`  0@`  0@`  0@` e|;)E -j;`e;`jM.oj I6eGfX.Ufp% ȟjzXCP^Szβ't*l $F>d_?h(|$8???M:$ Wz[CQZ[=*30$o #c(0%=>)l|YYa9]zx????1Bҿ,CJO)-sVLdnjQv&jSfZM/UѮka >J20g> ] 6SKwyuH?$S?N<͉?`?`?`?`s6q|i?:5;aK (W+r_?}i5]gICl[us?:`  0@`  0@`  0@` eNH_-%=ټЁj7\6h2T@dV3$Zǟ ).} vxδ"+ypϙ-g>>4_u,S?BIOL ???iQdR\_\O!7n@sp9*YVwvv6mbGDwb,dmcGZJiR/PQ41 mr(:{|A\VoO?.CN i_Kn3t @ @ g@ ImH6#^dj>6B iИGCʵp:}'6QuB`&p3G ?'??vLgSI9jKz mh5%^oQկNcOq 5<^,n2Zt4;U.dRTRJa婯O6.NV~kd]|h2-mZ}j{rAUo5JI>`ź{B2/\C5ChdvݗeTu^=CL~\LJ]_y?Gn?Ϳa+3?O'?O'?O'?OqeR~Ơ死9Un4?PS@T: EǸ;J^^Z֋:Juֺ3Ygqݟ["B!B!B!B!B9X~D)Hivtools-doc/latexbuttons/index.html0000644000076500007650000000414407443402732020405 0ustar scottscott00000000000000 ivtools custom toolbutton page The following describe the use of ivtools comdraw for creating LaTex figures for scientific publications.

    Contributed by Todd Gruhn.

    [chemistry toolbuttons] Chemistry
    [circiut toolbutons] Electrical
    [feynman toolbuttons] High Energy Physics
    [template toolbuttons] Templates

    custom toolbuttons for comdraw

  • chemical toolbuttons
  • circuit toolbuttons
  • Feynman diagram toolbuttons
  • Protein/amino-acid toolbuttons
  • helpful templates
  • ivtools-doc/latexbuttons/prot-buttons.tgz0000644000076500007650000001364507444371251021626 0ustar scottscott00000000000000d،<protein-buttons.tar[6a_W`/R;Umԩ;wcgkؙYW.( -qM E[q(/|O8!|J"/MVegK+ }@)zSNYa/ h at(L;e\('@ 8K20v:_q^?a8 (>P;_G|dNg'('˼^ ~ǫgyV.WoYLvF68_e$>/W'aG US4<6e`4${n]i>]@EK]1訑="(8[\E"ۗ*lt'ZLM̹_ܮBb'~hDדrlQR}nq6MhWd{\ƙCV:򑜛ti\2`fe\>'W [4.Ms[خdb_M2T'r"5I>ynGrQXɣ4ES.\˫DiGR yw[TœZVjT3Wmi\-ޛFVVUNsu٥vyjPqVmu 9O46pŻn-o+eYaZܨ&0D2uԙo,*]}4+@*Ԝm]pSS |ոwbܵ{qEx!Ex䋠RoW볰}bپlpg޸j6յ>Ub`S>U}׎T18o^IbI69/lnM*TrTlW&t(cS| )E\&Yb6^| lR6i&]],_""-M1 'TgdIqKx.K8ݝco[Knv^X!$eI"'Z,п"ҩ"Lڕ>W>O>L.|0vVl'nH˥6TOPRF짛h11ϷL3|HUu@+Kk2]WMVp;vBf=|j>r܈mƱXz}m|lӈm6Y'@'qP9HUd>ܧfh2XK_+sc'{KW_ؠ1)T/{a*Mm乱-MCSFR[/yRAWi9 LC\6~r)WCr0J%lEpۑn@sv|9nLW2{[%x797v2֍^!EcfUfCj5?قct-m-sc:OK4MFݓʤ: ws#_m HzS@v-#uY=?V'-E)B&w,ӥƥezX5r]Tꋙe*zoz}k.9%˙ ~3)tިk[MޘCm{WOӃzV["q\5nadӑ}R&~ˈ;g2Fj4 h0Ta Uhl;cW5f1zW24~h|ag&9zY=l꼮J_|^]}M}Bѿlgջ Yr._mCdQc۶le>Ī]ݸczW-&Y\hdvW5iPG6%oLfd/5mz/2mOwZ m'Iv͠Y}6)T?/HKW|$5xہ$?}-Bun;HwTj&Xlxl_xG7aϯ6;˪7ؼkq=/ [=Fco%(8 M[ҭ"BVXc7luė$Fjd=} D؎5_W,wz?VNU]I;rUݶH{/eC6*uRi9Ƌjy\Vo_m U C4vQgcvoqC{VҲv..6NoLyUl;=YG9f,)UYuYus%>=OLw//]s|t5LJ߹֋(^AÝ{=l`q'J%EZE&k3[϶iH>6Fݝ44v$}c%^utm|xU]rceѩ`?\~`س*ZI6u94a5Rjĭv熟:w99^n~ގXx]!+ϕH&29UAe龷G~ϧ¨Z8 QTY0͕_8Ʊ}=W%DDߵH}~f)YINC)6i;|Sm6§}ҽXI'T4@Iڗ "E}5m ]XG/\gKhngrz[Ij6ir6nw=D8_/ _/_/=_/~=[Lo0J.Pa.[;a"Fu7q(=zb_/'b_UE~Q_/E~Q_/E~Q_/{ߞTM}/Ǝ$@_P=FvR~nl +oOq2#|ݖDo~7R` 0cq` 0H`$0 F# H`$0 H`$0 F#HI:D/w݁t m;MWeߎ!{_/j_/k_/_o/¶1]};6|!_/_/_j_/k_/_ax4{zw_/_/_j_/k_/_ r7:weo=D_/_/_/{//_/{8v_%W&JyjVw߰>ߡ{Eѿ_/^'Eѿ_/Eѿ_/8/E/Eѿ_/{_=U'Nt4w~gضS _Oݶ =!F#`0F#`0F#`j`0l`0F#`p=/{wk%_/_/_/ޟ_/ް  `0 >쫓nx<LuQMFnzi{; _/_/_/GW__/ϬEgö}^~@ @ @ @ @ 3?F'ivtools-doc/latexbuttons/templ.jpeg0000644000076500007650000000331607374262641020406 0ustar scottscott00000000000000JFIFHH: Image generated by Aladdin Ghostscript (device=pnmraw) C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222:<; !1A"Qa2q#CRr$&46Ubcs5!1aq"AQ#23$b4C ? Kņԁ1^X*Z ;29wW[_kd _ [u`{ʎO+/g/vyw)Q!gSZ*G9nM`c8‚NWVNr^͟B5TOI4+M9uM\8_|SG <G>5b,HeB*Sz يj;-y!jI+#NF={a' /Cmą(8Y-LP-Q 0n'Witݔ7&[/0IXr<2+*UgahRle:my|9̅VyN|2*ʖ:~9oDnTW=BFO<ց.kzcnPS`88p< \]Q*FzuhViyKWܠ-;0\AJ\ xবlLH=<]|MK[ǭk ,IGGPP=ԳT,G T~\fe>hmVIێqs\X#sAb'zQhovMfc=qn%pY*HCJ'kjNM[IrWT8ɑ|MJֵ_%a }U:s5+.l!{ӓqģ'zI݁:g+/aum_um^<= >$4chg3UWvCeG{Mq'V®RGrT ${O:04(V-·nAdvanced graphics with templates

    ivtools Templates

    ivtools Templates is a set of building blocks for building complex chemical ring structures, technical diagrams etc. The example below uses the decagon template to construct a diagram of the Krebs cycle. (A complex biochemical/metabolic pathway.

    We start with the decagon template, which is essentially a bunch of spokes whose apical angle is 360/n degrees -- where n=the number of sides. So for a pentagon, n=5, and (360/n) = 72 degrees; for a decagon, n=10 and (360/n) = 36 degrees. We proceed around the template with some complete sides, and several Fischer projections of the involved sugars. We then adjust the sides as necessary to make the thing look acceptable, like in the figure below:

    Our last step is to get rid of the template, get rid of extraneous symbols, screen clutter, etc. Label and select the final graphic, and save it to a file. Here is my final copy of the Krebs cycle:

    Here is an example of using the 16-gon template to build the main-ring of tuberactinomycin:

    As you can see, the use of these templates to create complex diagrams, chemical structures, etc., is limited only by the imagination of the user. As covered in the Chemical and Electrical pages, these diagrams can then be included into your technical document by using the psfig macro in your LaTeX header.

    Tips on designing templates:

    When building a large template (n=12, 16, 20, ... 4n sides) take advantage of symmetry!. This will be difficult at first, when designing the first piece. But will result in a template figure, that is far easier to assemble, maintain, permute, etc. First step is to stick the two quarters together, as shown below:

    Then you do Struct::Group to get the first half. Duplicate it (just hit "d"), then flip the 2nd half over and connect it to top half. Last, drag to Struct::Ungroup several times and then drag to Struct::Group to regroup the final figure.

    The first quarter was created using the following command (entered in the command box): compview=multiline(100,0 , 0,0 , 92.4,38.3 , 0,0 , 70.7,70.7 , 0,0 , 38.3,92.4 , 0,0 , 0,100)

    up to LaTeX toolbutton page ivtools-doc/latexbuttons/templates/krebs-fin.jpeg0000644000076500007650000011272607374262641023151 0ustar scottscott00000000000000JFIFHH: Image generated by Aladdin Ghostscript (device=pnmraw) C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222[!"1AQ#2aBq$3Rb6U4CSTVcrtu%7fs&5e:!1QAa"Rq2#B$Cbr‚ ?@P( @P( @P(*Kie&q@,Xm|O!ŝ6k/u$!wy}Ŭb[U24lC:F:׶.ϫk#wQbnnd:H`ݎCl}޽nق<& Y:#ϚK<vX" W$ 6ǰqAu~,uRtqtVu4l:rki.XG#Δh#Gsx,t4Φ0E{`{uHn+B AA.|v2~.ߵh- 0 ğS#z\zJK? poE#1oHgT#T3EkZX8FAOcg-20^^CC$d_ kpmdr^X6&,ZPo!4(Ĩ^fVyl776֢(nR_#K/>!y WP-@P( @P( @P( @P( @P( @PSdpoS}@-sAr'a[xEšdHJJ2?* |\xl\VQ$Yyd)$v.ueA;PZ.6[)sf10}ϐT'@jh+!);[Z.-U+|Ve#dž>GU9u=ٛIa^8ɴ E2{H$q]I9I ^‚u@P( @P( @P( @P( @P( @P( @P( @PQf7XnۉJuOq^C4 $Hi$uHfc{~AWD197n"}+6eHY\gi5ĈF:gR(wbM!!'a/"\}P( @P( @P( @P( @P( @P( AE}quɅضIDi;:PGG/[ nG4]I} Q ;qDL<`n 9O72k5ەueJk[OTulp,, O7U\])Tp۷ ?#~@P(+1Xfdv'#'^q')yo%y}${ c'+ qoa= i>ԑ+Fޮ~{N-heTuČ!o>̪Imz 8m*٭ђ'Iin>Y4!f1fטہW14d|v<0d8DB4$w$0"?q6܋.s-"νFR|hy'{ּysyqXno e-(I%C~z@&?L7]ZM;Ay,1̻+=@jct!<߸D~\yvr(>t.Kf02Gs,q8ԈO=@@q2dApޟBuPZEQIA@P( @P( @P( @P( @PVg{9G9Ngp8$F 25ˌ}} pwrA{@P( W+*BFH#}H=!|u9/u#gnl{9Bh0SvoPL雹'm$qpm"Bv~eY2~e<AHT)"+V_KuX iEP{P(<6Uřy~D(?=uh:Qat׹6 KI|;(*S,CZ!y+zr> 3hᴄPi-z YrHy5qAu치J;|{in{1DĩR `|: @Zaqd/DK @$m\=quu Oi< Iu('K1Oʂө7qE4BZsxOI><\P( @P( @P( @P(w[Y͚q" }+o Ok~2QNϝoG@xnP*d,V*0 Pt$R U(Ci)~t(>7 M ЗX:M8+s4LonҮ x4,o/&'Z,~1xC3<YBFK"y7F ՛Q*՝A,ʔm\h}P]muguks.` #UЩ>ǟp(&c[U'9EAp {`&T=;\6#tl{RL-ەd ,I ?ϧs)n>l1mjR9YBGD !:IuWnfbU{@P(ǔʛD}[ڂ禺Zåm`wO/$@A}d|Aw@P( @P( @P( @P( s(q?j]^V ?M3,OėWu,u =G+dq(zv:֑iO(k{|'|v+)ZyZA.EG?Ϛcγz6ecn9V>s{eZ8 @S%͵٥Bw+hCiB@#}Vg|OOI{)ayVHvI#uX>od h+m.2@:zKxq ,o C4tvL>wyKH-/㠍-.}!) q_Sy'Ag @Eۊ`g8I9o@%ހ"9s"Tdw$dhW׫l>1wP\]3q,"[gV4F$ i|1-恒.#Hc\,o"ƪ GuDà;E <{-v$(c=M, ؏\4h -:B5Vwk*WƏ \=@/ wu/W٠緕J]O "RYCR4huSt<}MKUGZ~4}Q<#Ԉ-:G^3IY\,2Z9"4A{Vol6y1<81ڞ-w||lHKґA64`GsT?uCr{T-AYsbc?^H=?:]e4q!čXT$t0=@P( @P( @P( @P( \Jf IC >AA-$YHmTg'/HTLcY_;RbW;h͏畞~C5mñ~-/:Ow/z-!HaOˆ4mZcHysdyIeޥ@c'ak{9L !k{d ڹi&-c{Y[)ቤ'g{1=v9 ??5X1;>=&L,'Wq@P( @P( @P( @P( @PSo1ڬi}R^cW7%' "9G^Ͳ_sSzD4XVf&G*#J(ec|O NZࢲXd!ts޺C s/G6euţ@'3w]C`oѭ,o1v'a! 6Sqh$-Qd6v8nMOh_@P( @P( } csusnG 9/2/w_.pȯ.SEJk&:$4 {5򠘪UF@ w6^[Ios M hWǒ1 SC`I'G>DV:[.1WmzS'^UٞNk{+lLB̿_?CֶF͇&2FVdP(8ZKuu*KݽeԒ(['0v[r;eX:;Jx;%ʹ7A x$}E1Xi."~Q'n{YardDWPH.BxyB rSԷM"(>u@P( @P( @P(ƿeh;]ycfF+yN,E!&9mM)I A.lf'LH$Xdx̆$p#dAt[j&o5Y/FuXp>%X#<@vE*@$o88g]>L4liiK6W9cx,-$YʽD 0IBzzfufFqVsEw`ipbaAd:M$aHó"n"SvY#`PGny;)Es\h♙SO2@WDoGt`.[{ iѤWE"RbwA􉎺?s2%xkcɳaC/uA30r6xljv*tV)'~"_`M9+yJS^a+$xFV#c%rAϭ,n-V;5-*~MꈺaeR&NF&S2oxP( @P(9\CknG 1O$T}I>vwlV#pM%jbt‚Blbm ɭDe )PEf=s[dI{QX;  P=d)YH-q#'@a5ͨT\D'^poj?3A:d9)eFyW@~[D{ +|[d1s;ON_?1Ⲷ>;??{hvug̭By^F;Fο0*iYݷ WhzzwLvOL+GA[ɘi 42HYl|+nٜs[[c)"h.a#E2Jn% xPDt[9wF$B ZT1NŤ(FǨlKzV!-%(i[\1 ](vwZ:qI{;Kx/e$"Qh4t @P( @P( AI&-}bf4r9'3.]sRtxn%irN˻IbOH磲5h:wwsEI(YOQe>?efEiNܱj?OyATU,X[? 8LMwX)ymѤ^$0,vdz^]l?=Am:g@P( @PTO&9l(Q'݄`qeY|2p mCdI1dhĻKYT+{*!I JNL7zKhoPL[R"RI#qTQOOʃ[팪'#W@,>@P( @P( g) {eD26@A-s^p|;t1Av^XI:a>@ͣ~^ wu/W٠H#fTiA![olh3ֽaݦ1q(6|k[!P( @P( @P( @P( @PPuKŵn>6Pâq*μ Nd ZZ,wڬѵhT>5A7ӗ12.z4meWq))#3hmPA ;KV^= _PQb[?[:/{7sw:7S5 6dq)Z~tqe{kR鉚)me4c4 '|( @P( @P( @P( @P( _%Y\ܳ7|y x<.>1i[D&qӗy啔2M)! o_55kxqo-°;PjS^=@P( @P( @P( UgPLȱKݷe!_Qt~zP( @P( @P( @P( @P( v%4 7zE([fw%YKnN|RuoAW~'mrLen[i⳰X{6J #K@P( 1%ay,O2/Ux!GA@4J֌Q 锃*^Y* ,> ;;! I[Ht2t@E@P( @8nk=@/RNb"6]˖@9{m]q mTGX`_==D-r(ŗ \ElMr4>~%mur 7LRra_^mcKu@,@ xֽAց@P( @P( @P( @P( A .֋6 ,oET~~|~txĥYD2kI{c4E^)/#QܷLsޚC\Iq-GPsUV'v絖&IIu.ǁN %>=K|L$!_ŽX!ٍ߱[ T AY]:-o2V >Iuing*F?_O!'㉆q,d``}+Wylťݼom$蘕KB8 ?\~}}mܾ2aH@'!B}5A%@P( /X]c/9}e;[ZM<2qdB w7X,trXߙҮνW,%I-V.6heXs~ Ug7X8=Ňq#ַ⃄V1ld,K'qrMqQ 7!6B7yNq~A:@P( @P( @P( @P( @PVrf0C8~q y9D$|$1 ۻwA=hcK{{@ .VW DJ8N|7Rd"y$eLOI!Hhǚ @;TPK3>.3 Z0EpkKgi\R^*kd6l5;$RA;;?: @P(  l6y&dW0~Fc:z7 q )@ۏkηTf";];>[ӤV5L+79! ҹ̅&U`<~Uw= si<سLYɄ@y7=ơN想tBLne{&<{h&X[_Y_!5ēؐoB}@P( @P( @P( @P( K3e틦.Ekd$j@6uzqfYEY=w#61`,}>@FnswY湉`'d UElM벋9#y1H9*8rx0 ${|JD;@s*x#@su=j ɭEXYJnx:(|.eܯ+ݤw]+ix tt̫P_C,/{H M'Ig^u\p</}~UQBh @P( foq9fn,eo-~+Qv>ˌX (5p_/>oBv䶾5( @P( @P( @P( @P( )4v `ښ k+hloGCAnelr|gمe6 ʮˊz0VY9r0PഷR;`B@:PA7rH4 ݑ (7}]7oTL<\2A9KuӖBͳ#dI^YH$/>Nąگ&*“A. "+eGGJ+j5t[rۻpo[QH*Lg%rKvwRCଖmb۠&Law6P|F΀٠glpV5۳I+v෉yK;ݏA[d2yHs}AqInFېwof^6<($4 @P( A]Vkb7`K;yc߫P:-qYC B'1:޽ l ʉ!h7Z(A+,~JQmFA*# /0}(>{i=Ŭ7Psmǿ H myvZWzW{ 4 @P( @#2Acg?r?Xm[|WMoG|믒yY|\EJ;Eor6~Jԝ*Xkt3IrE#Avq >`rc=C@P( @P(k'x?א~"??^>87g%r<'NA+=뭤d{O^GVY;x;ͬ}2[5q)1I$ - /ZDiC֛Ly ӘtlW )\ ,S".Fr>*Upxm.gK( ";z{zuA"& x%>4,VqSkcEı P?\KhKz-s,h<ޢH9k Yu%ZA[_hYcl{ N; /PMs}c{h`~4 #?B@P( Jgd!+0Se4aC 8Pw꬝]t#|=N]t|W0]Oհtm{;HMޘ_Y9r joQ}>٠J1y'KhfT;{YU䒔=M.b?1tNE[Isw~ 9`p<͒ѦFwe@u1Q'{:-+6g!ebxfYt  HDg!ATycoej>_B.f (4VYom pAāUG :8=hD":q د~W8Ϟy@P( @P( eQe+>Y$(!Ϗ: 6+ mn3E0` TWޠf%cUA'`|h/h l`;ˀ wDn*N·j!L*`Xl}4vg36o﬌SK)lߥ EQ HBxP{P( @f:- ~'M\I-ҬZ'E@[o|k~IlZDQ8㊝.1nRAźF&x;64'ؗqb*+/fL\|[> )tkǘnV&.$Oh $I+)lzm[vulM)2"i`Ax$hݟRuL8nlㅤҮ&郁pW,@H !aә~,^G i9;<Ɵ l>Amggoan Gfm$X|I$Aށ@P( z@P( @P( &W[{bHu*Hh δCv.^F1~\T=;\6#tl{RL-ەd ,I ?ܺd[ڕfynܫ (PdBHf?_~;s?v.>5\[ߚ @P( AIM`2 p7[m]gGo?5K#ko]3lTy'J >d 2vKuw O = .J%A A/l, @P( gn_uu*CyEg΂̾^z_e9Aue`mqdq؎a2܋@7ڃ`Nk4 @P( @P( @P( @P( @P( J!K7h?6tzWFu}o VlK$dPLSx$4?PQLw2q]&[Ԭ6|{oGJ筬ﲙ lstK5w'ؚ8lYc/rwW2*lAP( @P(<7ݥ`cYb$*~|G҃yAEuvWg9|HR°_}PUK h@P( @P( @P( @P( @P( Aeg!ÀT-P~;OɁ41[]Y> SZ%TbI<Μ/_3JnK3d}1y(9;$]@8+m|Ac$]gfG1wJ#϶\ {OɧqU/~ΑK y.!yo-ރÖ= d02ۋg9oAQç/se$M/mMkE^[kF ͓ws[> v( AFVnW?gnGiO/]1U.;'˨/#UXH"Af<Y;9+lf#c;䤘8Yt/A @P( @P( @P( @P( @P( @Py9l!2P~}s1vGKIbR8`t5}I36ci$3ː.D /ݿ%{w9>Vk&KcRLc̩^< @P( @77?U3-@P( @P( @P( @P( @P( @P(>0,*HǸkkK^4xBۑoIpvփ]bY\]]^b|ulQ3 9uKtk< r;#:Q+=t.q_hn!PU]t| o,wFc=CkZc,{vO.ѰbTɏ #K@P( @P(3A&c>xɬ#R\Ȁ'qYFΉ/9\cp-9KbIێH etadyձ{YmeXܮ('T7Z߀;i`mRX >RF x`V%{hr WvݢNRƏoſy =@P( @P( @P( @P( @P( @uu w26G>ʪ6O el1@K ɧ拟96F 7A˪g+;ŇAKK.u8P4A)dfOڿfF|72{^=z:@P( S\#6W>ʪ6O Xɯb]XHPGrc%;n^~|Pr,2$,`Moq$:+hloGBOcUDs%ܩ2[`z4/:sRcKwf9ʟF@%XvTFRvNV?]"WY68]N9q8ׁؤ!ьH`U* >.'5:1 *Sl{F^/O~W?rPm @P((.cx-VXቸ*xybhktHwމ "fLX_zYy{y#Tr5=jO;,-n7o-ΪK6: 糠<61n-I%^.G|@=)Kޝk:Z{NﹰǸ;#ڃI6*tؿY!=PP/Y-AP( @P( @P( @P( @P( @P( $]V"Wa'4(?]*ɧHkbޘ{pWf>]+}qV!tlkqѨZ @P( @P( L{4suAc&q9.r uXȈ:@xĸݽ7vr(A3Wa7Fx939`YfrA$]2@*ԆkK+lQ)}TP|wA'e9v.&|AJ댺/PTw$qcb[wph8w:#( @P( @P( @P(  uv1ດs m! :bP@K,mP$R%%$zuk9oIS$N"Y&qufk5KVn"so O܋^{A:'<\a[?U?tc {[6;wոkf۳q& jf:>h9ZdH-ByH־Tf0ɖyd9L ^K^{FiӰ-_){&%wIJ eHr )\'xw h|P^ue=W[kʵ5£'(USXGT/:H!{(;{8n9.9>=~}A\>:{ܮ+eE/=G̠4%g[c;![ w9G#z*] 80vWg>jn'rJH{@CH1m%--іX y4A<#aǫ@*e>dK >V&TGKʻX;uAuuX.|+Un%#N㗂CQԓhm\]Bef)swԭ uϗmxAhV92^/79Z7ؽqwdVr}(YSG:z@P( @P(糜QtFc[V-Y2-9ꋂ菌sosi«j%݆Z7=m7m#۠k6ΕLGv?۟!?? Pi @P( Ax"xHeB6HPeXRcsp&i@3ĺB6@?RX (3OZ @P( @P( @P( @P( @PTge(.1Lu:2#PFw1Dܼ)Ph@%~Kr눲#Gnb9D:=\|zptk{W7em"5ig"\OȥP)Opu5S$c"7;5y*00<;qL}/qYNsȲ\I"A*߁A@P( @P( @P( @P( AmJud \ژyŸ2l AS"N-O1w 'g7O=@h|h"uL|?Bnfn_{VLtFAyjye[^M<עX^h̛Tȣ\I4Wϋ. ɇȈ4Ѱ#:@P( @P(  ټUܶd죹>창‡D2A#iݍ7VRh$^x>AA+X+wSCh.*[:}m峸iM|D'zP( @P( @P( @P( @P(1x*up2ڊ^g,)_SYdz[>}.T *["34Ž:+z&M'F:ξlu'P@^͎fK,,8IfWH8ᅫAw򠋐Nltr| )w: oPw`v.Ÿ䶻קa ō|wؓd2ܯuc`v9IP^t{!%b̲Xw.6KЃ@F<@P( @P(ȳ)i c-Mr2pJ$ǒymPs|oQGࣇ)Ǎnqd%V K ~B6VèVtzѤo zYA[N>,lש;>0Ǐ|5ǿ @P( @P( @P( @P( ?<_*PzRvܧ86 }mrw? mmx;߉rIUVVKl-!j$'GҖSŇP( @P( @P(1,]k˭ٶ4܈uf%!rݡ}Xyr0/'k$jF4 ^>|&W߫:~Q́[(cÏA}mdZ/a?boia郵ߝc_ՠ:@P( @P( @P( z1C)>BɥxybWeHȀA: Z[ы:7|imc=Ū4-F7cdh"Zd4 \ŏ/b[d!Ķ M{yq̶aY\{u*dN^27Ͻ^&[;ۼݤqۍR0x)f mݼ @P( @P( /lӟ"Au<)8Qt4]Qb(vѬPvn(@m'Ch)ݗMƿ͊ O+Mfo7e{[sկm- Vah&RDSh-?"bY-"$nĩ~CÖA1`|No!&2|t|T4'Na"M"ue#{⅂lAJA):>dW3e1BVmtfIj)M83VH2pW)% H=8dz#TZJIaX[0ȒNviS(<04k5mi }.KwE ֌O|y: @P( A!ek彥n%X@c%"jA&I(IR4(䟥A}A!bbIrY [(ݸ#̱o,FXnb'dގ%K:h@oetA߶[,J6A* $}AGQ>nJ)ȐTc\j\+g'aSe"d XxI>⃅k!lV>;:^͢mHOoY>=S{mհco]07fF*/և%{MGaX]cw@ AK7Q1wNn~bw8)g ͡S$z\Zq.pE30yAۑ PBu/c -~2߇峿aB-Z]jN&h#0 ͛1xq$8[6>$2< #`BH`) 6u$8Xo#BWfEtH4_^^MFm}a <{qn#t،L/!1J$iMP( @P()sЧna/ ;Ke,{^k޶wj&UG1Db9QaAf"-a"9&>ʿ>+;3׳vӻHiGY!`O{Rnjˑ~Z9޿򆹶֓fO9k{tpMmRw/mHqoϓ֯=iA]} Iqqm2._# )<1="Od/i[I8ѢThYiR (!tU+[5{kcQ&w$=Bo42sdm..DE9LM#Ċvҏ /JY`3,m-ZT4m!J{@P( @Pdzk ]j"J31?_΃_={,XfCnsV&J.rlW1ؙōK$/j[Xs1Ԉsw<Ēo0ҴpREqY~)$*ڃ]UKHV\L%7]7k`mV܅`{ycoȠ.gtn$LvnʻZ7oȄ>>sjPV.J )cw1^LTŎ }<~PU0|nBDUQ˪OQ>Av^XI:a>@ͣ~^ :aazvWMA={P|hz+Lb2",ㅶ-3QYlַCG@PQIH2 2]voڱc::h|)׳绛WIb.o5q!/,| vbtPґNNMjɴLMG(z.mFxnϓJ|A>7fwXzIf s7=d{!'8_7M7&cl 0,j#;FbRLz@ƨx4%[N7T0`v0 @NlrdUHdU#E[0nI-[{hqgKD䅼xE G௑\@P( @P(޸:HAMa\ r_{"6v}#H#1 }䐛Ir!F<0$Jd{:d?E9XH]mYN@P()0ΗOJw*W@>Gο:54*mdRyL|O:P(rd+\Dp%̗PܢU]uu<>(#v<]c`iay-!u:7AϨy K)^|\M0ޖt%yOŒ|e/cu 㢳ʑ4i!u_v FNkh%"{(F`G@#-h7?gಲl֖=̆C7&HÌJGF Ͻ͜goa$N!$s,Yv6w Su]ˋ ,h~ ^I4kq-ͥ mYf qG41{l|TS63aְ^4HwDз0y{)pA#zv}sȲEm%7 Ew|9X_;O7={oirspn~l IIXQ6Yդ7  :oL?P}8qeٙ+$WRFC LrCue%w.Я.Ɍ޹eY\mU,K$ѥ)6Y y#Ϗ!]gӹbp7)q\ ~,@#"loy uۺs+a3D[I 1F@v*AZDq*[^)l>LQVM^|mI(m#P}-d\#ض>'{'Gj8(8QiUF@+x8C̵62Eܷ,$PB d4U 7Έjh |Ua1Y&vƌ[۬ ]hDu]y5 @P( @P( t6FTEfcA.fj6w<$kA ?Z`pݓb}ߩПu?/ʁ׹~Epoe )k'PG^0H0?r",ҎKү'Ȍex=ȁ{BƂѸ\lY3~@)mXfT@.d;O vo\mP~~>ڃ=7v07 T^⾹C`oڂ57qQmZb"8;耼A:'lﬞXeR/('PQtu+eqs+3vN +{x)%"'s=սY[..c \!ySϩF>#_u 6p}u[Lz\vF[n׮#t2/ Fэd~~~UJw|zO9Gd-W Aiby; 1?z` AOq؋7~Yb@Ro$L4a.ca 51pS^z(+},~ S T: FOse'J|.΀P( @P( AjWPZۧy"| MԸ.Mxհg.}9[A.iFp,KB>=3u9&\9.FQ<N4nLuV!7` 5ײ?ƒ]Q ih4@P(3!m2_anfdy-"> "GOg$ r-bĄ 7kc< Xh6bf'XWc; 266}L{xtu\__=rԗ{ f[[8Vi.K TFt7l#n;9xܴl׶p!IL%Έߏ}BwfAA;\UKx7p,H5yeh#3$AuF, lo@P( \Gu/N*Y#ȿt+nu(%T)$<PWz8ZIu&> 6hm2R ɀp|0Cǃu'7mFE'썽b"KYK~6"AAaV`6r͌;x-ѰE5Qf]c.2Swٗh[c&X٤!\6BI} @wm AAtIVɑ]ݝ=4aH@,ϱ![ʓE4r2HX|y4h @P(3k}swkwqj{i++与7 @wo؅f7DI[b,mmq,<²0yo-?]0ꗿ.:mvPa׹6l}j;OѽAy[824WѠ}֘|`ڌu}6gGU>%m:6t =l5.. VoS¡Q:>Ƃf/֗-[ƚx̳K, Ffw[oA"5+ka[ڵuFe^E[hU#S@P( @P( @P( @P( 7@XBAP(1בf_rSc'Z+Ku$eFI$ڠҖYF%X{'k֏upa9+ a Pu ? y1SK-졌(T'ϵXoDllPs vAZߐ:F^Y{gϵL'M߁&IR[ٟ/"8範_a,Ow=QOݶNK^dGآ8巅#>w: 5<"±} Ԍe"NF;)^4kDr~RH9屑e7rQSv>G߳Ķv0>A,ƛ=$}dS􅍜SAj\FJP)o?A}+Ji3-{ͩ]mE;IJ0 #!ԃR̋iN|#T$29($hyF]#l}O9*ڹ6d}1^ ٞ<6Ne赼"#mA:5e=;#c|Gd׳opgBCo^ @PSu2q8![}غg$$v#k#y׊s-v67K,3؝I*bh~+y}e[@,[YN ,25y|y ,FYr si- a X̤iOAa@P( @P( @P( @P( 7üp6ٸA[l4 %@Pg_y٠P( @P( Ak]-\f3sow9 n]ⰸ׷ k<e,,VKtJCD=TWeqYT,F4gh0Id^+><@P("ifu*$\o|cl~7WbVK2>NA>@P( @P( @P( @P((Wrq[;kg5VuHk -* ₗ+{{*kk.=RkkuK ;`G.AanKL7YIc]XwB_'A䲙nպ {TaqFW Q^t;c]fqW彍;.'0[۫.#uiX!Ixn*:oz}#tf|'5kE7'` BJփ]@˵9A}52bV4oX'PrK6sh1ib+!ygYݐz/;h$᳗CrdMhGTLׁ gr3\Efw -T#rt=~Vu6r[5V6 Y;4:6#7G>6.W]u勷ُQyLM-ԗ7D!ɻ|ޕU>NύCALİ$y_ Qh{|t l4{yAJѳ{K?3w k۫@E8۷Zkm!HRFؖc$wP( @P( @P( ivtools-doc/latexbuttons/templates/krebs1.jpeg0000644000076500007650000006304707374262642022462 0ustar scottscott00000000000000JFIFHH: Image generated by Aladdin Ghostscript (device=pnmraw) C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222X !1"AQa#2qBRUb$3r%Cc46SVstTfu57D;!1AQRaq"#2br3BC ? i>E-hk9h9C29 :<;`t5=_>& F>GϏڧ5&e8ctm- 1Yݻ XmVڨEqFDퟢti$JrgrXVfbb-VfdJXXQf~H=G1VVi^zg[%h/+j6xc_u{5nl? Rܔͨ'%=4=n˥or`} nypԊ Y{Z׽O A;vA|_c-)d0ײHΝ1{pq-?c?XA+KcYK'F ^S6CQ+1哺kzoqsHǸA|6K%}LJ)jtMc0G0o҆re/EjuZ?GasCKzZ͞} .V`nQxnRfiNoSO(;;p*ضLpkѲHhHg ^'Rp3<%6ts悙UM\ W9{(.q@'`-<\qN[J^w4#]ۤ ,%6ٟHQӇ9ڃn?Qb]RTZ1~=L v^?O79=&]&_ P1nmot&7 s- 9?lsK~qhvi75%b՗5؛Bֆ@ܟ2PO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A+lЫPJx[[@lPg9/ժr2GbV7l`y蠶beSk!#w=E {݂Z}Svocxnxr j),>'Cd.# AfuKa vޠ{;`=Z8W 9)D뱉{-bZ9cedNG3$4$;d%n:J.GfI+db(ޠdfZ@69x>P>P΀JzDqn[{lPW E\s&t ݉:Lcz]-=}!Ep*Fڔz %mi6l.s^$?[vަ~>.S37gIVUk_o@]խ6 cZ746I?BͳLm]h74 ܠ5~Eg'S!gs7CNp$hhAWk(>BzL^&/m9$)L294GcϺ +/ǫhNOL񞗍{;~\ z%ZFf"w 6x d{C=ݙxWHE+:[ŁdvA=l1XyN-V)d1.=PSX=*a2rn;$I[ih'-]Wv:#^ƿq:{p> 䏏s_#bg5܌ kb(qkQRBFM,6\673 hwe-z%e52ۜEApꞨvh㢂=-dg=>dazGkx%$1%] ;Y~C+ fy ihbCKS5KOHJx}F>Vƫ ѻ1hq.ӴOpR̵.n}lIt>g؂_$;7ǮЎO ys4Fi8b<Õ%Ah=ձJ"^7K+ ?ܵE7"c[`k=@;c>/ròtplr܊iֹleiPA9q/,Ewۅ=:n dfc8=%3%7bCxќ>{[?g'ޒ(XMM+TK;ihv#kz y<3GLk?mjB^]ȫe M[; mkCxl3{`;yTӢdJAtm KC[ 6Jn(b|R)"|kCtAwqtёdd\5#J]x$us^C#6$zCn7=[8&7אA)ɝfWHd}OywSA-PLFiˤsHZ;k Juey|{ϛI@x]Fkm` &ԹcXI|nF)>D"`91c'I͆%:xrEω9.8{B'x 1QfJ2 4JO q?D+,sjfL}cMc|Ҵi֘ }}lyy~'0Mڑxo[Cs`@AnLK|2"J~3\45#zGv# uNίМ>u>~ṡxq~tu| 1ݫrQ}ͱ/M:ʯf/7]'IWR|IY~ C3W3͋ Eϗ`h!Ͻ v,>"tVHDqzw! 8T)Y#go^@H߼A"NB TΝ3֏W$BVV[4!ihn'l#V3׹f ċ2uأesGWK|/TڃEYQ rْ)ؙh|rgV!xy'R x$"ݬyb`i;k&5?z Z OڷJ,֊jx#d-[$zH2JAs4puH}#I_9#t4{l=˜AmafrP2RG)KZr$cߩs@:g}?fhC0bXK>N+d lẻtN^~L(huVta wWh;qܿT+ۉf]ż"swl|ֆ%kSX9IoAK +4,veabY$Ox.w7kc릘O2DиHyH.qYszY:-ߟK7L@@@@@@@@@@ApBIV.ю<%}F6 ywU`s^ z_^ yVblQe k@=;#C X0/NG%Z͉b<׽8 R]t|W+'1|&$S@{CNõ16#屴4$~$53KNΫKl{96(1Y9~\܊jʯx:ӵ9m|Gv%c !' 򗉾:lg4{}->99|WdMrCg:bo(,3|^iRfs7FtDׂ K{4~蠇o͸7\LE+nGK bKSo}:=Vٵb@1Nƾx9 ,H|mpwթ$֭Qq5_T~!y͙ulйa(ݽ?]^6R/ռ;"} #cп48`1EuQTUD1?ѯDnh7TU\ptqEηڍrU6Xmŧ=[MQTg 7\^~vqԕ%" q 651U?]$ }2xڷ긺Y4N#[k BLE̕ |kϥ$ 86?lfqGWOA}rLWսV U0;A*o|KG!:x`=7{ yΕ:kufTt7J㶙ݲwC5>N;dy7~pyh MFS󰿃ѣ:TqFwJZ qT]3:d]z1INc`,-7,i ߾uun}jN7nsC}](XQ67W J֗k w=y m G؃hc\i/I^0mƻƒ`GKb35YH> h6(#_5$aiEw{u)]crzv)DtLLg6jauj<ժc[5liK7Fz؁csU/e݌]N_Ʊ+ACQ 07H!x[Tr֝X+s+EOD胏2Rg/9tSfkpي>Ԏfa;g` ,ixA uTYh"vK }厔~b|[ V<|4R=7iA@@@@@@@@@AZ45 h ٙQNR6|_::7]~yGg=5AAL$du ^t|A$77i(2(%KyY ] pmH4~{,o&lP{ ~u]^/WcZ 'RZkEߒ[LzK[PjP|3)ېzgͻ~pzvֻ ?|p乶zZt>PsQH-,Tv^]҃GO=KqZXvb;Q(2y1U⭜qZԊ/XۘA4{#IsFN>rs"{sZHcH6@GGͭr F<9laAt1{C6 |0{[2;nt= 70'w9v:;N8~$<@@@@@@@@@@@@@A /޳rrՎ&=̖^8qkzO`GrtڕA-sV3!9G3>.J5jX\V9I+q]m{ZSN=[cH$NK5k)fH~n,z)LhB爘;H^n.A m1%Zk CgeSKrU%H{=voh+ܲ/!C;B-%{|A@@@@@@@@@@@@AXoX^:[_Q18I6kv{`X|rÁ5Z0m~"`ݗVQ?G`H2'U\>F^WYG8~TiGn)Buje<>;Es}pdS#Q.iFLeiQz8hkZ>>7g41YvkG%qo69KSqvκ:tIAoPcC.r?bPdrFL%f,vRSf>mm|͙1KީHˮ7yHs~ 4Q؆HfcdF=h+w,qpXړv-no X5McyWuس3ky ttsk6kRo=lI)a^^S{=A̘KwcGJGaH>;Ex9,Ɯda-@ 7̄|Y2b#fN탣 Cz^vvPrh"O%F>94 b]pw:c0KH^泏t{tMGC,'!xd=?G9+ ׺|1ݶf NAFM%|osNÁ B:M4Uy⍥{Z(2'P'~fRdם2Cp֠ rLN ǂsI[o0 7ɯ'Yxc QGL(lhk; 6Kz XMV6}pEZS1;q"4WLF|LrOSff3Ar=;kzENFL'/|&Qh3p\gA@@@AEWq2nx沈qą"^*FቁcFZrD<00\frn"-:w/o=c#vc+ml} 7ʝ\H.w=|ctg5VNA6HߨlPx\WN[lG^-Y\֏y%,S%/wȖZ>w#gc@wAa1?R:1n>8'NA=O#YpM]Vj9sWOoު4c[wM՟)e^xV.VFVDprV*uhZ7f\ 1qgt֜LGL[AsyV?+ k_zmPމ> (/cPX<&˃t7n0<7C#`jPp5/{ZѲIG&k>r䗵 =~#cPkQr.WC`{eSYsN~n:H*)[Y^hUDzU>@="hF$;;`?NwO*:hGn1qƪ>ksg+.?1XjJԱ~=l-ۘ8^eU-(T?#;pdhXeuDo5?qA;4B 6]e7w@?5OKrV2bhp8z\~gYXh҂f6浣@~2,6#Gwk-(Zg,~h >a┸\r{=SL}֍ 0hڂ-<(j?rfO^еpuѾҎW\r8yjQVY$RmpA0~Oj-󯾻[1'Z5?;!H}h= 1wO;zMèkG~ƒ`lʍ[MwoHqxlPA1t ՏI!><>6J wg ]nڑ(ϗH 51FUޘ≡hBYLxTl"CG ,s}WFdцteLLLqy,hH!fZGXoQ/sZoٵ6tY9+Z_݇Fپůqx`h:ߩu)a*[rWAfú֎9]kYZI4Fl }@&` Q)٨bZ::ycsh@@@@@@@@@@@@@@@@@@@@Aq 2xiU wU߶_6ޭ&/;w6:Z8#?ix41(c;@^d87ni>`^l< 74˯sz\+0; g|cɕިkNWyF\G\YSf_2>(6|{_?:c;a7owAc$m75pi AA%B*: p> :|\ӯ?5Ndz~<m["XI~$|]VodmPN$ǣ{~0c1qb h {#"H69AyPbe9^a+z65-=,{ib?> 7TJfw\|={m @@@@@@@@@@@@@@@@Af\ldbc+XsZZ4\2>sujtL = /0Gn1:g-WVIGW^)LD^qikN[+g9#C{ F:M V` dH5A~1?%?db䷇@Փco1[VM} ~KxɿoY7?-&>?%?db䷇@Փco1[VM} ~KxɿoY7?-&>?%?db ENx8VXdA3\lS& Nuic;Adй.,s;;m= 'Be*rs&|[VM} ~KxɿoY7?-&>?%?db䷇@Փco1[VM} ~KxɿoY7?-&>?%?db䷇@Փco1[VM} ~KxɿoY7?#3./c+66+׬5{+Osao ċcs1F$Z{ȟ64Xݷ!۾\cx-xkj9#{AӣtZYmKrO B7po~K?ԡnVHEl y;BetJZ 5p c~ 9iau>x:0Fwoڕvaw dpbg׿_ fVίhFfs~h?П+GMnECm帝cCàf[jLVzŐ?BVH?vEsEceu$ջ߰Xlyp1YVZ٬֊::cs6rۯ.+jqqǏj>HiYCWC^ݠ xXVF54BGsI$O>k g#ln.kviߺ 0ߪ( 3yovdr'ڇ- Ri"..GPN(6 hy@'A jrօRK+Z$ܹA,úfg{1#D6\ox;UmqW%w9 iO3ȣi{(2_&'7eerOkǝF߰F ")`g5αD5i镻܃] &8y{&c ee*Ej֎A|;IY0+@.QoA1C{iSъ 1Y3z'5A%{6Ϛ>"9'bc ͧzis&u#C´֋#lq<4_H<3ؖ:10_+%bxa佬q#R[]U6nr ؘ6Cߋd@@7}H,8Zg-T[dSAtE,owsLWKs0BsZ==fi5[&\|6{ KP}(&Em6ֱAy=t7 Ye񑹣}-#ׂ*b8b`dloZr-VI`asH|ژ1Kc&$k~c,;A@AqxTU#b:pH9?hv'ysR^ht{p;=>t^@+HƸh{\;.a3أ#ZvAnys)A-}Zi?ĂY^S;?+nߴ0~c]51rY1WLcA"kA@Aj[a;0z|csA@@AC?6e2W!Y~{Ob,qbcHnְ}AC>o6VK jHEk?TDmkZ"kc\FʕJpVkcq:S2nM˕W;g캬@@@@@@@@@@@@@@@@@@@@A1`12V?7pd`ur?zE$}} lx]HVɬOA=Y$dQI8A89 sgܒa'Z  o3M,EIIv;ns'Ùc(6-s^ƽk` NB.Wi[$R9 GfX~01~[95 UY㭷kp=GAb%sb 駛{-ۻ*c򌹮8@@@@@@@@@@@@@@@@@@@@Augׁ~Eo]H ?3?άG~OUl{?hA2_)gQsGuOKL; ө 5`dlQ~kZ4=GJ :-f'+}p PfNnM?^e~'G7$vM1m?6v?XoQo.b<6:fo)hvA@@@@@@@@@@@@AKq$ދg"޺{Vp)_tWJ $dlsG83<츎Vz0qCor 7x'Y~noNzv}~ϼѠ [k^` `h܅NLlk14~*:D[;QDj9Z k (: ѻX<vv1{3ʼavv(h,^v=J 3EbM)DZp>Dw@@@@@@@@@A1x05o"XGt> h54,t;&uoP퉣n".CkN-ӣLR.O~gtr6q7$8)72D`&W{oi1P9L\GT8[-3}~!jTjiNx։1CZ$J w7.M >&r\8Woăd:#AK3i>`? (6caY#d9ױp aYn;p,c\ _ewTvA㼣>j=B5goDl=~GD@@@@@@@@AKc<鍹GE??ܩUMwϸߵ+ݱ#c`|Ѳ#?ɭ| *߳O6vtO[TjSpf6'_I1~,uqxʘ*#ִ4A%L> &6& p p ̄]( Dw!߉gp3ٖړ0kGH)v?vDq`ymhy;W1<;w~h6((!䮘m>*g#m9x>tKt2mIkbZcqd4XlM'H:K5q$ׄNd>F6ߪOJQiiգUtyMIadY$y;etJZ 5p c~ =1zUDީ%-hP|l Iћ'Hlka|tq-OXFI]IOCAr'5Ǎ3ZfqD6h17nkVfV[~yA@@@@@@@@A1g㲵"RQG {d 5saV@E1=`7mqyjيY;$ q.K-Uؚc+ITxx@@m]ϚK2ӻ98ۅ,M|s$`]..pF@YI-fhcWI#zqs7ZY~kG%o69KSYqvκ:tIAoPcC.r?bPRrKTq .xcj 7qEՙi"Ź&05o{鐝CyinrՎ;{uNf(]+nzď%9JF΁c]D叛 O@CN9|.֏EQ>Ɨ~$4[|h EÉ+MRv;٠ d8-<*XX%\\>ӡ;ǙAi}.B)hf*X#RǰӇb "88ܟAM-ه4RtyWRwy gC@ P]7'Aƃ@ d͵e`7_FϯZ~z\w^_*ի$C5.-v4xuI*QQZ_!E5p}'ӧZ01k@dr2?|`1OgX)U ;v ^%C읩]L>!8۾G߮ր  F| Dz}ޚ5բe6: N6 >2>H{ZDz  fP0WV;ErqzG /(Isbv &7Kw K *k Ǣxw{{uynKY͘z*oM{'2q='d\c=J e& ET Ŷvē' (|7ómn=}48ݎ{+z;wڃ%O=7L?8x]]=S^k]}{޳[v*jFׅ%xk z^t'zRdXdڡ*Ύadt Q7D.hӔWy -XdY`tZѸ6In/<6C]c EB٫f|ek qxQ;?Xv}/?!hꞔVeKA{`q'@o[==jc3?韔'ξ*6 qB7ƒfC|r.`Ȳ"<6$=Äߚ<~`^r_kT9,ϜyKqziAv7d |.hkc"|&4F%'-)&\eK1=t~n[ @@@@@@@@@@@A'I茭2kAQ{6DH6h1㜜vf>i魯cOO܃f!9'ŶbsJ׸?Fv?o=aod1+Ts9$Z< b ލm 9\rZict }/)&|ԚHf,7H Epv^tJ,g0^X8ڭ+|'9#渆ldE9׊>7[)wSԃCA:("N'y 쳙/ef={Ґ Ay Y1ݿP/[+[kn:A}10Sb6)S'407`-Pg9Zl? Sfj5R#f~x)"ct\г4--jY|2 @˷?q@@@@@@@@@Af~PAkZGmslc8r\bf*{$IMfh6h Ck'%͒siX>'~w{t"jц۳njdNˇlD\u7,crsBd-##6^S+Ln,Fힽ^S+Ln,FힽU~SqG.npY1Vz}I}ƻ4]fv1k@߷C; l_e)Q,os]H:::whsXgAv f d96 `A_|*1^3:hf)\6맷{{f/fiV! l^ Wxpq07M'g}I+GӵRMY>7LOyvCHhyۺ  o'䜙~Ui_q_3ka[cMgA@@@@@@@@AjzUjfC cn{΀ Urժ[wB!8h=W;#}p4ڹV*֫ !1@u41SV6K; &g=g;ImJ숹Awv~h*9NdU58 ṧrHhJVA.kVљ|?ȸg<ڸ̅N& En4 >5dqo&b (-wpv{vANU_#~j(ܴ"? {^^4@orOeceah! g9z6zIƏ~' f!Ǿ8ػ0> Xk}=u܊um xl%WkѢ6;#{#Z5\<ǐ=YC^2|Mүo-g S;f~*Gds]+x.CW'X׷[6 kwi]\e+b.aӷ9O nFQ|7׌{c5VV=qջׇ)=#s^ ;{W*i2dp@A -f+N$pu$ll4o؂Ca_ !A ,Yc vu7o$Wv2ܫ'cT_^^GfJt%쁮~y q%W6ilKk2%?bqW/g;;لO0@].91wꟇh5[Qۺ֎ݱ۱aFse'{gf+Ɉi읓c~gj8Z;ث5z#L@laAXocC#^cкC |25s qd ,Y->J+o CV=1Ӥ/ 2Ry\$W +z88 Cc4aխ-ft7{L yAb^E\>?C Yg94PWV4bH$61ˤHAsjyα5,.9 $yuz ,$q].ނ|3EbFKdps\6# [4/,z61-D^}ةjrT~/F8j"^1=7F0^C m&ֱA""2 몺9uD,47e}[ Gjy9Un*Tk*L۪4=lqQYV}$+bkּe9cKwnZVc҉/2F4b~v_xL pjK$PS^&?8b'كpqthA%X+[┲zQ`lk ]-k#ֱN|v ]vAcz}Yg@@@@@@@@@A.CKG:c+Y&*ieP|)KGO$\r.MP+mk 'cdl bmov /ǣ'kVR6`{2S.K#01pGqFCwk{v=%q4Tec֏ø H7{vA+P,+acNM#,sZ|.!ܔd59FS.,.4 uV)t[7GA)ciرzY9$4&q{bvNg >ScmEzGz %gt$dHg1#X.87;2ySw7heŚ%ƁC0{wf> _+#y|w@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Aڗ5Y轅8gM\Xֆ@#= U9Aga5݇@Kg^O_ONX0&o YzD$t}$o<'Ý=u8՘q8CpkHrI>d/$syu\5X1Yٹ&$ m&r96A3*>r`n׹݁anv/$t7a n X{o)ծtiWz)U3N^o$8{7sl&vg>Z7dM+XpQ\y+T֤oфGtp?sKHı#ng\?)qܑ!L\g}1q3]&'U~nM 㝳^Lη>#3Ω*7>^[M7+TNWzݨ9rXS]2-MoH`;Z5kF'4>QWkщdd),J^FZHQw ׿TD۴ q%wA;3Juqُ2Lsomk/.iuf#\汀 ǵ,Nk6IZߑ@#=FrkW8}qKrO\z,[tcl.s:աA㙖r=G*͈|N1v{ŮAh9V.^YJ+KcqZik }+q%8?c<_hw{XL6ZP-A-ڮ!hd/F5ABN;\c҄h[I fga;1bdd%V6HHHP8h8|wLXjji"3!h"VT bjKXK,L[fh#; {2s$[k=س1xqkH A4fL6Ђ .k^q(.Pivtools-doc/latexbuttons/templates/mainring.jpeg0000644000076500007650000003304107375031624023061 0ustar scottscott00000000000000JFIFHH: Image generated by Aladdin Ghostscript (device=pnmraw) C    $.' ",#(7),01444'9=82<.342 8Q !1"AQaBq23r#7RUVbu$%&CDSc45ds?)JR*;T[CDRԗ%2u.hJR㲴D6gmm`[#@Ԭ$BT8(n:˻83b7%a!: v;trgQnOۇ J[ :VBNi`]vտɽntۣm&RIB^enV!*HQvJVIӤLPYJRT(8tޮJR)JR)JR)JU;^ /#[58$A=*KVTwsD\`)YJg:Jޜ<;i↭kȏS$ ; QVu SrLH@ ǔ )ԝI'#z2H:pӫJCH*)HH8+VgjUmon,f(+R#eDjM)JR)JR)JR)JaٿeOؕ)J܍.T0; ZUݹYnnn\sql:h,Q)a VNTIJR)JR)JR)J̐k32d*;Ͽ)L!Z0jQm[Myuu~Geƭ(;0d )Oq;tvv۳ёSc"@e#QJrpFv랽jΔkD}LO7Hjd3=yk&;HAXՍIAZljR)JR)JRx\'B}QE캔ZT ##UKĻ^ێm\xKz1[S)Buj )NF _q-l.t\m^ifGTW_$) ӏCVqہqI>xl8qp}l%8۟[nWV'Җr \\ʝfNJf) Ԩ} RR:\AJRw# TIzvlj3m̷QBQRJQspzqpopc5mIm$ޢ"@:o5-)d[V% ZZoUZ-F V##R1U\Yxlh 5i,uʔh ݙR8D1V& y$խM)JR)JR)Jpmor, )ԅ Av[Ry\ɒa )>6 i;5jöf0 Z2qL %)DiQV(Z\BV!@' _Tg~0߲JRsfDAiz\563(uexp-i;j)BZJR)JRf2o_""TcĀĆS㎥DTF#޺X/;P'0kGjC @KCkV?+jҹI8IlJq I'e-=\ݹ3J7:xp[ve! BR$@F=`5;$Iܜ٭5)Y;7{Pq| Y= .'S 2T)yԱWan Vq㴖@R?pkZ.R$ZTm-؂x5FR-^NWy?|GJԥIZBBFA )JR*=Z7t9jla.h>#P85U Ykh6$sHQqd=*β&_ ڑjeXk8c%J gFEiCnhː(SDuhIH*IZ@PʓZ?[ەs0Ҩ41^uwR-sCJ>0MiJaٿeOؕ+1 ȕf @S귡?]BJV%C U6f)Kq=y ʳռ$>W 7f(.ͼrƬӕ'9W5q02ınRԫ|!{%G]_aBZ $JR)JRG\\ KeH6-($Qut+l eA_7mߊ{g}"Ncn=ζGQGTvmJyzLJ[қ*PHC*' p3*1}A##Ȋg~0߲JR^,.N1S d3QbD*s>TH@U)UW{6#EC+>ZNJQBAQ^JuG.,c|-qh%!ʐ@#P!'5/n"ɹ ^+1kVH `_$!*))$d#j)JR[%ʴ$ Kud(@Q$<껇m}JPgYA+~cAU7حMlI|w SoiʊRHl$AnA(۴47"m`@D|aakB ]v߷̎_iu B HHX@P%)VG/3vĈ\cI АNŊ凂<(k Fr'}15(`@х8Vl)!M)E+Wh348Qn]!/Ү\pK K@)a%'P߶j:fFSH.P3!Fh Q1f.%SEJm[;1WNI`NzWiPZAǥ{Uwl7P2DyгHRU(qC;Mu^"!2L;YG%.%(6gzcO&ui%Z'pةqH=,$ '(=+F%hJРdriJlWlusbLk#9q[e[m*,F@Ҝ#dwJUJ}Ď덙WHhe;t%)M_RiSNXGW3 e"%E;q|Wd}M'ξMgf2y]0{i{^SJJN^TI JlWlusbLk#wtܐ+_Zp0:6출=jthWD`{o8==OQ$ݶ34뎨Ғ9E˙ķW6= cU<(ȍi Ha]83F#8El9$hJRf`?>ߑdSci)JR.1i$ȍ˚L8"qUvoK%/ I4/J|R!H7jRQY(s(T _b 6:&5 ); %9e4Ԥ#<=R{Tq_A%ј2LHV e JnHTٯwy@zL8@[NvrI5sT,ۥ\˸c> JSG<xv~!d?GɶTw ڭ5M96?g8_x|ҭ:l*g8߆ |Fpͩu)JRP-07Ez:`k.+E[Ҕ)\&Aq&; iүx;Vଫ_kHB1J7OgGY̘'E LɃplʹ0JØ6#,s/֩?pCq8S*6}m)' S\_bοX/<˰ϐ潋@9+8 ̙Sd2ܗ[mNBTvjJR%HJR0Wfg7q1׾;.u)JR]/v#)v9YҀ+> T|MSwf1c-zXw|mbrE:E`2'ɔO|]Ս`LQ XNuQӶUd %$˛8DD09:PedI&in~4TFls ^|sv*.G,Ru,Ü[NeOP[RRrsa=*KKMǽF?'%ֳ'uIeɲ")G*TK>+dڽW?Yq-khoK.)^괴 [(uڰ U)JRxSx>%UG*Vm- x%# JRf|!.`Ψ38:r]K䟣5)J% >uE! u Uy֤aQ~In(hGЕy*ڸbhxɏ5C %eqDy jK10e%J>wtܐ+_Zp0:6출=j 6TKY;le:5g*Į\Yv-~JQq5c1}.4ĘGsxФFƢX/Ȕ#_#R@DIRv=jöޅOo tڽڳZ Az^ҕCÖLtxqV)JT;Ӡ+eGqRHֽ5!<&e㶗a +YK0q*-}yNޒ711VYWN1"k=Dt%*"h![J}m]T%ј2LHV e JnHTٯwy@zL8@[NvrI5:qbjqpVp:;s k7 TɞNu0\~0߲J,3-_-O77VR<ҠW ݕ{o!I(JOд}+`cc_)B`"S[H|JB>NK}'uIs}d_i!ą%CֳŸEFHE?ܫB1~-lX/D`c][.oIbS@੥i>uSjZe^Vb+l9W`chT)JR牯aƮ;5J{Ey1[}(Wg J NR$W[b"))jSRQ$; =\`3CrJWyPْsUR=Hy95)T%ј2LHV e JnHTٯwy@zL8@[NvrI5sY$ֽZ8y )D 6 Ui?3f?bV?uv:0yPGr׏ZzlWlusbLk#)m&Js@;t!) ]p->{ILJq }Cu6⒠IKzO~A"%zзȹ7,nKZZm':R)UkS*kn$=v@Wx6Ry㡢2PI*(mj GznƵ[c[6[ ԭ(HQ$xJU=-If4f S"U:GBsb6=6k]P+NF=ӝM\ҳ#ωU:|"%\V?voS%h+;QMT˴:'6ҐC9"cHfdVdp8K=2+T _b 6:&5 ); %9e4Ԥ#<=R{Tq:RsȑnNx0)NA$BA$]# DHc3m H =XFڧ|KeisIV{:2m(vtAeC,|f6"Fl6 :%) Y;7{0k3$ۗqᵜz̩'[֚S1}.4ĘGsxФFƢX/Ȕ#_#R@DIRv=i\}ݐmVp2I>Vo~5)d#mpDw-;QJR)JT+-"5L>'I’z$(= ᫤Kk -GA {ZhwID$DduR%]7$mzlĻ=&V {-;y9$+1 798bZ&6O uCܞZ~ҳ?voS%h)Y"ɿZ8'K!~HУ]ҕS1}.4ĘGsxФFƢX/Ȕ#_#R@DIRv=k;~˿]"Zdʀ$paA]J{FT)JR)T׻3eA[D{7;.29/ dx($WYgE.p^L^_ATVOsr$W$!.W629$j┪+˒Wl6:<Ԣ.` %`%,J?F*ڕó~ʟ+AJux˶)4udypMT?6tWtV,pIds~+VPbY7!™*[޶ FhSiW5E @;~ ^dƷƎd9 P^pN1zJR)JRE୛mKKʎ{t'nv l[.8.ΎҌ%gRApF3j[O3H^;A=3_Tf._kx@ XR+?3f?bVGxCľx M'mciJ!Mh9 Tiۢ@*>%[7;\)&:|9B]tnKO ӶA gR\Lɢp狼9M/n;R)JRq/d\ ZŶ= JJ[{DU -N uOI vmFP6$gJlGgñۓ e-Vn^҉ܚu]ۚnvY{H(V ],Gې/~chRIߵ\׊RP-Dd+99" /2R1,݀GZJR?voS%h)Js !-3!q[:}AQ+tnȳ%C BֆS)(BARI\x\ ˅fi;p{$Aj@D+|tIQTJ'u([xזּ*HX'g5O=W[Hzt榪;%`eJJvJ-Dq֢q56υwQi]^\ K%] 6Ӂ=2f,&/Y2]k}y)֬u:gɺne\m۔IbS e5Kh&wji{ڽ:py>Bp(Q+덴wHgWKź|ߏm-!iVNӌ' ;VRpݮ.92R:uТP҄yb yKm*Z݋mT$8e -6H{#A"%zзȹ7,nKZZm':Rfn_͙w]251:jlU7VH X-^/9+L)픤$j}*a|eB'Ty,HX="Z߿@ݲקyWFp~ʰ>2rˢ%I.vy7-Oڔvӭ$tQ8A|,޽Xc͵'KCo  n3J߲K օԄJN{}_ޮw! <pC)9P 烯RUt+.Td:Ҕ)h ;$wR]o XA, %:I=Ua9ח TA@4\ʀIU) Hu{JW$@F=X Xb%KkM2D$<Ph{KTd'@iLt #tr#c.0hSI(eq; l(-< i8Am\`X<} E?o:^~3۫8JNqzݦ J Je/yeM%8!=sRq x냲A^znUyq\i <?ʻVYW;B8eQfxvڃҖ4 )FyBO9HlxpGUElH-@ 1'p:\1,biI-ŦwBHI5cp=-VvϘBOZ <3/-8<򄶟% tXm1e9{њZQ'%\$t56syǸRRu (wGq L)JR)JR)JU4iƗHJpۡxJ䐣IbtʌuuRpR>>ۥ3"gq 7-aӯI=",Qq䬗}PXNcߕAUYpV~ZZ\(lRJBr33Vtf8&'hc(D^!Ϩ|kJ'Z3- }e%ZR)JR)JRW[žSnrۍ$ nu$ &Eg tf--8y"eGQiSnx65ڔ)JWí6+e%mC!@A춝:6ɏgОs[mAu+%ԒH'Sl ,U>Ї6qztR)JR)JRxT˃ҚYnLljLXB7ZBw5"FC[lv[y5`y:!<,)u{[q~Bvˁ-is'8 Tn⻥" \{ 3-Ld`ۣݞʛ(tIS3\Vt)JrBr̤yn!FqڒFww5?"+AʔnIRr($䓹)JR)JRg8(9i)F;=hJâe6D*4lF䥢ښ[KsW\}IEbsj55΀TN$Z7dmOhtaV4)JR)JR)JRg1IUX#EhiJ^R8dž XK3^ZR)JR)JR)JROwk}D }emm\R)$)$VZ\c!Ϙ4TYR8ZBFVQ[kQ*Q$ՇQThK2o@[A<[{RHʒ +#ane(wIdnR% Jlu6RGΤ׵[xrÍ.D .S-sjڠͳ[.O4|YuHP9$pr:lFZyERԓugMr1 ?hr+[M 0RR/:$n|j]ݞy璹H*{Nu:P1g>)JR)JR)\Ə630IK:' Esn 8}(q-$)(t|tL.;mSkGkg'*IԽ.[vu$Zzy qJIZu'8Y qdy. s,*MTD:%ܶAIA$t?R)JR)JR)JR)J@$1UN "&SvBQo+Jd WLx)JR)JR)JRivtools-doc/latexbuttons/templates/mainring.ps0000644000076500007650000007252407375031624022567 0ustar scottscott00000000000000%!PS-Adobe-2.0 EPSF-1.2 %%Creator: idraw %%DocumentFonts: Times-Roman Courier %%Pages: 1 %%BoundingBox: 158 269 429 581 %%EndComments %%BeginIdrawPrologue /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %%EndIdrawPrologue /arrowHeight 8 def /arrowWidth 4 def /IdrawDict 52 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/minus/period/slash /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon /less/equal/greater/question/at/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/bracketleft/backslash/bracketright /asciicircum/underscore/quoteleft/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/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Times-Roman reencodeISO def /Courier reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc closepath patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l w add b translate w neg h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /SSten { fgred fggreen fgblue setrgbcolor dup true exch 1 0 0 -1 0 6 -1 roll matrix astore } def /FSten { dup 3 -1 roll dup 4 1 roll exch newpath 0 0 moveto dup 0 exch lineto exch dup 3 1 roll exch lineto 0 lineto closepath bgred bggreen bgblue setrgbcolor eofill SSten } def /Rast { exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore } def %%EndProlog %I Idraw 12 Grid 8 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.956649 0 0 0.956649 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I p u %I t [ 1 0 0 1 79.5 -49.5001 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -191 21 ] concat Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ -1 0 0 -1 390 494 ] concat %I 9 100 0 0 0 92 38 0 0 70 70 0 0 38 92 0 0 0 100 9 MLine %I 1 End Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 -0 -1 390 494 ] concat %I 9 100 0 0 0 92 38 0 0 70 70 0 0 38 92 0 0 0 100 9 MLine %I 1 End Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ -1 -0 0 1 390 494 ] concat %I 9 100 0 0 0 92 38 0 0 70 70 0 0 38 92 0 0 0 100 9 MLine %I 1 End Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 390 494 ] concat %I 9 100 0 0 0 92 38 0 0 70 70 0 0 38 92 0 0 0 100 9 MLine %I 1 End End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 222 571 ] concat %I [ (HN) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 330 588 ] concat %I [ (O) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.503871 0.863779 -0.863779 0.503871 523.182 88.3083 ] concat Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 237.5 -132.886 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -5 -109 ] concat Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 645.821 ] concat %I 100 100 200 100 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 640.821 ] concat %I 100 100 200 100 Line %I 1 End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.843662 -0.536876 0.536876 0.843662 -126.891 205.715 ] concat Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 237.5 -132.886 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -5 -109 ] concat Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 645.821 ] concat %I 100 100 200 100 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 640.821 ] concat %I 100 100 200 100 Line %I 1 End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 79 53.0002 ] concat Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 237.5 -132.886 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -5 -109 ] concat Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 645.821 ] concat %I 100 100 200 100 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 640.821 ] concat %I 100 100 200 100 Line %I 1 End End %I eop End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 363 516 ] concat %I [ (HC) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 170 509 ] concat %I [ (CH) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 233 369 ] concat %I [ (CH) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 276 577 ] concat %I [ (CH) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -15.2501 -43.7502 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 60 64 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 249 577 ] concat %I [ (2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 231.5 583.5 ] concat %I [ (CH) ] Text End End %I eop End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.437264 -0.295285 0.293694 0.431518 251.234 466.19 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 351 396 ] concat %I [ (C) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 382 470 ] concat %I [ (C) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 317 567 ] concat %I [ (C) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 373 430 ] concat %I [ (NH) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 350 542 ] concat %I [ (NH) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.323103 0.480471 -0.550977 0.277316 477.377 324.261 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.133748 -0.669879 0.604902 0.163609 236.053 482.406 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.567074 0.433757 -0.458603 0.521396 417.069 240.083 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ -0.144822 -0.588098 -0.181656 -0.0437691 428.154 482.909 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.276153 -0.222394 0.414594 0.143456 260.912 503.64 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.399495 -0.115761 0.117499 0.393586 259.273 483.861 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ -3.55155e-08 0.8125 -1 -4.37114e-08 482.688 322.188 ] concat %I 26 247 40 247 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.8125 -0 -0 1 358.875 265 ] concat %I 26 247 40 247 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ -3.55155e-08 0.8125 -1 -4.37114e-08 525.688 559.188 ] concat %I 26 247 40 247 Line %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 417 516 ] concat %I [ (OH) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 301 604 ] concat %I [ (OH) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 102.75 -131.75 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 60 64 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 249 577 ] concat %I [ (2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 231.5 583.5 ] concat %I [ (CH) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -124.25 -176.75 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 60 64 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 249 577 ] concat %I [ (2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 231.5 583.5 ] concat %I [ (CH) ] Text End End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 409 471 ] concat %I [ (O) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 327 345 ] concat %I [ (O) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 183 375 ] concat %I [ (O) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 176 555 ] concat %I [ (O) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 309 31 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 63 349 ] concat %I [ (CHNHCONH) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 134 342 ] concat %I [ (2) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 197 542 ] concat %I [ (C) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 201 392 ] concat %I [ (C) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 316 370 ] concat %I [ (C) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.863779 -0.503871 0.503871 0.863779 -293.692 348.818 ] concat Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 237.5 -132.886 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -5 -109 ] concat Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 645.821 ] concat %I 100 100 200 100 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 640.821 ] concat %I 100 100 200 100 Line %I 1 End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.69212 0.721783 -0.721783 0.69212 273.132 -137.023 ] concat Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 237.5 -132.886 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -5 -109 ] concat Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 645.821 ] concat %I 100 100 200 100 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 640.821 ] concat %I 100 100 200 100 Line %I 1 End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.419058 -0.90796 0.90796 0.419058 -185.249 470.221 ] concat Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 237.5 -132.886 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -5 -109 ] concat Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 645.821 ] concat %I 100 100 200 100 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 640.821 ] concat %I 100 100 200 100 Line %I 1 End End %I eop End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 276 370 ] concat %I [ (H) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 276 359 ] concat %I [ (N) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.112767 -0.682951 0.396251 0.184524 76.8987 435.754 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.433757 -0.616385 0.521396 0.498482 52.0827 319.252 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.556936 -0.377171 0.374074 0.551183 109.757 265.237 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.726222 -0.0724343 0.110978 0.487089 201.386 248.903 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.659401 0.177205 -0.178161 0.622681 311.029 210.513 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 33 26 ] concat Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ -1.81665e-08 0.415602 -0.415602 -1.81665e-08 304.234 201.943 ] concat %I 3 213 200 200 200 193 211 3 MLine %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -1.39742e-08 0.311701 -0.319694 -1.36249e-08 284.189 222.1 ] concat %I 194 209 179 235 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -9.08326e-09 0.221654 -0.207801 -9.68881e-09 262.674 242.866 ] concat %I 211 200 241 200 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -1.51388e-08 0.311701 -0.346335 -1.36249e-08 287.541 246.412 ] concat %I 205 209 220 235 Line %I 1 End Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.00740895 -0.415535 0.415535 0.00740895 99.3489 387.334 ] concat %I 3 213 200 200 200 193 211 3 MLine %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.00740895 -0.415535 0.415535 0.00740895 99.3489 387.334 ] concat %I 194 209 179 235 Line %I 1 End Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.00797886 -0.447499 0.447499 0.00797886 92.6386 395.16 ] concat %I 3 239 200 252 200 258 211 3 MLine %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.00569919 -0.25971 0.319643 0.00463059 120.542 333.954 ] concat %I 205 209 220 235 Line %I 1 End Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ -0.404784 -0.211494 0.211494 -0.404784 241.163 440.178 ] concat %I 3 213 200 200 200 193 211 3 MLine %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ -7.08938e-09 0.162186 -0.162186 -7.08938e-09 259.26 232.746 ] concat %I 346 464 428 464 Line %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 235 285 ] concat %I [ (NH) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 218 309 ] concat %I [ (NH) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.710253 0.394585 -0.485643 0.874157 275.203 52.0618 ] concat %I 26 247 40 247 Line %I 1 End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.961524 -0.274721 0.274721 0.961524 -195.266 -26.0418 ] concat Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 237.5 -132.886 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -5 -109 ] concat Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 645.821 ] concat %I 100 100 200 100 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.120647 0 0 0.120647 69.9029 640.821 ] concat %I 100 100 200 100 Line %I 1 End End %I eop End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 198 279 ] concat %I [ (N) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 198 268 ] concat %I [ (H) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -38 -384 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 202 663 ] concat %I [ (R) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-* Courier 10 SetF %I t [ 1 0 0 1 212 656 ] concat %I [ (2) ] Text End End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-* Times-Roman 12 SetF %I t [ 1 0 0 1 175 429 ] concat %I [ (NH) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.581599 0.11456 -0.0752218 0.814559 250.772 379.904 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.433625 0.347484 -0.295555 0.525498 265.157 416.38 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.400744 0.483291 -0.585632 0.32461 302.79 428.075 ] concat %I 27 227 63 227 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ -0.068439 -0.5785 0.0938157 -0.0880076 151.989 532.948 ] concat %I 27 227 63 227 Line %I 1 End End %I eop End %I eop showpage %%Trailer end ivtools-doc/latexbuttons/templates/symmetry.jpeg0000644000076500007650000001135207375031624023147 0ustar scottscott00000000000000JFIFHH: Image generated by Aladdin Ghostscript (device=pnmraw) C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222b8I  !1AQUVa"#246BCqru%S$DRb&Ecs QR!q ?"H0GIsk^4Jr<0?d01a'7MYۊY^E9Te?%)X? W(AJ|~jc* mAD I 䠜O[%snqf@@@@@@@@@@@@@@@@@@@@@@@@@@A3Zhaq7&fyxјy VhsHsHs |~jc* mADsK$ָl,L(杬_?#[΂c8!`dQ13oG>*ED$nM[@qn;h (J50AAA=&l:6y!s nqyÐR =ßʂ:_PQ 9ƗmԹCp)|*h$yY1=5I$9mH/Vخfb2X^H @@@@@@@@@@@@@@@@@@A}R_5I|rF-=DGFZy9:}my_#`ъ18}fonAAHb镛[nɧ4[j9{=#PS =ßʂ:_PQ WmIak8Y".Wqh:Io2p=΃My⦂I畑CK#ݓZѴNBfǕVFNx-u%ro;2,  튒@)K7 i":27=،+[k͂6E3Uя3x;v D/vw h*_̃ ݍWHw4/[#|k M9}(N㯡5 WkoMkfٲ)|*h$yY1=5I$$!lyQedo DjW\bY+X~V p ̾ة/9#p#-7h @A1@u>6E-՟p2fpo˜A?{?5o u6FAxgEKnk@̓A!KTU&5kF@0M+"6G&i$0͏*#aMJZ냁K ;kvdY)ktXjFP18rmvc.Ѓ;).OeylW1dg؂x ̾ة/9#p#-7h A9m+$elmh4+⌼}s ާ*$f #x摘? LM9}(N㯡5 `uh0۬5TAL2p='*h$yY1=5I$$!lyQedo DjW\bY+X~V p ]mzGU\`}{b |G]u{%C ]ZM4z,i9n@;6@@@@@@@@@@@@@@A򨧂S sB㑡paAZY3tYv7'}7p2A;?hH&,s0ں?6xydPdִm$ Du,1^ ]pp9dt\a[̂ = m6B%?Pf~ ߐ;\@ٽ/Wy?fU ڭB%e [!o3Fl܃q% ZnU_ 0) 3yܴc8qey.Rnv5XyB~-U6Id hGj %ST$nDten{!(3Wڶכ2;m.f i3fvF _N{8)\87.9|~jc* mAъs#p-iC0'H4QVICklhϴDu,1^ ]pp9dt\a[̂ = UUOEL⧂1h'`AF|-Z[H[Tч a̱D7P3kq(m[T_ SۦѤڃmb6*Wt{kf8Hy- ).dtri#NNkh վ1J~-=)Eⵋ_Kfxgb<ٯ-=)E☵O$6kOJQwx-.Ҕ])_Kfxgb<ٯ-=)E☵O$6kOJQwx-.Ҕ])_Kfxgb<ٯ-=)E☵O$6kOJQwx-.Ҕ])_Kfxgb<ٯ-=)E☵O$6kOJQwx-.XYݡָ:T;ٵM%1kItm}j}$ZYe3nv#۴hrLZ']Fu?;}\@)# ]{ icH -.lז LZ']M"),csi9 _Ko0'B>M5M<=9y FZ.v$n _Ko8Jo-s:wyG5-.,–8lrC\ILZ']hOJQwx-.Ҕ])_Kfxgb<ٯ-=)E☵O$6kOJQwx-.Ҕ])_Kfxgb<ٯ-=)E☵O$6kOJQwx-.Ҕ])_Kfxgb<ٯ-=)E☵O$6kOJQwx-.js[s.' ?.hM#HssI'1dCQz.k*ƍGi.ʯ{%Qz.2lhvL[5軻<*ƍGi.ʯ{%l9cOfKp֕nmCP׹}[}&myA{?_;UI0[؎xs;]S&ظ!?rb97*LI$]@?e.Mu7t.XZj8gk{??6Uˆٻt%h:N&W0V߀F3`fn~l)p~h|_/3qp2[Vokyh^}jegkKv^{~dǾ/jMn|o8AI^zNn}N /[@@~0W1vW{8j}qso}ܓI]; O :O5RyjA}&Q՜v:R Κ`K}[i6愭iZ[sz1ey5-_YV-Z8jr[kj1;-~;v5ֺdq~9]0[|HETVܳᤞ߱5t~>aA`A`A`a8f 6 zbkOuI|j06[_Vw{uV"_Viz+ܵLb' ׶ ϻ?=?\&}"K{MGsM2_̆oٯ#?}gyHP;w; >Nߨ )6yMdS-Sh#=XSkɃ 78S`d5삶!v mJmUۣj9l̤͘ Ɍaj~E`K$bT-I bA-mMN\aB{k@j}1zoZrs5qas~N9p=`}(I6wC#BAPq=E<fpr0G1V>ѻ)]Y6cM/S=De$1Ru1wl0Ib# я^>_hn'lԏ[A[)^-> &A91z7B"m .apZU&/EA |ٟů䴎IӮG$k&4i}QDGI[MAg .Κz\RH^|oC{%Z@CLgA} |//// S/# 5 P1E0.\`q#܈"or^(&YQ )HogUscrPi 6UorYjej5Mnf6FqsFL%ӰҞp`Vn8bl6wfԔnx?n}T~5=5S+Tf.6u8c5O>7ݴa|&ฌ@Wi6Cs)qۻ|{5nKKe0_n;gg&ۢj`M[s0Eex1sop4Ɠ"S 8t|dtH;p%~1uP>Y /wd:I )*HD]^ef\}Ŧd0/Z~&Z 0dFbN[1?6EtT##2Z)WGaZD/V}*zl{+\6f7,.ZD^zyf?54"aS /_ /_ /_ /_'L({)CI5\&ǀL"qDImtX&)\;%􎒊wXutEz,dUQFBi',."K9+]aMh|6N f?Fd/%CG_OJT1IHZ@DbҠ@ /_e /_Ց_Z#/_ @~ ȯ/L~i3WWR+`ReݸIxKɺ}i/)zO-d?QhzRWWNk*UT /u+uKi귊:v0` 0` 0` 0`T0iJKMʔIqi9 ia֊}hzi?Ɍ+?0LXO9K˔eʟ@?@?@-? @Jc''bsw1He,U((׻6G_ @~ /__(%*,ӥg!ɯVV,m78~ T>|-m{) (G 6Mdwۗ,%3I:#[rDJ-JV~xDy<)/OdS;MZ~mҤtLAizU]]ΩW;n^}3hcKtT.omb+0 `0 `0 `0 f (S$_o}g-qJ~GLm0ؙpiw=$1.^x.XQb r&H?_w$??v^MILYb]eujsO[=h&G ]¶Ь㴴>_MawtӘjӄ]k-S?}MCKo{jMmcR?&J94r6aS%ՍxU3=m54)kۏƗR^bV V*)cO*_>=[_>,nˇ /b+u[R TU/*S^,~o^{I]\vN-.niJuWf|/yߝuOVmAmԽ-!ks'iۻUipYpkUiE׫fڛ꺻+:ٿtyTozb' ]^%6Ljχg4_lȣ{B@!PL hzD@ B@!P( =PB@!vb@a0P(  } ~ck;2Pk\q݊u%ڧ.)7MѕyqrH?vdݓ(+b ?fbfxG>#ҫ9e>_Vk1b$rFs_/ _/ _/ _/Lreq(tr}u VۿPuΈ )/CPm];ԍ/" ^gK=Sҥ*P`ʛ`Rmwj7{ozYě0y˱&}ihWc#Ƙ5eSaQy1/ )bW _ 5/ j'~Z zk~=MzܫƆnN3ƙN'ueowv蕋6KJ> jוZEr?cݎn??Ljq?O6(4kBU B!@ hC B!ډ ?P@(  B4ԢrrLD-4I>>/'JluU16uS= i`HCsT:S}|.Vӌ8޻F1b$5FQ^y+/ " _/ׄ / _/ygҵNU% >ImArH&%nl>؝Ja|&9pU,g9nyj#1sH7MR5@ @@ Mx@ P @ ?B(]G+V+1Z7.冹2@(QXQZ*duޣUw\J1FRyLJ|Ώ V 1 Aa/ 5[E' _ 5/ j_/ __56tNWն*A`ծ1i JYMnR [Up:?մp7Ui1?= /??]ҧ|*ɟ?A?A? A ?ȟ7*I*{1O4Jt˄6(o$(閟Kt&3FݬhU JooK:8kOQyI%4zx3M~M/^뛠\0,'N{2lhydW_._%#,^|{q@ )dG B! 5@ l'FIa0@ GMV}immB%Κmi]Tk[ 4y: XeBN*5Ʋ}AAAAAAX#`ivtools-doc/libgraphic.ps0000644000076500007650000132672307374262633016346 0ustar scottscott00000000000000%! % The following defines procedures assumed and used by program "dvi2ps" % % $Header: /cvsroot/ivtools/ivtools-doc/COPYRIGHT.proposed.txt,v 1.2 2010/01/17 00:42:06 johnston Exp $ % % Original By: Neal Holtz, Carleton University, Ottawa, Canada % % % June, 1985 % Seriously hacked by Van Jacobson, LBL % % Modifications by Glenn Trewitt, Stanford % % (incorporated by Joe Pallas, Stanford ) % To convert this file into a downloaded file instead of a header % file, uncomment all of the lines beginning with %-% %-%0000000 % Server loop exit password %-%serverdict begin exitserver %-% systemdict /statusdict known %-% {statusdict begin 9 0 3 setsccinteractive /waittimeout 300 def end} %-% if /TeXDict 200 dict def % define a working dictionary TeXDict begin % start using it. % units are in "dots" (Resolution/inch) %%%%%%%%%%%%%%%%%%%%% Page setup (user) options %%%%%%%%%%%%%%%%%%%%%%%% % dvi2ps will output coordinates in the TeX coordinate system: % (0,0) is 1" down and in from top left, with y +ive downward % 1 unit/device-pixel % The default PostScript coordinate system is: % (0,0) at bottom left, y +ive up, 72 units/inch % The following code was extensively hacked over to make it more or less % device independent, and to NOT use initgraphics and setmatrix, which make it % difficult or impossible to include a PS file in another. The general idea % is that, for each page size, we create a transformation matrix "Mtrx" that % can be concat-ed with the CTM (in @bop1). % Dvi2ps is now responsible for emitting the following, but we also do it here % for compatibility with older versions /Resolution 300 def % units are in pixels % We keep the current "normal" matrix here BEFORE we do the DVI transform % for each page. Updated at the beginning of each page; used by @special. /DefaultMatrix matrix def /Inch {Resolution mul} def % converts inches to number of pixels % KLUDGE --- To get around lack of letter, note, and legal on QMS printers % YUCK!!! wood@cascade % /letter where {pop} {/letter{}def} ifelse /legal where {pop} {/legal {}def} ifelse /note where {pop} {/note {}def} ifelse % The page selection operators used to be called here. Very wrong: % On some printers (such as LaserWriter) these operators clear the % framebuffer and initialize the graphics state. If dvi2ps output is % included in another PostScript document, or if a prolog/trailer is % wrapped around it, things would be totally screwed -- the pre-existing % image would be lost and the preset graphics state would be lost. % % These operators (note, letter, legal) do different things on different % printers -- the LaserWriter clears the frambuffer and does an % initgraphics, while other printers merely choose a paper tray. % % Page selection is properly done by a print manager (the spooler, in the % case of UN*X), and should come at the start of the whole document. % % Because of these facts, I've commented the page selection operators out. /@letter { %letter 72 Resolution div dup neg matrix scale % set scaling to 1/pixel /Mtrx exch def Mtrx 4 72 put Mtrx 5 720 put % origin to top-left } def % note mode is like letter, except it uses less VM /@note { %note 72 Resolution div dup neg matrix scale % set scaling to 1/pixel /Mtrx exch def Mtrx 4 72 put Mtrx 5 720 put % origin to top-left } def /@landscape { %letter [ 0 72 Resolution div dup 0 72 72 ] % set scaling to 1/pixel /Mtrx exch def % and origin to top-left } def /@legal { %legal 72 Resolution div dup neg matrix scale % set scaling to 1/pixel /Mtrx exch def Mtrx 4 72 put Mtrx 5 936 put % origin to top-left } def /@manualfeed { statusdict /manualfeed true put } def % n @copies - set number of copies /@copies { /#copies exch def } def %%%%%%%%%%%%%%%%%%%% Procedure Defintions %%%%%%%%%%%%%%%%%%%%%%%%%% % id @newfont - initialize a new font dictionary /@newfont { /newname exch def newname 7 dict def % allocate new font dictionary newname load begin /FontType 3 def /FontMatrix [1 0 0 -1 0 0] def /FontBBox [0 0 1 1] def /BitMaps 128 array def /BuildChar {CharBuilder} def /Encoding 128 array def 0 1 127 {Encoding exch /.undef put} for end newname newname load definefont pop } def % the following is the only character builder we need. it looks up the % char data in the BitMaps array, and paints the character if possible. % char data -- a bitmap descriptor -- is an array of length 6, of % which the various slots are: /ch-image {ch-data 0 get} def % the hex string image /ch-width {ch-data 1 get} def % the number of pixels across /ch-height {ch-data 2 get} def % the number of pixels tall /ch-xoff {ch-data 3 get} def % number of pixels below origin /ch-yoff {ch-data 4 get} def % number of pixels to left of origin /ch-tfmw {ch-data 5 get} def % spacing to next character % fontdict ch Charbuilder - -- image one character /CharBuilder { /ch-code exch def % save the char code /font-dict exch def % and the font dict. /ch-data font-dict /BitMaps get ch-code get def % get the bitmap ch-data null eq not { ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub setcachedevice ch-width ch-height true [1 0 0 1 ch-xoff ch-yoff] {ch-image} imagemask } if } def % fontdict @sf - -- make that the current font /@sf { setfont } def % in the following, the font-cacheing mechanism requires that % a name unique in the particular font be generated % char-data ch @dc - -- define a new character bitmap in current font /@dc { /ch-code exch def dup 0 get length 2 lt { pop [ <00> 1 1 0 0 8.00 ] } % replace <> with null if /ch-data exch def currentfont /BitMaps get ch-code ch-data put % generate a unique name simply from the character code currentfont /Encoding get ch-code dup ( ) cvs cvn put } def /@DRAFTF { gsave newpath /Helvetica-Bold findfont setfont (Draft) dup stringwidth pop 8.875 exch div dup 72 mul dup scale 52.3 rotate 2.5 exch div -.35 translate 0.95 setgray 0 0 moveto show grestore } def /@DRAFTM { gsave newpath /Helvetica-Bold findfont 72 scalefont setfont 0.95 setgray 576 702 moveto (Draft) stringwidth exch neg exch neg rmoveto (Draft) show grestore } def % n @bop0 - -- begin the char def section of a new page /@bop0 { pop } def % n @bop1 - -- begin a brand new page /@bop1 { pop DefaultMatrix currentmatrix pop % save it away /SaveImage save def Mtrx concat } def /@draft { /@bop1 { DefaultMatrix currentmatrix pop 1 le {@DRAFTF} {@DRAFTM} ifelse /SaveImage save def Mtrx concat } def } def % - @eop - -- end a page /@eop { SaveImage restore showpage } def % - @start - -- start everything /@start { @letter /@TeXSave save def } def % - @end - -- done the whole shebang /@end { end } def % x y p - -- move to position /p { moveto } bind def % x r - -- move right /r { 0 rmoveto } bind def % string s - -- show the string /s { show } bind def % x string m - -- move right then show string /m { exch 0 rmoveto show } bind def % ch c - -- show the character (code given) /c { c-string dup 0 4 -1 roll put show } bind def /c-string ( ) def % dx dy ru - -- set a rule (rectangle) /ru { /dy exch neg def % because dy is height up from bottom /dx exch def /x currentpoint /y exch def def % remember current point newpath x y moveto dx 0 rlineto 0 dy rlineto dx neg 0 rlineto closepath fill x y moveto } bind def /@MacSetUp { userdict /md known % if md is defined { userdict /md get type /dicttype eq % and if it is a dictionary { /MacDrwgs true def md begin % then redefine some stuff /letter {} def /note {} def /legal {} def /od{txpose 1 0 mtx defaultmatrix dtransform exch atan/pa exch def newpath clippath mark {transform{itransform moveto}} {transform{itransform lineto}} { 6 -2 roll transform 6 -2 roll transform 6 -2 roll transform { itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto } } {{closepath}} pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if }def /txpose{ pxs pys scale ppr aload pop por { noflips { pop exch neg exch translate pop 1 -1 scale }if xflip yflip and { pop exch neg exch translate 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate }if xflip yflip not and { pop exch neg exch translate pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 translate }if yflip xflip not and { ppr 1 get neg ppr 0 get neg translate }if } { noflips { translate pop pop 270 rotate 1 -1 scale }if xflip yflip and { translate pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate }if xflip yflip not and { translate pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 translate }if yflip xflip not and { translate pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 exch translate }if }ifelse scaleby96 { ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy translate .96 dup scale neg exch neg exch translate }if }def /cp {pop pop showpage pm restore}def end }if } if } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% the \special command junk %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The structure of the PostScript produced by dvi2ps for \special is: % @beginspecial % - any number of @hsize, @hoffset, @hscale, etc., commands % @setspecial % - the users file of PostScript commands % @endspecial % The @beginspecial command recognizes whether the Macintosh Laserprep % has been loaded or not, and redfines some Mac commands if so. % The @setspecial handles the users shifting, scaling, clipping commands % The following are user settable options from the \special command. /@SpecialDefaults { /hs 8.5 Inch def /vs 11 Inch def /ho 0 def /vo 0 def /hsc 1 def /vsc 1 def /CLIP false def } def % d @hsize - specify a horizontal clipping dimension % these 2 are executed before the MacDraw initializations /@hsize {/hs exch def /CLIP true def} def /@vsize {/vs exch def /CLIP true def} def % d @hoffset - specify a shift for the drwgs /@hoffset {/ho exch def} def /@voffset {/vo exch def} def % s @hscale - set scale factor /@hscale {/hsc exch def} def /@vscale {/vsc exch def} def /@setclipper { hsc vsc scale CLIP { newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip } if } def % this will be invoked as the result of a \special command (for the % inclusion of PostScript graphics). The basic idea is to change all % scaling and graphics back to defaults that were restored by the most % recent showpage, but to shift the origin to the current position on the % page. % % We draw the figure at the current location. /@beginspecial % - @beginspecial - -- enter special mode { /SpecialSave save def /showpage {} def % prevent showpage from working % the following magic incantation establishes the current point as % the users origin, and reverts back to default scalings, rotations currentpoint transform % device coords of CP DefaultMatrix setmatrix % back to "normal" CTM itransform translate % move to CP @SpecialDefaults % setup default offsets, scales, sizes @MacSetUp % fix up Mac stuff } def /@setspecial % to setup user specified offsets, scales, sizes (for clipping) { MacDrwgs {md begin /pxt ho def /pyt vo neg def end} {ho vo translate @setclipper} ifelse } def /@endspecial % - @endspecial - -- leave special mode { SpecialSave restore } def /MacDrwgs false def % will get set if we think the Mac LaserPrep file has been loaded %! % All software, documentation, and related files in this distribution of % psfig/tex are Copyright (c) 1987 Trevor J. Darrell % % Permission is granted for use and non-profit distribution of psfig/tex % providing that this notice be clearly maintained, but the right to % distribute any portion of psfig/tex for profit or as part of any commercial % product is specifically reserved for the author. % % % psfigTeX PostScript Prolog % $Header: /cvsroot/ivtools/ivtools-doc/COPYRIGHT.proposed.txt,v 1.2 2010/01/17 00:42:06 johnston Exp $ % /psf$TeXscale { 65536 div } def % Changed to use DefaultMatrix instead of currentmatrix /DocumentInitState [ /DefaultMatrix cvx currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def % x y bb-llx bb-lly bb-urx bb-ury startFig - /startTexFig { /psf$SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /psf$ury exch psf$TeXscale def /psf$urx exch psf$TeXscale def /psf$lly exch psf$TeXscale def /psf$llx exch psf$TeXscale def /psf$y exch psf$TeXscale def /psf$x exch psf$TeXscale def currentpoint /psf$cy exch def /psf$cx exch def /psf$sx psf$x psf$urx psf$llx sub div def % scaling for x /psf$sy psf$y psf$ury psf$lly sub div def % scaling for y psf$sx psf$sy scale % scale by (sx,sy) psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def @MacSetUp } def % llx lly urx ury doclip - (args in figure coordinates) /doclip { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % - endTexFig - /endTexFig { end psf$SavedState restore } def %%%% Additions by LA Carr to reencode Adobe fonts as TeX fonts (almost) %%%% Based on routine in LaserWriter Cookbook /ReEncodeForTeX { /newfontname exch def /basefontname exch def /TeXstr 30 string def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall basefontdict /MathFontName known not { /TeXvec basefontname TeXstr cvs (Courier) search { pop pop pop TeXcourvec } { pop TeXnormalvec } ifelse def TeXvec aload pop TeXvec length 2 idiv { newfont /Encoding get 3 1 roll put } repeat } if newfontname newfont definefont pop } def /TeXnormalvec [ 8#014 /fi 8#015 /fl 8#020 /dotlessi 8#022 /grave 8#023 /acute 8#024 /caron 8#025 /breve 8#026 /macron 8#027 /ring 8#030 /cedilla 8#031 /germandbls 8#032 /ae 8#033 /oe 8#034 /oslash 8#035 /AE 8#036 /OE 8#037 /Oslash 8#042 /quotedblright 8#074 /exclamdown 8#076 /questiondown 8#134 /quotedblleft 8#136 /circumflex 8#137 /dotaccent 8#173 /endash 8#174 /emdash 8#175 /hungarumlat 8#176 /tilde 8#177 /dieresis ] def /TeXcourvec [ 8#016 /exclamdown 8#017 /questiondown 8#020 /dotlessi 8#022 /grave 8#023 /acute 8#024 /caron 8#025 /breve 8#026 /macron 8#027 /ring 8#030 /cedilla 8#031 /germandbls 8#032 /ae 8#033 /oe 8#034 /oslash 8#035 /AE 8#036 /OE 8#037 /Oslash 8#074 /less 8#076 /greater 8#134 /backslash 8#136 /circumflex 8#137 /underscore 8#173 /braceleft 8#174 /bar 8#175 /braceright 8#177 /dieresis ] def /TeXPSmakefont { % defines a routine for generating PS fonts, fudged! /TeXsize exch def findfont [ TeXsize 0 0 TeXsize neg 0 0 ] makefont } def % fontname basefontname angle ObliqueFont - % Create a General Oblique font /ObliqueFont { /ObliqueAngle exch def /ObliqueBaseName exch def /ObliqueFontName exch def /ObliqueTransform [1 0 ObliqueAngle sin ObliqueAngle cos div 1 0 0] def /basefontdict ObliqueBaseName findfont ObliqueTransform makefont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName ObliqueFontName put ObliqueFontName newfont definefont pop } def % Palatino-ItalicUnslanted? You must be joking! % fontname basename SmallCapsFont - Create a General SmallCaps font /SmallCapsFont { /SmallCapsBaseName exch def /SmallCapsFontName exch def /basefontdict SmallCapsBaseName findfont def /newfont basefontdict maxlength 10 add dict def newfont begin /FontName SmallCapsFontName def /FontBaseDict basefontdict 1000 scalefont def /FontSCDict FontBaseDict .8 scalefont def /FontType 3 def /BuildChar {SmallCapChar} def /FontMatrix dup basefontdict exch get def /FontBBox dup basefontdict exch get def /Encoding dup basefontdict exch get def end SmallCapsFontName newfont definefont pop } def % fontdict ch SmallCapChar - % It shouldn't be so damn hard to do this (make one font out % of two others) but I tried several dozen variations on this % theme until I found something that worked. -- vj /SmallCapChar { /achar (A) def achar exch 0 exch put begin achar 0 get dup 97 ge exch 122 le and { % handle 'a' through 'z' specially achar 0 achar 0 get 32 sub put FontSCDict } { FontBaseDict } ifelse setfont achar stringwidth FontBBox setcachedevice newpath 0 0 moveto achar show end } def /MathEncodingVec [ /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon1 /Phi /Psi /Omega /alpha /beta /gamma /delta /epsilon /zeta /nu /theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi /omega /epsilon /theta1 /omega1 /rho /sigma /phi1 /arrowleft /arrowleft /arrowright /arrowright /suchthat /congruent /proportional /angle /zero /one /two /three /four /five /six /seven /eight /nine /period /comma /less /slash /greater /asteriskmath /partialdiff /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 /registerserif /copyrightserif /trademarkserif /logicalor /logicaland /section /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 /dotlessi /j /weierstrass /macron /breve ] def % the following gives the character codes of the above characters % in their font. I.e., this is the character we have to hand "show" % to image the characters above. /MathCharVec [ 71 68 81 76 88 80 83 161 70 89 87 97 98 103 100 101 122 110 113 105 107 108 109 110 120 112 114 115 116 117 102 99 121 119 101 74 118 114 115 106 172 172 174 174 39 64 181 208 48 49 50 51 52 53 54 55 56 57 46 44 60 47 62 42 182 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 210 211 212 218 217 167 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 245 106 195 197 198 ] def % this array tells which font dictionary holds each character above % (0 = basefont, 1 = symbol (maybe slanted), 2 = symbol (unslanted)). /MathDictVec [ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 ] def % fontname basename symbolname symbolbase angle MathOblique - % Create a "math" font with the symbol font characters slanted % by "angle" /MathOblique { 3 copy ObliqueFont pop pop MathFont } def % fontname basename symbolname MathFont - Create a math italic font % % We build this font out of the base font & the symbol font % using an encoding vec as close as we can get to cmmi10 with % standard postscript characters. An array parallel to the % encoding vector tells which font dictionary to use for a % particular character. /MathFont { /MathSymName exch def /MathBaseName exch def /MathFontName exch def /basefontdict MathBaseName findfont def /newfont basefontdict maxlength 10 add dict def newfont begin /FontName MathFontName def /FontDictArray [ basefontdict 1000 scalefont MathSymName findfont 950 scalefont /Symbol findfont 950 scalefont ] def /FontType 3 def /BuildChar {MathFontChar} def /FontMatrix dup basefontdict exch get def /FontBBox dup basefontdict exch get def % the encoding vector is a copy of the original font's % encoding, modified "appropriately". /Encoding dup basefontdict exch get dup length array copy def /WhichFont MathDictVec def /WhichChar MathCharVec def MathEncodingVec Encoding copy pop /achar (A) def end MathFontName newfont definefont pop } def % fontdict ch MathFontChar - % (there's some serious magic going on here: see note on % SmallCapChar above -- vj). /MathFontChar { exch begin achar exch 0 exch put FontDictArray WhichFont achar 0 get get get setfont achar dup 0 get WhichChar exch get 0 exch put achar stringwidth FontBBox setcachedevice newpath 0 0 moveto achar show end } bind def /@flushfonts { @TeXSave restore /@TeXSave save def} def end % revert to previous dictionary TeXDict begin %%Title: draft.dvi %%Creator: dvi2ps %%EndProlog /Resolution 300.000000 def @start 1 @bop0 /Times-Roman /t-rom.510 ReEncodeForTeX /t-rom.510 /t-rom.510 70.568701 TeXPSmakefont def /Times-Roman /t-rom.360 ReEncodeForTeX /t-rom.360 /t-rom.360 49.813200 TeXPSmakefont def /Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.115401 TeXPSmakefont def /Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.511000 TeXPSmakefont def /Times-Bold /t-bol.300 ReEncodeForTeX /t-bol.300 /t-bol.300 41.511000 TeXPSmakefont def /Times-Italic /t-ita.300 ReEncodeForTeX /t-ita.300 /t-ita.300 41.511000 TeXPSmakefont def /Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.208800 TeXPSmakefont def 1 @bop1 t-rom.510 @sf 152 160 p (Applying)s 24(Object-Oriented)m 25(Design)m 24(to)m 24(Structured)m 25(Graphics)m t-rom.360 @sf 578 281 p (John)s 17(M.)m 17(Vlissides)m 17(and)m 17(Mark)m 16(A.)m 17(Linton)m 776 339 p (Stanford)s 15(University)m t-bol.420 @sf 0 460 p (Abstract)s t-rom.300 @sf 0 553 p (Structured)s 13(graphics)m 14(is)m 14(useful)m 13(for)m 14(buildin)m -1 r 103 c 12(applications)m 0 603 p (that)s 24(use)m 25 r 97 c 26(direct)m 24(manipulation)m 23(metaphor)m -1 r 46 c 50(Object-)m 0 652 p (oriented)s 23(languages)m 25(of)m (fer)s 23(inheritance,)m 26(encapsulation,)m 0 702 p (and)s 16(runtime)m 14(binding)m 14(of)m 15(operations)m 15(to)m 15(objects.)m 24(Unfor-)m 0 752 p (tunately)s -2 r 44 c 12(standard)m 13(structured)m 12(graphics)m 13(packages)m 14(do)m 13(not)m 0 802 p (use)s 13(an)m 13(object-oriented)m 11(model,)m 13(and)m 13(object-oriented)m 11(sys-)m 0 852 p (tems)s 13(do)m 11(not)m 12(provide)m 11(general-purpose)m 11(structured)m 12(graph-)m 0 901 p (ics,)s 19(relying)m 16(instead)m 17(on)m 17(low-level)m 16(graphics)m 17(primitives.)m 0 951 p (An)s 24(object-oriented)m 23(approach)m 24(to)m 24(structured)m 23(graphics)m 0 1001 p (can)s 14(give)m 12(application)m 12(programmers)m 13(the)m 13(bene\014ts)m 13(of)m 13(both)m 0 1051 p (paradigms.)s 42 1101 p 87 c -2 r 101 c 11(have)m 12(implemented)m 12 r 97 c 13(two-dimensional)m 10(structured)m 0 1150 p (graphics)s 9(library)m 9(in)m 9(C++)m 10(that)m 9(presents)m 10(an)m 10(object-oriented)m 0 1200 p (model)s 15(to)m 15(the)m 15(programmer)m -1 r 46 c 23(The)m t-bol.300 @sf 16(graphic)m t-rom.300 @sf 15(class)m 16(de\014nes)m 0 1250 p 97 c 18(general)m 18(graphical)m 18(object)m 17(from)m 17(which)m 18(all)m 17(others)m 17(are)m 0 1300 p (derived.)s 36(The)m t-bol.300 @sf 20(pictur)m 101 c t-rom.300 @sf 20(subclass)m 20(supports)m 18(hierarchical)m 0 1350 p (composition)s 9(of)m 11(graphics.)m 17(Programmers)m 12(can)m 11(de\014ne)m 12(new)m 0 1400 p (graphical)s 10(objects)m 11(either)m 10(statically)m 10(by)m 10(subclassing)m 10(or)m 11(dy-)m 0 1449 p (namically)s 14(by)m 13(composing)m 13(instances)m 14(of)m 14(existing)m 12(classes.)m 0 1499 p 87 c -2 r 101 c 18(have)m 20(used)m 19(both)m 17(this)m 18(library)m 18(and)m 19(an)m 19(earlier)m -1 r 44 c 20(non-)m 0 1549 p (object-oriented)s 15(library)m 15(to)m 16(implement)m 16 r 97 c 17(MacDraw-like)m 0 1599 p (drawing)s 17(editor)m -1 r 46 c 29 r 87 c -2 r 101 c 18(discuss)m 18(the)m 18(fundamentals)m 18(of)m 17(the)m 0 1649 p (object-oriented)s 10(design)m 11(and)m 11(its)m 11(advantages)m 12(based)m 12(on)m 11(our)m 0 1698 p (experiences)s 15(with)m 12(both)m 13(libraries.)m t-bol.420 @sf 0 1837 p 49 c 58(Intr)m (oduction)s t-rom.300 @sf 0 1929 p (Many)s 39(software)m 39(packages)m 40(have)m 40(been)m 39(developed)m 0 1979 p (that)s 21(support)m 20(device-independent)m 21(interactive)m 21(graphics)m 0 2029 p 91 c 49 c 44 c 51 c 44 c 52 c 44 c 54 c 44 c 55 c (].)s 50(These)m 25(packages)m 25(provide)m 23(various)m 24(ways)m 0 2079 p (to)s 19(produce)m 20(graphical)m 19(output.)m 36(In)m t-ita.300 @sf 19(immediate-mode)m t-rom.300 @sf 44 c 21 r 97 c 0 2129 p (graphical)s 12(element)m 13(such)m 13(as)m 13 r 97 c 13(line)m 11(appears)m 14(on)m 12(the)m 12(screen)m 0 2178 p (as)s 18(soon)m 18(as)m 18(it)m 17(is)m 17(speci\014ed.)m 32(Several)m 18(packages)m 19(provide)m 0 2228 p (procedures)s 14(for)m 14(adding)m 13(graphical)m 13(elements)m 15(to)m 14 r 97 c t-ita.300 @sf 14(display)m 0 2278 p (list)s t-rom.300 @sf 59 c 11(the)m 11(elements)m 12(appear)m 13(on)m 11(the)m 11(screen)m 13(after)m 12(an)m 11(explicit)m 0 2328 p (call)s 12(to)m 11(draw)m 12(the)m 12(display)m 11(list.)m 17(Graphical)m 11(elements)m 13(in)m 11(the)m 0 2378 p (list)s 16(can)m 18(be)m 18(stored)m 17(as)m 18(data)m 17(or)m 17(as)m 18(procedural)m 17(speci\014ca-)m 0 2427 p (tions.)s t-ita.300 @sf 17(Structur)m -1(ed)m 11(graphics)m t-rom.300 @sf 12(packages)m 14(allow)m 12(elements)m 13(in)m 0 2477 p 97 c 12(display)m 11(list)m 11(to)m 12(be)m 12(lists)m 11(themselves,)m 13(making)m 12(it)m 11(possible)m 0 2527 p (to)s 13(compose)m 15(hierarchies)m 13(of)m 14(graphical)m 13(elements.)m 42 2577 p (Application)s 26(programs)m 28(designed)m 27(for)m 28(workstations)m 0 2627 p (make)s 12(extensive)m 11(use)m 11(of)m 11(graphics)m 11(in)m 10(their)m 10(user)m 11(interfaces.)m 0 2659 p 366 2 ru t-rom.240 @sf 60 2698 p 84 c -1 r 111 c 9(appear)m 8(in)m 10(the)m 10(Proceedings)m 9(of)m 10(the)m 10(USENIX)m 11(C++)m 10(Conference,)m 0 2737 p (Denver)s -1 r 44 c 10(Colorado,)m 10(October)m 10(1988.)m t-rom.300 @sf 1035 460 p (Many)s 15(programs)m 15(such)m 16(as)m 16(drawing)m 14(and)m 16(schematics)m 16(edi-)m 1035 510 p (tors)s 16(let)m 16(the)m 17(user)m 17(manipulate)m 16(graphical)m 17(representations)m 1035 560 p (of)s 16(familiar)m 17(objects.)m 27(Structured)m 16(graphics)m 16(can)m 18(simplify)m 1035 610 p (the)s 11(implementation)m 10(of)m 11(such)m 12(applications)m 10(because)m 13(much)m 1035 659 p (of)s 11(the)m 11(functionality)m 9(required)m 11(is)m 11(already)m 11(implemented)m 12(in)m 1035 709 p (the)s 10(graphics)m 10(package.)m 19(For)m 10(example,)m 12(drawing)m 9(editor)m 10(op-)m 1035 759 p (erations)s 15(for)m 16(translating)m 14(and)m 16(scaling)m 15(geometric)m 16(shapes,)m 1035 809 p (enlar)s (ging)s 18(and)m 20(reducing)m 19(the)m 20(drawing,)m 21(and)m 20(storing)m 19(its)m 1035 859 p (representation)s 11(are)m 12(supported)m 10(by)m 11(most)m 11(structured)m 11(graph-)m 1035 908 p (ics)s 16(packages.)m 26(Graphical)m 16(hierarchies)m 16(could)m 15(be)m 17(used)m 16(to)m 1035 958 p (compose)s 15(and)m 14(manipulate)m 13(groups)m 13(of)m 14(notes)m 14(on)m 13(staves)m 15(in)m 1035 1008 p 97 c 17(music)m 17(editor)m -1 r 46 c 25 r 65 c 17(project)m 16(management)m 18(system)m 17(could)m 1035 1058 p (de\014ne)s 18(the)m 18(elements)m 18(of)m 17(bubble)m 17(charts)m 18(using)m 16(graphical)m 1035 1108 p (primitives)s 10(and)m 12(allow)m 12(structural)m 11(changes)m 12(to)m 12(be)m 12(made)m 13(in-)m 1035 1157 p (teractively)s 13(using)m 13(display)m 13(list)m 12(editing)m 12(operations.)m 1076 1225 p (However)s -1 r 44 c 20(there)m 19(are)m 19(drawbacks)m 19(to)m 18(using)m 18(structured)m 1035 1275 p (graphics.)s 39(The)m 21(library)m 19(of)m 20(procedures)m 21(that)m 20(comprises)m 1035 1325 p (such)s 18(packages)m 19(is)m 18(often)m 17(lar)m (ge)s 17(and)m 18(monolithi)m -1(c,)m 18(rich)m 18(in)m 1035 1374 p (functionalit)s -1 r 121 c 17(but)m 17(dif)m (\014cult)s 16(for)m 18(the)m 18(programmer)m 19(to)m 18(ex-)m 1035 1424 p (tend.)s 19(Extensibility)m 12(usually)m 13(requires)m 14(access)m 16(to)m 13(and)m 14(ma-)m 1035 1474 p (nipulation)s 13(of)m 15(internal)m 14(data)m 16(structures,)m 16(but)m 14(such)m 16(access)m 1035 1524 p (is)s 12(dangerous)m 11(and)m 12(can)m 13(compromise)m 12(the)m 12(reliability)m 10(of)m 11(the)m 1035 1574 p (system.)s 28(Also,)m 17(it)m 16(is)m 16(often)m 16(dif)m (\014cult)s 15(to)m 16(edit)m 16(and)m 16(manip-)m 1035 1623 p (ulate)s 19(the)m 18(display)m 18(list,)m 20(particularly)m 17(when)m 19(its)m 18(elements)m 1035 1673 p (are)s 15(represented)m 15(procedurally)m -2 r 44 c 14(because)m 16(there)m 14(is)m 15(no)m 14(way)m 1035 1723 p (to)s 18(refer)m 19(to)m 19(graphic)m 18(and)m 19(geometric)m 19(attributes)m 17(directly)m -2 r 46 c 1035 1773 p (Editing)s 11(the)m 12(display)m 12(list)m 11(may)m 13(be)m 13(inef)m (\014cient)s 11(as)m 13(well.)m 18(For)m 1035 1823 p (example,)s 21(if)m 17(the)m 18(display)m 18(list)m 17(is)m 18(compiled)m 18(into)m 17 r 97 c 19(more)m 1035 1873 p (quickly)s 16(executed)m 18(form,)m 19(then)m 17(the)m 17(list)m 16(must)m 18(be)m 17(recom-)m 1035 1922 p (piled)s 13(following)m 11(editing)m 12(before)m 14(it)m 13(can)m 15(be)m 14(drawn.)m 19(These)m 1035 1972 p (de\014ciencies)s 16(make)m 16(it)m 14(likely)m 14(that)m 14(the)m 15(structure)m 14(provided)m 1035 2022 p (by)s 15(the)m 15(package)m 16(will)m 13(not)m 15(map)m 15(well)m 15(to)m 15(that)m 14(required)m 14(by)m 1035 2072 p (the)s 13(application,)m 12(forcing)m 11(the)m 13(programmer)m 13(to)m 12(de\014ne)m 14(data)m 1035 2122 p (structures)s 13(and)m 14(procedures)m 14(that)m 13(parallel)m 13(the)m 14(library')m -2(s.)m 1076 2189 p (An)s 17(object-oriented)m 15(design)m 16(of)m (fers)s 15(solutions)m 15(to)m 16(these)m 1035 2239 p (problems.)s 34(Intrinsic)m 18(to)m 19(object-oriented)m 17(languages)m 19(are)m 1035 2289 p (facilities)s 21(for)m 21(data)m 23(hiding)m 20(and)m 22(protection,)m 23(extensibil-)m 1035 2339 p (ity)s 12(and)m 14(code)m 14(sharing)m 13(through)m 11(inheritance,)m 14(and)m 13(\015exibil-)m 1035 2388 p (ity)s 16(through)m 15(runtime)m 16(binding)m 15(of)m 16(operations)m 16(to)m 16(objects.)m 1035 2438 p (However)s -1 r 44 c 15(existing)m 13(object-oriented)m 14(programming)m 14(envi-)m 1035 2488 p (ronments)s 13 r 91 c 53 c 44 c 57 c 93 c 14(rely)m 13(on)m 13(immediate-mode)m 14(graphics,)m 14(and)m 1035 2538 p (object-oriented)s 16(user)m 17(interface)m 18(packages)m 18 r 91 c 50 c 44 c 49 c -1 r 49 c -1 r 93 c 17(do)m 17(not)m 1035 2588 p (support)s 14(general-purpose)m 14(structured)m 15(graphics.)m 23(Ida)m 15 r 91 c (15)s -1 r 93 c 1035 2637 p (uses)s 22(an)m 21(object-oriented)m 19(framework)m 22(that)m 20(decomposes)m 1035 2687 p (structured)s 16(graphics)m 17(into)m 15 r 97 c 17(set)m 17(of)m 17(building)m 14(blocks)m 17(that)m 1035 2737 p (communicate)s 14(via)m 13(message)m 14(passing.)m 18(Ida)m 14(supports)m 11(high-)m @eop 2 @bop0 /cmsy10.300 @newfont cmsy10.300 @sf [<07E0001FF8003FFC007FFE007FFE00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF007FFE007FFE00 3FFC001FF80007E000> 24 16 -2 -2 20.755] 15 @dc /Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.813200 TeXPSmakefont def /Courier /c-med.300 ReEncodeForTeX /c-med.300 /c-med.300 41.666629 TeXPSmakefont def 2 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 50 c 13 r 45 c 0 154 p (level)s 20(functionalit)m -1 r 121 c 18(such)m 20(as)m 20(scrolling,)m 21(though)m 18(it)m 19(does)m 0 203 p (not)s 12(provide)m 11(some)m 13(graphical)m 12(capabilities)m 12(that)m 12(structured)m 0 253 p (graphics)s 16(systems)m 18(usually)m 15(have,)m 19(such)m 17(as)m 17(rotations)m 15(and)m 0 303 p (composite)s 13(transformations.)m 42 353 p 87 c -2 r 101 c 12(have)m 14(developed)m 13 r 97 c 14(C++)m 14 r 91 c (12)s 93 c 13(library)m 12(of)m 14(graphical)m 0 403 p (objects)s 11(that)m 10(can)m 12(be)m 11(composed)m 12(to)m 10(form)m 11(two-dimensional)m 0 453 p (pictures.)s 18(The)m 12(library)m 10(is)m 12 r 97 c 12(part)m 11(of)m 11(the)m 12(InterV)m -1(i)m -1(ews)m 11(graph-)m 0 502 p (ical)s 12(interface)m 13(toolkit)m 10 r 91 c 56 c -1 r 93 c 12(and)m 13(runs)m 11(on)m 12(top)m 12(of)m 12(the)m 12 r 88 c 12(win-)m 0 552 p (dow)s 16(system)m 17 r 91 c (10)s -1(].)m 27(Our)m 17(aim)m 16(was)m 18(to)m 16(learn)m 16(how)m 16(inheri-)m 0 602 p (tance)s 12(and)m 12(encapsulation)m 11(could)m 11(be)m 12(used)m 12(in)m 11(the)m 11(design)m 11(of)m 0 652 p 97 c 15(structured)m 14(graphics)m 14(library)m -2 r 46 c 19 r 65 c 15(base)m 15(class)m t-bol.300 @sf 16(graphic)m t-rom.300 @sf 14(is)m 0 702 p (de\014ned)s 18(from)m 17(which)m 17(all)m 16(other)m 17(structured)m 17(graphics)m 17(ob-)m 0 752 p (jects)s 15(are)m 16(derived.)m 23 r 87 c -2 r 101 c 14(show)m 15(how)m 15 r 97 c 16(hierarchy)m 15(of)m 15(these)m 0 801 p (primitives)s 18(can)m 21(be)m 20(composed)m 21(to)m 19(form)m 20(more)m 20(complex)m 0 851 p (graphics)s 18(and)m 18(how)m 17(features)m 19(such)m 18(as)m 19(hit)m 17(detection)m 17(and)m 0 901 p (incremental)s 21(screen)m 22(update)m 21(are)m 22(incorporated)m 20(into)m 19(the)m 0 951 p (model.)s 38 r 87 c -2 r 101 c 20(also)m 20(compare)m 21(this)m 19(library)m 19(to)m 20(an)m 20(earlier)m -1 r 44 c 0 1001 p (non-object-ori)s -1(ented)m 14(structured)m 14(graphics)m 15(library)m 15(imple-)m 0 1050 p (mented)s 18(in)m 16(Modula-2)m -1 r 44 c 19(relating)m 16(experiences)m 18(we)m 18(had)m 18(in)m 0 1100 p (using)s 9(each)m 11(library)m 9(to)m 10(implement)m 9 r 97 c 11(MacDraw-like)m 10(draw-)m 0 1150 p (ing)s 13(editor)m -2 r 46 c t-bol.420 @sf 0 1291 p 50 c 58(Class)m 22(Organization)m t-rom.300 @sf 0 1384 p (The)s 11(graphic)m 9(class)m 11(and)m 10(derived)m 10(classes)m 11(collectively)m 9(form)m 0 1434 p (the)s 16(Graphic)m 16(library)m -2 r 46 c 25(The)m 17(class)m 17(hierarchy)m 17(is)m 16(shown)m 16(in)m 0 1484 p (Figure)s 13(1.)m 18(Its)m 13(design)m 12(was)m 14(guided)m 12(by)m 13(the)m 13(desire)m 13(to)m 12(share)m 0 1533 p (code)s 18(as)m 18(much)m 17(as)m 18(possible)m 17(without)m 15(compromising)m 16(the)m 0 1583 p (logical)s 13(relationships)m 12(between)m 14(the)m 14(classes.)m 42 1633 p (The)s 17(derived)m 16(classes)m 18(de\014ne)m 18(the)m 16(following)m 15(graphical)m 0 1683 p (objects:)s cmsy10.300 @sf 42 1775 p 15 c t-bol.300 @sf 20(Point)m t-rom.300 @sf 44 c t-bol.300 @sf 19(Line)m t-rom.300 @sf 44 c t-bol.300 @sf 20(MultiLine)m t-rom.300 @sf 58 c 26 r 97 c 19(point,)m 18 r 97 c 19(line,)m 19(and)m 19 r 97 c 83 1825 p (number)s 14(of)m 13(connected)m 14(lines)m cmsy10.300 @sf 42 1909 p 15 c t-bol.300 @sf 20(Rect)m t-rom.300 @sf 44 c t-bol.300 @sf 15(FillRect)m t-rom.300 @sf 58 c 18(open)m 13(and)m 14(\014lled)m 13(rectangles)m cmsy10.300 @sf 42 1993 p 15 c t-bol.300 @sf 20(Ellipse)m t-rom.300 @sf 44 c t-bol.300 @sf 13(FillElli)m -1(pse)m t-rom.300 @sf 58 c 17(open)m 14(and)m 13(\014lled)m 14(ellipses)m cmsy10.300 @sf 42 2076 p 15 c t-bol.300 @sf 20(Cir)m (cle)s t-rom.300 @sf 44 c t-bol.300 @sf 14(FillCir)m (cle)s t-rom.300 @sf 58 c 16(open)m 14(and)m 14(\014lled)m 13(circles)m cmsy10.300 @sf 42 2160 p 15 c t-bol.300 @sf 20(Polygon)m t-rom.300 @sf 44 c t-bol.300 @sf 13(FillPolygon)m t-rom.300 @sf 58 c 16(open)m 14(and)m 14(\014lled)m 13(polygons)m cmsy10.300 @sf 42 2244 p 15 c t-bol.300 @sf 20(BSpline)m t-rom.300 @sf 44 c t-bol.300 @sf 30(ClosedBSpline)m t-rom.300 @sf 44 c t-bol.300 @sf 31(FillBSpline)m t-rom.300 @sf 58 c 50(open,)m 83 2294 p (closed)s 14(and)m 14(\014lled)m 13(B-splines)m cmsy10.300 @sf 42 2378 p 15 c t-bol.300 @sf 20(Label)m t-rom.300 @sf 58 c 18 r 97 c 14(string)m 12(of)m 14(text)m cmsy10.300 @sf 42 2461 p 15 c t-bol.300 @sf 20(Pictur)m 101 c t-rom.300 @sf 58 c 18 r 97 c 15(collection)m 12(of)m 14(graphics)m cmsy10.300 @sf 42 2545 p 15 c t-bol.300 @sf 20(Instance)m t-rom.300 @sf 58 c 19 r 97 c 14(reference)m 15(to)m 14(another)m 13(graphic)m 42 2637 p (All)s 15(graphics)m 17(maintain)m 16(graphics)m 16(state)m 17(and)m 17(geometry)m 0 2687 p (information.)s 40(Graphics)m 21(state)m 22(parameters)m 23(are)m 22(de\014ned)m 0 2737 p (in)s 16(separate)m 17(base)m 18(classes.)m 28(These)m 18(include)m t-bol.300 @sf 15(transformer)m t-rom.300 @sf 1035 154 p (\(transformation)s 17(matrix\),)m t-bol.300 @sf 21(color)m t-rom.300 @sf 44 c t-bol.300 @sf 20(pattern)m t-rom.300 @sf 20(\(for)m 18(stippled)m 1035 203 p (area)s 18(\014lls\),)m t-bol.300 @sf 17(brush)m t-rom.300 @sf 17(\(for)m 16(line)m 16(drawing\),)m 17(and)m t-bol.300 @sf 17(font)m t-rom.300 @sf 46 c 27(Each)m 1035 253 p (graphics)s 17(state)m 18(class)m 18(implements)m 18(operations)m 16(for)m 17(de\014n-)m 1035 303 p (ing)s 15(and)m 16(modifying)m 14(its)m 15(attributes.)m 24(For)m 16(example,)m 17(trans-)m 1035 353 p (formers)s 14(have)m 15(translation,)m 13(scaling,)m 14(rotation,)m 13(and)m 15(matrix)m 1035 403 p (multipli)s -1(cation)m 12(operations,)m 13(and)m 14(colors)m 13(allow)m 14(their)m 13(com-)m 1035 452 p (ponent)s 13(intensities)m 12(to)m 13(be)m 14(varied.)m 1076 503 p 65 c 22(structured)m 20(graphics)m 21(package)m 23(should)m 20(be)m 21(able)m 22(to)m 1035 552 p (transfer)s 13(its)m 12(graphical)m 12(representations)m 13(to)m 12(and)m 13(from)m 12(disk.)m 1035 602 p (GKS)s 24(uses)m 24(\\meta\014les")m 25(for)m 23(this)m 23(purpose.)m 48(The)m 24(\014les)m 1035 652 p (PHIGS)s 11(uses)m 12(are)m 12(called)m 12(\\archives.")m 19(Both)m 10(packages)m 13(pro-)m 1035 702 p (vide)s 18(procedures)m 19(for)m 18(saving)m 18(and)m 18(retrieving)m 17(structures,)m 1035 752 p (for)s 9(querying)m 9(structures)m 9(by)m 9(name,)m 12(and)m 10(for)m 9(deleting)m 8(struc-)m 1035 801 p (tures)s 14(from)m 13(the)m 14(\014le.)m 1076 852 p (The)s 18(approach)m 17(used)m 17(by)m 16(these)m 17(packages)m 18(requires)m 16(the)m 1035 901 p (programmer)s 15(to)m 15(save)m 16(and)m 15(retrieve)m 15(structures)m 14(explicitly)m -2 r 46 c 1035 951 p (The)s 21(Graphic)m 19(library)m 19(uses)m 21(persistent)m 19(objects)m 19(to)m 20(auto-)m 1035 1001 p (matically)s 11(manage)m 12(the)m 12(storage)m 11(of)m 11(graphics.)m 17(The)m 12(graphic)m 1035 1051 p (class)s 11(and)m 11(graphics)m 10(state)m 10(classes)m 12(are)m 11(derived)m 10(from)m 10 r 97 c t-bol.300 @sf 11(per-)m 1035 1101 p (sistent)s t-rom.300 @sf 11(class)m 11(that)m 10(provides)m 10(transparent)m 10(access)m 13(to)m 10(objects)m 1035 1150 p (whether)s 12(they)m 12(are)m 13(in)m 11(memory)m 13(or)m 12(on)m 11(disk.)m 18(Persistent)m 12(ob-)m 1035 1200 p (jects)s 15(are)m 17(faulted)m 14(in)m 15(from)m 15(disk)m 15(when)m 15(they)m 15(are)m 16(\014rst)m 15(ref-)m 1035 1250 p (erenced,)s 17(and)m 15(\\dirty")m 15(objects)m 15(are)m 16(written)m 14(to)m 15(disk)m 14(when)m 1035 1300 p (the)s 14(client)m 13(program)m 13(exits.)m t-bol.420 @sf 1035 1442 p 51 c 58(Graphic)m t-rom.300 @sf 1035 1535 p (The)s 25(graphic)m 24(base)m 25(class)m 25(contains)m 24 r 97 c 25(minimal)m 24(set)m 24(of)m 1035 1585 p (graphics)s 31(state)m 32(including)m 29 r 97 c 32(transformer)m 31(and)m 31(fore-)m 1035 1634 p (ground/backgroun)s -1 r 100 c 16(colors.)m 30(Derived)m 18(classes)m 19(maintain)m 1035 1684 p (additional)s 13(graphics)m 15(state)m 16(according)m 15(to)m 14(their)m 15(indivi)m -1(dual)m 1035 1734 p (semantics.)s 19(For)m 10(example,)m 13(the)m 11(label)m 11(class)m 12(includes)m 10 r 97 c 12(font)m 1035 1784 p (in)s 13(addition)m 13(to)m 13(inherited)m 13(state,)m 15(\014lled)m 13(objects)m 14(maintain)m 14 r 97 c 1035 1834 p (pattern,)s 13(and)m 14(outline)m 12(objects)m 14(include)m 13 r 97 c 14(brush.)m t-bol.360 @sf 1035 1954 p (3.1)s 50(Operations)m t-rom.300 @sf 1035 2032 p (All)s 14(graphics)m 14(implement)m 14 r 97 c 15(set)m 15(of)m 14(operations)m 14(de\014ned)m 15(in)m 1035 2082 p (the)s 14(base)m 14(class.)m 20(These)m 15(include)m 13(operations)m 12(for)m cmsy10.300 @sf 1076 2166 p 15 c t-rom.300 @sf 21(drawing)m 12(and)m 12(erasing,)m 13(optionally)m 10(clipped)m 12(to)m 12 r 97 c 13(rect-)m 1118 2216 p (angle,)s cmsy10.300 @sf 1076 2300 p 15 c t-rom.300 @sf 21(setting)m 13(and)m 13(retrieving)m 13(graphics)m 13(state)m 14(values,)m cmsy10.300 @sf 1076 2385 p 15 c t-rom.300 @sf 21(translating,)m 12(scaling,)m 14(and)m 14(rotating,)m cmsy10.300 @sf 1076 2469 p 15 c t-rom.300 @sf 21(obtaining)m 12 r 97 c 14(bounding)m 12(box,)m 13(and)m cmsy10.300 @sf 1076 2553 p 15 c t-rom.300 @sf 21(ascertaining)m 13(whether)m 13(the)m 13(graphic)m 13(contains)m 13 r 97 c 14(point)m 1118 2603 p (or)s 13(intersects)m 14 r 97 c 14(rectangle.)m 1076 2687 p (The)s c-med.300 @sf 16(Contains)m t-rom.300 @sf 15(and)m c-med.300 @sf 15(Intersects)m t-rom.300 @sf 15(operations)m 14(are)m 1035 2737 p (useful)s 17(for)m 17(hit)m 16(detection.)m 29(Their)m 18(de\014nitions)m 15(are)m 19(shown)m @eop 3 @bop0 /Courier /c-med.270 ReEncodeForTeX /c-med.270 /c-med.270 37.499947 TeXPSmakefont def 3 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 51 c 13 r 45 c 0 1321 p @beginspecial 10.000000 @hoffset 0.000000 @voffset 0.650000 @hscale 0.750000 @vscale @setspecial %!PS-Adobe- %%DocumentFonts: Courier %%Pages: 1 %%BoundingBox: 16 7 646 294 %%EndComments /arrowheight 8 def /arrowwidth 4 def /none null def /numgraphicparameters 10 def /Begin { save numgraphicparameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushrightarrow idef false /brushleftarrow idef 1 /brushwidth idef 0 /brushdashoffset idef [] /brushdasharray idef true /brushnone idef } { 0 ne /brushrightarrow idef 0 ne /brushleftarrow idef /brushwidth idef /brushdashoffset idef /brushdasharray idef false /brushnone idef } ifelse } def /SetF { /printsize idef /printfont idef } def /SetP { dup type /nulltype eq { pop -1 /patterngraylevel idef true /patternnone idef } { /patterngraylevel idef false /patternnone idef } ifelse } def /BSpl { 0 begin storexyn newpath 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternnone not brushleftarrow not brushrightarrow not and and { ifill } if brushnone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternnone not { ifill } if brushnone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternnone not { ifill } if brushnone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin /savedCTM matrix currentmatrix def newpath 4 2 roll translate scale 0 0 1 0 360 arc savedCTM setmatrix patternnone not { ifill } if brushnone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushnone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternnone not brushleftarrow not brushrightarrow not and and { ifill } if brushnone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternnone not { ifill } if brushnone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternnone not { ifill } if brushnone not { istroke } if end } dup 0 4 dict put def /Text { patternnone not { ishow } { pop } ifelse } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { gsave patterngraylevel setgray eofill grestore } def /istroke { gsave brushdashoffset -1 eq { [] 0 setdash 1 setgray } { brushdasharray brushdashoffset setdash 0 setgray } ifelse brushwidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave 0 2.5 originalCTM dtransform idtransform /yoff exch def /xoff exch def printfont /Courier ne printsize 10 ne and { xoff yoff translate } if printfont findfont printsize scalefont setfont patterngraylevel setgray /vertoffset printsize neg def { 0 vertoffset moveto show /vertoffset vertoffset printsize sub def } forall grestore end } dup 0 3 dict put def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowheight neg arrowwidth 2 div lineto arrowheight neg arrowwidth 2 div neg lineto closepath patternnone not { ifill } if brushnone not { istroke } if grestore end } dup 0 7 dict put def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushleftarrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushrightarrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 1 gsave [ 1 0 0 1 0 0 ] concat /originalCTM matrix currentmatrix def grestore Begin %I Pict %I b u %I f u %I p u [1 0 0 1 0 0] concat %I t 1 0 0 1 0 0 Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1.12903 0 0 1 -14.2258 -375] concat %I t 1.12903 0 0 1 -14.2258 -375 56 624 552 624 Line %I 56 624 552 624 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 0.8 -95 -311] concat %I t 1 0 0 0.8 -95 -311 304 640 304 600 Line %I 304 640 304 600 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 0.8 145 -311] concat %I t 1 0 0 0.8 145 -311 304 640 304 600 Line %I 304 640 304 600 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 0.8 225 -311] concat %I t 1 0 0 0.8 225 -311 304 640 304 600 Line %I 304 640 304 600 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 -95 -359] concat %I t 1 0 0 1 -95 -359 224 544 304 544 Line %I 224 544 304 544 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 -23 -359] concat %I t 1 0 0 1 -23 -359 392 544 472 544 Line %I 392 544 472 544 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 0.8 -175 -375] concat %I t 1 0 0 0.8 -175 -375 304 640 304 600 Line %I 304 640 304 600 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 0.8 65 -375] concat %I t 1 0 0 0.8 65 -375 304 640 304 600 Line %I 304 640 304 600 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 0.8 65 -439] concat %I t 1 0 0 0.8 65 -439 304 640 304 600 Line %I 304 640 304 600 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 0.8 145 -375] concat %I t 1 0 0 0.8 145 -375 304 640 304 600 Line %I 304 640 304 600 End Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 213 -271] concat %I t 1 0 0 1 213 -271 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 320 283.5] concat %I t 1 0 0 1 320 283.5 %I Graphic [ (Graphic) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 209 -267] concat %I t 1 0 0 1 209 -267 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 316 287.5] concat %I t 1 0 0 1 316 287.5 %I Graphic [ (Graphic) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 5 -335] concat %I t 1 0 0 1 5 -335 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 118 219.5] concat %I t 1 0 0 1 118 219.5 %I Label [ (Label) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 1 -331] concat %I t 1 0 0 1 1 -331 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 114 223.5] concat %I t 1 0 0 1 114 223.5 %I Label [ (Label) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 165 -335.5] concat %I t 1 0 0 1 165 -335.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 278 219] concat %I t 1 0 0 1 278 219 %I Point [ (Point) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 161 -331.5] concat %I t 1 0 0 1 161 -331.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 274 223] concat %I t 1 0 0 1 274 223 %I Point [ (Point) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 85 -335.5] concat %I t 1 0 0 1 85 -335.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 192 219] concat %I t 1 0 0 1 192 219 %I Ellipse [ (Ellipse) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 81 -331.5] concat %I t 1 0 0 1 81 -331.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 188 223] concat %I t 1 0 0 1 188 223 %I Ellipse [ (Ellipse) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 245 -335.5] concat %I t 1 0 0 1 245 -335.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 361 219] concat %I t 1 0 0 1 361 219 %I Line [ (Line) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 241 -331.5] concat %I t 1 0 0 1 241 -331.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 357 223] concat %I t 1 0 0 1 357 223 %I Line [ (Line) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 325 -335.5] concat %I t 1 0 0 1 325 -335.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 426 219] concat %I t 1 0 0 1 426 219 %I MultiLine [ (MultiLine) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 321 -331.5] concat %I t 1 0 0 1 321 -331.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 422 223] concat %I t 1 0 0 1 422 223 %I MultiLine [ (MultiLine) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 405 -335.5] concat %I t 1 0 0 1 405 -335.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 521 219] concat %I t 1 0 0 1 521 219 %I Rect [ (Rect) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 401 -331.5] concat %I t 1 0 0 1 401 -331.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 517 223] concat %I t 1 0 0 1 517 223 %I Rect [ (Rect) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 485 -335.5] concat %I t 1 0 0 1 485 -335.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 589 219] concat %I t 1 0 0 1 589 219 %I Instance [ (Instance) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 481 -331.5] concat %I t 1 0 0 1 481 -331.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 585 223] concat %I t 1 0 0 1 585 223 %I Instance [ (Instance) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 -75 -335.5] concat %I t 1 0 0 1 -75 -335.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 32 219] concat %I t 1 0 0 1 32 219 %I Picture [ (Picture) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 -79 -331.5] concat %I t 1 0 0 1 -79 -331.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 28 223] concat %I t 1 0 0 1 28 223 %I Picture [ (Picture) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1.23438 0 0 1 -33.5 -399.5] concat %I t 1.23438 0 0 1 -33.5 -399.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 91.5 155.5] concat %I t 1 0 0 1 91.5 155.5 %I FillEllipse [ (FillEllipse) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1.23438 0 0 1 -37.5 -395.5] concat %I t 1.23438 0 0 1 -37.5 -395.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 87.5 159.5] concat %I t 1 0 0 1 87.5 159.5 %I FillEllipse [ (FillEllipse) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 85 -399.5] concat %I t 1 0 0 1 85 -399.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 195 155] concat %I t 1 0 0 1 195 155 %I Circle [ (Circle) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 81 -395.5] concat %I t 1 0 0 1 81 -395.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 191 159] concat %I t 1 0 0 1 191 159 %I Circle [ (Circle) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 245 -399.5] concat %I t 1 0 0 1 245 -399.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 352 155] concat %I t 1 0 0 1 352 155 %I BSpline [ (BSpline) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 241 -395.5] concat %I t 1 0 0 1 241 -395.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 348 159] concat %I t 1 0 0 1 348 159 %I BSpline [ (BSpline) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 325 -399.5] concat %I t 1 0 0 1 325 -399.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 432 155] concat %I t 1 0 0 1 432 155 %I Polygon [ (Polygon) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 321 -395.5] concat %I t 1 0 0 1 321 -395.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 428 159] concat %I t 1 0 0 1 428 159 %I Polygon [ (Polygon) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 405 -399.5] concat %I t 1 0 0 1 405 -399.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 509 155] concat %I t 1 0 0 1 509 155 %I FillRect [ (FillRect) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1 0 0 1 401 -395.5] concat %I t 1 0 0 1 401 -395.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 505 159] concat %I t 1 0 0 1 505 159 %I FillRect [ (FillRect) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1.14063 0 0 1 -16.5 -463.5] concat %I t 1.14063 0 0 1 -16.5 -463.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 99.5 91.5] concat %I t 1 0 0 1 99.5 91.5 %I FillCircle [ (FillCircle) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1.14063 0 0 1 -20.5 -459.5] concat %I t 1.14063 0 0 1 -20.5 -459.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 95.5 95.5] concat %I t 1 0 0 1 95.5 95.5 %I FillCircle [ (FillCircle) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1.5 0 0 1 165 -463] concat %I t 1.5 0 0 1 165 -463 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 318 91.5] concat %I t 1 0 0 1 318 91.5 %I ClosedBSpline [ (ClosedBSpline) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1.5 0 0 1 161 -459] concat %I t 1.5 0 0 1 161 -459 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 314 95.5] concat %I t 1 0 0 1 314 95.5 %I ClosedBSpline [ (ClosedBSpline) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1.23438 0 0 1 302 -463] concat %I t 1.23438 0 0 1 302 -463 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 427 92] concat %I t 1 0 0 1 427 92 %I FillPolygon [ (FillPolygon) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1.23438 0 0 1 298 -459] concat %I t 1.23438 0 0 1 298 -459 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 423 96] concat %I t 1 0 0 1 423 96 %I FillPolygon [ (FillPolygon) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1.23438 0 0 1 206.5 -527.5] concat %I t 1.23438 0 0 1 206.5 -527.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 331.5 27.5] concat %I t 1 0 0 1 331.5 27.5 %I FillBSpline [ (FillBSpline) ] Text End End %I eop Begin %I Pict %I b u %I f u %I p u %I t u Begin %I Rect [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 1 SetP %I p 0 [1.23438 0 0 1 202.5 -523.5] concat %I t 1.23438 0 0 1 202.5 -523.5 96 536 160 560 Rect %I 96 536 160 560 End Begin %I Text none SetB %I b n /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 327.5 31.5] concat %I t 1 0 0 1 327.5 31.5 %I FillBSpline [ (FillBSpline) ] Text End End %I eop End %I eop Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 -31 -375] concat %I t 1 0 0 1 -31 -375 368 640 368 624 Line %I 368 640 368 624 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 1 -407] concat %I t 1 0 0 1 1 -407 48 656 48 640 Line %I 48 656 48 640 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 81 -407] concat %I t 1 0 0 1 81 -407 48 656 48 640 Line %I 48 656 48 640 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 161 -407] concat %I t 1 0 0 1 161 -407 48 656 48 640 Line %I 48 656 48 640 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 321 -407] concat %I t 1 0 0 1 321 -407 48 656 48 640 Line %I 48 656 48 640 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 241 -407] concat %I t 1 0 0 1 241 -407 48 656 48 640 Line %I 48 656 48 640 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 401 -407] concat %I t 1 0 0 1 401 -407 48 656 48 640 Line %I 48 656 48 640 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 481 -407] concat %I t 1 0 0 1 481 -407 48 656 48 640 Line %I 48 656 48 640 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 561 -407] concat %I t 1 0 0 1 561 -407 48 656 48 640 Line %I 48 656 48 640 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 -7 -407] concat %I t 1 0 0 1 -7 -407 136 592 136 576 Line %I 136 592 136 576 End Begin %I Line [] 0 1 0 0 SetB %I b 65535 1 0 0 /Courier 10 SetF %I f 6x13p Courier 10 0 SetP %I p 65535 [1 0 0 1 233 -407] concat %I t 1 0 0 1 233 -407 136 592 136 576 Line %I 136 592 136 576 End End %I eop %%Trailer showpage @endspecial 627 1410 p (Figure)s 13(1:)m 18(Graphic)m 13(library)m 13(class)m 14(hierarchy)m 0 2073 p 1950 2 ru c-med.270 @sf 75 2199 p (virtua)s 1 r 108 c 25(boolea)m 1 r 110 c 25(Contai)m 1(ns)m 1(\(P)m 1(oi)m 1(nt)m 1(Ob)m 1(j&)m 1(\);)m 75 2244 p (virtua)s 1 r 108 c 25(boolea)m 1 r 110 c 25(Inters)m 1(ec)m 1(ts)m 1(\(B)m 1(ox)m 1(Ob)m 1(j&)m 1(\);)m 0 2314 p 1950 2 ru t-rom.300 @sf 491 2419 p (Figure)s 13(2:)m 18(Interface)m 14(to)m 13(operations)m 13(supporting)m 11(hit)m 13(detection)m @eop 4 @bop0 /Times-Roman /t-rom.210 ReEncodeForTeX /t-rom.210 /t-rom.210 29.057700 TeXPSmakefont def /Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.906600 TeXPSmakefont def /cmmi10.300 @newfont cmmi10.300 @sf [ 32 29 -1 0 31.133] 65 @dc [ 32 28 -2 0 31.486] 66 @dc cmsy10.300 @sf [<003F800000C4600003041800040404000804020010040100200400802004008040040040400400 4080040020800400208004002080040020FFFFFFE0800400208004002080040020400400404004 004020040080200400801004010008040200040404000304180000C46000003F8000> 32 28 -2 4 32.286] 8 @dc /cmr10.300 @newfont cmr10.300 @sf [<7FFFFFC0FFFFFFE000000000000000000000000000000000000000000000000000000000000000 00FFFFFFE07FFFFFC0> 32 12 -2 -4 32.286] 61 @dc cmmi10.300 @sf [<00FE0000070180000E0060001C00100038000800300004007000020070000200F0000100F00001 00F0000100F0000000F0000000F0000000F00000007800000078000000780000003C0000003C00 00201C0000200E0000200F000020070000300380007001C00070006000F000380138000E061800 01F808> 32 30 -2 1 29.668] 67 @dc [ 32 28 -2 0 34.367] 68 @dc 4 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 52 c 13 r 45 c 0 154 p (in)s 12(Figure)m 12(2.)m c-med.300 @sf 18(PointObj)m t-rom.300 @sf 12(and)m c-med.300 @sf 12(BoxObj)m t-rom.300 @sf 13(are)m 13(classes)m 14(that)m 0 203 p (serve)s 17(as)m 17(shorthand)m 16(for)m 16(specifying)m 15 r 97 c 17(point)m 15(and)m 17 r 97 c 17(rect-)m 0 253 p (angular)s 14(region,)m 14(respectively)m -2 r 46 c c-med.300 @sf 20(Contains)m t-rom.300 @sf 14(can)m 15(be)m 15(used)m 0 303 p (to)s 11(detect)m 13(an)m 12(exact)m 13(hit)m 10(on)m 12 r 97 c 13(graphic;)m c-med.300 @sf 11(Intersects)m t-rom.300 @sf 12(can)m 0 353 p (be)s 14(used)m 14(to)m 13(detect)m 14 r 97 c 14(hit)m 13(within)m 12 r 97 c 14(certain)m 14(tolerance.)m t-bol.360 @sf 0 474 p (3.2)s 50(Drawing)m 19(Operations)m t-rom.300 @sf 42 552 p (Figure)s 13 r 51 c 13(lists)m 13(the)m 13(set)m 14(of)m 14(drawing)m 13(and)m 13(erasing)m 14(opera-)m 0 602 p (tions)s 14(de\014ned)m 16(on)m 15(graphics.)m 23(InterV)m -1(i)m -1(ews)m 14(de\014nes)m t-bol.300 @sf 16(canvas)m t-rom.300 @sf 0 652 p (objects)s 13(and)m 14(the)m t-bol.300 @sf 13(coord)m t-rom.300 @sf 14(type.)m 19 r 65 c 13(canvas)m 15(represents)m 14 r 97 c 14(re-)m 0 701 p (gion)s 17(of)m 17(the)m 17(display)m 17(in)m 17(which)m 17(to)m 17(draw)m -2 r 46 c 30(Canvases)m 18(are)m 0 751 p (rectangular)s 20(and)m 19(may)m 21(overlap.)m 36 r 65 c 20(coord)m 20(is)m 19 r 97 c 21(integer)m 0 801 p (coordinate.)s 42 851 p (The)s 12(graphic)m 12(base)m 13(class)m 13(implements)m 11(each)m 14(erasing)m 12(op-)m 0 901 p (eration)s 15(in)m 15(terms)m 16(of)m 15(the)m 16(corresponding)m 14(drawing)m 15(opera-)m 0 951 p (tion.)s 17(An)m 11(erase)m 13(operation)m 11(\014rst)m 11(sets)m 12(the)m 12(foreground)m 10(color)m 0 1001 p (to)s 18(the)m 19(background)m 18(color)m -1 r 44 c 19(then)m 18(calls)m 19(the)m 19(drawing)m 18(op-)m 0 1051 p (eration,)s 17(and)m 17(\014nally)m 16(resets)m 18(the)m 17(foreground)m 15(color)m 16(to)m 17(its)m 0 1100 p (original)s 12(value.)m 42 1151 p (The)s 15(operations)m 14(taking)m 14 r 97 c 16(single)m 14(parameter)m 16(draw)m 15(and)m 0 1200 p (erase)s 12(the)m 10(graphic)m 10(in)m 10(its)m 10(entirety)m -2 r 46 c 16(The)m 11(coordinate)m 9(param-)m 0 1250 p (eters)s 11(are)m 10(used)m 11(to)m 9(specify)m 10 r 97 c 11(rectangular)m 10(region.)m t-ita.300 @sf 16(Bounded)m c-med.300 @sf 0 1300 p (Draw)s t-rom.300 @sf 17(and)m c-med.300 @sf 17(Erase)m t-rom.300 @sf 17(operations)m 15(use)m 18(the)m 16(rectangular)m 17(re-)m 0 1350 p (gion)s 19(as)m 22 r 97 c 21(hint)m 19(to)m 20(the)m 20(graphic')m -1 r 115 c 19(visibili)m -1(ty)m -3 r 46 c 37(Graphics)m 0 1400 p (may)s 14(perform)m 13(optimizations)m 12(based)m 14(on)m 13(this)m 13(information.)m 0 1449 p (For)s 12(example,)m 14(because)m 14(canvases)m 14(do)m 12(not)m 12(permit)m 12(drawing)m 0 1499 p (outside)s 13(their)m 14(boundaries,)m 13(bounded)m 14(draw)m 14(and)m 14(erase)m 16(op-)m 0 1549 p (erations)s 14(can)m 16(cull)m 15(parts)m 14(of)m 15(the)m 15(graphic)m 14(that)m 15(fall)m 14(outside)m 0 1599 p (the)s 14(canvas.)m t-rom.210 @sf 187 1585 p 49 c c-med.300 @sf 42 1649 p (DrawClipped)s t-rom.300 @sf 16(and)m c-med.300 @sf 17(EraseClipped)m t-rom.300 @sf 17(clip)m 17(during)m 0 1699 p (drawing)s 18(or)m 19(erasing.)m 35(They)m 20(are)m 20(useful)m 19(when)m 19(drawing)m 0 1749 p (must)s 20(be)m 21(strictly)m 18(limited)m 19(to)m 20 r 97 c 20(portion)m 19(of)m 20(the)m 20(canvas.)m 0 1799 p (For)s 13(example,)m c-med.300 @sf 15(DrawClipped)m t-rom.300 @sf 13(is)m 13(often)m 13(used)m 14(to)m 13(redraw)m 0 1848 p (portions)s 17(of)m 18 r 97 c 20(graphic)m 18(that)m 18(had)m 19(been)m 20(obscured)m 18(by)m 19(an)m 0 1898 p (overlapping)s 12(canvas.)m t-bol.420 @sf 0 2040 p 52 c 58(Composite)m 23(Graphics)m t-bol.300 @sf 0 2133 p (Pictur)s 101 c t-rom.300 @sf 16(and)m t-bol.300 @sf 15(instance)m t-rom.300 @sf 15(are)m 16(composite)m 15(graphics.)m 23 r 65 c 15(pic-)m 0 2183 p (ture)s 23(composes)m 25(other)m 23(graphics)m 23(into)m 23 r 97 c 24(single)m 23(object,)m 0 2233 p (while)s 19(an)m 19(instance)m 20(is)m 19 r 97 c 20(reference)m 20(to)m 19(another)m 19(graphic.)m 0 2283 p (Both)s 13(rely)m 13(on)m 13 r 97 c 14(notion)m 12(of)m t-ita.300 @sf 14(graphics)m 13(state)m 13(concatenation)m t-rom.300 @sf 0 2333 p (to)s 13(de\014ne)m 14(how)m 14(they)m 13(are)m 15(drawn.)m t-bol.360 @sf 0 2453 p (4.1)s 50(Graphics)m 19(State)m 18(Concatenation)m t-rom.300 @sf 0 2532 p (Composite)s 10(graphics)m 11(are)m 12(like)m 10(other)m 11(graphics)m 11(in)m 10(that)m 10(they)m 0 2582 p (maintain)s 10(their)m 9(own)m 10(graphics)m 11(state)m 10(information,)m 10(but)m 9(they)m 0 2619 p 366 2 ru t-rom.180 @sf 45 2647 p 49 c t-rom.240 @sf 60 2658 p (The)s 11(bounded)m 10(operation)m 10(could)m 11(obtain)m 11(the)m 11(rectangular)m 10(region)m 11(di-)m 0 2698 p (rectly)s 10(from)m 11(the)m 10(canvas.)m 13(For)m 11(generality)m -1 r 44 c 9(however)m -1 r 44 c 9(the)m 10(region)m 10(is)m 11(spec-)m 0 2737 p (i\014ed)s 11(explicitly)m -1 r 46 c t-rom.300 @sf 1035 154 p (do)s 16(not)m 16(have)m 17(their)m 16(own)m 16(geometric)m 17(information.)m 25(Com-)m 1035 203 p (position)s 11(allows)m 13(us)m 13(to)m 12(de\014ne)m 14(how)m 12(the)m 13(composite')m -1 r 115 c 12(state)m 1035 253 p (information)s 13(af)m (fects)s 15(its)m 14(components.)m 21(The)m 16(graphic)m 14(base)m 1035 303 p (class)s 13(implements)m 13 r 97 c 13(mechanism)m 13(for)m 12(combining,)m 12(or)m t-ita.300 @sf 12(con-)m 1035 353 p (catenating)s t-rom.300 @sf 44 c 22(graphics)m 20(state)m 21(information.)m 39(The)m 22(default)m 1035 403 p (behavior)s 19(for)m 19(concatenation)m 19(is)m 19(described)m 19(below)m -2 r 46 c 35(De-)m 1035 452 p (rived)s 15(classes)m 16(rede\014ne)m 16(the)m 15(concatenation)m 15(operations)m 14(as)m 1035 502 p (needed.)s 1076 575 p (Given)s 17(two)m 15(graphics)m 17(states)m cmmi10.300 @sf 17 r 65 c t-rom.300 @sf 16(and)m cmmi10.300 @sf 17 r 66 c t-rom.300 @sf 2 r 44 c 18(we)m 17(can)m 18(write)m 1035 625 p (their)s 12(concatenation)m 13(as)m cmmi10.300 @sf 13 r 65 c cmsy10.300 @sf 8 r 8 c cmmi10.300 @sf 8 r 66 c cmr10.300 @sf 14 r 61 c cmmi10.300 @sf 12 r 67 c t-rom.300 @sf 3 r 44 c 13(where)m cmmi10.300 @sf 14 r 67 c t-rom.300 @sf 15(is)m 13(the)m 13(re-)m 1035 675 p (sultant)s 13(graphics)m 14(state.)m 20(Concatenation)m 13(associates)m 15(but)m 13(is)m 1035 725 p (not)s 14(commutative;)m cmmi10.300 @sf 14 r 66 c t-rom.300 @sf 17(is)m 15(considered)m 14(\\dominant.")m cmmi10.300 @sf 22 r 67 c t-rom.300 @sf 17(re-)m 1035 775 p (ceives)s 14(attributes)m 12(de\014ned)m 13(by)m cmmi10.300 @sf 13 r 66 c t-rom.300 @sf 2 r 46 c 19(Attributes)m 11(that)m cmmi10.300 @sf 13 r 66 c t-rom.300 @sf 16(does)m 1035 824 p (not)s 15(de\014ne)m 17(are)m 16(obtained)m 16(from)m cmmi10.300 @sf 15 r 65 c t-rom.300 @sf 46 c 26(An)m 16(exception)m 15(is)m 16(the)m 1035 874 p (transformation)s 16(matrix;)m cmmi10.300 @sf 18 r 67 c t-rom.300 @sf 3 r 39 c -1 r 115 c 15(transformer)m 17(is)m 17(de\014ned)m 17(by)m 1035 924 p (postmultipl)s -1(yi)m -1(ng)m cmmi10.300 @sf 11 r 65 c t-rom.300 @sf 39 c -1 r 115 c 12(transformer)m 12(by)m cmmi10.300 @sf 13 r 66 c t-rom.300 @sf 2 r 39 c -1(s.)m cmmi10.300 @sf 18 r 66 c t-rom.300 @sf 15(thus)m 12(dom-)m 1035 974 p (inates)s cmmi10.300 @sf 11 r 65 c t-rom.300 @sf 12(in)m 11(that)m cmmi10.300 @sf 11 r 67 c t-rom.300 @sf 14(inherits)m cmmi10.300 @sf 10 r 66 c t-rom.300 @sf 2 r 39 c -1 r 115 c 11(attributes)m 10(over)m cmmi10.300 @sf 12 r 65 c t-rom.300 @sf 39 c -1(s,)m 11(and)m cmmi10.300 @sf 1035 1024 p 67 c t-rom.300 @sf 3 r 39 c -1 r 115 c 8(coordinate)m 9(system)m 11(is)m 9(de\014ned)m 10(by)m cmmi10.300 @sf 10 r 65 c t-rom.300 @sf 39 c -1 r 115 c 9(transformation)m 1035 1073 p (with)s 13(respect)m 14(to)m cmmi10.300 @sf 13 r 66 c t-rom.300 @sf 2 r 39 c -1(s.)m 1076 1146 p 65 c 14(graphic)m 13(might)m 12(not)m 13(de\014ne)m 14 r 97 c 14(particular)m 12(attribute)m 12(ei-)m 1035 1196 p (ther)s 18(because)m 21(it)m 18(is)m 18(not)m 18(meaningful)m 18(for)m 19(the)m 18(graphic)m 19(to)m 1035 1246 p (do)s 21(so)m 22(\(a)m 22(\014lled)m 21(rectangle)m 22(does)m 22(not)m 21(maintain)m 21 r 97 c 23(font,)m 1035 1296 p (for)s 14(instance\))m 14(or)m 15(because)m 15(the)m 15(value)m 14(of)m 14(the)m 15(attribute)m 13(has)m 1035 1346 p (been)s 20(set)m 20(to)m 19(nil)m 19(explicitly)m -3 r 46 c 35(De\014ned)m 20(attributes)m 19(propa-)m 1035 1395 p (gate)s 15(through)m 14(successive)m 16(concatenations)m 15(without)m 13(being)m 1035 1445 p (overridden)s 17(or)m 18(modi\014ed)m 19(by)m 18(unde\014ned)m 18(attributes.)m 31(For)m 1035 1495 p (example,)s 17(suppose)m 16(graphics)m 15(state)m cmmi10.300 @sf 16 r 65 c t-rom.300 @sf 16(de\014nes)m 16 r 97 c 16(font)m 15(but)m cmmi10.300 @sf 1035 1545 p 66 c t-rom.300 @sf 13(does)m 10(not.)m 16(Moreover)m -1 r 44 c cmmi10.300 @sf 10 r 67 c t-rom.300 @sf 13(maintains)m 9 r 97 c 11(font)m 9(but)m 9(its)m 9(value)m 1035 1595 p (has)s 12(been)m 13(set)m 12(to)m 12(nil.)m 17(Then)m cmmi10.300 @sf 12 r 68 c cmr10.300 @sf 13 r 61 c cmmi10.300 @sf 12 r 65 c cmsy10.300 @sf 6 r 8 c cmmi10.300 @sf 6 r 66 c cmsy10.300 @sf 9 r 8 c cmmi10.300 @sf 6 r 67 c t-rom.300 @sf 14(will)m 11(receive)m cmmi10.300 @sf 1035 1645 p 65 c t-rom.300 @sf 39 c -1 r 115 c 13(font)m 12(attribute.)m 17(If)m cmmi10.300 @sf 14 r 65 c t-rom.300 @sf 39 c -1 r 115 c 12(transformer)m 14(is)m 13(nil)m 13(but)m cmmi10.300 @sf 13 r 66 c t-rom.300 @sf 16(and)m cmmi10.300 @sf 1035 1694 p 67 c t-rom.300 @sf 3 r 39 c -1 r 115 c 10(are)m 13(non-nil,)m 11(then)m cmmi10.300 @sf 11 r 68 c t-rom.300 @sf 13(will)m 11(receive)m 13 r 97 c 12(transformer)m 12(that)m 1035 1744 p (is)s 16(the)m 16(product)m 15(of)m cmmi10.300 @sf 16 r 66 c t-rom.300 @sf 2 r 39 c -1 r 115 c 16(and)m cmmi10.300 @sf 16 r 67 c t-rom.300 @sf 3 r 39 c -1(s.)m 25(If)m cmmi10.300 @sf 16 r 68 c cmr10.300 @sf 17 r 61 c cmmi10.300 @sf 16 r 67 c cmsy10.300 @sf 14 r 8 c cmmi10.300 @sf 11 r 65 c cmsy10.300 @sf 11 r 8 c cmmi10.300 @sf 11 r 66 c t-rom.300 @sf 2 r 44 c 1035 1794 p (then)s cmmi10.300 @sf 15 r 68 c t-rom.300 @sf 18(will)m 15(receive)m 16 r 97 c 17(transformer)m 15(that)m 16(is)m 15(the)m 16(product)m 1035 1844 p (of)s cmmi10.300 @sf 13 r 67 c t-rom.300 @sf 3 r 39 c -1 r 115 c 13(and)m cmmi10.300 @sf 13 r 66 c t-rom.300 @sf 2 r 39 c -1(s.)m 1076 1917 p (The)s 19(semantics)m 19(for)m 17(concatenation)m 18(as)m 19(de\014ned)m 18(in)m 17(the)m 1035 1967 p (base)s 21(class)m 22(are)m 21(useful)m 20(for)m 20(describing)m 20(how)m 20(composite)m 1035 2016 p (graphics)s 17(are)m 19(drawn,)m 19(but)m 17(derived)m 17(graphics)m 17(can)m 19(imple-)m 1035 2066 p (ment)s 17(their)m 17(own)m 17(concatenation)m 17(mechanism.)m 30(This)m 17(cre-)m 1035 2116 p (ates)s 15(the)m 13(potential)m 13(for)m 13(concatenation)m 14(semantics)m 15(that)m 13(are)m 1035 2166 p (more)s 19(powerful)m 18(than)m 19(the)m 19(default)m 18(precedence)m 21(relation-)m 1035 2216 p (ship.)s 21(For)m 15(example,)m 16(the)m 15(concatenation)m 14(operation)m 14(could)m 1035 2265 p (be)s 18(rede\014ned)m 18(so)m 18(that)m 17(concatenating)m 17(two)m 17(colors)m 17(would)m 1035 2315 p (yield)s 14 r 97 c 15(third)m 14(that)m 14(is)m 15(the)m 15(sum)m 15(or)m 14(dif)m (ference)s 15(of)m 15(the)m 14(two.)m 1035 2365 p 84 c -2(wo)m 15(patterns)m 16(could)m 15(combine)m 16(to)m 16(form)m 16 r 97 c 16(pattern)m 16(corre-)m 1035 2415 p (sponding)s 8(to)m 10(an)m 10(overlay)m 9(of)m 10(the)m 10(two.)m 17(This)m 9(behavior)m 10(could)m 1035 2465 p (be)s 15(used)m 15(to)m 14(de\014ne)m 15(how)m 14(to)m 14(draw)m 15(overlapping)m 13(parts)m 14(of)m 15 r 97 c 1035 2515 p (VLSI)s 14(layout.)m 1076 2588 p (The)s 30(ability)m 26(to)m 28(rede\014ne)m 29(concatenation)m 28(semantics)m 1035 2637 p (demonstrates)s 12(how)m 12(inheritance)m 12(lets)m 12(the)m 12(programmer)m 12(ex-)m 1035 2687 p (tend)s 21(the)m 20(graphics)m 21(library)m 20(easily)m -2 r 46 c 40(Flexibilit)m -1 r 121 c 19(is)m 21(thus)m 1035 2737 p (achieved)s 12(without)m 9(complicating)m 10(or)m 11(changing)m 11(the)m 11(library)m -2 r 46 c @eop 5 @bop0 5 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 53 c 13 r 45 c 0 114 p 1950 2 ru c-med.270 @sf 75 198 p (virtua)s 1 r 108 c 25(void)m 24(Draw\()m 1(Ca)m 1(nv)m 1(as)m 1(*\))m 1 r 59 c 75 244 p (virtua)s 1 r 108 c 25(void)m 24(Draw\()m 1(Ca)m 1(nv)m 1(as)m 1(*,)m 25(Coord)m 1 r 44 c 25(Coord,)m 25(Coord)m 1 r 44 c 25(Coord\))m 1 r 59 c 75 290 p (virtua)s 1 r 108 c 25(void)m 24(DrawC)m 1(li)m 1(pp)m 1(ed)m 1(\(C)m 1(an)m 1(va)m 1(s*)m 1 r 44 c 25(Coord,)m 25(Coord)m 1 r 44 c 25(Coord,)m 25(Coord)m 1(\);)m 75 381 p (virtua)s 1 r 108 c 25(void)m 24(Erase)m 1(\(C)m 1(an)m 1(va)m 1(s*)m 1(\);)m 75 427 p (virtua)s 1 r 108 c 25(void)m 24(Erase)m 1(\(C)m 1(an)m 1(va)m 1(s*)m 1 r 44 c 25(Coord,)m 25(Coord)m 1 r 44 c 25(Coord,)m 25(Coord)m 1(\);)m 75 472 p (virtua)s 1 r 108 c 25(void)m 24(Erase)m 1(Cl)m 1(ip)m 1(pe)m 1(d\()m 1(Ca)m 1(nv)m 1(as)m 1(*,)m 25(Coord)m 1 r 44 c 25(Coord,)m 25(Coord)m 1 r 44 c 25(Coord\))m 1 r 59 c 0 542 p 1950 2 ru t-rom.300 @sf 623 647 p (Figure)s 14(3:)m 17(Interface)m 15(to)m 13(drawing)m 13(operations)m t-bol.360 @sf 0 780 p (4.2)s 50(Pictur)m 101 c t-rom.300 @sf 0 872 p (Pictures)s 20(are)m 21(the)m 19(basic)m 21(mechanism)m 21(for)m 19(building)m 18(hier-)m 0 922 p (archies)s 18(of)m 16(graphics.)m 29(Each)m 18(picture)m 16(maintains)m 17 r 97 c 17(list)m 16(of)m 0 971 p (component)s 9(graphics.)m 17 r 65 c 10(picture)m 9(draws)m 9(itself)m 9(by)m 9(drawing)m 0 1021 p (each)s 15(component)m 13(with)m 13 r 97 c 14(graphics)m 13(state)m 14(formed)m 14(by)m 13(con-)m 0 1071 p (catenating)s 15(the)m 15(component')m -1 r 115 c 14(state)m 16(with)m 14(its)m 15(own.)m 24(Thus,)m 0 1121 p (operations)s 19(on)m 19 r 97 c 20(picture)m 19(af)m (fect)s 19(all)m 19(of)m 19(its)m 19(components)m 0 1171 p (as)s 16 r 97 c 15(unit.)m c-med.300 @sf 22(Contains)m t-rom.300 @sf 44 c c-med.300 @sf 16(Intersects)m t-rom.300 @sf 44 c 16(and)m 15(bounding)m 0 1220 p (box)s 10(operations)m 9(are)m 11(rede\014ned)m 11(to)m 9(consider)m 10(all)m 10(the)m 10(compo-)m 0 1270 p (nents)s 15(relative)m 14(to)m 14(the)m 15(picture')m -1 r 115 c 13(coordinate)m 14(system.)m 22(The)m 0 1320 p (picture)s 13(class)m 14(de\014nes)m 14(the)m 13(operations)m 13(shown)m 13(in)m 12(Figure)m 13 r 52 c 0 1370 p (for)s 14(editing)m 13(and)m 14(traversing)m 14(its)m 14(list)m 13(of)m 14(components.)m 21(Pic-)m 0 1420 p (tures)s 16(have)m 16 r 97 c 16(notion)m 14(of)m 16 r 97 c 16(\\current")m 16(component,)m 17(which)m 0 1470 p (aids)s 14(in)m 14(the)m 14(traversal)m 14(by)m 14(acting)m 13(as)m 15 r 97 c 15(position)m 12(marker)m 15(in)m 0 1519 p (the)s 14(list)m 12(of)m 14(components.)m 42 1577 p (Pictures)s 15(also)m 16(de\014ne)m 16(operations)m 14(for)m 15(selecting)m 16(graph-)m 0 1626 p (ics)s 21(they)m 20(compose)m 22(based)m 21(on)m 20(position.)m 38(These)m 22(opera-)m 0 1676 p (tions)s 14(are)m 16(shown)m 14(in)m 15(Figure)m 15(5.)m 22(The)m c-med.300 @sf 16(...Containing)m t-rom.300 @sf 0 1726 p (operations)s 21(return)m 22(the)m 21(graphic\(s\))m 22(containing)m 20 r 97 c 23(point;)m c-med.300 @sf 0 1776 p (...Intersecting)s t-rom.300 @sf 12(operations)m 11(return)m 12(the)m 12(graphic\(s\))m 0 1826 p (intersecting)s 17 r 97 c 19(rectangle;)m c-med.300 @sf 21(...Within)m t-rom.300 @sf 18(operations)m 18(re-)m 0 1875 p (turn)s 13(the)m 13(graphic\(s\))m 13(falling)m 12(completely)m 14(within)m 12 r 97 c 14(rectan-)m 0 1925 p (gle.)s 42 1982 p (Pictures)s 20(draw)m 21(their)m 19(components)m 21(starting)m 19(from)m 20(the)m 0 2032 p (\014rst)s 14(component)m 13(in)m 14(the)m 14(list.)m 18(The)m c-med.300 @sf 15(Last...)m t-rom.300 @sf 19(operations)m 0 2082 p (can)s 21(be)m 21(used)m 21(to)m 20(select)m 21(the)m 21(\\topmost")m 20(graphic)m 20(in)m 20(the)m 0 2132 p (picture,)s 14(while)m c-med.300 @sf 14(First...)m t-rom.300 @sf 21(operations)m 13(select)m 15(the)m 15(\\bot-)m 0 2182 p (tommost.")s 24(The)m c-med.300 @sf 16(Graphics...)m t-rom.300 @sf 24(operations)m 15(return)m 14(as)m 0 2232 p 97 c 18(side-ef)m (fect)s 17(an)m 18(array)m 18(of)m 18(all)m 17(the)m 17(graphics)m 18(that)m 17(satisfy)m 0 2281 p (the)s 14(hit)m 12(criterion.)m 18(These)m 15(operations)m 13(also)m 14(return)m 13(the)m 13(size)m 0 2331 p (of)s 13(the)m 14(array)m -2 r 46 c 42 2388 p (The)s 15(following)m 13(example)m 16(demonstrates)m 15(how)m 14(concate-)m 0 2438 p (nation)s 12(can)m 15(be)m 13(used)m 14(and)m 14(extended)m 13(using)m 13(pictures.)m 18(Con-)m 0 2488 p (sider)s 18 r 97 c 18(what-you-see-is-what-you)m 16(get)m 18(text)m 17(editor)m 17(that)m 0 2538 p (implements)s 23(paragraphs)m 24(using)m 23 r 97 c 24(subclass)m 24(of)m 24(picture)m 0 2588 p (called)s t-bol.300 @sf 13(paragraph)m t-rom.300 @sf 13(and)m 13(words)m 12(using)m 12 r 97 c 14(subclass)m 13(of)m 12(label)m 0 2637 p (called)s t-bol.300 @sf 14(word)m t-rom.300 @sf 46 c 19(Both)m 12(pictures)m 13(and)m 14(labels)m 13(maintain)m 13 r 97 c 14(font)m 0 2687 p (attribute.)s 18(Thus,)m 14(each)m 15(word)m 14(can)m 14(de\014ne)m 15(its)m 13(own)m 14(appear-)m 0 2737 p (ance,)s 19(and)m 17(the)m 16(paragraph)m 17(can)m 18(override)m 16(the)m 16(appearance)m 1035 780 p (of)s 15(all)m 14(the)m 15(words)m 15(through)m 13(concatenation.)m 22(For)m 15(instance,)m 1035 830 p (de\014ning)s 12 r 97 c 13(font)m 11(attribute)m 11(on)m 12(the)m 13(paragraph)m 12(would)m 12(cause)m 1035 880 p (all)s 17(words)m 16(to)m 17(appear)m 17(in)m 17(that)m 16(font)m 16(independent)m 16(of)m 17(their)m 1035 930 p (individu)s -1(al)m 12(attributes.)m 1076 981 p (By)s 13(deriving)m 11(paragraph)m 13(from)m 13(picture,)m 12(we)m 14(can)m 13(change)m 1035 1031 p (the)s 11(concatenation)m 10(semantics;)m 13(for)m 10(example,)m 13(the)m 10(concate-)m 1035 1081 p (nation)s 13(of)m 15(an)m 14(italic)m 14(font)m 14(with)m 13 r 97 c 15(bold)m 13(font)m 14(could)m 14(yield)m 14 r 97 c 1035 1131 p (bold)s 18(italic)m 18(font.)m 33(De\014ning)m 18(an)m 19(italic)m 18(font)m 18(attribute)m 17(on)m 1035 1181 p (the)s 12(paragraph)m 13(would)m 12(thus)m 12(italicize)m 12(the)m 13(paragraph)m 12(with-)m 1035 1230 p (out)s 18(ignoring)m 17(the)m 19(font)m 18(of)m 19(individual)m 17(words.)m 35(Alterna-)m 1035 1280 p (tively)s -2 r 44 c 17(paragraphs)m 19(could)m 17(rely)m 18(on)m 18(words)m 17(to)m 18(de\014ne)m 18(the)m 1035 1330 p (concatenation)s 15(semantics.)m 26(Thus,)m 16(instances)m 16(of)m 16(dif)m (ferent)s 1035 1380 p (word)s 16(subclasses)m 18(could)m 16(respond)m 17(dif)m (ferentl)s -1 r 121 c 15(to)m 16(format-)m 1035 1430 p (ting)s 12(changes)m 15(within)m 12(the)m 13(same)m 16(paragraph.)m t-bol.360 @sf 1035 1559 p (4.3)s 50(Instance)m t-rom.300 @sf 1035 1641 p (An)s 13(instance)m 14(is)m 13 r 97 c 13(reference)m 15(to)m 13(another)m 13(graphic)m 13(\(the)m t-ita.300 @sf 13(tar)m 45 c 1035 1691 p (get)s t-rom.300 @sf (\).)s 17(Graphic)m 10(library)m 9(instances)m 10(are)m 11(functionally)m 7(equiva-)m 1035 1740 p (lent)s 11(to)m 11(instances)m 12(in)m 11(Sketchpad)m 12 r 91 c (14)s -1(].)m 18(The)m 12(concatenation)m 1035 1790 p (of)s 18(the)m 18(instance')m -1 r 115 c 17(and)m 19(tar)m (get')s -2 r 115 c 17(graphics)m 18(states)m 19(is)m 18(used)m 1035 1840 p (when)s 12(the)m 11(instance)m 12(is)m 11(drawn)m 12(or)m 11(erased.)m 19(An)m 12(instance)m 11(can)m 1035 1890 p (thus)s 13(rede\014ne)m 16(any)m 14(aspect)m 15(of)m 14(the)m 14(tar)m (get')s -2 r 115 c 13(graphics)m 13(state,)m 1035 1940 p (but)s 17(it)m 17(cannot)m 18(change)m 19(the)m 18(tar)m (get')s -2 r 115 c 17(geometric)m 18(informa-)m 1035 1990 p (tion.)s 1076 2041 p (Instances)s 30(are)m 30(useful)m 28(for)m 28(replicating)m 28(\\prototype")m 1035 2091 p (graphics.)s 35(Once)m 20(the)m 19(prototype)m 18(is)m 19(de\014ned,)m 21(it)m 19(can)m 20(ap-)m 1035 2141 p (pear)s 17(at)m 17(several)m 17(places)m 18(in)m 16 r 97 c 17(drawing)m 16(without)m 15(copying.)m 1035 2191 p (Also,)s 13(structural)m 11(and)m 13(graphics)m 12(state)m 13(modi\014cations)m 12(made)m 1035 2241 p (to)s 12(the)m 11(prototype)m 11(will)m 11(af)m (fect)s 12(its)m 11(instances,)m 13(thus)m 12(avoiding)m 1035 2290 p (the)s 14(need)m 14(to)m 13(change)m 14(instances)m 14(individuall)m -1 r 121 c -3 r 46 c t-bol.420 @sf 1035 2441 p 53 c 58(Incr)m (emental)s 22(Update)m t-rom.300 @sf 1035 2538 p (Structured)s 25(graphics)m 26(can)m 27(be)m 27(used)m 26(to)m 26(represent)m 26(and)m 1035 2588 p (draw)s 20(arbitrarily)m 19(complicated)m 20(images.)m 40(Many)m 20(images)m 1035 2637 p (\(and)s 14(most)m 14(interesting)m 12(ones\))m 14(cannot)m 14(be)m 14(drawn)m 14(instanta-)m 1035 2687 p (neously)s -2 r 46 c 18(Incremental)m 14(techniques)m 13(can)m 15(be)m 14(used)m 14(to)m 13(speed)m 1035 2737 p (the)s 9(process)m 10(of)m 9(keeping)m 9(the)m 9(screen)m 11(image)m 10(consistent)m 8(with)m @eop 6 @bop0 6 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 54 c 13 r 45 c 0 321 p 1950 2 ru c-med.270 @sf 75 447 p (void)s 24(Appen)m 1(d\()m 1(Gr)m 1(ap)m 1(hi)m 1(c*)m 1(\);)m 75 493 p (void)s 24(Prepe)m 1(nd)m 1(\(G)m 1(ra)m 1(ph)m 1(ic)m 1(*\))m 1 r 59 c 75 539 p (void)s 24(Remov)m 1(e\()m 1(Gr)m 1(ap)m 1(hi)m 1(c*)m 1(\);)m 75 630 p (void)s 24(Inser)m 1(tA)m 1(ft)m 1(er)m 1(Cu)m 1(r\()m 1(Gr)m 1(ap)m 1(hi)m 1(c*)m 1(\);)m 75 676 p (void)s 24(Inser)m 1(tB)m 1(ef)m 1(or)m 1(eC)m 1(ur)m 1(\(G)m 1(ra)m 1(ph)m 1(ic)m 1(*\))m 1 r 59 c 75 721 p (void)s 24(Remov)m 1(eC)m 1(ur)m 1(\(\))m 1 r 59 c 75 767 p (void)s 24(SetCu)m 1(rr)m 1(en)m 1(t\()m 1(Gr)m 1(ap)m 1(hi)m 1(c*)m 1(\);)m 75 813 p (Graphi)s 1(c*)m 25(GetCu)m 1(rr)m 1(en)m 1(t\()m 1(\);)m 75 904 p (Graphi)s 1(c*)m 25(First)m 1(\(\))m 1 r 59 c 75 950 p (Graphi)s 1(c*)m 25(Last\()m 1(\);)m 75 995 p (Graphi)s 1(c*)m 25(Next\()m 1(\);)m 75 1041 p (Graphi)s 1(c*)m 25(Prev\()m 1(\);)m 75 1087 p (boolea)s 1 r 110 c 25(IsEmpt)m 1(y\()m 1(\);)m 75 1132 p (boolea)s 1 r 110 c 25(AtEnd\()m 1 r 41 c 0 1199 p 1950 2 ru t-rom.300 @sf 672 1304 p (Figure)s 13(4:)m 18(Picture)m 13(editing)m 12(operations)m 0 1763 p 1950 2 ru c-med.270 @sf 75 1889 p (Graphi)s 1(c*)m 25(First)m 1(Gr)m 1(ap)m 1(hi)m 1(cC)m 1(on)m 1(ta)m 1(in)m 1(in)m 1(g\()m 1(Po)m 1(in)m 1(tO)m 1(bj)m 1(&\))m 1 r 59 c 75 1935 p (Graphi)s 1(c*)m 25(First)m 1(Gr)m 1(ap)m 1(hi)m 1(cI)m 1(nt)m 1(er)m 1(se)m 1(ct)m 1(in)m 1(g\()m 1(Bo)m 1(xO)m 1(bj)m 1(&\))m 1 r 59 c 75 1981 p (Graphi)s 1(c*)m 25(First)m 1(Gr)m 1(ap)m 1(hi)m 1(cW)m 1(it)m 1(hi)m 1(n\()m 1(Bo)m 1(xO)m 1(bj)m 1(&\))m 1 r 59 c 75 2072 p (Graphi)s 1(c*)m 25(LastG)m 1(ra)m 1(ph)m 1(ic)m 1(Co)m 1(nt)m 1(ai)m 1(ni)m 1(ng)m 1(\(P)m 1(oi)m 1(nt)m 1(Ob)m 1(j&)m 1(\);)m 75 2118 p (Graphi)s 1(c*)m 25(LastG)m 1(ra)m 1(ph)m 1(ic)m 1(In)m 1(te)m 1(rs)m 1(ec)m 1(ti)m 1(ng)m 1(\(B)m 1(ox)m 1(Ob)m 1(j&)m 1(\);)m 75 2163 p (Graphi)s 1(c*)m 25(LastG)m 1(ra)m 1(ph)m 1(ic)m 1(Wi)m 1(th)m 1(in)m 1(\(B)m 1(ox)m 1(Ob)m 1(j&)m 1(\);)m 75 2255 p (int)s 24(Graphi)m 1(cs)m 1(Co)m 1(nt)m 1(ai)m 1(ni)m 1(ng)m 1(\(P)m 1(oi)m 1(nt)m 1(Ob)m 1(j&)m 1 r 44 c 25(Graphi)m 1(c*)m 1(*&)m 1(\);)m 75 2300 p (int)s 24(Graphi)m 1(cs)m 1(In)m 1(te)m 1(rs)m 1(ec)m 1(ti)m 1(ng)m 1(\(B)m 1(ox)m 1(Ob)m 1(j&)m 1 r 44 c 25(Graphi)m 1(c*)m 1(*&)m 1(\);)m 75 2346 p (int)s 24(Graphi)m 1(cs)m 1(Wi)m 1(th)m 1(in)m 1(\(B)m 1(ox)m 1(Ob)m 1(j&)m 1 r 44 c 25(Graphi)m 1(c*)m 1(*&)m 1(\);)m 0 2415 p 1950 2 ru t-rom.300 @sf 624 2520 p (Figure)s 14(5:)m 17(Picture)m 14(operations)m 13(for)m 13(selection)m @eop 7 @bop0 7 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 55 c 13 r 45 c 0 154 p (changes)s 19(in)m 18(the)m 18(underlying)m 17(graphical)m 18(structure.)m 32(Such)m 0 203 p (techniques)s 18(will)m 17(be)m 19(ef)m (fective)s 18(if)m 18(the)m 18(user)m 18(makes)m 20(small)m 0 253 p (changes)s 17(most)m 15(of)m 16(the)m 15(time,)m 17(and)m 16(experience)m 16(with)m 15(inter-)m 0 303 p (active)s 14(graphics)m 13(editors)m 13(shows)m 14(this)m 13(to)m 13(be)m 14(the)m 13(case.)m 42 353 p 84 c -2 r 111 c 14(support)m 14(incremental)m 16(update,)m 16(the)m 15(Graphic)m 15(library)m 0 403 p (includes)s 9 r 97 c t-bol.300 @sf 9(damage)m t-rom.300 @sf 9(base)m 10(class.)m 18 r 65 c 9(damage)m 10(object)m 9(is)m 9(used)m 0 452 p (to)s 9(keep)m 10(the)m 9(appearance)m 11(of)m 9(graphics)m 9(consistent)m 9(with)m 8(their)m 0 502 p (representation.)s 33(Damage)m 20(objects)m 19(try)m 17(to)m 19(minimize)m 18(the)m 0 552 p (work)s 14(required)m 14(to)m 13(redraw)m 15(corrupted)m 14(parts)m 14(of)m 14 r 97 c 15(graphic.)m 0 602 p (The)s 20(base)m 19(class)m 20(implements)m 19 r 97 c 19(simple)m 19(incremental)m 19(al-)m 0 652 p (gorithm)s 16(that)m 16(is)m 17(ef)m (fective)s 17(for)m 17(many)m 17(applications.)m 28(The)m 0 702 p (algorithm)s 16(can)m 18(be)m 17(replaced)m 18(with)m 17 r 97 c 18(more)m 17(sophisticated)m 0 751 p (one)s 14(by)m 13(deriving)m 12(from)m 14(the)m 13(base)m 15(class.)m t-bol.360 @sf 0 869 p (5.1)s 50(Interface)m t-rom.300 @sf 0 947 p (The)s 13(interface)m 13(to)m 12(the)m 12(damage)m 14(class)m 13(appears)m 14(in)m 12(Figure)m 12(6.)m 0 997 p (When)s 12 r 97 c 12(damage)m 12(object)m 11(is)m 11(created)m 13(it)m 10(is)m 11(passed)m 13 r 97 c 11(graphic)m 0 1047 p (\(usually)s 18 r 97 c 20(picture\))m 18(for)m 19(which)m 18(it)m 18(is)m 19(responsible.)m 34(The)m c-med.300 @sf 0 1097 p (Incur)s t-rom.300 @sf 10(operation)m 8(is)m 10(called)m 9(by)m 10(the)m 9(client)m 9(program)m 9(when-)m 0 1146 p (ever)s 16(the)m 15(graphic)m 15(is)m 15(\\damaged.")m 25(The)m 15(graphic)m 15(is)m 15(incre-)m 0 1196 p (mentally)s 19(updated)m 20(when)m c-med.300 @sf 19(Repair)m t-rom.300 @sf 20(is)m 20(called.)m c-med.300 @sf 37(Reset)m t-rom.300 @sf 0 1246 p (discards)s 23(accumulated)m 25(damage)m 24(without)m 22(updating)m 21(the)m 0 1296 p (graphic.)s 29(Clients)m 16(can)m 18(determine)m 17(whether)m 18(any)m 17(damage)m 0 1346 p (has)s 14(been)m 14(incurred)m 14(using)m 12(the)m c-med.300 @sf 14(Incurred)m t-rom.300 @sf 14(operation.)m t-bol.360 @sf 0 1464 p (5.2)s 50(Implementation)m t-rom.300 @sf 0 1542 p (The)s 16(damage)m 16(class)m 17(implements)m 15 r 97 c 16(simple)m 15(algorithm)m 14(for)m 0 1591 p (incremental)s 21(update.)m 39(Each)m 22(damage)m 22(object)m 21(maintains)m 0 1641 p (zero,)s 14(one,)m 14(or)m 13(two)m 12(non-overlapping)m 11(rectangles.)m 19 r 65 c 13(dam-)m 0 1691 p (age)s 21(object)m 20(must)m 21(be)m 21(noti\014ed)m 19(whenever)m 21(the)m 21(graphic')m -1 r 115 c 0 1741 p (appearance)s 20(changes)m 18(by)m 18(calling)m 17(the)m c-med.300 @sf 17(Incur)m t-rom.300 @sf 18(operation)m 0 1791 p (with)s 16(either)m 17 r 97 c 19(region)m 16(of)m 17(the)m 18(canvas)m 18(or)m 17 r 97 c 18(graphic)m 17(as)m 19 r 97 c 0 1840 p (parameter)s -1 r 46 c 24(If)m 15 r 97 c 16(graphic)m 15(is)m 15(supplied,)m 15(its)m 15(bounding)m 14(box)m 0 1890 p (determines)s 14(the)m 14(extent)m 13(of)m 13(the)m 14(damaged)m 14(region.)m c-med.300 @sf 42 1940 p (Incur)s t-rom.300 @sf 19(either)m 20(stores)m 19(the)m 20(new)m 20(rectangle)m 20(represent-)m 0 1990 p (ing)s 13(the)m 13(damaged)m 15(region)m 13(or)m t-ita.300 @sf 13(mer)m -1(ges)m t-rom.300 @sf 14(it)m 13(with)m 12(one)m 14(or)m 13(both)m 0 2040 p (of)s 19(the)m 20(rectangles)m 20(it)m 19(has)m 20(stored.)m 36(Mer)m (ging)s 18(replaces)m 21 r 97 c 0 2089 p (stored)s 19(rectangle)m 20(with)m 19(the)m 20(smallest)m 20(rectangle)m 20(circum-)m 0 2139 p (scribing)s 15(the)m 17(rectangles)m 17(being)m 15(mer)m (ged.)s c-med.300 @sf 27(Repair)m t-rom.300 @sf 17(calls)m c-med.300 @sf 0 2189 p (DrawClipped)s t-rom.300 @sf 12(on)m 11(the)m 11(graphic)m 12(for)m 11(each)m 13(stored)m 11(rectan-)m 0 2239 p (gle.)s 42 2289 p (The)s 21(number)m 20(of)m 21(rectangles)m 21(maintained)m 20(by)m 20(damage)m 0 2339 p (objects)s 14(is)m 14(limited)m 12(to)m 14(two)m 13(because)m 16(successive)m 15(increases)m 0 2388 p (in)s 12(the)m 13(number)m 13(of)m 12(rectangles)m 13(bring)m 12(diminishing)m 10(returns.)m 0 2438 p (This)s 14(is)m 13 r 97 c 14(result)m 13(of)m 14(the)m 13(overhead)m 14(associated)m 15(with)m 12(draw-)m 0 2488 p (ing)s 18 r 97 c 19(graphic)m 18(clipped;)m 20(for)m 18(complicated)m 19(graphics)m 18(this)m 0 2538 p (involves)s 16(signi\014cant)m 17(computation.)m 29 r 87 c -2 r 101 c 18(found)m 16(that)m 17(the)m 0 2588 p (limiting)s 10(value)m 12(of)m 11(two)m 12(yielded)m 11(subjectively)m 11(the)m 12(quickest)m 0 2637 p (screen)s 11(update)m 9(on)m 10(average)m 11(in)m 9(an)m 10(object-oriented)m 8(drawing)m 0 2687 p (editor)s 11(based)m 13(on)m 11(the)m 12(Graphic)m 12(library)m -2 r 46 c 17 r 84 c -2(ypically)m 10(the)m 12(user)m 0 2737 p (either)s 10(transforms)m 10(an)m 10(object)m 10(in)m 10(place)m 11(\(producing)m 8 r 97 c 11(single)m 1035 154 p (damaged)s 11(rectangle\))m 11(or)m 10(moves)m 11(an)m 10(object)m 10(\(producing)m 9(one)m 1035 203 p (or)s 10(two)m 9(rectangles\).)m 18(Assuming)m 10(that)m 9(drawing)m 10(editors)m 9(rep-)m 1035 253 p (resent)s 14 r 97 c 13(fair)m 14(benchmark)m 13(for)m 13(interactive)m 13(graphics)m 13(appli-)m 1035 303 p (cations,)s 13(the)m 13(two-rectangle)m 13(limitatio)m -1 r 110 c 11(of)m (fers)s 13(advantages)m 1035 353 p (in)s 13(both)m 13(performance)m 14(and)m 14(implementation)m 13(simplicity)m -3 r 46 c t-bol.420 @sf 1035 494 p 54 c 58(Experience)m t-rom.300 @sf 1035 587 p (The)s 18(design)m 17(of)m 17(the)m 18(Graphic)m 17(library)m 16(was)m 19(based)m 18(on)m 17(ex-)m 1035 637 p (perience)s 13(with)m 12(an)m 13(earlier)m 13(structured)m 12(graphics)m 12(library)m 12(we)m 1035 687 p (implemented)s 14(in)m 13(Modula-2)m -1 r 46 c 20(The)m 15(Modula-2)m 13(design)m 13(em-)m 1035 737 p (phasized)s 13(high)m 12(drawing)m 12(speed)m 14(over)m 13(low)m 12(latency)m -2 r 46 c 18(It)m 12(also)m 1035 786 p (tried)s 19(to)m 19(handle)m 20(incremental)m 20(update)m 19(completely)m 20(auto-)m 1035 836 p (matically;)s 18(that)m 17(is,)m 18(it)m 16(had)m 18(no)m 17(operation)m 16(comparable)m 18(to)m c-med.300 @sf 1035 886 p (Incur)s t-rom.300 @sf 46 c 43(The)m 22(extent)m 21(of)m 22(damage)m 23(was)m 22(inferred)m 21(from)m 1035 936 p (the)s 22(operations)m 21(performed)m 23(on)m 22(each)m 23(graphical)m 22(object.)m 1035 986 p (Though)s 17(the)m 17(package)m 18(attempted)m 17(to)m 17(provide)m 16(an)m 18(object-)m 1035 1035 p (oriented)s 12(interface,)m 14(the)m 13(implementation)m 11(language')m -1 r 115 c 12(lack)m 1035 1085 p (of)s 23(inheritance)m 22(resulted)m 22(in)m 23 r 97 c 23(monolithic)m 21(library)m 22(that)m 1035 1135 p (could)s 13(not)m 13(be)m 14(extended)m 14(easily)m -2 r 46 c 1076 1185 p 87 c -2 r 101 c 26(have)m 26(developed)m 25(two)m 25(versions)m 25(of)m 26(an)m 26(object-)m 1035 1235 p (oriented)s 14(drawing)m 13(editor)m 13(called)m c-med.300 @sf 15(idraw)m t-rom.300 @sf 44 c 15(shown)m 14(in)m 14(Fig-)m 1035 1285 p (ures)s 20 r 55 c 20(and)m 20(8.)m 37(The)m 20(\014rst)m 20(version)m 19(uses)m 21(the)m 19(Modula-2)m 1035 1335 p (graphic)s 11(library)m -2 r 44 c 11(while)m 11(the)m 11(second)m 13(version)m 11(uses)m 12(the)m 11(C++)m 1035 1384 p (Graphic)s 14(library)m -2 r 46 c 19(This)m 14(gives)m 14(us)m 14 r 97 c 15(good)m 13(opportunit)m -1 r 121 c 13(for)m 1035 1434 p (comparing)s 13(the)m 14(two)m 13(libraries)m 13(based)m 14(on)m 14(actual)m 14(usage.)m t-bol.360 @sf 1035 1554 p (6.1)s 50(Graphics)m 33(State)m 33(Pr)m (opagation)s 31(versus)m 1147 1612 p (Concatenation)s t-rom.300 @sf 1035 1690 p 65 c 19(dif)m (ference)s 19(between)m 19(the)m 19(Graphic)m 19(and)m 19(Modula-2)m 18(li-)m 1035 1740 p (braries)s 24(is)m 24(in)m 24(the)m 24(way)m 24(they)m 24(manage)m 26(graphics)m 23(state.)m 1035 1790 p (Modula-2)s 19(graphical)m 20(elements)m 20(propagate)m 20(their)m 20(graph-)m 1035 1840 p (ics)s 13(state)m 12(to)m 12(the)m 12(leaves)m 13(of)m 12(the)m 12(graphics)m 12(hierarchy)m 12(as)m 13(part)m 1035 1890 p (of)s 14(the)m 14(modi\014cation)m 13(operation.)m 19(Graphic)m 13(library)m 13(objects)m 1035 1940 p (defer)s 14(the)m 13(propagation)m 12(until)m 12(they)m 13(are)m 14(drawn,)m 14(relying)m 12(on)m 1035 1989 p (the)s 12(concatenation)m 11(mechanism)m 13(to)m 12(do)m 11(the)m 12(job.)m 17(The)m 13(ratio-)m 1035 2039 p (nale)s 15(behind)m 13(propagation)m 13(was)m 16(to)m 14(make)m 15(drawing)m 14(as)m 15(fast)m 1035 2089 p (as)s 18(possible.)m 30(It)m 17(was)m 18(believed)m 18(that)m 17(on-the-\015y)m 16(concate-)m 1035 2139 p (nation)s 18(would)m 18(slow)m 18(drawing)m 19(unnecessarily)m -2 r 46 c 34(Thus,)m 20(as)m 1035 2189 p (much)s 16(work)m 16(as)m 16(possible)m 16(was)m 16(done)m 16(before)m 16(the)m 16(drawing)m 1035 2238 p (routine)s 12(was)m 15(called.)m 1076 2288 p 87 c -2 r 101 c 16(realized)m 17(that)m 16(propagation)m 15(was)m 17 r 97 c 17(mistake)m 16(as)m 18(we)m 1035 2338 p (used)s 10(the)m 10(Modula-2)m 8(library)m 9(to)m 9(implement)m c-med.300 @sf 9(idraw)m t-rom.300 @sf 46 c 18(Prop-)m 1035 2388 p (agating)s 12(graphics)m 13(state)m 13(each)m 14(time)m 12(an)m 14(operation)m 11(is)m 13(called)m 1035 2438 p (precludes)s 12(amortizing)m 12(many)m 12(changes)m 13(over)m 12 r 97 c 13(few)m 12(draws.)m 1035 2488 p (That)s 12(is,)m 12(if)m 11(several)m 12(state-modifying)m 9(operations)m 11(are)m 12(made)m 1035 2538 p (before)s 16(the)m 16(graphic)m 15(is)m 15(drawn,)m 17(we)m 16(can)m 17(avoid)m 15(traversing)m 1035 2587 p (the)s 20(structure)m 20(if)m 19(we)m 21(defer)m 20(propagation)m 19(to)m 20(draw)m 20(time,)m 1035 2637 p (when)s 14(we)m 14(must)m 14(traverse)m 14(it)m 13(anyway)m -2 r 46 c 1076 2687 p (Having)s 21(made)m 22(propagation)m 19(an)m 21(integral)m 20(part)m 21(of)m 20(the)m 1035 2737 p (Modula-2)s 11(library)m -2 r 44 c 11(there)m 12(was)m 13(no)m 12(practical)m 12(way)m 12(for)m 12(users)m @eop 8 @bop0 8 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 56 c 13 r 45 c 0 394 p 1950 2 ru c-med.270 @sf 75 520 p (void)s 24(Incur)m 1(\(G)m 1(ra)m 1(ph)m 1(ic)m 1(*\))m 1 r 59 c 75 566 p (void)s 24(Incur)m 1(\(B)m 1(ox)m 1(Ob)m 1(j&)m 1(\);)m 75 611 p (void)s 24(Repai)m 1(r\()m 1(\);)m 75 657 p (void)s 24(Reset)m 1(\(\))m 1 r 59 c 75 703 p (boolea)s 1 r 110 c 25(Incurr)m 1(ed)m 1(\(\))m 1 r 59 c 0 770 p 1950 2 ru t-rom.300 @sf 673 875 p (Figure)s 13(6:)m 18(Interface)m 14(to)m 13(damage)m 15(class)m 0 2378 p @beginspecial 80.000000 @hoffset 0.000000 @voffset 0.400000 @hscale 0.400000 @vscale @setspecial %! /picstr 95 string def 0 0 translate 757 541 scale 757 541 true [757 0 0 541 0 0] {currentfile picstr readhexstring pop} imagemask ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff f8 80000000 00000020 00400000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 02000400 08 80000000 00000020 00400000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 02000400 08 80000000 00000020 00400000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 02000400 08 80000000 00000020 0c400000 00003fff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffc0 00000000 02200400 08 80000000 00000020 34400000 00003111 11111111 11111111 11111111 11111111 11\ 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11\ 11111111 11111111 11111111 11111111 11111140 00000000 02380400 08 80000000 00000e20 c4400000 00002444 44444444 44444444 44444444 44444444 44\ 44444444 44444444 44444444 44444444 44444444 44444444 44444444 44444444 44\ 44444444 44444444 44444444 44444444 44444440 00000000 02260400 08 80000000 00001123 04400000 00002222 22222222 22222222 22222222 22222222 22\ 22222222 22222222 22222222 22222222 22222222 22222222 22222222 22222222 22\ 22222222 22222222 22222222 22222222 22222240 00000000 02218400 08 80000000 00000121 84400000 00002888 88888888 88888888 88888888 88888888 88\ 88888888 88888888 88888888 88888888 88888888 88888888 88888888 88888888 88\ 88888888 88888888 88888888 88888888 888888c0 00000000 0220c400 08 80000000 00000d20 64400000 00003111 11111111 11111111 11111111 11111111 11\ 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11\ 11111111 11111111 11111111 11111111 11111140 00000000 02230400 08 80000000 00001320 1c400000 00002444 44444444 44444444 44444444 44444444 44\ 44444444 44444444 44444444 44444444 44444444 44444444 44444444 44444444 44\ 44444444 44444444 44444444 44444444 44444440 00000000 022c0400 08 80000000 00001120 04400000 00003fff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffc0 00000000 02300400 08 80000000 00001120 00400000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 02000400 08 80000000 00001120 00400000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 02000400 08 80000070 00000020 00400000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 02000400 08 8000008f 0000003f ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff f8 80000300 c0000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 30000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 08000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 04000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000404 08 80000400 04000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 0000040c 08 80000400 02000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 0000040a 08 80000400 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000412 08 80000400 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000411 08 80000200 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000421 08 80000200 02000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000420 88 80000100 02000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 0000047f 88 80000180 0c000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000070 10000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 8000000f e0000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 000007ff f8 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00001120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00001120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00001120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00001120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000100 00001920 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000200 00001620 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000200 00001020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000200 00001020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 00001020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 02000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000400 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000200 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000200 02000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000100 02000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000180 0c000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000070 10000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 8000000f e0000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 0000047f 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000a20 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00001520 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00001520 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00001520 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000180 00001120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000270 00001120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 8000020e 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000401 c0000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000400 38000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000800 06000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000800 02000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80002000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80002000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80001000 00800020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000800 00800020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000400 00800020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000200 00400020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000100 00c00020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000080 03000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000040 1c000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000020 e0000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000013 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 8000000c 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00001020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00001020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00001020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00001020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80001fff ff001920 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80001000 01001620 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80001000 01000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80001fff ff000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000f20 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00001120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00001120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00001120 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000f20 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 8000001f 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 800000e0 e0000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000300 18000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000400 04000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80001800 03000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80002000 00800020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80002000 00800020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80004000 00400020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80004000 00400020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80004000 00400020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80002000 00800020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80002000 00800020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80001800 03000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000600 04000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000180 18000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000070 e0000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 8000000f 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000000 00000000 00000000 7f000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 03f80000 00000000 00000000 00000448 88 80000000 00000e20 00000000 00000000 0000007f ffff0000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000003 fffff800 00000000 00000000 00000451 88 80000000 00001120 00000000 00000000 00000fdd ddddf800 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 0000007d dddddfc0 00000000 00000000 00000444 88 80000000 00001120 00000000 00000000 00003fff fffffe00 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 000001ff fffffff0 00000000 00000000 00000462 88 80000000 00001120 00000000 00000000 0000f777 77777780 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000777 7777777c 00000000 00000000 00000448 88 8000001f 00001120 00000000 00000000 0003ffff fffffff0 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00001fff ffffffff 80000000 00000000 00000451 88 800000e0 e0000e20 00000000 00000000 000ddddd dddddddc 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00007ddd dddddddd e0000000 00000000 00000444 88 80000100 10000020 00000000 00000000 003fffff ffffffff 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 0001ffff ffffffff f8000000 00000000 00000462 88 80000200 08000020 00000000 00000000 00f77777 77777777 c0000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00077777 77777777 76000000 00000000 00000448 88 80000400 04000020 00000000 00000000 01ffffff ffffffff e0000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 000fffff ffffffff ff000000 00000000 00000451 88 80000800 02000020 00000000 00000000 07dddddd dddddddd d8000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 003ddddd dddddddd ddc00000 00000000 00000444 88 80000800 02000020 00000000 00000000 0fffffff ffffffff fc000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 007fffff ffffffff ffe00000 00000000 00000462 88 80000800 02000020 00000000 00000000 17777777 7f777777 76000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00f77777 77ff7777 77700000 00000000 00000448 88 80001000 01000020 00000000 00000000 7fffffff 81ffffff ff000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 03ffffff ff03ffff fff80000 00000000 00000451 88 80001000 01000020 00000000 00000000 dddddfe3 ff87dddd dd800000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 05dddddf c7ff0fdd dddc0000 00000000 00000444 88 80001000 01000020 00000000 00000001 fffffcfc 007f7fff ffe00000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 0ffffff9 f800feff ffff0000 00000000 00000462 88 80001000 01000020 00000000 00000007 77777303 0000cf77 77700000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 377777e6 0000019f 77778000 00000000 00000448 88 80001000 01000020 00000000 0000000f ffff8c01 e00033ff fff80000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 7fffff18 00002067 ffffc000 00000000 00000451 88 80000800 02000020 00000000 0000001d ddde3000 7c000c7d dddc0000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 dddddc60 01fe3818 dddde000 00000000 00000444 88 80000800 02000020 00000000 0000003f fff8c000 3fc0031f fffe0000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000001 fffff180 1e021406 3ffff000 00000000 00000462 88 80000800 02000020 00000000 00000037 77630060 1ff800cf 77760000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000001 77774603 eff10f01 9f777000 00000000 00000448 88 80000400 04000020 00000000 0000007f ffc40190 0fff8023 ffff0000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000003 ffff88ff fff90780 47fff800 00000000 00000451 88 80000200 08000020 00000000 000000dd dd980fc8 03fff011 dddd8000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000005 dddf3fff fffd03e0 23dddc00 00000000 00000444 88 80000100 10000020 00000000 000001ff fe203fe8 01fffc0c ffffc000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 0000000f fffc40ff fffa01f8 19fffe00 00000000 00000462 88 800000e0 e0000020 00000000 00000377 7c40ffe8 00ffff02 37776000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000017 77788007 fffa01fe 04777700 00000000 00000448 88 8000001f 00000020 00000000 000007ff f181ffe8 007ffd09 1ffff000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 0000003f ffe30000 fff200ff 823fff80 00000000 00000451 88 80000000 00000020 00000000 000005dd e207fff0 003ffd04 8dddd000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 0000003d ddc40000 3fec007f c11ddd80 00000000 00000444 88 80000000 00000020 00000000 00000fff c40fffe0 001ffd06 47fff800 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 0000007f ff887800 0ff0007f f08fffc0 00000000 00000462 88 80000000 00000020 00000000 00001777 483fffa0 000ffa07 27777400 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 000000f7 77918800 0000007f e84f7760 00000000 00000448 88 80000000 00000020 00000000 00001fff 90ffff40 0007f207 13fffc00 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 000000ff ff224400 0000003f f427ffe0 00000000 00000451 88 80000000 00000020 00000000 00003ddd 23ffff80 0000fc07 89ddde00 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 000001dd de45f400 0000003f fa13ddd0 00000000 00000444 88 80000000 00000020 00000000 00003ffe 4ffffe00 00000007 c8ffffc0 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 000001ff fc8bf400 0000003f fa11fff0 00000000 00000462 88 80000000 00000020 00000000 00007776 5f800000 00000007 c4f777ff 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000f77 748ffc00 0000001f fd097778 00000000 00000448 88 80000000 00000020 00000000 00007ffc 80000000 00000007 e27fffff e0000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00007fff f91ff800 0000001f fd04fff8 00000000 00000451 88 80000000 00000e20 00000000 0000ddd9 00000000 00000003 e13dddff f8000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 0001fddd d23ff800 0000000f f9025ddc 00000000 00000444 88 80000000 00000420 00000000 0000fffa 00000000 00000003 f0bfffff fc000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 0003ffff f43ff800 00000003 fb097ffc 00000000 00000462 88 80000000 00000420 00000000 0000f772 00000000 00000003 f09777ff ff000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 000fff77 647ff000 00000001 fc093774 00000000 00000448 88 80000000 00000420 00000000 0001fff4 1c000000 00000003 f85fffff ff800000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 001fffff e8fff000 00000000 0008bffe 00000000 00000451 88 80001000 00000420 00000000 0001ddd4 22000000 fe000003 f85dddff ffe00000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 007ffddd e8ffe000 01fc0000 00089dde 00000000 00000444 88 80000800 00000420 00000000 0003ffe8 2100000f 01e00003 fc2fffff fff00000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00ffffff c9ffc000 1e03c000 000c5fff 00000000 00000462 88 80000400 00000420 00000000 001f7768 5c800010 7e100003 fc2f777f fff80000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 01fff777 53ff0000 20fc2000 001c4f77 00000000 00000448 88 80000200 0000043f ffffffff ffffffd0 5e800027 81ec0003 fe17ffff fff80000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 01ffffff 93f80000 4f03d800 001c2fff 80000000 00000451 88 80000100 00000c35 55555555 557dddd0 bf8000d8 00120003 fe15dddf dfffffff ff\ ffffffff fffff000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 03fffddd a7e00001 b0002400 001c25dd 80000000 00000444 88 80000080 0000002a aaaaaaaa aaffffe0 bf800120 000d0003 ff0fffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffff80 00000000 00000000 00000000 00\ 00000000 07ffffff af800002 40001a00 001c17ff 80000000 00000462 88 80000040 00000035 55555555 557f77a1 7f8002c0 00028003 ff0b777f 77777fff ff\ ffffffff ffffffff f7777777 77777777 77777777 77777777 7fffffff fffffffe 00\ 00000000 07fff777 2e000005 80000500 003c1377 80000000 00000448 88 80000020 0000002a aaaaaaaa aaffffc1 7f800500 00014001 ff87ffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff 5c00000a 00000280 003e0bff 80000000 00000451 88 80000010 00000035 55555555 557dddc1 ff000a00 0000a001 ff87dddf dddddddd dd\ dddddddd dddddddd dddddddd dddddddd ddddddff ffffffff ffffffdd dddddddd dd\ dddddddd 5555dddd 78000014 00000140 003e0bdd c0000000 00000444 88 80000008 0000002a aaaaaaaa aaffffc1 ff001400 00006000 fe47ffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff 70000028 000000c0 007e0bff c0000000 00000462 88 80000004 00000035 55555555 557f7742 ff001400 00005000 7c47777f 7777f777 77\ 77777777 77777777 77777777 77777777 77777777 77777777 77777777 7777f777 77\ 77777777 7777f776 60000028 000000a0 007e0b77 40000000 00000448 88 80000002 0000002a aaaaaaaa aaffff43 fe002800 00002800 1c85ffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff fffffffe 80000050 00000050 00fe0bff c0000000 00000451 88 80000001 00000035 55555555 557ddd43 fc005000 00001400 0305dddf dddddddd dd\ dddddddd dddddddd dddddddd dddddddd dddddddd dddddddd dddddddd ddddfddd dd\ dddddddd dddfddde 800000a0 00000028 00ff0bdd c0000000 00000444 88 80000000 8000002a aaaaaaaa aaffff43 f8005000 00001400 0005ffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff fffffffe 800000a0 00000028 00ff0bff f0000000 00000462 88 80000000 40000035 55555555 557f7783 f0005e00 00001400 000b777f 77777777 77\ 77777777 77777777 77777777 77777777 77777777 77777777 77777777 77777777 77\ 77777777 7777f776 870000a0 00000028 01ff0577 78000000 00000448 88 80000000 2000002a aaaaaaaa aaffff87 c00059e0 00001400 001bffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff fffffffe 99c000a0 00000028 01ff05ff ff800000 00000451 88 80000000 10000035 55555555 557dde87 8000b01f 00000a00 003bdddf dddddddd dd\ dddddddd dddddddd dddddddd dddddddd dddddddd dddddddd dddddddd dddddddd dd\ dddddddd dddfdddc 93e00140 00000014 01ff85dd fd780000 00000444 88 80000000 0800002a aaaaaaaa aafffe87 8000bc00 e0000a00 0032ffff ffaaeaaa aa\ aaaaaaaa aaaaaaaf ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff fffffffd 17e00140 00000014 01ff85ff faaf0000 00000462 88 80000000 04000035 55555555 55777687 0000a3e0 20000a00 0072f777 77555555 55\ 55555555 55555555 55555555 55555555 55777777 77777777 77777777 77777f77 77\ 77777777 7777f775 17f00140 00080014 00ff8577 7d55c000 00000448 88 80000000 0200002a aaaaaaaa aafffe86 0000a01e 40000a00 00e2ffff feaaeaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaabffff ff\ ffffffff fffffffd 17f00140 00140014 00ff85ff faaab000 00000451 88 80000000 0100002d 55555555 557dde86 0000a001 c0000a00 01e2dddf dd555555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 5555555d dd\ dddddddd dddfdddd 1ff80140 00130014 00bf85dd fd555c00 00000444 88 80000000 00000026 aaaaaaaa aafffe8c 0000a000 00000a00 01e2ffff feaaeaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaeaa aa\ aaaaafff fffffffd 1ff80140 00208014 005e85ff faaaab00 00000462 88 80000000 00000025 55555555 5577778c 00009000 00000a00 03e2f777 75555555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555755 55\ 55555557 7777f776 8ff80120 00184014 00488577 7d555580 00000448 88 80000000 00000022 aaabffff aaffff88 00005000 00001400 07e3ffff faaaeaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaab fffffffe 8ff800a0 00043028 003185ff faaaaac0 00000451 88 80000000 00000023 555c0000 757ddd90 00005000 00001400 1fc3dddf d5555555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55\ 55555555 5ddfddde 8ff800a0 00030828 000e05dd fd555570 00000444 88 80000000 00000031 aaafffff eaffff40 00005000 00001400 3fc5ffff eaaaeaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaabaa aa\ aaaaaaaa bffffffe 8ff000a0 00008428 000009ff faaaaaa8 00000462 88 80000000 00000031 555fffff f57f7740 f8004800 00002400 7fc5777f 75555555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 555555d5 55\ 55555555 5777f776 87f00090 00006348 00000b77 7d555554 00000448 88 80000000 00001028 aabeab00 faffff41 04002800 00002800 7fc5ffff eaaaeaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa affffffe 87e00050 000010d0 00000bff faaaaaaa 00000451 88 80000000 00001028 d55eabff f57dddc2 7e001400 00005000 ff45dddf d5555555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 555555d5 55\ 55555555 55dfdddd 47e00028 00000da0 00006bdd fd555555 00000444 88 80000000 00001024 6abeaaaa fabfffc2 7f000a00 00009000 ff87ffff aaaaeaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaea aa\ aaaaaaaa abffffff 47c00014 00000320 0000cbff faaaaaaa 80000462 88 80000000 00001e24 555fffff f57f77c1 fe800a00 0000a001 ff87777f 55555555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55\ 55555555 5577f777 47c00014 00000140 00014b77 7d555555 40000448 88 80000000 00001124 6abfffff fabfffa1 ff800500 00014001 ff87ffff aaaaeaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa aaffffff 43c0000a 00000280 00068bff faaaaaaa a0000451 88 80000000 00001122 355c0000 357ddda1 ffc002c0 00028003 fe8bdddf 55555555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555575 55\ 55555555 555ffddd 23800005 80000500 001f13dd f5555555 50000444 88 80000000 00201122 2aabffff eabfffd0 ffc00120 000d0003 ff0ffffe aaaaaaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaba aa\ aaaaaaaa aabfffff a3800002 40001a00 007e17ff faaaaaaa a8000462 88 80000000 00201e22 35555555 ffffffff ffffffff ffffffff ffffffff fff5d555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55\ 55555555 5557f777 93800001 30002c00 01fc2777 f5555555 54000448 88 80000000 00200021 1aaaaaab ffffffff ffffffff ffffffff ffffffff fffaaaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa aaafffff d3800000 ce03d000 0ffc2fff faaaaaaa ac000451 88 80000000 00200021 15555556 00000000 00000000 00000000 00000000 0035d555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 5555555d 55\ 55555555 555dfddd d3800000 21fc2000 3ff84ddd f5555555 56000444 88 80000000 00200021 1aaaaaaa 00000000 00000000 00000000 00000000 003aaaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaae aa\ aaaaaaaa aaafffff c9000000 1e03c000 7ff05fff faaaaaaa ab000462 88 80000000 00200020 8d555556 00000000 00000000 00000000 00000000 0035d555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555557 55\ 55555555 5557ff77 69000000 01fc0000 fff09777 f5555555 55000448 88 80000000 00200020 8aaaaaaa 00000000 00000000 00000008 20800000 003aaaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa aaabffff e503c000 00000000 ffe0bfff eaaaaaaa aa800451 88 80000000 00200020 8d555556 02081c71 c71c0227 0c78c71c 71c00002 2035d555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55\ 55555555 5555fddd d50c7800 00000001 ffc13ddf f5555555 55800444 88 80000000 00200020 8aaaaaaa 02082288 88a20228 92892888 20800002 203aaaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaab aa\ aaaaaaaa aaabffff f209fe00 00000001 ffc27fff eaaaaaaa aac00462 88 80000000 00200020 45555556 02082080 81200248 90890800 00000002 4035d555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 d5\ 55555555 5555ff77 7909ff00 00000001 ff84f77f d5555555 55400448 88 80000000 00200020 46aaaaaa 02083e80 863e0288 90790f80 00000002 803aaaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa ea\ aaaaaaaa aaaaffff f90bff80 00000003 ff04ffff eaaaaaaa aaa00451 88 80000000 00200020 45555556 03cca288 88a203c8 90090880 00000003 0035d555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55\ 55555555 55557fdd dc87ff80 00000003 fd09dddf d5555555 55600444 88 80000000 00200020 27ffffea 022b1c71 871c0227 3c73c700 00000002 803aaaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa aaaaffff fe45ffc0 00000002 fa13ffff aaaaaaaa aaa00462 88 80000000 00200020 2c00001e 02200000 00000220 10010000 00000002 4035d555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55\ 55555555 55557ff7 7722ffc0 00000002 f423777f d5555555 55600448 88 80000000 00200020 38000002 02200000 80000220 10010000 00000002 203aaaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa ba\ aaaaaaaa aaaabfff ff217fc0 00000001 1827ffff aaaaaaaa aab00451 88 80007fff fc200020 28000002 03c00000 000003c0 00000000 00000002 2035d555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 5d\ 55555555 55557fdd dd90ffe0 001c0001 e04dddff 55555555 55500444 88 80000000 00200020 28000002 00000000 00000000 00000000 00000000 003aeaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa aaaabfff ffc83fe0 00ff0000 009fffff aaaaaaaa aab00462 88 80000000 00200020 28000002 00000000 00000000 00000000 00000000 00355555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55\ 55555555 55555ff7 77440ff0 037fe000 011777ff 55555555 55500448 88 80000000 00200020 18000002 00000000 00000000 00000000 00000000 003aeaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa aaaabfff ffe303f0 04fffe00 023ffffe aaaaaaaa aaa80451 88 80000000 00200020 14000002 00000000 00000000 00000000 00000000 00355555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 57\ 55555555 55555ffd ddd881f8 05fffff0 0c5ddfff 55555555 55580444 88 80000000 00200020 14000002 00000000 00000000 00000000 00000000 003aeaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa ab\ aaaaaaaa aaaaafff fffc40f8 0bffffff 11fffffe aaaaaaaa aaa80462 88 80000000 00000020 14000002 00000000 00000000 00000000 00000000 00355555 55\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55\ d5555555 55555fff 7776303c 09fffff8 237777fd 55555555 55580448 88 80000000 00000020 14000002 00000000 00000000 00000208 20000000 003ffaaa aa\ aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa aaaaafff ffff881e 08ffffe0 47fffffe aaaaaaaa aaac0451 88 80000000 00000020 0a000002 02081c71 c71c01c7 1e71c71c 70000001 803047ff f5\ 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55\ 55555555 555557ff ddddc40f 041ffc01 9ddddffd 55555555 55540444 88 80000000 00000020 0a000002 02082288 88a20228 a2222208 20000002 40304000 1f\ ffeaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ eaaaaaaa aaaaabff fffff303 87fe0006 3ffffffa aaaaaaaa aaac0462 88 80000000 00000020 0a000002 02082080 81200028 22220000 00000000 40304000 00\ 003fffd5 55555555 55555555 55555555 55555555 55555555 55555555 55555555 55\ 75555555 555557ff f7777cc1 c0000018 f7777ff5 55555555 55540448 88 80000000 00000020 09000002 02083e80 863e0028 1e23e000 00000000 40304000 00\ 0000007f feaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa aaaaabff ffffff30 40000067 fffffffa aaaaaaaa aaaa0451 88 80000000 00000020 05000002 03cca288 88a201c8 82222000 00000000 40304000 00\ 00000000 01fffd55 55555555 55555555 55555555 55555555 55555555 55555555 55\ 55555555 555555ff fdddddec 0000019d ddddfff5 55555555 55560444 88 80000000 00000020 04800002 022b1c71 871c0207 1c21c000 00000000 40302000 00\ 00000000 000003ff faaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ baaaaaaa aaaaaaff fffffffb f800feff ffffffea aaaaaaaa aaaa0462 88 80000000 00000620 02800002 02200000 00000200 00200000 00000000 40302000 00\ 00000000 00000000 07fff555 55555555 55555555 55555555 55555555 55555555 55\ 5d555555 5555557f ff777777 87ff1f77 7777ffd5 557ffffd 55560448 88 80000000 00000920 02400002 02200000 80000220 00200000 00000000 40302000 00\ 00000000 00000000 00001fff eaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa aaaaaabf ffffffff fe07ffff ffffffaa aa000002 aaaa0451 88 80000000 00000820 01400002 03c00000 000001c0 00600000 00000000 e0302000 00\ 00000000 00000000 00000000 3fffd555 55555555 55555555 55555555 55555555 55\ 55555555 5555557f ffdddddd ddfddddd dddfff55 54000005 55560444 88 80000000 00000820 01200002 00000000 00000000 00000000 00000000 00302000 00\ 00000000 00000000 00000000 00007ffe aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aeaaaaaa aaaaaabf ffffffff ffffffff ffffffaa aabffffe aaaa0462 88 80000000 00000820 00a00002 00000000 00000000 00000000 00000000 00302000 00\ 00000000 00000000 00000000 00000001 fffd5555 55555555 55555555 55555555 55\ 57555555 5555555f fff77777 77777777 77ffff55 55555555 55560448 88 80000000 00001e20 00500002 00000000 00000000 00000000 00000000 00301000 00\ 00000000 00000000 00000000 00000000 0003fffa aaaaaaaa aaaaaaaa aaaaaaaa aa\ aaaaaaaa aaaaaaaf ffffffff ffffffff fffffeaa aaaaaaaa aaaa0451 88 80000000 00000820 00280002 00000000 00000000 00000000 00000000 00301000 00\ 00000000 00000000 00000000 00000000 0000000f fff55555 55555555 55555555 55\ 55555555 55555557 ffffdddd dddddddd dffffd55 55555555 55560444 88 80000000 00000820 00240002 00000000 00000000 00000000 00000000 00301000 00\ 00000000 00000000 00000000 00000000 00000000 001fffea aaaaaaaa aaaaaaaa aa\ abaaaaaa aaaaaaab ffffffff ffffffff fffffaaa aafffffa aaaa0462 88 80000000 00000020 00120002 00000000 00000000 00000000 00000000 00301000 00\ 00000000 00000000 00000000 00000000 00000000 0000003f ff555555 55555555 55\ 55d55555 55555555 fffff777 77777777 7ffff555 5580000d 55560448 88 80000872 23000020 00090002 00000000 00000000 00008208 00000000 00301000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00fffeaa aaaaaaaa aa\ aaaaaaaa aaaaaaaa ffffffff ffffffff ffffeaaa aafffffe aaaa0451 88 80000889 44800020 00048002 02081c71 c71c0227 0871c71c 00000002 20301000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 000001ff fd555555 55\ 55555555 55555555 7fffffdd dddddddf ffffd555 55ffffff 55560444 88 80000880 84000020 00024002 02082288 88a20228 94888208 00000002 20300800 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 07fffaaa aa\ aaeaaaaa aaaaaaaa bfffffff ffffffff ffffaaaa abaabffe aaaa0462 88 800008f8 84000020 00012002 02082080 81200228 94800000 00000002 20300800 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000fff f5\ 55755555 55555555 5fffffff 777777ff ffff5555 55aaa01f 55560448 88 80000889 44000020 0000d002 02083e80 863e0228 a2f80000 00000002 20300800 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 1f\ ffaaaaaa aaaaaaaa abffffff ffffffff fffaaaaa abaabffe aaaa0451 88 80000872 2f000020 00002802 03cca288 88a202a8 a2880000 00000002 a0300800 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 007fff55 55555555 55ffffff ffffffff fff55555 55aaaaaf 55560444 88 80000800 04000020 00001402 022b1c71 871c02a7 22700000 00000002 a0300800 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 001000ff feaaaaaa aaffffff ffffffff ffeaaaaa abfffffe aaaa0462 88 80000800 04000020 00000a02 02200000 00000360 00000000 00000003 60300800 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00080000 03fffd55 557fffff ffffffff ffd55555 55c00005 55540448 88 80003e00 00000020 00000582 02200000 80000220 00000000 00000002 20300400 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00080000 000007ff fabfffff ffffffff ffaaaaaa aabffffa aaac0451 88 80000000 00000020 00000242 03c00000 00000220 00000000 00000002 20300400 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00080000 00000000 0fffffff ffffffff fd555555 55555555 55540444 88 80000000 00000020 000001a2 00000000 00000000 00000000 00000000 00300400 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00040000 00000000 0001ffff ffffffff faaaaaaa aaaaaaaa aaa80462 88 80000000 00000020 0000005a 00000000 00000000 00000000 00000000 00300400 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00040000 00000000 00007fff ffffffff d5555555 55555555 55580448 88 80000000 00000020 00000026 00000000 00000000 00000000 00000000 00300200 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00020000 00000000 00001fff fffffffe aaaaaaaa aaaaaaaa aaa80451 88 80000000 00000020 00000012 00000000 00000000 00000000 00000000 00300200 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00020000 00000000 000003ff ffffffff ffd55555 55555555 55500444 88 80000000 00000020 0000000e 00000000 00000000 00000000 00000000 00300100 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00020000 00000000 0000003f ffffff80 003ffeaa aaaaaaaa aab00462 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300100 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00010000 00000000 00000000 7ffff800 000001ff fd555555 55600448 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300100 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00010000 00000000 00000000 00000000 00000000 07ffeaaa aaa00451 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300080 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00008000 00000000 00000000 00000000 00000000 00001fff ffc00444 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300080 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00008000 00000000 00000000 00000000 00000000 00000000 01000462 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300040 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00008000 00000000 00000000 00000000 00000000 00000000 01000448 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300040 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00004000 00000000 00000000 00000000 00000000 00000000 01000451 88 80000000 00000020 00000002 fbefbefb efbefbef befbefbe fbefbefb efb00040 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00004000 00000000 00000000 00000000 00000000 00000000 01000444 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300020 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00002000 00000000 00000000 00000000 00000000 00000000 01000462 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300020 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00002000 00000000 00000000 00000000 00000000 00000000 01000448 88 80000000 00001f20 00000002 00000000 00000000 00000000 00000000 00300010 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00002000 00000000 00000000 00000000 00000000 00000000 01000451 88 80000000 00001020 00000002 00000000 00000000 00000000 00000000 00300010 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00001000 00000000 00000000 00000000 00000000 00000000 01000444 88 80000000 00000820 00000002 00000000 00000000 00000000 00000000 00300010 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000001f ff\ ff801000 00000000 00000000 00000000 00000000 00000000 01000462 88 80000000 00000420 00000002 00000000 00000000 00000000 00000000 00300008 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000001c 80\ 09879000 00000000 00000000 00000000 00000000 00000000 01000448 88 80000000 00000220 00000002 00000000 00000000 00000000 00000000 00300008 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000001c 80\ 099e4800 00000000 00000000 00000000 00000000 00000000 01000451 88 80000000 00001f20 00000002 00000000 00000000 00000000 00000000 00300004 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000001c 80\ 09964800 00000000 00000000 00000000 00000000 00000000 02000444 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300004 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000001c ff\ f9964800 00000000 00000000 00000000 00000000 00000000 02000462 88 80000380 00038020 00000002 00000000 00000000 00000000 00000000 00300002 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000001c 00\ 01964800 00000000 00000000 00000000 00000000 00000000 04000448 88 80000440 00044020 00000002 00000000 00000000 00000000 00000000 00300002 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000001f ff\ ff8e4400 00000000 00000000 00000000 00000000 00000000 04000451 88 8044f051 38804020 00000002 01c20071 c6a231c8 1c880000 00000001 c0300001 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000001f ff\ ff878400 00000000 00000000 00000000 00000000 00000000 08000444 88 804513d1 10834020 00000002 0225008a 29a24a28 22d80000 00000001 00300001 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000001f ff\ ff800400 00000000 00000000 00000000 00000000 00000000 08000462 88 80451451 1084c020 00000002 00288082 28a24208 20a80000 00000001 00300000 80\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000200 00000000 00000000 00000000 00000000 00000000 08000448 88 8044f451 10844020 00000002 00288082 28a243e8 20a80000 00000001 00300000 80\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000200 00000000 00000000 00000000 00000000 00000000 08000451 88 80541459 11e44020 00000002 01e88082 28b2422c a0a80000 00000001 00300000 40\ 00000000 0001ffff ffffffff fff00000 00000000 00000000 00000000 00000000 00\ 00000200 00000000 00000000 00000000 00000000 00000000 10000444 88 8054e396 30844020 00000002 02288081 c8acf1cb 20880000 00000001 00300000 40\ 00000000 7ffe2222 22222222 222fffff ffffffff ffff0000 00000000 00000000 00\ 00000200 00000000 00000000 00000000 00000000 00000000 10000462 88 806c0000 00800020 00000002 02288080 00004000 20880000 00000001 00300000 20\ 000001ff 80000000 00000000 00000000 00000000 0000ffff fff00000 00000000 00\ 00000200 00000000 00000000 00000000 00000000 00000000 10000448 88 80440000 10900020 00000002 02250088 00004000 22880000 00000001 00300000 20\ 00001e88 88888888 88888888 88888888 88888888 88888888 888fffff ff000000 00\ 00000100 00000000 00000000 00000000 00000000 00000000 10000451 88 80440000 00600020 00000002 01c20070 00000000 1c880000 00000001 c0300000 10\ 0001e000 00000000 00000000 00000000 00000000 00000000 00000000 00ffffff f0\ 00000100 00000000 00000000 00000000 00000000 00000000 20000444 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 10\ 000e2222 22222222 22222222 22222222 22222222 22222222 22222222 22222222 2f\ ffff8100 00000000 00000000 00000000 00000000 00000000 20000462 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 08\ 00100000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00007ff8 00000000 00000000 00000000 00000000 00000000 20000448 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 04\ 00288888 88888888 88888888 88888888 88888888 88888888 88888888 88888888 88\ 8888898f ff800000 00000000 00000000 00000000 00000000 20000451 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 02\ 00400000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000100 007fc000 00000000 00000000 00000000 00000000 40000444 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 003e0000 02\ 00a22222 22222222 22222222 22222222 22222222 22222222 22222222 22222222 22\ 22222322 22223f00 00000000 00000000 00000000 00000000 40000462 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 0035ff80 01\ 00400000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000100 000000fc 00000000 00000000 00000000 00000000 40000448 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 003fffff 00\ 80488888 88888888 88888888 88888888 88888888 88888888 88888888 88888888 88\ 88888a88 8888888b f0000000 00000000 00000000 00000000 40000451 88 80000000 00000020 00000002 01c20071 c71c8947 1c700000 00000001 c037c03f f0\ 40200000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000200 00000000 0f800000 00000000 00000000 00000000 40000444 88 80000000 00000020 00000002 02250088 88a292a2 22880000 00000000 40380000 3e\ 40122222 22222222 22222222 22222222 22222222 22222222 22222222 22222222 22\ 22222222 22222222 22780000 00000000 00000000 00000000 80000462 88 80000000 00000020 00000002 00288080 88a0a2a2 04800000 00000000 40300000 03\ 800c0000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000200 00000000 00078000 00000000 00000000 00000000 80000448 88 80000000 00000020 00000002 00288080 88a0c2a2 18f80000 00000000 403c0000 00\ 60038888 88888888 88888888 88888888 88888888 88888888 88888888 88888888 88\ 88888c88 88888888 8888f000 00000000 00000000 00000000 80000451 88 80000000 00000020 00000002 01e88080 88a2a222 22880000 00000000 4033c000 00\ 1800e000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000400 00000000 00000c00 00000000 00000000 00000000 80000444 88 80000000 00000020 00000002 02288080 871c9226 1c700000 00000000 40303800 00\ 07001e22 22222222 22222222 22222222 22222222 22222222 22222222 22222222 22\ 22222622 22222222 22222300 00000000 00000000 00000001 00000462 88 80000000 00000020 00000002 02288080 80008000 00000000 00000000 40300780 00\ 00c001c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000800 00000000 00000080 00000000 00000000 00000001 00000448 88 80000000 00000020 00000002 02250088 80008002 00000000 00000000 40300078 00\ 00380038 88888888 88888888 88888888 88888888 88888888 88888888 88888888 88\ 88888888 88888888 88888880 00000000 00000000 00000001 00000451 88 80000000 00001120 00000002 01c20071 80008000 00000000 00000001 c0300007 00\ 00070007 80000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000800 00000000 00000040 00000000 00000000 00000001 00000444 88 80000000 00001220 00000002 00000000 00000000 00000000 00000000 00300000 f0\ 0000c000 72222222 21c2221c 2223d222 22222222 22222222 22222222 22222222 22\ 22222a22 22222222 22222240 00000000 00000000 00000002 00000462 88 80000000 00001420 00000002 00000000 00000000 00000000 00000000 00300000 0e\ 00003800 0e000000 03e0003e 0001f000 00000000 00000000 00000000 00000000 00\ 00001000 00000000 00000020 00000000 00000000 00000002 00000448 88 80000000 00001820 00000002 00000000 00000000 00000000 00000000 00300000 01\ e0000700 01e88888 8b6888b6 88897888 88888888 88888888 88888888 88888888 88\ 88889888 88888888 888888a0 00000000 00000000 00000004 00000451 88 80000000 00001420 00000002 00000000 00000000 00000000 00000000 00300000 00\ 1e0000e0 001c0000 03e0003e 0001f000 00000000 00000000 00000000 00000000 00\ 00001000 00000000 00000040 00000000 00000000 00000004 00000444 88 80000000 00001220 00000002 00000000 00000000 00000000 00000000 00300000 00\ 01e0001c 0003a222 21c2221c 2223d222 22222222 22222222 22222222 22222222 22\ 22223222 22222222 22222240 00000000 00000000 00000008 00000462 88 80000000 00001020 00000002 00000080 00000000 00000000 00000000 00300000 00\ 001e0003 80007800 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00002000 00000000 00000080 00000000 00000000 00000008 00000448 88 80000000 00001020 00000002 00000080 00000000 00000000 00000000 00300000 00\ 0001c000 78000788 88888888 88888888 88888888 88888888 88888888 88888888 88\ 8888a888 88888888 88888900 00000000 00000000 00000010 00000451 88 80000000 00001020 00000002 02071c80 021c80c7 1c79c000 00000000 80300000 00\ 00003c00 070000e0 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00002000 00000000 00000200 00000000 00000000 00000030 00000444 88 80089c31 e31c0020 00000002 020208f0 02228122 22888000 00000000 80300000 00\ 000003c0 00e0001e 22222222 22222222 22222222 22222222 22222222 22222222 22\ 22226222 22222222 22222200 00000000 00000000 00000030 00000462 88 8008a24a 24a20020 00000002 02020888 05208102 20888000 00000000 80300000 00\ 0000003c 001c0001 c0000000 00000000 00000000 00000000 00000000 00000000 00\ 00004000 00000000 00000400 00000000 00000000 000000e0 00000448 88 80092242 24200020 00000002 02020888 053e8102 20788000 00000000 80300000 00\ 00000003 c0038000 38888888 88888888 88888888 88888888 88888888 88888888 88\ 8888c888 88888888 88888800 00000000 00000000 00000340 00000451 88 800a2241 e43e0020 00000002 03c20888 0522c902 22088000 00000000 80300000 00\ 00000000 38007000 07800000 00000000 00000000 00000000 00000000 00000000 00\ 00008000 00000000 00001000 00000000 00000000 00000c80 00000444 88 800f2240 24220020 00000002 020218f0 089cb3c6 1c708000 00000000 80300000 00\ 00000000 07800e00 00722222 22222222 22222222 22222222 22222222 22222222 22\ 2222a222 22222222 22222000 00000000 00000000 00003300 00000462 88 80089cf1 cf1c0020 00000002 02020000 08800100 00008000 00000000 80300000 00\ 00000000 007801c0 000e0000 00000000 00000000 00000000 00000000 00000000 00\ 00008000 00000000 00002000 00000000 00000000 0003c400 00000448 88 80088040 04000020 00000002 02020800 08800102 00008000 00000000 80300000 00\ 00000000 00078038 0031c888 88888888 88888888 88888888 88888888 88888888 88\ 88898888 88888888 8888c000 00000000 00000000 01fc0800 00000451 88 80088040 04000020 00000002 03e60000 08800000 00018000 00000000 80300000 00\ 00000000 00007807 002e3c00 00000000 00000000 00000000 00000000 00000000 00\ 00010000 00000000 00008000 00000000 00000003 fe0ff000 00000444 88 800f0000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000700 e011e3a2 22222222 22222222 22222222 22222222 22222222 22\ 22222222 22222222 22230000 00000000 00000ffc 0ff00000 00000462 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 000000f0 1c081c70 00000000 00000000 00000000 00000000 00000000 00\ 00020000 00000000 00040000 00000000 0007f6ff f0000000 00000448 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 0000000e 03c4338f 88888888 88888888 88888888 88888888 88888888 88\ 888a8888 88888888 88980000 00000000 00781fe0 00000000 00000451 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000001 e03e1f78 e0000000 00000000 00000000 00000000 00000000 00\ 00040000 00000000 00200000 00000000 0f807800 00000000 00000444 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 1e030cf7 1e222222 22222222 22222222 22222222 22222222 22\ 22262222 22222222 22c00000 00000001 f0018000 00000000 00000462 88 80000000 00000020 00000002 00000080 00000000 00000000 00000000 00300000 00\ 00000000 00000000 01c0820e e3c00000 00000000 00000000 00000000 00000000 00\ 00040000 00000000 01000000 0000001e 00060000 00000000 00000448 88 80000000 00000020 00000002 00000080 00000000 00000000 00000003 e0300000 00\ 00000000 00000000 003c4181 fc388888 88888888 88888888 88888888 88888888 88\ 88888888 88888888 8a000000 000001e0 00780000 00000000 00000451 88 80000000 00000020 00000002 02071c80 089c81cf 9c88c79c 00000000 00300000 00\ 00000000 00000000 03e3a0f8 1fc6f000 00000000 00000000 00000000 00000000 00\ 00080000 00000000 0c000000 00001e00 0f800000 00000000 00000444 88 80000000 00000020 00000002 020208f0 08a28088 22892888 00000000 00300000 00\ 00000000 00000000 03e078ff f9b90222 22222222 22222222 22222222 22222222 22\ 22322222 22222222 30000000 0000e001 f0000000 00000000 00000462 88 80000000 00000020 00000002 02020888 08a28084 22890888 00000000 00300000 00\ 00000000 00000000 03e00700 0707fe00 00000000 00000000 00000000 00000000 00\ 00100000 00000000 60000000 000f003e 00000000 00000000 00000448 88 80000000 00000020 00000002 02020888 08a28082 22890788 00000000 00300000 00\ 00000000 00000000 03e03800 0185f1c8 88888888 88888888 88888888 88888888 88\ 88a88888 88888889 80000000 00f007c0 00000000 00000000 00000451 88 80000000 00000020 00000002 03c20888 0fa2c881 22c90088 00000000 00300000 00\ 00000000 00000000 03e0c000 0069f038 00000000 00000000 00000000 00000000 00\ 00200000 00000006 00000000 07007800 00000000 00000000 00000444 88 80000000 00000020 00000002 020218f0 089cb18f 9cb3c708 00000000 00300000 00\ 00000000 00000000 00030000 00180007 a2222222 22222222 22222222 22222222 22\ 22622222 22222238 00000000 780f8000 00000000 00000000 00000462 88 80000000 00000020 00000002 02020000 08800000 00010008 00000000 00300000 00\ 00000000 00000000 00040000 001e0000 70000000 00000000 00000000 00000000 00\ 00400000 000000c0 00000003 80f00000 00000000 00000000 00000448 88 80000000 00000020 00000002 02020800 08800080 00010008 00000000 00300000 00\ 00000000 00000000 00040000 0009c000 0e888888 88888888 88888888 88888888 88\ 88888888 88888b00 0000003c 1f000000 00000000 00000000 00000451 88 80000000 00000820 00000002 03e60000 08800000 00000018 00000000 00300000 00\ 00000000 00000000 00080000 000c3800 01e00000 00000000 00000000 00000000 00\ 00800000 00003c00 000003c1 e0000000 00000000 00000000 00000444 88 80000000 00000420 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00080000 000b8780 001e2222 22222222 22222222 22222222 22\ 22a22222 2223c000 00003c3e 00000000 00000000 00000000 00000462 88 80000000 00000620 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00080000 00047878 00030000 00000000 00000000 00000000 00\ 01000000 003c0000 0003c7c0 00000000 00000000 00000000 00000448 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00040000 00040787 8000e888 88888888 88888888 88888888 88\ 89888888 8bc00000 003c7800 00000000 00000000 00000000 00000451 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00040000 00040078 78001e00 00000000 00000000 00000000 00\ 02000000 fc000000 07cf8000 00000000 00000000 00000000 00000444 88 80000000 00000420 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00020000 00080007 878001fe 22222222 22222222 22222222 22\ 222222ff 00000001 f9f00000 00000000 00000000 00000000 00000462 88 80000000 00000e20 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00010000 00080000 78780003 fe000000 00000000 00000000 00\ 02007f00 0000007e 1e000000 00000000 00000000 00000000 00000448 88 80000000 00000420 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 0000c000 00080000 07878000 01f88888 88888888 88888888 88\ ffff8000 00001f87 e0000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00003000 00100000 007c7e00 0007f800 00000000 00ffffff ff\ 88000000 000fe1f8 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000c00 00300000 0003e3f0 000007ff ffffffff ff000000 00\ 10000000 3ff0fe00 00000000 00000000 00000000 00000000 00000462 88 8038640e 18e44020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000300 00c00000 00003c0f c0000000 00000000 00000000 00\ 2000007f c03f0000 00000000 00000000 00000000 00000000 00000448 88 80449411 25144020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 000000fe 03000000 00001f00 3fff0000 00000000 00000000 00\ 4fffff80 ffc00000 00000000 00000000 00000000 00000000 00000451 88 80048410 21044020 00000002 fbefbefb efbefbef befbefbe fbefbefb efb00000 00\ 00000000 00000000 00000001 fc000000 000000ff 0000ffff ffe00000 001fffff ff\ f0003fff 00000000 00000000 00000000 00000000 00000000 00000444 88 8004841f 21044020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 fc000000 001fffff ffe00000 00\ 4fffc000 00000000 00000000 00000000 00000000 00000000 00000462 88 80388651 21164020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 03fff000 00000000 00000003 ff\ f0000000 00000000 00000000 00000000 00000000 00000000 00000448 88 8041e58e 78e58020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000fff ffffffff fffffffc 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80408000 20040020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 03e0003e 0001f000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80448000 20040020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 03e0003e 0001f000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80380000 00040020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 03e0003e 0001f000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 03e0003e 0001f000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 03e0003e 0001f000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000002 01c71c71 c30089c7 00000000 00000001 e0300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000002 0228888a 24808882 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000002 00280882 04008882 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000002 002f88fa 0400f882 00000000 00000001 e0300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000002 01c8888a 24008882 00000000 00000000 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000002 02070871 cf008882 00000000 00000001 c0300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000002 02000800 04008882 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000002 02200800 04005082 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000c20 00000002 01c01800 00002186 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00001220 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00001220 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000220 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000220 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000220 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000220 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000620 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000002 03c71c70 c7000000 00000000 00000001 e0300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000220 00000002 01288889 28800000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000002 01280881 08000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 8000e38f 38e00020 00000002 012f88f9 0f800000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80011451 11100020 00000002 01288889 08800000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80001411 11000020 00000002 01270873 c7000000 00000000 00000001 e0300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 8000140f 11f00020 00000002 01200801 00000000 00000000 00000088 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 8000e441 11100020 00000002 01200801 00000000 00000000 00000050 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 8001038e 10e00020 00000002 03c01800 00000000 00000000 00000020 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80010000 10000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80011000 10000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 8000e000 30000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000002 00002000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000002 00002000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000002 03c6a071 c71e31c0 00000000 00000001 e0300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000002 0129bc20 88a24a20 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000002 0128a220 88224200 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000002 0128a220 881e43e0 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 80000000 00000020 00000002 0128a220 88824220 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 80000000 00000020 00000002 0128bc21 871cf1c0 00000000 00000001 e0300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 80000000 00000020 00000002 01200020 00004000 00000000 00000000 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 80000000 00000020 00000002 01200020 80004000 00000000 00000000 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 ffffffff ffffffe0 00000002 03c00060 00000000 00000000 00000000 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 ffffffff ffffffe0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 ffffffff ffffffe0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 ffffffff ffffeee0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 ffffffff ffffeae0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 ffffffff ffffeae0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 ffffffff ffffeae0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 ffffffff ffffeae0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 ffffffff ffffe5e0 00000002 02079c31 c0000000 00000000 00000000 80300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 ffffffff ffffffe0 00000002 0208a24a 20000000 00000000 00000001 40300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 ffffffff ffffffe0 00000002 02088442 00000000 00000000 00000001 40300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 ffffffff ffffffe0 00000002 02079843 e0000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 ffffdd8f 78ffffe0 00000002 03c0a242 20000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 ffffdd76 b77fffe0 00000002 02271cf1 c0000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 ffffdd76 b7ffffe0 00000002 02200040 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 ffffdd75 d07fffe0 00000002 02200040 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 ffffd575 d77fffe0 00000002 03c00000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 ffffd58d d8ffffe0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000462 88 ffffc9ff ffffffe0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000448 88 ffffddff ffffffe0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000451 88 ffffddff ffffffe0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000444 88 ffffffff ffffffe0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 0000047f 88 ffffffff ffffffe0 00000002 00002070 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 00002088 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 01c72008 00000000 00000000 00000001 c0300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 0228bc68 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 0208a298 00000000 00000000 00000002 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 0208a288 00000000 00000000 00000002 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 0208a288 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 02073c88 00000000 00000000 00000001 c0300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 02000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 02200000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 01c00000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffe0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000e20 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00001120 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000220 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000c20 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00001120 00000002 01c68c00 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000e20 00000002 02299200 00000000 00000000 00000001 40300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000002 02089000 00000000 00000000 00000000 80300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000002 02089000 00000000 00000000 00000000 80300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000002 02089000 00000000 00000000 00000001 40300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80071c71 c70c0020 00000002 0208bc00 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 8008a222 28920020 00000002 02001000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 8000a022 08100020 00000002 02201000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 8000be23 e8100020 00000002 01c00000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80072222 28900020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80081c21 c73c0020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80080020 00100020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80088020 00100020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 000007ff f8 80070060 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000002 01c89e70 00000000 00000000 00000001 c0300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 0000047f 88 80000000 00000020 00000002 0228a288 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000441 08 80000000 00000020 00000002 0228a288 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000421 08 80000000 00000020 00000002 0228a288 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000422 08 80000000 00000020 00000002 022ca288 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000412 08 80000000 00000020 00000002 022b1e70 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000414 08 80000000 00000020 00000002 02200200 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 0000040c 08 80000000 00000020 00000002 02200200 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000408 08 80000000 00000020 00000002 02200200 00000000 00000000 00000002 20300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 80000000 00000020 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000400 08 ffffffff ffffffff fffffffe 00000000 00000000 00000000 00000000 003fffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff f8 80000007 ffffffe0 00000002 00000000 00000000 00000000 00000000 00300000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000003 ffffffff ffffffff ffffffff ffffffff ffe00000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00700000 02000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00880000 02000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 2071c701 fc1863cf f01c3206 9c31a81c 00081c88 c000f9c8 9c\ 00072279 e7000227 1c0a2000 72031c72 20000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 20208881 fdf777b7 f0224a09 a24a6822 00082289 20008088 a2\ 0008a28a 28800222 087a2000 8bc4888a 20000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 20208801 fdf777bf f0024208 a0422820 00082289 00008088 a0\ 0000a28a 28000222 088a2000 8a24088a 20000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 20208f81 fdf777bf f0024208 a042283e 00082289 00008088 be\ 0000a27a 2f8003e2 088a2000 8a24088a 20000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 ffffffff ffffffe0 3c208881 fc3777bf f01c4328 a2422ca2 000f22c9 0000808c a2\ 0007320a 28800222 088b2000 8a24088b 20000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 20608701 fdf8670f f020f2c8 9cf22b1c 00081cb3 c000818b 1c\ 00082c71 e7000222 1872c000 8bcf1872 c0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 20008001 fdff7fbf f0204000 00400000 00080001 00008000 00\ 00082000 20000222 00000000 88040000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 20208001 fdff77bf f0224000 00400000 00080001 00008080 00\ 0008a000 20000142 08000000 88040800 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 3e018001 fc1f7fff f01c0000 00000000 000f8000 00008000 00\ 00072000 20000086 00000000 70000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000007 ffffffe0 00000001 ffffffff f0000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff f8 80000000 00380000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000000 00440000 00000000 00000000 00000000 40000000 00000000 00000100 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 83d03ca3 9104010e 38a00000 e4463901 0e38a390 40e38639 038f40e4 0e3d038e 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 84504551 113c0284 45500000 44494502 84455450 78444945 04514114 11450111 00\ 40000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 84504551 11440284 41500000 44484102 84415088 44440808 84114022 10450011 01\ 50000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 84503d51 11440444 7d500000 44487d04 447d5308 44440830 840f40c2 103d0011 01\ f0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 84590511 19440444 45100000 46484594 44451444 44444844 44416511 1105901e 00\ e0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 83d63913 1638044c 39100000 c59e3964 4c391382 78c39e38 238e58e0 8e396010 01\ f0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80400000 00000000 00000000 00080000 00000002 00000800 20000000 80000010 01\ 50000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80400001 00000004 00000000 40080000 04000001 00400800 10000000 40000011 00\ 40000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80400000 00000000 00000000 00000000 00000001 00000000 10000000 4000000e 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 80000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08 ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff f8 showpage @endspecial 495 2448 p (Figure)s 14(7:)m 17(The)m c-med.300 @sf 15(idraw)m t-rom.300 @sf 14(drawing)m 12(editor)m -1 r 44 c 13(Modula-2)m 12(version)m @eop 9 @bop0 9 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 57 c 13 r 45 c 0 1162 p @beginspecial 115.000000 @hoffset 0.000000 @voffset 0.400000 @hscale 0.400000 @vscale @setspecial %! /picstr 73 string def 0 0 translate 582 656 scale 582 656 true [582 0 0 656 0 0] {currentfile picstr readhexstring pop} imagemask ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff fffffc ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff fffffc e2222222 22222222 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8888888 8888888a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2222222 22222222 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8888888 8888888a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e23fffff ffffffa2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c07fffff ffffff82 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8c00000 0000018a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2400000 000001a2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8c00000 0000018a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2400000 000001a2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8c00000 0000018a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2400000 000001a2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8c00000 0000018a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2400000 000001a2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8c00000 0000018a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2400000 000001a2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8c00000 0000018a 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 0003e000 00000000 00000000 00000000 00000000 00000000 0000000f 80\ 00000000 00000c c0400000 00000182 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 0003e000 00000000 00000000 00000000 00000000 00000000 0000000f 80\ 00000000 00000c e2400000 000001a2 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 0003e000 00000000 00000000 00000000 00000000 00000000 0000000f 80\ 00000000 00000c c0400000 00000182 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 0003e000 00000000 00000000 00000000 00000000 00000000 0000000f 80\ 00000000 00000c c8c00000 0000018a 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000060 0003e000 00000000 00000000 00000000 00000000 00000000 0000000f 80\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 000000a0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2400000 000001a2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000010 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 0000b810 60871ddc 03f00000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8c00000 0000018a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 0000c430 91488888 01080000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00008428 11100888 01080000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2400000 000001a2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00008448 611f8888 01080000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000844 81108888 01100000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8c00000 0000018a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00003084 91088cc8 01e00000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 000041ce 63871b30 01100000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2400000 000001a2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00008800 01000000 01100000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00009800 01000000 01100000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8c00000 0000018a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00006800 00000000 03e00000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2400000 000001a2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8c00000 0000018a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0400000 00000182 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e27fffff ffffff22 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8888888 8888888a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c e2222222 22222222 00000000 00000f80 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c8888888 8888888a 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00001f00 00\ 00000000 00000c e2222222 22222222 00000000 0000fff0 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0010000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000ffe0 00\ 00000000 00000c c0038000 001c0002 00000000 0007fffe 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c007c000 006b0002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c00fe000 0188c002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c01ff000 061c3002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c01ff000 18630c02 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0007fffe 00\ 00000000 00000c c007c000 2180c202 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c007c000 26003202 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c007c000 38000e02 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 3e003e02 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 01004002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0600c00 00808002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0e00e00 007f0002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c1fc7f00 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c3fc7f80 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c7fc7fc0 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c3fc7f80 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c1fc7f00 07fff002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0e00e00 04001002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0600c00 07fff002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 3c001e02 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 22002202 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c007c000 3f007e02 00000000 00000200 00000008 42100000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c007c000 30000602 00000000 00000200 00000008 42100000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c007c000 0c001802 00000000 00000200 00000014 a5280000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c01ff000 03006002 00000000 00000200 00000014 a5280000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c01ff000 00c18002 00000000 000003ff ffffffa2 94afffff ffffffff ffff0000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 21084000 00000400 00\ 00000000 00000c c00fe000 00360002 00000000 00000000 000000a2 94a00000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 21086000 00000400 00\ 00000000 00000c c007c000 00080002 00000000 00000000 00000063 18c00000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 5294a000 00000400 00\ 00000000 00000c c0038000 00000002 00000000 00000000 00000041 08400000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 52949000 00000400 00\ 00000000 00000c c0010000 00000002 00000000 00000000 00000041 08400000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 7ffffffe 4a529fff fffffc00 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 4a528000 00000000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 84210000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00e00000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 84210000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 0fe00000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 3fffffff f0010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00880000 07e00000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00880000 00600000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00880000 00000000 00010000 00\ 00000007 e0000000 00000000 00000000 00000000 40000000 00011000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00c80000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00015000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 18b00000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00015000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 24000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00015000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 24000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 0045a000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000088 00010000 00\ 0000001f fc000000 00000000 00000000 00000000 40000000 00480000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000088 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00500000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000088 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00600000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 0001f0c8 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00500000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 000001c6 0c000000 000100b0 00010000 00\ 000001ff ff800000 00000000 00000000 00000000 40000003 8c480000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000084 00000000 00008000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000001 08400000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000088 04000000 00004000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000001 10400000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000088 00000000 00002000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000001 10400000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000090 00000000 00181000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000001 20000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 000000f8 00000000 00251000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000001 f0000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000084 00000000 00211000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000001 08000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000084 00000000 0010e000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000001 08000000 00000000 00\ 00000000 00000c c0000000 000000e2 00000000 00000000 00000084 00000000 00100000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000001 08000000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 000001f8 00000000 00080000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000003 f0000000 00000000 00\ 00000000 00000c c0000000 00000012 00000000 00000000 00000000 00000000 00180000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 000000d2 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000132 00000000 00000000 00000000 00000000 00040000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 00000000 00040000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000001 f8000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c000000e 04000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000030 04000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000003 c0000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000040 02000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 0000000c 38000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000040 04000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000030 04000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000080 08000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000040 02000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000080 10000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000080 81000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000100 20000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000100 80800000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000080 10000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000100 80800000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000080 08000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000200 80400000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000040 06000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000200 80400000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000030 04000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000200 80203000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c000000e 04000002 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000400 80204800 00000000 00000000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000001 f8000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000407 e0204000 00000000 00000000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000407 e0202000 00000000 00000000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000403 e0402000 00000000 00000000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000203 c0401000 00000000 00000000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000203 c0403000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000201 c0800000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000101 c0800800 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000101 81000880 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 70000000 00000000 00010000 00\ 000000c0 81000040 00000000 00000000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000030 860000c0 00000000 00000000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 0000000e 18000000 00000000 00000000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000001 e0000000 00000000 00000000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000102 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000102 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000102 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 000001e2 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000060 00000112 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c000005e 00000112 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000081 c00001e2 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000080 3c000002 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000100 03000002 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 80000000 00000000 00000000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000100 01000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 80000000 02108400 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000100 01000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 80000000 02108400 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000200 01000002 00000000 00000000 00000000 00000000 00000000 00038000 00\ 00000001 80000000 05294a00 00003800 00000000 60000000 00000000 00000000 00\ 00000000 00000c c0000200 01000002 00000000 00000000 00000000 00000000 00000000 0007c000 00\ 00000007 e0000000 05294a00 00007c00 00000001 f8000000 00000000 00000000 00\ 00000000 00000c c0000400 01000002 00000000 00000000 00000000 00000000 00000000 0007ffff ff\ ffffffff ffffffff e94a53ff ffffffff ffffffff f8000000 00000000 00000000 00\ 00000000 00000c c0000400 00800002 00000000 00000000 00000000 00000000 00000000 0007c000 00\ 00000007 e0000000 294a5000 00007c00 00000001 f8000000 00000000 00000000 00\ 00000000 00000c c0000200 00800002 00000000 00000000 00000000 00000000 00000000 00038000 00\ 00000001 80000000 18c63000 00003800 00000000 60000000 00000000 00000000 00\ 00000000 00000c c0000100 00800002 00000000 00000f80 00000000 00000000 00000000 00010000 00\ 00000000 00000000 10842000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000080 00800002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 10842000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000040 00800002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000030 03000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000008 0c000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00001f00 00\ 00000000 00000c c0000004 30000002 00000000 0000fff0 00000000 00000000 00000000 00010000 00\ 0000001c 70000000 00000000 00003800 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000002 c0000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000008 20000000 00000000 00001000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000004 40000000 00718000 00001000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000002 80000000 00210000 00001000 00000000 40000000 00000000 0000ffe0 00\ 00000000 00000c c0000000 00000002 00000000 0007fffe 00000000 00000000 00000000 00010000 00\ 00000001 80000000 00220000 00001000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000003 00000000 00220000 00002800 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000002 80000000 00240000 00004400 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000004 40000000 003e0000 00004400 00000000 40000000 00000000 0007fffe 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000008 20000000 00210000 00008200 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 0000001c 70000000 00210000 0001c700 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00210000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 007e0000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000102 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000102 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000102 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c00007ff ff800102 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800192 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800162 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000200 00000008 42100000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000200 00000008 42100000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000200 00000014 a5280000 00000000 00038000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000200 00000014 a5280000 00000000 0007c000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 21084000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 000003ff ffffffa2 94afffff ffffffff ffffc000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 21086000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000000 000000a2 94a00000 00000000 0007c000 00\ 00000000 00000000 00000000 00000000 00000000 60000000 5294a000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000000 00000063 18c00000 00000000 00038000 00\ 00000000 00000000 00000000 00000000 00000001 f8000000 52949000 00000400 00\ 00000000 00000c c0000400 00800002 00000000 00000000 00000041 08400000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000001 fffffffe 4a529fff fffffc00 00\ 00000000 00000c c0000400 00800002 00000000 00000000 00000041 08400000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000001 f8000001 4a528000 00000000 00\ 00000000 00000c c0000400 00800002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 60000001 8c630000 00000000 00\ 00000000 00000c c00007ff ff800002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 84210000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00e00000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 84210000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 0fe00000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00f80000 3fffffff f0010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00800000 07e00000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00400000 00600000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 0000f800 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00300000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00008000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00080000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00004000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00880000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00003000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 0c700000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000800 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 12000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00008800 00000000 00\ 00000000 00000c c0000000 000000e2 00000000 00000000 00000000 12000000 0000007c 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00887000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 02000000 00000040 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00900000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 02000000 00000020 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00a00000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 02000000 00000018 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00c00000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 000000e3 02000000 0000f804 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000003 8ca00000 00000000 00\ 00000000 00000c c0000007 c00000e2 00000000 00000000 00000042 06000000 00008044 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 08900000 00000000 00\ 00000000 00000c c0000038 38000002 00000000 00000f80 00000044 00000000 00004038 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 10800000 00000000 00\ 00000000 00000c c00000c0 06000002 00000000 00000000 00000044 02000000 00002000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 10800000 00000000 00\ 00000000 00000c c0000100 01000002 00000000 00000000 00000048 00000000 00001000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 20800000 00000000 00\ 00000000 00000c c0000600 00c00002 00000000 00000000 0000007c 00000000 00000800 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 f0000000 00001f00 00\ 00000000 00000c c0000800 00200002 00000000 0000fff0 00000042 00000000 000c8800 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 08000000 00000000 00\ 00000000 00000c c0000800 00200002 00000000 00000000 00000042 00000000 00128800 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 08000000 00000000 00\ 00000000 00000c c0001000 00100002 00000000 00000000 00000042 00000000 00107000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 08000000 00000000 00\ 00000000 00000c c0001000 00100002 00000000 00000000 000000fc 00000000 00080000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000003 f0000000 0000ffe0 00\ 00000000 00000c c0001000 00100002 00000000 0007fffe 00000000 00000000 00080000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000800 00200002 00000000 00000200 00000000 00000000 00040000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000800 00200002 00000000 00000200 00000000 00000000 000c0000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000600 00c00002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000180 01000002 00000000 00000200 00000000 00000000 00020000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 0007fffe 00\ 00000000 00000c c0000060 06000002 00000000 00000200 00000000 00000000 00020000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c000001c 38000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000003 c0000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000112 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000112 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 00000112 00000000 00000200 00000008 42100000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 0f000112 00000000 00000200 00000008 42100000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 10000192 00000000 00000200 00000014 a5280000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 20000162 00000000 00000200 00000014 a5280000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000400 00\ 00000000 00000c c0000000 40000102 00000000 000003ff ffffffa2 94afffff ffffffff ffff0000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 21084000 00000400 00\ 00000000 00000c c0000000 40000102 00000000 00000000 000000a2 94a00000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 21086000 00000400 00\ 00000000 00000c c0000000 80000102 00000000 00000000 00000063 18c00000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 5294a000 00000400 00\ 00000000 00000c c0000000 80000002 00000000 00000000 00000041 08400000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 52949000 00000400 00\ 00000000 00000c c0000000 80000002 00000000 00000000 00000041 08400000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 7ffffffe 4a529fff fffffc00 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000001 4a528000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000001 84210000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 007c0000 00e00000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 84210000 00000000 00\ 00000000 00000c c0000002 00000002 00000000 00000000 00000000 00100000 0fe00000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000002 00000002 00000000 00000000 00000000 00100000 3fffffff f0000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000002 00000002 00000000 00000000 00000000 00100000 07e00000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000002 00000002 00000000 00000000 00000000 00500000 00600000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000004 00000002 00000000 00000000 00000000 00300000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 0000f800 00000000 00\ 00000000 00000c c0000004 00000002 00000000 00000000 00000000 18100000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00002000 00000000 00\ 00000000 00000c c0000008 00000002 00000000 00000000 00000000 24000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00002000 00000000 00\ 00000000 00000c c0000010 00000002 00000000 00000000 00000000 24000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00002000 00000000 00\ 00000000 00000c c00007e0 00000002 00000000 00000000 00000000 04000000 000000f8 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 0000a000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000020 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00886000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000020 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00902000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000020 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00a00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 000001c6 0c000000 00007ca0 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000084 00000000 00004060 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00a00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000088 04000000 00002020 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000003 8c900000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000088 00000000 00001000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000001 08800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000090 00000000 000c0800 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000001 10800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 000000f8 00000000 00120400 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000001 10800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000084 00000000 00104400 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000001 20000000 00000000 00\ 00000000 00000c c0000000 000000a2 00000000 00000000 00000084 00000000 00084400 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000001 f0000000 00000000 00\ 00000000 00000c c0000000 00000152 00000000 00000000 00000084 00000000 00083800 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000001 08000000 00000000 00\ 00000000 00000c c0000000 00000152 00000000 00000000 000001f8 00000000 00040000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000001 08000000 00000000 00\ 00000000 00000c c0000000 01000152 00000000 00000000 00000000 00000000 000c0000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000001 08000000 00000000 00\ 00000000 00000c c0000000 0e000112 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000003 f0000000 00000000 00\ 00000000 00000c c0000000 70000112 00000000 00000000 00000000 00000000 00020000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 80000002 00000000 00000000 00000000 00000000 00020000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000003 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c000003c 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c00001c0 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000600 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000f 80\ 00000000 00000c c0000000 00000002 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000f 80\ 00000000 00000c c0000000 00000002 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000f 80\ 00000000 00000c c0000000 00000002 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000f 80\ 00000000 00000c c0000000 00000002 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000f 80\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 000000e2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000042 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000042 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00800042 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 01000042 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 02000042 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 04000042 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 08000042 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 100000c2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 20000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 40000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 80000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000001 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 000000c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000002 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000140 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000004 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000020 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000008 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00017020 c10e3bb8 071c0000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000010 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00018861 22911110 02080000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000020 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00010850 22201110 02080000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000040 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00010890 c23f1110 01f00000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000080 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00001089 02211110 01100000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000100 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00006109 22111990 01100000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000200 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 0000839c c70e3660 00a00000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000400 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00011000 02000000 00a00000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00013000 02000000 00400000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 0000d000 00000000 00400000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000062 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000092 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000082 00000000 00000f80 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000082 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000082 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 000001e2 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00001f00 00\ 00000000 00000c c0000000 00000082 00000000 0000fff0 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000082 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c000010e 44600002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000ffe0 00\ 00000000 00000c c0000111 28900002 00000000 0007fffe 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000110 10800002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c000011f 10800002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c0000111 28800002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000c c000010e 45e00002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0007fffe 00\ 00000000 00000c c0000100 00800002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000100 00800002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c00007c0 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000008 42100000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000008 42100000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 000001f2 00000000 00000200 00000014 a5280000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000102 00000000 00000200 00000014 a5280000 00000000 00000000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00\ 00000000 00000c c0000000 00000082 00000000 000003ff ffffffa2 94afffff ffffffff ffff0000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 21084000 00000400 00\ 00000000 00000c c0000000 00000042 00000000 00000000 000000a2 94a00000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 21086000 00000400 00\ 00000000 00000c c0000000 00000022 00000000 00000000 00000063 18c00000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 00000000 5294a000 00000400 00\ 00000000 00000c c0000000 000001f2 00000000 00000000 00000041 08400000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 7ffffffe 52949fff fffffc00 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000041 08400000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 4a528000 00000000 00\ 00000000 00000c c0000070 00007002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000001 4a528000 00000000 00\ 00000000 00000c c0000088 00008802 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 84210000 00000000 00\ 00000000 00000c c0089e0a 27100802 00000000 00000000 00000000 00000000 00e00000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 84210000 00000000 00\ 00000000 00000c c008a27a 22106802 00000000 00000000 00000000 00880000 0fe00000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c008a28a 22109802 00000000 00000000 00000000 00880000 3fffffff f0010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0089e8a 22108802 00000000 00000000 00000000 00880000 07e00000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c00a828b 223c8802 00000000 00000000 00000000 00c80000 00600000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c00a9c72 c6108802 00000000 00000000 00000000 00b00000 00000000 00010000 00\ 00000000 00000000 00000000 01f00000 00000000 40000000 00022000 00000000 00\ 00000000 00000c c00d8000 00100002 00000000 00000000 00000000 18000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 0002a000 00000000 00\ 00000000 00000c c0088000 02120002 00000000 00000000 00000000 24000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 0002a000 00000000 00\ 00000000 00000c c0088000 000c0002 00000000 00000000 00000000 24000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 0002a000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000110 00010000 00\ 00000000 00000000 00000000 0ffe0000 00000000 40000000 008b4000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000110 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00900000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 0000f910 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00a00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 000001c6 04000000 00002190 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000084 0c000000 00002160 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00a00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000088 00000000 00002000 00010000 00\ 00000000 00000000 00000000 ffffe000 00000000 40000007 18900000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000088 04000000 00002000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000002 10800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000090 00000000 00002000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000002 20800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 000000f8 00000000 000ca000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000002 20800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000084 00000000 00126000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000002 40000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000084 00000000 00102000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000003 e0000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000084 00000000 00080000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000002 10000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 000001f8 00000000 00080000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000002 10000000 00000000 00\ 00000000 00000c c0000000 00000012 00000000 00000000 00000000 00000000 00040000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000002 10000000 00000000 00\ 00000000 00000c c0000000 00000012 00000000 00000000 00000000 00000000 000c0000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000007 e0000000 00000000 00\ 00000000 00000c c0000000 00000012 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 000000f2 00000000 00000000 00000000 00000000 00020000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 00000000 00020000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 000000f2 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00200002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00200002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 01e00000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0089c72 27a07002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 061c0000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c008a28a 28bc8802 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 08020000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0092012 28a28002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 10410000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c00a3e62 27a2f802 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 20408000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c00f228b 20a28802 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 40404000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0089c72 c73c7002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 80402000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0088002 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000001 00401000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0088002 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000001 00401018 00000000 40000000 00000000 00000000 00\ 00000000 00000c c00f0002 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000001 00400824 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 00000000 00000002 00400820 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000000 00000000 00000002 01f00810 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000000 00000000 00000002 01f00810 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000000 00000000 00000002 01f01008 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 00000000 00000001 00e01018 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000001 00e01000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 80e02004 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 40e04004 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 20408000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 00000000 00000000 10410000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000000 00000000 00000000 08420000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000000 00000000 00000000 070c0000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000000 00000000 00000000 00f00000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000112 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000122 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000142 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000182 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000142 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000122 00000000 00000000 00000000 f8000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 07c00000 00000000 00\ 00000000 00000c c0000000 00000102 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000102 00000000 00000000 00000000 70000000 00000000 00010000 00\ 00000000 00000000 00000000 00400000 00000000 40000000 03800000 00000000 00\ 00000000 00000c c0000000 00000102 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000108 42000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0011386 3c638002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000108 42000000 00400000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0011449 44944002 00000000 00000000 00000000 00000000 00000000 00038000 00\ 00000600 00000294 a5000000 00e00000 00000000 60000000 00000000 00000000 00\ 00000000 00000c c0012448 44840002 00000000 00000000 00000000 00000000 00000000 0007c000 00\ 00001f80 00000294 a5000000 01f00000 00000001 f8000000 00000000 00000000 00\ 00000000 00000c c0014448 3c87c002 00000000 00000000 00000000 00000000 00000000 0007ffff ff\ ffffffff fffff4a5 29ffffff ffffffff ffffffff f8000000 00000000 00000000 00\ 00000000 00000c c001e448 04844002 00000000 00000000 00000000 00000000 00000000 0007c000 00\ 00001f80 000014a5 28000000 01f00000 00000001 f8000000 00000000 00000000 00\ 00000000 00000c c001139e 39e38002 00000000 00000000 00000000 00000000 00000000 00038000 00\ 00000600 00000c63 18000000 00e00000 00000000 60000000 00000000 00000000 00\ 00000000 00000c c0011008 00800002 00000000 00000f80 00000000 00000000 00000000 00010000 00\ 00000000 00000842 10000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0011008 00800002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000842 10000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c001e000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00000000 00000000 40000000 00000000 00001f00 00\ 00000000 00000c c0000000 00000002 00000000 0000fff0 00000000 00000000 00000000 00010000 00\ 0000e380 00000000 00000000 01c00000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00004100 00000000 00000000 00800000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00002200 000000e3 00000000 00800000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00001400 00000042 00000000 00800000 00000000 40000000 00000000 0000ffe0 00\ 00000000 00000c c0000000 00000002 00000000 0007fffe 00000000 00000000 00000000 00010000 00\ 00000c00 00000044 00000000 00800000 00000000 40000000 00000000 00000000 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00001800 00000044 00000000 0140ffff ffffffff ffffffff ffffffff ffc00000 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00001400 00000048 00000000 0221ffff ffffffff ffffffff ffffffff ffc00000 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00002200 0000007c 00000000 02210000 00000000 00000000 00000000 00c7fffe 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00004100 00000042 00000000 04110000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 0000e380 00000042 00000000 0e390000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000042 00000000 000100e4 0e39118f 18e39100 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 000000fc 00000000 00010114 04451251 24445100 00000000 00c00400 00\ 00000000 00000c c0000000 00000082 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010114 04411211 20445100 00000002 00c00400 00\ 00000000 00000c c0000000 00000042 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010114 047d120f 20445100 00000002 00c00400 00\ 00000000 00000c c0000000 00000062 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010116 44459201 20445900 0000000f 80c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010115 8c39678e 78c39600 00000002 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010110 00000200 20000000 00000002 00c00400 00\ 00000000 00000c c0000000 00000042 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010110 04000200 20400000 00000000 00c00400 00\ 00000000 00000c c0000000 000000e2 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 000100e0 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000042 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0070c81 c31c8802 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0089282 24a28802 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0009082 04208802 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0009083 e4208802 00000000 00000200 00000008 42100000 00000000 00010000 00\ 00000000 00000000 00000000 000100e4 0e3c0391 40e20800 00000002 00c00400 00\ 00000000 00000c c00710ca 2422c802 00000000 00000200 00000008 42100000 00000000 00038000 00\ 00000000 00000000 00000000 00010114 04440451 41120800 00000000 00c00400 00\ 00000000 00000c c0083cb1 cf1cb002 00000000 00000200 00000014 a5280000 00000000 00038000 00\ 00000000 00000000 00000000 00010114 04440451 21120800 00000002 00c00400 00\ 00000000 00000c c0081000 04008002 00000000 00000200 00000014 a5280000 00000000 0007c000 00\ 00000000 00000000 00000000 00010134 04440451 21120800 00000002 00c00400 00\ 00000000 00000c c0089000 04008002 00000000 000003ff ffffffa2 94afffff ffffffff ffffc000 00\ 00000000 00000000 00000000 00010106 44440459 11179e00 00000001 00c00400 00\ 00000000 00000c c0070000 00008002 00000000 00000000 000000a2 94a00000 00000000 00038000 00\ 00000000 00000000 00000000 00010105 8c3c0396 08e20800 00000000 80c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000063 18c00000 00000000 00038000 00\ 00000000 00000000 00000000 00010100 00040000 08020800 00000008 80c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000041 08400000 00000000 00010000 00\ 00000000 00000000 00000000 00010110 04040000 04024900 00000008 80fffc00 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000041 08400000 00000000 00010000 00\ 00000000 00000000 00000000 000100e0 00040000 04018600 00000007 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 00600000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00000000 03e00000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00f80000 0fe00000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00800000 3fffffff f0010000 00\ 00000000 00000000 00000000 00010000 0000000e 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00400000 07e00000 00010000 00\ 00000000 00000000 00000000 00010000 00000011 00000000 00000004 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00300000 00600000 00010000 00\ 00000000 00000000 00000000 000100e4 0f10e181 00e45038 82000002 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00080000 00000000 00010000 00\ 00000000 00000000 00000000 00010114 1128424d 01145044 82000003 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00880000 00000000 00010000 00\ 00000000 00000000 00000000 00010114 11284213 01144844 82000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 0c700000 00000000 00010000 00\ 00000000 00000000 00000000 00010134 0f444211 01144844 82000000 00c00000 00\ 00000000 00000c c0000000 000000c2 00000000 00000000 00000000 12000000 00000000 00010000 00\ 00000000 00000000 00000000 00010106 41444211 01164445 e7800000 00c00000 00\ 00000000 00000c c0000000 00000122 00000000 00000000 00000000 12000000 000000f8 00010000 00\ 00000000 00000000 00000000 00010105 8e44c791 00e58238 82000000 00c00000 00\ 00000000 00000c c0000000 00000122 00000000 00000000 00000000 02000000 00000080 00010000 00\ 00000000 00000000 00000000 00010100 00000200 00000200 82000000 00c00000 00\ 00000000 00000c c0000000 00000022 00000000 00000000 00000000 02000000 00000040 00010000 00\ 00000000 00000000 00000000 00010110 00004200 00000100 92400000 00c00000 00\ 00000000 00000c c0000000 00000022 00000000 00000000 00000000 02000000 00007c30 00010000 00\ 00000000 00000000 00000000 000100e0 00000000 00000100 61800000 00c00000 00\ 00000000 00000c c0000000 00000022 00000000 00000000 000000e3 02000000 00001008 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000022 00000000 00000000 00000042 06000000 00001088 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000062 00000000 00000000 00000044 00000000 00001070 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000f80 00000044 02000000 00001000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000022 00000000 00000000 00000048 00000000 00001000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 0000007c 00000000 00065000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0001c71 e71c0002 00000000 00000000 00000042 00000000 00093000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c01f00 00\ 00000000 00000c c000228a 22220002 00000000 0000fff0 00000042 00000000 00081000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000282 22200002 00000000 00000000 00000042 00000000 00040000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000281 e23e0002 00000000 00000000 000000fc 00000000 00040000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0001c88 22220002 00000000 00000000 00000000 00000000 00020000 00010000 00\ 00000000 00000000 00000000 0001ffff ffffffff ffffffff ffffffff ffc0ffe0 00\ 00000000 00000c c0002071 c21c0002 00000000 0007fffe 00000000 00000000 00060000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0002000 02000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0002200 02000002 00000000 00000200 00000000 00000000 00010000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0001c00 06000002 00000000 00000200 00000000 00000000 00010000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c7fffe 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00038000 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00044000 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 000100e3 9118e400 40f04e00 00000008 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010114 51251400 4113d100 00000008 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010104 11210400 41145000 00000004 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010107 d121f400 40f45f00 00000004 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010104 59211640 78145100 00000002 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010103 9678e580 44e38e00 00000001 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010100 00200000 44000000 00000001 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010110 00200000 44000000 00000000 80c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 000100e0 00000000 78000000 00000000 80c00400 00\ 00000000 00000c c0000000 00000112 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000152 00000000 00000200 00000000 00000000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000152 00000000 00000200 00000008 42100000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000152 00000000 00000200 00000008 42100000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000152 00000000 00000200 00000014 a5280000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 000001a2 00000000 00000200 00000014 a5280000 00000000 00010000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 000003ff ffffffa2 94afffff ffffffff ffff0000 00\ 00000000 00000000 00000000 00010113 8f34e380 10e01038 60000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000000 000000a2 94a00000 00000000 00000000 00\ 00000000 00000000 00000000 00010114 514d1440 11101010 90000000 00c00400 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000063 18c00000 00000000 00000000 00\ 00000000 00000000 00000000 00010124 11450400 11101010 8000000f 80c00400 00\ 00000000 00000c c000044e 10e00002 00000000 00000000 00000041 08400000 00000000 00000000 00\ 00000000 00000000 00000000 00010147 d14507c0 11101010 80000000 00fffc00 00\ 00000000 00000c c0000451 29100002 00000000 00000000 00000041 08400000 00000000 00000000 00\ 00000000 00000000 00000000 000101e4 51451440 11101e10 80000000 00c00000 00\ 00000000 00000c c0000451 29000002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010113 8f44e380 10e01031 e000000f 80c00000 00\ 00000000 00000c c0000451 45f00002 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010110 01000000 10001000 80000000 00c00000 00\ 00000000 00000c c0000551 45100002 00000000 00000000 00000000 00000000 00e00000 00000000 00\ 00000000 00000000 00000000 00010110 01000000 10001010 80000000 00c00000 00\ 00000000 00000c c000054e 44e00002 00000000 00000000 00000000 00000000 0fe00000 00000000 00\ 00000000 00000000 00000000 000101e0 01000000 7c001f00 00000000 00c00000 00\ 00000000 00000c c00006c0 00000002 00000000 00000000 00000000 007c0000 3fffffff f0000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000440 00000002 00000000 00000000 00000000 00100000 07e00000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000440 00000002 00000000 00000000 00000000 00100000 00600000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00100000 00000000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00500000 00000000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 00300000 00000000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 18100000 00000000 00000000 00\ 00000000 00000000 00000000 00010113 9044f380 38e7ce00 00000008 80c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 24000000 00000000 00000000 00\ 00000000 00000000 00000000 00010114 50551100 44441100 00000008 80c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 24000000 000000f8 00000000 00\ 00000000 00000000 00000000 00010134 50551100 04421000 00000008 80c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000020 00000000 00\ 00000000 00000000 00000000 00010134 5054f100 04411f00 00000008 80c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000020 00000000 00\ 00000000 00000000 00000000 00010154 59541100 38409100 0000000c 80c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 00000020 00000000 00\ 00000000 00000000 00000000 00010153 9668e100 40c7ce00 0000000b 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000000 04000000 000000a0 00000000 00\ 00000000 00000000 00000000 00010190 00000100 40000000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 000001c6 0c000000 00007c60 00000000 00\ 00000000 00000000 00000000 00010190 00000100 44400000 00000000 00c00000 00\ 00000000 00000c c0000000 00000002 00000000 00000000 00000084 00000000 00001020 00000000 00\ 00000000 00000000 00000000 00010110 00000300 38000000 00000000 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000088 04000000 00001000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000088 00000000 00001000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000090 00000000 00001000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff ffffff1e 00000000 00000000 000000f8 00000000 00061000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff fffffeee 00000000 00000000 00000084 00000000 00095000 00000000 00\ 00000000 00000000 00000000 00010000 00000380 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff ffffffde 00000000 00000000 00000084 00000000 00083000 00000000 00\ 00000000 00000000 00000000 00010000 00000440 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff ffffff3e 00000000 00000000 00000084 00000000 00041000 00000000 00\ 00000000 00000000 00000000 000101f4 4e3d004e 00000000 00000007 00c00000 00\ 00000000 00000c ffffffff fffffeee 00000000 00000000 000001f8 00000000 00040000 00000000 00\ 00000000 00000000 00000000 00010104 444503d1 00000000 00000008 80c00000 00\ 00000000 00000c ffffffff ffffff1e 00000000 00000000 00000000 00000000 00020000 00000000 00\ 00000000 00000000 00000000 00010104 44450450 00000000 00000008 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00060000 00000000 00\ 00000000 00000000 00000000 00010104 443d045f 00000000 0000000f 80c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 000101e6 44059451 00000000 00000008 80c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00010000 00000000 00\ 00000000 00000000 00000000 00010105 8439638e 00000000 00000007 00c00000 00\ 00000000 00000c ffff1c71 c71e7ffe 00000000 00000000 00000000 00000000 00010000 00000000 00\ 00000000 00000000 00000000 00010100 04000000 00000000 00000000 00c00000 00\ 00000000 00000c fffeebbb baedbffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010100 04000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffebfb befdfffe 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 0003e000 00000000 000101f0 0c000000 00000000 00000000 00c0000f 80\ 00000000 00000c ffffe83b 82fdfffe 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 0003e000 00000000 00010000 00000000 00000000 00000000 00c0000f 80\ 00000000 00000c ffff1bbb baedfffe 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 0003e000 00000000 00010000 00000000 00000000 00000000 00c0000f 80\ 00000000 00000c fffefc7b c7187ffe 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 0003e000 00000000 00010000 00000000 00000000 00000000 00c0000f 80\ 00000000 00000c fffefffb fffdfffe 00000000 007c0000 00000000 00000000 00000000 00000000 00\ 00000000 0003e000 00000000 00010000 00000000 00000000 00000000 00c0000f 80\ 00000000 00000c fffeeffb fffdfffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c ffff1ff3 fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010113 8f34e380 00000000 00000007 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010114 514d1440 00000000 00000002 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010124 11450400 00000000 00000002 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010147 d14507c0 00000000 00000002 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 000101e4 51451440 00000000 00000002 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010113 8f44e380 00000000 00000006 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010110 01000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010110 01000000 00000000 00000002 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 000101e0 01000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 00010000 00000000 00000000 00000000 00c00000 00\ 00000000 00000c ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffbfffff ff\ ffffffff fffffc c0000001 ddddddde 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 0001ffff fffffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 0001ffff fffffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 77777776 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 0001ffff fffffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000001 c001fff7 fffffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 ddddddde 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000002 2001fff7 fffffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 fffffffe 02071c70 003e79c3 0001c320 69c31a81 c00081c8 8c000f20 69\ c8800207 8c31c822 00089c70 2881fe37 f38e377e 00000000 00000000 00000000 00\ 00000000 00000c c0000001 77777776 02020888 00208884 800224a0 9a24a682 20008228 920004a0 9a\ 28800208 924a2822 00088821 e881fdd0 edddd77e 00000000 00000000 00000000 00\ 00000000 00000c c0000001 fffffffe 02020880 00208884 00002420 8a042282 00008228 900004a0 88\ 48800208 90420822 00088822 2881fdd7 6fddd77e 00000000 00000000 00000000 00\ 00000000 00000c c0000001 ddddddde 020208f8 00208884 00002420 8a042283 e0008228 900004a0 89\ 88800207 9043e822 000f8822 2881fdd7 6fddd77e 00000000 00000000 00000000 00\ 00000000 00000c ffffffff fffffffe 03c20888 003c8884 0001c432 8a2422ca 2000f22c 90000732 8a\ 2c8003c0 90422cb2 00088822 2c81fdd7 6fddd37e 00000000 00000000 00000000 00\ 00000000 00000c c0000001 77777776 02060870 0020798f 00020f2c 89cf22b1 c00081cb 3c0004ac 89\ cb000227 3cf1cb2c 00088861 cb01fdd0 c39e34fe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 fffffffe 02000800 00200804 00020400 00040000 00008000 10000480 00\ 08000220 10400000 00088800 0001fddf effffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 ddddddde 02020800 00200884 00022400 00040000 00008000 10000480 00\ 08000220 10400000 00050820 0001fddf efdffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 fffffffe 03e01800 003e0800 0001c000 00000000 0000f800 00000f00 00\ 080003c0 00000000 00021800 0001fe3f fffffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 77777776 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 0001ffff fffffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 0001ffff fffffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 ddddddde 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 0001ffff fffffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 fffffffe 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 0001ffff fffffffe 00000000 00000000 00000000 00\ 00000000 00000c c0000001 77777776 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000000 00000000 0001ffff fffffffe 00000000 00000000 00000000 00\ 00000000 00000c ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff fffffc c0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000005 55555555 55555555 55555555 55555555 55555555 55555540 00\ 00000000 00000c c0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 0000000a aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaa80 00\ 00000000 00000c c0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000005 55555555 55555555 55555555 55555555 55555555 55555540 00\ 00000000 00000c c0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 0000000a aaaaaaaa aaffffff ffffffff ffffffff fffeaaaa aaaaaa80 00\ 000000e0 00000c c0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000005 55555555 55ffffff ffffffff ffffffff fffd5555 55555540 00\ 00000110 00000c c0000391 18e40438 e28e4103 8e18e40e 44d41134 e18e3d03 84390000 00000000 00\ 00000000 0000000a aaaaaaaa aabb1c7b c79c71c3 f871c70f e0f6aaaa aaaaaa80 00\ 00113c10 1f440c c0100111 25140a11 15514101 11251411 4534154c 42444501 0a450000 00000000 00\ 00000000 00000005 55555555 55baeef5 bb6eeebb fdaeeeef fbf55555 55555540 00\ 001544f0 04280c c0540111 21040a11 05422101 10202210 45121544 42044501 0a410000 00000000 00\ 00000000 0000000a aaaaaaaa aabafef5 bf7eefbb fdaeeeef fb82aaaa aaaaaa80 00\ 00154510 04100c c07c0111 21f41111 f54c2101 1020c210 45121544 42044501 117d0000 00000000 00\ 00000000 00000005 55555555 55ba0eee 837eefc3 fdaeeeef fbb55555 55555540 00\ 00153d10 04100c c0380119 21165111 145111e1 11211110 65111544 42044591 11459000 00000000 00\ 00000000 0000000a aaaaaaaa aa82eeee bb7eeefa 0c6eeeef fbd6aaaa aaaaaa80 00\ 00150510 04280c c07c0316 78e59130 e44e0913 0e78e090 59109a44 478c3d63 11396000 00000000 00\ 00000000 00000005 55555555 55bb1eee c61cf1c7 fdb1ef0f fbd55555 55555540 00\ 001a38e0 04440c c0540000 20000000 00000910 00200090 40008000 42000400 00000000 00000000 00\ 00000000 0000000a aaaaaaaa aabbfeff ff7fffff fdbfefef ebe6aaaa aaaaaa80 00\ 00000000 14000c c0100100 20000010 00000511 00200051 40004000 42040401 00000000 00000000 00\ 00000000 00000005 55555555 55bbfeff ff7effff fdbfefef f3f55555 55555540 00\ 00000000 0c000c c0000000 00000000 000005e0 0000004e 40004000 c0000400 00000000 00000000 00\ 00000000 0000000a aaaaaaaa aabbfcff ffffffff f87fcfef fbf6aaaa aaaaaa80 00\ 00000000 04000c c0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000005 55555555 55ffffff ffffffff ffffffff fffd5555 55555540 00\ 00000000 00000c c0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 0000000a aaaaaaaa aaffffff ffffffff ffffffff fffeaaaa aaaaaa80 00\ 00000000 00000c c0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000005 55555555 55555555 55555555 55555555 55555555 55555540 00\ 00000000 00000c c0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 0000000a aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa aaaaaa80 00\ 00000000 00000c c0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00\ 00000000 00000005 55555555 55555555 55555555 55555555 55555555 55555540 00\ 00000000 00000c ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff fffffc ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff\ ffffffff fffffc showpage @endspecial 540 1232 p (Figure)s 13(8:)m 18(The)m c-med.300 @sf 14(idraw)m t-rom.300 @sf 14(drawing)m 13(editor)m -1 r 44 c 12(C++)m 15(version)m 0 1365 p (to)s 12(modify)m 12(the)m 12(library)m 11(to)m 12(use)m 13(concatenation.)m 18(An)m 13(object-)m 0 1415 p (oriented)s 14(design)m 15(would)m 14(have)m 16(used)m 16(inheritance)m 15(to)m 14(facil-)m 0 1465 p (itate)s 14(the)m 15(modi\014cation)m 14(of)m 14(the)m 15(library)m 14(to)m 14(use)m 15(concatena-)m 0 1515 p (tion.)s 16(In)m 11(comparison,)m 11(it)m 10(would)m 10(be)m 11(straightforward)m 9(to)m 10(de-)m 0 1565 p (rive)s 11 r 97 c 12(new)m 12(sort)m 11(of)m 12(picture)m 11(and)m 11(rede\014ne)m 13(its)m 11(graphic)m 11(state)m 0 1615 p (modi\014cation)s 14(operations)m 13(to)m 14(propagate)m 14(attributes)m 14(imme-)m 0 1664 p (diately)s -2 r 46 c t-bol.360 @sf 0 1800 p (6.2)s 50(Incr)m (emental)s 18(Update)m t-rom.300 @sf 0 1884 p (The)s 16(Modula-2)m 15(graphics)m 15(library)m 14(implemented)m 16(an)m 16(auto-)m 0 1934 p (matic)s 21(incremental)m 21(update)m 20(feature.)m 41(The)m 21(library)m 19(kept)m 0 1984 p (track)s 16(of)m 15(changes)m 16(to)m 15(objects)m 15(by)m 15(storing)m 14(lists)m 15(of)m 15(rectan-)m 0 2033 p (gles)s 17(with)m 16(each)m 18(object.)m 28(Newly-added)m 17(rectangles)m 17(were)m 0 2083 p (mer)s (ged)s 11(with)m 11(any)m 12(rectangles)m 12(in)m 11(the)m 11(list)m 11(they)m 11(intersected.)m 0 2133 p (The)s 20(list)m 18(of)m 19(rectangles)m 19(was)m 20(ultimately)m 18(limited)m 17(by)m 19(the)m 0 2183 p (object')s -1 r 115 c 10(bounding)m 10(box;)m 11(when)m 12 r 97 c 12(rectangle)m 12(in)m 12(the)m 11(list)m 11(be-)m 0 2233 p (came)s 16(lar)m (ge)s 13(enough)m 14(to)m 13(subsume)m 15(the)m 14(bounding)m 12(box,)m 14(the)m 0 2282 p (incremental)s 18(update)m 17(mechanism)m 19(was)m 18(disabled)m 17(and)m 17(the)m 0 2332 p (object)s 13(would)m 13(be)m 14(drawn)m 13(in)m 14(its)m 13(entirety)m -2 r 46 c 42 2385 p (The)s c-med.300 @sf 15(Redraw)m t-rom.300 @sf 16(procedure)m 15(was)m 16(used)m 16(to)m 14(initiate)m 14(incre-)m 0 2435 p (mental)s 15(redraw)m 15(of)m 15 r 97 c 15(graphical)m 14(object.)m c-med.300 @sf 22(Redraw)m t-rom.300 @sf 15(erased)m 0 2485 p (the)s 22(regions)m 21(de\014ned)m 22(by)m 21(the)m 22(rectangles)m 22(in)m 21(the)m 22(object)m 0 2535 p (and)s 15(redrew)m 14(the)m 15(object)m 14(clipped)m 14(to)m 14(each)m 15(rectangle.)m 21(Any)m 0 2584 p (nested)s 14(objects)m 13(would)m 13(be)m 14(redrawn)m 14(recursively)m -2 r 46 c 42 2637 p (This)s 11(approach)m 11(worked|the)m 11(screen)m 12(was)m 12(never)m 12(left)m 11(in)m 0 2687 p (an)s 18(inconsistent)m 15(state)m 18(following)m 15(incremental)m 17(redraw|)m 0 2737 p (but)s 11(it)m 10(did)m 11(not)m 10(always)m 12(perform)m 12(the)m 11(update)m 11(in)m 11(an)m 12(ef)m (\014cient)s 1035 1365 p (way)s -2 r 46 c 18(The)m 13(generality)m 11(of)m 12(the)m 12(algorithm)m 11(coupled)m 12(with)m 11(the)m 1035 1415 p (lack)s 14(of)m 13 r 97 c 15(way)m 14(for)m 13(the)m 13(programmer)m 14(to)m 13(in\015uence)m 14(the)m 14(re-)m 1035 1465 p (draw)s 19(mechanism)m 20(often)m 19(rendered)m 19(the)m 19(facility)m 18(useless;)m 1035 1515 p (the)s 13(programmer)m 14(would)m 13(bypass)m 14(the)m 13(mechanism)m 15(and)m 14(re-)m 1035 1565 p (draw)s 14(damaged)m 14(objects)m 14(explicitly)m -3 r 46 c 1076 1623 p 84 c -2 r 111 c 16(illustrate,)m 15(consider)m 15(the)m 16(case)m 18(where)m 16 r 97 c 16(drawing)m 15(is)m 1035 1673 p (restructured)s 10(so)m 10(that)m 9(an)m 11(object)m 10(obscured)m 10(by)m 10(other)m 9(objects)m 1035 1723 p (is)s 19(brought)m 17(to)m 19(the)m 19(top.)m 34 r 65 c 19(simple)m 19(way)m 20(to)m 18(update)m 19(the)m 1035 1773 p (screen)s 14(is)m 13(simply)m 12(to)m 13(draw)m 13(the)m 13(object;)m 13(nothing)m 11(else)m 14(need)m 1035 1823 p (be)s 16(redrawn.)m 26(However)m -1 r 44 c 17(the)m 16(incremental)m 16(algorithm)m 15(did)m 1035 1872 p (not)s 9(consider)m 10(this)m 9(optimization)m -1 r 44 c 10(and)m c-med.300 @sf 9(Redraw)m t-rom.300 @sf 10(proceeded)m 1035 1922 p (to)s 13(redraw)m 14(all)m 14(the)m 13(obscured)m 14(objects)m 13(as)m 15(well.)m 1076 1981 p (The)s 18(more)m 16(serious)m 16(problem)m 16(arose)m 17(because)m 18(damaged)m 1035 2031 p (rectangle)s 16(information)m 14(was)m t-ita.300 @sf 17(always)m t-rom.300 @sf 16(accumulated,)m 18(since)m c-med.300 @sf 1035 2081 p (Redraw)s t-rom.300 @sf 10(could)m 10(be)m 10(called)m 11(at)m 10(any)m 10(time.)m 18(This)m 10(added)m 10(over-)m 1035 2130 p (head)s 19(to)m 18(every)m 19(appearance-modifying)m 18(operation.)m 31(The)m 1035 2180 p (overhead)s 20(remained)m 20(even)m 21(if)m 19(the)m 20(programmer)m 20(decided)m 1035 2230 p (to)s 19(bypass)m 19(automatic)m 19(redraw)m 20(and)m 19(perform)m 19(the)m 19(update)m 1035 2280 p (manually)s -2 r 46 c 17(The)m 14(addition)m 11(of)m 12 r 97 c c-med.300 @sf 14(Disable)m t-rom.300 @sf 13(procedure)m 13(that)m 1035 2330 p (turned)s 12(of)m 102 c 11(rectangle)m 13(accumulation)m 12(complicated)m 13(the)m 13(use)m 1035 2379 p (of)s 20(the)m 20(package)m 22(and)m 20(presented)m 20(problems)m 20(of)m 20(its)m 20(own:)m 1035 2429 p (What)s 10(should)m 8(happen)m 10(when)m 10(automatic)m 9(redraw)m 10(is)m 10(enabled)m 1035 2479 p (again?)s 18(Should)m 11(old)m 11(damage)m 13(information)m 10(be)m 12(eliminated?)m 1035 2529 p (How)s 14(do)m 13(we)m 14(know)m 13(the)m 14(screen)m 15(is)m 13(still)m 12(consistent?)m 1076 2588 p (The)s 17(lesson)m 15(we)m 17(learned)m 16(was)m 16(that)m 15(it)m 15(is)m 16(important)m 14(not)m 1035 2637 p (to)s 17(exclude)m 17(the)m 17(programmer)m 17(from)m 17(the)m 17(update)m 17(process.)m 1035 2687 p (Damage)s 17(objects)m 15(do)m 14(not)m 15(in)m 14(any)m 16(way)m 15(interfere)m 15(with)m 14(the)m 1035 2737 p (normal)s 12(operation)m 11(of)m 11(graphics.)m 18(They)m 13(incur)m 11(no)m 12(overhead)m @eop 10 @bop0 10 @bop1 t-rom.300 @sf 927 8 p 45 c 13(10)m 14 r 45 c 0 154 p (unless)s 16(they)m 16(are)m 16(used,)m 18(and)m 16(they)m 15(encapsulate)m 17(the)m 16(incre-)m 0 203 p (mental)s 12(update)m 11(algorithm,)m 11(making)m 12(it)m 11(easy)m 12(to)m 12(enhance)m 12(or)m 0 253 p (replace.)s 26(In)m 16(contrast,)m 16(the)m 16(update)m 16(mechanism)m 17(pervaded)m 0 303 p (the)s 17(older)m 16(library)m -2 r 46 c 26(Damage)m 18(objects)m 16(give)m 17(programmers)m 0 353 p (the)s 13(option)m 11(of)m 12(performing)m 12(tricks)m 13(of)m 12(their)m 12(own)m 13(when)m 13(up-)m 0 403 p (dating)s 12(the)m 12(screen)m 14(without)m 11(paying)m 11(for)m 12(mechanisms)m 14(they)m 0 452 p (do)s 13(not)m 13(use.)m t-bol.360 @sf 0 581 p (6.3)s 50(Persistence)m t-rom.300 @sf 0 662 p 87 c -2 r 101 c 15(have)m 15(mixed)m 15(feelings)m 15(about)m 14(having)m 15(used)m 15(persistent)m 0 712 p (objects)s 15(in)m 15(the)m 15(Graphic)m 16(library)m -2 r 46 c 22(On)m 15(one)m 16(hand)m 15(they)m 15(are)m 0 762 p (convenient)s 21(because)m 22(they)m 21(free)m 22(the)m 22(programmer)m 21(from)m 0 812 p (worrying)s 17(about)m 17(storage.)m 33(On)m 19(the)m 18(other)m 18(hand,)m 19(objects)m 0 861 p (created)s 18(by)m 16 r 97 c 17(program)m 17(live)m 16(in)m 16(their)m 16(own)m 17(world)m 15(analo-)m 0 911 p (gous)s 13(to)m 13(the)m 13(address)m 14(space)m 14(in)m 13(which)m 13(they)m 13(were)m 14(created.)m 0 961 p (Thus,)s 16(objects)m 14(cannot)m 15(communicate)m 16(across)m 16(program)m 14(or)m 0 1011 p (machine)s 17(boundaries)m 16(easily)m -2 r 44 c 17(nor)m 15(is)m 17(there)m 16(provision)m 15(for)m 0 1061 p (moving)s 13(objects)m 13(from)m 14(one)m 13(world)m 13(to)m 13(another)m -1 r 46 c 42 1112 p (Persistent)s 12(objects)m 13(are)m 14(useful)m 12(for)m 13(preserving)m 12(the)m 13(state)m 0 1162 p (of)s 12 r 97 c 13(program)m 12(transparently)m 12(across)m 13(executions,)m 13(but)m 11(they)m 0 1212 p (are)s 16(not)m 15(suitable)m 15(for)m 15(communicating)m 15(the)m 16(state)m 16(between)m 0 1262 p (processes.)s 52 r 87 c -2 r 101 c 23(expect)m 25(that)m 24 r 97 c 25(later)m 24(version)m 23(of)m 24(the)m 0 1311 p (Graphic)s 16(library)m 15(will)m 15(incorporate)m 16 r 97 c 17(more)m 17(conventional)m 0 1361 p (storage)s 14(mechanism.)m t-bol.360 @sf 0 1490 p (6.4)s 50(Cached)m 19(Bounding)m 17(Boxes)m t-rom.300 @sf 0 1571 p 84 c -2 r 111 c 20(improve)m 20(performance,)m 24(the)m 20(more)m 21(complex)m 21(graph-)m 0 1621 p (ics)s 23(such)m 23(as)m 24(multilines,)m 24(polygons,)m 24(splines,)m 25(and)m 23(pic-)m 0 1670 p (tures)s 17(cache)m 18(their)m 17(bounding)m 15(box)m 16(once)m 17(it)m 17(is)m 16(calculated.)m 0 1720 p (Caching)s 12(can)m 13(save)m 13(substantial)m 11(time,)m 13(especially)m 12(for)m 12(lar)m (ge)s 0 1770 p (pictures,)s 18(because)m 19(the)m 17(bounding)m 15(box)m 17(is)m 17(needed)m 18(when-)m 0 1820 p (ever)s 14 r 97 c 15(graphic)m 13(is)m 13(drawn)m 14(clipped)m 13(or)m 13(bounded.)m 42 1872 p (The)s 16(object-oriented)m 14(approach)m 16(makes)m 17(it)m 14(easy)m 17(to)m 15(add)m 0 1921 p (this)s 12(optimization)m 11(to)m 13(classes)m 14(that)m 13(can)m 14(use)m 14(it)m 12(without)m 11(pe-)m 0 1971 p (nalizing)s 11(other)m 11(classes.)m 20(The)m 13(graphic)m 11(base)m 13(class)m 13(declares)m 0 2021 p (operations)s 16(for)m 17(caching,)m 19(invalidati)m -1(ng,)m 17(and)m 17(retrieving)m 16 r 97 c 0 2071 p (bounding)s 15(box.)m 27(These)m 18(are)m 18(null)m 16(operations)m 16(by)m 16(default;)m 0 2121 p (derived)s 13(classes)m 15(can)m 14(rede\014ne)m 15(them)m 13(if)m 13(they)m 14(use)m 14(caching.)m 0 2170 p (Thus,)s 12(individu)m -1(al)m 9(graphics)m 11(can)m 11(de\014ne)m 12(their)m 10(own)m 10(caching)m 0 2220 p (and)s 15(invalidation)m 13(criteria.)m 23(Furthermore,)m 16(since)m 16(the)m 15(base)m 0 2270 p (class)s 17(does)m 16(not)m 15(allocate)m 16(storage)m 16(for)m 15(the)m 16(bounding)m 13(box,)m 0 2320 p (no)s 15(overhead)m 15(is)m 15(incurred)m 15(on)m 15(subclasses)m 16(that)m 15(do)m 15(not)m 14(re-)m 0 2370 p (quire)s 13(caching.)m t-bol.360 @sf 0 2498 p (6.5)s 50(Quantitati)m -1(ve)m 31(and)m 32(Qualitative)m 30(Com-)m 112 2556 p (parisons)s t-rom.300 @sf 0 2637 p (This)s 12(section)m 11(presents)m 12(quantitative)m 10(and)m 12(qualitativ)m -1 r 101 c 11(com-)m 0 2687 p (parisons)s 12(of)m 12(the)m 12(Modula-2)m 11(and)m 12(C++)m 13(structured)m 11(graphics)m 0 2737 p (libraries)s 13(and)m 13(versions)m 13(of)m c-med.300 @sf 13(idraw)m t-rom.300 @sf 46 c 19(Note)m 13(that)m 13(any)m 13(direct)m 1035 154 p (comparisons)s 18(are)m 18(necessarily)m 18(crude)m 18(because)m 19(of)m 18(dif)m (fer-)s 1035 203 p (ences)s 15(in)m 13(design)m 14(criteria,)m 14(in)m 13(our)m 13(experience)m 15(level)m 13(at)m 14(the)m 1035 253 p (start)s 15(of)m 15(each)m 16(library')m -2 r 115 c 14(implementation,)m 14(and)m 16(in)m 14(the)m 15(im-)m 1035 303 p (plementation)s 13(languages)m 15(themselves.)m 21(Nevertheless,)m 16(we)m 1035 353 p (of)s (fer)s 11(these)m 12(comparisons)m 12(to)m 11(add)m 12(insight)m 9(into)m 11(the)m 11(relative)m 1035 403 p (merits)s 14(of)m 13(the)m 14(Modula-2)m 12(and)m 14(C++)m 14(implementations.)m 1076 463 p 84 c -2(able)m 20 r 49 c 20(shows)m 20(the)m 19(source)m 21(code)m 20(sizes)m 21(for)m 19(both)m 19(li-)m 1035 513 p (braries)s 13(and)m 12(both)m 12(versions)m 12(of)m c-med.300 @sf 12(idraw)m t-rom.300 @sf 46 c 18(The)m 13(library)m 12(code)m 1035 563 p (is)s 10(divided)m 8(into)m 9(\014ve)m 10(components:)m 15(common)m 11(code)m 10(\(that)m 9(is,)m 1035 613 p (code)s 12(that)m 10(implements)m 11(the)m 11(same)m 12(functionality)m 9(in)m 10(both)m 10(li-)m 1035 662 p (braries\),)s 13(code)m 14(for)m 12(incremental)m 13(update,)m 14(code)m 13(for)m 13(storing)m 1035 712 p (graphical)s 15(objects)m 16(on)m 15(disk,)m 16(code)m 17(for)m 15(hit)m 15(detection,)m 16(and)m 1035 762 p (comments.)s 20(The)m c-med.300 @sf 15(idraw)m t-rom.300 @sf 14(code)m 15(is)m 13(divided)m 13(into)m 13(common)m 1035 812 p (code,)s 15(user)m 14(interface)m 14(code,)m 14(and)m 14(comments.)m 1076 872 p (This)s 21(partition)m -1(ing)m 18(lets)m 20(us)m 20(take)m 21(into)m 19(account)m 21(dif)m (fer-)s 1035 922 p (ent)s 14(capabilities)m 14(and)m 14(levels)m 14(of)m 14(commenting)m 14(when)m 15(com-)m 1035 972 p (paring)s 17(code)m 17(sizes.)m 31(For)m 17(example,)m 20(the)m 17(Graphic)m 17(library)m 1035 1022 p (has)s 21 r 97 c 21(general)m 21(persistent)m 20(object)m 20(facility)m -2 r 44 c 21(whereas)m 21(the)m 1035 1072 p (Modula-2)s 16(library)m 15(supports)m 16(only)m 15(manual)m 17(read/write)m 16(of)m 1035 1122 p (graphical)s 13(objects.)m 18(Graphic)m 13(subclasses)m 15(implement)m 13(\014ne-)m 1035 1171 p (grain)s 11(hit)m 11(detection,)m 12(while)m 11(the)m 11(Modula-2)m 11(library)m 10(can)m 13(de-)m 1035 1221 p (tect)s 18(hits)m 16(only)m 16(within)m 16(an)m 18(object')m -1 r 115 c 16(bounding)m 15(box.)m 29(The)m 1035 1271 p (Modula-2)s 14(library)m 15(uses)m 16 r 97 c 16(more)m 16(complicated)m 16(incremen-)m 1035 1321 p (tal)s 16(update)m 16(mechanism)m 17(and)m 17(is)m 16(commented)m 17(more)m 17(heav-)m 1035 1371 p (ily)s 12(than)m 13(the)m 14(Graphic)m 13(library)m -2 r 46 c 17(Modula-2)m c-med.300 @sf 12(idraw)m t-rom.300 @sf 14(imple-)m 1035 1420 p (ments)s 15(scroll)m 14(bars,)m 16(pull-down)m 12(menus,)m 16(and)m 15(rubberbands)m 1035 1470 p (explicitly)s -3 r 44 c 11(while)m 11(InterV)m -1(iews)m 11(provides)m 11(this)m 11(functionalit)m -1 r 121 c 1035 1520 p (in)s 13(the)m 14(C++)m 14(version.)m 1076 1581 p (From)s 14(the)m 14(information)m 11(in)m 13 r 84 c -2(able)m 14(1,)m 13(we)m 15(conclude)m 13(only)m 1035 1630 p (that)s 10(the)m 10(C++)m 12(and)m 10(Modula-2)m 10(code)m 11(is)m 11(comparable)m 11(in)m 10(size.)m 1035 1680 p (The)s 10(amount)m 10(of)m 9(common)m 10(code)m 10(in)m 9(the)m 10(structured)m 8(graphics)m 1035 1730 p (libraries)s 16(is)m 16(about)m 16(the)m 16(same,)m 19(and)m 16(the)m 17(C++)m 17(version)m 16(has)m 1035 1780 p (proportio)s -1(nally)m 17(more)m 20(code)m 20(to)m 19(implement)m 19(added)m 19(func-)m 1035 1830 p (tionality)s -3 r 46 c 20(The)m 16(Modula-2)m c-med.300 @sf 14(idraw)m t-rom.300 @sf 15(is)m 14(somewhat)m 16(smaller)m 1035 1879 p (than)s 18(the)m 19(C++)m 19(version,)m 20(taking)m 17(into)m 18(account)m 18(that)m 18(C++)m c-med.300 @sf 1035 1929 p (idraw)s t-rom.300 @sf 14(relies)m 14(on)m 13(InterV)m -1(iews)m 12(to)m 14(implement)m 13(its)m 14(user)m 14(in-)m 1035 1979 p (terface.)s 30(However)m -1 r 44 c 18(C++)m c-med.300 @sf 17(idraw)m t-rom.300 @sf 18(provides)m 16(more)m 17(func-)m 1035 2029 p (tionality)s -3 r 44 c 10(including)m 10(arbitrary-level)m 10(undo)m 10(\(versus)m 12(single-)m 1035 2079 p (level)s 18(for)m 17(Modula-2)m c-med.300 @sf 17(idraw)m t-rom.300 @sf (\),)s 19(more)m 18(sophisticated)m 17(text)m 1035 2129 p (editing,)s 13(and)m 13(user)m 14(customizability)m -2 r 46 c 1076 2189 p 65 c 10(possible)m 9(disadvantage)m 9(of)m 9(an)m 10(object-oriented)m 8(imple-)m 1035 2239 p (mentation)s 15(is)m 17 r 97 c 17(runtime)m 15(performance)m 17(penality)m 16(because)m 1035 2289 p (of)s 19(overhead)m 20(such)m 20(as)m 20(method)m 19(lookup.)m 35(In)m 19(the)m 20(imple-)m 1035 2339 p (mentation)s 15(of)m 16(C++)m 16(we)m 17(used,)m 17(the)m 16(overhead)m 16(amounts)m 16(to)m 1035 2388 p (three)s 11(or)m 10(four)m 10(extra)m 11(memory)m 12(references)m 12(per)m 11(virtual)m 9(func-)m 1035 2438 p (tion)s 18(call)m 20 r 91 c (13)s (].)s 36 r 84 c -2 r 111 c 19(see)m 21(whether)m 20(this)m 18(overhead)m 20(has)m 21 r 97 c 1035 2488 p (signi\014cant)s 14(impact)m 16(on)m 15(the)m 15(performance)m 16(of)m c-med.300 @sf 15(idraw)m t-rom.300 @sf 44 c 17(we)m 1035 2538 p (measured)s 21(how)m 19(long)m 18(it)m 18(took)m 19(each)m 20(version)m 19(of)m c-med.300 @sf 19(idraw)m t-rom.300 @sf 1035 2588 p (to)s 12(do)m 12(three)m 12(dif)m (ferent)s 11(operations)m 12(on)m 12(two)m 11(dif)m (ferent)s 11(draw-)m 1035 2637 p (ings,)s c-med.300 @sf 11(car.6)m t-rom.300 @sf 11(\(shown)m 11(in)m 10(Figure)m 10(7\))m 11(and)m c-med.300 @sf 11(multidriver)m t-rom.300 @sf 1035 2687 p (\(shown)s 14(in)m 15(Figure)m 14(8\).)m 22(These)m 16(are)m 16(representative)m 15(of)m 15(two)m 1035 2737 p (common)s 22(types)m 22(of)m 21(drawings:)m 34(artistic)m 21(drawings)m 21(with)m @eop 11 @bop0 /cmsy7.300 @newfont cmsy7.300 @sf [<0E003F8071C060C0E0E0C060C060C060C060E0E060C071C03F800E00> 16 14 -2 0 17.008] 14 @dc 11 @bop1 t-rom.300 @sf 927 8 p 45 c 14 r 49 c -1 r 49 c 13 r 45 c 1078 155 p 368 2 ru 1077 203 p 2 50 ru t-ita.300 @sf 1102 188 p (Modula-2)s 1290 203 p 2 50 ru 1326 188 p (C++)s 1444 203 p 2 50 ru 491 205 p 954 2 ru 491 255 p 2 50 ru t-rom.300 @sf 516 241 p (structured)s 706 256 p 2 50 ru 732 240 p (common)s 14(code)m 1077 255 p 2 50 ru 1183 240 p (3600)s 1290 255 p 2 50 ru 1337 240 p (3500)s 1444 255 p 2 50 ru 491 305 p 2 50 ru 516 291 p (graphics)s 706 306 p 2 50 ru 732 290 p (incremental)s 14(update)m 1077 305 p 2 50 ru 1204 290 p (500)s 1290 305 p 2 50 ru 1357 290 p (100)s 1444 305 p 2 50 ru 491 355 p 2 50 ru 516 341 p (library)s 706 356 p 2 50 ru 732 340 p (hit)s 13(detection)m 1077 355 p 2 50 ru 1204 340 p (400)s 1290 355 p 2 50 ru 1337 340 p (1500)s 1444 355 p 2 50 ru 491 404 p 2 50 ru 215 r 2 50 ru 732 389 p (persistence)s 1077 404 p 2 50 ru 1204 389 p (600)s 1290 404 p 2 50 ru 1337 389 p (1300)s 1444 404 p 2 50 ru 491 454 p 2 50 ru 215 r 2 50 ru 732 439 p (comments)s 1077 454 p 2 50 ru 1204 439 p (700)s 1290 454 p 2 50 ru 1357 439 p (300)s 1444 454 p 2 50 ru 707 456 p 738 2 ru 491 504 p 2 50 ru 215 r 2 50 ru 732 489 p (total)s 13(lines)m 1077 504 p 2 50 ru 1183 489 p (5800)s 1290 504 p 2 50 ru 1337 489 p (6700)s 1444 504 p 2 50 ru 491 506 p 954 2 ru 491 555 p 2 50 ru c-med.300 @sf 516 541 p (idraw)s 706 556 p 2 50 ru t-rom.300 @sf 732 540 p (common)s 14(code)m 1077 555 p 2 50 ru 1162 540 p (13000)s 1290 555 p 2 50 ru 1316 540 p (14000)s 1444 555 p 2 50 ru 491 605 p 2 50 ru 215 r 2 50 ru 732 590 p (user)s 14(interface)m 1077 605 p 2 50 ru 1183 590 p (2000)s 1290 605 p 2 50 ru 1399 590 p 48 c 1444 605 p 2 50 ru 491 655 p 2 50 ru 215 r 2 50 ru 732 640 p (comments)s 1077 655 p 2 50 ru 1183 640 p (1000)s 1290 655 p 2 50 ru 1337 640 p (2000)s 1444 655 p 2 50 ru 707 657 p 738 2 ru 491 705 p 2 50 ru 215 r 2 50 ru 732 690 p (total)s 13(lines)m 1077 705 p 2 50 ru 1162 690 p (16000)s 1290 705 p 2 50 ru 1316 690 p (16000)s 1444 705 p 2 50 ru 491 707 p 954 2 ru 404 781 p 84 c -2(able)m 14(1:)m 17(Comparison)m 13(of)m 14(Modula-2)m 12(and)m 14(C++)m 14(source)m 14(code)m 15(\(in)m 13(lines\))m 0 956 p (many)s 12(complex,)m 13(overlapping)m 11(polygons)m 10(and)m 12(splines,)m 12(and)m 0 1005 p (technical)s 23(drawings)m 22(consisting)m 22(mainly)m 23(of)m 22(rectangles,)m 0 1055 p (lines,)s 21(and)m 19(text)m 19(with)m 19(littl)m -1 r 101 c 18(or)m 20(no)m 19(overlap.)m 36 r 87 c -2 r 101 c 18(timed)m 0 1105 p (the)s 14(followi)m -1(ng)m 12(operations:)m 31 1189 p (1.)s 21(In)m 20(the)m 19(\\zoom)m 21(#1")m 20(test,)m 22(the)m 20(drawing)m 19(is)m 20(zoomed)m 83 1239 p (from)s 10(half)m 9(size)m 11(to)m 9(quarter)m 10(size)m 11(and)m 10(back.)m 18(The)m 10(draw-)m 83 1289 p (ing)s 13(is)m 13(fully)m 13(visible)m 12(throughout)m 11(the)m 14(test.)m 31 1373 p (2.)s 21(In)m 15(\\zoom)m 16(#2,")m 17(the)m 15(drawing)m 15(is)m 15(zoomed)m 16(from)m 15(half)m 83 1423 p (size)s 13(to)m 11(full)m 10(size)m 13(and)m 12(back.)m 19(The)m 12(drawing)m 11(is)m 12(clipped)m 83 1472 p (when)s 10(drawn)m 10(at)m 10(full)m 8(size)m 11(so)m 10(that)m 9(only)m 9(half)m 9(is)m 10(visible.)m 31 1557 p (3.)s 21(In)m 10(\\rotation,")m 11(the)m 10(\(top-level\))m 9(object)m 10(in)m 10(the)m 10(drawing)m 83 1606 p (is)s 14(rotated)m 13(90)m cmsy7.300 @sf 296 1592 p 14 c t-rom.300 @sf 314 1606 p 46 c 42 1690 p 84 c -2(able)m 11 r 50 c 11(shows)m 12(the)m 11(average)m 13(of)m 11(ten)m 11(trials)m 11(for)m 11(each)m 13(test.)m 0 1740 p (The)s 12(C++)m 12(version)m 11(outperforms)m 11(the)m 11(Modula-2)m 11(version)m 11(in)m 0 1790 p (every)s 15(test.)m 21(The)m 16(dif)m (ference)s 14(in)m 14(speed)m 16(is)m 14(greatest)m 15(for)m 14(the)m 0 1840 p (rotation)s 10(test)m 12(on)m c-med.300 @sf 12(car.6)m t-rom.300 @sf 44 c 13(but)m 11(this)m 11(dif)m (ference)s 12(is)m 12(exagger-)m 0 1890 p (ated)s 13(because)m 15(of)m 12 r 97 c 14(bug)m 12(in)m 12(the)m 13(Modula-2)m 12(library')m -2 r 115 c 11(incre-)m 0 1939 p (mental)s 17(update)m 16(routine)m 16(that)m 16(caused)m 18(redundant)m 16(redraws)m 0 1989 p (of)s 17(two)m 16(subcomponents.)m 28(In)m 16(general,)m 19(the)m 16(Modula-2)m 16(li-)m 0 2039 p (brary)s 20(is)m 19(handicapped)m 20(by)m 20(the)m 20(extra)m 20(traversals)m 20(associ-)m 0 2089 p (ated)s 20(with)m 18(graphic)m 19(state)m 20(propagation)m 18(and)m 19(incremental)m 0 2139 p (update.)s 21(The)m 15(results)m 14(would)m 13(be)m 15(more)m 15(comparable)m 15(if)m 14(the)m 0 2188 p (Modula-2)s 14(library)m 15(were)m 16(modi\014ed)m 15(to)m 15(use)m 16(concatenation)m 0 2238 p (and)s 18(the)m 18(simpler)m 17(incremental)m 18(update)m 18(algorithm)m 17(of)m 17(the)m 0 2288 p (damage)s 15(class.)m 42 2338 p (The)s 12(last)m 11(quantitati)m -1(ve)m 10(comparison)m 11(involves)m 10(the)m 12(object)m 0 2388 p (code)s 13(sizes)m 13(for)m 11(each)m 14(library)m 11(and)m c-med.300 @sf 12(idraw)m t-rom.300 @sf 12(version.)m 18(These)m 0 2438 p (values)s 12(are)m 13(shown)m 12(in)m 11 r 84 c -2(able)m 12(3.)m 18(The)m 13(C++)m 13(sizes)m 13(are)m 13(lar)m (ger)s 0 2488 p (mainly)s 13(because)m 16(of)m 13(the)m 14(added)m 14(functionality)m 12(of)m 13(both)m 13(the)m 0 2537 p (Graphic)s 12(library)m 10(and)m 12(C++)m c-med.300 @sf 12(idraw)m t-rom.300 @sf 44 c 13(constructor)m -1 r 44 c 10(destruc-)m 0 2587 p (tor)s -1 r 44 c 13(and)m 13(inline)m 12(code,)m 15(and)m 14(the)m 13(overhead)m 14(associated)m 14(with)m 0 2637 p (virtual)s 12(pointer)m 13(tables.)m 42 2687 p (From)s 18 r 97 c 19(qualitativ)m -1 r 101 c 17(standpoint,)m 18(the)m 18(Graphic)m 18(library)m 0 2737 p (and)s 23(the)m 23(corresponding)m 21(version)m 22(of)m c-med.300 @sf 23(idraw)m t-rom.300 @sf 23(are)m 23(both)m 1035 956 p (signi\014cantly)s 21(better)m 22(structured,)m 24(more)m 22(understandable,)m 1035 1005 p (and)s 22(\\cleaner)m 2 r 34 c 23(overall)m 21(than)m 22(their)m 21(Modula-2)m 21(counter-)m 1035 1055 p (parts.)s 20(One)m 14(could)m 13(ar)m (gue)s 14(that)m 13(the)m 14(lessons)m 14(learned)m 15(in)m 13(the)m 1035 1105 p (Modula-2)s 14(implementation)m 13(ef)m (forts)s 14(led)m 14(to)m 14(superior)m 14(C++)m 1035 1155 p (versions.)s 25(However)m -1 r 44 c 17(the)m 16(versions)m 15(of)m c-med.300 @sf 16(idraw)m t-rom.300 @sf 16(were)m 17(de-)m 1035 1205 p (veloped)s 10(by)m 11(two)m 10(dif)m (ferent)s 9(people.)m 18(In)m 10(fact,)m 13(the)m 10(Modula-2)m 1035 1254 p (version)s 15(was)m 17(its)m 16(author)m 2 r 39 c -2 r 115 c 14(second)m 16(attempt)m 16(at)m 16 r 97 c 17(drawing)m 1035 1304 p (editor)s -1 r 44 c 12(while)m 13(the)m 13(C++)m 14(version)m 13(was)m 14(its)m 13(author)m 2 r 39 c -2 r 115 c 12(\014rst)m 13(at-)m 1035 1354 p (tempt.)s 35(The)m 21(object-oriented)m 17(paradigm)m 20(simply)m 18(invites)m 1035 1404 p (good)s 14(program)m 15(structuring)m 13(through)m 14(inheritance,)m 15(encap-)m 1035 1454 p (sulation,)s 13(and)m 14(late)m 14(binding,)m 12(all)m 14(of)m 13(which)m 14(promote)m 13(mod-)m 1035 1504 p (ularity)s 12(and)m 14(\015exibility)m -3 r 46 c t-bol.420 @sf 1035 1647 p 55 c 58(Conclusion)m t-rom.300 @sf 1035 1740 p 65 c 12(striking)m 10(aspect)m 12(of)m 12(graphics)m 11(packages)m 13(such)m 12(as)m 13(CORE,)m 1035 1790 p (GKS,)s 15(and)m 14(PHIGS)m 14(is)m 14(their)m 13(size)m 15(and)m 15(complexity)m -2 r 46 c 18(These)m 1035 1840 p (packages)s 19(are)m 18(intended)m 17(as)m 18(standards)m 18(that)m 17(provide)m 16(ma-)m 1035 1890 p (chine)s 15(independence,)m 16(extensive)m 15(functionalit)m -1 r 121 c -3 r 44 c 14(and)m 15(gen-)m 1035 1939 p (erality)s -2 r 44 c 24(and)m 23(they)m 22(lar)m (gely)s 21(succeed)m 25(in)m 22(these)m 23(respects.)m 1035 1989 p (However)s -1 r 44 c 20(all)m 18(re\015ect)m 19(their)m 18(procedural)m 18(implementation)m 1035 2039 p (in)s 16(their)m 17(interface.)m 28(Programmers)m 18(cannot)m 17(extend)m 17(prim-)m 1035 2089 p (itives)s 17(through)m 16(inheritance)m 18(to)m 17(modify)m 18(their)m 17(semantics.)m 1035 2139 p (The)s 16(result)m 15(is)m 15 r 97 c 16(substantial)m 14(complexity)m 14(penalty)m 15(for)m 15(ev-)m 1035 2189 p (ery)s 14(increase)m 15(in)m 13(\015exibilit)m -1 r 121 c -2 r 46 c 1076 2239 p (For)s 13(example,)m 14(some)m 14(packages)m 14(bind)m 12(graphics)m 12(state)m 13(at-)m 1035 2289 p (tributes)s 19(statically)m 18(to)m 20(graphical)m 19(objects)m 20(when)m 20(the)m 20(ob-)m 1035 2339 p (jects)s 20(are)m 21(created.)m 37(Others)m 20(provide)m 19 r 97 c 20(simple)m 20(form)m 19(of)m 1035 2388 p (state)s 23(inheritance)m 23(by)m 23(allowing)m 22(graphics)m 23(to)m 23(reference)m 1035 2438 p (other)s 14(graphics)m 14(in)m 14 r 97 c 15(manner)m 15(similar)m 14(to)m 14(instances)m 14(in)m 14(the)m 1035 2488 p (Graphic)s 15(library)m -2 r 46 c 23(These)m 17(facilities)m 14(are)m 17(signi\014cantly)m 14(less)m 1035 2538 p (\015exible)s 19(than)m 19(the)m 19(graphics)m 20(state)m 19(concatenation)m 19(mech-)m 1035 2588 p (anism,)s 19(the)m 18(semantics)m 18(of)m 17(which)m 17(can)m 19(be)m 17(changed)m 18(on)m 18 r 97 c 1035 2637 p (per)s (-class)s 15(basis.)m 22(In)m 15(an)m 15(object-oriented)m 13(package,)m 17(gener-)m 1035 2687 p (ality)s 11(can)m 13(be)m 12(achieved)m 13(through)m 10(class)m 13(inheritance)m 11(instead)m 1035 2737 p (of)s 13(supporting)m 12 r 97 c 14(broad)m 13(range)m 14(of)m 14(behaviors)m 13(explicitly)m -3 r 46 c @eop 12 @bop0 12 @bop1 t-rom.300 @sf 927 8 p 45 c 13(12)m 14 r 45 c 533 155 p 870 2 ru 533 205 p 2 50 ru t-ita.300 @sf 622 191 p (Drawing)s 857 206 p 2 50 ru 924 190 p 84 c -3(est)m 1055 205 p 2 50 ru 1081 190 p (Modula-)s -1 r 50 c 1268 205 p 2 50 ru 1294 190 p (C++)s 1402 205 p 2 50 ru 533 207 p 870 2 ru 533 257 p 2 50 ru c-med.300 @sf 558 243 p (car.6)s 857 258 p 2 50 ru t-rom.300 @sf 883 242 p (zoom)s 14(#1)m 1055 257 p 2 50 ru 1203 242 p (18)s 1268 257 p 2 50 ru 1326 242 p (8.3)s 1402 257 p 2 50 ru 533 306 p 2 50 ru 558 292 p (\(82)s 14(objects\))m 857 307 p 2 50 ru 883 291 p (zoom)s 14(#2)m 1055 306 p 2 50 ru 1203 291 p (12)s 1268 306 p 2 50 ru 1326 291 p (6.3)s 1402 306 p 2 50 ru 533 356 p 2 50 ru 324 r 2 50 ru 883 341 p (rotation)s 1055 356 p 2 50 ru 1203 341 p (15)s 1268 356 p 2 50 ru 1326 341 p (4.5)s 1402 356 p 2 50 ru 533 358 p 870 2 ru 533 408 p 2 50 ru c-med.300 @sf 558 394 p (multidriver)s 857 409 p 2 50 ru t-rom.300 @sf 883 393 p (zoom)s 14(#1)m 1055 408 p 2 50 ru 1203 393 p (24)s 1268 408 p 2 50 ru 1304 393 p (12)s 1402 408 p 2 50 ru 533 457 p 2 50 ru 558 443 p (\(361)s 13(objects\))m 857 458 p 2 50 ru 883 442 p (zoom)s 14(#2)m 1055 457 p 2 50 ru 1203 442 p (18)s 1268 457 p 2 50 ru 1326 442 p (8.3)s 1402 457 p 2 50 ru 533 507 p 2 50 ru 324 r 2 50 ru 883 492 p (rotation)s 1055 507 p 2 50 ru 1204 492 p 49 c -1 r 49 c 1268 507 p 2 50 ru 1326 492 p (6.7)s 1402 507 p 2 50 ru 533 509 p 870 2 ru 229 583 p 84 c -2(able)m 13(2:)m 18(Comparison)m 13(of)m 13(Modula-2)m 13(and)m 14(C++)m c-med.300 @sf 14(idraw)m t-rom.300 @sf 14(drawing)m 13(performance)m 14(\(in)m 13(seconds\))m 1042 726 p 348 2 ru 1041 775 p 2 50 ru 2 50 ru t-ita.300 @sf 1067 761 p (Modula-2)s 1255 776 p 2 50 ru 1280 760 p (C++)s 1388 775 p 2 50 ru 547 777 p 842 2 ru 547 826 p 2 50 ru t-rom.300 @sf 572 812 p (structured)s 13(graphics)m 13(library)m 1041 827 p 2 50 ru 1189 811 p (40)s 1255 826 p 2 50 ru 1303 811 p 49 c -1(10)m 1388 826 p 2 50 ru 547 876 p 2 50 ru c-med.300 @sf 572 862 p (idraw)s 1041 877 p 2 50 ru t-rom.300 @sf 1168 861 p (130)s 1255 876 p 2 50 ru 1302 861 p (280)s 1388 876 p 2 50 ru 547 878 p 842 2 ru 324 952 p 84 c -2(able)m 13(3:)m 18(Comparison)m 12(of)m 14(Modula-2)m 12(and)m 14(C++)m 15(object)m 13(code)m 14(sizes)m 15(\(in)m 13(kilobyt)m -1(es\))m 42 1127 p (Another)s 15(advantage)m 16(of)m 16(the)m 15(object-oriented)m 15(approach)m 0 1176 p (is)s 14(the)m 14(ability)m 12(to)m 14(treat)m 14(graphical)m 14(objects)m 13(generically)m -2 r 44 c 14(re-)m 0 1226 p (lying)s 14(on)m 16(the)m 16(runtime)m 15(system)m 16(to)m 16(determine)m 16(the)m 16(correct)m 0 1276 p (method)s 14(for)m 14 r 97 c 16(particular)m 13(object.)m 21(The)m c-med.300 @sf 16(virtual)m t-rom.300 @sf 14(mech-)m 0 1326 p (anism)s 17(accomplishes)m 17(this)m 15(in)m 16(C++.)m 27(Thus,)m 18(functionalit)m -1 r 121 c 0 1376 p (such)s 15(as)m 15(hit)m 14(detection)m 14(can)m 15(be)m 15(implemented)m 15(in)m 14 r 97 c 15(simple)m 0 1426 p (way)s 19(without)m 17(identifying)m 17(objects)m 18(with)m 18(element)m 20(point-)m 0 1475 p (ers)s 18(and)m 17(labels.)m 30(Furthermore,)m 18(escape)m 19(mechanisms)m 19(for)m 0 1525 p (exploiting)s 11(special)m 14(hardware)m 14(facilities)m 13(are)m 15(unnecessary;)m 0 1575 p (subclasses)s 20(can)m 20(be)m 19(derived)m 18(that)m 19(reimplement)m 19(key)m 19(op-)m 0 1625 p (erations)s 19(such)m 19(as)m c-med.300 @sf 20(Draw)m t-rom.300 @sf 20(to)m 19(take)m 19(advantage)m 20(of)m 19(unique)m 0 1675 p (capabilities.)s 42 1757 p (In)s 15(our)m 15(experience,)m 17(structured)m 14(graphics)m 15(is)m 16(useful)m 15(for)m 0 1807 p (applications)s 15(that)m 16(allow)m 15(the)m 16(user)m 17(to)m 16(manipulate)m 16(graph-)m 0 1857 p (ical)s 18(objects)m 17(interactively)m -2 r 46 c 28(Structured)m 17(graphics)m 17(is)m 18(less)m 0 1907 p (useful)s 12(for)m 11(implementing)m 11(the)m 11(appearance)m 14(of)m 12(the)m 12(user)m 12(in-)m 0 1957 p (terface.)s 20(It)m 12(is)m 13(unnecessary)m 14(to)m 13(de\014ne)m 14(scroll)m 12(bars,)m 14(menus,)m 0 2007 p (and)s 12(buttons)m 10(using)m 11(structured)m 10(graphics)m 12(because)m 13(they)m 11(are)m 0 2056 p (simple)s 14(to)m 14(draw)m 14(procedurally)m 14(and)m 14(their)m 13(structure)m 14(rarely)m 0 2106 p (changes.)s 31(Thus,)m 20(structured)m 16(graphics)m 18(is)m 17(not)m 17 r 97 c 18(replace-)m 0 2156 p (ment)s 14(for)m 13(immediate-mode)m 14(graphics.)m 42 2239 p 87 c -2 r 101 c 16(are)m 19(interested)m 17(in)m 17(using)m 16(the)m 18(Graphic)m 17(library)m 17(for)m 0 2289 p (animating)s 17(graphics.)m 31(Structured)m 16(graphics)m 18(is)m 18(appropri-)m 0 2339 p (ate)s 20(for)m 20(animation)m 19(if)m 19(the)m 20(hardware)m 20(is)m 20(fast)m 20(enough)m 19(to)m 0 2388 p (support)s 13(it.)m 21(Also,)m 15(the)m 14(current)m 15(implementation)m 13(does)m 15(not)m 0 2438 p (provide)s 14(three-dimensional)m 14(capabilities.)m 21(Extending)m 14(the)m 0 2488 p (library)s 18(to)m 19(support)m 18(three)m 20(dimensional)m 18(graphics)m 19(would)m 0 2538 p (require)s 17(signi\014cant)m 16(additions)m 15(to)m 17(base)m 18(class)m 18(functional-)m 0 2588 p (ity)s -2 r 44 c 16(for)m 16(example,)m 18(to)m 16(incorporate)m 16(operations)m 16(governing)m 0 2637 p (lightin)s -1 r 103 c 14(models)m 17(and)m 16(point)m 14(of)m 16(view)m -2 r 44 c 16(three-dimensional)m 0 2687 p (analogs)s 14(of)m c-med.300 @sf 15(Contains)m t-rom.300 @sf 14(and)m c-med.300 @sf 15(Intersects)m t-rom.300 @sf 44 c 15(and)m 15(addi-)m 0 2737 p (tional)s 12(information)m 12(when)m 14(clipping.)m 1076 1127 p (Of)s 19(more)m 19(immediate)m 19(interest)m 18(is)m 18(the)m 19(introducti)m -1(on)m 16(of)m 1035 1176 p (version)s 21(2.0)m 23(of)m 21(C++)m 23 r 91 c (13)s -1 r 93 c 22(with)m 22(multipl)m -1 r 101 c 21(inheritance,)m 1035 1226 p (among)s 10(other)m 10(enhancements.)m 19(Though)m 9(single)m 10(inheritance)m 1035 1276 p (is)s 11(very)m 11(useful,)m 11(it)m 10(often)m 10(forces)m 12(the)m 11(programmer)m 11(to)m 10(derive)m 1035 1326 p (from)s 12(one)m 13(of)m 12(two)m 12(equally)m 12(attractive)m 12(classes.)m 20(This)m 12(limits)m 1035 1376 p (the)s 18(applicability)m 16(of)m 18(prede\014ned)m 19(classes,)m 21(often)m 17(making)m 1035 1426 p (it)s 15(necessary)m 18(to)m 15(duplicate)m 15(code.)m 26(For)m 16(example,)m 17(there)m 16(is)m 1035 1475 p (no)s 17(way)m 17(to)m 17(derive)m 17 r 97 c 18(graphic)m 17(that)m 16(is)m 17(both)m 17 r 97 c 17(circle)m 18(and)m 1035 1525 p 97 c 16(picture;)m 15(one)m 15(must)m 15(derive)m 15(from)m 15(one)m 15(or)m 15(the)m 15(other)m 15(and)m 1035 1575 p (reimplement)s 12(the)m 12(functionalit)m -1 r 121 c 10(of)m 11(the)m 12(class)m 13(that)m 11(was)m 13(ex-)m 1035 1625 p (cluded.)s 1076 1696 p (The)s 25(availability)m 22(of)m 24(multiple)m 22(inheritance)m 24(will)m 23(un-)m 1035 1746 p (doubtedly)s 17(change)m 20(the)m 18(class)m 20(hierarchy)m 19(shown)m 18(in)m 19(Fig-)m 1035 1796 p (ure)s 17(1.)m 27(Classes)m 17(such)m 17(as)m t-bol.300 @sf 18(\014lled)m t-rom.300 @sf 16(and)m t-bol.300 @sf 17(open)m t-rom.300 @sf 17(could)m 16(be)m 17(de-)m 1035 1846 p (\014ned)s 16(to)m 16(simplify)m 15(the)m 16(relationships)m 15(between)m 16(\014lled)m 16(and)m 1035 1896 p (non-\014lled)s 8(graphics,)m 11(which)m 9(are)m 11(currently)m 9(derived)m 9(as)m 10(they)m 1035 1945 p (are)s 19(to)m 17(maximize)m 19(code)m 18(sharing.)m 31(Persistence)m 19(could)m 17(be)m 1035 1995 p (implemented)s 12(as)m 12 r 97 c 12(separate)m 13(class)m 13(from)m 12(which)m 11(to)m 11(inherit.)m 1035 2045 p (Thus,)s 13(non-persistent)m 11(classes)m 14(can)m 13(avoid)m 12(the)m 12(small)m 13(space)m 1035 2095 p (overhead)s 13(caused)m 13(by)m 12(deriving)m 11(graphic)m 12(from)m 12 r 97 c 13(persistent)m 1035 2145 p (class.)s t-bol.420 @sf 1035 2404 p (Acknowledgments)s t-rom.300 @sf 1035 2538 p (This)s 23(work)m 23(was)m 25(supported)m 22(by)m 23(the)m 24(Quantum)m 23(project)m 1035 2588 p (through)s 18 r 97 c 21(gift)m 18(from)m 20(Digital)m 19(Equipment)m 19(Corporation.)m 1035 2637 p (John)s 29(Interrante)m 29(implemented)m 29(the)m 29(C++)m 30(version)m 28(of)m c-med.300 @sf 1035 2687 p (idraw)s t-rom.300 @sf 46 c 28(Paul)m 16(Calder)m 16(and)m 17(Craig)m 16(Dunwoody)m 15(provided)m 1035 2737 p (helpful)s 12(comments)m 15(on)m 13(earlier)m 14(drafts)m 13(of)m 14(this)m 13(paper)m -1 r 46 c @eop 13 @bop0 13 @bop1 t-rom.300 @sf 927 8 p 45 c 13(13)m 14 r 45 c t-bol.420 @sf 0 154 p (Refer)s (ences)s t-rom.300 @sf 21 250 p ([1])s t-ita.300 @sf 20(IRIS)m 14(User)m 2 r 39 c -4 r 115 c 12(Guide)m t-rom.300 @sf 46 c 18(Silicon)m 13(Graphics,)m 14(Inc.,)m 15(1984.)m 21 341 p ([2])s 20 r 80 c -4(.S.)m 10(Barth.)m 16(An)m 10(object-oriented)m 8(approach)m 10(to)m 9(graph-)m 90 391 p (ical)s 15(interfaces.)m t-ita.300 @sf 24(ACM)m 15 r 84 c -1(ransactions)m 13(on)m 15(Graphics)m t-rom.300 @sf 44 c 90 441 p (5\(2\):142{1)s -1(72,)m 12(April)m 13(1986.)m 21 532 p ([3])s 20 r 80 c -4 r 46 c 21(Bono)m 21(et)m 21(al.)m 41(GKS:)m 21(The)m 22(\014rst)m 21(graphics)m 21(stan-)m 90 581 p (dard.)s t-ita.300 @sf 20(IEEE)m 16(Computer)m 13(Graphics)m 14 r 38 c 15(Application)m -1 r 115 c t-rom.300 @sf 44 c 90 631 p (2\(5\):9{23,)s 12(July)m 13(1982.)m 21 722 p ([4])s 20(Status)m 25(report)m 26(of)m 25(the)m 26(graphics)m 26(standards)m 26(plan-)m 90 772 p (ning)s 10(committee)m 12(of)m 10(ACM/SIGGRAPH.)m t-ita.300 @sf 17(Computer)m 90 822 p (Graphics)s t-rom.300 @sf 44 c 14(13\(3\),)m 13(Fall)m 13(1979.)m 21 913 p ([5])s 20(Adele)m 10(J.)m 11(Goldber)m (g.)s t-ita.300 @sf 16(Smalltal)m -1(k-80:)m 15(The)m 10(Interactive)m 90 963 p (Pr)s -1(ogramming)m 26(Envir)m -1(onment)m t-rom.300 @sf 46 c 59(Addison-W)m -3(esley)m -2 r 44 c 90 1013 p (Reading,)s 13(MA,)m 15(1984.)m 21 1104 p ([6])s 20 r 87 c -3(.T)m -2 r 46 c 14(Hewitt.)m 21(Programmers)m 15(Hierarchical)m 15(Interac-)m 90 1153 p (tive)s 13(Graphics)m 13(System)m 14(\(PHIGS\).)m 18(In)m 13(G.)m 13(Enderle)m 14(et)m 90 1203 p (al.,)s 21(editors,)m t-ita.300 @sf 19(Advances)m 20(in)m 18(Computer)m 18(Graphics)m 18 r 73 c t-rom.300 @sf 44 c 90 1253 p (Springer)s (-V)s -5(erlag,)m 12(1986.)m 21 1344 p ([7])s 20(Keith)m 11(A.)m 12(Lantz)m 13(and)m 12 r 87 c -1(illi)m -1(am)m 11(Nowicki.)m 17(Structured)m 90 1394 p (graphics)s 14(for)m 15(distribut)m -1(ed)m 13(systems.)m t-ita.300 @sf 23(ACM)m 14 r 84 c -1(ransac-)m 90 1444 p (tions)s 12(on)m 14(Graphics)m t-rom.300 @sf 44 c 14(3\(1\):23{5)m -1(1,)m 12(January)m 14(1984.)m 21 1535 p ([8])s 20(Mark)m 19(A.)m 20(Linton,)m 19(Paul)m 19(R.)m 20(Calder)m -1 r 44 c 20(and)m 19(John)m 19(M.)m 90 1585 p (Vlissides.)s t-ita.300 @sf 25(InterV)m -2(iews:)m 22 r 65 c 17(C++)m 16(Graphical)m 14(Inter-)m 90 1634 p (face)s 12 r 84 c -3(oolkit)m t-rom.300 @sf -1 r 46 c 16 r 84 c -2(echnical)m 12(Report)m 10(CSL{TR{88{358,)m 90 1684 p (Stanford)s 16(University)m -2 r 44 c 16(Stanford,)m 17(CA)m 17(94305{2192,)m 90 1734 p (July)s 13(1988.)m 21 1825 p ([9])s 20(Patrick)m 18(D.)m 18(O'Brien,)m 19(D.C.)m 19(Halbert,)m 19(and)m 18(Mike)m 18 r 70 c -2 r 46 c 90 1875 p (Kilian.)s 34(The)m 20 r 84 c (rellis)s 17(programming)m 19(environment.)m 90 1925 p (In)s t-ita.300 @sf 17(ACM)m 17(OOPSLA)m 18('87)m 16(Confer)m -1(ence)m 18(Pr)m -1(oceedings)m t-rom.300 @sf 44 c 90 1974 p (pages)s 14(91{102,)m 13(Orlando,)m 13(FL,)m 15(October)m 13(1987.)m 0 2065 p ([10])s 20(Robert)m 12 r 87 c -3 r 46 c 13(Schei\015er)m 13(and)m 13(Jim)m 13(Gettys.)m 18(The)m 14 r 88 c 13(win-)m 90 2115 p (dow)s 20(system.)m t-ita.300 @sf 38(ACM)m 20 r 84 c -1(ransactions)m 18(on)m 20(Graphics)m t-rom.300 @sf 44 c 90 2165 p (5\(2\):79{10)s -1(9,)m 12(April)m 13(1986.)m 2 2256 p ([1)s -1(1])m 19(Kurt)m 18(J.)m 20(Schmucker)m -1 r 46 c t-ita.300 @sf 35(Object-Oriented)m 19(Pr)m -1(ogram-)m 90 2306 p (ming)s 13(for)m 13(the)m 14(Macintosh)m t-rom.300 @sf 44 c 12(pages)m 15(83{270.)m 18(Hayden,)m 90 2356 p (Hasbrouck)s 14(Heights,)m 13(NJ,)m 14(1986.)m 0 2447 p ([12])s 20(Bjarne)m 14(Stroustrup.)m t-ita.300 @sf 17(The)m 14(C++)m 14(Pr)m -1(ogramming)m 13(Lan-)m 90 2497 p (guage)s t-rom.300 @sf 46 c 18(Addison-W)m -2(esley)m -3 r 44 c 12(Reading,)m 14(MA,)m 14(1986.)m 0 2588 p ([13])s 20(Bjarne)m 15(Stroustrup.)m 21(The)m 16(evolution)m 13(of)m 15(C++:)m 22(1985)m 90 2637 p (to)s 18(1987.)m 34(In)m t-ita.300 @sf 19(Pr)m -1(oceedings)m 19(of)m 18(the)m 19(USENIX)m 19(C++)m 90 2687 p 87 c -3(orkshop)m t-rom.300 @sf 44 c 10(pages)m 11(1{21,)m 11(Santa)m 11(Fe,)m 12(NM,)m 11(November)m 90 2737 p (1987.)s 1035 154 p ([14])s 20(I.E.)m 24(Sutherland.)m t-ita.300 @sf 46(Sketchpad:)m 36 r 65 c 24(Man-Machine)m 1125 203 p (Graphical)s 17(Communicati)m -1(on)m 16(System)m t-rom.300 @sf 46 c 31(PhD)m 18(thesis,)m 1125 253 p (MIT)s -2 r 44 c 13(1963.)m 1035 336 p ([15])s 20(Robert)m 13(L.)m 14 r 89 c -3(oung.)m 16(An)m 14(object-oriented)m 12(framework)m 1125 386 p (for)s 15(interactive)m 15(data)m 17(graphics.)m 24(In)m t-ita.300 @sf 16(ACM)m 15(OOPSLA)m 1125 436 p ('87)s 18(Confer)m -1(ence)m 19(Pr)m -1(oceedings)m t-rom.300 @sf 44 c 21(pages)m 19(78{90,)m 19(Or-)m 1125 486 p (lando,)s 13(FL,)m 15(October)m 14(1987.)m @eop @end ivtools-doc/mailinglists.html0000644000076500007650000000243607765162726017260 0ustar scottscott00000000000000 mailing lists for ivtools

    [ ] mailing lists for ivtools

    mailing lists for ivtools at sourceforge

    ivtools-announce, for new releases users developers ivtools-devel, for discussion of using and evolving the C++ frameworks developers ivtools-patch, patch history developers ivtools-user, for discussion of drawing editors and command interpreters users
    ivtools_button up to ivtools home page ivtools-doc/malloc.c0000644000076500007650000010302610340662416015263 0ustar scottscott00000000000000/* Copyright (C) 1989 Free Software Foundation written by Doug Lea (dl@oswego.edu) This file is part of the GNU C++ Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef NO_LIBGXX_MALLOC /* ignore whole file otherwise */ extern "C" { /* compile with -DMALLOC_STATS to collect statistics */ /* collecting statistics slows down malloc by at least 15% */ #ifdef MALLOC_STATS #define UPDATE_STATS(ARGS) {ARGS;} #else #define UPDATE_STATS(ARGS) #endif /* History Tue Jan 16 04:54:27 1990 Doug Lea (dl at g.oswego.edu) version 1 released in libg++ Sun Jan 21 05:52:47 1990 Doug Lea (dl at g.oswego.edu) bins are now own struct for, sanity. new victim search strategy: scan up and consolidate. Both faster and less fragmentation. refined when to scan bins for consolidation, via consollink, etc. realloc: always try to expand chunk, avoiding some fragmentation. changed a few inlines into macros hardwired SBRK_UNIT to 4096 for uniformity across systems Tue Mar 20 14:18:23 1990 Doug Lea (dl at g.oswego.edu) calloc and cfree now correctly parameterized. Sun Apr 1 10:00:48 1990 Doug Lea (dl at g.oswego.edu) added memalign and valloc. Sun Jun 24 05:46:48 1990 Doug Lea (dl at g.oswego.edu) #include gepagesize.h only ifndef sun cache pagesize after first call Wed Jul 25 08:35:19 1990 Doug Lea (dl at g.oswego.edu) No longer rely on a `designated victim': 1. It sometimes caused splits of large chunks when smaller ones would do, leading to bad worst-case fragmentation. 2. Scanning through the av array fast anyway, so the overhead isn't worth it. To compensate, several other minor changes: 1. Unusable chunks are checked for consolidation during searches inside bins, better distributing chunks across bins. 2. Chunks are returned when found in malloc_find_space, rather than finishing cleaning everything up, to avoid wasted iterations due to (1). Sun Dec 15 08:50:37 1991 Doug Lea (dl at g.oswego.edu) unsigned int => size_t */ /* A version of malloc/free/realloc tuned for C++ applications. Here's what you probably want to know first: In various tests, this appears to be about as fast as, and usually substantially less memory-wasteful than BSD/GNUemacs malloc. Generally, it is slower (by perhaps 20%) than bsd-style malloc only when bsd malloc would waste a great deal of space in fragmented blocks, which this malloc recovers; or when, by chance or design, nearly all requests are near the bsd malloc power-of-2 allocation bin boundaries, and as many chunks are used as are allocated. It uses more space than bsd malloc only when, again by chance or design, only bsdmalloc bin-sized requests are malloced, or when little dynamic space is malloced, since this malloc may grab larger chunks from the system at a time than bsd. In other words, this malloc seems generally superior to bsd except perhaps for programs that are specially tuned to deal with bsdmalloc's characteristics. But even here, the performance differences are slight. This malloc, like any other, is a compromised design. Chunks of memory are maintained using a `boundary tag' method as described in e.g., Knuth or Standish. This means that the size of the chunk is stored both in the front of the chunk and at the end. This makes consolidating fragmented chunks into bigger chunks very fast. The size field is also used to hold bits representing whether a chunk is free or in use. Malloced chunks have space overhead of 8 bytes: The preceding and trailing size fields. When they are freed, the list pointer fields are also needed. Available chunks are kept in doubly linked lists. The lists are maintained in an array of bins using a power-of-two method, except that instead of 32 bins (one for each 1 << i), there are 128: each power of two is split in quarters. The use of very fine bin sizes closely approximates the use of one bin per actually used size, without necessitating the overhead of locating such bins. It is especially desirable in common C++ applications where large numbers of identically-sized blocks are malloced/freed in some dynamic manner, and then later are all freed. The finer bin sizes make finding blocks fast, with little wasted overallocation. The consolidation methods ensure that once the collection of blocks is no longer useful, fragments are gathered into bigger chunks awaiting new roles. The bins av[i] serve as heads of the lists. Bins contain a dummy header for the chunk lists, and a `dirty' field used to indicate whether the list may need to be scanned for consolidation. On allocation, the bin corresponding to the request size is scanned, and if there is a chunk with size >= requested, it is split, if too big, and used. Chunks on the list which are too small are examined for consolidation during this traversal. If no chunk exists in the list bigger bins are scanned in search of a victim. If no victim can be found, then smaller bins are examined for consolidation in order to construct a victim. Finally, if consolidation fails to come up with a usable chunk, more space is obtained from the system. After a split, the remainder is placed on the back of the appropriate bin list. (All freed chunks are placed on fronts of lists. All remaindered or consolidated chunks are placed on the rear. Correspondingly, searching within a bin starts at the front, but finding victims is from the back. All of this approximates the effect of having 2 kinds of lists per bin: returned chunks vs unallocated chunks, but without the overhead of maintaining 2 lists.) Deallocation (free) consists only of placing the chunk on a list. Reallocation proceeds in the usual way. If a chunk can be extended, it is, else a malloc-copy-free sequence is taken. memalign requests more than enough space from malloc, finds a spot within that chunk that meets the alignment request, and then possibly frees the leading and trailing space. Overreliance on memalign is a sure way to fragment space. Some other implementation matters: 8 byte alignment is currently hardwired into the design. Calling memalign will return a chunk that is both 8-byte aligned, and meets the requested alignment. The basic overhead of a used chunk is 8 bytes: 4 at the front and 4 at the end. When a chunk is free, 8 additional bytes are needed for free list pointers. Thus, the minimum allocatable size is 16 bytes. The existence of front and back overhead permits some reasonably effective fence-bashing checks: The front and back fields must be identical. This is checked only within free() and realloc(). The checks are fast enough to be made non-optional. The overwriting of parts of freed memory with the freelist pointers can also be very effective (albeit in an annoying way) in helping users track down dangling pointers. User overwriting of freed space will often result in crashes within malloc or free. These routines are also tuned to C++ in that free(0) is a noop and a failed malloc automatically calls (*new_handler)(). malloc(0) returns a pointer to something of the minimum allocatable size. Additional memory is gathered from the system (via sbrk) in a way that allows chunks obtained across different sbrk calls to be consolidated, but does not require contiguous memory: Thus, it should be safe to intersperse mallocs with other sbrk calls. This malloc is NOT designed to work in multiprocessing applications. No semaphores or other concurrency control are provided to ensure that multiple malloc or free calls don't run at the same time, which could be disasterous. VERY heavy use of inlines is made, for clarity. If this malloc is ported via a compiler without inlining capabilities, all inlines should be transformed into macros -- making them non-inline makes malloc at least twice as slow. */ /* preliminaries */ #include /* for size_t */ #ifdef __cplusplus #include #else #include "//usr/include/stdio.h" /* needed for error reporting */ #endif #ifdef __cplusplus extern "C" { #endif #ifdef USG extern void* memset(void*, int, int); extern void* memcpy(void*, const void*, int); inline void bzero(void* s, int l) { memset(s, 0, l); } #else extern void bzero(void*, size_t ); #endif extern void bcopy(const void*, void*, size_t ); extern void* sbrk(size_t ); #ifdef __GNUC__ extern volatile void abort(); #else extern void abort(); #endif #ifdef __cplusplus }; /* end of extern "C" */ #endif /* A good multiple to call sbrk with */ #define SBRK_UNIT 4096 /* how to die on detected error */ #ifdef __GNUC__ static volatile void malloc_user_error() #else static void malloc_user_error() #endif { fputs("malloc/free/realloc: clobbered space detected\n", stderr); abort(); } /* Basic overhead for each malloc'ed chunk */ struct malloc_chunk { size_t size; /* Size in bytes, including overhead. */ /* Or'ed with INUSE if in use. */ struct malloc_chunk* fd; /* double links -- used only if free. */ struct malloc_chunk* bk; }; typedef struct malloc_chunk* mchunkptr; struct malloc_bin { struct malloc_chunk hd; /* dummy list header */ size_t dirty; /* True if maybe consolidatable */ /* Wasting a word here makes */ /* sizeof(bin) a power of 2, */ /* which makes size2bin() faster */ }; typedef struct malloc_bin* mbinptr; /* sizes, alignments */ #define SIZE_SZ (sizeof(size_t )) #define MALLOC_MIN_OVERHEAD (SIZE_SZ + SIZE_SZ) #define MALLOC_ALIGN_MASK (MALLOC_MIN_OVERHEAD - 1) #define MINSIZE (sizeof(struct malloc_chunk) + SIZE_SZ) /* MUST == 16! */ /* pad request bytes into a usable size */ static inline size_t request2size(size_t request) { return (request == 0) ? MINSIZE : ((request + MALLOC_MIN_OVERHEAD + MALLOC_ALIGN_MASK) & ~(MALLOC_ALIGN_MASK)); } static inline int aligned_OK(void* m) { return ((size_t )(m) & (MALLOC_ALIGN_MASK)) == 0; } /* size field or'd with INUSE when in use */ #define INUSE 0x1 /* the bins, initialized to have null double linked lists */ #define MAXBIN 120 /* 1 more than needed for 32 bit addresses */ #define FIRSTBIN (&(av[0])) static struct malloc_bin av[MAXBIN] = { { { 0, &(av[0].hd), &(av[0].hd) }, 0 }, { { 0, &(av[1].hd), &(av[1].hd) }, 0 }, { { 0, &(av[2].hd), &(av[2].hd) }, 0 }, { { 0, &(av[3].hd), &(av[3].hd) }, 0 }, { { 0, &(av[4].hd), &(av[4].hd) }, 0 }, { { 0, &(av[5].hd), &(av[5].hd) }, 0 }, { { 0, &(av[6].hd), &(av[6].hd) }, 0 }, { { 0, &(av[7].hd), &(av[7].hd) }, 0 }, { { 0, &(av[8].hd), &(av[8].hd) }, 0 }, { { 0, &(av[9].hd), &(av[9].hd) }, 0 }, { { 0, &(av[10].hd), &(av[10].hd) }, 0 }, { { 0, &(av[11].hd), &(av[11].hd) }, 0 }, { { 0, &(av[12].hd), &(av[12].hd) }, 0 }, { { 0, &(av[13].hd), &(av[13].hd) }, 0 }, { { 0, &(av[14].hd), &(av[14].hd) }, 0 }, { { 0, &(av[15].hd), &(av[15].hd) }, 0 }, { { 0, &(av[16].hd), &(av[16].hd) }, 0 }, { { 0, &(av[17].hd), &(av[17].hd) }, 0 }, { { 0, &(av[18].hd), &(av[18].hd) }, 0 }, { { 0, &(av[19].hd), &(av[19].hd) }, 0 }, { { 0, &(av[20].hd), &(av[20].hd) }, 0 }, { { 0, &(av[21].hd), &(av[21].hd) }, 0 }, { { 0, &(av[22].hd), &(av[22].hd) }, 0 }, { { 0, &(av[23].hd), &(av[23].hd) }, 0 }, { { 0, &(av[24].hd), &(av[24].hd) }, 0 }, { { 0, &(av[25].hd), &(av[25].hd) }, 0 }, { { 0, &(av[26].hd), &(av[26].hd) }, 0 }, { { 0, &(av[27].hd), &(av[27].hd) }, 0 }, { { 0, &(av[28].hd), &(av[28].hd) }, 0 }, { { 0, &(av[29].hd), &(av[29].hd) }, 0 }, { { 0, &(av[30].hd), &(av[30].hd) }, 0 }, { { 0, &(av[31].hd), &(av[31].hd) }, 0 }, { { 0, &(av[32].hd), &(av[32].hd) }, 0 }, { { 0, &(av[33].hd), &(av[33].hd) }, 0 }, { { 0, &(av[34].hd), &(av[34].hd) }, 0 }, { { 0, &(av[35].hd), &(av[35].hd) }, 0 }, { { 0, &(av[36].hd), &(av[36].hd) }, 0 }, { { 0, &(av[37].hd), &(av[37].hd) }, 0 }, { { 0, &(av[38].hd), &(av[38].hd) }, 0 }, { { 0, &(av[39].hd), &(av[39].hd) }, 0 }, { { 0, &(av[40].hd), &(av[40].hd) }, 0 }, { { 0, &(av[41].hd), &(av[41].hd) }, 0 }, { { 0, &(av[42].hd), &(av[42].hd) }, 0 }, { { 0, &(av[43].hd), &(av[43].hd) }, 0 }, { { 0, &(av[44].hd), &(av[44].hd) }, 0 }, { { 0, &(av[45].hd), &(av[45].hd) }, 0 }, { { 0, &(av[46].hd), &(av[46].hd) }, 0 }, { { 0, &(av[47].hd), &(av[47].hd) }, 0 }, { { 0, &(av[48].hd), &(av[48].hd) }, 0 }, { { 0, &(av[49].hd), &(av[49].hd) }, 0 }, { { 0, &(av[50].hd), &(av[50].hd) }, 0 }, { { 0, &(av[51].hd), &(av[51].hd) }, 0 }, { { 0, &(av[52].hd), &(av[52].hd) }, 0 }, { { 0, &(av[53].hd), &(av[53].hd) }, 0 }, { { 0, &(av[54].hd), &(av[54].hd) }, 0 }, { { 0, &(av[55].hd), &(av[55].hd) }, 0 }, { { 0, &(av[56].hd), &(av[56].hd) }, 0 }, { { 0, &(av[57].hd), &(av[57].hd) }, 0 }, { { 0, &(av[58].hd), &(av[58].hd) }, 0 }, { { 0, &(av[59].hd), &(av[59].hd) }, 0 }, { { 0, &(av[60].hd), &(av[60].hd) }, 0 }, { { 0, &(av[61].hd), &(av[61].hd) }, 0 }, { { 0, &(av[62].hd), &(av[62].hd) }, 0 }, { { 0, &(av[63].hd), &(av[63].hd) }, 0 }, { { 0, &(av[64].hd), &(av[64].hd) }, 0 }, { { 0, &(av[65].hd), &(av[65].hd) }, 0 }, { { 0, &(av[66].hd), &(av[66].hd) }, 0 }, { { 0, &(av[67].hd), &(av[67].hd) }, 0 }, { { 0, &(av[68].hd), &(av[68].hd) }, 0 }, { { 0, &(av[69].hd), &(av[69].hd) }, 0 }, { { 0, &(av[70].hd), &(av[70].hd) }, 0 }, { { 0, &(av[71].hd), &(av[71].hd) }, 0 }, { { 0, &(av[72].hd), &(av[72].hd) }, 0 }, { { 0, &(av[73].hd), &(av[73].hd) }, 0 }, { { 0, &(av[74].hd), &(av[74].hd) }, 0 }, { { 0, &(av[75].hd), &(av[75].hd) }, 0 }, { { 0, &(av[76].hd), &(av[76].hd) }, 0 }, { { 0, &(av[77].hd), &(av[77].hd) }, 0 }, { { 0, &(av[78].hd), &(av[78].hd) }, 0 }, { { 0, &(av[79].hd), &(av[79].hd) }, 0 }, { { 0, &(av[80].hd), &(av[80].hd) }, 0 }, { { 0, &(av[81].hd), &(av[81].hd) }, 0 }, { { 0, &(av[82].hd), &(av[82].hd) }, 0 }, { { 0, &(av[83].hd), &(av[83].hd) }, 0 }, { { 0, &(av[84].hd), &(av[84].hd) }, 0 }, { { 0, &(av[85].hd), &(av[85].hd) }, 0 }, { { 0, &(av[86].hd), &(av[86].hd) }, 0 }, { { 0, &(av[87].hd), &(av[87].hd) }, 0 }, { { 0, &(av[88].hd), &(av[88].hd) }, 0 }, { { 0, &(av[89].hd), &(av[89].hd) }, 0 }, { { 0, &(av[90].hd), &(av[90].hd) }, 0 }, { { 0, &(av[91].hd), &(av[91].hd) }, 0 }, { { 0, &(av[92].hd), &(av[92].hd) }, 0 }, { { 0, &(av[93].hd), &(av[93].hd) }, 0 }, { { 0, &(av[94].hd), &(av[94].hd) }, 0 }, { { 0, &(av[95].hd), &(av[95].hd) }, 0 }, { { 0, &(av[96].hd), &(av[96].hd) }, 0 }, { { 0, &(av[97].hd), &(av[97].hd) }, 0 }, { { 0, &(av[98].hd), &(av[98].hd) }, 0 }, { { 0, &(av[99].hd), &(av[99].hd) }, 0 }, { { 0, &(av[100].hd), &(av[100].hd) }, 0 }, { { 0, &(av[101].hd), &(av[101].hd) }, 0 }, { { 0, &(av[102].hd), &(av[102].hd) }, 0 }, { { 0, &(av[103].hd), &(av[103].hd) }, 0 }, { { 0, &(av[104].hd), &(av[104].hd) }, 0 }, { { 0, &(av[105].hd), &(av[105].hd) }, 0 }, { { 0, &(av[106].hd), &(av[106].hd) }, 0 }, { { 0, &(av[107].hd), &(av[107].hd) }, 0 }, { { 0, &(av[108].hd), &(av[108].hd) }, 0 }, { { 0, &(av[109].hd), &(av[109].hd) }, 0 }, { { 0, &(av[110].hd), &(av[110].hd) }, 0 }, { { 0, &(av[111].hd), &(av[111].hd) }, 0 }, { { 0, &(av[112].hd), &(av[112].hd) }, 0 }, { { 0, &(av[113].hd), &(av[113].hd) }, 0 }, { { 0, &(av[114].hd), &(av[114].hd) }, 0 }, { { 0, &(av[115].hd), &(av[115].hd) }, 0 }, { { 0, &(av[116].hd), &(av[116].hd) }, 0 }, { { 0, &(av[117].hd), &(av[117].hd) }, 0 }, { { 0, &(av[118].hd), &(av[118].hd) }, 0 }, { { 0, &(av[119].hd), &(av[119].hd) }, 0 } }; /* indexing into bins */ static inline mbinptr size2bin(size_t sz) { mbinptr b = av; while (sz >= (MINSIZE * 2)) { b += 4; sz >>= 1; } /* find power of 2 */ b += (sz - MINSIZE) >> 2; /* find quadrant */ return b; } /* counts maintained if MALLOC_STATS defined */ #ifdef MALLOC_STATS static size_t sbrked_mem; static size_t requested_mem; static size_t malloced_mem; static size_t freed_mem; static size_t max_used_mem; static size_t n_sbrks; static size_t n_mallocs; static size_t n_frees; static size_t n_reallocs; static size_t n_reallocs_with_copy; static size_t n_avail; static size_t max_inuse; static size_t n_malloc_chunks; static size_t n_malloc_bins; static size_t n_split; static size_t n_consol; static void do_malloc_stats(const mchunkptr p) { ++n_mallocs; if ((n_mallocs-n_frees) > max_inuse) max_inuse = n_mallocs - n_frees; malloced_mem += (p->size & ~(INUSE)); if (malloced_mem - freed_mem > max_used_mem) max_used_mem = malloced_mem - freed_mem; } static void do_free_stats(const mchunkptr p) { ++n_frees; freed_mem += (p->size & ~(INUSE)); } #endif /* Utilities needed below for memalign */ /* This is redundant with libg++ support, but not if used stand-alone */ static size_t gcd(size_t a, size_t b) { size_t tmp; if (b > a) { tmp = a; a = b; b = tmp; } for(;;) { if (b == 0) return a; else if (b == 1) return b; else { tmp = b; b = a % b; a = tmp; } } } static inline size_t lcm(size_t x, size_t y) { return x / gcd(x, y) * y; } /* maintaining INUSE via size field */ #define inuse(p) ((p)->size & INUSE) #define set_inuse(p) ((p)->size |= INUSE) #define clear_inuse(b) ((p)->size &= ~INUSE) /* operations on malloc_chunk addresses */ /* return ptr to next physical malloc_chunk */ #define next_chunk(p) ((mchunkptr)((char*)(p) + (p)->size)) /* return ptr to previous physical malloc_chunk */ #define prev_chunk(p) ((mchunkptr)((char*)(p)-((((int*)(p))[-1]) & ~(INUSE)))) /* place size at front and back of chunk */ static inline void set_size(mchunkptr p, size_t sz) { p->size = *((int*)((char*)(p) + sz - SIZE_SZ)) = sz; } /* conversion from malloc headers to user pointers, and back */ static inline void* chunk2mem(mchunkptr p) { set_inuse(p); return (void*)((char*)(p) + SIZE_SZ); } static inline mchunkptr mem2chunk(void* mem) { mchunkptr p = (mchunkptr)((char*)(mem) - SIZE_SZ); /* a quick sanity check */ size_t sz = p->size & ~(INUSE); if (p->size == sz || sz != *((int*)((char*)(p) + sz - SIZE_SZ))) malloc_user_error(); p->size = sz; /* clears INUSE */ return p; } /* maintaining bins & pointers */ /* maximum bin actually used */ static mbinptr malloc_maxbin = FIRSTBIN; /* operations on lists inside bins */ /* take a chunk off a list */ static inline void unlink(mchunkptr p) { mchunkptr b = p->bk; mchunkptr f = p->fd; f->bk = b; b->fd = f; UPDATE_STATS (--n_avail); } /* split a chunk and place on the back of a list */ static inline void split(mchunkptr p, size_t offset) { size_t room = p->size - offset; if (room >= MINSIZE) { mbinptr bn = size2bin(room); /* new bin */ mchunkptr h = &(bn->hd); /* its head */ mchunkptr b = h->bk; /* old back element */ mchunkptr t = (mchunkptr)((char*)(p) + offset); /* remaindered chunk */ /* set size */ t->size = *((int*)((char*)(t) + room - SIZE_SZ)) = room; /* link up */ t->bk = b; t->fd = h; h->bk = b->fd = t; /* adjust maxbin (h == b means was empty) */ if (h == b && bn > malloc_maxbin) malloc_maxbin = bn; /* adjust size of chunk to be returned */ p->size = *((int*)((char*)(p) + offset - SIZE_SZ)) = offset; UPDATE_STATS ((++n_split, ++n_avail)); } } /* place a consolidated chunk on the back of a list */ /* like above, except no split */ static inline void consollink(mchunkptr p) { mbinptr bn = size2bin(p->size); mchunkptr h = &(bn->hd); mchunkptr b = h->bk; p->bk = b; p->fd = h; h->bk = b->fd = p; if (h == b && bn > malloc_maxbin) malloc_maxbin = bn; UPDATE_STATS(++n_avail); } /* place a freed chunk on the front of a list */ static inline void frontlink(mchunkptr p) { mbinptr bn = size2bin(p->size); mchunkptr h = &(bn->hd); mchunkptr f = h->fd; p->bk = h; p->fd = f; f->bk = h->fd = p; if (h == f && bn > malloc_maxbin) malloc_maxbin = bn; bn->dirty = 1; UPDATE_STATS(++n_avail); } /* Dealing with sbrk */ /* To link consecutive sbrk regions when possible */ static int* last_sbrk_end; /* who to call when sbrk returns failure */ #ifndef NO_NEW_HANDLER typedef volatile void (*vfp)(); #ifdef __cplusplus extern "C" vfp __new_handler; #else extern vfp __new_handler; #endif #endif static mchunkptr malloc_from_sys(unsigned nb) { mchunkptr p; size_t sbrk_size; int* ip; /* Minimally, we need to pad with enough space */ /* to place dummy size/use fields to ends if needed */ sbrk_size = ((nb + SBRK_UNIT - 1 + SIZE_SZ + SIZE_SZ) / SBRK_UNIT) * SBRK_UNIT; ip = (int*)(sbrk(sbrk_size)); if ((char*)ip == (char*)(-1)) /* sbrk returns -1 on failure */ { #ifndef NO_NEW_HANDLER (*__new_handler) (); #endif return 0; } UPDATE_STATS ((++n_sbrks, sbrked_mem += sbrk_size)); if (last_sbrk_end != &ip[-1]) { /* It's either first time through or someone else called sbrk. */ /* Arrange end-markers at front & back */ /* Shouldn't be necessary, but better to be safe */ while (!aligned_OK(ip)) { ++ip; sbrk_size -= SIZE_SZ; } /* Mark the front as in use to prevent merging. */ /* Note we can get away with only 1 word, not MINSIZE overhead here */ *ip++ = SIZE_SZ | INUSE; p = (mchunkptr)ip; set_size(p,sbrk_size - (SIZE_SZ + SIZE_SZ)); } else { mchunkptr l; /* We can safely make the header start at end of prev sbrked chunk. */ /* We will still have space left at the end from a previous call */ /* to place the end marker, below */ p = (mchunkptr)(last_sbrk_end); set_size(p, sbrk_size); /* Even better, maybe we can merge with last fragment: */ l = prev_chunk(p); if (!inuse(l)) { unlink(l); set_size(l, p->size + l->size); p = l; } } /* mark the end of sbrked space as in use to prevent merging */ last_sbrk_end = (int*)((char*)p + p->size); *last_sbrk_end = SIZE_SZ | INUSE; UPDATE_STATS((++n_avail, ++n_malloc_chunks)); /* make it safe to unlink in malloc */ UPDATE_STATS(++n_avail); p->fd = p->bk = p; return p; } /* Consolidate dirty bins. */ /* Stop if found a chunk big enough to satisfy current malloc request */ /* (It requires much less bookkeeping to consolidate entire bins */ /* at once than to keep records of which chunks might be */ /* consolidatable. So long as the lists are short, which we */ /* try to ensure via small bin ranges, there is little wasted effort.) */ static mchunkptr malloc_find_space(size_t nb) { mbinptr b; /* first, re-adjust max used bin */ while (malloc_maxbin >= FIRSTBIN && malloc_maxbin->hd.bk == &(malloc_maxbin->hd)) { malloc_maxbin->dirty = 0; --malloc_maxbin; } for (b = malloc_maxbin; b >= FIRSTBIN; --b) { UPDATE_STATS(++n_malloc_bins); if (b->dirty) { mchunkptr h = &(b->hd); /* head of list */ mchunkptr p = h->fd; /* chunk traverser */ while (p != h) { mchunkptr nextp = p->fd; /* save, in case of relinks */ int consolidated = 0; /* only unlink/relink if consolidated */ mchunkptr t; UPDATE_STATS(++n_malloc_chunks); while (!inuse(t = prev_chunk(p))) /* consolidate backward */ { if (!consolidated) { consolidated = 1; unlink(p); } if (t == nextp) nextp = t->fd; unlink(t); set_size(t, t->size + p->size); p = t; UPDATE_STATS (++n_consol); } while (!inuse(t = next_chunk(p))) /* consolidate forward */ { if (!consolidated) { consolidated = 1; unlink(p); } if (t == nextp) nextp = t->fd; unlink(t); set_size(p, p->size + t->size); UPDATE_STATS (++n_consol); } if (consolidated) { if (p->size >= nb) { /* make it safe to unlink in malloc */ UPDATE_STATS(++n_avail); p->fd = p->bk = p; return p; } else consollink(p); } p = nextp; } b->dirty = 0; } } /* nothing available - sbrk some more */ return malloc_from_sys(nb); } /* Finally, the user-level functions */ void* malloc(size_t bytes) { size_t nb = request2size(bytes); /* padded request size */ mbinptr b = size2bin(nb); /* corresponding bin */ mchunkptr hd = &(b->hd); /* head of its list */ mchunkptr p = hd->fd; /* chunk traverser */ UPDATE_STATS((requested_mem+=bytes, ++n_malloc_bins)); /* Try a (near) exact match in own bin */ /* clean out unusable but consolidatable chunks in bin while traversing */ while (p != hd) { UPDATE_STATS(++n_malloc_chunks); if (p->size >= nb) goto found; else /* try to consolidate; same code as malloc_find_space */ { mchunkptr nextp = p->fd; /* save, in case of relinks */ int consolidated = 0; /* only unlink/relink if consolidated */ mchunkptr t; while (!inuse(t = prev_chunk(p))) /* consolidate backward */ { if (!consolidated) { consolidated = 1; unlink(p); } if (t == nextp) nextp = t->fd; unlink(t); set_size(t, t->size + p->size); p = t; UPDATE_STATS (++n_consol); } while (!inuse(t = next_chunk(p))) /* consolidate forward */ { if (!consolidated) { consolidated = 1; unlink(p); } if (t == nextp) nextp = t->fd; unlink(t); set_size(p, p->size + t->size); UPDATE_STATS (++n_consol); } if (consolidated) { if (p->size >= nb) { /* make it safe to unlink again below */ UPDATE_STATS(++n_avail); p->fd = p->bk = p; goto found; } else consollink(p); } p = nextp; } } b->dirty = 0; /* true if got here */ /* Scan bigger bins for a victim */ while (++b <= malloc_maxbin) { UPDATE_STATS(++n_malloc_bins); if ((p = b->hd.bk) != &(b->hd)) /* no need to check size */ goto found; } /* Consolidate or sbrk */ p = malloc_find_space(nb); if (p == 0) return 0; /* allocation failure */ found: /* Use what we found */ unlink(p); split(p, nb); UPDATE_STATS(do_malloc_stats(p)); return chunk2mem(p); } void free(void* mem) { if (mem != 0) { mchunkptr p = mem2chunk(mem); UPDATE_STATS(do_free_stats(p)); frontlink(p); } } void* calloc(size_t n, size_t elem_size) { size_t sz = n * elem_size; void* p = malloc(sz); bzero(p, sz); return p; }; /* This is here for compatibility with older systems */ void cfree(void *mem) { free(mem); } size_t malloc_usable_size(void* mem) { if (mem == 0) return 0; else { mchunkptr p = (mchunkptr)((char*)(mem) - SIZE_SZ); size_t sz = p->size & ~(INUSE); if (p->size == sz || sz != *((int*)((char*)(p) + sz - SIZE_SZ))) return 0; else return sz - MALLOC_MIN_OVERHEAD; } } void* realloc(void* mem, size_t bytes) { if (mem == 0) return malloc(bytes); else { size_t nb = request2size(bytes); mchunkptr p = mem2chunk(mem); size_t oldsize = p->size; int room; mchunkptr nxt; UPDATE_STATS((++n_reallocs, requested_mem += bytes-oldsize)); /* try to expand (even if already big enough), to clean up chunk */ while (!inuse(nxt = next_chunk(p))) { UPDATE_STATS ((malloced_mem += nxt->size, ++n_consol)); unlink(nxt); set_size(p, p->size + nxt->size); } room = p->size - nb; if (room >= 0) { split(p, nb); UPDATE_STATS(malloced_mem -= room); return chunk2mem(p); } else /* do the obvious */ { void* newmem; set_inuse(p); /* don't let malloc consolidate us yet! */ newmem = malloc(nb); bcopy(mem, newmem, oldsize - SIZE_SZ); free(mem); UPDATE_STATS(++n_reallocs_with_copy); return newmem; } } } /* return a pointer to space with at least the alignment requested */ void* memalign(size_t alignment, size_t bytes) { mchunkptr p; size_t nb = request2size(bytes); /* find an alignment that both we and the user can live with: */ /* least common multiple guarantees mutual happiness */ size_t align = lcm(alignment, MALLOC_MIN_OVERHEAD); size_t mask = align - 1; /* call malloc with worst case padding to hit alignment; */ /* we will give back extra */ size_t req = nb + align + MINSIZE; void* m = malloc(req); if (m == 0) return m; p = mem2chunk(m); /* keep statistics on track */ UPDATE_STATS(--n_mallocs); UPDATE_STATS(malloced_mem -= p->size); UPDATE_STATS(requested_mem -= req); UPDATE_STATS(requested_mem += bytes); if (((int)(m) & (mask)) != 0) /* misaligned */ { /* find an aligned spot inside chunk */ mchunkptr ap = (mchunkptr)(( ((int)(m) + mask) & -align) - SIZE_SZ); size_t gap = (size_t )(ap) - (size_t )(p); size_t room; /* we need to give back leading space in a chunk of at least MINSIZE */ if (gap < MINSIZE) { /* This works since align >= MINSIZE */ /* and we've malloc'd enough total room */ ap = (mchunkptr)( (int)(ap) + align ); gap += align; } if (gap + nb > p->size) /* can't happen unless chunk sizes corrupted */ malloc_user_error(); room = p->size - gap; /* give back leader */ set_size(p, gap); consollink(p); /* use the rest */ p = ap; set_size(p, room); } /* also give back spare room at the end */ split(p, nb); UPDATE_STATS(do_malloc_stats(p)); return chunk2mem(p); } #if 0 #ifndef sun #include #endif #else int getpagesize(void); #endif static size_t malloc_pagesize = 0; void* valloc(size_t bytes) { if (malloc_pagesize == 0) malloc_pagesize = getpagesize(); return memalign (malloc_pagesize, bytes); } void malloc_stats() { #ifndef MALLOC_STATS } #else int i; mchunkptr p; double nm = (double)(n_mallocs + n_reallocs); fprintf(stderr, "\nmalloc statistics\n\n"); if (n_mallocs != 0) fprintf(stderr, "requests = %10u total size = %10u\tave = %10u\n", n_mallocs, requested_mem, requested_mem/n_mallocs); if (n_mallocs != 0) fprintf(stderr, "mallocs = %10u total size = %10u\tave = %10u\n", n_mallocs, malloced_mem, malloced_mem/n_mallocs); if (n_frees != 0) fprintf(stderr, "frees = %10u total size = %10u\tave = %10u\n", n_frees, freed_mem, freed_mem/n_frees); if (n_mallocs-n_frees != 0) fprintf(stderr, "in use = %10u total size = %10u\tave = %10u\n", n_mallocs-n_frees, malloced_mem-freed_mem, (malloced_mem-freed_mem) / (n_mallocs-n_frees)); if (max_inuse != 0) fprintf(stderr, "max in use= %10u total size = %10u\tave = %10u\n", max_inuse, max_used_mem, max_used_mem / max_inuse); if (n_avail != 0) fprintf(stderr, "available = %10u total size = %10u\tave = %10u\n", n_avail, sbrked_mem - (malloced_mem-freed_mem), (sbrked_mem - (malloced_mem-freed_mem)) / n_avail); if (n_sbrks != 0) fprintf(stderr, "sbrks = %10u total size = %10u\tave = %10u\n\n", n_sbrks, sbrked_mem, sbrked_mem/ n_sbrks); if (n_reallocs != 0) fprintf(stderr, "reallocs = %10u with copy = %10u\n\n", n_reallocs, n_reallocs_with_copy); if (nm != 0) { fprintf(stderr, "chunks scanned per malloc = %6.3f\n", n_malloc_chunks / nm); fprintf(stderr, "bins scanned per malloc = %6.3f\n", n_malloc_bins / nm); fprintf(stderr, "splits per malloc = %6.3f\n", n_split / nm); fprintf(stderr, "consolidations per malloc = %6.3f\n", n_consol / nm); } fprintf(stderr, "\nfree chunks:\n"); for (i = 0; i < MAXBIN; ++i) { p = av[i].hd.fd; if (p != &(av[i].hd)) { size_t count = 1; size_t sz = p->size; for (p = p->fd; p != &(av[i].hd); p = p->fd) { if (p->size == sz) ++count; else { fprintf(stderr, "\tsize = %10u count = %5u\n", sz, count); count = 1; sz = p->size; } } fprintf(stderr, "\tsize = %10u count = %5u\n", sz, count); } } } #endif /* MALLOC_STATS */ } #endif /* NO_LIBGXX_MALLOC */ ivtools-doc/manifest.gif0000644000076500007650000000041707374262633016157 0ustar scottscott00000000000000GIF89a<!7Image generated by Aladdin Ghostscript (device=ppmraw) ,<‰Ni$pYyj؍YŠᴺns٫Ȅ""y2ZesfԚ.}x/j5.Qos};'VD8Ո2yxA9h&*:Yu I[:X˺g:#w%x[c# P;ivtools-doc/meter-main.gif0000644000076500007650000000263107374262633016407 0ustar scottscott00000000000000GIF87arrr},0I8뽋`(dihl뾬Rtmx|pH,2rl:P!20Zج8nxٸƵo[<78Wi>wj5;zJuonya}:sBtM7hZykʼAŴNqriv垤om)L+9wن<80XHeD8dz8đ*~FQ<+g$J^3Ǚ7/cHL=2dS+CRLIiUΎ" Hi K%Q'4VTȝKWǺxe߿k L0+(Cǐ#KL˘3k̹ϛ9MӨEXͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˷*8_Z}x_u8Z_1( l:(F!f pሸaᄺۇhTآƈ`X"ءA(DrHNv袀Fie,Q&i\FVdإM#.r)ɩ&e©VzRfCYr`$f*ߙ{޹ʘ埔礿%aȡMc8_飨E$:߭뮼+k&6F+Vkmt6~nX"<^2m>m&&)/uﲛ)/Zd[9ZG;Cj(9B,[1ƘAIqsn 2kXq&L/+;z ݦ(3 p# Ȃ<"AӪj5KvJ. Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZkX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (;ivtools-doc/meter-popup.gif0000644000076500007650000000505607374262634016633 0ustar scottscott00000000000000GIF87a:::UUUrrr,H0I8ͻ`(dihlp,tmx|pH,Ȥrl:Шt,vݖX/U؍xuc6 O3Yyljzve ]`Wua{`ato{tlzxvl sgk~wfwš˿bhU˔ͷڔpgfH*\ȰÇ#JHŋ3jч Cɓ(Hɲ0cʜIf5sּCΟ2yAPD9]YQM>tҞQNUUn5We1XNmUxwܴrKOd 'p͏uUad2.<9PC3ә_\; Wl. 6h֢6je${0I36yOboϑW^ַS?_w_|Ep0`&~8&gM|U78%h#x' !gI8v/XٵW{ !-h?(X17)]f!":cY 7GI!%19܈f~fja}z省*&袉ҩxQI\Jy)) *娝z%'ff(fn5in*Ykzkv,~,>P+*m:p d(hφ9nXf˞-m*kopvJ'JʫZ, 2 #o Z,vqʪL,_w1۷rW6rLk#ۯ?O3l͠0*GwɴqNWmtCu6L2O2Oi8` r9ݤB h纤}p x+c}hm&c^foIWLxI7k6‘3ζz;mM?wbߎnui_3ajCK/Sen~#Ӟyc/]ԽNd?|rCx7ςàbvp$4N}"aPH>IsXx7 φ@}b7!Q$bSDVPyE14exD)ЇUx9,.[bXC(NaB5E9`-яudcB;PADdH:3ѐecL=JБ%$4=d(WCE.Rse#%yBSэ$e9!7 GZֲJe uK/&mfN63d4A 1LlM7YIrLd:O)G3YNs=Kd'(sdrjŞ|I˅QGV1̏RX Vg`dirname $3`/`basename $x .ppm`.gif done echo "** merging images into multi-frame gif89a **" bash -c "gifmerge -l0 -25 $3-??.gif >$3.gif" echo "** loading multi-frame gif89a into xanim **" xanim $3.gif & echo "** removing intermediate ppmraw and gif images **" rm $3-??.gif $3-??.ppm ivtools-doc/mkgif89ac.bash0000644000076500007650000000141107374262634016277 0ustar scottscott00000000000000#!/bin/bash # $1 scale # $2 rotation # $3 width of clipping rectangle # $4 height of clipping rectangle # $5 hundreds of a second between frames # $6 postscript file echo "** rendering ppmraw images with Ghostscript **" cat $6 | gs -g$3x$4 -sDEVICE=ppmraw -sOutputFile=$6-%02d.ppm -dNOPAUSE - echo "** converting images from ppmraw to gif **" for x in $6-??.ppm do echo writing `dirname $6`/`basename $x .ppm`.gif pnmscale -xscale $1 -yscale $1 $x | pnmrotate $2 | ppmquant 256 | ppmtogif >`dirname $6`/`basename $x .ppm`.gif done echo "** merging images into multi-frame gif89a **" bash -c "gifmerge -l0 -$5 $6-??.gif >$6.gif" echo "** loading multi-frame gif89a into xanim **" xanim $6.gif & echo "** removing intermediate ppmraw and gif images **" rm $6-??.gif $6-??.ppm ivtools-doc/mxvlogo.gif0000644000076500007650000000125707374262634016050 0ustar scottscott00000000000000GIF87aft,ft֙żw b敦2TJJY#$\3pf4+^K*G*R)]0JDokr[5guŏw}G&FHcx(XRth(CY9h T:1)j:4ۺaEK[+{˻[k;I zL+= mݭL-^mxގ~ ~_8g߆߉,YF0!E*|<"Z4pb[ Ө!EvZvJeʗO B ` 瑧Py94)ʣa Z*(֭\z 6رd˚=6ڵlۺ} 7\1b]VZ[Exa.q<ct!yf}gI·Od8r~ϧ}:}^{4&o j0OAXmUZe$aa^FaQ%H?5"&"+! ~Տ@vx!G2 ^ )RT8qڍvIfffjfl;ivtools-doc/netdraw.html0000644000076500007650000000010107374262634016203 0ustar scottscott00000000000000netdraw has been renamed graphdraw. ivtools-doc/newfunc.cc0000644000076500007650000000533107374262634015637 0ustar scottscott00000000000000/* * Copyright (c) 1998 Vectaport Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the names of the copyright holders not be used in * advertising or publicity pertaining to distribution of the software * without specific, written prior permission. The copyright holders make * no representations about the suitability of this software for any purpose. * It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ #include "newfunc.h" #include #include NewFunc::NewFunc(ComTerp* comterp) : ComFunc(comterp) { } void NewFunc::execute() { /* ----- ARGUMENT PROCESSING ----- */ // get id for keyword symbol(s) from symbol table for ::stack_key() // static declaraction makes it happen only once static int key1_symid = symbol_add("key1"); // retrieve fixed arguments from the interpreter stack ComValue string1(stack_arg(0)); ComValue string2(stack_arg(1)); // retrieve keyword arguments from the interpreter stack // will default to 1 if :key1 is provided without subsequent value ComValue key1(stack_key(key1_symid)); // reset the stack to remove all the operands associated with this func // this deconstructs the ComValue's on the stack reset_stack(); /* ----- FUNCTION BODY ----- */ // use ComValue access methods and type testing methods // (defined in Attribute/attrvalue.h) to retrieve type-specific data if (string1.is_string()) cerr << "the first argument: " << string1.string_ptr() << "\n"; else cerr << "the first argument is not a string: " << string1 << "\n"; if (string2.is_string()) cerr << "the second argument: " << string2.string_ptr() << "\n"; else cerr << "the second argument is not a string: " << string2 << "\n"; cerr << "the first keyword: " << key1 << "\n"; /* ----- RETURN VALUE ----- */ // create a ComValue initialized with the return value, // and push it on the stack ComValue retval(string2); push_stack(retval); return; } ivtools-doc/othertools.html0000644000076500007650000001112007374262634016744 0ustar scottscott00000000000000 tools that work together with ivtools drawing editors

    tools that work together with ivtools drawing editors

    This is a list of tools we've tried that work together with ivtools drawing editors:


    from the import dialog box

  • djpeg from the Independent JPEG Group -- for converting JPEG to PNM
  • plotutils -- generates line and scatter plots in idraw format
  • pstoedit -- converts arbitrary PostScript and PDF to idraw format
  • plotmtv -- generates PostScript bar plots
  • pbmplus (netpbm) -- set of command-line filters for image processing
  • xfig2idraw, tgif2idraw -- Perl scripts for converting from xfig and tgif formats. (alternate copy)
  • xpdf (pdftops) -- be sure to specify "-" as second argument.
  • ralcgm -- convert CGM, or Computer Graphics Metafiles, to PostScript.
  • At present (ivtools-0.7.10), many of the above generate PostScript that requires further processing by manually adding " | pstoedit -f idraw" to the import command line. Although the import should work without this, it doesn't.

    Bring up the import dialog box with "Import Graphic" under the File menu (or Ctrl-I), then click on the "from command" checkbox and enter a command to generate an importable graphic file. For example "pdftops test.pdf -" would convert a PDF file to PostScript, which can then be read by the drawing editor (if pstoedit can be found, which is relied on for converting from regular PostScript to idraw PostScript.)


    from the export dialog box
  • ghostscript -- PostScript renderer to printers, rasters, and windows
  • ghostview -- X11 viewer for ghostscriptr
  • mkgif89a, mkgif89ac -- bash scripts for generating gif89a from ivtools flipbook
  • pstoepsi, ps2epsi -- convert idraw format to Encapsulated PostScript
  • pstoedit -- convert to tgif, xfig, pdf, FrameMaker, gnuplot, DXF, etc..
  • xv is capable of reading idraw PostScript via ghostscript.
  • Bring up the export dialog box with "Export Graphic" under the File menu (or Ctrl-X). Something must be selected in the drawing editor for it to work. Click on the "to command" checkbox and enter a command to accept a temporary output file, either as a pathname argument to replace a "%s" in the command string, or appended as the last argument on the invoked command line.

    For example, "ghostview %s" and "ghostview" both work when the idraw format radiobutton is pressed, and "drawtool %s" and "drawtool" both work when ivtools drawtool format is selected. The "%s" is more useful when embedding the pathname in the middle of a command line, i.e.

      cat %s >/dev/lp1.


    via the import service -- if built with ACE
  • ivgetjpg -- for downloading and exporting JPEG images using the w3c command line utility and djpeg. Distributed with ivtools.
  • comterp telcat -- utility for exporting graphics files to drawing editors.

  • separate binary used by optional tools and commands
  • qhull -- generates convex hulls

  • up to ivtools home page

    ivtools-doc/ov-idraw.html0000644000076500007650000000046307512656157016303 0ustar scottscott00000000000000 ivtools ov-idraw MIME type

    ivtools ov-idraw MIME type

    application/ov-idraw is a MIME type for files readable by ivtools drawtool.


    ivtools-doc/ovinfo.html0000644000076500007650000002433210340662416016040 0ustar scottscott00000000000000 OverlayUnidraw

    OverlayUnidraw

    example application

    OverlayUnidraw is a library that extends the Unidraw framework in several ways -- double-buffered rendering, a spatial object save/restore mechanism (with attributes), improved export/import, multiple-views with optional pan/zoom chaining, fixed size graphics, etc..

    OverlayComp extends the GraphicComp class of Unidraw with extra mechanisms for serialization and graphics rendering.

    Here is a list of the more important derived classes and what they do:

    overall framework objects

    generic graphic objects

    specific graphic objects

    specific graphic objects with arrowheads

    tools and dialog boxes

    viewer commands

    graphic commands

    back to ivtools technical info

    ivtools-doc/patch-installprob-0.5.8.txt0000644000076500007650000000214007374262634020513 0ustar scottscott00000000000000- fix problem with symbolic links in ivtools-0.5/lib/LINUX for a "make install" with InstallRelative set to YES. Requires a "make Makefiles" after applying. Also you'll want to delete the lib and bin directories before doing a "make install". Index: config_ivtools/site.def.LINUX diff -c config_ivtools/site.def.LINUX:1.2 config_ivtools/site.def.LINUX:1.3 *** config_ivtools/site.def.LINUX:1.2 Fri Oct 3 16:56:24 1997 --- config/site.def.LINUX Wed Oct 15 11:11:24 1997 *************** *** 33,39 **** MakeDir(dest) @@\ $(INSTALL) -c $(INSTLIBFLAGS) Concat(lib,libname.so.rev) dest @@\ -@if [ -f dest/Concat(lib,libname.so) ]; then exit 0; else \ @@\ ! $(LN) dest/Concat(lib,libname.so.rev) dest/Concat(lib,libname.so); fi #endif /* --- 33,40 ---- MakeDir(dest) @@\ $(INSTALL) -c $(INSTLIBFLAGS) Concat(lib,libname.so.rev) dest @@\ -@if [ -f dest/Concat(lib,libname.so) ]; then exit 0; else \ @@\ ! pushd dest; \ @@\ ! $(LN) Concat(lib,libname.so.rev) Concat(lib,libname.so); popd; fi #endif /* ivtools-doc/pbmplus.html0000644000076500007650000000364307374262634016237 0ustar scottscott00000000000000 import from pbmplus image processing filters to ivtools

    import from pbmplus image processing filters to ivtools

    pbmplus is a collection of image processing filters written by Jef Poskanzer. It supports three image formats: pbm (portable bitmap), pgm (portable graymap), and ppm (portable pixmap) with an ASCII and binary variant of each.

    netpbm-mar1994 was a subsequent distribution of the same free software augmented by contributed filters and formats. netpbm-1mar1994-free.tar.gz (from a Red Hat source RPM) is a subset of this distribution where the only contribution with an unworkable license (hpcdtoppm.c) was removed.

    ivtools drawing editors support the import of all six pbmplus formats (pgm/pgm/ppm in ASCII and binary). The pathname of these image files can be entered directly into the string editor of the import dialog box, or if the "from command" checkbox is set, an arbitrary command line can be entered that generates a pbmplus image format.

    A wider variety of raster formats is supported by use of the "anytopnm" script, of which a modified and improved copy is incorporated directly into ivtools.

    Linux binaries for netbpm and pbmplus available from sunsite.unc.edu and other Linux distributions.

    A revived version of the Netpbm repackaging of pbmplus can be found at http://sourceforge.net/projects/netpbm/

    up to ivtools add-ons   up to ivtools ivtools-doc/plotmtv.html0000644000076500007650000000137107374262634016256 0ustar scottscott00000000000000 use plotmtv to generate bar plots in idraw format PostScript

    use plotmtv to generate bar plots in idraw format PostScript

    plotmtv is part of the X contrib, available at ftp://ftp.x.org/contrib/applications/Plotmtv1.4.1.tar.Z local-copy

    It is used by the barplot command of comdraw. This use of it requires pstoedit as well.

    up to ivtools add-ons   up to ivtools ivtools-doc/plotutils.html0000644000076500007650000000172007374262634016606 0ustar scottscott00000000000000 use plotutils to generate line and scatter plots in idraw format PostScript

    use plotutils to generate line and scatter plots in idraw format PostScript

    plotutils is put out by the GNU project, available through http://www.gnu.org/software/plotutils/plotutils.html. local-copy

    "graph -T ps" can be used to generate output in idraw-compatible postcript, which can be imported into any ivtools drawing editor, via the import dialog box or use of the "telcat" mode on comterp.

    up to ivtools add-ons   up to ivtools ivtools-doc/pstoedit.2.60.README.txt0000644000076500007650000001456707374262634017612 0ustar scottscott00000000000000PSTOEDIT Copyright (C) 1993,1994,1995,1996,1997 Wolfgang Glunz, Wolfgang.Glunz@mchp.siem ens.de pstoedit converts Postscript(TM) and PDF files to other vector graphic formats so that they can be edited graphically. See pstoedit.man or manual.html for more details on which formats are supported by pstoedit. The architecture of pstoedit consists of a PostScript frontend which needs to call a PostScript interpreter like Ghostscript and the individual backends which are pugged into a kind of framework. This framework can be used independently from the PostScript frontend from any other program. The framework provides a uniform interface to all different backends. Get in contact with the author if you need more information on how to use this framework. If you just find this program useful, have made some improvements or implemented other backends please send email to Wolfgang.Glunz@mchp.siemens.de. If this programs saves you a lot of work consider sending a contribution of any kind. If you include this program on a CDROM, please send me a copy of the CD, or if it goes with a book, of the book. My home address is: Dr. Wolfgang Glunz 81825 Muenchen / Germany Josef Brueckl Str. 32 Installing pstoedit: -------------------- You need a C++ compiler, e.g., g++ to compile pstoedit. * cd to src * edit the makefile - change BINDIR and MANDIR according to your local environment - Uncomment the platform specific flags corresponding to your platform. - if you want to include the CGM driver, you must have a copy of the cd-library from Here is how to get cd (quoted from an article of the author of cd). Documentation for cd is included with the package, and is available from http://speckle.ncsl.nist.gov/~lorax/cgm/cd.html This distribution may be retrieved via ftp from zing.ncsl.nist.gov in the directory "cgm" It will have the name cd followed by the version number. The current version is 1.3 and is at: ftp://zing.ncsl.nist.gov/cgm/cd1.3.tar.gz After getting cd, uncomment the lines following lines in the makefile #CDDIR=../cd1.3 #LOCALDEFINES=-I$(CDDIR) -DWITHCGM #LOCALDRIVERS=drvcgm.$(OBJEXT) cdlib.$(OBJEXT) Note: You don't need to build the cd-library separately. * type: make clean; make; make install; (for *nix like systems) nmake /f makefile (in a DOS box) There are several test cases included. To run them type `make test'. This works under *nix only. If you want a GUI and have Borland C++ you can build one using the sources provided in the src/bc5gui directory. See src/bc5gui/readme.txt for more details. Many thanks to Jens Weber for this contribution. pstoedit and the -dSAFER option of Ghostscript: ----------------------------------------------- GhostScript provides an option -dSAFER that disables all file access functions of PostScript. Some administrators even install a wrapper like to following instead of ghostscript directly #!/bin/sh gs.real -dSAFER $* So when a user uses gs he/she actually runs this script. However, pstoedit needs to have access to files for it's operation. So it is not possible to use this wrapper for gs in combination with pstoedit. You would get an error message like "Error: /invalidfileaccess in (w)". As an alternative the following can be done: 1. Install the binary of pstoedit as pstoedit.real 2. Create the following wrapper and name it pstoedit #!/bin/sh GS=gs.real export GS pstoedit.real -include /??????/local/safer.ps $* A template for safer.ps can be found in the src subdirectory. This way pstoedit can open all the file it needs (the input file and an output file). After that then -- via the included file -- all files operations are disabled and the input file is processed. Any file operation that is executed be the user's PostScript file is disabled this way. Using pstoedit: --------------- Before you can use pstoedit you must have a working installation of GhostScript (either GNU or Aladdin). The rest is descibed in the manual page in src/pstoedit.man or src/manual.html. pstoedit works reasonable with PostScript files containing * line drawings * text with standard fonts Try to run it on golfer.ps or tiger.ps that comes with ghostscript, e.g., pstoedit -f /examples/ tiger.ps tiger. In particular pstoedit does not support * bitmap images * general fill patterns * clipping * ... Special note about the Java backend: ------------------------------------ The java backend generates a java source file that needs other files in order to be compiled and usable. These files are not part of pstoedit but can be obtained from the author. These other files are Java classes (one applet and support classes) that allow to step through the individual pages of the converted PostScript document. This applet can easily be activated from a html-document. Extending pstoedit: ------------------- To implement a new backend you can start from drvsampl.cc. Please don't forget to send any new backend that might be of interest for others as well to the author (Wolfgang.Glunz@mchp.siemens.de) so that it can be incorporated into future versions of pstoedit. Acknowledgements: ----------------- See manual page in src/pstoedit.man or src/manual.html for a list of contributo rs. License: -------- This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ---------------------------------------------------------------------------- The cgm backend within pstoedit is based on the cd-library available from http://speckle.ncsl.nist.gov/~lorax/cgm/cd.html . The source contains the following copyright notice: cd software produced by NIST, an agency of the U.S. government, is by statute not subject to copyright in the United States. Recipients of this software assume all responsibilities associated with its operation, modification and maintenance. ivtools-doc/pstoedit.2.60.idraw.patch0000644000076500007650000000134707374262634020233 0ustar scottscott00000000000000*** drvidraw.cpp.org Wed Mar 25 22:28:46 1998 --- drvidraw.cpp Wed Mar 25 22:29:16 1998 *************** *** 858,864 **** numpoints = totalpoints==1 ? 1 : totalpoints-1; print_header("Poly"); // Output a polygon outf << "%I " << numpoints << endl; ! for (i=0; ix_) << ' '; outf << iscale(pointlist[i]->y_) << endl; } --- 858,864 ---- numpoints = totalpoints==1 ? 1 : totalpoints-1; print_header("Poly"); // Output a polygon outf << "%I " << numpoints << endl; ! for (i=0; ix_) << ' '; outf << iscale(pointlist[i]->y_) << endl; } ivtools-doc/pstoedit.2.60.manual.html0000644000076500007650000005313107374262634020245 0ustar scottscott00000000000000Manpage of PSTOEDIT

    PSTOEDIT

    Section: User Commands (1)
    Updated: 971204
    Index
     

    NAME

    pstoedit - a converter from PostScript and PDF to editable objects or vector graphic formats  

    SYNOPSIS

    pstoedit [-help]

    pstoedit [-dt] [-dis] [-merge] [-df fontname] [-flat number] [-nomaptoisolatin1] [-nq] [-s factor] [-psargs string] [-include includefile] -f format[:options] [inputfile [outputfile]]

    pstoedit [-s factor] -f format[:options] -bo inputfile [outputfile]

     

    DESCRIPTION

     

    RELEASE LEVEL

    This manpage documents release 2.5.1 of pstoedit.  

    USE

    pstoedit converts PostScript and PDF files to a simple vector graphic format that can be edited or imported into various drawing packages. Type

    pstoedit -help
    to get a list of supported output formats.

    pstoedit works by redefining the two basic painting operators of PostScript, stroke and show. Other drawing operators (e.g. image) are not supported. After redefining these operators, the PostScript or PDF file that needs to be converted is processed by a PostScript interpreter, e.g., Ghostscript (gs). You normally need to have a PostScript interpreter installed in order to use this program. However, you can perform some "back end" processing of prepared files by specifying the -bo option for debugging or limited filtering. See "BACK END-SPECIFIC OPTIONS" below.

    The output that is written by the interpreter due to the redefinition of the drawing operators is a sort of 'flat' PostScript file that contains only simple operations like moveto, lineto, show, etc. You can look at this file using the -f debug option.

    This output is read by end-processing functions of pstoedit and triggers the drawing functions in the selected back end driver, or backend.

     

    NOTES

    If you want to process PDF files directly, your PostScript interpreter must provide this feature, as does Ghostscript. Aladdin Ghostscript 4.03 or later is recommended for processing PDF (and PostScript Level 2) files.

     

    OPTIONS

    -dt
    Text is drawn as polygons. This might produce a large output file. You might want to use this options for example if the PostScript file contains text and the backend does not support this, e.g. gnuplot.
    -dis
    Open a display during processing by Ghostscript. Some files only work correctly this way.
    -psargs string
    The string given with this option is passed directly to Ghostscript when Ghostscript is called to process the PostScript file for pstoedit. For example: -psargs "-r72x72" This causes the resolution to be changed to 72x72 dpi. (Changing the resolution this way has an effect only if -display is set. Otherwise the default resolution of 1 point (72 dots per inch) is used.)

    You can switch Ghostscript into PostScript Level 1 only mode by -psargs "level1.ps". This can be useful for example if the PostScript file to be converted uses some Level 2 specific custom color models that are not supported by pstoedit. However, this requires that the PostScript program checks for the PostScript level supported by the interpreter and "acts" accordingly.

    If you want to pass multiple options to Ghostscript you must enclose all options with quotes, e.g. -psargs "opt1 opt2 opt2". See the gs(1) manpage for other possible options.

    -merge
    Some output formats permit the representation of filled polygons with edges that are in a different color than the fill color. Since PostScript does not support this, drawing programs typically generate two objects (the outline and the filled polygon) into the PostScript output. pstoedit is able to recombine these, if they follow each other directly and you specify -merge.
    -df fontname
    Sometimes fonts embedded in a PostScript programs do not have a fontname. This for example happens in PostScript files generated by dvips. In such a case pstoedit uses a replacement font. The default for this is Courier. Another font can be specified using the -df option. -df Helvetica causes all unnamed fonts to be replaced by Helvetica.
    -include name of a PostScript file to be included
    This options allows to specify an additional PostScript file that will be executed just before the normal input is read. This is helpful for including specific page settings or for disabling potentially unsafe PostScript operators, e.g., file, renamefile, or deletefile.
    -f format
    target output format recognized by pstoedit. Currently format may be one of: debug, fig (Xfig), cgm, pdf, gnuplot, dxf, lwo, mif (Framemaker MIF, not MapInfo MIF), rib, rpl, java, ps, met (OS/2 only), wmf (Windows and Borland C++ only), tgif, idraw, and dump. See "BACK END-SPECIFIC OPTIONS" below for an explanation of the [:options] to -f format.
    -s factor
    scale by the specified bitmap display factor. (Use with -f tgif option only.)
    -bo
    You can run backend processing only (without the PostScript interpreter frontend) by first running pstoedit -f dump infile dumpfile and then running pstoedit -f format -bo dumpfile outfile.
    -flat number
    If the backend does not support curves in the way PostScript does, all curves are approximated by lines. Using the -flat option one can control this approximation. This parameter is directly converted to a PostScript setflat command.
    -nq
    No exit from the PostScript interpreter. Normally Ghostscript exits after processing the pstoedit inputfile. For debugging it can be useful to avoid this. If you do, you will have to type quit at the GS> prompt to exit from Ghostscript.
    -nomaptoisolatin1
    Normally pstoedit maps all character codes to the ones defined by the ISO-Latin1 encoding. If you specify -nomaptoisolatin1 then the encoding from the input PostScript is passed unchanged to the output.
    inputfile
    input file.
    outputfile
    output file. If no output file is given as argument, pstoedit writes the result to standard output.

    If neither an input nor an output file is given as argument, pstoedit works as filter reading from standard input and writing to standard output.

     

    BACK END-SPECIFIC OPTIONS

    pstoedit allows you to pass individual options to a backend. This is done by appending all options to the format specified after the -f option. The format specifier and its options must be separated by a colon (:). If more than one option needs to be passed to the backend, the whole argument to -f must be enclosed within double-quote characters, thus:
    -f "format:option option ..."

    Currently met , java , dxf , and wmf are the only drivers accepting specific options. Other options may be asserted through environment variables. See "ENVIRONMENT VARIABLES" below.

    The wmf driver supports two backend specific options, 'v' and 'e'.

    -f wmf:v
    turns on a verbose mode;
    -f wmf:e
    tells pstoedit to generate an enhanced metafile instead of a normal metafile.
    -f "wmf:ve"
    specifies both verbose mode and enhanced metafile output.

    The java backend allows to specify the class name of the class that is generated by pstoedit. The default is PSJava. You can change this using

    -f java:anothername

    The dxf backend accepts the option -lines which forces all polygons and lines to be represented as LINEs in the generated DXF file. The default is to use POLYLINEs. Example:

    -f "dxf:-lines"

    The met backend allows the following single character options (without a leading -)

    w - Draw into an opened window instead of a metafile
    p - Draw no geometric linewidths, all lines have a width of zero
    l - No filling of polygon interiors
    c - No colors, just greyscales
    t - Omit all text
    g - Omit all graphics
    v - Put verbose output to drvMET.out

    Example:

    -f "met:wlc"
     

    NOTES

    To implement a new backend you can start from drvsampl.cpp and drvsampl.h. See also comments in drvbase.h and drvfuncs.h for an explanation of methods that should be implemented for a new backend.

    pstoedit can be configured at compile time to include support for CGM. In this case the cd-library from the CGM Draw package created by G. Edward Johnson of the United States National Institute for Standards and Technology (NIST) is needed. The cd-library and related documentation can be found at:

    <URL:http://speckle.ncsl.nist.gov/~lorax/>

     

    ENVIRONMENT VARIABLES

    A default PostScript interpreter to be called by pstoedit is specified at compile time. You can overwrite the default by setting the GS environment variable to the name of a suitable PostScript interpreter.

    You can check which name of a PostScript interpreter was compiled into pstoedit using: pstoedit -help.

    See the gs(1) manpage for descriptions of environment variables used by Ghostscript most importantly GS_FONTPATH and GS_LIB; other environment variables also affect output to display, print, and additional filtering and processing. See the related documentation.

    You can set the environment variable PSTOEDITVERBOSE to 1 to generate verbose output from pstoedit. Otherwise the default is 0, nonverbose.

    pstoedit allocates temporary files using the function tempnam(3). Thus the location for temporary files might be controllable by other environment variables used by this function. See the tempnam(3) manpage for descriptions of environment variables used. On UNIX like system this is probably the TMPDIR variable, on DOS/WINDOWS either TMP or TEMP.

     

    SYSTEM SPECIFIC NOTES

     

    DOS/WINDOWS

    pstoedit compiled with MS-Visual C++ or Borland C++ runs under 32-bit only. It might run under WIN32s, but certainly does not run under plain 16-bit DOS.

    The WMF driver backend is available only if pstoedit was compiled using Borland C++. A graphical user interface for pstoedit is available under winp2eex. The compilation of the GUI is only possible under Borland C++. The GUI relies on pstoedit to be installed correctly somewhere in a directory where your PATH variable points to, since it calls pstoedit as a subprocess. When the GUI is run, it creates a file named makeedit.err which contains error and trace messages from the GUI.  

    OS/2

    When running pstoedit on OS/2 you need to call it using the script ps2edit.cmd.

     

    TROUBLE SHOOTING

    If you have problems with pstoedit first try whether Ghostscript successfully displays your file. If yes try pstoedit -f ps infile.ps testfile.ps and check whether testfile.ps still displays correctly using Ghostscript. If this file doesn't look correctly then there seems to be a problem with pstoedit's PostScript frontend. If this file looks good but the output for a specific format is wrong, the problem is probably in the backend for the specific format. In either case send bug fixes and reports to the author.  

    RESTRICTIONS

    Non-standard fonts (e.g. TeX bitmap fonts) are mapped to a default font which can be changed using the -df option. pstoedit chooses the size of the replacement font such that the width of the string in the original font is the same as in the replacement font. This is done for each text fragment displayed. Special character encoding support is limited in this case. If a character cannot be mapped into the target format, pstoedit displays a '#' instead.

    pstoedit does not support bitmap graphics, which are left as an exercise for the user. (Ghostscript can be used to generate bitmap output; there are a number of useful filters that convert various vector graphic formats into bitmaps.)

    The Gnuplot backend and the 3D backends (rpl, lwo, rib) do not support text.

    The OS/2 met backend sometimes causes the viewer to fail, although drawing directly to screen works. This problem is solved with OS/2 FixPak 22.

    pstoedit does not yet generate placeable metafiles. This feature is planned for a future release.

    Special note about the Java backend

    The java backend generates a java source file that needs other files in order to be compiled and usable. These files are not part of pstoedit but can be obtained from the author.

    These other files are Java classes (one applet and support classes) that allow to step through the individual pages of a converted PostScript document. This applet can easily be activated from a html-document.

     

    NOTICES

     

    AUTHOR

    Wolfgang Glunz, Wolfgang.Glunz@mchp.siemens.de

     

    CANONICAL ARCHIVE SITE

    ftp://ftp.x.org/contrib/applications/pstoedit/pstoedit.html

     

    ACKNOWLEDGEMENTS

    *
    Klaus Steinberger <Klaus.Steinberger@physik.uni-muenchen.de> wrote the initial version of this manpage.
    *
    Lar Kaufman <lark@walden.com> revised the increasingly complex command syntax diagrams and updated the structure and content of this manpage following release 2.5. <URL:http://www.walden.com/~lark/>
    *
    David B. Rosen <rosen@unr.edu> provided ideas and some PostScript code from his ps2aplot program.
    *
    Ian MacPhedran <Ian_MacPhedran@engr.USask.CA> provided the xfig backend.
    *
    Carsten Hammer <chammer@hermes.hrz.uni-bielefeld.de> provided the gnuplot backend and the initial DXF backend.
    *
    Christoph Jaeschke <jaeschke@imbe05.imbe.uni-bremen.de> provided the OS/2 metafile (MET) backend.
    *
    Jens Weber <rz47b7@PostAG.DE> provided the Windows metafile (WMF) backend, and a graphical user interface (GUI).
    *
    G. Edward Johnson <lorax@nist.gov> provided the CGM Draw library used in the CGM backend. <URL:http://speckle.ncsl.nist.gov/~lorax/>
    *
    Gerhard Kircher <kircher@edvz.tuwien.ac.at> provided some bug fixes.
    *
    Bill Cheng <william@cs.columbia.edu> provided help with the tgif format and some changes to tgif to make the backend easier to implement.
    <URL:http://www.cs.columbia.edu/~william>
    *
    Reini Urban <rurban@sbox.tu-graz.ac.at> provided input for the extended DXF backend.
    <URL:http://xarch.tu-graz.ac.at/autocad/>
    *
    Glenn M. Lewis <glewis@c2.net> provided RenderMan (RIB), Real3D (RPL), and LightWave 3D (LWO) backends. <URL:http://www.c2.net/~glewis/>
    *
    Piet van Oostrum <piet@cs.ruu.nl> made several bug fixes.
    *
    Lutz Vieweg <lkv@mania.robin.de> provided several bug fixes and suggestions for improvements.
    *
    Derek B. Noonburg <derekn@vw.ece.cmu.edu> and
    Rainer Dorsch <rd@berlepsch.wohnheim.uni-ulm.de> isolated and resolved a Linux-specific core dump problem.
    *
    Rob Warner <rcw2@ukc.ac.uk> made pstoedit compile under RiscOS.
    *
    Patrick Gosling <jpmg@eng.cam.ac.uk> made some suggestions regarding the usage of pstoedit in Ghostscript's SAFER mode.
    *
    Scott Pakin <pakin@cs.uiuc.edu> for the Idraw backend.

     

    LEGAL NOTICES

    Trademarks mentioned are the property of their respective owners.

    Some code incorporated in the pstoedit package is subject to copyright or other intellectual property rights or restrictions including attribution rights. See the notes in individual files.

    pstoedit is controlled under the Free Software Foundation GNU Public License (GPL).

    Aladdin Ghostscript is a redistributable software package with copyright restrictions controlled by Aladdin Software.

    pstoedit has no other relation to Ghostscript besides calling it in a subprocess.

    The authors, contributors, and distributors of pstoedit are not responsible for its use for any purpose, or for the results generated thereby. The CGM cd-library is distributed under the following notice:

    [CD] software produced by NIST, an agency of the U.S. government, is by statute not subject to copyright in the United States. Recipients of this software assume all responsibilities associated with its operation, modification, and maintenance.

    Restrictions such as the foregoing may apply in other countries according to international conventions and agreements.

     

    SEE ALSO

    dvips(1), gs(1), ghostview(1), gnuplot(1), tgif(1), Xfig(1) idraw(1),


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION
    RELEASE LEVEL
    USE
    NOTES
    OPTIONS
    BACK END-SPECIFIC OPTIONS
    NOTES
    ENVIRONMENT VARIABLES
    SYSTEM SPECIFIC NOTES
    DOS/WINDOWS
    OS/2
    TROUBLE SHOOTING
    RESTRICTIONS
    NOTICES
    AUTHOR
    CANONICAL ARCHIVE SITE
    ACKNOWLEDGEMENTS
    LEGAL NOTICES
    SEE ALSO

    This document was created by man2html, using the manual pages.
    Time: 16:25:58 GMT, April 15, 1997 ivtools-doc/pstoedit.3.30.idraw.patch.txt0000644000076500007650000001730507417430144021037 0ustar scottscott00000000000000This patch should improve raster support for the idraw output format of pstoedit. Now you enter "drawtool -" directly into the print dialog box of Netscape and have the PostScript rendered directly into the drawing editor. Should work on pstoedit-3.30 and earlier releases, and has been incorporated into pstoedit-3.31. THIS PATCH HAD INCORRECT CONTENTS AS POSTED FROM SEP 2001 to JAN 2002. (at least I mailed the right one to Wolfgang Glunz) *** drvidraw.cpp.dist Fri Sep 7 11:51:51 2001 --- src/drvidraw.cpp Wed Sep 12 12:03:13 2001 *************** *** 35,41 **** iscale(X) != iscale(newpointlist[newtotalpoints-1]->x_) || \ iscale(Y) != iscale(newpointlist[newtotalpoints-1]->y_)){ \ newpointlist[newtotalpoints++] = new Point(X,Y); \ ! assert(newpointlist[newtotalpoints] != NIL); } \ } while (0) --- 35,41 ---- iscale(X) != iscale(newpointlist[newtotalpoints-1]->x_) || \ iscale(Y) != iscale(newpointlist[newtotalpoints-1]->y_)){ \ newpointlist[newtotalpoints++] = new Point(X,Y); \ ! assert(newpointlist[newtotalpoints-1] != NIL); } \ } while (0) *************** *** 262,267 **** --- 262,268 ---- outf << "/Circ {\n"; outf << "newpath\n"; outf << "0 360 arc\n"; + outf << "closepath\n"; outf << "patternNone not { ifill } if\n"; outf << "brushNone not { istroke } if\n"; outf << "} def\n"; *************** *** 293,298 **** --- 294,300 ---- outf << "translate\n"; outf << "scale\n"; outf << "0 0 1 0 360 arc\n"; + outf << "closepath\n"; outf << "patternNone not { ifill } if\n"; outf << "brushNone not { istroke } if\n"; outf << "end\n"; *************** *** 842,848 **** numpoints = totalpoints == 1 ? 1 : totalpoints - 1; print_header("Poly"); // Output a polygon outf << "%I " << numpoints << endl; ! for (i = 0; i < totalpoints; i++) { outf << iscale(pointlist[i]->x_) << ' '; outf << iscale(pointlist[i]->y_) << endl; } --- 844,850 ---- numpoints = totalpoints == 1 ? 1 : totalpoints - 1; print_header("Poly"); // Output a polygon outf << "%I " << numpoints << endl; ! for (i = 0; i < numpoints; i++) { outf << iscale(pointlist[i]->x_) << ' '; outf << iscale(pointlist[i]->y_) << endl; } *** image.cpp.dist Fri Sep 7 11:55:02 2001 --- src/image.cpp Wed Sep 12 12:17:30 2001 *************** *** 425,491 **** outi << "%I" << endl; const int perline = width; ! switch (type) { ! case colorimage: ! outi << width << " " << height << " " << bits << ! " Rast { currentfile " << perline << " string readhexstring pop }" << endl; ! outi << "image"; ! { ! int first = true; ! for (unsigned int i = 0; i < nextfreedataitem; i += 3) { ! if (i % (perline * ncomp) == 0) { ! outi << endl; // debug " " << i << endl; ! first = true; ! } ! if (first) { ! first = false; ! outi << "%I "; ! } ! outi << setw(2) << setfill('0') << hex << (int) data[i] << dec; ! } ! } ! outi << endl << "%I colorimage"; { ! int first = true; ! for (unsigned int i = 0; i < nextfreedataitem; i++) { ! if (i % (perline * ncomp) == 0) { ! outi << endl; // debug " " << i << endl; ! first = true; ! } ! if (first) { ! first = false; ! outi << "%I "; ! } ! outi << setw(2) << setfill('0') << hex << (int) data[i] << dec; ! } ! } ! if (nextfreedataitem % (perline * ncomp) != 0) { ! for (unsigned int i = nextfreedataitem; i % (perline * ncomp) != 0; i++) ! outi << setw(2) << setfill('0') << hex << 0 << dec; ! } ! break; ! case imagemask: ! // just treat it as a normal image for the moment ! case normalimage: ! outi << "/str1 1 string def" << endl << endl; ! outi << "% display normal image" << endl; ! outi << width << " " << height << " " << bits << " % width, height, bits/component" << endl; ! outi << "% number of data " << nextfreedataitem << endl; ! outi << "[ 1 0 0 1 0 0 ] %image matrix" << endl; ! outi << "{currentfile str1 readhexstring pop} % decoding procedure" << endl; ! outi << "image" << endl; { ! for (unsigned int i = 0; i < nextfreedataitem; i++) { ! if (i % (12 * 3) == 0) ! outi << endl; ! outi << setw(2) << setfill('0') << hex << (unsigned int) ! data[i] << dec; } ! } ! break; ! default: ! break; } outi << endl << "End " << endl << endl; } --- 425,527 ---- outi << "%I" << endl; const int perline = width; ! outi << width << " " << height << " " << "8" << ! " Rast { currentfile " << perline << " string readhexstring pop }" << endl; ! outi << "image"; ! ! /* unpack 4 bit rgb data, skipping last nybble on odd-width images */ ! unsigned char* udata = NULL; ! unsigned char* dataptr = data; ! if (bits==4) ! { ! udata = new unsigned char[nextfreedataitem*2]; ! dataptr = udata; ! ! unsigned int curnybble = 0; /* 0=r,1=g,2=b */ ! unsigned int curcol = 0; ! unsigned int currow = 0; ! unsigned int udata_loc=0; ! ! for (unsigned int i = 0; i< nextfreedataitem; i++) ! { ! ! /* replicate most-significant nybble first */ ! udata[udata_loc++] = (data[i]&0xf0) | ((data[i]&0xf0)>>4); ! ! curnybble++; ! if (curnybble==3) ! { ! curnybble=0; ! curcol++; ! } ! ! /* replicate least-significant nybble if not at end of odd-width row */ ! if (curcol != width || !(width%2)) ! { ! udata[udata_loc++] = (data[i]&0x0f) | ((data[i]&0x0f)<<4); ! ! curnybble++; ! if (curnybble==3) ! { ! curnybble=0; ! curcol++; ! } ! } ! ! /* skip nybble at end of odd-width row */ ! if (curcol == width) ! { ! currow++; ! curcol=0; ! } ! ! } ! } ! ! /* output graylevel image for B&W printers */ ! int cur=0; ! for (unsigned int row = 0; row < height; row++) ! { ! outi << endl << "%I "; ! for (unsigned int col = 0; col < width; col++) { ! unsigned int grayval; ! if (type==colorimage) ! grayval = (unsigned int) ! (.299*dataptr[cur++] ! + .587*dataptr[cur++] ! + .114*dataptr[cur++]); ! else ! grayval = dataptr[cur++]; ! outi << setw(2) << setfill('0') << hex << grayval << dec; ! } ! } ! ! /* output color image for use of idraw */ ! outi << endl << "%I colorimage"; ! cur = 0; ! for (unsigned int row = 0; row < height; row++) ! { ! outi << endl << "%I "; ! for (unsigned int col = 0; col < width; col++) { ! if (type==colorimage) ! { ! outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur++] << dec; ! outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur++] << dec; ! outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur++] << dec; ! ! } ! else ! { ! outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur] << dec; ! outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur] << dec; ! outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur++] << dec; } ! } } outi << endl << "End " << endl << endl; + + delete [] udata; } ivtools-doc/pstoedit.html0000644000076500007650000000444307503671462016404 0ustar scottscott00000000000000 use pstoedit to convert arbitrary PostScript to idraw format

    use pstoedit to convert arbitrary PostScript to idraw format

    pstoedit is a program for converting between various vector graphic file formats.

    home page

    A patch is available to add raster support to the idraw output format of pstoedit. Should work on pstoedit-3.14, pstoedit-3.15, and pstoedit-3.16. It was incorporated into pstoedit-3.17 by Wolfgang Glunz.

    A 2nd patch is available to improve raster support for the idraw output format of pstoedit. Now you enter "drawtool -" directly into the print dialog box of Netscape and have the PostScript rendered directly into the drawing editor. Should work on pstoedit-3.30 and be incorporated in pstoedit-3.31.

    from 2.60 README:

    PSTOEDIT
    Copyright (C) 1993,1994,1995,1996,1997 Wolfgang Glunz, Wolfgang.Glunz@mchp.siemens.de

    pstoedit converts Postscript(TM) and PDF files to other vector graphic
    formats so that they can be edited graphically. See pstoedit.man or
    manual.html for more details on which formats are supported by pstoedit.

    The architecture of pstoedit consists of a PostScript frontend which
    needs to call a PostScript interpreter like Ghostscript and the
    individual backends which are plugged into a kind of framework.

    This framework can be used independently from the PostScript frontend
    from any other program. The framework provides a uniform interface to
    all different backends. Get in contact with the author if you need
    more information on how to use this framework.


    It is used by the barplot command of comdraw. This uses both plotmtv to generate the plot in PostScript, and pstoedit to re-render it in idraw-formatted PostScript.

    up to ivtools add-ons   up to ivtools ivtools-doc/pstoedithome.html0000644000076500007650000001426207374262634017260 0ustar scottscott00000000000000 pstoedit

    pstoedit

    pstoedit translates PostScript and PDF graphics into other vector formats. Currently pstoedit can generate the following formats:
    • Tgif .obj format (for tgif version >= 3)
    • (Frame)Maker Intermediate Format
    • .fig format for xfig
    • pdf - Adobe's Portable Document Format
    • gnuplot format
    • Flattened PostScript
    • OS/2 meta files (under OS/2 only)
    • Windows meta files (WMF) (under DOS/Windows only)
    • DXF - CAD exchange format
    • CGM Format binary and textual
    • LWO - LightWave 3D
    • RIB - RenderMan
    • RPL - Real3D
    • Java applet
    • Idraw format
    Implementing support for other formats should be very easy. The architecture of pstoedit consists of a PostScript frontend which needs to call a PostScript interpreter like Ghostscript and the individual backends which are pugged into a kind of framework. This framework can be used independently from the PostScript frontend from any other program. The framework provides a uniform interface to all different backends. You need a C++ compiler to install and GhostScript to run pstoedit. pstoedit should run on all Un*x like systems and has also been ported to OS/2, DOS/Windows, and RiscOS. You can download pstoedit (source code) from: You can more information from

    New or changed in 2.60:

  • New backend for idraw contributed by Scott Pakin
  • Internal redesign in order to support the usage of the drivers from other programs, not just from pstoedit.
  • Full implementation of kshow, xshow, yshow, xyshow
  • Added -psargs option and removed -rnnxnn option
  • Added -include option
  • Fixed the linecap and linejoin problem for MIF
  • Port to RiscOS done by Rob Warner
  • winp2eap.def missing in distribution
  • Fixed a problem with .ps files that redefined showpage themselves
  • Fixed some problems related to the 'string' operator. Some PostScript programs used to redefine 'string'.
  • Fixed a portabiltiy problem for DecAlpha
  • Fixed some OS/2 compilation problems
  • Fixed some DEC compilation problems
  • Fixed a problem that caused pstoedit to 'draw' each character when running gs3.5x
  • Added support for Frame-specific encoding of special characters
  • Fixed an encoding bug for PDF (minus was defined twice)

    New or changed in 2.50:

    • New backend for WMF, contributed by Jens Weber (wr@lzh1.lzh.de)
    • Windows GUI, contributed by Jens Weber (wr@lzh1.lzh.de)
    • direct handling of .pdf files (as input) (Thanks to ghostscript and the -dNOBIND option !!)
    • fixed a bug caused by ignoring the textmatrix
    • changed the pdf output so that xpdf accepts it
    • Fonts not supported by the selected backend, are now "drawn" automatically, as if the option -dt was given for them.
    • implemented the different show's for pdf
    • handling of reencoded fonts.
    • support for dashed lines (so far for cgm, xfig, and pdf only)
    • added workaround for bug in libg++ on some linux systems (Thanks to derekn@vw.ece.cmu.edu (Derek B. Noonburg) and rd@berlepsch.wohnheim.uni-ulm.de (Rainer Dorsch) for taking care of this linux specific problem and the workaround)
    • fixed a bug with ordering of text and lines
    • replaced usage of tmpnam by tempnam so the user can control the place where temp files are allocated. (via TMPDIR under *nix, TMP or TEMP under DOS/Win)
    • Bold was not treated correctly in MIF backend
    • Gnuplot backend could not be called
    • zero length text caused problems with some backends
    • ^M caused problems with some backends.
    • handling filenames containing \
    • fixed compile errors with some compilers in drvjava.cc
    • added support for linecaps in PDF backend

    New or changed in 2.41:

    • changed makefile for DOS
    • fixed problem in pdf backend with '\' characters
    • fixed a problem with linewidth (all backends)
    • three new backends from Glenn Lewis
      • LWO (LightWave 3D)
      • RIB (RenderMan)
      • RPL (Real3D)
    • Piet van Oostrum fixed two problems in the pdf backend.
    • Added -f "pdf:-e encoding" as a temporary fix to the problem of different font encodings. See also pstoedit.man.
    • Added some heuristic to calculate the MediaBox for PDF.
    • Removed writing of comments to PDF because of problems with xpdf.
    • Integrated some new features of the cd1.2 library for the CGM backend.
    • Added a backend to generate a Java(tm) applet
    • Some changes to compile without warnings

    New or changed in 2.40:

    • a GNUplot backend contributed by Carsten Hammer
    • a first DXF backend contributed by Carsten Hammer ( a more complete version will be available in one of the next release. If you have urgent need for it contact Wolfgang.Glunz@mchp.siemens.de )
    • a OS/2 Metafile backend contributed by Christoph Jaeschke
    • a PDF backend
    • no shell script anymore. Pure C++ programm.
    • also runs on DOS, OS/2.
    • tgif backend extended to support rotated text. (needs tgif version >= 3.0 pl 7 )
    • some bug fixes
    Wolfgang Glunz email: Wolfgang.Glunz@mchp.siemens.de
    ivtools-doc/qhull.html0000644000076500007650000000147107775131331015671 0ustar scottscott00000000000000 use qhull to generate convex hulls from polygons and point sets

    use qhull to generate convex hulls from polygons and point sets

    Use qhull from the University of Minnesota Geometry Center to generate convex hulls from point sets or polygons: http://www.qhull.org local-copy of Version 2.5

    If qhull is found in your environment a "ConvexHull" tool will automatically get added to the toolbar of each ivtools drawing editor (except idraw).

    up to ivtools add-ons ivtools-doc/radiogroup-main.gif0000644000076500007650000000407707374262634017455 0ustar scottscott00000000000000GIF87a99UUUrrr:::}8X00,99pI8ͻ`(di'lp,tmx| M" Ȥrl:ШtJZجvmݰxL.;(|N~QRXK~oNFMk`POIzJιSvͱLݝbHӻϜGگЍѸA*葫Op:wE m:{x佌 ǥ Iy %͛8Iɳ瞝> Utѣ]"]tʝPJJիXjʵׯ`ÊKY)Ҫ]˶۷p@@ݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_\0F+tͳ:Gn7#&W^칻GOWWt"݀`*~V]xYXa(_~$u߁(xt x`&F( JX|8ag!#X||8($^@BX2)e\>ן=Ȣ- be囯! tix|矀*蠄j衈&袌6I 餔Vj饘f馜vJ)`jꩨꪬ*F:j@ڛB*찿챺6lF{>Ak>[aۓmߖ<玛+KKo!˚aGFpCO.gp¨-E"_11ŦYEÖl\0&1Ȥ?rV̲h.g3nj7!hܳ*tҝ mPo&uETWee\ו]dOf6>hcfOs7vb\KjwbW ~~aR+8xaCKx2JpJ|t蔹L,{r:`"DcJqa~Y|T鳳3 o1<||B ;2?LSOwI\DxO)/qM~3~ͳϳ?99lv ?P_@=F2Wp| ;H) ƍY B%QafVw Ë@X"NmLԋ {(ⅅ(LahP\`͖BcWCagqI-XcJh.Q|Cc=yvb3>qܫ#%;Re<=P| F!r̞׾K &ng~\G/wܜ`FΒN\8Y%ue욹=D/ &'9M ]HMpnӊ\9ͩJRF)00u+&$ƓL' O'b C 9v 6T ZBJE}f4='Q~eGoX5T|)G`!Hkʾ+љ%]!#)GH0%p"-d"gNy>umT""_TRQ2U63 `10S2fH+^C~u^Z:mXEX$:uiehPeVm; ׅ/(|vm"b+[ev/mQm֍o\ q;v1t.]r;Azt z xK^BHzs|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>H;ivtools-doc/radiogroup-popup.gif0000644000076500007650000000323307374262634017665 0ustar scottscott00000000000000GIF87a\FFUUUrrr:::>0000,I8ͻ`(aahlp,tm߲T|pH,Ȥrl:tJZX$԰zఘY^pw;N۩~qbxQdBzvb^?hGn>@÷CJEˀaDMIڧk<=Au`wM1v+p!Ç>*TƮĎYlcH$Hf̗бؐϛ,,'o͞@Q8O_4v] Raa ^(!a(8%pb0-b87c5ޘE i|B^AL6PF)TViXf ')dihl&Ze5IIvBgɧ/^iBht(g.YiJ^Tʕio5:jꩨꪬD*묦*8䪫 k&6*;Lf*ۆ+ntۄ㦫R{Df@kɼj񭽕K/. pK|rJ20[YlH 0ݰ51GZMo#aI$q 11/Ì&SR%2HEK"?%AO!@/1u;ALN_]RϗlGRL%=D@T!C4?JepWc~ ~NQxFXMዓ uߑ3ݴR.WA.s̼:'G;>:w7?o7'>@//o/??+O? g“Lz! 7!:6\ s%0;!p(DAC""p%FNF C(X"h8>*X` eE5k]hTD+ʘ{!h(9nJH6.zA#j!dX(Ȗ0NI UPɕ\r.#I|$\L(Ѳ=&uKڶF)RdZQ6NsJR  PJԢHMRԦ:u;ivtools-doc/radiogroup.html0000644000076500007650000000070007433262401016703 0ustar scottscott00000000000000 ivtools radiogroup example program

    radiogroup

    radiogroup shows a group of radio buttons with a popup dialog box to add new buttons or remove existing ones.

    main window

    popup window


    next example program scrollable

    up to ivtools home page. ivtools-doc/readme.gif0000644000076500007650000000031607374262634015605 0ustar scottscott00000000000000GIF89a<!7Image generated by Aladdin Ghostscript (device=ppmraw) ,<rڋ u8!ǰ *[;1&xm RUJfyFlKnoŪ"Ӭ>?&DQq1HXhxHX;ivtools-doc/release-note-0.6.11.html0000644000076500007650000000524707503671462017660 0ustar scottscott00000000000000 special note on building ivtools-0.6.11

    special note on building ivtools-0.6.11

    A problem has come up in the transition to using a configure script for building ivtools. It should be fixed in ivtools-0.6.12, available by October 23rd 1998 at the latest. The workaround is to use the old-style configuration method described in the INSTALL file. If you have run the configure script already, you need to re-run it with no arguments before following the INSTALL directions, or start over from a fresh copy of the source tree. You also need to change the #if 0 near the end of the ivtools-0.6/config/site.def.$CPU file to #if 1 to bring back the definitions that were to be handled by the configure script instead. More details on the problem below.

    The problem lies in compiling C source code (as opposed to C++) when using the configure script. Without the configure script, everything works fine for any gcc-2.7.2 installation, because with that version of gcc (any earlier version), there is full support for the -x argument (-xc, -xc++), which directs the plain vanilla gcc as to what language needs to be compiled.

    With the configure script, all the C compilation is broken with any compiler (gcc-2.7.2 and <, gcc-2.8.1 and >, egcs-1.0.1 and >), because the default C++ compiler becomes "c++" instead of gcc, and even though the -xc++ argument still works on gcc-2.7.2 installations, the compilation had not been setup to provide an -xc whereever it was needed (the TIFF modules and the ComUtil library).

    The fix forthcoming in ivtools-0.6.12 is to use the configure script to find a C compiler as well as a C++ compiler, and remove all use of -xc++ and -xc from the compilation command lines. This should work for gcc-2.7.2 (and <), gcc-2.8.1 (and >), and egcs-1.0.1 (and >).

    The old-style configuration process will be modified as well, to add full support for a separate rule to compile C modules. That will get used in the ComUtil library. The TIFF modules always had a special rule to compile as C code, but that rule will be adjusted to make sure gcc gets used instead of a g++ or c++ specified by the configure script.


    back to ivtools home page

    back to ivtools download page

    back to Vectaport source page ivtools-doc/release-note-0.6.12.html0000644000076500007650000000114007503671462017645 0ustar scottscott00000000000000 small note on building ivtools-0.6.12

    small note on building ivtools-0.6.12

    If using the configure script as described in Appendix A of the INSTALL file, you still need to set your CPU environment variable as described in Step 1.a of those instructions.
    back to ivtools home page

    back to ivtools download page

    back to Vectaport source page ivtools-doc/release-note-0.7.4.html0000644000076500007650000000202607374262634017576 0ustar scottscott00000000000000 extra release notes for ivtools-0.7.4

    extra release notes for ivtools-0.7.4

    CHANGES   README   INSTALL

    March 3rd, 1999: Here is a minor patch to ivtools-0.7.4 that ensures import from a socket or Unix filter works in conjunction with the new asynchronous incremental download of rasters from URLs.

    If you downloaded a copy of http://www.vectaport.com/pub/bin/ivtools-0.7.4-LINUX.tgz prior to March 3rd, you may want to re-acquire it to get a fix for this problem in your copy.


    back to   ivtools home   ivtools download   source download ivtools-doc/release-note-0.7.5.html0000644000076500007650000000340507374262634017601 0ustar scottscott00000000000000 extra release notes for ivtools-0.7.5

    extra release notes for ivtools-0.7.5

    CHANGES   README   INSTALL

    April 9th 1999: If building on Solaris 2.6 using gcc-2.8.1 you need to disable optimization for the following files:

    from libIV : alloctbl.c, input.c, kit.c, mf_kit.c, mono_kit.c, smf_kit.c, deck2_6.c, xfont.c, xwindow.c

    from libIVGlyph : ofilechooser.c

    from libOverlayUnidraw : ovimport.c

    April 8th 1999: Looks like you still really need the CPU environment variable (set with "CPU='make CPU';export CPU"), because things were set up to always take the CPU value from an external environment variable. Here's a fix you can apply to ivtools-0.7.5.

    March 29th 1999: it looks like the mechanism for asynchronous incremental download of rasters by URL, first published in ivtools-0.7.4, has disabled the automated slideshow mechanism . To use this, either revert to an earlier versions of ivtools (0.7.2 or 0.7.3), or upgrade to a newer version whenever available. Sorry for the inconvenience.

    March 25th, 1999: if using an sh that is really sh (and not bash), change line 1635 of the configure script to read:     PWD=`pwd`;export PWD


    back to   ivtools home   ivtools download   source download ivtools-doc/release-note-0.7.beta.html0000644000076500007650000000334007374262634020346 0ustar scottscott00000000000000 Release notes for ivtools-0.7.beta

    Release notes for ivtools-0.7.beta

    CHANGES since ivtools-0.6.12

    * ivtools-0.7 now supports the download and save/restore of graphic files by URL, a form of hyper-structured-graphics as first defined by William Chia-Wei Cheng, the author of Tgif.

    To try it out, acquire or build a copy of ivtools drawtool from the 0.7 release, and launch like this:

    drawtool http://www.vectaport.com/ivtools/anteaters.drs

    There is also support for opening/importing any combination of gzip'ed, compress'ed, or uncompressed image files (JPEG, GIF, TIFF, PGM, PGM, PPM) and PostScript files (idraw format or the non-raster portion of arbitrary PostScript). Beta testers wanted to try out the various combinations, and to write sample hyper-graphic documents. Forward any sample URL's you want pointed to by ivtools web pages.

    * ivtools-0.7 now incorporates a new server that is an experiment in encapsulating the capabilities of the class libraries of the Image Understanding Environment (IUE) within the command language of comterp. Use the --with-iue and --with-iue-libs arguments to configure to set up for it if you have a copy. See ivtools-0.7/src/iueserv/README for further details.


    back to ivtools ivtools-doc/release-note-0.7.beta2.html0000644000076500007650000000172307374262634020433 0ustar scottscott00000000000000 Release notes for ivtools-0.7.beta2

    Release notes for ivtools-0.7.beta2

    CHANGES since ivtools-0.6.12

    release notes for ivtools-0.7.beta

    This second beta tar file fixes a problem when compiling with ACE enabled (--with-ace and --with-ace-libs arguments supplied to the configure script). Although ace_dispatcher.h and ace_iohandler.h existed in the new AceDispatch library, the source files in that library referred to their old location in the Dispatch library. The following patch can be downloaded and applied to the first beta tar file to arrive at the same result: ivtools-0.7-beta-beta2.diffs.


    back to ivtools ivtools-doc/release-note-0.7.html0000644000076500007650000000433507374262634017441 0ustar scottscott00000000000000 extra release notes for ivtools-0.7

    extra release notes for ivtools-0.7

    CHANGES   README   INSTALL

    Dec. 2, 1998: line 33 of ivtools-0.7/src/utils/Imakefile should use $(CCDRIVER) instead of $(CDRIVER), since ivdl.c is C++ code. Some versions of gcc seem able to auto-detect C++ code by themselves, some versions could have handled it with a -xc++ argument, but this makes it work for all of them.

    Nov. 20, 1998: Section 2.b of the INSTALL should read as follows:

    2.b. Compile it with a "make World" command. It needs the following
    variable definitions:

      XCONFIGDIR  The location of your X11 config files.
      PWD         If you're using a shell without this pre-defined
                  (i.e. Solaris)

    Sample Linux command line:
             make World XCONFIGDIR=/usr/X11R6/lib/X11/config
    Sample SunOS command line:
             make World XCONFIGDIR=/usr/local/lib/X11/config
    Sample Solaris command line:
             make World XCONFIGDIR=/usr/X/lib/X11/config PWD=`pwd`
    Sample Irix command line:
             make World XCONFIGDIR=/usr/lib/X11/config


    This command generates Makefiles hierarchically and builds everything.

    In the tar file this section does not refer to the need to supply XCONFIGDIR argument on the "make World" command line.

    Nov. 18, 1998: For Solaris, you need to change line 124 of ivtools-0.7/config/site.def.SUN4 to be a #ifdef instead of a #ifndef


    back to   ivtools home   ivtools download   source download ivtools-doc/release-note-0.8.html0000644000076500007650000000161207374262634017435 0ustar scottscott00000000000000 extra release notes for ivtools-0.8

    extra release notes for ivtools-0.8

    CHANGES   README   INSTALL

    Jan. 18th, 2000: Recent versions of w3c require a -q on the command line to work as an import plugin for the ivtools drawing editors. If you are having trouble retrieving graphic files by URL, and you have w3c in your path, edit line 1304 of ivtools-0.7/src/OverlayUnidraw/ovimport.c to look like this and recompile: sprintf(buffer,"w3c -q %s", path);


    back to   ivtools home   ivtools download   source download ivtools-doc/reusingunidraw.txt0000644000076500007650000001526607374262634017502 0ustar scottscott00000000000000 Reusing Unidraw and idraw Scott E. Johnston and Jorge A. Gautier Vectaport Inc. http://www.vectaport.com Dec. 5th, 1997 Introduction Unidraw is a C++ framework for creating custom graphical editors that was the basis for John Vlissides' thesis at Stanford University in 1990. idraw was an existing drawing editor that was rebuilt on top of Unidraw. They were both distributed with the InterViews 3.1 source tree which was created by Mark Linton, Paul Calder, and John M. Vlissides at Stanford University. Since then the whole source tree has been used for several examples in Vlissides' "Design Patterns" textbooks as well as being reused by many parties constructing their own custom applications. At Vectaport we've reused Unidraw for a wide variety of applications, integrating other C++ toolkits for networking and 3d visualization, and deriving from the original Unidraw software new frameworks for spatial-data servers, terrain visualization, and vehicle simulation. The result is a layered collection of C++ source trees, each aimed at a generic application area, that serves as a reasonable starting point for source-intensive programmers to build powerful custom applications that go far beyond the original capabilities of Unidraw and its 2d structured graphics. In this paper we discuss specifics of our experience to date. Results of this approach and pointers to more information are presented at http://www.vectaport.com. Experience To Present We first started using InterViews in 1990, back at release 2.6, constructing a variety of map-based user interfaces for autonomous vehicle and imaging R&D. At that time there was no Unidraw, and idraw, the MacDraw-like drawing editor that is part of InterViews, was built on libgraphic, the 2d structured graphics class library where Vlissides, Linton, and Calder prototyped their ideas about object-oriented design applied to graphics. idraw was distributed as a class library and main.c all-in-one directory, so we separated the two, and started deriving map-format specific class libraries with specialized "Editor"s (the central object in 2.6 idraw) for each. We found this approach effective and powerful, being able to reuse the complete mechanisms of idraw (pan/zoom, rubberbands, selection-highlighting, front/back/group/ungroup) with little changes to the original source code. Occasionally we had to de-privatize member methods and variables, to facilitate in-place reuse of existing methods, or to generate first drafts of derived methods by replicating methods that accessed private variables [a]. Over the course of working on map displays for autonomous vehicles, InterViews 3.1 came out, with Unidraw included. At first we kept on without Unidraw, bringing up the existing software fairly painlessly on 3.1 by using the 2.6 backward compatibility mode (as does Unidraw). It seemed Unidraw could replace the library version of idraw we were using, with its generalized and improved abstractions for drawing editors, but we never got the chance. But we did get a chance to start from scratch with Unidraw. We found what we learned from 2.6 was quite applicable to 3.1, given the nature of code evolution practiced by Mark Linton. We'd expect the same benefit when someday migrating-to or incorporating Fresco, one of the current leaves in this software lineage. And we still found a need to separate the main program of idraw from other C++ modules, making a foundation for deriving other class libraries and example programs. In January 1995 we first published ivtools, a collection of drawing editors that leveraged Unidraw and idraw, adding a variety of things (double-buffered graphics, evolved import/export/save/restore, multi-frame animation, graph/node editing). In July 1995 we first published ivmaps, a collection of map viewers for USGS and NIMA formats [b]. ivmaps derives class libraries from the ivtools class libraries which in turn derive from the Unidraw/idraw libraries. At first ivtools required a separate copy of InterViews 3.1 to build, but with ivtools-0.5 (October 1996) we incorporated the 3.1 source tree, maintaining backward compatibility as much as possible. We've tested this compatibility by building other people's software that needs InterViews with ivtools instead, like Target Jr, the image understanding environment from the Target Jr Consortium (2.6 and 3.0beta), and MiXViews, the music/sound editing system. In July 1997 we first published vhclserv, a multi-vehicle state interpreter that serves off vehicle updates to subscribed viewers and receives driving commands over the net. We utilized the ACE networking library from Doug Schmidt, especially the Reactor class which happens to be evolved from the InterViews Dispatcher class. This relationship between the two classes simplified the job of integrating ACE into InterViews. Lessons Learned InterViews, Unidraw, and idraw have all served as useful starting points for source-intensive C++ software evolution. The layered library architecture of InterViews turned out to be a good thing, not an unfortunate lack of completeness. It takes an evolutionary mindset to work with the stuff. The ability to set up and conduct experiments as to why the software is or isn't working is just as critical as the ability to imagine extensions to the software. C++ adds a sometimes surprising new dimension to C programming and it takes a while to be able to navigate well in this extra dimension. ---------------------------------------------------------------------- [a] A quick fix was to compile everything with -Dprivate=protected [b] United States Geological Survey, National Imagery and Mapping Agency References: Mark A. Linton, Paul R. Calder, John M. Vlissides, "InterViews: A C++ Graphical Interface Toolkit", Technical Report CSL-TR-88-358, Stanford University, Stanford, CA 94305-2192, July 1988. John M. Vlissides and Mark A. Linton, "Applying Object-Oriented Design to Structured Graphics", Proceedings of the USENIX C++ Conference, Denver, Colorado, October 1988. John M. Vlissides and Mark A. Linton, "Unidraw: A Framework for Building Domain-Specific Graphical Editors", Proceedings of the ACM SIGGRAPH/SIGCHI User Interface Software and Technologies '89 Conference, Williamsburg, Virginia, November 1989. Tod S. Levitt, Scott E. Johnston, Scott Barclay, John W. Dye, Daryl T. Lawton, "Progress Toward an Image Understanding Application Development Environment", Proceedings: Image Understanding Workshop, September 1990. John M. Vlissides, "Generalized Graphical Object Editing", Technical Report CSL-TR-90-427, Stanford University, 1990. "Design Patterns: Elements of Reusable Object-oriented Software", Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley, 1995. ivtools-doc/scrollable-1.gif0000644000076500007650000000326007374262634016631 0ustar scottscott00000000000000GIF87aUUU檪rrr:::,X0I8뭃`(rdihrp kmxG^+H/ɨtJ],ج6Kxtݚ]xnGgmpm`;QyX|^7r$ jX}V=z!\y"{hpgnfbK]˱T<ɗցECM=t&qg `@yJ(hpK@0laĈ)2BxbF;&0H$ 2Xc_umYm;w.U%ڕUwQ*w؜` [+ƿC%y2_/[Ty3a4==Th@OgJZ֜I#Zڠ^F-lt#|x Of9c>m*ίC;P8ڥ؃|$<wo~C(:g~-Ƞ 6 甁 HzfM}]$ dca)}'6b+FŨ،"@H 裍A&iI8̑JFѐ2Y!QRaV\PfQRc4]zdQNfpjVw ngE8i:fC{&_z荘B%>YRIh)jj?ʪ+,j۪]lU,LF+-3LJSM׶0˞hz. )!ֻýo=ᅮ|.c\p 0O FogL!q *7r ,όC6ۀs+ |s<-2ɔ>l).)33m\+5S]Egfgv 7AIBvy`-w+M@[ax =y8׌Cy+zߣ]ݧϝ:ܫݺٯ .PND.vǎ9NOG#/ZO;k;?96S?0c߲*7mٺ/.Ā59/dnoCŋ˯[$+ #6< w@W;^En$#< vb{"QA.SBFpi0 <b,=Rl%׸L}\HL&:r S*ZX̢IQزz20, C^0w ~G,ѐj! /0F_+WB9d"ٟMr1<WIJ~R)AU慔-hOR+sI2h! `I^ᖋ4v̨ra'YKN"td3{)`1r⒜&9#iov3#t7τ81MZ^6﹕|~ Pt1+d) Rkl(9JPv26\8ɩmrP0kyQB,ip*G(:PU6q0 [VծȪC5ֲhMZZ4&;ivtools-doc/scrollable-2.gif0000644000076500007650000000330607374262634016633 0ustar scottscott00000000000000GIF87aUUU檪rrr:::,X0I8뭃`(rdihrp kmxG^+H/ɨtJ],ج6Kxtݚ]xnGgmpm`;QyX|^7r$ jX}V=z!\y"{hpgnfbK]˱T<ɗցECM=t&qg `@yJ(hpK@0laĈ)2BxbF;&0H$ 2Xc_umYm;w.U%ڕeqnI`A/>(>9Xbɍ+-pcͬ"w єK:mгj`~MWtkҴږ;f;x9N 8›zy3~8t!Q><-շR)ߏ|9۹%`Fa &]v  F7a6x!{~'+d!)߈(֣b,8ɋ(&ި ڨ#9 N靨dHBQ:9Lg3f)\XeIIf^&Û.$f%b xn2fwf ʰo 8bbWi,j?zgZ%_ښj=jZl K,y,v*:@mnmRyn[.V&ƻmVj拯6ջؿ,*U'0̀o9E,qp kg,[ŕ] @ <ɼ@/ Ǐy,s̰<(s/4#B缳"[̲ 0Iт r9[31i1KtOMgל6IOmuFݖ͒xMwv}{-X473MMg4X䍵 褗.mRnusYJ\)VAgޏ_/| ^=o|כ=XSvj_O>ƿC:{8c>}̀$]%L]hZbT+DBVp(a9paBn1NBpPHaļ HHtC8e*ZX̢w[H2e]Ɓpaál \ Kư7α0I)BqC(0/~TJ̉21FBm!!9K *S96~ґivtools scrollable example program

    scrollable

    scrollable has two scroll bars that control the position of a scrollable glyph (a button). Based on code from Chen Wang at the University of Toronto.


    next example program scrollfield

    up to ivtools home page. ivtools-doc/scrollfield-1.gif0000644000076500007650000000356407374262634017020 0ustar scottscott00000000000000GIF87aUUU檪rrr:::,X0I8뭃`(rdihrp kmxG^+H/ɨtJ],ج6Kxtݚ]xnGgmpm`;QyX|^7r$ jX}V=z!\y"{hpgnfbK]˱T<ɗցECM=t&qg `@yJ(hpK@0laĈ)2BxbF;&0H$ 2Xc_umYm;w.U%ڕUwQ*w؜` [+ƿC%y2_/[Ty3a4==Th@OgJZ֜I#Zڠ^F-lt#|x Of9c>m*ίC;P8ڥ؃|$<wo~C~;w*g&܂ 8߄+a!>v! r((,b/0xD4^h# 3S:裎@f $?N GʑTnbXfƖ\L%`z"%Dp)gJ{x|矀)@LnȦ%袌t#ىVj =Jht"`EJZZjf:f*ޤꋺ~ڪ&)2F,?Y-lNےxzjllT)kD/>B/.ܰ_0;ȕ~|װ92lz,0r 8<@ðiliH'PG-4S$gA]9qח 6b*Kfmi^(r_L("/Kp7,fTqLbwNsXk_vV\x>΄ 0׋ۤ1h쩃. {rx,cz[cv=o}d\觯3 A/te\[<0Wl(z0|"(A bG\36=xB P ](ư*< mp)`w "%r%6@N,8%VW,bEvц_aa8ga?F o`891Cc3 fPBW(5:&h,CR,\B˚H):2>L0 AȤ!kPvR)KV]FRPU'nKK˖"a Vzz1QLT3>qh5qlfCNSrL:9E}qʱrL`sFgՐnOJgTUdS-GPR8ZJcUYg׀5~DXJVbl aaT.6fԻ5lk)VZ[d7YirU@jZ6BO_zZ֧`jbMj춸HMrʍt ܟ(>yˮr :'Mz {wK|;ivtools-doc/scrollfield-2.gif0000644000076500007650000000357607374262634017024 0ustar scottscott00000000000000GIF87aUUU檪rrr:::,X0I8뭃`(rdihrp kmxG^+H/ɨtJ],ج6Kxtݚ]xnGgmpm`;QyX|^7r$ jX}V=z!\y"{hpgnfbK]˱T<ɗցECM=t&qg `@yJ(hpK@0laĈ)2BxbF;&0H$ 2Xc_umYm;w.U%ڕeqnI`A/>(>9Xbɍ+-pcͬ"w єK:mгj`~MWtkҴږ;f;x9N 8›zy3~8t!Q><-շR)ߏ|9۹%`Fa &]v  F7a6x!{~'+d!)߈(֣b,8ɋ(&ި ڨ#9 N靨dHBQ:9Lg3f)\XeIIf^&Û.$f%b xn2fwf ʰo 8bbWi,j?zgZ%_ښj=jZl K,y,v*:@mnmRyn[.V.oZNۭ 仪 +"l2BR,odwqJa$l('*@NLLcC$4l1@HyyuhLc|5UC,&Wo|w/a?觯L-s)/E47`IGݯoZ56hJW ^k .w O0cA8Tp4<v#aVBq ~ >N`)C)QyL4gDmsSb F1."ުhA w32c_#e #H{L"O<{$'IJ@)^洄5_ɤd> ~3,eTh& We'`13q,NY`S X1yKL)%xc"sre)m+.c4pj)~s_$ ϗI!HH jh"LJV (DA(:Hb@ Ӆ&PTdiKБ(wӓ:iڋB%劚ң60J?T3=bu^e2St"RMYJ4.՚+[ R./ W u !KfR}]_GX~4,SՑZ ,]V/eb̚imSeZޒRik+\S#}tK]Hv.u]q*1G[P{n+H药|K_wg4Z;ivtools-doc/scrollfield.gif0000644000076500007650000001041707374262634016655 0ustar scottscott00000000000000GIF87a:::UUUrrr,0I8`(dihlp*Gax|pH,!l:ШtJ]jԬvzXxL.A T7=xN[l> tqy@pGP)ɯy.%3??|ֱu{(mէb yk1|_A =1`wU脄 Qh ~0@ j~Z؜{nX^sȴ!𽦃\$fZhޥ ".6^9̅C?j5y⓶ tLP@ה>nP݈# ]jb9Iߝ>䘠g& fq9g(?£X$I]7Pxb\HhRz ra)u m+Fqjx]p檫믹 K챻24[BuF FKmV>+eX}cb+ka[Jc'nV}4BnB]gͥ⍪'- q!%(U[633+WՈ3{FӼ)m`@U 顥 >*0ch;H<R+H5so-8]de/{,kUxmH9QMM!o.`p6K.ۜzA/λw#|-l>|/oԵak^ BЭz觯fynFݏf{ Xfx 8<ρ< `6ЅqZjQ:)c&%--n[Nɩ_uraF?GO$Wkއ<m~)V N=s (FJ"bNr@#^tq'ΰ遹11lXvGp=&n9S F+r$'D$&*uLl*ɥ#P.6vRα)ɫ'KQŢ%.5JO|+%0S a|+ID9Ќ淖9~fpe);vYFrМ넧*r`#H }KH0fAR !Qydo{yHҌlҬfW-mE;d٘mgl>ľm=hB^ X1W[plr&d3k`Wտ]f®T>/~,/ҏިjEj֎,o`%<5U(xi[}a.$Jݡ**iihQuao^j :1#چqnCU?e]dCno #/WKz^tOǕcGO͸b35f0EL3h\/a5 Y16ёvtJzFz1(liA-WW_EYPZJ[M/_5ksP2 Z*ޡ7m/W[n'M;ڃj0=fG7!yW|wHsڠ:N !#~ǜD]nW <ƺW[ sJ|/jkq?V:1YPyֿ~p<~fď-WK}r@Ӝ3th/ύ8}teG\k@Oz&j 8{ibtj`PyVO5|zlWvcHk%{(wȶp7y&!8&0$/zq8Skxݕ![wGcI.z6z]eBh EkGXdDuvmdSwgozhUHN(}'$N{Tti_v}8(}=,KGfYxH5'-=g(M~aU@ c]t{Հ:(Tdd8wm^j`\^pÈmxGv{*xV4(=X(ш{A8`w'y(d؍cM |؆WhbsƊDt5ȕו@xtfy:FPl1Z!99p8XYWꈆxvty@ul[BwzؗycVeȑpvG|iQOXn C n8Y7&yL{9#&YV'|V %I;)ɚI:fyYIYXib$قMYOiVMyM?X9Yٟ%5_I]I{ɜkiw#39YV'qyb8O긜pٙiwz9foE8/ڑyb#b9vҵMQk[+F򡹥G~gőW{{k6UE["KӋիk[^QR[P;PEq8ϻ8۾+g@Ba0kSC!AA[c;5\\+<+](% '\лK\F"ҽkc`7,l>; ܿ <*l8O :I E<Sį.kf1;eLg<`F,`-tk}lK10A3|>A;;Ȅ\? ;ivtools-doc/scrollfield.html0000644000076500007650000000052507433262401017037 0ustar scottscott00000000000000 ivtools scrollfield example program

    scrollfield

    scrollfield has two scroll bars that control the position of a scrollable table of field editors.


    next example program strchooser

    up to ivtools home page. ivtools-doc/slideshow.html0000644000076500007650000000334407374262634016554 0ustar scottscott00000000000000 ivtools flipbook online slideshows

    ivtools flipbook online slideshows

    March 29th 1999: It looks like the mechanism for asynchronous incremental download of rasters by URL, first published in ivtools-0.7.4, has disabled the slideshow mechanism described below. To use this, either revert to an earlier versions of ivtools, or upgrade to a newer version whenever available. Sorry for the inconvenience.

    This link points to a slideshow of images from the Apostle Islands National Lakeshore on Lake Superior (images from the US National Park Service). It will launch as a continuously looping slideshow in ivtools flipbook if you've installed ivtools-0.7.2 or greater, and add the following to your ~/.mailcap file:

    application/frame-idraw; flipbook %s

    It will also work to download the above file, and manually launch flipbook with this command line:

    flipbook apisles.frs

    This is a different use of the hyper-graphics mechanism of ivtools.

    for people with faster links:
    Here is another slideshow sample, a collection of images from the Hubble space satellite (NASA/JPL/CalTech).


    back to ivtools flipbook
    ivtools-doc/source.html0000644000076500007650000000444007503671462016046 0ustar scottscott00000000000000 more ivtools source info

    more ivtools source info

    ivtools incorporates a copy of InterViews and Unidraw, and augments the original capability of idraw with new C++ class libraries for:

  • double-buffered graphics rendering, switchable look and feel, version-free serializing of graphical components in readable ASCII.
  • raster handling optimizations and extensions
  • export/import to/from Unix pipes and over the net
  • multi-frame editing and viewing
  • node/graph topology editing and browsing
  • networked command interpreting
  • drawing command interpreting
  • glyph examples
  • The changes to the original source of InterViews and Unidraw have been mostly limited to bug fixes and backward-compatible modifications. This has been tested by building packages like Target Jr and MiXViews on top. The original schem-3.1 from John Vlissides still builds as well, as would probably ibuild and doc.

    We've applied all the patches we can find from various InterViews archives, like those of the PDP++ development team. Know of any more you want applied to the ivtools source tree? ivtools-info@vectaport.com

    Here's a piece on our experience to date reusing and evolving InterViews, Unidraw, and idraw.

    ivtools-doc/spiro1.gif0000644000076500007650000001225107374262634015566 0ustar scottscott00000000000000GIF89a!7Image generated by Aladdin Ghostscript (device=ppmraw) ,ڋ޼H扦ʶ L[A0 [Kik2dQJn -S1v"K>`T8}pWuȷ(wH&Yxɘ)Ch(&Ɣ(2g&96:II[gx:8hEiZTGEƙl\fDLzZl)Z =7 ؉)͍- 9 *ݞ~B<牘Vr*[@g9}"KNQ\cwRG(e UŠ04_Odf9V)`a˸͡bjF3Xm '/-`=dZ-^녲!Gm4ئ1ﱍq )*~E'˜M._f( Jz_dNWLʇdgYwDAk6BHc%;ܨ mةϱ^R{2 Me\ݽHܱu]8;HU&y*<f*{uI<,82ڂIXL#ONlMo-E'0V )}*$tٷ_x܍ ռWuXV-cz[ht=6m7vfbwi] -𐊕^+jIG>^>9 >x: a7^BsM|ܕ{ta7DCEòԃifU}wf)t}NJe3}*hٞ&%t2 Jy|Ҋl CmƵ$A[,]4)l)O͵R;aTcX輕B56[ Ib{ nrT|-dPT> *]4 ff|2r5?I[^g@կYӏl,4E$D5J5G2MoZˣQtJ7Z%Gr 9BHu{AAq0 gŗU/u_Ƥ>,ߓ2%t 21[z-t#A>d鋒KJhNX>xC)N&jiҫש oA=I&[iI4_BM9tȜj\8 !HTn4 @Cǖ$d7'3ZK@]Ph:Wrw s!g+#"S!`ri@ofuK+NU*`S rȂ0ٟ AN@}\)7=i]4%*qV\Γv8Wf]FġA%Ni=W(_Ŋnt&YuUI2+џ˨L*\TҖ@<(YEٱk|;.zxk=kFuϻ2Nsם$LǞ=ʇ֗|W'!7#@݁gby$8͜HY5Mtl8+>c@Ɋh*nތt; ҸNSyIF8NS3E6q%3e$|m++GQ2[Ջ=3>C6?OsL8,ل2A)֢Nu\JCcBW)PWieto׸Y8epZR6c 6/)z: l-6aʫwai)]{,ל|^ºHԱOm}DTH"C:{b;s_a]p=lbY:>|ㅭ"N, 4׸'~Gk/q5|mVe)XKC+'ǯ8]UBajُy&7Cy/pguDc6Ne ,d^fuzf|>lnMol~zCu}8 pq;]XL{l&+ӹ)j]Z+;Uc=wRM1–Rnzʺ{ 7:vgv4*LZovٿ~:A}tmm1h*.g ,o4N:}.6]'%@7U3s#4y…Jre#]t3YF}TbΗT|LWkS(OrU|v+obm;sj%AXx(|al8:QDS(8`!t5ieXdfAhAdCT[Jzb]3{ jPx748]@CvB"2q'G|cF0|}B!{:#Jj,|%`1Ҙj0K/9cTaŠZ(x2K+"{`OMpddKC.9v9%1(kf qYHZ+:M.nW0R>W!wRIPs;UY$wgʦxsuu ت 7l)[+M?UE+Ӥ`: k49NBA@8mvKlxo"gs՗#xMv+A>Gs;Zgb5o,Q5SrZ;H{Q(`>>vXmqzS){`2wjRre'kfJbͻ++ڷRɂak d?͘3*MWaʋՖ6abQǘ?kj*Evhr$I\_L`ŝ9R(",= VZ}Xp&xz.g'$>mվE\V*Ol5Jv8ˮ'_xSN$%*kt̵GgCJ[7IW O2ŷss91jǹ$‹6$(j9Ys|4)1 r$;J4 &KSu:Ȓd4q55~PR29LeDJ'IE9G?'QL m,ٰ^KS,zg,PnuU66EIvěwAيGd P|)Eu4KLLJO`zDҀ\RbDG;;yMp:')$ X<ڪE/']3ȑʴ4 m/4= ' ֱF5+zabnM2ƕLեWO FqS!WKh`T9Nr#ap"e(G吧!P7?Id|.[aݣp[g}{z1H W}Hb>DqX讎 KU:͹)Z.Nnǎɮ P;ivtools-doc/strchooser-main.gif0000644000076500007650000000114407374262634017465 0ustar scottscott00000000000000GIF87arrrlL,(0I8뽃`(dihl뾬 tmx|pH, 2rl:P!R0Zج8nxوnf}:]q[s:=t|vW8ym;|n}uP7B~N9kfL6EǴ֛?ռۺIΌѡx˲6izudOF맰 Jq}/j\nG]Iɓ(S\ɲ˗0cʜ͛8sǟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ3(h& 6F(Vhfv ($&;ivtools-doc/strchooser-popup.gif0000644000076500007650000000461707374262634017714 0ustar scottscott00000000000000GIF87aUUUrrr:::,80I8`(dihl뾠"tmx|pH, 2rl:Pr0ZجV7nఘk9n|]Kv~49?O;BLDb8}6{{}z_ƴĻ͞`Լ7i踿»I塦XZ=kCoSQA|mc/jq7?Dr0%O"(˗0cʜI͛8sɳ'L>_hiѣH*]ʴӧPJJ^F+8p5끳hӪ=+mŮ$ Tڻh ĭATܲv oW.n } *y)Idı9,f8c4\K-'P!*cUa ˡNl^Rv% [Y~PGKL8xȵ_Oc/jwo@l t ~O_Uu{2E8ф=4(x^Aa,qa#J'fHhw0b| ^F[f@c#6C[UE98ݒG6L69VY_M\tVq襢neYG(y̙DZ.fy)b|t Zp)%yb˟Ġuh{CCB֖eGƤ`>#cQdjs*驢B*nWʃ:)j,ȒcIJjWe+6*,r+U#!|{C9l&t]ު%P}6ʨ7:i/<`W`iC;#*f+6.  1J#P'grc1ZAвI򽏱l),4k!=|1ͯ K9`}:RkXu^l/G|g< pp'Vlo ME| b2ùC5xț_QvҎ[~:Oע0:#h:ዏin픺\5W}wh-ƭl%5ƾP?k+ʙOY:8}{OZT.XUރ}iֆ kPU aؖ?90]֌G]S)}!\ ۖĵ t[7OX@hع!8_lȃ 3D܁b0L\AD!X>L`!TP7SD!D+S[4T<31hh 4X+pgbQW ǨB=tZuQ=pԣfb !d4YD(Nb(ODV,MJ1^4HDB%2Jᑋ~6}/SUW޲:f)s{sdIoQ,Or,(MYdf@wNib99Fvq4q@I>(-eBEGV'GEH;~i2LNӁ;ge IBT֊%fU*Up(4]8ih7O5XZ4U!#yԶFj&yŸjDPTgszG굞w$ܡw^YL߰xS:=jYZy61nڷv 3KV3Kߋ\Iwvz oz9Mz͛ԪιlH | 0Gk7 /E+m=0k!6#L SX0{x'EG +XM1 0x,͉}ƑSw sap1 H.Wڢ['e84Y2} -w}6,/`n Bf,k?n3>nWCQP E0 z׬=J@4QJ2V4}vHb5=^`ЂδeGgJ4tK Li6DuUV7ְuI2S"҆ dbZ6u?*ҲЖƧ g*&w9)Bw_Tv0EGm=ksۺ8~nD-q]qv{x9.r?w~oE׍gNU;05ϹeunC;uTpC@1(;7kbMJX:TJ{(U__f7ne]@N.@;ivtools-doc/strchooser.html0000644000076500007650000000070207433262401016725 0ustar scottscott00000000000000 ivtools strchooser example program

    strchooser

    strchooser popups an example string chooser when the Post button is pressed. Written by David B. Hollenbeck.

    main window

    popup window


    next example program text-editor

    up to ivtools home page. ivtools-doc/targetjr-2.6.txt0000644000076500007650000000550607374262634016555 0ustar scottscott00000000000000Instructions for building Target Jr 2.6.0 on Linux with ivtools-0.5.8 or later 0. get lots of disk space freed up (~300Mb). Acquire and unpack iup_2.6.0.tar.gz (from http://www.balltown.cma.com/TargetJr) into some directory (i.e. targetjr/iup_2.6.0). 1. setup these environment variables (adjust pathnames for your system): export BASEDIR=/proj export IVINSTALLED=$BASEDIR/ivtools-0.5 export SYS_IUPACKAGES=$BASEDIR/targetjr/iup_2.6.0 export IUPACKAGEHOME=$SYS_IUPACKAGES export COOLHOME=$SYS_IUPACKAGES/COOL export BITMAP_PATH=$SYS_IUPACKAGES/bitmaps export PATH=$SYS_IUPACKAGES/Scripts/Shell:$SYS_IUPACKAGES/Scripts/Perl:$PATH 1.b. set up a symbolic link to the X11 include directory if not present under /usr/include on your machine: ln -s /usr/X11R6/include/X11 /usr/include/X11 2. copy over an iv-linux.cf from ivtools cp $IVINSTALLED/config/InterViews/iv-linux.cf $SYS_IUPACKAGES/config/InterViews/iv-linux.cf 3. do a "make install" on your copy of ivtools to install binaries and libraries within the ivtools source tree 4. Add a line to the end of config/iuproject.defs to point to the X11R6 libraries on Linux: EXTRA_CCLDLIBS += -L/usr/X11R6/lib 5. Add another line to the end of config/iuproject.defs to point to the ACE libraries in your environment (if you are using an ACE-enabled version of ivtools): EXTRA_CCLDLIBS += -L/proj/ACE_wrappers/ace -lACE 5.b. Comment out the line defining APP_CCDEPLIBS in config/iuproject.defs like this: /* APP_CCDEPLIBS += $(DIR_Templates)/lib.$(ARCH)$(SLASH)*.a */ 6. Add these lines to the front of Templates/Instances/Imakefile: #include EXTRA_CCDEFINES += -DNOREPOS 6.b. Create a dummy initial iuproject_all.defs file (will be autogenerated later): touch config/iuproject_all.defs 7. make the makefiles (the FREEVERSION of target jr will generate "Dropping file" messages at this stage): cd $SYS_IUPACKAGES iumkmf make Makefiles 8. set up this symbolic link to avoid confusing ivtools' Topology library with target jr's: mkdir lib.LINUX cd lib.LINUX ln -s ../SpatialObjects/Topology/LINUX/libTopology.so.1.0 ln -s ../SpatialObjects/Topology/LINUX/libTopology.so.1.0 libTopology.so cd .. 9. do a make all: make all Not everything will build during this stage; the Template libraries require another cycle of "make Makefiles; make all" to build properly. 10. do it again to get everything compiled and linked: make Makefiles make all Everything but Smallg++ should build now. And some automated tests will fail after successfully linking. But the X window executables should be ready to run (with possibly some adjustment of your LD_ELF_LIBRARY_PATH environment variable). See http://www.balltown.cma.com/TargetJr for more information on obtaining and building Target Jr. ivtools-doc/targetjr-3.0beta.txt0000644000076500007650000000303207374262634017374 0ustar scottscott00000000000000Instructions for building Target Jr 3.0beta on Linux with ivtools-0.5.10 or later 0. get lots of disk space freed up (~300Mb). Acquire and unpack iup_3.0beta.tar.gz (from http://www.balltown.cma.com/TargetJr) into some directory (i.e. targetjr/iup_3.0beta). 1. setup these environment variables (adjust pathnames for your system): export BASEDIR=/proj export SYS_IUPACKAGES=$BASEDIR/targetjr/iup_3.0beta export IUPACKAGEHOME=$SYS_IUPACKAGES export COOLHOME=$SYS_IUPACKAGES/COOL export BITMAP_PATH=$SYS_IUPACKAGES/bitmaps export PATH=$SYS_IUPACKAGES/Scripts/Shell:$SYS_IUPACKAGES/Scripts/Perl:$PATH 2. If your ivtools is configured with ACE, change line 224 of config/params.mk from IV_LIBS := -lIVAdditions -lUnidraw -lIV to IV_LIBS := -lIVAdditions -lUnidraw -lIV -L/proj/ACE_wrappers/ace -lACE 3. If using Mesa for OpenGL, change line 235 of config/params.mk from OPENGL_LIBS := -lGLU -lGL to OPENGL_LIBS := -lMesaGLU -lMesaGL and line 240 of config/rules.mk from STDLIBS += $(link-static) $(OPENGL_LIBS) $(link-dynamic) to STDLIBS += $(OPENGL_LIBS) 4. Add this as line 9 of config/linux-gcc.mk: lib_c := -lc 5. invoke configure with the correct pathnames of other components like this: ./configure --with-x --with-iv=/proj/ivtools-0.5 \ --with-fresco=/proj/Fresco97 \ --with-fresco-libs=/proj/Fresco97/Build/lib \ --with-opengl=/proj/Mesa-2.5 \ --with-tcl=/usr 6. run make: make -k all morse will link, but tjrun still has a link error related to COOL templates ivtools-doc/targetjr-3.1-announce.txt0000644000076500007650000000251507374262634020352 0ustar scottscott00000000000000targetjr-3.1 has successfully been built with ivtools substituted for InterViews on Linux. Instructions can be found at http://www.vectaport.com/ivtools/targetjr-3.1.txt. It is almost as simple as substituting a different pathname for the --with-iv argument of the configure script. ivtools can be obtained via http://www.vectaport.com/ivtools/ or as part of the recently announced Debian 2.0 Linux distribution. ivtools contains alternate backward-compatible copies of the original InterViews and Unidraw libraries from Stanford University, and augments them with layered frameworks for Motif look-and-feel, large-scale imagery, and multi-frame and graph-network edit and display. It builds in support for arbitrary numeric rasters (char, short, int, long, float, double) and a variety of image enhancement operators (for display purposes) to the Unidraw application framework. It has been used on a variety of US government funded projects (NASA, ARPA), and is constantly maintained and upgraded by Vectaport Inc.. Documentation for ivtools is available online and via CD-ROM. With a free software copyright identical to InterViews and similar to Target Jr, ivtools may be worth considering for the IU developer working on large-scale custom applications with a focus on Unix and 2D imaging. Scott Johnston Vectaport Inc. http://www.vectaport.com ivtools-doc/targetjr-3.1.txt0000644000076500007650000000624507374262634016552 0ustar scottscott00000000000000Instructions for building Target Jr 3.1 on Linux with ivtools-0.6.* These directions assume an installed copy of ivtools already available in your environment. 0. get lots of disk space freed up (~400Mb). Acquire and unpack ftp://ftp.esat.kuleuven.ac.be/pub/ROBOT/TargetJr/iup_3.1.tgz into some directory (i.e. targetjr-3.1). 1. follow the directions in the targetjr-3.1 INSTALL file to set up your environment variables. After this step reset your CPU environment variable to LINUX instead of linux, and manually set IVINSTALLED to the either the base of the ivtools source tree (if ivtools was installed relative to the source tree) or the directory where ivtools was installed (i.e. /usr/local or /usr/X11R6). 2. If your ivtools is configured with ACE, change line 224 of config/params.mk from IV_LIBS := -lIVAdditions -lUnidraw -lIV to IV_LIBS := -lIVAdditions -lUnidraw -lIV -L/proj/ACE_wrappers/ace -lACE Substitute the correct directory on your system for locating libACE.so. 3. if you have a relatively installed copy of ivtools (i.e. InstallRelative is YES in ivtools-0.6/config/site.def.LINUX), configure like this: ./configure --with-iv=/proj/ivtools-0.6 Substitute the correct directory on your system for locating the ivtools source tree. If you have a non-relative installation of ivtools (i.e. InstallRelative is NO in ivtools-0.6/config/site.def.LINUX), configure like this: ./configure --with-iv=/usr/local Substitute the correct directory on your system for locating the installed ivtools libraries and include files. 4. if you are using ivtools-0.6.7 (and only ivtools-0.6.7 has this problem), apply the following diff to the ivtools source tree, and re-build and re-install. This is a workaround to reconcile separate evolutions to the original InterViews xwindow.c file, and isn't (or won't be) needed for other versions of ivtools: Index: src_x11/xwindow.c diff -c src_x11/xwindow.c:1.4 src_x11/xwindow.c:1.5 *** src_x11/xwindow.c:1.4 Wed Jul 1 15:15:04 1998 --- src/IV-X11/xwindow.c Tue Jul 28 12:47:04 1998 *************** *** 735,740 **** --- 735,746 ---- /** class ApplicationWindow **/ + ApplicationWindow::ApplicationWindow(Glyph* g) + : ManagedWindow(g) + { + _otherdisplay = nil; + } + ApplicationWindow::ApplicationWindow(Glyph* g, const char* display) : ManagedWindow(g) { Index: include_interviews/window.h diff -c include_interviews/window.h:1.2 include_interviews/window.h:1.3 *** include_interviews/window.h:1.2 Tue Jun 30 15:34:40 1998 --- src/include/InterViews/window.h Tue Jul 28 12:47:30 1998 *************** *** 149,155 **** class ApplicationWindow : public ManagedWindow { public: ! ApplicationWindow(Glyph*, const char* display = nil); ~ApplicationWindow(); protected: virtual void compute_geometry(); --- 149,156 ---- class ApplicationWindow : public ManagedWindow { public: ! ApplicationWindow(Glyph*); ! ApplicationWindow(Glyph*, const char* display); ~ApplicationWindow(); protected: virtual void compute_geometry(); 5. run make: make 6. refer back to the INSTALL directions for other options on configuring and building targetjr-3.1 July 1998 Vectaport Inc. ivtools-doc/targetjr.txt0000644000076500007650000000032007374262634016237 0ustar scottscott00000000000000To build TargetJr 2.6 on top of ivtools look at: http://www.vectaport.com/ivtools/targetjr-2.6.txt To build TargetJr 3.0beta on top of ivtools look at: http://www.vectaport.com/ivtools/targetjr-3.0beta.txt ivtools-doc/techinfo.html0000644000076500007650000001076710340662416016346 0ustar scottscott00000000000000 ivtools technical info

    ivtools technical info

    ivtools is a collection of C++ frameworks for developing custom drawing editors and spatial data servers that incorporates InterViews 3.1 and Unidraw (from Stanford and Silicon Graphics). Here is an overview of the layered frameworks of ivtools. The following is a list of libraries that comprise ivtools, most of them with more information available on-line:

  • Libraries
    • IV The base InterViews library. Contains base classes for glyphs and 2.6 interactors plus helper Dispatch, TIFF, Math, OS classes (reference manual) (no frames).
    • Unidraw The structured graphics library. Actually a general framework for constructing graphical editors.
    • UniIdraw: librarification of 3.1 idraw (adds a few extra features to Unidraw)
    • ComUtil: command interpreter C library
    • Attribute: attribute library based on ComUtil
    • ComTerp: command interpreter library
    • IVGlyph: iv-3.1 glyph extensions
    • AttrGlyph/ComGlyph: dialog boxes that leverage Attribute and ComTerp
    • Dispatch/AceDispatch: layering of ACE Reactor under the InterViews Dispatcher
    • OverlayUnidraw: extended Unidraw framework
    • ComUnidraw: command interpreter extensions to Unidraw
    • FrameUnidraw: multi-frame extensions to Unidraw
    • GraphUnidraw/TopoFace: graph-oriented extensions to Unidraw
    • DrawServ: layer to combine graph and multi-frame.
  • Sample Programs   /   Applications
    • iclass An interactor based C++ class browser. Lets you cruise the class hierarchy from C++ header files (text based, not graphical.)
    • idemo: Glyph demonstration program. Shows the usual GUI widgets using OpenLook, Motif or SGIMotif look and feel.
    • idraw: Unidraw based drawing editor. Edit shapes and text by direct manipulation, many tools and commands, save drawings in PostScript.
    • drawtool: extended version of idraw
    • comdraw: drawtool with command interpreter
    • flipbook multi-frame editor based on comdraw
    • graphdraw: connected-graph editor based on comdraw
    • drawserv: comdraw with multi-frame and graph editing both folded in.

    ivtools makes use of:

  • clippoly polygon intersection software from Klamer Schutte
  • ACE framework for middleware mechanisms.

    Here is the InterViews ftp site at Stanford , where you can get a wide variety of documentation and example source code, notably papers on Unidraw, structured graphics, and glyphs. Here are local copies for your convenience (Unidraw/structured graphics/glyphs). Here is info on X Windows.

    ivtools-doc/text-editor-README.txt0000644000076500007650000000321607374262634017627 0ustar scottscott00000000000000 Simple InterViews Text Editor ----------------------------- This is my first version of an InterViews 3.1 texteditor class. I have tried to implement a simple text editor that can be used in IV 3.1 applications. The goal was _not_ to implement a full-featured editor (we have emacs, don't we (-; ). It uses the 2.6 TextEditor/TextBuffer classes and was inspired by some code posted by Frank Zenner (zenner@dfki.uni-sb.de) a few month ago. Even if I have not used any of his code directly it was very useful as an introduction of how 2.6 classes can be used. Some features are: - loads/saves buffer from/to files - dynamically allocates memory when buffer expands - supports selectons (both primary and clipboard) from the editor - have emacs-style (and Sun keyboard) key mappings - popup-menu to load/save files - Somewhat similar to Sun's Text Editor (left mouse button selects, middle mouse button expand selection, right mouse button gives a popup-menu) - double-click selects word, tripple-click selects line I do not consider my work as completed, but I believe the editor is usable. I have never used 2.6 classes before and I'm sure it could have been structured in a better way. Comments are welcome! Things plan to do (if I could find the time): - add text search popup - add at least one level of undo - enable definition of menus and key mappings from resources - add popup to enable specification of find patterns - I bet there are bugs, but not currently known by me... - add many more edit functions to the EivTextEditor class (the list could be much longer, but this is what I plan to implement) Have Fun! /Janne (janne@torpa.se) ivtools-doc/text-editor.gif0000644000076500007650000000553707374262634016632 0ustar scottscott00000000000000GIF87a UUU檪rrr:::L, 80I8ͻ`(dihlp,tmx|pH,Ȥrl:̀tJZجvzxL.znь$P~qsP- t =# ϲ E ߷*[)˷ŋ'C5CAÎ >FH˖&9RI)q˛8CT,s  o'*%ʴ)[괪ZP#HmׯP4:KlM`Ӫ}Ь۱]Q]K.SQ Ha#쀱ʼnDn1y` K!PzN\brbҊ3pگȰG?0݁tk'2z-􆉗'! + aΚUfvق{z_wkO3,qc{^lypk׳{W}m w}y_`Was؃8[za|xHQp}Ao.zhcyX#j0xA^6IJ88wUf#x߈=8͉EhԽed'd{G!Zrej;:H6y"I}a&~x5‰gz薾i ͜ܡzX6XHez*+Y'uF 锨Hۮ؉#é:T}&z]W f|Jʆ쵆κ*yEWڮm+&+";fqi\}E+~ujZp(0|t* K0qid`1ŗl7bg,;/gWAws82Y@}CZ5H'] 2PGMм"99Z)p`@V)hCo^upK0=FO5oJ(+ ]P\שI`#0:@8<5X5 1ݘF`zt$EIZrhft/ITt'CIJe2&,*3rJ0p"cIr.50]Rs, It1,|&4)i%6Imr*)NR<':9uZ$59Lj x5) Y-ն\w׾b(jL׻6k`3~v.-[D[~vcw;us=n[{u[nU&u==L{toD{s<:\osϼp27<rīwl6^k:V^okѺvޫj:^jꙺiy:ަia^?iI:ߣh16_h:Vߠh~v_߿g9xߝ_gѹr_f9lߚffLdfgն^^v0` `'!k/{f h ("ȁ  &Us慂ІĶ'FpÂE _< FHB8F3&H>PY1UXW6x]x*[8jcXHHTH_ixaRo_q(_83u`wa>Hh}b0 %؈8Xx7 s8Xx؊8XX󀃸؋H;ivtools-doc/text-editor.html0000644000076500007650000000065207433262401017006 0ustar scottscott00000000000000 ivtools text-editor example program

    text-editor

    The text-editor example program is a simple Emacs-like text editor, with glyph-based scroll bars and pop-up File/Edit/View menus. Based on code from Jan Andersson of Torpa Konsult AB.


    next example program timestamp

    up to ivtools home page. ivtools-doc/timestamp.gif0000644000076500007650000000166707374262634016365 0ustar scottscott00000000000000GIF87a(:::UUUrrr,(0I8ͻ`(ahlp,tmx|7š@,Ȥrl:ШtJZجvN BxL.z]|Ni{~tHJi@41FbžFȸDXGɷS٨毻߸NDO$Nj{aJ\Bp&{.bL(C2I$eK/Y"qRG2)⢋2hHDjR%Lg֌ ӫ*uJjMXTXj-5_WOVmȵv+p(gRPEf]X֪8 ㅙo\Y *翦oE}J,4.lcޭR4k,¹N.4甝=޻vg?36ٵto8荟2Cg/9~SS'f)vSߕ fr1{هO'y%t!;ۍAHJ1'WJUw~enxcq؜a m**T^W >(8ZMĠL\iɥZa%T cwbPIbn.#Ii:Ǜuqiћ);灁r1 Bzh?Rj`ZhJʧCjMA;j뭸뮼Һ䬽+FP 69+kZ(v+ʡz+z~*+Im,plo 7 pG,OlAw ,$l2$,0,s ;ivtools-doc/timestamp.html0000644000076500007650000000050007433262401016531 0ustar scottscott00000000000000 ivtools timestamp example program

    timestamp

    timestamp popups a time display that can be modified by pushing buttons.


    first example program bdvtable

    up to ivtools home page. ivtools-doc/tjlogo.gif0000644000076500007650000000114407374262634015646 0ustar scottscott00000000000000GIF87aQQekeL]׶ ,QQ.I'8 'hd:lO+;t-q#SpAIl*Sv[̑8Zi#"P] Q脘`ĴƕOoJ*Ő %05Փ׆ lh흹+cPL2#B]+o߷Ze:#YFIxXdžgeY'rlVdh &gEڝ{ :v(rR ;̗mcjhn䶉螯)B`{ O⅋i '6Vm}o3̕'w~^ SJ c)Rr*;ivtools-doc/unidraw.ps0000644000076500007650000156720107374262634015712 0ustar scottscott00000000000000%! % The following defines procedures assumed and used by program "dvi2ps" % % $Header: /cvsroot/ivtools/ivtools-doc/COPYRIGHT.proposed.txt,v 1.2 2010/01/17 00:42:06 johnston Exp $ % % Original By: Neal Holtz, Carleton University, Ottawa, Canada % % % June, 1985 % Seriously hacked by Van Jacobson, LBL % % Modifications by Glenn Trewitt, Stanford % % (incorporated by Joe Pallas, Stanford ) % To convert this file into a downloaded file instead of a header % file, uncomment all of the lines beginning with %-% %-%0000000 % Server loop exit password %-%serverdict begin exitserver %-% systemdict /statusdict known %-% {statusdict begin 9 0 3 setsccinteractive /waittimeout 300 def end} %-% if /TeXDict 200 dict def % define a working dictionary TeXDict begin % start using it. % units are in "dots" (Resolution/inch) %%%%%%%%%%%%%%%%%%%%% Page setup (user) options %%%%%%%%%%%%%%%%%%%%%%%% % dvi2ps will output coordinates in the TeX coordinate system: % (0,0) is 1" down and in from top left, with y +ive downward % 1 unit/device-pixel % The default PostScript coordinate system is: % (0,0) at bottom left, y +ive up, 72 units/inch % The following code was extensively hacked over to make it more or less % device independent, and to NOT use initgraphics and setmatrix, which make it % difficult or impossible to include a PS file in another. The general idea % is that, for each page size, we create a transformation matrix "Mtrx" that % can be concat-ed with the CTM (in @bop1). % Dvi2ps is now responsible for emitting the following, but we also do it here % for compatibility with older versions /Resolution 300 def % units are in pixels % We keep the current "normal" matrix here BEFORE we do the DVI transform % for each page. Updated at the beginning of each page; used by @special. /DefaultMatrix matrix def /Inch {Resolution mul} def % converts inches to number of pixels % KLUDGE --- To get around lack of letter, note, and legal on QMS printers % YUCK!!! wood@cascade % /letter where {pop} {/letter{}def} ifelse /legal where {pop} {/legal {}def} ifelse /note where {pop} {/note {}def} ifelse % The page selection operators used to be called here. Very wrong: % On some printers (such as LaserWriter) these operators clear the % framebuffer and initialize the graphics state. If dvi2ps output is % included in another PostScript document, or if a prolog/trailer is % wrapped around it, things would be totally screwed -- the pre-existing % image would be lost and the preset graphics state would be lost. % % These operators (note, letter, legal) do different things on different % printers -- the LaserWriter clears the frambuffer and does an % initgraphics, while other printers merely choose a paper tray. % % Page selection is properly done by a print manager (the spooler, in the % case of UN*X), and should come at the start of the whole document. % % Because of these facts, I've commented the page selection operators out. /@letter { %letter 72 Resolution div dup neg matrix scale % set scaling to 1/pixel /Mtrx exch def Mtrx 4 72 put Mtrx 5 720 put % origin to top-left } def % note mode is like letter, except it uses less VM /@note { %note 72 Resolution div dup neg matrix scale % set scaling to 1/pixel /Mtrx exch def Mtrx 4 72 put Mtrx 5 720 put % origin to top-left } def /@landscape { %letter [ 0 72 Resolution div dup 0 72 72 ] % set scaling to 1/pixel /Mtrx exch def % and origin to top-left } def /@legal { %legal 72 Resolution div dup neg matrix scale % set scaling to 1/pixel /Mtrx exch def Mtrx 4 72 put Mtrx 5 936 put % origin to top-left } def /@manualfeed { statusdict /manualfeed true put } def % n @copies - set number of copies /@copies { /#copies exch def } def %%%%%%%%%%%%%%%%%%%% Procedure Defintions %%%%%%%%%%%%%%%%%%%%%%%%%% % id @newfont - initialize a new font dictionary /@newfont { /newname exch def newname 7 dict def % allocate new font dictionary newname load begin /FontType 3 def /FontMatrix [1 0 0 -1 0 0] def /FontBBox [0 0 1 1] def /BitMaps 128 array def /BuildChar {CharBuilder} def /Encoding 128 array def 0 1 127 {Encoding exch /.undef put} for end newname newname load definefont pop } def % the following is the only character builder we need. it looks up the % char data in the BitMaps array, and paints the character if possible. % char data -- a bitmap descriptor -- is an array of length 6, of % which the various slots are: /ch-image {ch-data 0 get} def % the hex string image /ch-width {ch-data 1 get} def % the number of pixels across /ch-height {ch-data 2 get} def % the number of pixels tall /ch-xoff {ch-data 3 get} def % number of pixels below origin /ch-yoff {ch-data 4 get} def % number of pixels to left of origin /ch-tfmw {ch-data 5 get} def % spacing to next character % fontdict ch Charbuilder - -- image one character /CharBuilder { /ch-code exch def % save the char code /font-dict exch def % and the font dict. /ch-data font-dict /BitMaps get ch-code get def % get the bitmap ch-data null eq not { ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub setcachedevice ch-width ch-height true [1 0 0 1 ch-xoff ch-yoff] {ch-image} imagemask } if } def % fontdict @sf - -- make that the current font /@sf { setfont } def % in the following, the font-cacheing mechanism requires that % a name unique in the particular font be generated % char-data ch @dc - -- define a new character bitmap in current font /@dc { /ch-code exch def dup 0 get length 2 lt { pop [ <00> 1 1 0 0 8.00 ] } % replace <> with null if /ch-data exch def currentfont /BitMaps get ch-code ch-data put % generate a unique name simply from the character code currentfont /Encoding get ch-code dup ( ) cvs cvn put } def /@DRAFTF { gsave newpath /Helvetica-Bold findfont setfont (Draft) dup stringwidth pop 8.875 exch div dup 72 mul dup scale 52.3 rotate 2.5 exch div -.35 translate 0.95 setgray 0 0 moveto show grestore } def /@DRAFTM { gsave newpath /Helvetica-Bold findfont 72 scalefont setfont 0.95 setgray 576 702 moveto (Draft) stringwidth exch neg exch neg rmoveto (Draft) show grestore } def % n @bop0 - -- begin the char def section of a new page /@bop0 { pop } def % n @bop1 - -- begin a brand new page /@bop1 { pop DefaultMatrix currentmatrix pop % save it away /SaveImage save def Mtrx concat } def /@draft { /@bop1 { DefaultMatrix currentmatrix pop 1 le {@DRAFTF} {@DRAFTM} ifelse /SaveImage save def Mtrx concat } def } def % - @eop - -- end a page /@eop { SaveImage restore showpage } def % - @start - -- start everything /@start { @letter /@TeXSave save def } def % - @end - -- done the whole shebang /@end { end } def % x y p - -- move to position /p { moveto } bind def % x r - -- move right /r { 0 rmoveto } bind def % string s - -- show the string /s { show } bind def % x string m - -- move right then show string /m { exch 0 rmoveto show } bind def % ch c - -- show the character (code given) /c { c-string dup 0 4 -1 roll put show } bind def /c-string ( ) def % dx dy ru - -- set a rule (rectangle) /ru { /dy exch neg def % because dy is height up from bottom /dx exch def /x currentpoint /y exch def def % remember current point newpath x y moveto dx 0 rlineto 0 dy rlineto dx neg 0 rlineto closepath fill x y moveto } bind def /@MacSetUp { userdict /md known % if md is defined { userdict /md get type /dicttype eq % and if it is a dictionary { /MacDrwgs true def md begin % then redefine some stuff /letter {} def /note {} def /legal {} def /od{txpose 1 0 mtx defaultmatrix dtransform exch atan/pa exch def newpath clippath mark {transform{itransform moveto}} {transform{itransform lineto}} { 6 -2 roll transform 6 -2 roll transform 6 -2 roll transform { itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto } } {{closepath}} pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if }def /txpose{ pxs pys scale ppr aload pop por { noflips { pop exch neg exch translate pop 1 -1 scale }if xflip yflip and { pop exch neg exch translate 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate }if xflip yflip not and { pop exch neg exch translate pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 translate }if yflip xflip not and { ppr 1 get neg ppr 0 get neg translate }if } { noflips { translate pop pop 270 rotate 1 -1 scale }if xflip yflip and { translate pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate }if xflip yflip not and { translate pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 translate }if yflip xflip not and { translate pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 exch translate }if }ifelse scaleby96 { ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy translate .96 dup scale neg exch neg exch translate }if }def /cp {pop pop showpage pm restore}def end }if } if } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% the \special command junk %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The structure of the PostScript produced by dvi2ps for \special is: % @beginspecial % - any number of @hsize, @hoffset, @hscale, etc., commands % @setspecial % - the users file of PostScript commands % @endspecial % The @beginspecial command recognizes whether the Macintosh Laserprep % has been loaded or not, and redfines some Mac commands if so. % The @setspecial handles the users shifting, scaling, clipping commands % The following are user settable options from the \special command. /@SpecialDefaults { /hs 8.5 Inch def /vs 11 Inch def /ho 0 def /vo 0 def /hsc 1 def /vsc 1 def /CLIP false def } def % d @hsize - specify a horizontal clipping dimension % these 2 are executed before the MacDraw initializations /@hsize {/hs exch def /CLIP true def} def /@vsize {/vs exch def /CLIP true def} def % d @hoffset - specify a shift for the drwgs /@hoffset {/ho exch def} def /@voffset {/vo exch def} def % s @hscale - set scale factor /@hscale {/hsc exch def} def /@vscale {/vsc exch def} def /@setclipper { hsc vsc scale CLIP { newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip } if } def % this will be invoked as the result of a \special command (for the % inclusion of PostScript graphics). The basic idea is to change all % scaling and graphics back to defaults that were restored by the most % recent showpage, but to shift the origin to the current position on the % page. % % We draw the figure at the current location. /@beginspecial % - @beginspecial - -- enter special mode { /SpecialSave save def /showpage {} def % prevent showpage from working % the following magic incantation establishes the current point as % the users origin, and reverts back to default scalings, rotations currentpoint transform % device coords of CP DefaultMatrix setmatrix % back to "normal" CTM itransform translate % move to CP @SpecialDefaults % setup default offsets, scales, sizes @MacSetUp % fix up Mac stuff } def /@setspecial % to setup user specified offsets, scales, sizes (for clipping) { MacDrwgs {md begin /pxt ho def /pyt vo neg def end} {ho vo translate @setclipper} ifelse } def /@endspecial % - @endspecial - -- leave special mode { SpecialSave restore } def /MacDrwgs false def % will get set if we think the Mac LaserPrep file has been loaded %! % All software, documentation, and related files in this distribution of % psfig/tex are Copyright (c) 1987 Trevor J. Darrell % % Permission is granted for use and non-profit distribution of psfig/tex % providing that this notice be clearly maintained, but the right to % distribute any portion of psfig/tex for profit or as part of any commercial % product is specifically reserved for the author. % % % psfigTeX PostScript Prolog % $Header: /cvsroot/ivtools/ivtools-doc/COPYRIGHT.proposed.txt,v 1.2 2010/01/17 00:42:06 johnston Exp $ % /psf$TeXscale { 65536 div } def % Changed to use DefaultMatrix instead of currentmatrix /DocumentInitState [ /DefaultMatrix cvx currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def % x y bb-llx bb-lly bb-urx bb-ury startFig - /startTexFig { /psf$SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /psf$ury exch psf$TeXscale def /psf$urx exch psf$TeXscale def /psf$lly exch psf$TeXscale def /psf$llx exch psf$TeXscale def /psf$y exch psf$TeXscale def /psf$x exch psf$TeXscale def currentpoint /psf$cy exch def /psf$cx exch def /psf$sx psf$x psf$urx psf$llx sub div def % scaling for x /psf$sy psf$y psf$ury psf$lly sub div def % scaling for y psf$sx psf$sy scale % scale by (sx,sy) psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def @MacSetUp } def % llx lly urx ury doclip - (args in figure coordinates) /doclip { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % - endTexFig - /endTexFig { end psf$SavedState restore } def %%%% Additions by LA Carr to reencode Adobe fonts as TeX fonts (almost) %%%% Based on routine in LaserWriter Cookbook /ReEncodeForTeX { /newfontname exch def /basefontname exch def /TeXstr 30 string def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall basefontdict /MathFontName known not { /TeXvec basefontname TeXstr cvs (Courier) search { pop pop pop TeXcourvec } { pop TeXnormalvec } ifelse def TeXvec aload pop TeXvec length 2 idiv { newfont /Encoding get 3 1 roll put } repeat } if newfontname newfont definefont pop } def /TeXnormalvec [ 8#014 /fi 8#015 /fl 8#020 /dotlessi 8#022 /grave 8#023 /acute 8#024 /caron 8#025 /breve 8#026 /macron 8#027 /ring 8#030 /cedilla 8#031 /germandbls 8#032 /ae 8#033 /oe 8#034 /oslash 8#035 /AE 8#036 /OE 8#037 /Oslash 8#042 /quotedblright 8#074 /exclamdown 8#076 /questiondown 8#134 /quotedblleft 8#136 /circumflex 8#137 /dotaccent 8#173 /endash 8#174 /emdash 8#175 /hungarumlat 8#176 /tilde 8#177 /dieresis ] def /TeXcourvec [ 8#016 /exclamdown 8#017 /questiondown 8#020 /dotlessi 8#022 /grave 8#023 /acute 8#024 /caron 8#025 /breve 8#026 /macron 8#027 /ring 8#030 /cedilla 8#031 /germandbls 8#032 /ae 8#033 /oe 8#034 /oslash 8#035 /AE 8#036 /OE 8#037 /Oslash 8#074 /less 8#076 /greater 8#134 /backslash 8#136 /circumflex 8#137 /underscore 8#173 /braceleft 8#174 /bar 8#175 /braceright 8#177 /dieresis ] def /TeXPSmakefont { % defines a routine for generating PS fonts, fudged! /TeXsize exch def findfont [ TeXsize 0 0 TeXsize neg 0 0 ] makefont } def % fontname basefontname angle ObliqueFont - % Create a General Oblique font /ObliqueFont { /ObliqueAngle exch def /ObliqueBaseName exch def /ObliqueFontName exch def /ObliqueTransform [1 0 ObliqueAngle sin ObliqueAngle cos div 1 0 0] def /basefontdict ObliqueBaseName findfont ObliqueTransform makefont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName ObliqueFontName put ObliqueFontName newfont definefont pop } def % Palatino-ItalicUnslanted? You must be joking! % fontname basename SmallCapsFont - Create a General SmallCaps font /SmallCapsFont { /SmallCapsBaseName exch def /SmallCapsFontName exch def /basefontdict SmallCapsBaseName findfont def /newfont basefontdict maxlength 10 add dict def newfont begin /FontName SmallCapsFontName def /FontBaseDict basefontdict 1000 scalefont def /FontSCDict FontBaseDict .8 scalefont def /FontType 3 def /BuildChar {SmallCapChar} def /FontMatrix dup basefontdict exch get def /FontBBox dup basefontdict exch get def /Encoding dup basefontdict exch get def end SmallCapsFontName newfont definefont pop } def % fontdict ch SmallCapChar - % It shouldn't be so damn hard to do this (make one font out % of two others) but I tried several dozen variations on this % theme until I found something that worked. -- vj /SmallCapChar { /achar (A) def achar exch 0 exch put begin achar 0 get dup 97 ge exch 122 le and { % handle 'a' through 'z' specially achar 0 achar 0 get 32 sub put FontSCDict } { FontBaseDict } ifelse setfont achar stringwidth FontBBox setcachedevice newpath 0 0 moveto achar show end } def /MathEncodingVec [ /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon1 /Phi /Psi /Omega /alpha /beta /gamma /delta /epsilon /zeta /nu /theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi /omega /epsilon /theta1 /omega1 /rho /sigma /phi1 /arrowleft /arrowleft /arrowright /arrowright /suchthat /congruent /proportional /angle /zero /one /two /three /four /five /six /seven /eight /nine /period /comma /less /slash /greater /asteriskmath /partialdiff /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 /registerserif /copyrightserif /trademarkserif /logicalor /logicaland /section /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 /dotlessi /j /weierstrass /macron /breve ] def % the following gives the character codes of the above characters % in their font. I.e., this is the character we have to hand "show" % to image the characters above. /MathCharVec [ 71 68 81 76 88 80 83 161 70 89 87 97 98 103 100 101 122 110 113 105 107 108 109 110 120 112 114 115 116 117 102 99 121 119 101 74 118 114 115 106 172 172 174 174 39 64 181 208 48 49 50 51 52 53 54 55 56 57 46 44 60 47 62 42 182 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 210 211 212 218 217 167 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 245 106 195 197 198 ] def % this array tells which font dictionary holds each character above % (0 = basefont, 1 = symbol (maybe slanted), 2 = symbol (unslanted)). /MathDictVec [ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 ] def % fontname basename symbolname symbolbase angle MathOblique - % Create a "math" font with the symbol font characters slanted % by "angle" /MathOblique { 3 copy ObliqueFont pop pop MathFont } def % fontname basename symbolname MathFont - Create a math italic font % % We build this font out of the base font & the symbol font % using an encoding vec as close as we can get to cmmi10 with % standard postscript characters. An array parallel to the % encoding vector tells which font dictionary to use for a % particular character. /MathFont { /MathSymName exch def /MathBaseName exch def /MathFontName exch def /basefontdict MathBaseName findfont def /newfont basefontdict maxlength 10 add dict def newfont begin /FontName MathFontName def /FontDictArray [ basefontdict 1000 scalefont MathSymName findfont 950 scalefont /Symbol findfont 950 scalefont ] def /FontType 3 def /BuildChar {MathFontChar} def /FontMatrix dup basefontdict exch get def /FontBBox dup basefontdict exch get def % the encoding vector is a copy of the original font's % encoding, modified "appropriately". /Encoding dup basefontdict exch get dup length array copy def /WhichFont MathDictVec def /WhichChar MathCharVec def MathEncodingVec Encoding copy pop /achar (A) def end MathFontName newfont definefont pop } def % fontdict ch MathFontChar - % (there's some serious magic going on here: see note on % SmallCapChar above -- vj). /MathFontChar { exch begin achar exch 0 exch put FontDictArray WhichFont achar 0 get get get setfont achar dup 0 get WhichChar exch get 0 exch put achar stringwidth FontBBox setcachedevice newpath 0 0 moveto achar show end } bind def /@flushfonts { @TeXSave restore /@TeXSave save def} def end % revert to previous dictionary TeXDict begin %%Title: TR-draft.dvi %%Creator: dvi2ps %%EndProlog /Resolution 300.000000 def @start 1 @bop0 /Times-Roman /t-rom.510 ReEncodeForTeX /t-rom.510 /t-rom.510 70.568701 TeXPSmakefont def /Times-Roman /t-rom.360 ReEncodeForTeX /t-rom.360 /t-rom.360 49.813200 TeXPSmakefont def /Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.115401 TeXPSmakefont def /Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.511000 TeXPSmakefont def /Times-Bold /t-bol.300 ReEncodeForTeX /t-bol.300 /t-bol.300 41.511000 TeXPSmakefont def /Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.208800 TeXPSmakefont def /cmsy10.300 @newfont cmsy10.300 @sf [<07E0001FF8003FFC007FFE007FFE00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF007FFE007FFE00 3FFC001FF80007E000> 24 16 -2 -2 20.755] 15 @dc 1 @bop1 t-rom.510 @sf 438 160 p (Unidraw:)s 32 r 65 c 23(Framework)m 26(for)m 25(Building)m 471 252 p (Domain-Speci\014c)s 26(Graphical)m 25(Editors)m t-rom.360 @sf 578 372 p (John)s 17(M.)m 17(Vlissides)m 17(and)m 17(Mark)m 16(A.)m 17(Linton)m 776 430 p (Stanford)s 15(University)m t-bol.420 @sf 0 551 p (Abstract)s t-rom.300 @sf 0 644 p (Unidraw)s 17(is)m 18 r 97 c 18(framework)m 19(for)m 17(creating)m 18(object-oriented)m 0 694 p (graphical)s 21(editors)m 21(in)m 22(domains)m 21(such)m 23(as)m 22(technical)m 22(and)m 0 744 p (artistic)s 18(drawing,)m 20(music)m 20(composition,)m 19(and)m 19(CAD.)m 19(The)m 0 793 p (Unidraw)s 24(architecture)m 24(simpli\014es)m 24(the)m 24(construction)m 22(of)m 0 843 p (these)s 18(editors)m 17(by)m 17(providing)m 16(programming)m 17(abstractions)m 0 893 p (that)s 20(are)m 20(common)m 21(across)m 21(domains.)m 38(Unidraw)m 19(de\014nes)m 0 943 p (four)s 16(basic)m 18(abstractions:)m t-bol.300 @sf 24(components)m t-rom.300 @sf 17(encapsulate)m 18(the)m 0 993 p (appearance)s 17(and)m 15(behavior)m 15(of)m 14(objects,)m t-bol.300 @sf 16(tools)m t-rom.300 @sf 14(support)m 14(di-)m 0 1043 p (rect)s 19(manipulation)m 17(of)m 18(components,)m t-bol.300 @sf 20(commands)m t-rom.300 @sf 19(de\014ne)m 0 1092 p (operations)s 15(on)m 15(components,)m 17(and)m t-bol.300 @sf 16(external)m 19 r 114 c (epr)s (esenta-)s 0 1142 p (tions)s t-rom.300 @sf 16(de\014ne)m 17(the)m 16(mapping)m 15(between)m 17(components)m 16(and)m 17 r 97 c 0 1192 p (\014le)s 10(or)m 9(database.)m 19(Unidraw)m 9(also)m 9(supports)m 9(multiple)m 8(views,)m 0 1242 p (graphical)s 15(connectivity)m -2 r 44 c 14(and)m 16(data\015ow)m 16(between)m 16(compo-)m 0 1292 p (nents.)s 26(This)m 17(paper)m 16(presents)m 17(Unidraw)m 16(and)m 16(three)m 17(proto-)m 0 1341 p (type)s 15(domain-speci\014c)m 16(editors)m 15(we)m 16(have)m 16(developed)m 15(with)m 0 1391 p (it:)s 15 r 97 c 11(schematic)m 11(capture)m 11(system,)m 11 r 97 c 11(user)m 10(interface)m 11(builder)m -1 r 44 c 0 1441 p (and)s 14 r 97 c 15(drawing)m 13(editor)m -1 r 46 c 17(Experience)m 15(indicates)m 14 r 97 c 15(substan-)m 0 1491 p (tial)s 14(reduction)m 13(in)m 14(implementation)m 13(time)m 14(and)m 15(ef)m (fort)s 13(com-)m 0 1541 p (pared)s 14(with)m 13(existing)m 12(tools.)m t-bol.300 @sf 42 1590 p (Keywords:)s t-rom.300 @sf 18(object-oriented)m 11(graphical)m 12(editors,)m 12(direct)m 0 1640 p (manipulation)s 12(user)m 14(interfaces,)m 14(graphical)m 14(constraints)m t-bol.420 @sf 0 1779 p 49 c 58(Intr)m (oduction)s t-rom.300 @sf 0 1871 p (Graphical)s 21(editors)m 20(represent)m 21(familiar)m 21(objects)m 21(visually)m 0 1921 p (and)s 14(allow)m 13 r 97 c 14(user)m 14(to)m 13(manipulate)m 13(the)m 14(representations)m 13(di-)m 0 1971 p (rectly)s -2 r 46 c 16(Unfortunately)m -3 r 44 c 9(these)m 10(editors)m 8(are)m 11(dif)m (\014cult)s 7(to)m 9(build)m 0 2021 p (with)s 10(general)m 12(user)m 12(interface)m 11(tools)m 11(because)m 12(of)m 11(the)m 12(special)m 0 2071 p (requirements)s 16(of)m 16(graphical)m 16(editors.)m 25(For)m 16(example,)m 18(user)m 0 2120 p (interface)s 10(toolkit)m -1 r 115 c 8(provide)m 8(buttons,)m 9(scroll)m 9(bars,)m 11(and)m 10(ways)m 0 2170 p (to)s 12(assemble)m 14(them)m 13(into)m 12 r 97 c 13(speci\014c)m 14(interface,)m 13(but)m 12(they)m 12(do)m 0 2220 p (not)s 16(of)m (fer)s 15(primitives)m 15(for)m 16(buildin)m -1 r 103 c 15(drawing)m 15(editors)m 16(that)m 0 2270 p (produce)s 15(PostScript)m 15(or)m 15(schematic)m 17(capture)m 16(systems)m 16(that)m 0 2320 p (produce)s 10(netlists.)m 16(Higher)m (-level)s 8(abstractions)m 9(are)m 11(required)m 0 2369 p (to)s 13(make)m 15(such)m 14(editors)m 13(easier)m 14(to)m 13(implement.)m 42 2419 p 87 c -2 r 101 c 11(use)m 13(the)m 12(term)m t-bol.300 @sf 12(graphical)m 13(object)m 15(editor)m t-rom.300 @sf 12(for)m 12(an)m 12(ap-)m 0 2469 p (plication)s 10(that)m 11(lets)m 12(users)m 12(manipulate)m 11(graphical)m 12(represen-)m 0 2501 p 366 2 ru t-rom.240 @sf 60 2540 p (This)s 11(research)m 9(has)m 10(been)m 10(supported)m 8(by)m 10(the)m 11(NASA)m 11(CASIS)m 12(project)m 0 2579 p (under)s 10(Contract)m 11(NAGW)m 12(419)m 11(and)m 10(by)m 11(the)m 11(Quantum)m 10(project)m 11(through)m 10 r 97 c 0 2619 p (gift)s 11(from)m 11(Digital)m 11(Equipment)m 10(Corporation.)m 60 2658 p 84 c -1 r 111 c 8(appear)m 7(in)m 9(the)m 9(Proceedings)m 8(of)m 8(the)m 9(ACM)m 9(SIGGRAPH/SIGCHI)m 0 2698 p (User)s 7(Interface)m 7(Software)m 7(and)m 6 r 84 c -1(echnolo)m -1(gies)m 5('89)m 7(Conference,)m 6 r 87 c (illiams-)s 0 2737 p (bur)s (g,)s 10 r 86 c -1(ir)m (ginia,)s 9(November)m 9(1989.)m t-rom.300 @sf 1035 551 p (tations)s 17(of)m 18(domain-speci\014c)m 19(objects)m 18(and)m 18(generates)m 19(one)m 1035 601 p (or)s 16(more)m 16(static)m 15(representations.)m 25(Most)m 15(graphical)m 16(object)m 1035 651 p (editors)s 13(also)m 14(feature)m cmsy10.300 @sf 1076 726 p 15 c t-rom.300 @sf 21(non-interactive)m 14(operations,)m 15(usually)m 15(invoked)m 14(from)m 1118 776 p (menus,)s 15(that)m 13(af)m (fect)s 13(objects')m 14(state;)m cmsy10.300 @sf 1076 854 p 15 c t-rom.300 @sf 21(structuring)m 12(techniques)m 14(for)m 13(building)m 12(hierarchies)m 14(of)m 1118 904 p (objects;)s cmsy10.300 @sf 1076 983 p 15 c t-rom.300 @sf 21(mechanisms)m 32(for)m 31(propagating)m 29(information)m 29(and)m 1118 1033 p (maintaining)s 25(graphical)m 26(constraints)m 25(between)m 27(ob-)m 1118 1083 p (jects;)s cmsy10.300 @sf 1076 1162 p 15 c t-rom.300 @sf 21(and)m 14 r 97 c 14(persistent)m 13(representation)m 13(to)m 13(store)m 13(objects)m 14(in)m 1118 1211 p (non-volatil)s -1 r 101 c 12(form.)m t-bol.300 @sf 1035 1286 p (Unidraw)s t-rom.300 @sf 15(is)m 14 r 97 c 16(collection)m 13(of)m 15(programming)m 14(abstractions)m 1035 1336 p (that)s 12(simpli\014es)m 13(the)m 13(construction)m 11(of)m 13(graphical)m 12(object)m 13(ed-)m 1035 1386 p (itors.)s 17(Unidraw)m 12(reduces)m 14(the)m 12(time)m 13(it)m 12(takes)m 13(to)m 12(produce)m 13(an)m 1035 1436 p (editor)s 17(for)m 17 r 97 c 19(domain)m 17(by)m 18(providing)m 15(functionality)m 16(char-)m 1035 1485 p (acteristic)s 18(of)m 18(graphical)m 18(object)m 18(editors;)m 19(it)m 18(does)m 18(not)m 18(of-)m 1035 1535 p (fer)s 19(toolkit)m 16(features)m 19(\(it)m 17(is)m 19(used)m 18(in)m 18(conjunction)m 17(with)m 18 r 97 c 1035 1585 p (toolkit)s -1(\),)m 13(nor)m 14(does)m 14(it)m 14(assume)m 15(the)m 14(role)m 14(of)m 14 r 97 c 15(program)m 14(de-)m 1035 1635 p (velopment)s 19(environment)m 19(\(it)m 19(provides)m 19(objects)m 19(that)m 19(are)m 1035 1685 p (used)s 11(within)m 9(an)m 11(existing)m 9(environment\).)m 16(In)m 11(this)m 10(paper)m 11(we)m 1035 1734 p (present)s 14(the)m 14(Unidraw)m 13(architecture)m 14(and)m 14(discuss)m 14(our)m 14(pro-)m 1035 1784 p (totype)s 10(implementation,)m 11(including)m 9 r 97 c 11(brief)m 11(description)m 9(of)m 1035 1834 p (three)s 9(editors)m 9(we)m 10(have)m 10(built)m 7(with)m 8(the)m 10(Unidraw)m 8(prototype:)m 1035 1884 p 97 c 12(schematic)m 12(capture)m 11(system,)m 13 r 97 c 11(direct-manipulation)m 9(user)m 1035 1934 p (interface)s 10(builder)m -1 r 44 c 9(and)m 10(an)m 10(object-oriented)m 8(drawing)m 9(editor)m 1035 1983 p (similar)s 13(to)m 13(MacDraw)m -2 r 46 c t-bol.420 @sf 1035 2121 p 50 c 58(Related)m 23 r 87 c -2(ork)m t-rom.300 @sf 1035 2214 p 87 c -2 r 101 c 21(can)m 23(divide)m 21(current)m 22(systems)m 22(that)m 22(support)m 21(graph-)m 1035 2264 p (ical)s 26(object)m 25(editing)m 25(into)m 24(three)m 26(categories:)m 43(domain-)m 1035 2314 p (speci\014c)s 23(editors,)m 24(multi-domain)m 21(systems,)m 26(and)m 22(graphi-)m 1035 2363 p (cal)s 15(programming)m 14(environments.)m 20(Domain-speci\014c)m 15(edi-)m 1035 2413 p (tors)s 16(are)m 17(stand-alone)m 16(applications)m 15(designed)m 16(for)m 16(editing)m 1035 2463 p (in)s 16 r 97 c 17(particular)m 15(domain.)m 27(Object-oriented)m 15(drawing)m 15(edi-)m 1035 2513 p (tors)s 11(such)m 13(as)m 13(MacDraw)m 13(are)m 13(the)m 12(most)m 11(common)m 13(example.)m 1035 2563 p (Other)s 13(examples)m 15(are)m cmsy10.300 @sf 1076 2637 p 15 c t-rom.300 @sf 21(computer)m (-aided)s 14(design)m 16(\(CAD\))m 15(tools)m 14(that)m 15(provide)m 1118 2687 p 97 c 13(direct)m 11(manipulation)m 11(metaphor)m 12(for)m 11(producing)m 11(de-)m 1118 2737 p (sign)s 17(speci\014cations,)m 19(such)m 17(as)m 19(VLSI)m 18(layout)m 16(editors)m @eop 2 @bop0 2 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 50 c 13 r 45 c 83 154 p (for)s 21(creating)m 20(chip)m 21(masks)m 22(and)m 21(schematic)m 22(capture)m 83 203 p (systems)s 14(for)m 14(generating)m 13(netlists;)m cmsy10.300 @sf 42 280 p 15 c t-rom.300 @sf 20(diagram)m 20(editors)m 18 r 91 c 53 c 44 c 20 r 55 c -1 r 93 c 20(that)m 18(specify)m -2 r 44 c 21(model,)m 21(and)m 83 330 p (document)s 28(physical)m 27(or)m 28(mathematical)m 29(processes)m 83 379 p (with)s 19(graphical)m 19(notations)m 18(such)m 20(as)m 21(\014nite-state)m 19(di-)m 83 429 p (agrams)s 15(and)m 14(petri)m 12(nets;)m cmsy10.300 @sf 42 506 p 15 c t-rom.300 @sf 20(and)m 10(user)m 9(interface)m 10(editors)m 9(that)m 8(let)m 9(nonprogrammers)m 83 555 p (assemble)s 17 r 97 c 15(user)m 16(interface)m 15(by)m 15(direct)m 15(manipulation)m 83 605 p (and)s 17(then)m 16(generate)m 17(the)m 16(source)m 18(code)m 17(for)m 16(the)m 16(inter-)m 83 655 p (face.)s 42 725 p (\\Multi-domain")s 12(is)m 14 r 97 c 14(catch-all)m 14(term)m 15(for)m 13(systems)m 15(that)m 0 774 p (are)s 14(neither)m 12(tied)m 12(to)m 13 r 97 c 13(particular)m 12(domain)m 13(nor)m 12(designed)m 13(to)m 0 824 p (supplant)s 10(traditional)m 9(programming)m 11(languages,)m 12(as)m 13(graph-)m 0 874 p (ical)s 24(programming)m 23(environments)m 22(are.)m 50(Examples)m 24(of)m 0 924 p (multi-domain)s 17(systems)m 20(include)m 19(user)m 19(interface)m 19(toolkits)m 0 974 p (such)s 19(as)m 20(InterV)m -1(i)m -1(ews)m 18 r 91 c 54 c -1 r 93 c 19(and)m 19(GROW)m 19 r 91 c 50 c -1 r 93 c 19(that)m 18(support)m 0 1024 p (de\014nition)s 19(and)m 20(manipulation)m 18(of)m 20(an)m 21(editor)m 2 r 39 c -2 r 115 c 19(graphical)m 0 1073 p (data;)s 17(simulation)m 15(systems)m 17 r 91 c 52 c -1 r 44 c 17 r 49 c 93 c 16(that)m 16(provide)m 15 r 97 c 17(direct-)m 0 1123 p (manipulation)s 19(metaphor)m 20(for)m 20(representing)m 20(and)m 21(analyz-)m 0 1173 p (ing)s 15(real-world)m 15(processes)m 17(in)m 16(areas)m 17(such)m 16(as)m 17(data)m 16(acqui-)m 0 1223 p (sition,)s 14(manufacturing,)m 15(and)m 15(decision)m 14(support;)m 14(and)m 15(gen-)m 0 1273 p (eral)s 13(constraint-based)m 12(graphical)m 12(editors)m 11(such)m 13(as)m 13(Sketch-)m 0 1322 p (pad)s 11 r 91 c 57 c -1 r 93 c 11(and)m 10(ThingLab)m 11 r 91 c 51 c -1(],)m 12(which)m 10(can)m 11(theoretically)m 9(sup-)m 0 1372 p (port)s 20(graphical)m 20(editing)m 20(in)m 20(any)m 21(domain)m 21(given)m 20(enough)m 0 1422 p (constraints.)s 42 1472 p (Graphical)s 16(programming)m 15(environments)m 16 r 91 c 56 c -1 r 93 c 17(let)m 16(users)m 0 1522 p (program)s 16(by)m 16(drawing)m 16(pictures.)m 26(Experienced)m 18(program-)m 0 1571 p (mers)s 21(often)m 20(use)m 20(graphical)m 20(notations)m 19(to)m 19(diagram)m 21(their)m 0 1621 p (algorithms)s 19(before)m 20(turning)m 18(them)m 21(into)m 18(code.)m 39(Novices)m 0 1671 p (often)s 14(\014nd)m 13(programming)m 14(dif)m (\014cult)s 11(because)m 16(they)m 14(are)m 15(un-)m 0 1721 p (comfortable)s 11(with)m 10(the)m 11(rigid)m 10(syntax)m 10(of)m 11(textual)m 11(languages.)m 0 1771 p (By)s 11(specifying)m 10(programs)m 11(in)m 10(graphical)m 11(terms)m 11(that)m 10(closely)m 0 1821 p (match)s 20(the)m 19(programmer)m 2 r 39 c -1 r 115 c 18(mental)m 20(pictures,)m 21(the)m 19(expert)m 0 1870 p (can)s 15(simply)m 14(draw)m 14(his)m 14(algorithms;)m 14(the)m 14(novice)m 14(can)m 15(show)m 0 1920 p (the)s 14(computer)m 14(how)m 14(to)m 14(perform)m 14(its)m 13(task.)m 21(Graphical)m 14(pro-)m 0 1970 p (gramming)s 20(environments)m 19(would)m 19(thus)m 19(make)m 22(program-)m 0 2020 p (ming)s 10(easier)m 11(for)m 10(everyone,)m 11(and)m 11(creating)m 10(domain-speci\014c)m 0 2070 p (editors)s 13(would)m 12(be)m 14 r 97 c 15(natural)m 13(extension)m 12(of)m 14(their)m 13(capabili-)m 0 2119 p (ties.)s 42 2169 p (Our)s 23(work)m 24(with)m 23(Unidraw)m 23(focuses)m 25(on)m 23(production-)m 0 2219 p (quality)s 17(domain-speci\014c)m 20(editors)m 18(for)m 18 r 97 c 20(broad)m 18(range)m 19(of)m 0 2269 p (domains.)s 42(Each)m 23(of)m 21(the)m 22(approaches)m 22(described)m 22(above)m 0 2319 p (falls)s 18(short)m 18(of)m 18(this)m 18(goal.)m 33(Domain-speci\014c)m 20(editors)m 17(are)m 0 2368 p (designed)s 19(to)m 18(support)m 18 r 97 c 19(single)m 18(domain)m 19(only)m -2 r 46 c 33(Existing)m 0 2418 p (multi-domain)s 11(systems)m 14(have)m 13(at)m 14(least)m 13(one)m 13(of)m 13(the)m 13(follow-)m 0 2468 p (ing)s 13(shortcomings:)m cmsy10.300 @sf 42 2538 p 15 c t-rom.300 @sf 20(They)m 31(provide)m 30(relatively)m 29(few)m 31(abstractions)m 31(for)m 83 2588 p (building)s 17(domain-speci\014c)m 20(editors.)m 36(For)m 20(example,)m 83 2637 p (one)s 11(toolki)m -1 r 116 c 9(might)m 9(of)m (fer)s 10(structured)m 9(graphics)m 10(but)m 10(not)m 83 2687 p (graphical)s 11(constraints,)m 10(while)m 11(another)m 10(supports)m 10(con-)m 83 2737 p (straints)s 13(but)m 13(not)m 13(static)m 13(representations,)m 14(and)m 13(so)m 14(on.)m 1080 112 p 13024788 10940812 723599 789381 29470228 24997068 startTexFig %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica-Bold Helvetica %%BoundingBox: 11 12 448 380 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave printFont findfont printSize scalefont setfont fgred fggreen fgblue setrgbcolor /vertoffset printSize neg def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 4 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.96 0 0 0.96 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 33 57 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.17761 0 0 1 -1.57529 -263 ] concat %I 16 280 272 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48.5 40.5 ] concat %I [ (Operating system) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 33.0355 53 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.17761 0 0 1 -1.57529 28.375 ] concat %I 16 280 272 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48.5 331.875 ] concat %I [ (Domain-specific editor) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 33 56 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.21801 0 0 1 -2.16114 -54.1563 ] concat %I 16 144 224 176 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48.5 113.344 ] concat %I [ (Window system) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 33 55 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 1 18.6875 ] concat %I 16 144 224 176 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48.5 186.187 ] concat %I [ (User interface toolkit) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 32 54 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 1.84364 27.5312 ] concat %I 16 208 176 240 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48.5 259.031 ] concat %I [ (Unidraw) ] Text End End %I eop Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.17361 33.8436 -29.4466 ] concat %I 96 272 96 240 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.18654 33.8436 -104.827 ] concat %I 96 272 96 240 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.19129 33.8436 -177.853 ] concat %I 96 272 96 240 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.05776 34.5 40.3313 ] concat %I 200 304 200 200 Line End Begin %I Line %I b 65520 1 0 1 [12 4] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.74758 82.5 -169.625 ] concat %I 200 304 200 200 Line End Begin %I Line %I b 65520 1 0 1 [12 4] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.02083 26 51.0486 ] concat %I 304 304 304 56 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.15172 33.8436 47.4666 ] concat %I 96 272 96 240 Line End Begin %I BSpl %I b 65520 1 0 1 [12 4] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -32 64 ] concat %I 4 80 240 48 240 48 96 80 96 4 BSpl End Begin %I BSpl %I b 65520 1 0 1 [12 4] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -32 -8 ] concat %I 4 80 240 48 240 48 96 80 96 4 BSpl End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 0 SetP %I t u Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -357.312 -152 ] concat %I 408 192 440 192 Line End Begin %I Line %I b 52428 1 0 1 [2 2 2 2 2 2 2 2] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -357.312 -168 ] concat %I 408 192 440 192 Line End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 90.6883 45.5 ] concat %I [ (basic dependencies) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 90.6883 29.5 ] concat %I [ (other possible dependencies) ] Text End End %I eop Begin %I Line %I b 65520 1 0 0 [12 4] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.20643 0 0 1 -1.88953 0 ] concat %I 14 344 386 344 Line End Begin %I Line %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 14.5 0 ] concat %I 400 360 400 328 Line End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 368 376 ] concat %I [ (application software) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 376.5 320 ] concat %I [ (system software) ] Text End End %I eop %%Trailer end showpage endTexFig 1035 896 p (Figure)s 19(1:)m 29(Layers)m 21(of)m 19(software)m 19(underlying)m 18 r 97 c 20(domain-)m 1035 946 p (speci\014c)s 15(editor)m cmsy10.300 @sf 1076 1081 p 15 c t-rom.300 @sf 21(They)m 13(require)m 13 r 97 c 13(lar)m (ge)s 12(run-time)m 12(environment)m 12(or)m 12(are)m 1118 1131 p (embedded)s 17(in)m 16 r 97 c 16(lar)m (ger)s 16(system.)m 26(Thus)m 16(they)m 16(cannot)m 1118 1181 p (be)s 14(used)m 14(to)m 13(create)m 15(stand-alone)m 13(editors.)m cmsy10.300 @sf 1076 1267 p 15 c t-rom.300 @sf 21(The)m 11(extension)m 10(mechanism)m 12(for)m 10(multiple)m 9(domains)m 10(is)m 1118 1317 p (not)s 11(ef)m (\014cient)s 11(enough)m 11(to)m 11(be)m 12(practical.)m 18(For)m 11(example,)m 1118 1367 p 97 c 16(fast)m 15(general)m 16(constraint)m 14(solver)m 15(is)m 15(hard)m 16(to)m 15(imple-)m 1118 1417 p (ment.)s 31(Developing)m 17 r 97 c 18(domain-speci\014c)m 18(editor)m 17(that)m 1118 1467 p (has)s 17(acceptable)m 18(performance)m 17(is)m 17(therefore)m 16(dif)m (\014cult)s 1118 1516 p (when)s 18(constraints)m 16(are)m 18(the)m 18(only)m 16(extension)m 17(mecha-)m 1118 1566 p (nism.)s 1035 1652 p (Graphical)s 12(programming)m 10(environments)m 11(have)m 13(proven)m 11(in-)m 1035 1702 p (adequate)s 19(as)m 20(well.)m 33(Though)m 18(many)m 19(such)m 19(environments)m 1035 1751 p (have)s 10(been)m 10(developed,)m 11(none)m 10(has)m 10(succeeding)m 10(in)m 9(supplant-)m 1035 1801 p (ing)s 13(textual)m 14(programming.)m 19(Graphical)m 14(languages)m 14(gener-)m 1035 1851 p (ally)s 15(lack)m 15(ef)m (\014ciency)s 15(of)m 15(expression.)m 23(They)m 15(are)m 16(adequate)m 1035 1901 p (for)s 19(describing)m 18(simple)m 18(algorithms)m 18(and)m 19(data)m 20(structures)m 1035 1951 p (but)s 13(quickly)m 12(become)m 15(unwieldy)m 12(for)m 13(specifying)m 13(more)m 14(so-)m 1035 2000 p (phisticated)s 13(constructs.)m 21(Moreover)m -1 r 44 c 14(most)m 15(graphical)m 14(pro-)m 1035 2050 p (gramming)s 12(systems)m 13(are)m 13(interpretive)m 11(and)m 12(must)m 13(deal)m 12(with)m 1035 2100 p (considerable)s 14(overhead)m 14(associated)m 15(with)m 13(pictorial)m 13(repre-)m 1035 2150 p (sentations.)s 26(Thus,)m 18(performance)m 17(is)m 16(acceptable)m 18(only)m 16(for)m 1035 2200 p (simple)s 14(programs.)m t-bol.420 @sf 1035 2344 p 51 c 58(Unidraw)m 23(Ar)m (chitectur)s 101 c t-rom.300 @sf 1035 2438 p (Unidraw)s 18(is)m 18(designed)m 18(to)m 17(span)m 19(the)m 18(gap)m 18(between)m 19(tradi-)m 1035 2488 p (tional)s 17(user)m 18(interface)m 19(toolkit)m -1 r 115 c 17(and)m 18(the)m 18(implementation)m 1035 2538 p (requirements)s 11(of)m 12(graphical)m 11(object)m 11(editors.)m 17(An)m 12(editor)m 11(for)m 1035 2588 p 97 c 18(particular)m 17(domain)m 17(relies)m 17(on)m 17(Unidraw)m 17(for)m 17(its)m 17(graph-)m 1035 2637 p (ical)s 18(editing)m 17(capabilities,)m 19(on)m 18(the)m 18(toolkit)m 16(for)m 18(the)m 18(\\look)m 1035 2687 p (and)s 12(feel")m 12(of)m 12(the)m 11(user)m 12(interface,)m 13(and)m 12(on)m 11(the)m 11(window)m 11(and)m 1035 2737 p (operating)s 9(systems)m 11(for)m 10(managing)m 10(workstation)m 8(resources.)m @eop 3 @bop0 /Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.813200 TeXPSmakefont def /Times-Italic /t-ita.300 ReEncodeForTeX /t-ita.300 /t-ita.300 41.511000 TeXPSmakefont def 3 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 51 c 13 r 45 c 42 154 p (Figure)s 13 r 49 c 14(depicts)m 14(the)m 13(dependencies)m 15(between)m 15(the)m 13(lay-)m 0 203 p (ers)s 16(of)m 16(software)m 15(that)m 15(underlie)m 15 r 97 c 16(domain-speci\014c)m 16(editor)m 0 253 p (based)s 15(on)m 15(Unidraw)m -2 r 46 c 20(At)m 14(the)m 15(lowest)m 14(levels)m 14(are)m 16(the)m 14(oper-)m 0 303 p (ating)s 17(and)m 17(window)m 16(systems.)m 30(Above)m 18(the)m 17(window)m 16(sys-)m 0 353 p (tem)s 14(level)m 14(are)m 15(the)m 14(abstractions)m 14(provided)m 13(by)m 13(the)m 14(toolkit,)m 0 403 p (including)s 14(buttons,)m 15(scroll)m 15(bars,)m 17(menus,)m 18(and)m 15(techniques)m 0 452 p (for)s 14(composing)m 15(them)m 15(into)m 14(generic)m 15(interfaces.)m 23(Unidraw)m 0 502 p (stands)s 19(at)m 20(the)m 19(highest)m 18(level)m 20(of)m 19(system)m 20(software,)m 21(pro-)m 0 552 p (viding)s 12(abstractions)m 13(that)m 13(are)m 14(closely)m 14(matched)m 14(to)m 13(the)m 14(re-)m 0 602 p (quirements)s 19(of)m 18(graphical)m 19(object)m 18(editors.)m 34(In)m 18(theory)m -2 r 44 c 20 r 97 c 0 652 p (domain-speci\014c)s 14(editor)m 13(can)m 15(access)m 16(any)m 14(of)m 14(these)m 14(layers;)m 0 702 p (in)s 14(practice,)m 16(minimizing)m 13(the)m 15(number)m 15(of)m 14(software)m 15(inter-)m 0 751 p (faces)s 19(the)m 16(programmer)m 18(must)m 17(use)m 17(dramatically)m 17(reduces)m 0 801 p (complexity)s -2 r 46 c t-bol.360 @sf 0 923 p (3.1)s 50(Overview)m t-rom.300 @sf 0 1002 p (Unidraw)s 14(partitions)m 13(the)m 15(common)m 15(attributes)m 13(of)m 15(domain-)m 0 1051 p (speci\014c)s 26(editors)m 23(into)m 24(an)m 25(object-oriented)m 23(architecture)m 0 1101 p (having)s 13(four)m 13(class)m 14(hierarchies:)m 31 1186 p (1.)s t-bol.300 @sf 21(Components)m t-rom.300 @sf 14(are)m 16(graphical)m 14(representations)m 14(of)m 14(el-)m 83 1236 p (ements)s 12(in)m 12 r 97 c 12(domain.)m 17(Examples)m 13(include)m 11(geometric)m 83 1286 p (shapes)s 20(in)m 18(technical)m 19(drawing,)m 20(electronic)m 19(parts)m 19(in)m 83 1335 p (circuit)s 14(layout,)m 14(and)m 15(notes)m 14(in)m 14(written)m 14(music.)m 21(Com-)m 83 1385 p (ponents)s 12(encapsulate)m 14(the)m 13(appearance)m 15(and)m 14(behavior)m 83 1435 p (of)s 9(these)m 10(elements.)m 18 r 65 c 9(domain-speci\014c)m 9(editor)m 2 r 39 c -2 r 115 c 8(pur-)m 83 1485 p (pose)s 16(is)m 15(to)m 15(allow)m 16(the)m 15(user)m 16(to)m 15(arrange)m 16(components)m 83 1535 p (to)s 13(convey)m 14(information)m 12(in)m 13(the)m 13(domain)m 14(of)m 13(interest.)m 31 1620 p (2.)s t-bol.300 @sf 21 r 84 c -3(ools)m t-rom.300 @sf 9(support)m 10(direct)m 10(manipulation)m 9(of)m 11(components.)m 83 1670 p 84 c -2(ools)m 15(employ)m 15(animation)m 15(and)m 16(other)m 15(visual)m 15(ef)m (fects)s 83 1720 p (for)s 21(immediate)m 21(feedback)m 22(to)m 21(reinforce)m 21(the)m 21(user)m 2 r 39 c -1 r 115 c 83 1769 p (perception)s 19(that)m 20(he)m 20(is)m 20(dealing)m 20(with)m 19(real)m 20(objects.)m 83 1819 p (Examples)s 14(include)m 13(tools)m 13(for)m 13(selecting)m 13(components)m 83 1869 p (for)s 20(subsequent)m 20(editing,)m 21(for)m 20(applying)m 19(coordinate)m 83 1919 p (transformations)s 16(such)m 17(as)m 18(translation)m 15(and)m 17(rotation,)m 83 1969 p (and)s 14(for)m 13(connecting)m 13(components.)m 31 2054 p (3.)s t-bol.300 @sf 21(Commands)m t-rom.300 @sf 9(de\014ne)m 11(operations)m 10(on)m 10(components)m 10(and)m 83 2104 p (other)s 21(objects.)m 42(Commands)m 22(are)m 22(similar)m 21(to)m 21(mes-)m 83 2154 p (sages)s 19(in)m 18(traditional)m 16(object-oriented)m 17(systems,)m 20(ex-)m 83 2203 p (cept)s 12(they)m 12(are)m 12(stateful)m 12(and)m 12(can)m 12(be)m 12(executed)m 13(as)m 12(well)m 83 2253 p (as)s 13(interpreted)m 12(by)m 13(objects.)m 18(Commands)m 13(can)m 13(also)m 13(be)m t-ita.300 @sf 83 2303 p 114 c -1(everse)m t-rom.300 @sf (-exec)s 1(uted,)m 14(allowing)m 12(rollback)m 12(to)m 12 r 97 c 13(previous)m 83 2353 p (state.)s 30(Examples)m 18(include)m 17(commands)m 19(that)m 16(change)m 83 2403 p (component)s 14(attributes,)m 14(duplicate)m 14(components,)m 15(and)m 83 2452 p (group)s 12(several)m 13(components)m 13(into)m 12 r 97 c 13(composite)m 13(com-)m 83 2502 p (ponent.)s 31 2588 p (4.)s t-bol.300 @sf 21(External)m 28 r 114 c (epr)s (esentations)s t-rom.300 @sf 24(are)m 25(used)m 24(to)m 24(convey)m 83 2637 p (domain-speci\014c)s 24(information)m 22(outside)m 23(the)m 23(editor)m -1 r 46 c 83 2687 p (Each)s 14(component)m 13(can)m 13(de\014ne)m 14(one)m 13(or)m 13(more)m 13(external)m 83 2737 p (representations)s 10(of)m 10(itself.)m 17(For)m 10(example,)m 12 r 97 c 11(transistor)m 1118 154 p (component)s 11(can)m 13(de\014ne)m 12(both)m 11 r 97 c 12(PostScript)m 11(represen-)m 1118 203 p (tation)s 12(for)m 13(printing)m 11(and)m 13 r 97 c 14(netlist)m 12(representation)m 13(for)m 1118 253 p (circuit)s 13(simulation.)m 1076 324 p (The)s 16(Unidraw)m 13(architecture)m 15(provides)m 13(base)m 16(classes)m 16(for)m 1035 374 p (component,)s 19(command,)m 20(tool,)m 18(and)m 18(external)m 18(representa-)m 1035 424 p (tion)s 18(objects.)m 36(Subclasses)m 21(implement)m 19(the)m 19(behavior)m 19(of)m 1035 474 p (their)s 14(instances)m 16(according)m 15(to)m 14(the)m 15(semantics)m 16(of)m 15(the)m 15(pro-)m 1035 523 p (tocol)s 15(de\014ned)m 15(by)m 15(their)m 15(base)m 17(class.)m 24(For)m 16(example,)m 17(com-)m 1035 573 p (ponents)s 11(support)m 11(operations)m 11(that)m 12(de\014ne)m 12(how)m 12(commands)m 1035 623 p (af)s (fect)s 14(their)m 12(internal)m 13(state.)m t-bol.300 @sf 1035 731 p (3.1.1)s 42(Subjects)m 16(and)m 16 r 86 c -1(iews)m t-rom.300 @sf 1035 808 p 65 c 10(well-established)m 8(user)m 10(interface)m 10(concept)m 10(is)m 10(the)m 9(distinc-)m 1035 858 p (tion)s 14(between)m 15(\(1\))m 14(the)m 15(state)m 15(and)m 15(operations)m 14(that)m 14(charac-)m 1035 908 p (terize)s 11(objects)m 11(and)m 11(\(2\))m 10(the)m 11(way)m 11(the)m 11(objects)m 10(are)m 12(presented)m 1035 958 p (in)s 15 r 97 c 15(particular)m 15(context.)m 22(In)m 15(Unidraw)m 14(this)m 15(distincti)m -1(on)m 13(is)m 1035 1008 p (manifest)s 20(in)m 20(the)m 20(separation)m 20(of)m 20(components)m 20(into)m t-bol.300 @sf 19(sub-)m 1035 1057 p (ject)s t-rom.300 @sf 16(and)m t-bol.300 @sf 15(view)m t-rom.300 @sf 15(objects.)m 23 r 65 c 15(subject)m 15(de\014nes)m 16(the)m 15(context-)m 1035 1107 p (independent)s 15(state)m 17(and)m 16(operations)m 16(of)m 16 r 97 c 17(component.)m 26 r 65 c 1035 1157 p (view)s 13(supports)m 12 r 97 c 14(context-dependent)m 12(presentation)m 12(of)m 13(the)m 1035 1207 p (subject.)s 21 r 65 c 15(component)m 15(subject)m 14(may)m 15(have)m 15(one)m 15(or)m 15(more)m 1035 1257 p (component)s 11(views,)m 12(each)m 13(of)m (fering)s 9 r 97 c 12(dif)m (ferent)s 10(representa-)m 1035 1306 p (tion)s 12(of)m 14(and)m 14(interface)m 14(to)m 13(the)m 14(subject.)m 18 r 65 c 14(subject)m 14(noti\014es)m 1035 1356 p (its)s 12(views)m 14(whenever)m 13(its)m 13(state)m 13(is)m 13(modi\014ed)m 13(to)m 12(allow)m 13(them)m 1035 1406 p (to)s 12(change)m 14(their)m 12(state)m 13(or)m 13(appearance)m 14(to)m 13(re\015ect)m 14(the)m 12(mod-)m 1035 1456 p (i\014cation.)s 1076 1506 p 65 c 25(component)m 24(subject)m 24(maintains)m 23(information)m 23(that)m 1035 1556 p (characterizes)s 12(the)m 9(component;)m 11(in)m 9(the)m 10(case)m 12(of)m 9 r 97 c 11(logic)m 9(gate)m 1035 1605 p (component,)s 12(for)m 12(example,)m 14(the)m 12(subject)m 12(might)m 11(contain)m 12(in-)m 1035 1655 p (formation)s 13(about)m 14(what)m 14(is)m 15(connected)m 14(to)m 14(the)m 15(gate)m 14(and)m 15(its)m 1035 1705 p (current)s 18(input)m 17(values.)m 33(Dif)m (ferent)s 17(views)m 19(of)m 18(the)m 18(subject)m 1035 1755 p (can)s 12(re\015ect)m 12(this)m 10(information)m 9(in)m 11(distincti)m -1(ve)m 10(ways)m 11(and)m 11(can)m 1035 1805 p (provide)s 13(additional)m 12(information)m 12(as)m 14(well.)m 19(One)m 14(view)m 13(can)m 1035 1854 p (depict)s 12(the)m 13(gate)m 13(graphically)m 11(by)m 13(drawing)m 11(the)m 13(appropriate)m 1035 1904 p (logic)s 15(symbol,)m 15(and)m 16(it)m 15(might)m 14(also)m 16(de\014ne)m 16(what)m 15(it)m 15(means)m 1035 1954 p (to)s 14(manipulate)m 14(the)m 14(gate)m 15(with)m 13 r 97 c 15(tool.)m 20(Another)m 13(view)m 14(can)m 1035 2004 p (provide)s 11(the)m 12(external)m 12(representation)m 12(of)m 12(the)m 12(gate)m 12(by)m 12(gen-)m 1035 2054 p (erating)s 16 r 97 c 16(netlist)m 15(from)m 16(the)m 17(connectivity)m 14(information)m 15(in)m 1035 2103 p (the)s 14(subject.)m t-bol.300 @sf 1035 2211 p (3.1.2)s 42(Application)m 14(Framework)m t-rom.300 @sf 1035 2289 p (Figure)s 21 r 50 c 21(shows)m 22(the)m 21(general)m 22(structure)m 20(of)m 22 r 97 c 22(domain-)m 1035 2339 p (speci\014c)s 14(editor)m 12(based)m 14(on)m 13(Unidraw)m -2 r 46 c 17(At)m 13(the)m 13(bottom)m 12(level)m 1035 2388 p (in)s 16(the)m 16(diagram)m 17(are)m 18(two)m 16(component)m 16(subjects,)m 17(the)m 17(left-)m 1035 2438 p (most)s 21(containing)m 20(subcomponent)m 21(subjects.)m 41(An)m 21(entire)m 1035 2488 p (domain-speci\014c)s 15(drawing)m 15(is)m 15(represented)m 15(by)m 15 r 97 c 16(compos-)m 1035 2538 p (ite)s 14(component)m 15(subject)m 14(that)m 15(can)m 15(be)m 15(incorporated)m 14(into)m 14 r 97 c 1035 2588 p (lar)s (ger)s 13(work.)m 20(At)m 14(the)m 14(second)m 15(level)m 14(from)m 14(the)m 14(bottom)m 13(are)m 1035 2637 p (the)s 12(corresponding)m 12(views)m 12(of)m 12(the)m 13(subjects.)m 18(Note)m 12(that)m 12(the)m 1035 2687 p (right-hand)s 10(subject)m 13(has)m 12(two)m 12(views)m 12(attached.)m 19(Each)m 14(com-)m 1035 2737 p (ponent)s 16(view)m 16(is)m 16(placed)m 17(in)m 16 r 97 c t-bol.300 @sf 17(viewer)m t-rom.300 @sf 18(at)m 16(the)m 17(third)m 15(level.)m @eop 4 @bop0 /Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.359900 TeXPSmakefont def /Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.359900 TeXPSmakefont def /cmsy9.300 @newfont cmsy9.300 @sf [<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C 000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc [ 16 37 -3 9 19.198] 103 @dc 4 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 52 c 13 r 45 c 45 112 p 13024788 12113043 920944 12038062 39534837 48152248 startTexFig %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica-Bold Helvetica Courier Courier-Bold %%BoundingBox: 14 183 601 732 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave printFont findfont printSize scalefont setfont fgred fggreen fgblue setrgbcolor /vertoffset printSize neg def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 4 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.959999 0 0 0.959999 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Line %I b 52428 1 0 0 [2 2 2 2 2 2 2 2] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 24 544 624 544 Line End Begin %I Line %I b 52428 1 0 0 [2 2 2 2 2 2 2 2] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0 -136 ] concat %I 24 544 624 544 Line End Begin %I Line %I b 52428 1 0 0 [2 2 2 2 2 2 2 2] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0 -264 ] concat %I 24 544 624 544 Line End Begin %I Line %I b 65535 3 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 72 317 72 255 Line End Begin %I BSpl %I b 65535 3 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 4 223 322 229 273 279 290 291 245 4 BSpl End Begin %I BSpl %I b 65535 3 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 4 395 323 379 274 346 289 336 245 4 BSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -270.546 154 ] concat %I 8 336 480 328 472 328 432 336 424 376 424 386 432 386 472 376 480 8 CBSpl End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t u %I 4 258 590 301 460 381 499 282 594 4 Poly End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 8 0 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -312.546 280 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 209.743 739.5 ] concat %I [ (Unidraw) ] Text End End %I eop Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -430.546 154 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 104.243 620.5 ] concat %I [ (Editor) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 168 -248 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -408.546 24 ] concat %I 8 339 464 328 456 328 432 339 424 392 424 402 432 402 456 392 464 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 112.257 474.5 ] concat %I [ (Component) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 253.651 620.5 ] concat %I [ (Editor) ] Text End Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 0.302632 0 0 0.2 159.493 499.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 72 -16 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -166.546 170 ] concat %I 8 336 480 328 472 328 432 336 424 376 424 386 432 386 472 376 480 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 357.651 636.5 ] concat %I [ (Editor) ] Text End Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.302632 0 0 0.2 263.493 515.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 32 0 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.5 0 0 0.5 184 380 ] concat %I 256 456 8 8 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.5 0 0 0.5 200 380 ] concat %I 256 456 8 8 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.5 0 0 0.5 216 380 ] concat %I 256 456 8 8 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -232 -280 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -246.546 50 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 272.743 516.5 ] concat %I [ (Component) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 1 0 0 1 177 -126 ] concat Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.302632 0 0 0.2 1.08545 521.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.302632 0 0 0.2 33.0854 521.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End End %I eop End %I eop Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t u %I 4 95 595 29 497 113 475 116 588 4 Poly End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -470.546 26 ] concat %I 8 336 480 328 472 328 432 336 424 376 424 386 432 386 472 376 480 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 50.1513 492.5 ] concat %I [ (Viewer) ] Text End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t u %I 4 125 590 149 458 230 496 148 595 4 Poly End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -350.546 26 ] concat %I 8 336 480 328 472 328 432 336 424 376 424 386 432 386 472 376 480 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 170.151 492.5 ] concat %I [ (Viewer) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 0.75 SetP %I t [ 1 0 0 1 -6.99995 -22 ] concat Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.302632 0 0 0.2 1.08545 521.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.302632 0 0 0.2 33.0854 521.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End End %I eop Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -198.546 26 ] concat %I 8 336 480 328 472 328 432 336 424 376 424 386 432 386 472 376 480 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 322.151 492.5 ] concat %I [ (Viewer) ] Text End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t u %I 4 331 464 345 348 454 360 351 467 4 Poly End Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 0.302632 0 0 0.2 231.493 371.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 200 -32 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -352.546 -64 ] concat %I 8 339 464 328 456 328 432 339 424 392 424 402 432 402 456 392 464 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 152.257 386.5 ] concat %I [ (Component View) ] Text End End %I eop Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t u %I 4 179 464 170 354 277 360 201 467 4 Poly End Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 0.302632 0 0 0.2 79.4934 371.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 24 -32 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -352.546 -64 ] concat %I 8 339 464 328 456 328 432 339 424 392 424 402 432 402 456 392 464 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 152.257 386.5 ] concat %I [ (Component View) ] Text End End %I eop Begin %I BSpl %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 4 209 704 181 682 126 664 124 638 4 BSpl End Begin %I BSpl %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 4 246 703 245 676 268 667 268 638 4 BSpl End Begin %I BSpl %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 5 289 707 310 674 410 678 441 655 442 636 5 BSpl End Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 0.2 0 0 0.2 541.103 539.297 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 2.07123 0 0 2.07123 -1100.35 -590.057 ] concat Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 674 453.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 674 425.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 686.015 363.698 ] concat %I 376 352 41 Circ End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1.00487 46.4414 -273.596 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.00778 0 0 0.997918 -86.7985 123.598 ] concat %I 88 264 152 624 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 16.5 735.856 ] concat %I [ (Select) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 22.5 703.856 ] concat %I [ (Move) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 16.5 639.856 ] concat %I [ (Rotate) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 13.5 607.856 ] concat %I [ (Magnify) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 22.5 575.856 ] concat %I [ (Text) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -245.5 66.356 ] concat %I 264 480 296 464 Line End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -245.5 2.356 ] concat %I 280 472 16 8 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -245.5 -101.644 ] concat %I 264 536 296 552 Rect End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.498204 0.767234 -0.697486 0.548025 181.968 -108.733 ] concat %I 5 344 472 336 464 344 448 360 448 360 464 5 Poly End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -245.5 34.356 ] concat %I 4 264 480 272 472 288 472 296 464 4 BSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 729.356 ] concat %I [ (s) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 697.356 ] concat %I [ (m) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 665.356 ] concat %I [ (;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 633.356 ] concat %I [ (k) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 601.356 ] concat %I [ (z) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 569.356 ] concat %I [ (t) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 505.356 ] concat %I [ (w) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 473.356 ] concat %I [ (o) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 441.356 ] concat %I [ (r) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 409.356 ] concat %I [ (p) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 57.5 537.356 ] concat %I [ (l) ] Text End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < ff 00 00 00 ff 00 00 00 > -1 SetP %I t [ 1 0 0 1 -142 145.856 ] concat %I 184 488 192 488 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 19.5 671.856 ] concat %I [ (Scale) ] Text End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.825583 0 0 0.976627 -64.2956 -102.308 ] concat %I 136 616 520 640 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.843627 0 0 0.956387 -127.715 -97.4903 ] concat %I 208 600 584 624 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 0.976627 58 518.339 ] concat %I [ (* hitmiss.cif) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 0.976627 306 518.339 ] concat %I [ (mag 0.5x) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 0.976627 98 544.707 ] concat %I [ (schematic) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 0.976627 58 494.899 ] concat %I [ (Catalog Edit Structure Align View Options) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 0.976627 -71.844 -25.1545 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 408 568 424 584 Rect End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 3 408 576 416 576 416 568 3 MLine End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 0.976627 -199.844 13.9105 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 256 528 272 544 Rect End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 256 536 272 536 Line End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 544 264 528 Line End End %I eop Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.601504 0 0 0.976627 18.5301 -126.724 ] concat %I 48 664 576 696 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -210.808 0 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 1 0 0 0.976627 423.712 -56.4066 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < cc cc 33 33 cc cc 33 33 > -1 SetP %I t [ 0.843044 0 0 0.837194 28.5233 -152.431 ] concat %I 70 392 147 455 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.927346 0 0 1.10893 29.1135 -140.7 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 1 -1 ] concat %I 77 294 119 329 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t u %I 77 294 119 329 Rect End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.579568 0 0 0.554303 -19.1031 -6.474 ] concat %I 184 424 296 488 Rect End Begin %I Pict none SetB %I b n %I cfg u %I cbg u %I f u %I p u %I t [ 1.06254 0 0 1.01622 -453.738 117.737 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.375 0 0 0.2 571 -91.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.2 555.5 -93.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.375 -5.66234e-08 3.01992e-08 -0.2 484 344.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.25 -3.77489e-08 3.01992e-08 -0.2 499.5 346.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 0.375 -0.2 1.50996e-08 745.9 170 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 0.25 -0.2 1.50996e-08 747.5 154.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 -0.375 0.2 1.50996e-08 309.1 83 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 -0.25 0.2 1.50996e-08 307.5 98.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.579568 0 0 0.554303 13.765 156.215 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 475.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.125 0 0 0.25 511.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 639.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.25 603.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0.5 -0.2 ] concat %I 208 144 208 141 Line End End %I eop End %I eop End %I eop Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 0.976627 -0.28828 -126.724 ] concat %I 512 248 576 336 Rect End End %I eop Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.601504 0 0 0.976627 18.5301 -126.724 ] concat %I 48 248 576 664 Rect End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -0.187469 8 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.414246 0 0 0.414246 321.033 293.286 ] concat Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 674 453.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 674 425.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 686.015 363.698 ] concat %I 376 352 41 Circ End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.2 0 0 0.2 498.941 411.297 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 1 0 0 0.976627 423.712 -56.4066 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < cc cc 33 33 cc cc 33 33 > -1 SetP %I t [ 0.843044 0 0 0.837194 28.5233 -152.431 ] concat %I 70 392 147 455 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.927346 0 0 1.10893 29.1135 -140.7 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 1 -1 ] concat %I 77 294 119 329 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t u %I 77 294 119 329 Rect End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.579568 0 0 0.554303 -19.1031 -6.474 ] concat %I 184 424 296 488 Rect End Begin %I Pict none SetB %I b n %I cfg u %I cbg u %I f u %I p u %I t [ 1.06254 0 0 1.01622 -453.738 117.737 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.375 0 0 0.2 571 -91.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.2 555.5 -93.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.375 -5.66234e-08 3.01992e-08 -0.2 484 344.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.25 -3.77489e-08 3.01992e-08 -0.2 499.5 346.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 0.375 -0.2 1.50996e-08 745.9 170 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 0.25 -0.2 1.50996e-08 747.5 154.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 -0.375 0.2 1.50996e-08 309.1 83 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 -0.25 0.2 1.50996e-08 307.5 98.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.579568 0 0 0.554303 13.765 156.215 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 475.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.125 0 0 0.25 511.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 639.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.25 603.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0.5 -0.2 ] concat %I 208 144 208 141 Line End End %I eop End %I eop End %I eop Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 0.976627 -0.28828 -126.724 ] concat %I 512 248 576 336 Rect End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 0.361267 0.156677 ] concat %I 564 434 614 507 Rect End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.414246 0 0 0.414246 320.845 164.286 ] concat Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 674 453.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 674 425.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 686.015 363.698 ] concat %I 376 352 41 Circ End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier_bold12 /Courier-Bold 12 SetF %I t [ 1 0 0 1 574.493 240 ] concat %I [ (data) ] Text End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t u %I 4 58 463 22 370 125 368 81 466 4 Poly End Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 0.302632 0 0 0.2 -40.5066 371.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -232 -32 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.51316 0 0 1 -246.546 -70 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 256.743 396.5 ] concat %I [ (Component View) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 1 0 0 1 177 -246 ] concat Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.302632 0 0 0.2 1.08545 521.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.302632 0 0 0.2 33.0854 521.6 ] concat %I 8 336 480 328 472 328 432 336 424 392 424 400 432 400 472 392 480 8 CBSpl End End %I eop End %I eop End %I eop %%Trailer end showpage endTexFig 0 971 p (Figure)s 10(2:)m 17(General)m 11(structure)m 10(of)m 11 r 97 c 11(domain-speci\014c)m 11(editor)m 0 1020 p (based)s 14(on)m 14(Unidraw)m 0 1169 p 65 c 16(viewer)m 15(displays)m 15 r 97 c 16(graphical)m 15(component)m 15(view)m -2 r 44 c 15(most)m 0 1219 p (often)s 20(the)m 20(root)m 20(view)m 20(in)m 20 r 97 c 21(hierarchy)m -2 r 46 c 39 r 65 c 20(viewer)m 21(pro-)m 0 1269 p (vides)s 12 r 97 c 13(framework)m 13(for)m 12(displaying)m 11(the)m 12(view)m -2 r 44 c 12(supporting)m 0 1319 p (such)s 21(\\non-semantic")m 21(manipulations)m 19(as)m 21(scrolling)m 19(and)m 0 1368 p (zooming.)s 31 r 86 c -1(iewers)m 18(also)m 18(take)m 18(raw)m 19(window)m 17(system)m 18(or)m 0 1418 p (toolkit)s 14(events)m 16(and)m 17(translate)m 16(them)m 16(to)m 16(conform)m 16(to)m 15(stan-)m 0 1468 p (dard)s 14(Unidraw)m 13(protocols.)m 42 1530 p (An)s t-bol.300 @sf 12(editor)m t-rom.300 @sf 12(associates)m 13(tools)m 12(and)m 12(user)m (-accessible)s 13(com-)m 0 1580 p (mands)s 16(with)m 14(one)m 15(or)m 15(more)m 15(viewers)m 15(and)m 16(combines)m 15(them)m 0 1629 p (into)s 16 r 97 c 18(coherent)m 18(user)m 18(interface.)m 30(An)m 17(editor)m 17(also)m 17(main-)m 0 1679 p (tains)s 10 r 97 c t-bol.300 @sf 11(selection)m t-rom.300 @sf 11(object)m 11(that)m 10(manages)m 12(component)m 10(views)m 0 1729 p (in)s 14(which)m 14(the)m 14(user)m 14(has)m 15(expressed)m 15(interest.)m 20 r 65 c 14(Unidraw-)m 0 1779 p (based)s 14(application)m 11(can)m 14(create)m 15(any)m 13(number)m 13(of)m 13(editor)m 12(ob-)m 0 1829 p (jects,)s 16(allowing)m 13(the)m 14(user)m 16(to)m 14(work)m 14(on)m 14(multiple)m 14(views)m 14(of)m 0 1878 p (components.)s 38(Operations)m 19(requiring)m 19(inter)m (-edi)s -1(tor)m 18(com-)m 0 1928 p (munication)s 10(or)m 10(coordination)m 9(access)m 13(the)m t-bol.300 @sf 10(unidraw)m t-rom.300 @sf 11(object,)m 0 1978 p 97 c 16(one-of-a-kind)m 14(object)m 16(maintained)m 15(by)m 16(the)m 15(application.)m 0 2028 p (For)s 17(example,)m 19(commands)m 18(that)m 17(allow)m 16(the)m 17(user)m 18(to)m 16(open)m 0 2078 p (and)s 14(close)m 14(editors)m 13(and)m 13(quit)m 13(the)m 13(application)m 12(must)m 14(access)m 0 2127 p (this)s 18(object.)m 32(The)m 19(unidraw)m 17(object)m 18(also)m 19(maintains)m 18(logs)m 0 2177 p (of)s 20(commands)m 21(that)m 19(have)m 20(been)m 21(executed)m 20(and)m 20(reverse-)m 0 2227 p (executed)s 12(to)m 10(support)m 10(arbitrary-level)m 9(undo)m 10(and)m 11(redo.)m 18(Not)m 0 2277 p (shown)s 20(in)m 20(the)m 21(diagram)m 21(is)m 21(the)m t-bol.300 @sf 20(catalog)m t-rom.300 @sf 20(object,)m 23(which)m 0 2327 p (manages)s 20 r 97 c 18(database)m 20(of)m 18(components,)m 19(commands,)m 21(and)m 0 2377 p (tools.)s 20(At)m 14(minimum,)m 14 r 97 c 15(domain-speci\014c)m 15(editor)m 13(uses)m 15(the)m 0 2426 p (catalog)s 17(to)m 17(name,)m 19(store,)m 18(and)m 17(retrieve)m 17(components)m 17(that)m 0 2476 p (represent)s 16(user)m 16(drawings.)m 23(An)m 16(editor)m 14(could)m 15(also)m 16(access)m 0 2526 p (unused)s 11(commands)m 12(and)m 12(tools)m 10(and)m 11(incorporate)m 11(them)m 11(into)m 0 2576 p (its)s 13(interface)m 14(at)m 14(run-time.)m 42 2637 p (This)s 20(structure)m 19(provides)m 19 r 97 c 21(standard)m 20(framework)m 21(for)m 0 2687 p (building)s 9(domain-speci\014c)m 11(editors,)m 11(yet)m 11(it)m 10(allows)m 11(substan-)m 0 2737 p (tial)s 13(latitude)m 12(for)m 13(customized)m 13(interfaces.)m 19(Nothing)m 12(in)m 13(this)m 1071 155 p 843 2 ru 1071 201 p 2 46 ru t-ita.270 @sf 1096 188 p 114 c (etur)s -1 r 110 c 10(values)m 1320 202 p 2 46 ru 1429 187 p (operation)s 1682 201 p 2 46 ru 1720 187 p (ar)s (gu)s -1(ments)m 1913 201 p 2 46 ru 1071 202 p 843 2 ru 1071 249 p 2 46 ru 249 r 2 46 ru t-rom.270 @sf 1346 235 p (Attach)s 1682 249 p 2 46 ru 1707 235 p (comp.)s 16(view)m 1913 249 p 2 46 ru 1071 294 p 2 46 ru 249 r 2 46 ru 1346 280 p (Detach)s 1682 294 p 2 46 ru 1707 280 p (comp.)s 16(view)m 1913 294 p 2 46 ru 1071 340 p 2 46 ru 249 r 2 46 ru 1346 326 p (Notify)s 1682 340 p 2 46 ru 231 r 2 46 ru 1071 386 p 2 46 ru 249 r 2 46 ru 1346 372 p (Update)s 1682 386 p 2 46 ru 231 r 2 46 ru 1071 431 p 2 46 ru 249 r 2 46 ru 1346 417 p (Interpret)s 1682 431 p 2 46 ru 1707 417 p (command)s 1913 431 p 2 46 ru 1071 477 p 2 46 ru 249 r 2 46 ru 1346 463 p (Uninterpret)s 1682 477 p 2 46 ru 1707 463 p (command)s 1913 477 p 2 46 ru 1071 522 p 2 46 ru 1096 509 p (transfer)s 12(fn.)m 1320 523 p 2 46 ru 1346 508 p (GetT)s (rans)s -1(ferFunction)m 1682 522 p 2 46 ru 231 r 2 46 ru 1071 568 p 2 46 ru 249 r 2 46 ru cmsy9.300 @sf 1346 554 p 102 c t-ita.270 @sf (child)s 12(iteration)m 1682 568 p 2 46 ru 231 r 2 46 ru 1071 614 p 2 46 ru 249 r 2 46 ru 1346 600 p (and)s 11(manipulation)m 1682 614 p 2 46 ru 231 r 2 46 ru 1071 659 p 2 46 ru 249 r 2 46 ru 1346 645 p (operations)s cmsy9.300 @sf -1 r 103 c 1682 659 p 2 46 ru 231 r 2 46 ru 1071 705 p 2 46 ru t-rom.270 @sf 1096 692 p (graphic)s 1320 706 p 2 46 ru 1346 691 p (GetGraphic)s 1682 705 p 2 46 ru 231 r 2 46 ru 1071 751 p 2 46 ru 249 r 2 46 ru 1346 737 p (SetMobility)s 1682 751 p 2 46 ru 1707 737 p (mobility)s 1913 751 p 2 46 ru 1071 796 p 2 46 ru 1096 783 p (mobility)s 1320 797 p 2 46 ru 1346 782 p (GetMobility)s 1682 796 p 2 46 ru 231 r 2 46 ru 1071 797 p 843 2 ru t-rom.300 @sf 1176 913 p 84 c -2(able)m 13(1:)m 18(Component)m 12(subject)m 14(protocol)m 1035 1048 p (architecture)s 10(dictates,)m 11(for)m 9(example,)m 12 r 97 c 10(particular)m 9(look)m 9(and)m 1035 1098 p (feel)s 11(for)m 10 r 97 c 11(given)m 10(editor)m 10(object.)m 17 r 65 c 11(domain-speci\014c)m 11(editor)m 1035 1148 p (may)s 10(de\014ne)m 10(editor)m 8(objects)m 9(that)m 9(use)m 10(separate)m 10(windows)m 9(for)m 1035 1198 p (their)s 14(commands,)m 17(tools,)m 14(and)m 15(viewers.)m 22(The)m 16(architecture)m 1035 1247 p (only)s 11(speci\014es)m 13(how)m 12(the)m 12(editor)m 11(mediates)m 13(communication)m 1035 1297 p (between)s 20(components)m 20(and)m 20(the)m 20(commands,)m 23(tools,)m 21(and)m 1035 1347 p (viewers)s 14(that)m 13(af)m (fect)s 14(them.)m t-bol.360 @sf 1035 1469 p (3.2)s 50(Components)m t-rom.300 @sf 1035 1548 p 65 c 15(component)m 15(de\014nes)m 15(the)m 15(appearance)m 17(and)m 15(behavior)m 14(of)m 1035 1598 p 97 c 12(domain-speci\014c)m 12(object.)m 18 r 65 c 12(component')m -1 r 115 c 10(behavior)m 11(has)m 1035 1647 p (three)s 16(aspects:)m 24(\(1\))m 16(how)m 16(it)m 15(responds)m 16(to)m 16(commands)m 17(and)m 1035 1697 p (tools,)s 19(\(2\))m 18(its)m 17(connectivity)m -2 r 44 c 18(and)m 18(\(3\))m 18(how)m 18(it)m 17(communi-)m 1035 1747 p (cates)s 18(with)m 17(other)m 16(components.)m 29(This)m 18(section)m 16(describes)m 1035 1797 p (the)s 13(protocols)m 12(and)m 13(abstractions)m 13(that)m 13(support)m 11(component)m 1035 1847 p (semantics.)s t-bol.300 @sf 1035 1960 p (3.2.1)s 42(Subject)m 16(and)m 16 r 86 c -1(iew)m 15(Pr)m (otocols)s t-rom.300 @sf 1035 2039 p (The)s 21(Unidraw)m 19(architecture)m 20(de\014nes)m 21(separate)m 21(protocols)m 1035 2089 p (for)s 12(component)m 13(subjects)m 12(and)m 13(views.)m 18 r 84 c -2(ables)m 13 r 49 c 13(and)m 13 r 50 c 12(list)m 1035 2139 p (the)s 17(protocols')m 16(basic)m 18(operations.)m 29(Component)m 16(subjects)m 1035 2188 p (de\014ne)s 20(Attach)m 20(and)m 20(Detach)m 21(operations)m 19(to)m 19(establish)m 19(or)m 1035 2238 p (destroy)s 15 r 97 c 16(connection)m 15(with)m 15 r 97 c 16(component)m 15(view)m -2 r 46 c 24(Notify)m 1035 2288 p (alerts)s 17(the)m 17(subject')m -1 r 115 c 16(views)m 17(to)m 16(the)m 17(possibilit)m -1 r 121 c 15(that)m 17(their)m 1035 2338 p (state)s 14(is)m 14(inconsistent)m 12(with)m 13(the)m 13(subject')m -1(s.)m 17(Upon)m 14(noti\014ca-)m 1035 2388 p (tion,)s 10 r 97 c 11(view)m 9(reconciles)m 11(any)m 10(inconsistencies)m 10(between)m 10(the)m 1035 2438 p (subject')s -1 r 115 c 15(state)m 17(and)m 16(its)m 16(own.)m 27(The)m 17(Update)m 17(operation)m 15(is)m 1035 2487 p (used)s 14(to)m 14(notify)m 12(the)m 14(subject)m 14(that)m 14(some)m 15(state)m 14(upon)m 14(which)m 1035 2537 p (it)s 11(depends)m 13(has)m 13(changed.)m 18(The)m 13(subject)m 12(is)m 12(responsible)m 12(for)m 1035 2587 p (updating)s 12(its)m 13(state)m 14(in)m 13(response)m 14(to)m 13(an)m 14(Update)m 14(message.)m 1076 2637 p 65 c 15(component)m 15(subject)m 14(can)m 16(be)m 15(passed)m 16 r 97 c 15(command)m 16(to)m 1035 2687 p (interpret)s 18(via)m 20(the)m 19(Interpret)m 19(operation.)m 35(The)m 20(semantics)m 1035 2737 p (of)s 17(this)m 17(operation)m 16(are)m 19(component-speci\014c;)m 19(the)m 17(subject)m @eop 5 @bop0 5 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 53 c 13 r 45 c 30 155 p 856 2 ru 30 201 p 2 46 ru t-ita.270 @sf 55 188 p 114 c (e)s -1(turn)m 10(values)m 279 202 p 2 46 ru 388 187 p (operation)s 642 201 p 2 46 ru 686 187 p (ar)s (g)s -1(umen)m -1(ts)m 885 201 p 2 46 ru 30 202 p 856 2 ru 30 249 p 2 46 ru 249 r 2 46 ru t-rom.270 @sf 304 235 p (Update)s 642 249 p 2 46 ru 243 r 2 46 ru 30 294 p 2 46 ru 249 r 2 46 ru 304 280 p (Interpret)s 642 294 p 2 46 ru 667 280 p (command)s 885 294 p 2 46 ru 30 340 p 2 46 ru 249 r 2 46 ru 304 326 p (Uninterpret)s 642 340 p 2 46 ru 667 326 p (command)s 885 340 p 2 46 ru 30 386 p 2 46 ru 249 r 2 46 ru cmsy9.300 @sf 304 372 p 102 c t-ita.270 @sf (child)s 13(iteration)m 642 386 p 2 46 ru 243 r 2 46 ru 30 431 p 2 46 ru 249 r 2 46 ru 304 417 p (and)s 12(manipulation)m 642 431 p 2 46 ru 243 r 2 46 ru 30 477 p 2 46 ru 249 r 2 46 ru 304 463 p (operations)s cmsy9.300 @sf 103 c 642 477 p 2 46 ru 243 r 2 46 ru 30 522 p 2 46 ru t-rom.270 @sf 55 509 p (graphic)s 279 523 p 2 46 ru 304 508 p (GetGraphic)s 642 522 p 2 46 ru 243 r 2 46 ru 30 568 p 2 46 ru 249 r 2 46 ru 304 554 p (Highlight)s 642 568 p 2 46 ru 243 r 2 46 ru 30 614 p 2 46 ru 249 r 2 46 ru 304 600 p (Unhighlight)s 642 614 p 2 46 ru 243 r 2 46 ru 30 659 p 2 46 ru 55 646 p (manipulator)s 279 660 p 2 46 ru 304 645 p (CreateManipulator)s 642 659 p 2 46 ru 667 645 p (tool,)s 13(event)m 885 659 p 2 46 ru 30 705 p 2 46 ru 55 692 p (command)s 279 706 p 2 46 ru 304 691 p (InterpretManipulator)s 642 705 p 2 46 ru 667 691 p (manipulator)s 885 705 p 2 46 ru 30 706 p 856 2 ru t-rom.300 @sf 159 822 p 84 c -2(able)m 14(2:)m 17(Component)m 13(view)m 13(protocol)m 0 975 p (typically)s 13(retrieves)m 14(information)m 13(from)m 14(the)m 14(command)m 16(for)m 0 1024 p (internal)s 8(use)m 10(or)m 10(executes)m 10(the)m 9(command.)m 18(The)m 11(Uninterpret)m 0 1074 p (operation)s 15(allows)m 16(the)m 15(component)m 16(to)m 16(negate)m 16(the)m 16(ef)m (fects)s 0 1124 p (of)s 16 r 97 c 18(command;)m 18(the)m 17(subject)m 16(might)m 16(undo)m 15(internal)m 16(state)m 0 1174 p (changes)s 17(based)m 18(on)m 16(information)m 15(in)m 16(the)m 16(command,)m 19(or)m 16(it)m 0 1224 p (might)s 14(simply)m 14(reverse-execute)m 17(the)m 15(command.)m 24(Compo-)m 0 1273 p (nents)s 11(can)m 11(also)m 11(de\014ne)m 12 r 97 c t-bol.300 @sf 11(transfer)m 14(function)m t-rom.300 @sf 44 c 12(described)m 11(in)m 0 1323 p (Section)s 15(3.2.4,)m 16(that)m 15(can)m 16(be)m 16(accessed)m 18(via)m 15(the)m 15(GetT)m (rans-)s 0 1373 p (ferFunction)s 17(operation.)m 32(Finally)m -2 r 44 c 18 r 97 c 19(component)m 18(subject)m 0 1423 p (can)s 17(contain)m 15(other)m 16(component)m 15(subjects,)m 17(allowing)m 15(hier-)m 0 1473 p (archies)s 20(of)m 19(domain-speci\014c)m 19(components.)m 35(Component)m 0 1523 p (subjects)s 14(therefore)m 13(de\014ne)m 14 r 97 c 15(family)m 13(of)m 13(operations)m 13(for)m 13(it-)m 0 1572 p (erating)s 19(through)m 18(their)m 18(child)m 19(subjects)m 19(\(if)m 19(any\))m 19(and)m 20(for)m 0 1622 p (reordering)s 13(them.)m 42 1681 p (The)s 19(component)m 19(view)m 19(protocol)m 17(duplicates)m 19(some)m 19(of)m 0 1731 p (the)s 16(subject)m 15(protocol')m -2 r 115 c 14(operations,)m 16(namely)m 16(Update,)m 17(In-)m 0 1781 p (terpret,)s 17(Uninterpret,)m 16(and)m 16(those)m 17(for)m 16(child)m 15(iteration)m 15(and)m 0 1831 p (manipulation.)s 39 r 65 c 21(subject')m -1 r 115 c 20(Notify)m 19(operation)m 20(usually)m 0 1881 p (calls)s 13(Update)m 13(on)m 12(each)m 14(of)m 12(its)m 12(views.)m 19(Interpret)m 11(and)m 13(Unin-)m 0 1931 p (terpret)s 11(are)m 13(de\014ned)m 12(on)m 11(views)m 11(because)m 14(some)m 12(objects)m 11(ma-)m 0 1980 p (nipulate)s 17(component)m 18(views)m 19(rather)m 18(than)m 18(their)m 18(subjects.)m 0 2030 p (Thus)s 18(it)m 16(may)m 18(be)m 18(convenient)m 16(to)m 17(send)m 18 r 97 c 18(command)m 18(to)m 17 r 97 c 0 2080 p (view)s 14(for)m 13(\(un\)interpretati)m -1(on,)m 12(which)m 13(may)m 15(in)m 13(turn)m 13(send)m 14(it)m 0 2130 p (to)s 11(its)m 10(subject.)m 18 r 65 c 11(component)m 11(view)m 11(may)m 12(have)m 12 r 97 c 12(subcom-)m 0 2180 p (ponent)s 15(view)m 16(structure,)m 16(which)m 16(may)m 17(or)m 15(may)m 17(not)m 15(re\015ect)m 0 2229 p (its)s 10(subject')m -1 r 115 c 8(structure,)m 11(so)m 10(the)m 10(view)m 10(protocol)m 9(also)m 10(de\014nes)m 0 2279 p (child)s 13(iteration)m 12(and)m 14(manipulation)m 12(operations.)m t-bol.300 @sf 42 2339 p (Graphical)s 12(components)m t-rom.300 @sf 11(are)m 12(specialized)m 11(components)m 0 2388 p (that)s 20(use)m t-bol.300 @sf 22(graphic)m t-rom.300 @sf 21(objects)m 20(in)m 20(both)m 20(their)m 20(subjects)m 21(and)m 0 2438 p (views)s 16(to)m 15(de\014ne)m 16(their)m 15(appearance.)m 26 r 65 c 15(graphic)m 16(contains)m 0 2488 p (graphics)s 12(state)m 12(and)m 12(geometric)m 12(information)m 10(and)m 12(uses)m 13(this)m 0 2538 p (information)s 9(to)m 10(draw)m 11(itself)m 10(and)m 11(to)m 11(perform)m 11(hit)m 9(detection.)m 0 2588 p (By)s 11(de\014nition,)m 10(graphical)m 10(component)m 11(subjects)m 11(store)m 11(their)m 0 2637 p (geometric)s 13(and)m 14(graphics)m 13(state)m 13(in)m 13 r 97 c 13(graphic,)m 14(providin)m -1 r 103 c 12 r 97 c 0 2687 p (standard)s 14(interface)m 14(for)m 13(retrieving)m 12(this)m 13(information.)m 17(The)m 0 2737 p (GetGraphic)s 20(operation)m 18(returns)m 19(the)m 20(information)m 18(in)m 19(the)m 1035 154 p (subject')s -1 r 115 c 15(graphic.)m 28(Graphical)m 16(component)m 17(subjects)m 16(can)m 1035 203 p (also)s 10(have)m 11 r 97 c t-bol.300 @sf 11(mobilit)m -1 r 121 c t-rom.300 @sf 9(attribut)m -1 r 101 c 9(and)m 11(de\014ne)m 10(operations)m 10(for)m 1035 253 p (assigning)s 15(and)m 17(retrieving)m 14(it.)m 26(Later)m 17(we)m 17(show)m 16(how)m 16(mo-)m 1035 303 p (bility)s 15(is)m 17(used)m 18(to)m 16(de\014ne)m 18(the)m 17(component')m -1 r 115 c 16(connectivity)m 1035 353 p (semantics.)s 1076 403 p (Several)s 23(operations)m 22(augment)m 22(the)m 23(basic)m 22(component)m 1035 453 p (view)s 15(protocol)m 14(to)m 15(support)m 14(graphical)m 15(component)m 15(views.)m 1035 503 p (These)s 16(views)m 15(maintain)m 15 r 97 c 16(graphic)m 14(that)m 15(de\014nes)m 16(their)m 14(ap-)m 1035 553 p (pearance,)s 28(so)m 23(they)m 23(provide)m 22 r 97 c 24(GetGraphic)m 23(operation.)m 1035 602 p (Highlight)s 10(and)m 13(Unhighlig)m -1(ht)m 11(operations)m 12(let)m 12(views)m 13(distin-)m 1035 652 p (guish)s 13(themselves)m 15(graphically)m -2 r 44 c 12(for)m 14(example,)m 15(when)m 14(they)m 1035 702 p (are)s 18(selected.)m 30(CreateManipulator)m 16(and)m 18(InterpretManip-)m 1035 752 p (ulator)s 15(de\014ne)m 16(how)m 15 r 97 c 16(graphical)m 15(component)m 16(view)m 15(reacts)m 1035 802 p (when)s 20(it)m 19(is)m 19(manipulated)m 19(by)m 19 r 97 c 21(tool)m 18(and)m 20(how)m 19(the)m 19(tool)m 1035 851 p (af)s (fects)s 19(the)m 18(component)m 19(after)m 19(manipulation.)m 32(Both)m 18(op-)m 1035 901 p (erations)s 19(use)m 21 r 97 c t-bol.300 @sf 20(manipulator)m t-rom.300 @sf 19(to)m 19(characterize)m 22(the)m 19(ma-)m 1035 951 p (nipulation)s -1 r 46 c 20(Manipulators)m 14(abstract)m 15(and)m 15(encapsulate)m 15(the)m 1035 1001 p (mechanics)s 17(of)m 16(direct)m 16(manipulation;)m 15(they)m 16(are)m 17(discussed)m 1035 1051 p (further)s 13(in)m 13(Section)m 13(3.4.)m t-bol.300 @sf 1035 1163 p (3.2.2)s 42(Connectors)m t-rom.300 @sf 1035 1242 p (Unidraw)s 21(supports)m 21(connectivity)m 20(and)m 22(con\014nement)m 23(se-)m 1035 1292 p (mantics)s 13(with)m 11(the)m t-bol.300 @sf 12(connector)m t-rom.300 @sf 14(graphical)m 12(component)m 12(sub-)m 1035 1341 p (class.)s 19(Since)m 13(connectors)m 13(are)m 14(components,)m 13(each)m 13(consists)m 1035 1391 p (of)s 11 r 97 c 11(subject)m 11(and)m 11(zero)m 11(or)m 11(more)m 11(views)m 11(and)m 11(can)m 12(be)m 11(manip-)m 1035 1441 p (ulated)s 9(directly)m -2 r 46 c 16(Often,)m 10(however)m -1 r 44 c 10(connectors)m 10(are)m 10(embed-)m 1035 1491 p (ded)s 16(in)m 15(lar)m (ger)s 15(components)m 15(that)m 15(use)m 17(connector)m 15(subjects)m 1035 1541 p (to)s 14(de\014ne)m 15(their)m 14(own)m 14(connectivity)m 13(semantics)m 15(but)m 14(do)m 14(not)m 1035 1590 p (incorporate)s 10(the)m 12(corresponding)m 10(connector)m 11(views)m 11(in)m 11(their)m 1035 1640 p (own)s 13(views.)m 1076 1691 p 65 c 13(connector)m 13(can)m 14(be)m 13(connected)m 13(to)m 13(one)m 13(or)m 12(more)m 14(other)m 1035 1740 p (connectors.)s 28(Once)m 17(connected,)m 19(two)m 16(connectors)m 16(can)m 18(af-)m 1035 1790 p (fect)s 15(each)m 15(other)m 2 r 39 c -1 r 115 c 13(position)m 12(in)m 14(speci\014c)m 15(ways,)m 16(as)m 15(de\014ned)m 1035 1840 p (by)s 17(the)m 18(semantics)m 18(of)m 18(the)m 17(connection.)m 30(Connector)m 16(sub-)m 1035 1890 p (classes)s 15(support)m 13(dif)m (ferent)s 12(connection)m 13(semantics.)m 20 r 65 c t-bol.300 @sf 14(pin)m t-rom.300 @sf 1035 1940 p (contributes)s 15(zero)m 17(degrees)m 17(of)m 17(freedom)m 17(to)m 15 r 97 c 17(connection.)m 1035 1989 p 65 c 13(degree)m 14(of)m 13(freedom)m 13(is)m 13(an)m 14(independent)m 12(variable)m 13(along)m 1035 2039 p 97 c 11(particular)m 9(dimension,)m 11(which)m 10(for)m 9(connectors)m 11(is)m 10 r 97 c 10(carte-)m 1035 2089 p (sian)s 15(coordinate.)m t-bol.300 @sf 21(Slots)m t-rom.300 @sf 14(and)m t-bol.300 @sf 15(pads)m t-rom.300 @sf 15(provide)m 13(one)m 15(and)m 15(two)m 1035 2139 p (degrees)s 10(of)m 9(freedom)m 10(within)m 8(certain)m 9(bounds,)m 10(respectively)m -2 r 46 c 1076 2189 p (Figure)s 21 r 51 c 22(shows)m 21(how)m 21(dif)m (ferent)s 20(connectors)m 21(behave)m 1035 2239 p (in)s 17(several)m 18(connections,)m 18(using)m 17(the)m 17(connectors')m 18(default)m 1035 2289 p (graphical)s 21(representations.)m 40(The)m 21(centers)m 22(of)m 21(two)m 20(con-)m 1035 2339 p (nected)s 16(pins)m 15(must)m 15(always)m 16(coincide)m 15(\(Figure)m 15(3a\).)m 23 r 65 c 16(pin)m 1035 2388 p (connected)s 15(to)m 14 r 97 c 16(slot)m 14(\(Figure)m 14(3b\))m 14(is)m 15(free)m 15(to)m 15(move)m 15(along)m 1035 2438 p (the)s 15(slot')m -2 r 115 c 13(major)m 15(axis)m 15(until)m 13(it)m 14(reaches)m 16(either)m 15(end)m 15(of)m 14(the)m 1035 2488 p (slot;)s 12(the)m 12(pin)m 12(cannot)m 12(move)m 13(in)m 12(the)m 13(transverse)m 13(dimension.)m 1035 2538 p 84 c -2(wo)m 14(connected)m 14(slots)m 14(\(Figure)m 14(3c\))m 14(can)m 15(move)m 15(relative)m 14(to)m 1035 2588 p (each)s 18(other)m 17(as)m 18(long)m 16(as)m 18(the)m 17(center)m 17(lines)m 17(of)m 17(their)m 16(major)m 1035 2637 p (axes)s 18(share)m 18 r 97 c 18(point.)m 29(Finally)m -3 r 44 c 17(Figure)m 17(3d)m 17(shows)m 18(how)m 17 r 97 c 1035 2687 p (pad-pin)s 17(connection)m 18(constrains)m 17(the)m 18(pin)m 18(to)m 18(stay)m 18(within)m 1035 2737 p (the)s 14(con\014nes)m 14(of)m 13(the)m 14(pad.)m @eop 6 @bop0 6 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 54 c 13 r 45 c 45 112 p 13024788 16801967 3815342 1315635 39600619 47560212 startTexFig %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica-Bold Helvetica %%BoundingBox: 58 20 602 723 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave printFont findfont printSize scalefont setfont fgred fggreen fgblue setrgbcolor /vertoffset printSize neg def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 4 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.959999 0 0 0.959999 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 -57.9187 507 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 -1.9187 507 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 98.0813 750 ] concat %I [ (+) ] Text End Begin %I Line %I b 65535 3 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -27.9187 321 ] concat %I 184 424 208 424 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 78.0813 507 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 234.081 751 ] concat %I [ (\(coinciding\)) ] Text End Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.7 0 0 0.5 17.74 473.796 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 98.04 680.796 ] concat %I [ (+) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.3 0 0 0.3 39.6813 185.671 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 88 24 376 336 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 88 336 376 24 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 376 336 88 24 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 174.781 247.171 ] concat %I [ (+) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 52.7813 -104.37 ] concat Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p 1 SetP %I t [ 0.605 0 0 0.605 0.320984 58.481 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 28.041 108.041 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 559.919 732.919 ] concat %I [ (\(a\) pin-pin) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 557.919 580.715 ] concat %I [ (\(b\) pin-slot) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 555.919 324.752 ] concat %I [ (\(c\) slot-slot) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica12 /Helvetica 12 SetF %I t [ 1 0 0 1 555.919 44.5897 ] concat %I [ (\(d\) pad-pin) ] Text End Begin %I Line %I b 52428 1 0 0 [2 2 2 2 2 2 2 2] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 64 712 624 712 Line End Begin %I Line %I b 52428 1 0 0 [2 2 2 2 2 2 2 2] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 1.90735e-06 -152 ] concat %I 64 712 624 712 Line End Begin %I Line %I b 52428 1 0 0 [2 2 2 2 2 2 2 2] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0 -688 ] concat %I 64 712 624 712 Line End Begin %I Line %I b 52428 1 0 0 [2 2 2 2 2 2 2 2] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 9.53674e-07 -408 ] concat %I 64 712 624 712 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.7 0 0 0.5 -38.7187 313.834 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 1.2168e-08 -0.24 0.5 1.46015e-09 74.0813 574.194 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 241.581 521.334 ] concat %I [ (+) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 8 0 ] concat Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.7 0 0 0.5 -38.26 401.796 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -93.3 257.755 ] concat Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p 1 SetP %I t [ 0.605 0 0 0.605 0.320984 58.481 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 28.041 108.041 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -85.3 329.755 ] concat Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p 1 SetP %I t [ 0.605 0 0 0.605 0.320984 58.481 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 28.041 108.041 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -16 0 ] concat Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.7 0 0 0.5 169.74 401.796 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 218.7 257.755 ] concat Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p 1 SetP %I t [ 0.605 0 0 0.605 0.320984 58.481 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 28.041 108.041 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -24 0 ] concat Begin %I Pict %I b 65535 1 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.7 0 0 0.5 361.74 401.796 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 466.7 257.755 ] concat Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p 1 SetP %I t [ 0.605 0 0 0.605 0.320984 58.481 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 28.041 108.041 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop End %I eop End %I eop Begin %I MLine %I b 65535 3 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 3 312 672 328 672 328 648 3 MLine End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 0 -8 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.7 0 0 0.5 -26.7187 207.834 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 1.2168e-08 -0.24 0.5 1.46015e-09 -119.919 498.194 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -8 -16 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.7 0 0 0.5 165.281 215.834 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 1.2168e-08 -0.24 0.5 1.46015e-09 176.081 482.194 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 16 72 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.7 0 0 0.5 325.281 127.834 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 1.2168e-08 -0.24 0.5 1.46015e-09 387.919 364.275 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -40 -80 ] concat %I 192 464 416 496 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 400 376 400 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 256 416 256 384 Line End End %I eop End %I eop Begin %I MLine %I b 65535 3 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 0 -160 ] concat %I 3 312 672 328 672 328 648 3 MLine End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 0 -56 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.3 0 0 0.3 274.681 114.671 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 88 24 376 336 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 88 336 376 24 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 376 336 88 24 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 190.781 -172.37 ] concat Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p 1 SetP %I t [ 0.605 0 0 0.605 0.320984 58.481 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 28.041 108.041 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 -1 0 232.141 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.3 0 0 0.3 87.6813 65.671 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 88 24 376 336 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 88 336 376 24 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 376 336 88 24 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -46.3407 -178.451 ] concat Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p 1 SetP %I t [ 0.605 0 0 0.605 0.320984 58.481 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 28.041 108.041 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ -1 2.43359e-08 2.43359e-08 1 688.502 -8 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.3 0 0 0.3 87.6813 65.671 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 88 24 376 336 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 88 336 376 24 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 376 336 88 24 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -46.3407 -178.451 ] concat Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p 1 SetP %I t [ 0.605 0 0 0.605 0.320984 58.481 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 1 SetP %I t [ 0.5 0 0 0.5 28.041 108.041 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 472 16 16 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 488 264 456 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 248 472 280 472 Line End End %I eop End %I eop End %I eop Begin %I MLine %I b 65535 3 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -56 -432 ] concat %I 3 312 672 328 672 328 648 3 MLine End End %I eop %%Trailer end showpage endTexFig 32 1268 p (Figure)s 13(3:)m 18(Several)m 14(connections)m 13(and)m 14(their)m 13(semantics)m 42 1402 p (The)s 20(connectors')m 20(mobilities)m 18(characterize)m 22(how)m 20(each)m 0 1451 p (connector)s 13(moves)m 13(to)m 13(satisfy)m 12(the)m 13(connection)m 13(constraints.)m 0 1501 p 65 c 22(mobility)m 19(attribute)m 21(can)m 22(have)m 22(one)m 22(of)m 22(three)m 21(values:)m t-bol.300 @sf 0 1551 p (\014xed)s t-rom.300 @sf 44 c t-bol.300 @sf 13(\015oating)m t-rom.300 @sf 44 c 11(or)m t-bol.300 @sf 11(unde\014ned)m t-rom.300 @sf 46 c 20(In)m 11(general,)m 13 r 97 c 12(\014xed)m 12(com-)m 0 1601 p (ponent')s -1 r 115 c 14(position)m 15(cannot)m 16(be)m 16(af)m (fected)s 17(by)m 16 r 97 c 17(connection)m 0 1651 p (regardless)s 12(of)m 10(the)m 11(connection')m -1 r 115 c 9(semantics,)m 13(while)m 11 r 97 c 11(\015oat-)m 0 1700 p (ing)s 16(component)m 17(will)m 15(move)m 18(to)m 16(satisfy)m 16(the)m 17(connection')m -1 r 115 c 0 1750 p (semantics.)s 18(The)m 11(behavior)m 9(of)m 9 r 97 c 11(connector)m 10(with)m 8(unde\014ned)m 0 1800 p (mobility)s 12(is)m 15(indeterminate.)m 20(Composite)m 13(components)m 15(of-)m 0 1850 p (ten)s 15(have)m 16(unde\014ned)m 15(mobility)m 13(to)m 15(avoid)m 15(overriding)m 13(their)m 0 1900 p (children')s -1 r 115 c 12(mobiliti)m -1(es.)m 42 1950 p (Mobilit)s -1 r 121 c 14(speci\014cations)m 17(disambiguate)m 16(the)m 16(semantics)m 0 2000 p (of)s 9 r 97 c 10(connection.)m 16(In)m 9(Figure)m 9(3b,)m 10(for)m 8(example,)m 11(it)m 9(is)m 9(unclear)m 0 2049 p (which)s 15(connector)m 15(\(the)m 15(pin)m 14(or)m 15(the)m 15(slot\))m 14(actually)m 15(moves.)m 0 2099 p (If,)s 12(however)m -1 r 44 c 12(the)m 11(slot')m -2 r 115 c 10(mobility)m 9(is)m 12(\014xed)m 11(and)m 12(the)m 11(pin')m -1 r 115 c 9(is)m 0 2149 p (\015oating,)s 15(then)m 15(the)m 15(pin)m 14(will)m 14(always)m 16(move)m 16(to)m 14(satisfy)m 15(the)m 0 2199 p (connection)s 13(constraints.)m 17(If)m 13(the)m 13(slot)m 13(is)m 13(moved)m 13(explicitly)m -2 r 44 c 0 2249 p (then)s 11(the)m 12(pin)m 11(will)m 10(move)m 12(to)m 12(stay)m 11(within)m 10(it.)m 18(An)m 11(attempt)m 12(to)m 0 2298 p (explicitly)s 12(move)m 15(the)m 15(pin)m 13(beyond)m 14(the)m 15(slot')m -2 r 115 c 13(bounds)m 13(will)m 0 2348 p (fail;)s 19(in)m 18(fact,)m 20(if)m 17(the)m 18(pin)m 18(is)m 18(also)m 18(connected)m 18(to)m 18(another)m -1 r 44 c 0 2398 p (orthogonal)s 12(slot,)m t-ita.300 @sf 13(any)m t-rom.300 @sf 14(attempt)m 13(to)m 14(move)m 14(it)m 13(explicitly)m 11(will)m 0 2448 p (fail.)s 25(As)m 16 r 97 c 17(corollary)m -2 r 44 c 15 r 97 c 17(connection)m 15(can)m 17(have)m 17(no)m 15(ef)m (fect)s 0 2498 p (on)s 13(two)m 13(\014xed)m 14(connectors.)m t-bol.300 @sf 0 2609 p (3.2.3)s 42(Domain-Speci\014c)m 15(Connectivity)m t-rom.300 @sf 0 2687 p (Domain-speci\014c)s 15(components)m 13(use)m 15(connectors)m 14(to)m 14(de\014ne)m 0 2737 p (their)s 18(connectivity)m 17(semantics.)m 35(For)m 18(example,)m 21(consider)m 1168 112 p 10230373 9472573 8354283 13419479 33877606 37035130 startTexFig %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica Helvetica-Bold %%BoundingBox: 127 204 515 563 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave printFont findfont printSize scalefont setfont fgred fggreen fgblue setrgbcolor /vertoffset printSize neg def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 4 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.96 0 0 0.96 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 3.672 0 0 2.72 -980.544 -893.92 ] concat %I 8 320 464 312 456 312 416 320 408 384 408 392 416 392 456 384 464 8 CBSpl End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 8.00012 7.99997 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 24 -224 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.6 0 0 0.6 36.8 256 ] concat %I 232 360 40 40 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica14 /Helvetica 14 SetF %I t [ 1 0 0 1 161 487 ] concat %I [ (local) (data) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 8 -160 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -104 40 ] concat %I 8 320 464 312 456 312 416 320 408 384 408 392 416 392 456 384 464 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica14 /Helvetica 14 SetF %I t [ 1 0 0 1 224.5 491 ] concat %I [ (pin) (subject) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 48 -96 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -120 -88 ] concat %I 8 320 464 312 456 312 416 320 408 384 408 392 416 392 456 384 464 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica14 /Helvetica 14 SetF %I t [ 1 0 0 1 207 363 ] concat %I [ (polygon) (subject) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 8.00009 -200 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 8 16 ] concat %I 8 320 464 312 456 312 416 320 408 384 408 392 416 392 456 384 464 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica14 /Helvetica 14 SetF %I t [ 1 0 0 1 336.5 467 ] concat %I [ (circle) (subject) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 144 -160 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -104 40 ] concat %I 8 320 464 312 456 312 416 320 408 384 408 392 416 392 456 384 464 8 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica14 /Helvetica 14 SetF %I t [ 1 0 0 1 224.5 491 ] concat %I [ (pin) (subject) ] Text End End %I eop End %I eop Begin %I CBSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 3.672 0 0 2.72 -980.544 -677.92 ] concat %I 8 320 464 312 456 312 416 320 408 384 408 392 416 392 456 384 464 8 CBSpl End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 5.00012 3.99997 ] concat Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t u %I 3 248 560 248 448 344 504 3 Poly End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 8 0 ] concat %I 352 504 18 18 Elli End Begin %I Pict %I b 52428 1 0 0 [2 2 2 2 2 2 2 2] 17 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 48 104 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 120 -16 ] concat %I 192 416 11 11 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 0 4 ] concat %I 312 408 312 384 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.2168e-08 -1 1 1.2168e-08 -84 712 ] concat %I 312 408 312 384 Line End End %I eop Begin %I Pict %I b 52428 1 0 0 [2 2 2 2 2 2 2 2] 17 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -64 104 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 120 -16 ] concat %I 192 416 11 11 Elli End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 0 4 ] concat %I 312 408 312 384 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.2168e-08 -1 1 1.2168e-08 -84 712 ] concat %I 312 408 312 384 Line End End %I eop End %I eop Begin %I BSpl %I b 65535 3 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 4 173 354 136 376 136 440 166 462 4 BSpl End Begin %I BSpl %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 3 312 289 312 456 298 496 3 BSpl End Begin %I BSpl %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 3 352 289 347 462 359 489 3 BSpl End Begin %I BSpl %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 3 400 352 404 455 368 504 3 BSpl End Begin %I BSpl %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 3 240 353 228 479 248 504 3 BSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 480 523 ] concat %I [ (inverter) (view) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 480 307 ] concat %I [ (inverter) (subject) ] Text End End %I eop %%Trailer end showpage endTexFig 1035 803 p (Figure)s 13(4:)m 18(Possible)m 13(composition)m 12(of)m 13(an)m 14(inverter)m 13(compo-)m 1035 853 p (nent)s 1035 983 p (an)s 14(inverter)m 14(schematic)m 15(component)m 13(whose)m 15(wires)m 14(remain)m 1035 1033 p (connected)s 19(when)m 18(the)m 18(user)m 19(moves)m 19(it.)m 32(Figure)m 18 r 52 c 18(shows)m 1035 1083 p (how)s 17(the)m 17(inverter)m 17(subject)m 17(and)m 18(view)m 17(can)m 18(be)m 18(composed)m 1035 1133 p (with)s 10(polygon,)m 10(circle,)m 13(and)m 11(pin)m 10(subjects)m 11(and)m 11(views.)m 18(Note)m 1035 1183 p (that)s 11(the)m 12(pins)m 12(are)m 13(treated)m 12(as)m 12(any)m 13(other)m 11(component)m 12(in)m 11(the)m 1035 1233 p (composition,)s 14(but)m 14(they)m 14(have)m 15 r 97 c 16(special)m 15(responsibili)m -1(ty)m 13(to)m 1035 1282 p (de\014ne)s 18(the)m 17(inverter)m 2 r 39 c -2 r 115 c 15(connectivity)m 15(semantics.)m 30(The)m 18(in-)m 1035 1332 p (verter)s 15(gives)m 16(its)m 14(pins)m 15(\014xed)m 16(mobility)m 13(so)m 15(that)m 15(their)m 15(posi-)m 1035 1382 p (tions)s 8(are)m 11(unaf)m (fected)s 9(by)m 9(any)m 9(connections)m 9(to)m 9(them.)m 18(When)m 1035 1432 p (the)s 20(inverter)m 19(is)m 19(moved,)m 22(it)m 19(moves)m 20(all)m 20(its)m 19(components.)m 1035 1482 p (Since)s 16(the)m 15(pins)m 15(are)m 16(\014xed,)m 16(they)m 15(will)m 15(not)m 14(be)m 16(af)m (fected)s 15(by)m 1035 1531 p (their)s 15(connections;)m 15(rather)m -1 r 44 c 15(any)m 16(\015oating)m 14(connectors)m 16(that)m 1035 1581 p (are)s 14(connected)m 14(to)m 12(the)m 13(pins)m 13(will)m 11(move)m 14(as)m 14(the)m 13(connection)m 1035 1631 p (permits.)s 25(One)m 16(such)m 16(\015oating)m 15(connector)m 15(might)m 15(be)m 16 r 97 c 17(pin)m 1035 1681 p (subcomponent)s 9(of)m 10 r 97 c 10(wire)m 10(component)m 10(whose)m 10(shape)m 10(is)m 10(de-)m 1035 1731 p (termined)s 13(by)m 12(the)m 13(position)m 11(of)m 12(the)m 13(pin;)m 12(the)m 12(wire)m 13(therefore)m 1035 1780 p (deforms)s 17(to)m 15(maintain)m 16(the)m 16(connection.)m 26(Graphical)m 17(com-)m 1035 1830 p (ponents)s 15(can)m 17(thus)m 15(extend)m 16(the)m 16(connectivity)m 14(behavior)m 15(of)m 1035 1880 p (primitive)s 14(connectors)m 16(to)m 16(de\014ne)m 16(their)m 15(own)m 16(connectivity)m 1035 1930 p (semantics.)s t-bol.300 @sf 1035 2054 p (3.2.4)s 42(Data\015ow)m t-rom.300 @sf 1035 2137 p (Communication)s 25(between)m 27(components)m 26(is)m 27(often)m 26(tied)m 1035 2187 p (closely)s 11(to)m 12(their)m 10(connectivity)m -2 r 46 c 16(Unidraw)m 11(provides)m 11 r 97 c 12(stan-)m 1035 2236 p (dard)s 10(way)m 11(for)m 10(components)m 10(to)m 10(communicate)m 11(via)m 10(data\015ow)m 1035 2286 p (and)s 14(for)m 13(associating)m 13(data\015ow)m 14(with)m 13(their)m 13(connectivity)m -3 r 46 c 1076 2339 p (Component)s 15(subjects)m 16(often)m 15(maintain)m 16(state)m 16(on)m 16(which)m 1035 2388 p (other)s 14(subjects)m 14(depend)m 14(or)m 14(state)m 14(that)m 14(must)m 14(be)m 15(accessible)m 1035 2438 p (to)s 17(the)m 18(user)m -1 r 46 c 31(Unidraw)m 17(de\014nes)m 19 r 97 c 18(set)m 18(of)m 18(objects)m 18(called)m t-bol.300 @sf 1035 2488 p (state)s 22(variables)m t-rom.300 @sf 18(that)m 18(provide)m 18 r 97 c 19(standard)m 19(way)m 19(to)m 18(rep-)m 1035 2538 p (resent)s 16(and)m 16(access)m 17(this)m 15(state.)m 25(State)m 16(variables)m 15(are)m 17(com-)m 1035 2588 p (monly)s 15(used)m 16(to)m 15(allow)m 15(user)m 16(modi\014cation)m 14(of)m 15(component)m 1035 2637 p (attributes)s 21(and)m 23(to)m 22(support)m 21(data\015ow)m 22(between)m 23(compo-)m 1035 2687 p (nents.)s 18(Like)m 11(components,)m 11(state)m 11(variables)m 11(are)m 12(partitioned)m 1035 2737 p (into)s 19(subjects)m 19(and)m 20(views.)m 38(The)m 20(state)m 21(variable)m 19(subject)m @eop 7 @bop0 /Times-Oblique /Times-Roman 15.5 ObliqueFont /Times-Oblique /t-obl.300 ReEncodeForTeX /t-obl.300 /t-obl.300 41.511000 TeXPSmakefont def 7 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 55 c 13 r 45 c 0 154 p (represents)s 14 r 97 c 15(typed)m 13(datum,)m 14(and)m 14(views)m 14(provide)m 12 r 97 c 15(graph-)m 0 203 p (ical)s 15(interface)m 14(that)m 14(lets)m 14 r 97 c 15(user)m 15(examine)m 15(and)m 15(modify)m 13(the)m 0 253 p (subject.)s 38 r 65 c 20(component)m 20(can)m 21(make)m 21(its)m 20(state)m 20(variables)m 0 303 p (available)s 14(externally)m 12(by)m 14(providin)m -1 r 103 c 12(access)m 16(operations)m 12(as)m 0 353 p (necessary)s -2 r 46 c 42 407 p 65 c 11(state)m 12(variable)m 11(can)m 13(be)m 12(bound)m 10(to)m 11 r 97 c 12(connector)m 12(like)m 11(an)m 0 457 p (actual)s 16(parameter)m 16(is)m 16(bound)m 14(to)m 15 r 97 c 16(formal)m 15(parameter)m 17(in)m 15 r 97 c 0 507 p (procedure)s 11(call.)m 18(Connectors)m 9(de\014ne)m 12(\\parameter)m 12(passing")m 0 557 p (semantics)s 13(for)m 12(any)m 12(bound)m 11(state)m 12(variable,)m 13(one)m 12(of)m t-bol.300 @sf 12(in)m t-rom.300 @sf 44 c t-bol.300 @sf 13(out)m t-rom.300 @sf 44 c 0 606 p (or)s t-bol.300 @sf 10(inout)m t-rom.300 @sf 46 c 17(When)m 10(connected,)m 12(two)m 10(connectors)m 10(with)m 9(bound)m 0 656 p (state)s 16(variables)m 16(will)m 15(pass)m 17(their)m 15(values)m 17(accordingly;)m 16(for)m 0 706 p (example,)s 16(an)m 16(in)m 14(connector)m 2 r 39 c -1 r 115 c 13(state)m 15(variable)m 15(will)m 13(receive)m 0 756 p (the)s 19(value)m 18(of)m 19(an)m 19(out)m 18(connector)m 2 r 39 c -2 r 115 c 17(variable.)m 34(Passing)m 19 r 97 c 0 806 p (value)s 17(between)m 18(incompatible)m 16(connectors)m 17(\(such)m 17(as)m 18(two)m 0 855 p (out)s 17(connectors\))m 17(is)m 17(an)m 17(error;)m 19(such)m 18(connections)m 16(should)m 0 905 p (be)s 21(disallowed)m 19(by)m 21(the)m 20(tool)m 19(or)m 21(command)m 21(making)m 20(the)m 0 955 p (connection.)s 42 1009 p 84 c (ransfer)s 13(functions)m 14(complete)m 15(the)m 14(data\015ow)m 15(model)m 14(by)m 0 1059 p (participating)s 14(in)m 16(the)m 16(propagation)m 15(of)m 16(state)m 16(variable)m 16(val-)m 0 1109 p (ues.)s 18 r 65 c 11(transfer)m 11(function)m 9(de\014nes)m 12 r 97 c 12(relationship)m 9(between)m 0 1159 p (state)s 17(variables,)m 18(modifying)m 15(one)m 18(set)m 17(of)m 16(variables)m 17(based)m 0 1209 p (on)s 11(the)m 12(values)m 12(of)m 11(another)m 11(set.)m 19(For)m 11(example,)m 13(the)m 12(inverter)m 0 1258 p (could)s 12(use)m 13(an)m t-obl.300 @sf 13(Invert)m t-rom.300 @sf 12(transfer)m 13(function)m 11(to)m 12(establish)m 12 r 97 c 13(de-)m 0 1308 p (pendency)s 11(between)m 10(the)m 11(logic)m 9(level)m 10(state)m 11(variables)m 10(bound)m 0 1358 p (to)s 13(its)m 12(in)m 13(and)m 13(out)m 12(pins:)m 17(Invert)m 13(assigns)m 13(the)m 13(inverse)m 13(value)m 0 1408 p (of)s 10(the)m 10(input)m 9(variable)m 10(to)m 9(the)m 10(output)m 9(variable.)m 17(Thus)m 10(trans-)m 0 1458 p (fer)s 13(functions)m 11(describe)m 13(how)m 12(values)m 13(change)m 13(as)m 13(they)m 12(\015ow)m 0 1507 p (from)s 14(one)m 13(component)m 14(to)m 13(another)m -1 r 46 c t-bol.360 @sf 0 1650 p (3.3)s 50(Commands)m t-rom.300 @sf 0 1736 p (Commands)s 19(are)m 20(analogous)m 19(to)m 18(messages)m 21(because)m 20(they)m 0 1786 p (can)s 11(be)m 10(interpreted)m 10(by)m 9(components.)m 18(Commands)m 10(are)m 11(also)m 0 1836 p (like)s 16(methods)m 16(in)m 15(that)m 16(they)m 16(are)m 17(stateful)m 15(and)m 16(can)m 17(be)m 17(ex-)m 0 1886 p (ecuted,)s 21(and)m 18(they)m 19(resemble)m 19(transactions)m 18(because)m 20(they)m 0 1936 p (can)s 21(be)m 21(reverse-executed)m 22(to)m 20 r 97 c 21(previous)m 19(state.)m 39(Some)m 0 1985 p (commands)s 19(may)m 18(be)m 18(directly)m 17(accessible)m 19(to)m 17(the)m 17(user)m 18(as)m 0 2035 p (menu)s 19(operations,)m 20(while)m 18(others)m 18(are)m 20(only)m 18(used)m 19(by)m 18(the)m 0 2085 p (editor)s 14(internally)m -3 r 46 c 22(In)m 14(general,)m 16(any)m 16(undoable)m 14(operations)m 0 2135 p (should)s 13(be)m 14(carried)m 14(out)m 13(by)m 13(command)m 14(objects.)m 42 2189 p 84 c -2(able)m 16 r 51 c 16(shows)m 17(the)m 16(basic)m 17(operations)m 16(de\014ned)m 17(by)m 16(the)m 0 2239 p (command)s 15(protocol.)m 20(Execute)m 15(performs)m 15(computation)m 13(to)m 0 2289 p (carry)s 18(out)m 16(the)m 17(command')m -1 r 115 c 17(semantics.)m 30(Unexecute)m 18(per-)m 0 2339 p (forms)s 13(computation)m 11(to)m 12(reverse)m 13(the)m 13(ef)m (fects)s 13(of)m 12 r 97 c 13(previous)m 0 2388 p (Execute,)s 23(based)m 21(on)m 20(whatever)m 20(internal)m 19(state)m 21(the)m 20(com-)m 0 2438 p (mand)s 13(maintains.)m 18 r 65 c 13(command)m 13(is)m 13(responsible)m 12(for)m 12(main-)m 0 2488 p (taining)s 11(enough)m 11(state)m 13(to)m 12(reverse)m 13(one)m 12(Execute)m 14(operation;)m 0 2538 p (repeated)s 19(Unexecute)m 18(operations)m 17(will)m 17(not)m 17(undo)m 17(the)m 18(ef-)m 0 2588 p (fects)s 15(of)m 15(more)m 15(than)m 15(one)m 15(Execute.)m 23(Multilevel)m 13(undo)m 14(can)m 0 2637 p (be)s 19(implemented)m 18(by)m 19(keeping)m 18(an)m 18(ordered)m 19(list)m 17(of)m 19(com-)m 0 2687 p (mands)s 11(to)m 10(reverse-execute.)m 19(It)m 10(may)m 11(not)m 9(be)m 11(meaningful)m 9(or)m 0 2737 p (appropriate,)s 16(however)m -1 r 44 c 16(for)m 15(some)m 16(commands)m 17(to)m 15(reverse)m 1056 155 p 874 2 ru 1056 201 p 2 46 ru t-ita.270 @sf 1081 188 p 114 c (e)s -1(turn)m 10(values)m 1305 202 p 2 46 ru 1392 187 p (operation)s 1622 201 p 2 46 ru 1698 187 p (ar)s (g)s -1(umen)m -1(ts)m 1928 201 p 2 46 ru 1056 202 p 874 2 ru 1056 249 p 2 46 ru 249 r 2 46 ru t-rom.270 @sf 1330 235 p (Execute)s 1622 249 p 2 46 ru 306 r 2 46 ru 1056 294 p 2 46 ru 249 r 2 46 ru 1330 280 p (Unexecute)s 1622 294 p 2 46 ru 306 r 2 46 ru 1056 340 p 2 46 ru 1081 327 p (boolean)s 1305 341 p 2 46 ru 1330 326 p (Reversible)s 1622 340 p 2 46 ru 306 r 2 46 ru 1056 386 p 2 46 ru 249 r 2 46 ru 1330 372 p (Store)s 1622 386 p 2 46 ru 1648 372 p (comp.)s 16(subj.,)m 12(any)m 1928 386 p 2 46 ru 1056 431 p 2 46 ru 1081 418 p (any)s 1305 432 p 2 46 ru 1330 417 p (Recall)s 1622 431 p 2 46 ru 1648 417 p (comp.)s 16(subj.)m 1928 431 p 2 46 ru 1056 477 p 2 46 ru 249 r 2 46 ru 1330 463 p (SetClipboard)s 1622 477 p 2 46 ru 1648 463 p (clipboard)s 1928 477 p 2 46 ru 1056 522 p 2 46 ru 1081 509 p (clipboard)s 1305 523 p 2 46 ru 1330 508 p (GetClipboard)s 1622 522 p 2 46 ru 306 r 2 46 ru 1056 568 p 2 46 ru 249 r 2 46 ru cmsy9.300 @sf 1330 554 p 102 c t-ita.270 @sf (child)s 13(iteration)m 1622 568 p 2 46 ru 306 r 2 46 ru 1056 614 p 2 46 ru 249 r 2 46 ru 1330 600 p (and)s 12(manipulation)m 1622 614 p 2 46 ru 306 r 2 46 ru 1056 659 p 2 46 ru 249 r 2 46 ru 1330 645 p (operations)s cmsy9.300 @sf 103 c 1622 659 p 2 46 ru 306 r 2 46 ru 1056 660 p 874 2 ru t-rom.300 @sf 1252 776 p 84 c -2(able)m 13(3:)m 18(Command)m 14(protocol)m 1035 952 p (their)s 11(ef)m (fect.)s 18(For)m 11(example,)m 14(it)m 11(is)m 11(probably)m 11(not)m 11(feasible)m 12(to)m 1035 1002 p (undo)s 14 r 97 c 15(command)m 15(that)m 15(generates)m 15(an)m 15(external)m 15(represen-)m 1035 1051 p (tation.)s 20(The)m 16(Reversible)m 14(operation)m 14(indicates)m 14(whether)m 14(or)m 1035 1101 p (not)s 12(the)m 13(command)m 14(is)m 13(unexecutable)m 13(and)m 13(uninterpretable.)m 1035 1151 p (If)s 10(the)m 9(command)m 11(is)m 9(not)m 9(reversible,)m 11(then)m 10(it)m 9(can)m 10(be)m 10(ignored)m 1035 1201 p (during)s 12(the)m 14(undo)m 13(process.)m 1076 1272 p (Since)s 14 r 97 c 13(command)m 14(can)m 14(af)m (fect)s 12(more)m 14(than)m 12(one)m 13(compo-)m 1035 1321 p (nent,)s 18(the)m 18(command)m 18(protocol)m 16(must)m 17(allow)m 17(components)m 1035 1371 p (that)s 16(interpret)m 15(the)m 17(command)m 17(to)m 16(store)m 16(information)m 15(in)m 16(it)m 1035 1421 p (that)s 12(they)m 12(can)m 13(later)m 12(use)m 13(to)m 12(reverse)m 13(its)m 12(ef)m (fects.)s 18(The)m 13(Store)m 1035 1471 p (operation)s 14(allows)m 14 r 97 c 16(component)m 14(to)m 15(store)m 15(information)m 13(in)m 1035 1521 p (the)s 17(command)m 19(as)m 18(part)m 17(of)m 17(its)m 17(Interpret)m 16(operation.)m 29(The)m 1035 1570 p (component)s 13(can)m 13(retrieve)m 13(this)m 12(information)m 11(later)m 13(with)m 12(the)m 1035 1620 p (Recall)s 17(operation)m 15(if)m 16(it)m 16(must)m 16(uninterpret)m 15(the)m 16(command.)m 1035 1670 p (Furthermore,)s 22(commands)m 21(that)m 19(operate)m 21(on)m 19(selected)m 21(or)m 1035 1720 p (otherwise)s 17(distingui)m -1(shed)m 16(components)m 17(must)m 17(maintain)m 17 r 97 c 1035 1770 p (record)s 11(of)m 11(the)m 11(component)m 11(subjects)m 11(they)m 11(af)m (fected)s 11(and)m 11(the)m 1035 1819 p (order)s 15(in)m 14(which)m 14(they)m 15(were)m 16(af)m (fected.)s 22(Commands)m 15(there-)m 1035 1869 p (fore)s 15(store)m 16 r 97 c t-bol.300 @sf 16(clipboard)m t-rom.300 @sf 15(object,)m 16(which)m 15(can)m 16(be)m 16(assigned)m 1035 1919 p (and)s 13(retrieved)m 12(with)m 12(the)m 13(SetClipboard)m 11(and)m 13(GetClipboard)m 1035 1969 p (operations.)s 17 r 65 c 10(clipboard)m 9(keeps)m 11 r 97 c 11(list)m 9(of)m 11(component)m 9(sub-)m 1035 2019 p (jects)s 14(and)m 14(provides)m 12(operations)m 13(for)m 13(iterating)m 12(through)m 12(the)m 1035 2069 p (list)s 12(and)m 13(manipulating)m 11(its)m 13(elements.)m 19 r 84 c -2(ypically)m -3 r 44 c 12(the)m 13(clip-)m 1035 2118 p (board)s 11(is)m 10(initialized)m 10(with)m 10(the)m 10(component)m 11(subjects)m 11(whose)m 1035 2168 p (views)s 11(are)m 11(currently)m 10(selected)m 12(when)m 11(the)m 10(command)m 12(is)m 10(\014rst)m 1035 2218 p (executed.)s 36(Purely)m 19(interpretive)m 18(commands)m 21(should)m 18(de-)m 1035 2268 p (\014ne)s 15(their)m 15(Execute)m 15(and)m 15(Unexecute)m 16(functions)m 14(to)m 14(invoke)m 1035 2318 p (Interpret)s 16(and)m 17(Uninterpret)m 15(on)m 17(the)m 17(components)m 16(in)m 17(their)m 1035 2367 p (clipboard.)s 1076 2438 p (It)s 13(is)m 12(often)m 13(convenient)m 12(to)m 12(create)m 14(\\macro")m 15(commands,)m 1035 2488 p (that)s 11(is,)m 13(commands)m 13(composed)m 13(of)m 12(other)m 11(commands.)m 19(The)m 1035 2538 p (command)s 24(protocol)m 21(includes)m 22(operations)m 22(for)m 23(iterating)m 1035 2588 p (through)s 13(and)m 15(manipulating)m 13(its)m 14(children,)m 15(if)m 14(any)m -2 r 46 c 22(By)m 14(de-)m 1035 2637 p (fault,)s 15(\(un\)executing)m 14(or)m 15(\(un\)interpretin)m -1 r 103 c 14 r 97 c 15(macro)m 17(com-)m 1035 2687 p (mand)s 15(is)m 15(semantically)m 15(identical)m 14(to)m 14(performing)m 14(the)m 15(cor-)m 1035 2737 p (responding)s 12(operations)m 13(on)m 13(each)m 15(of)m 14(its)m 13(children.)m @eop 8 @bop0 8 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 56 c 13 r 45 c 10 155 p 895 2 ru 10 201 p 2 46 ru t-ita.270 @sf 61 188 p 114 c (etur)s -1 r 110 c 10(values)m 310 202 p 2 46 ru 420 187 p (operation)s 674 201 p 2 46 ru 711 187 p (ar)s (gume)s -1(nts)m 904 201 p 2 46 ru 10 202 p 895 2 ru 10 249 p 2 46 ru t-rom.270 @sf 35 236 p (manipulator)s 310 250 p 2 46 ru 336 235 p (CreateManipulator)s 674 249 p 2 46 ru 699 235 p (event)s 904 249 p 2 46 ru 10 294 p 2 46 ru 35 281 p (command)s 310 295 p 2 46 ru 336 280 p (InterpretManipulator)s 674 294 p 2 46 ru 699 280 p (manipulator)s 904 294 p 2 46 ru 10 340 p 2 46 ru 35 327 p (component)s 11(view)m 310 341 p 2 46 ru 336 326 p (GetPrototype)s 674 340 p 2 46 ru 230 r 2 46 ru 10 341 p 895 2 ru t-rom.300 @sf 266 457 p 84 c -2(able)m 13(4:)m 18 r 84 c -2(ool)m 12(protocol)m t-bol.360 @sf 0 597 p (3.4)s 50 r 84 c -4(ools)m t-rom.300 @sf 0 680 p (By)s 10(de\014nition,)m 10 r 97 c 12(graphical)m 10(object)m 11(editor)m 10(supports)m 9(the)m 11(di-)m 0 730 p (rect)s 9(manipulation)m 8(model)m 9(of)m 9(interaction.)m 15(Unidraw-based)m 0 780 p (editors)s 10(use)m 12(tool)m 10(objects)m 11(to)m 11(allow)m 11(the)m 11(user)m 12(to)m 11(manipulate)m 0 830 p (components)s 10(directly)m -2 r 46 c 15(The)m 11(user)m t-ita.300 @sf 10(grasps)m t-rom.300 @sf 9(and)m t-ita.300 @sf 10(wields)m t-rom.300 @sf 9 r 97 c 10(tool)m 0 879 p (to)s 15(achieve)m 16 r 97 c 15(desired)m t-ita.300 @sf 15(effect)m t-rom.300 @sf 46 c 23(The)m 16(ef)m (fect)s 15(may)m 16(involve)m 14 r 97 c 0 929 p (change)s 12(to)m 10(one)m 11(or)m 11(more)m 11(components')m 10(internal)m 10(state,)m 12(or)m 11(it)m 0 979 p (may)s 14(change)m 14(the)m 13(way)m 13(components)m 13(are)m 14(viewed,)m 14(or)m 13(there)m 0 1029 p (may)s 10(be)m 10(no)m 10(ef)m (fect)s 9(at)m 10(all)m 9(\(if)m 9(the)m 10(tool)m 8(is)m 9(used)m 10(in)m 9(an)m 10(inappro-)m 0 1079 p (priate)s 12(context,)m 11(for)m 12(example\).)m 19 r 84 c -2(ools)m 10(often)m 11(use)m 13(animated)m 0 1128 p (graphical)s 16(ef)m (fects)s 17(as)m 17(they)m 16(are)m 18(wielded)m 16(to)m 16(suggest)m 16(how)m 0 1178 p (they)s 13(will)m 13(af)m (fect)s 13(their)m 13(environment.)m t-bol.300 @sf 0 1305 p (3.4.1)s 42 r 84 c -3(ool)m 13(Pr)m (otocol)s t-rom.300 @sf 0 1389 p (The)s 20(basic)m 19(tool)m 18(protocol)m 18(is)m 18(shown)m 19(in)m 19 r 84 c -2(able)m 18(4.)m 35(Con-)m 0 1439 p (ceptually)s -2 r 44 c 13(tools)m 14(work)m 13(within)m 13(viewers,)m 15(in)m 14(which)m 14(graph-)m 0 1489 p (ical)s 15(component)m 14(views)m 14(are)m 16(displayed)m 14(and)m 14(manipulated.)m 0 1538 p (Whenever)s 16 r 97 c 17(viewer)m 16(receives)m 17(an)m 16(event,)m 16(it)m 15(in)m 16(turn)m 14(asks)m 0 1588 p (the)s 18(current)m 17(tool)m 16(\(de\014ned)m 18(by)m 18(the)m 17(enclosing)m 17(editor)m 17(ob-)m 0 1638 p (ject\))s 16(to)m 16(produce)m 16 r 97 c 17(manipulator)m 15(object.)m 26 r 65 c 17(tool)m 15(imple-)m 0 1688 p (ments)s 19(its)m 19(CreateManipulator)m 17(operation)m 18(to)m 19(create)m 20(and)m 0 1738 p (initiali)s -1(ze)m 16(an)m 16(appropriate)m 16(manipulator)m -1 r 44 c 16(which)m 15(encapsu-)m 0 1787 p (lates)s 12(the)m 12(tool')m -2 r 115 c 10(manipulation)m 11(semantics)m 12(by)m 12(de\014ning)m 11(the)m 0 1837 p (three)s 12(phases)m 12(\(grasp,)m 12(wield,)m 12(ef)m (fect\))s 11(of)m 11(the)m 12(manipulation.)m 0 1887 p 65 c 16(tool)m 14(may)m 16(modify)m 14(the)m 16(contents)m 15(of)m 15(the)m 15(current)m 15(selec-)m 0 1937 p (tion)s 10(object)m 10(\(also)m 11(de\014ned)m 12(by)m 10(the)m 11(enclosing)m 11(editor\))m 9(based)m 0 1987 p (on)s 12(the)m 11(event.)m 19(Moreover)m -1 r 44 c 11 r 97 c 13(tool)m 11(can)m 12(delegate)m 13(manipula-)m 0 2037 p (tor)s 10(creation)m 11(to)m 10(one)m 11(or)m 10(more)m 11(graphical)m 11(component)m 10(views)m 0 2086 p (\(usually)s 8(among)m 10(those)m 9(in)m 9(the)m 9(editor)m 2 r 39 c -2 r 115 c 8(selection)m 9(object\))m 9(to)m 0 2136 p (allow)s 16(component-speci\014c)m 17(interaction.)m 27 r 65 c 17(tool')m -2 r 115 c 15(Inter-)m 0 2186 p (pretManipulator)s 11(operation)m 12(analyzes)m 14(information)m 12(in)m 12(the)m 0 2236 p (manipulator)s 20(that)m 20(characterizes)m 23(the)m 21(manipulation)m 19(and)m 0 2286 p (then)s 18(creates)m 20 r 97 c 19(command)m 20(that)m 18(carries)m 19(out)m 18(the)m 18(desired)m 0 2335 p (ef)s (fect.)s 32(If)m 18(the)m 18(tool)m 17(delegated)m 19(manipulator)m 17(creation)m 18(to)m 0 2385 p 97 c 15(graphical)m 14(component)m 14(view)m -2 r 44 c 14(then)m 14(it)m 14(must)m 14(delegate)m 15(its)m 0 2435 p (interpretation)s 11(to)m 14(the)m 13(same)m 15(view)m -2 r 46 c 42 2488 p (The)s 10(GetPrototype)m 8(operation)m 9(is)m 9(de\014ned)m 10(by)m 10(the)m t-bol.300 @sf 9(graph-)m 0 2538 p (ical)s 18(component)m 18(tool)m t-rom.300 @sf 15(subclass.)m 25(Graphical)m 16(component)m 0 2588 p (tools)s 12(maintain)m 13 r 97 c 14(prototyp)m -1 r 101 c 12(component)m 13(and)m 14(de\014ne)m 13(how)m 0 2637 p (that)s 11(component)m 11(is)m 12(created)m 12(and)m 12(added)m 12(to)m 11(the)m 12(component)m 0 2687 p (hierarchy)s 10(in)m 10(the)m 10(viewer)m -1 r 46 c 17(The)m 11(prototyp)m -1 r 101 c 9(consists)m 10(of)m 10(both)m 0 2737 p 97 c 17(graphical)m 16(component)m 17(subject)m 16(and)m 16 r 97 c 18(view)m -2 r 46 c 26(The)m 17(tool)m 1106 155 p 774 2 ru 1106 201 p 2 46 ru t-ita.270 @sf 1131 188 p 114 c (e)s -1(turn)m 10(values)m 1355 202 p 2 46 ru 1442 187 p (operation)s 1672 201 p 2 46 ru 1698 187 p (ar)s (g)s -1(umen)m -1(ts)m 1878 201 p 2 46 ru 1106 202 p 774 2 ru 1106 249 p 2 46 ru 249 r 2 46 ru t-rom.270 @sf 1380 235 p (Grasp)s 1672 249 p 2 46 ru 1698 235 p (event)s 1878 249 p 2 46 ru 1106 294 p 2 46 ru 1131 281 p (boolean)s 1355 295 p 2 46 ru 1380 280 p (Manipulating)s 1672 294 p 2 46 ru 1698 280 p (event)s 1878 294 p 2 46 ru 1106 340 p 2 46 ru 249 r 2 46 ru 1380 326 p (Ef)s (fect)s 1672 340 p 2 46 ru 1698 326 p (event)s 1878 340 p 2 46 ru 1106 386 p 2 46 ru 249 r 2 46 ru cmsy9.300 @sf 1380 372 p 102 c t-ita.270 @sf (child)s 13(iteration)m 1672 386 p 2 46 ru 206 r 2 46 ru 1106 431 p 2 46 ru 249 r 2 46 ru 1380 417 p (and)s 12(manipulation)m 1672 431 p 2 46 ru 206 r 2 46 ru 1106 477 p 2 46 ru 249 r 2 46 ru 1380 463 p (operations)s cmsy9.300 @sf 103 c 1672 477 p 2 46 ru 206 r 2 46 ru 1106 478 p 774 2 ru t-rom.300 @sf 1236 594 p 84 c -2(able)m 13(5:)m 18(Manipulator)m 12(protocol)m 1035 759 p (copies)s 13(the)m 14(prototy)m -1(pe,)m 12(modi\014es)m 14(it)m 12(to)m 13(conform)m 13(to)m 13(the)m 13(di-)m 1035 808 p (rect)s 19(manipulation,)m 18(and)m 19(inserts)m 18(it)m 18(into)m 17(the)m 18(component)m 1035 858 p (hierarchy)s 14(using)m 12(an)m 14(appropriate)m 13(command.)m t-bol.300 @sf 1035 1054 p (3.4.2)s 42(Manipulator)m 14(Pr)m (otocol)s t-rom.300 @sf 1035 1162 p (The)s 15(manipulator)m 14(protocol)m 13(\(T)m -2(able)m 14(5\))m 14(is)m 15(designed)m 14(to)m 14(re-)m 1035 1211 p (\015ect)s 23(the)m 21(grasp-wield-ef)m (fect)s 21(behavior)m 21(of)m 22(tools.)m 42(The)m 1035 1261 p (Grasp)s 18(operation)m 17(takes)m 18 r 97 c 19(window)m 17(system)m 18(event)m 18(\(such)m 1035 1311 p (as)s 19 r 97 c 18(mouse)m 19(click)m 18(or)m 17(key)m 18(press\))m 19(and)m 18(initiali)m -1(zes)m 17(what-)m 1035 1361 p (ever)s 15(state)m 15(is)m 15(needed)m 16(for)m 14(the)m 15(direct)m 14(manipulation)m 13(\(such)m 1035 1411 p (as)s 13(animation)m 11(objects\).)m 18(During)m 11(direct)m 12(manipulation,)m 11(the)m 1035 1460 p (Manipulating)s 16(operation)m 16(is)m 18(called)m 18(repeatedly)m 18(until)m 16(the)m 1035 1510 p (manipulator)s 14(decides)m 15(that)m 15(manipulation)m 13(has)m 15(terminated)m 1035 1560 p (\(based)s 18(on)m 17(its)m 17(own)m 17(termination)m 17(criteria\))m 17(and)m 17(indicates)m 1035 1610 p (this)s 15(by)m 17(returning)m 14 r 97 c 17(false)m 17(value.)m 27(The)m 17(Ef)m (fect)s 16(operation)m 1035 1660 p (gives)s 17(the)m 18(manipulator)m 16 r 97 c 19(chance)m 19(to)m 17(perform)m 17(any)m 18(\014nal)m 1035 1709 p (actions)s 13(following)m 12(the)m 13(manipulation.)m 1076 1775 p (Some)s 13(kinds)m 11(of)m 11(direct)m 11(manipulation)m 10(may)m 12(require)m 12(sev-)m 1035 1825 p (eral)s 12(sub-manipulations)m 10(to)m 11(progress)m 11(simultaneously)m 11(\(for)m 1035 1875 p (instance,)s 16(the)m 14(editor)m 14(may)m 16(allow)m 14(the)m 15(user)m 15(to)m 14(manipulate)m 1035 1924 p (more)s 19(than)m 19(one)m 19(component)m 19(at)m 19 r 97 c 20(time\).)m 34 r 65 c 20(manipula-)m 1035 1974 p (tor)s 17(can)m 18(therefore)m 18(have)m 18(children,)m 18(and)m 18(the)m 17(manipulator)m 1035 2024 p (protocol)s 13(includes)m 15(operations)m 13(for)m 15(iterating)m 13(through)m 13(and)m 1035 2074 p (manipulating)s 12(them.)m 1076 2139 p (This)s 15(simple)m 15(protocol)m 13(is)m 14(suf)m (\014cient)s 14(to)m 14(describe)m 15(direct)m 1035 2189 p (manipulations)s 9(ranging)m 9(from)m 10(text)m 9(entry)m 10(and)m 10(rubberband-)m 1035 2239 p (ing)s 14(ef)m (fects)s 14(to)m 14(simulating)m 13(real-world)m 13(dynamics)m 15(such)m 14(as)m 1035 2289 p (imparting)s 17(momentum)m 19(to)m 18(an)m 19(object.)m 34(Unidraw)m 18(imple-)m 1035 2339 p (mentations)s 20(can)m 21(prede\014ne)m 21(manipulators)m 20(for)m 20(the)m 20(most)m 1035 2388 p (common)s 19(kinds)m 17(of)m 18(manipulation.)m 31(Since)m 19(manipulators)m 1035 2438 p (must)s 15(maintain)m 14(information)m 13(that)m 14(characterizes)m 17(the)m 14(\014nal)m 1035 2488 p (outcome)s 20(of)m 20 r 97 c 21(manipulation,)m 20(subclasses)m 21(usually)m 19(aug-)m 1035 2538 p (ment)s 16(the)m 15(protocol)m 14(with)m 15(operations)m 15(for)m 15(retrieving)m 14(state)m 1035 2588 p (that)s 14(determines)m 15(this)m 14(outcome.)m 23(For)m 15(example,)m 16 r 97 c 15(manip-)m 1035 2637 p (ulator)s 13(that)m 14(supports)m 14(dragging)m 13(the)m 14(mouse)m 15(to)m 14(translate)m 15 r 97 c 1035 2687 p (graphical)s 17(component)m 16(will)m 16(de\014ne)m 17(an)m 18(operation)m 15(for)m 17(re-)m 1035 2737 p (trieving)s 12(the)m 14(distance)m 13(moved.)m @eop 9 @bop0 9 @bop1 t-rom.300 @sf 937 8 p 45 c 14 r 57 c 13 r 45 c 45 112 p 13024788 10810565 7367557 15919185 33154007 37495603 startTexFig %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica %%Pages: 1 %%BoundingBox: 112 242 504 570 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave printFont findfont printSize scalefont setfont fgred fggreen fgblue setrgbcolor /vertoffset printSize neg def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 5 Grid 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.96 0 0 0.96 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 32 -104 ] concat %I 272 600 272 656 Line End Begin %I CBSpl none SetB %I b n %I cfg LtGray 0.762951 0.762951 0.762951 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -19.906 263.406 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I CBSpl none SetB %I b n %I cfg LtGray 0.762951 0.762951 0.762951 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 148.094 255.33 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 40 -104 ] concat %I 264 512 264 480 Line End Begin %I CBSpl none SetB %I b n %I cfg LtGray 0.762951 0.762951 0.762951 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -19.9056 167.406 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I CBSpl none SetB %I b n %I cfg LtGray 0.762951 0.762951 0.762951 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 44.0944 7.406 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I MLine %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 40 -136 ] concat %I 5 200 472 200 488 264 512 320 488 320 472 5 MLine End Begin %I MLine %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 40 -104 ] concat %I 3 432 656 432 512 266 512 3 MLine End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 40 -104 ] concat %I 264 568 264 512 Line End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 142.905 260.594 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 138.906 264.594 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 24 -104 ] concat %I 136 656 136 600 Line End Begin %I MLine %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 32 -104 ] concat %I 3 144 560 144 424 168 424 3 MLine End Begin %I MLine %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 40 -104 ] concat %I 4 104 560 104 360 320 360 320 400 4 MLine End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 32 -136 ] concat %I 376 448 432 448 Line End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 38.9055 12.594 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 346.905 324.594 ] concat %I [ (Command) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 88 24 ] concat Begin %I CBSpl none SetB %I b n %I cfg LtGray 0.762951 0.762951 0.762951 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -171.906 -16.594 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -177.095 -11.406 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 127.405 300.594 ] concat %I [ (Manipulator) ] Text End End %I eop Begin %I CBSpl none SetB %I b n %I cfg LtGray 0.762951 0.762951 0.762951 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -163.906 167.406 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -24 264 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 181 310 ] concat %I [ (1) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -8 -16 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 8 152 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 221 350 ] concat %I [ (2) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 32 24 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -8 96 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 373 270 ] concat %I [ (6) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 184 -56 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -88 72 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 317 294 ] concat %I [ (3) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 128 -32 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 40 -104 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 378 534 ] concat %I [ (3b) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 192 208 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -8 184 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 190 230 ] concat %I [ (4a,b,c) ] Text End Begin %I CBSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 14 192 232 192 232 192 232 184 224 192 216 192 216 192 216 216 216 216 216 216 216 224 224 216 232 216 232 216 232 14 CBSpl End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -128 0 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 285 278 ] concat %I [ (7) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 96 -48 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 192 72 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 285 246 ] concat %I [ (8) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 96 -80 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 136 152 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 178.5 294 ] concat %I [ (6a) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -8 -32 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 24 64 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 394 334 ] concat %I [ (6b) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 208 8 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -152 192 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 381 278 ] concat %I [ (5) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 192 -48 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 40 -104 ] concat %I 160 584 224 584 Line End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -25.0945 172.594 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 296.905 484.594 ] concat %I [ (Tool) ] Text End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -169.095 172.594 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 146.905 484.594 ] concat %I [ (Viewer) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -40 112 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 322.5 334 ] concat %I [ (3a) ] Text End Begin %I Elli %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 136 8 ] concat %I 192 320 8 8 Elli End End %I eop Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 40 -104 ] concat %I 304 680 384 680 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 24 -56 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 110.905 324.594 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 402.405 636.594 ] concat %I [ (Component View) ] Text End End %I eop Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -25.095 268.594 ] concat %I 16 289 323 289 306 289 306 289 289 306 289 306 289 357 289 357 289 374 289 374 306 374 306 374 323 357 323 357 323 306 323 306 323 16 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 285.405 580.594 ] concat %I [ (Selection) ] Text End End %I eop showpage %%Trailer end endTexFig 0 888 p (Figure)s 14(5:)m 21(Communication)m 13(between)m 16(objects)m 14(during)m 14(di-)m 0 938 p (rect)s 14(manipulation)m t-bol.300 @sf 0 1074 p (3.4.3)s 42(Object)m 16(Communication)m 14(during)m 125 1124 p (Dir)s (ect)s 15(Manipulation)m t-rom.300 @sf 0 1204 p (Figure)s 11 r 53 c 11(diagrams)m 12(the)m 11(communication)m 11(between)m 11(objects)m 0 1254 p (during)s 12(direct)m 14(manipulation.)m 17(The)m 14(numeric)m 14(labels)m 14(in)m 13(the)m 0 1304 p (diagram)s 14(correspond)m 13(to)m 13(the)m 14(transmission)m 13(sequence:)m 31 1401 p (1.)s 21(The)m 17(viewer)m 16(receives)m 18(an)m 16(input)m 15(event,)m 18(such)m 16(as)m 17(the)m 83 1451 p (press)s 14(of)m 14 r 97 c 14(mouse)m 14(button.)m 31 1539 p (2.)s 21(The)m 13(viewer)m 12(asks)m 13(the)m 13(current)m 12(tool)m 11(to)m 11(CreateManip-)m 83 1589 p (ulator)s 13(based)m 14(on)m 13(the)m 14(event.)m 31 1678 p (3.)s t-ita.300 @sf 21(Manipula)m -1(tor)m 12(cr)m -1(eation)m t-rom.300 @sf 58 c 17(the)m 13(tool)m 13(either)m 108 1776 p (\(a\))s 20(creates)m 22 r 97 c 21(manipulator)m 19(itself)m 19(\(based)m 21(on)m 20(the)m 174 1826 p (selection)s 14(or)m 13(other)m 13(information\),)m t-bol.300 @sf 12(or)m t-rom.300 @sf 105 1895 p (\(b\))s 20(asks)m 22(the)m 21(component)m 21(view\(s\))m 20(to)m 21(create)m 22(the)m 174 1945 p (manipulator\(s\))s 13(on)m 14(its)m 13(behalf.)m 20(The)m 15(tool)m 13(must)m 174 1995 p (combine)s 15(multiple)m 13(manipulators)m 14(into)m 13 r 97 c 16(com-)m 174 2044 p (posite)s 18(manipulator)m -1 r 46 c 31(Each)m 20(class)m 19(of)m 18(compo-)m 174 2094 p (nent)s 14(view)m 13(is)m 14(responsible)m 13(for)m 13(creating)m 14(an)m 14(ap-)m 174 2144 p (propriate)s 13(manipulator)m 12(for)m 14(the)m 13(tool.)m 31 2242 p (4.)s t-ita.300 @sf 21(Dir)m -1(ect)m 13(manipulati)m -1(on)m t-rom.300 @sf 58 c 16(the)m 13(viewer)m 108 2341 p (\(a\))s 20(invokes)m 9(Grasp)m 9(on)m 9(the)m 9(manipulator)m -1 r 44 c 8(supplying)m 174 2390 p (the)s 14(initiati)m -1(ng)m 12(event;)m 105 2460 p (\(b\))s 20(loops,)m 15(reading)m 15(subsequent)m 14(events)m 15(and)m 15(send-)m 174 2509 p (ing)s 18(them)m 18(to)m 17(the)m 18(manipulator)m 17(in)m 17 r 97 c 19(Manipu-)m 174 2559 p (lating)s 11(operation)m 12(\(looping)m 10(continues)m 12(until)m 10(the)m 174 2609 p (Manipulating)s 12(operation)m 12(returns)m 14(false\);)m 108 2678 p (\(c\))s 20(invokes)m 16(Ef)m (fect)s 17(on)m 16(the)m 17(manipulator)m -1 r 44 c 15(supply-)m 174 2728 p (ing)s 13(the)m 14(event)m 14(that)m 13(terminated)m 13(the)m 14(loop.)m 1066 154 p (5.)s 21(The)m 16(viewer)m 15(asks)m 15(the)m 15(current)m 15(tool)m 13(to)m 15(InterpretMa-)m 1118 203 p (nipulator)s -2 r 46 c 1066 285 p (6.)s t-ita.300 @sf 21(Manipula)m -1(tor)m 12(interpr)m -1(etati)m -1(on)m t-rom.300 @sf 58 c 16(the)m 13(tool)m 13(either)m 1142 373 p (\(a\))s 21(interprets)m 10(the)m 10(manipulator)m 10(itself,)m 11(creating)m 10(the)m 1209 423 p (appropriate)s 13(command,)m t-bol.300 @sf 15(or)m t-rom.300 @sf 1140 488 p (\(b\))s 20(asks)m 15(the)m 14(component)m 14(view\(s\))m 14(to)m 13(interpret)m 13(the)m 1209 538 p (manipulator\(s\))s 18(on)m 19(its)m 18(behalf.)m 36(The)m 19(view\(s\))m 1209 587 p (then)s 17(create\(s\))m 18(the)m 17(appropriate)m 16(command\(s\).)m 1209 637 p (The)s 15(tool)m 12(must)m 14(combine)m 14(multiple)m 12(commands)m 1209 687 p (into)s 13 r 97 c 14(composite)m 13(\(macro\))m 15(command.)m 1066 776 p (7.)s 21(The)m 14(viewer)m 14(executes)m 15(the)m 13(command.)m 1066 857 p (8.)s 21(The)m 14(command)m 15(carries)m 14(out)m 13(the)m 14(intentio)m -1 r 110 c 12(of)m 13(the)m 14(di-)m 1118 907 p (rect)s 14(manipulation.)m 1076 994 p 84 c -2 r 111 c 22(illustrate)m 21(this)m 22(process,)m 25(consider)m 22(the)m 23(followi)m -1(ng)m 1035 1043 p (example)s 20(of)m 19(direct)m 18(manipulation)m 18(in)m 18 r 97 c 20(drawing)m 18(editor)m -1 r 46 c 1035 1093 p (Suppose)s 20(the)m 19(user)m 21(clicks)m 20(on)m 19(an)m 20(rectangle)m 20(component)m 1035 1143 p (view)s 20 r 40 c t-obl.300 @sf (RectangleV)s -1(iew)m t-rom.300 @sf 41 c 19(in)m 20(the)m 21(drawing)m 20(area)m 21(\(viewer\))m 1035 1193 p (with)s 16(the)m t-obl.300 @sf 18(MoveT)m -2(ool)m t-rom.300 @sf 46 c 28(The)m 18(viewer)m 18(receives)m 18 r 97 c 18(\\mouse-)m 1035 1243 p (button-went-)s -1(down")m 8(event)m 10(and)m 10(asks)m 11(the)m 10(current)m 10(tool)m 8(\(the)m 1035 1292 p (MoveT)s -2(ool,)m 10(as)m 10(provided)m 9(by)m 10(the)m 10(enclosing)m 9(editor\))m 9(to)m 9(Cre-)m 1035 1342 p (ateManipulator)s 14(based)m 16(on)m 15(the)m 15(event.)m 24(MoveT)m -2(ool')m -2 r 115 c 13(Cre-)m 1035 1392 p (ateManipulator)s 19(operation)m 19(determines)m 20(from)m 20(the)m 20(event)m 1035 1442 p (which)s 14(component)m 15(view)m 14(was)m 16(hit)m 14(and)m 15(adds)m 15(it)m 14(to)m 14(the)m 15(se-)m 1035 1492 p (lection.)s 21(More)m 15(precisely)m -2 r 44 c 15(the)m 14(selection)m 15(object)m 14(provided)m 1035 1542 p (by)s 13(the)m 14(enclosing)m 13(editor)m 13(appends)m 13(the)m 14(view)m 13(to)m 14(its)m 13(list.)m 1076 1591 p (If)s 13(the)m 12(selection)m 13(object)m 12(contains)m 12(only)m 12(one)m 12(component)m 1035 1641 p (view)s -2 r 44 c 22(then)m 20(MoveT)m -2(ool')m -2 r 115 c 19(CreateManipulator)m 19(operation)m 1035 1691 p (calls)s 12(CreateManipulator)m 10(on)m 10(that)m 11(component)m 11(view)m -2 r 46 c 17(This)m 1035 1741 p (gives)s 14(the)m 14(component)m 15(view)m 14 r 97 c 15(chance)m 16(to)m 13(create)m 16(the)m 14(ma-)m 1035 1791 p (nipulator)s 9(it)m 11(deems)m 13(appropriate)m 10(for)m 11(the)m 12(MoveT)m -2(ool)m 9(under)m 1035 1840 p (the)s 11(circumstances.)m 19(Since)m 12(the)m 11(user)m 12(clicked)m 11(on)m 11 r 97 c 12(Rectan-)m 1035 1890 p (gleV)s -1(iew)m -3 r 44 c 9(the)m 9(component)m 9(view)m 9(will)m 8(create)m 10 r 97 c t-obl.300 @sf 10(DragManip-)m 1035 1940 p (ulator)s t-rom.300 @sf 44 c 18 r 97 c 18(manipulator)m 16(that)m 17(implements)m 17(an)m 18(downclick-)m 1035 1990 p (drag-upclick)s 12(style)m 13(of)m 13(manipulation.)m 17(DragManipulators)m 1035 2040 p (animate)s 17(the)m 17(dragging)m 16(portion)m 15(of)m 17(the)m 16(manipulation)m 15(by)m 1035 2089 p (drawing)s 10 r 97 c 12(particular)m 10(shape)m 12(in)m 11(slightly)m 9(dif)m (ferent)s 9(ways)m 12(in)m 1035 2139 p (each)s 18(successive)m 19(call)m 17(to)m 17(their)m 17(Manipulating)m 15(operation.)m 1035 2189 p (The)s 18(de\014nition)m 16(of)m 17(DragManipulator)m 15(parameterizes)m 19(the)m 1035 2239 p (shape)s 18(so)m 17(that)m 17(subclasses)m 18(of)m 17(DragManipulator)m 16(are)m 18(not)m 1035 2289 p (needed)s 14(to)m 13(support)m 13(dragging)m 12(dif)m (ferent)s 12(shapes.)m 1076 2339 p (Once)s 15(the)m 13(viewer)m 14(obtains)m 13(the)m 13(DragManipulator)m 12(from)m 1035 2388 p (the)s 14(MoveT)m -2(ool,)m 13(the)m 14(viewer)m 14(creates)m 16(the)m 14(illusion)m 12(that)m 13(the)m 1035 2438 p (user)s 17(is)m 16(\\grasping")m 17(and)m 16(\\wielding")m 16(the)m 16(tool.)m 26(First)m 16(the)m 1035 2488 p (viewer)s 16(calls)m 17(Grasp)m 16(on)m 16(the)m 16(manipulator)m -1 r 44 c 16(which)m 16(allows)m 1035 2538 p (the)s 18(manipulator)m 18(to)m 18(initiali)m -1(ze)m 18(itself)m 18(and)m 18(perhaps)m 19(draw)m 1035 2588 p (the)s 18(\014rst)m 17(\\frame")m 19(of)m 18(the)m 17(animation.)m 30(Then)m 18(the)m 18(viewer)m 1035 2637 p (loops,)s 13(forwarding)m 13(all)m 13(subsequent)m 13(events)m 14(to)m 14(the)m 13(manip-)m 1035 2687 p (ulator)s 2 r 39 c -2 r 115 c 16(Manipulating)m 15(operation)m 16(until)m 16(it)m 16(returns)m 17(false.)m 1035 2737 p (Successive)s 19(calls)m 19(to)m 18(Manipulating)m 16(produce)m 18(successive)m @eop 10 @bop0 10 @bop1 t-rom.300 @sf 927 8 p 45 c 13(10)m 14 r 45 c 0 154 p (frames)s 17(of)m 15(the)m 16(animation.)m 24(Once)m 17(manipulation)m 14(is)m 16(com-)m 0 203 p (plete,)s 14(the)m 13(viewer)m 13(invokes)m 13(the)m 13(manipulator)m 2 r 39 c -2 r 115 c 11(Ef)m (fect)s 14(op-)m 0 253 p (eration,)s 13(which)m 13(gives)m 14(the)m 13(DragManipulator)m 12 r 97 c 14(chance)m 15(to)m 0 303 p (\014nalize)s 10(the)m 9(animation)m 9(and)m 10(the)m 9(state)m 10(it)m 9(maintains)m 9(to)m 9(char-)m 0 353 p (acterize)s 19(the)m 17(manipulation.)m 28(The)m 18(viewer)m 17(then)m 17(asks)m 18(the)m 0 403 p (tool)s 16(to)m 16(InterpretManipulator)m -1 r 59 c 17(in)m 16(this)m 17(case,)m 19(the)m 17(Move-)m 0 452 p 84 c -2(ool)m 16(in)m 16(turn)m 16(asks)m 18(the)m 17(RectangleV)m -1(iew)m 15(to)m 17(InterpretMa-)m 0 502 p (nipulator)s -2 r 46 c 21(In)m 15(response,)m 17(RectangleV)m -1(iew)m 13(constructs)m 15(and)m 0 552 p (returns)s 18 r 97 c t-obl.300 @sf 19(MoveCommand)m t-rom.300 @sf 44 c 20(which)m 19(speci\014es)m 19 r 97 c 19(transla-)m 0 602 p (tion)s 11(transformation.)m 16(The)m 13(RectangleV)m -1(iew)m 10(initiali)m -1(zes)m 11(the)m 0 652 p (amount)s 20(of)m 20(translation)m 19(in)m 20(the)m 21(MoveCommand)m 20(to)m 20(the)m 0 702 p (distance)s 12(between)m 12(the)m 12(initial)m 10(and)m 12(\014nal)m 12(frames)m 13(of)m 11(the)m 12(an-)m 0 751 p (imation,)s 13(which)m 13(it)m 13(obtains)m 13(from)m 14(the)m 13(DragManipulator)m -2 r 46 c t-bol.360 @sf 0 947 p (3.5)s 50(External)m 19(Repr)m (esentation)s -1 r 115 c t-rom.300 @sf 0 1051 p (An)s 16(external)m 17(representation)m 16(of)m 16 r 97 c 17(component)m 17(is)m 16(simply)m 0 1101 p 97 c 13(non-graphical)m 12(view)m 13(of)m 12(the)m 13(corresponding)m 12(component)m 0 1151 p (subject.)s 27(Domain-speci\014c)m 17(external)m 16(representations)m 16(are)m 0 1201 p (derived)s 10(from)m 10(the)m t-bol.300 @sf 11(external)m 12(view)m t-rom.300 @sf 10(subclass)m 11(of)m 11(component)m 0 1250 p (view)s -2 r 46 c 42 1314 p (The)s 16(external)m 15(view)m 15(protocol)m 14(de\014nes)m 16(two)m 15(operations,)m 0 1364 p (Emit)s 17(and)m 18(De\014nition,)m 17(that)m 17(generate)m 18 r 97 c 18(stream)m 18(of)m 17(bytes)m 0 1414 p (constitutin)s -1 r 103 c 12(the)m 14(external)m 14(representation.)m 20(Emit)m 14(initi)m -1(ates)m 0 1464 p (external)s 20(representation)m 20(generation,)m 22(and)m 20(De\014nition)m 19(is)m 0 1513 p (called)s 18(recursively)m 18(by)m 18(Emit.)m 32(Emit)m 18(normally)m 17(calls)m 18(the)m 0 1563 p (external)s 17(view')m -1 r 115 c 16(own)m 17(De\014nition)m 15(operation)m 17(\014rst.)m 29(Then)m 0 1613 p (if)s 14(the)m 13(external)m 14(view)m 14(contains)m 14(subviews,)m 14(Emit)m 14(must)m 14(in-)m 0 1663 p (voke)s 12(the)m 12(children')m -1 r 115 c 11(De\014nition)m 10(operations)m 12(in)m 11(the)m 13(proper)m 0 1713 p (order)s 16(to)m 15(ensure)m 17 r 97 c 16(syntactically-correct)m 15(external)m 16(repre-)m 0 1763 p (sentation.)s 42 1826 p (Emit)s 19(is)m 19(often)m 19(used)m 19(to)m 19(generate)m 20(\\header)m 2 r 34 c 21(informa-)m 0 1876 p (tion)s 16(that)m 16(appears)m 18(only)m 16(once)m 18(in)m 17(the)m 17(external)m 17(represen-)m 0 1926 p (tation,)s 15(while)m 15(De\014nition)m 15(produces)m 15(component-speci\014c,)m 0 1976 p (context-independent)s 25(information.)m 56(For)m 27(example,)m 32 r 97 c 0 2026 p (drawing)s 17(editor)m 18(might)m 17(de\014ne)m 19 r 97 c t-obl.300 @sf 19(PostScriptV)m -2(i)m -1(ew)m t-rom.300 @sf 17(exter-)m 0 2075 p (nal)s 13(view)m 13(subclass)m 14(that)m 13(de\014nes)m 14(Emit)m 13(to)m 13(generate)m 14(global)m 0 2125 p (procedures)s 18(and)m 17(de\014nitions.)m 28(Component-speci\014c)m 16(sub-)m 0 2175 p (classes)s 16(of)m 15(PostScriptV)m -2(iew)m 13(then)m 15(need)m 15(only)m 14(de\014ne)m 16(Def-)m 0 2225 p (inition)s 14(to)m 16(externalize)m 17(the)m 17(state)m 16(of)m 17(their)m 16(corresponding)m 0 2275 p (component.)s 37(Thus)m 20(when)m 20(Emit)m 20(is)m 20(invoked)m 19(on)m 20(an)m 20(in-)m 0 2324 p (stance)s 17(of)m 16(any)m 17(PostScriptV)m -2(iew)m 15(subclass,)m 18 r 97 c 17(stand-alone)m 0 2374 p (PostScript)s 23(representation)m 23(\(known)m 23(as)m 25(\\encapsulated")m 0 2424 p (PostScript\))s 10(will)m 9(be)m 11(generated.)m 19(When)m 11(the)m 11(same)m 12(instance)m 0 2474 p (is)s 12(buried)m 11(in)m 11 r 97 c 13(lar)m (ger)s 11(PostScriptV)m -2(i)m -1(ew)m -2 r 44 c 11(only)m 11(its)m 11(de\014nition)m 0 2524 p (will)s 12(be)m 14(emitted.)m 42 2588 p (The)s 14(architecture)m 14(prede\014nes)m t-bol.300 @sf 14(pr)m (eorder)s t-rom.300 @sf 44 c t-bol.300 @sf 16(inorder)m t-rom.300 @sf 44 c 15(and)m t-bol.300 @sf 0 2637 p (postorder)s t-rom.300 @sf 19(external)m 17(views.)m 30(These)m 18(subclasses)m 19(manage)m 0 2687 p (subviews)s 13(and)m 13(support)m 12(one)m 14(of)m 13(three)m 13(common)m 14(traversals)m 0 2737 p (of)s 13(the)m 14(external)m 14(view)m 13(hierarchy)m -2 r 46 c t-bol.420 @sf 1035 154 p 52 c 58(Pr)m (ototype)s 22(Implementation)m t-rom.300 @sf 1035 247 p (Our)s 20(Unidraw)m 20(prototype)m 19(is)m 20 r 97 c 21(library)m 19(of)m 21(C++)m 21(classes)m 1035 296 p (containing)s 17(about)m 18(20,000)m 18(lines)m 18(of)m 18(source.)m 33(It)m 18(runs)m 18(on)m 1035 346 p (top)s 18(of)m 18(InterV)m -1(iews)m 17(and)m 19(the)m 19 r 88 c 19 r 87 c -1(indow)m 17(System.)m 34(The)m 1035 396 p (prototype)s 16(uses)m 18(InterV)m -1(iews')m 16(object-oriented)m 16(structured)m 1035 446 p (graphics)s 13 r 91 c (10)s -1 r 93 c 14(to)m 12(support)m 12(graphical)m 13(components)m 13(and)m 14(its)m 1035 496 p (persistent)s 14(object)m 14(facility)m 14(for)m 14(implementing)m 14(catalog)m 15(se-)m 1035 546 p (mantics.)s 1076 596 p (C++)s 16(is)m 16(an)m 15(attractive)m 15(language)m 15(for)m 15(our)m 15(purposes)m 15(be-)m 1035 645 p (cause)s 24(of)m 23(its)m 22(ef)m (\014ciency)s 23(and)m 23(true)m 23(object-oriented)m 22(se-)m 1035 695 p (mantics,)s 17(but)m 14(it)m 15(does)m 16(not)m 14(allow)m 15(sending)m 15(arbitrary)m 14(mes-)m 1035 745 p (sages)s 24(to)m 22(objects.)m 47(Messages)m 24(are)m 24(sent)m 23(via)m 23(strongly-)m 1035 795 p (typed)s 23(procedure)m 24(calls,)m 26(so)m 24 r 97 c 24(class)m 24(must)m 24(declare)m 24(all)m 1035 845 p (acceptable)s 19(messages)m 19(at)m 18(compile-time.)m 29(Thus,)m 19(compo-)m 1035 894 p (nent)s 13(operations)m 12(such)m 14(as)m 14(Interpret)m 12(and)m 14(Uninterpret)m 12(can-)m 1035 944 p (not)s 18(be)m 20(implemented)m 18(by)m 19(accepting)m 19(untyped)m 18(messages)m 1035 994 p (from)s 19(commands.)m 37(In)m 19(lieu)m 19(of)m 19(this)m 19(capability)m -2 r 44 c 19(compo-)m 1035 1044 p (nents)s 13(must)m 14(query)m 13(the)m 13(command)m 14(to)m 13(determine)m 14(its)m 13(class,)m 1035 1094 p (but)s 15(C++)m 16(cannot)m 16(provide)m 14(this)m 15(information)m 14(at)m 16(run-time.)m 1035 1144 p 87 c -2 r 101 c 13(solved)m 14(this)m 13(problem)m 14(in)m 13(our)m 14(implementation)m 13(by)m 13(us-)m 1035 1193 p (ing)s 11(the)m 11(IsA)m 12(operation)m 11(de\014ned)m 12(for)m 11(InterV)m -1(i)m -1(ews)m 11(persistent)m 1035 1243 p (objects,)s 14(but)m 12(ideally)m 13(the)m 13(language)m 14(would)m 12(provide)m 12(either)m 1035 1293 p (run-time)s 14(class)m 15(resolution)m 13(or)m 15(untyped)m 14(\(or)m 14(dynamically-)m 1035 1343 p (typed\))s 13(method)m 13(lookup.)m 1076 1393 p (The)s 22(remainder)m 22(of)m 21(this)m 20(section)m 21(discusses)m 22(two)m 21(sig-)m 1035 1443 p (ni\014cant)s 16(aspects)m 18(of)m 16(the)m 17(implementation)m 15(followed)m 15(by)m 17 r 97 c 1035 1492 p (brief)s 17(description)m 16(of)m 17(the)m 18(three)m 17(domain-speci\014c)m 18(editors)m 1035 1542 p (we)s 14(have)m 14(implemented)m 14(with)m 13(the)m 13(Unidraw)m 13(prototype.)m t-bol.360 @sf 1035 1662 p (4.1)s 50 r 86 c -1(iew)m 18(Consistency)m t-rom.300 @sf 1035 1741 p 65 c 21(component)m 20(view)m 20(must)m 21(reconcile)m 20(its)m 20(internal)m 20(state)m 1035 1790 p (with)s 13(its)m 14(subject')m -1 r 115 c 13(when)m 14(Update)m 15(is)m 14(called.)m 21(This)m 14(is)m 14(usu-)m 1035 1840 p (ally)s 14(trivial)m 13(for)m 14(leaf)m 16(components,)m 15(but)m 14(components)m 14(with)m 1035 1890 p (children)s 11(must)m 13(be)m 12(prepared)m 13(to)m 12(restructure)m 12(themselves)m 13(to)m 1035 1940 p (conform)s 19(to)m 19(their)m 18(subject')m -1 r 115 c 18(structure.)m 35 r 84 c -2 r 111 c 19(accomplish)m 1035 1990 p (this,)s 19(the)m 19(view)m 18(could)m 18(assume)m 20(that)m 18(all)m 18(its)m 18(children)m 17(are)m 1035 2039 p (inconsistent)s 12(with)m 13(their)m 13(subjects')m 14(and)m 14(just)m 13(rebuild)m 13(them)m 1035 2089 p (from)s 19(scratch)m 21(based)m 20(on)m 20(the)m 19(subject')m -1 r 115 c 18(structure.)m 36(This)m 1035 2139 p (approach)s 17(is)m 17(simple)m 17(but)m 16(potentially)m 15(expensive.)m 28(More-)m 1035 2189 p (over)s -1 r 44 c 14(the)m 15(subject')m -1 r 115 c 13(structure)m 14(usually)m 13(stays)m 15(the)m 14(same)m 16(or)m 1035 2239 p (changes)s 18(only)m 15(slightly)m -3 r 44 c 16(so)m 17(an)m 17(incremental)m 17(approach)m 17(in)m 1035 2288 p (which)s 16(the)m 16(view)m 16(reuses)m 17(most)m 16(of)m 16(its)m 16(children)m 15(is)m 16(prefer-)m 1035 2338 p (able.)s 24(Our)m 16(implementation)m 14(supports)m 14(the)m 16(common)m 16(case)m 1035 2388 p (where)s 12(the)m 11(view')m -1 r 115 c 9(child)m 10(structure)m 11(is)m 11(identical)m 10(to)m 11(the)m 10(sub-)m 1035 2438 p (ject')s -1(s.)m 34(Components)m 18(with)m 18(dif)m (ferin)s -1 r 103 c 17(subject)m 19(and)m 19(view)m 1035 2488 p (structures)s 10(must)m 11(implement)m 10(their)m 10(own)m 11(update)m 10(algorithm.)m 1076 2538 p (Figure)s 12 r 54 c 11(shows)m 12(the)m 11(algorithm.)m 17(On)m 12(Update,)m 12(any)m 12(chil-)m 1035 2588 p (dren)s 11(that)m 11(no)m 11(longer)m 10(have)m 12 r 97 c 12(subject)m 11(are)m 12(destroyed.)m 18(Then)m 1035 2637 p (the)s 14(list)m 13(of)m 14(child)m 13(views)m 14(is)m 14(compared)m 15(to)m 13(the)m 14(list)m 13(of)m 14(child)m 1035 2687 p (subjects.)s 19(If)m 13(there)m 14(is)m 13 r 97 c 14(subject-view)m 13(mismatch,)m 15(the)m 13(Up-)m 1035 2737 p (dateCurrent)s 18(operation)m 18(is)m 19(called.)m 35(UpdateCurrent)m 18(per-)m @eop 11 @bop0 /Times-Oblique /t-obl.270 ReEncodeForTeX /t-obl.270 /t-obl.270 37.359900 TeXPSmakefont def cmsy9.300 @sf [ 16 38 -4 10 19.198] 107 @dc 11 @bop1 t-rom.300 @sf 927 8 p 45 c 14 r 49 c -1 r 49 c 13 r 45 c 0 114 p 915 2 ru t-obl.270 @sf 83 204 p ( void)s t-rom.270 @sf ( UpdateV)s -1(iewS)m -1(tructure \(\) )m cmsy9.300 @sf 102 c t-rom.270 @sf 83 258 p ( )s t-obl.270 @sf ( iter)s 1(ator)m t-rom.270 @sf ( subj = SubjectsFirstChild\(\);)s 83 312 p ( )s t-obl.270 @sf ( iter)s 1(ator)m t-rom.270 @sf ( view = )s 86 c -1(iewsFirstChild\(\);)m 83 366 p ( DeleteSubjectlessV)s -1(iews)m -1(\(\);)m 83 420 p ( do )s cmsy9.300 @sf 102 c t-rom.270 @sf 83 474 p ( )s 1(if)m 1( \(*subj != *view\) )m cmsy9.300 @sf 1 r 102 c t-rom.270 @sf 83 528 p ( )s 1( )m 1( UpdateCurrent\(subj, view\);)m 83 582 p ( )s cmsy9.300 @sf 1 r 103 c t-rom.270 @sf 83 636 p ( )s (Advance\(subj\);)s 83 690 p ( )s (Advance\(view\);)s 83 744 p ( )s cmsy9.300 @sf 103 c t-rom.270 @sf ( until )s 1(\(Done\(subj\) )m cmsy9.300 @sf 107 c t-rom.270 @sf ( Done\(view\)\);)s 83 798 p ( UpdateExcessSu)s -1(bjects\(su)m -1(bj\);)m 83 852 p ( DeleteExcessV)s -2(iews\(view\);)m cmsy9.300 @sf 83 906 p 103 c 0 979 p 915 2 ru t-rom.300 @sf 98 1049 p (Figure)s 13(6:)m 18 r 86 c -1(iew)m 12(structure)m 13(update)m 14(algorithm)m 0 1185 p (forms)s 16(two)m 15(searches)m 17(through)m 14(the)m 15(remaining)m 15(views)m 16(and)m 0 1235 p (subjects.)s 26(If)m 16(it)m 16(does)m 16(not)m 16(\014nd)m 16 r 97 c 17(view)m 16(corresponding)m 15(to)m 0 1285 p (the)s 13(current)m 14(subject,)m 13(it)m 13(creates)m 15(one)m 14(and)m 13(inserts)m 13(it)m 13(before)m 0 1335 p (the)s 14(current)m 14(view;)m 14(otherwise,)m 15(it)m 14(moves)m 14(the)m 15(correspond-)m 0 1384 p (ing)s 13(view)m 14(to)m 14(its)m 13(proper)m 14(position.)m 18(If)m 13(it)m 14(does)m 14(not)m 13(\014nd)m 14(the)m 0 1434 p (current)s 10(view')m -1 r 115 c 8(subject)m 10(among)m 10(the)m 10(remaining)m 10(subjects,)m 11(it)m 0 1484 p (deletes)s 15(the)m 13(view;)m 14(otherwise,)m 14(if)m 14(the)m 14(corresponding)m 12(sub-)m 0 1534 p (ject)s 15(does)m 16(not)m 14(follow)m 14(the)m 15(current)m 15(subject,)m 16(it)m 14(moves)m 16(the)m 0 1584 p (view)s 18(to)m 18(the)m 19(end)m 18(of)m 18(the)m 19(list)m 17(of)m 18(child)m 18(views)m 18(for)m 18(repo-)m 0 1633 p (sitioning)s 13(in)m 15(subsequent)m 15(iterations.)m 23(The)m 16(main)m 16(iteration)m 0 1683 p (loop)s 11(continues)m 10(until)m 10(either)m 12(the)m 11(subject)m 11(or)m 12(the)m 11(view)m 11(runs)m 0 1733 p (out)s 19(of)m 20(children.)m 37(Finally)m -2 r 44 c 20(views)m 20(are)m 21(created)m 20(for)m 20(any)m 0 1783 p (remaining)s 13(subjects,)m 14(and)m 14(unused)m 13(views)m 14(are)m 15(destroyed.)m t-bol.360 @sf 0 1909 p (4.2)s 50(Connector)m 18(Implementation)m t-rom.300 @sf 0 1990 p (Connectivity)s 12(semantics)m 15(are)m 15(enforced)m 15(by)m 14 r 97 c t-bol.300 @sf 15(csolver)m t-rom.300 @sf 15(ob-)m 0 2040 p (ject)s 12(that)m 11(manages)m t-ita.300 @sf 13(connection)m 11(networks)m t-rom.300 @sf 44 c 13(or)m 11(disjoint)m 10(sets)m 0 2089 p (of)s 13(connections.)m 18 r 65 c 14(connection)m 13(consists)m 13(of)m 13(two)m 13(connec-)m 0 2139 p (tors)s 16(and)m 17 r 97 c 17(piece)m 18(of)m t-bol.300 @sf 16(connector)m 21(glue)m t-rom.300 @sf 46 c 28(Connector)m 15(glue)m 0 2189 p (is)s 18(characterized)m 19(by)m 17 r 97 c 19(natural)m 17(size,)m 20(elasticity)m -2 r 44 c 17(and)m 18(de-)m 0 2239 p (formation)s 12(limits.)m 17(Elasticity)m 12(is)m 12(speci\014ed)m 14(in)m 12(terms)m 13(of)m 13(in-)m 0 2289 p (dependent)s 16(shrinkabilit)m -1 r 121 c 14(and)m 16(stretchability)m 14(parameters.)m 0 2339 p (Deformation)s 14(limits)m 13(are)m 15(expressed)m 15(as)m 15(independent)m 14(lim-)m 0 2388 p (its)s 11(on)m 12(the)m 12(total)m 11(amount)m 11(the)m 12(glue)m 11(can)m 13(stretch)m 12(and)m 12(shrink.)m 0 2438 p 65 c 21(connection)m 20(uses)m 21(connector)m 20(glue)m 20(to)m 20(de\014ne)m 21(the)m 21(re-)m 0 2488 p (lationship)s 15(between)m 17(connectors')m 17(centers,)m 19(thus)m 16(de\014ning)m 0 2538 p (their)s 15(connectivity)m 14(semantics.)m 25(For)m 15(example,)m 17(connector)m 0 2588 p (glue)s 10(of)m 10(zero)m 11(natural)m 9(size)m 11(and)m 10(elasticity)m 10(is)m 10(used)m 10(to)m 10(imple-)m 0 2637 p (ment)s 11(pin-pin)m 10(connection)m 10(semantics.)m 19(Pin-pad)m 10(semantics)m 0 2687 p (are)s 15(modeled)m 15(with)m 14 r 97 c 15(piece)m 16(of)m 14(glue)m 14(of)m 15(in\014nite)m 13(elasticity)m 0 2737 p (within)s 12(limits)m 12(that)m 13(keep)m 15(the)m 13(pin)m 13(inside)m 13(the)m 14(pad.)m 1216 112 p 8714763 9472573 2368143 13419479 26970521 40061091 startTexFig %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica-Bold Helvetica %%BoundingBox: 36 204 410 609 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave printFont findfont printSize scalefont setfont fgred fggreen fgblue setrgbcolor /vertoffset printSize neg def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 4 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.96 0 0 0.96 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 64 0 ] concat Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -96 64 ] concat %I 153 480 193 480 Line End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -127 16 ] concat %I 10 220 528 232 528 236 536 244 520 252 536 260 520 268 536 276 520 279 528 292 528 10 MLine End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 64 ] concat %I 153 480 193 480 Line End Begin %I Elli %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 1 0 0 1 -88 64 ] concat %I 137 480 8 8 Elli End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 25 72 ] concat %I 10 220 528 232 528 236 536 244 520 252 536 260 520 268 536 276 520 279 528 292 528 10 MLine End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -88 64 ] concat %I 4 337 536 297 536 297 424 337 424 4 MLine End Begin %I Elli %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 72 64 ] concat %I 137 480 8 8 Elli End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 25 -40 ] concat %I 10 220 528 232 528 236 536 244 520 252 536 260 520 268 536 276 520 279 528 292 528 10 MLine End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ -1 0 0 1 650 64 ] concat %I 4 337 536 297 536 297 424 337 424 4 MLine End Begin %I Elli %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 1 0 0 1 216 64 ] concat %I 137 480 8 8 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 119.5 576 ] concat %I [ (G1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 271.5 632 ] concat %I [ (G2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 271.5 520 ] concat %I [ (G3) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 64 -32 ] concat Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 56 -56 ] concat %I 153 480 193 480 Line End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 25 -104 ] concat %I 10 220 528 232 528 236 536 244 520 252 536 260 520 268 536 276 520 279 528 292 528 10 MLine End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 160 -56 ] concat %I 153 480 193 480 Line End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -96 -56 ] concat %I 153 480 193 480 Line End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -127 -104 ] concat %I 10 220 528 232 528 236 536 244 520 252 536 260 520 268 536 276 520 279 528 292 528 10 MLine End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 -56 ] concat %I 153 480 193 480 Line End Begin %I Elli %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 1 0 0 1 -88 -56 ] concat %I 137 480 8 8 Elli End Begin %I Elli %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 72 -56 ] concat %I 137 480 8 8 Elli End Begin %I Elli %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 1 0 0 1 216 -56 ] concat %I 137 480 8 8 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 119.5 456 ] concat %I [ (G1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 254.5 456 ] concat %I [ (G\(2 || 3\)) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 64 -128 ] concat Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 2.97727 0 0 1 -400.58 -128 ] concat %I 153 480 193 480 Line End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -47 -176 ] concat %I 10 220 528 232 528 236 536 244 520 252 536 260 520 268 536 276 520 279 528 292 528 10 MLine End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 2.59091 0 0 1 -153.023 -128 ] concat %I 153 480 193 480 Line End Begin %I Elli %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 1 0 0 1 -88 -128 ] concat %I 137 480 8 8 Elli End Begin %I Elli %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 1 0 0 1 216 -128 ] concat %I 137 480 8 8 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 165 384 ] concat %I [ (G\(1 + \(2 || 3\)\)) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica14 /Helvetica 14 SetF %I t [ 1 0 0 1 73 480 ] concat %I [ (recurse) ] Text End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -80 16 ] concat %I 3 177 528 121 448 177 376 3 BSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica14 /Helvetica 14 SetF %I t [ 1 0 0 1 73 320 ] concat %I [ (recurse) ] Text End Begin %I BSpl %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -80 -144 ] concat %I 3 177 528 121 448 177 376 3 BSpl End End %I eop %%Trailer end showpage endTexFig 1052 803 p (Figure)s 13(7:)m 18(Recursive)m 14(solution)m 11(of)m 14(connection)m 13(network)m 1076 937 p (The)s 12(csolver)m 10(is)m 10(responsible)m 10(for)m 9(solving)m 9(constraint)m 9(net-)m 1035 987 p (works)s 11(that)m 11(have)m 13(been)m 12(perturbed,)m 12(meaning)m 11(it)m 11(must)m 12(posi-)m 1035 1037 p (tion)s 10(the)m 12(connectors)m 11(to)m 11(satisfy)m 11(all)m 11(connection)m 11(semantics.)m 1035 1087 p (The)s 17(csolver)m 17(stores)m 17(each)m 18(connection)m 16(network)m 16(as)m 18 r 97 c 17(list)m 1035 1136 p (of)s 14(connections.)m 19(It)m 13(solves)m 14(each)m 16(network)m 13(by)m 14(recursively)m 1035 1186 p (identifyin)s -1 r 103 c 11(primitive)m 11(combinations)m 12(of)m 12(connections)m 12(and)m 1035 1236 p (replacing)s 14(them)m 15(with)m 14(equivalent)m 13(connections.)m 21(The)m 16(two)m 1035 1286 p (most)s 18(common)m 18(primitive)m 16(combinations)m 17(are)m 19(series)m 18(and)m 1035 1336 p (parallel)s 16(connections.)m 26(Figure)m 16 r 55 c 16(depicts)m 16(the)m 16(process)m 17(of)m 1035 1386 p (recursive)s 15(substituti)m -1(on)m 12(on)m 15 r 97 c 15(network)m 14(having)m 13(three)m 15(con-)m 1035 1435 p (nections.)s 28(Connectors)m 16(are)m 18(shown)m 16(as)m 18(circles,)m 18(and)m 17(con-)m 1035 1485 p (nector)s 18(glue)m 18(is)m 18(represented)m 19(by)m 18(resistor)m 18(symbols.)m 32(The)m 1035 1535 p (shaded)s 15(connectors)m 14(have)m 14(\014xed)m 15(mobility)m -3 r 44 c 13(while)m 13(the)m 14(oth-)m 1035 1585 p (ers)s 17(are)m 18(\015oating.)m 26(On)m 16(the)m 17(initial)m 14(recursion,)m 18(the)m 16(csolver)m 1035 1635 p (identi\014es)s 15(the)m 15(parallel)m 15(combination)m 14(of)m 15(G2)m 15(and)m 16(G3)m 15(and)m 1035 1684 p (replaces)s 16(it)m 15(with)m 14(an)m 16(equivalent)m 14(connection.)m 23(It)m 15(replaces)m 1035 1734 p (the)s 18(resulting)m 18(series)m 19(combination)m 17(with)m 18(another)m 18(equiv-)m 1035 1784 p (alent)s 19(connection)m 19(on)m 19(the)m 20(second)m 20(recursion,)m 21(leaving)m 19 r 97 c 1035 1834 p (single)s 17(connection.)m 30(Recursion)m 17(terminates)m 18(whenever)m 19 r 97 c 1035 1884 p (single)s 14(connection)m 14(remains)m 15(or)m 14(all)m 14(connectors)m 14(are)m 16(\014xed,)m 1035 1933 p (at)s 16(which)m 16(point)m 14(the)m 16(connectors')m 16(position)m -1 r 115 c 15(are)m 16(determi-)m 1035 1983 p (nate.)s 23(The)m 16(csolver)m 15(then)m 15(unwinds)m 14(the)m 15(recursion,)m 16(appor-)m 1035 2033 p (tioning)s 10(the)m 11(amount)m 12(of)m 11(stretch)m 12(or)m 12(shrink)m 10(applied)m 12(to)m 11(each)m 1035 2083 p (equivalent)s 10(connection)m 10(to)m 11(the)m 10(connections)m 11(they)m 10(replaced)m 1035 2133 p (until)s 8(the)m 10(original)m 7(network)m 9(is)m 10(obtained.)m 16(Then)m 11(the)m 9(csolver)m 1035 2183 p (issues)s 14(move)m 14(commands)m 15(to)m 13(the)m 13(af)m (fected)s 14(connectors.)m t-bol.360 @sf 1035 2302 p (4.3)s 50(Thr)m (ee)s 19(Domain-Speci\014c)m 17(Editor)m 1147 2360 p (Pr)s (ototypes)s t-rom.300 @sf 1035 2438 p 87 c -2 r 101 c 16(have)m 17(built)m 14(three)m 17(domain-speci\014c)m 17(editors)m 15(with)m 16(our)m 1035 2488 p (prototype)s 8(Unidraw)m 9(library:)m 15 r 97 c 10(schematic)m 11(capture)m 11(system)m 1035 2538 p (\(see)s 14(Figure)m 12(8\),)m 13 r 97 c 14(user)m 13(interface)m 13(builder)m 12(\(Figure)m 12(9\),)m 13(and)m 1035 2588 p 97 c 20(drawing)m 18(editor)m 18(\(Figure)m 18(10\).)m 35(All)m 18(provide)m 18 r 97 c 20(direct-)m 1035 2637 p (manipulation,)s 21(multi-view)m 19(editing)m 19(environment.)m 38(The)m 1035 2687 p (schematic)s 15(capture)m 14(system)m 15(lets)m 14(the)m 13(user)m 15(wire-up)m 13(circuit)m 1035 2737 p (elements)s 16(\(such)m 14(as)m 16(gates,)m 16(latches,)m 16(and)m 15(pass)m 15(transistors\))m @eop 12 @bop0 12 @bop1 t-rom.300 @sf 927 8 p 45 c 13(12)m 14 r 45 c 45 127 p 13024788 12243290 394690 394690 37035130 34995896 startTexFig %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica Courier Helvetica-Bold %%Pages: 1 %%BoundingBox: 6 6 563 532 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave printFont findfont printSize scalefont setfont fgred fggreen fgblue setrgbcolor /vertoffset printSize neg def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 5 Grid 7.68747 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.959997 0 0 0.959997 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 516 393 ] concat %I [ (blockHit_v1_4) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 515 411 ] concat %I [ (blockHit_v1_5) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 1 0 0 1 416 -72 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < cc cc 33 33 cc cc 33 33 > -1 SetP %I t [ 0.843044 0 0 0.837194 28.5233 -152.431 ] concat %I 70 392 147 455 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.927346 0 0 1.10893 29.1135 -140.7 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 1 -1 ] concat %I 77 294 119 329 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t u %I 77 294 119 329 Rect End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.579568 0 0 0.554303 -19.1031 -6.474 ] concat %I 184 424 296 488 Rect End Begin %I Pict none SetB %I b n %I cfg u %I cbg u %I f u %I p u %I t [ 1.06254 0 0 1.01622 -453.738 117.737 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.375 0 0 0.2 571 -91.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.2 555.5 -93.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.375 -5.66234e-08 3.01992e-08 -0.2 484 344.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.25 -3.77489e-08 3.01992e-08 -0.2 499.5 346.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 0.375 -0.2 1.50996e-08 745.9 170 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 0.25 -0.2 1.50996e-08 747.5 154.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 -0.375 0.2 1.50996e-08 309.1 83 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 -0.25 0.2 1.50996e-08 307.5 98.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.579568 0 0 0.554303 13.765 156.215 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 475.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.125 0 0 0.25 511.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 639.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.25 603.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0.5 -0.2 ] concat %I 208 144 208 141 Line End End %I eop End %I eop End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.37402 0 0 1 -146.883 -119 ] concat %I 136 616 520 640 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.4045 0 0 0.979275 -252.377 -114.067 ] concat %I 208 600 584 624 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 50 516.5 ] concat %I [ (* hitmiss.edif) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 514 516.5 ] concat %I [ (mag 0.5x) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 90 543.5 ] concat %I [ (schematic) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 50 492.5 ] concat %I [ (Catalog Edit Structure Align View Options) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 136.156 -40 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 408 568 424 584 Rect End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 3 408 576 416 576 416 568 3 MLine End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -207.844 -6.10352e-05 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 256 528 272 544 Rect End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 256 536 272 536 Line End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 544 264 528 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.634062 0 0 0.6 -847.491 -49.85 ] concat %I 1536 328 1880 328 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.5 0 0 0.5 332 -167.5 ] concat %I 328 456 8 Circ End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 390.757 -129.654 ] concat %I 80 464 104 464 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 390.757 -129.654 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 401.831 -129.654 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 390.757 -135.191 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 390.757 -168.414 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 390.757 -135.191 ] concat %I 152 496 152 512 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 390.757 -179.489 ] concat %I 152 496 152 512 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 2.64583 360 -949.833 ] concat %I 136 424 136 376 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 360 -158 ] concat %I 136 424 136 376 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 363.366 -232.413 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 373.867 -232.413 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 362.793 -237.951 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 362.793 -271.174 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 362.793 -282.248 ] concat %I 152 496 152 512 Line End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 56.378 -32.2639 ] concat %I 1490 484 25 Circ End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 222 -27.5 ] concat %I 246 156 246 133 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.25 398.375 78.25 ] concat %I 251 202 306 202 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 362.793 -237.701 ] concat %I 152 496 152 512 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.25 410 23 ] concat %I 232 152 344 152 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.5 0 0 0.5 445 -167.5 ] concat %I 328 456 8 Circ End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 503.757 -129.654 ] concat %I 80 464 104 464 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 503.757 -129.654 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 514.831 -129.654 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 503.757 -135.191 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 503.757 -168.414 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 503.757 -135.191 ] concat %I 152 496 152 512 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 503.757 -179.489 ] concat %I 152 496 152 512 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 2.64583 473 -949.833 ] concat %I 136 424 136 376 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 473 -158 ] concat %I 136 424 136 376 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 476.366 -232.413 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 486.867 -232.413 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 475.793 -237.951 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 475.793 -271.174 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 475.793 -282.248 ] concat %I 152 496 152 512 Line End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 169.378 -32.2639 ] concat %I 1490 484 25 Circ End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 335 -27.5 ] concat %I 246 156 246 133 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.25 511.375 78.25 ] concat %I 251 202 306 202 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 475.793 -237.701 ] concat %I 152 496 152 512 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.25 523 23 ] concat %I 232 152 344 152 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.649704 0 0 0.6 60.4257 -300.65 ] concat %I 157 923 495 923 Line End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.3 0 0 0.3 216.429 116.05 ] concat %I 328 456 8 Circ End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 0.78 56.2293 -355.13 ] concat %I 544 776 544 856 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.266666 0 0 0.6 237.562 -215.45 ] concat %I 544 880 472 880 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.29 0 0 0.6 226.549 -210.65 ] concat %I 472 904 592 904 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 0.6 100.929 -210.65 ] concat %I 392 888 336 888 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 568 394.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 568 366.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 580.015 304.698 ] concat %I 376 352 41 Circ End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 0.6 96.1293 -215.45 ] concat %I 344 896 344 968 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.316667 0 0 0.6 191.062 -215.45 ] concat %I 352 968 280 968 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.05 0 0 0.6 -34.9707 -211.55 ] concat %I 216 984 256 984 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.5375 0 0 0.6 -209.271 -211.85 ] concat %I 248 984 232 984 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 0.54375 8.22928 -156.5 ] concat %I 232 984 232 1048 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 0.6 8.22928 -215.45 ] concat %I 232 1048 192 1048 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 340.265 399.198 ] concat %I 376 352 41 Circ End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 360 367 ] concat %I 11 144 544 144 544 144 544 368 432 368 432 368 432 144 320 144 320 144 320 144 544 144 544 11 BSpl End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.30909 0 0 0.6 -190.916 -215.45 ] concat %I 192 1064 280 1064 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 0.6 8.22928 -215.45 ] concat %I 192 1080 312 1080 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 176 562.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 176 534.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 188.015 472.698 ] concat %I 376 352 41 Circ End End %I eop Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.3 0 0 0.3 284.229 116.05 ] concat %I 328 456 8 Circ End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.425 0 0 0.6 -292.371 -208.25 ] concat %I 400 968 432 968 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.78357 0 0 0.6 -461.484 -213.05 ] concat %I 440 952 480 952 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 0.69 63.4293 -298.04 ] concat %I 433 971 433 951 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.725 0 0 0.6 -421.971 -210.65 ] concat %I 408 984 432 984 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 0.45 64.0293 -63.05 ] concat %I 432 984 432 1016 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 3.2 0 0 0.6 -1059.17 -214.85 ] concat %I 432 1016 480 1016 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.316667 0 0 0.6 191.062 -191.45 ] concat %I 352 968 280 968 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 0.6 96.1293 -148.25 ] concat %I 344 896 344 968 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 448.265 399.823 ] concat %I 376 352 41 Circ End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 456.5 518.125 ] concat %I 12 644 340 644 389 612 470 522 560 408 569 408 569 408 569 2 569 2 569 2 569 2 340 2 340 12 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 456.5 433.125 ] concat %I 12 644 340 644 389 612 470 522 560 408 569 408 569 408 569 2 569 2 569 2 569 2 340 2 340 12 BSpl End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 4.5125 0 0 0.6 -1213.77 -100.25 ] concat %I 392 888 336 888 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.325 0 0 1 525.6 -448 ] concat %I 472 904 592 904 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.505747 0 0 1 443.287 -456 ] concat %I 544 880 472 880 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.325 0 0 1 625.6 -385 ] concat %I 472 904 592 904 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.505747 0 0 1 543.287 -393 ] concat %I 544 880 472 880 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.325 0 0 1 730.6 -323 ] concat %I 472 904 592 904 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.505747 0 0 1 648.287 -331 ] concat %I 544 880 472 880 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 777 516.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 777 488.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 789.015 426.698 ] concat %I 376 352 41 Circ End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 880 578.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 880 550.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 892.015 488.698 ] concat %I 376 352 41 Circ End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 17.2293 93.55 ] concat Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 674 453.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 674 425.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 686.015 363.698 ] concat %I 376 352 41 Circ End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 28 431 ] concat %I [ (hit_v1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 98 386.375 ] concat %I [ (blockMiss_v1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 179 428.375 ] concat %I [ (ICacheDisable) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 198 439 ] concat %I [ (Vbit_b_v1) ] Text End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -8 -144 ] concat %I 24 512 48 600 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1.53425 -8 -468.822 ] concat %I 576 536 592 608 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 404 337 ] concat %I [ (blockHit_v1_1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 454 374 ] concat %I [ (blockHit_v1_2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 455 355 ] concat %I [ (blockHit_v1_3) ] Text End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -8 -144 ] concat %I 48 664 576 696 Rect End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -8 -144 ] concat %I 48 248 576 664 Rect End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -8 -144 ] concat %I 512 248 576 336 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 296 216 ] concat %I [ (decode3_s1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 304 120 ] concat %I [ (_v1_2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 368 120 ] concat %I [ (_v1_3) ] Text End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.3 0 0 0.3 140.629 196.05 ] concat %I 328 456 8 Circ End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.3 0 0 0.3 140.629 73.05 ] concat %I 328 456 8 Circ End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 9.22928 173.55 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 277.757 -129.654 ] concat %I 80 464 104 464 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 277.757 -129.654 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 288.831 -129.654 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 277.757 -135.191 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 277.757 -168.414 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 277.757 -135.191 ] concat %I 152 496 152 512 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 277.757 -179.489 ] concat %I 152 496 152 512 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 1.5875 157.429 -396.35 ] concat %I 136 424 136 376 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.6 0 0 0.6 157.429 78.75 ] concat %I 136 424 136 376 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 9.22928 173.55 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 250.366 -232.413 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 260.867 -232.413 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 249.793 -237.951 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 249.793 -271.174 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 249.793 -282.248 ] concat %I 152 496 152 512 Line End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 -56.622 -32.2639 ] concat %I 1490 484 25 Circ End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 9.22928 173.55 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 109 -27.5 ] concat %I 246 156 246 133 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.25 285.375 78.25 ] concat %I 251 202 306 202 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 249.793 -237.701 ] concat %I 152 496 152 512 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.15 0 0 0.15 188.029 187.35 ] concat %I 232 152 344 152 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 9.22928 173.55 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.25 184 23 ] concat %I 232 152 344 152 Line End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.5 0 0 0.5 106 -167.5 ] concat %I 328 456 8 Circ End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 164.757 -129.654 ] concat %I 80 464 104 464 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 164.757 -129.654 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 175.831 -129.654 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 164.757 -135.191 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 164.757 -168.414 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 164.757 -135.191 ] concat %I 152 496 152 512 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 164.757 -179.489 ] concat %I 152 496 152 512 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 2.64583 134 -949.833 ] concat %I 136 424 136 376 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 134 -158 ] concat %I 136 424 136 376 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 137.366 -232.413 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 147.867 -232.413 ] concat %I 104 488 104 440 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 136.793 -237.951 ] concat %I 120 496 152 496 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 136.793 -271.174 ] concat %I 120 496 152 496 Line End End %I eop End %I eop Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.3 0 0 0.3 72.8293 196.05 ] concat %I 328 456 8 Circ End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 80 296 ] concat %I [ (decode0_s1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 152 296 ] concat %I [ (decode1_s1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 216 296 ] concat %I [ (decode2_s1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 104 232 ] concat %I [ (p2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 152 200 ] concat %I [ (_v1_0) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 224 200 ] concat %I [ (_v1_1) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -15.5195 -64 ] concat %I 170 281 170 274 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f helvetica10 /Helvetica 10 SetF %I p u %I t [ 0.6 0 0 0.6 -58.7707 173.55 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 109 -27.5 ] concat %I 246 156 246 133 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.25 285.375 78.25 ] concat %I 251 202 306 202 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.692152 -4.9738e-14 4.9738e-14 0.692152 249.793 -237.701 ] concat %I 152 496 152 512 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -5 -115 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -25 29 ] concat %I 40 96 304 352 Rect End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -25 29 ] concat %I 40 320 304 352 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < ff 00 00 00 ff 00 00 00 > -1 SetP %I t [ 1 0 0 1.2 -125 -433.722 ] concat %I 176 656 184 672 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 67 372.5 ] concat %I [ (schematic tools) ] Text End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < ff 00 00 00 ff 00 00 00 > -1 SetP %I t [ 0.204968 0 0 1.2 130.451 -433.722 ] concat %I 256 656 552 672 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -155.961 -211 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 408 568 424 584 Rect End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 3 408 576 416 576 416 568 3 MLine End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -230.844 -171 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 256 528 272 544 Rect End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 256 536 272 536 Line End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 264 544 264 528 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -25 29 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ -0.5 0 0 0.5 227 48.5 ] concat Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 340.265 399.198 ] concat %I 376 352 41 Circ End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 360 367 ] concat %I 11 144 544 144 544 144 544 368 432 368 432 368 432 144 320 144 320 144 320 144 544 144 544 11 BSpl End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0 -2.00004 ] concat %I 56 288 64 288 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -1.23265 -2.00004 ] concat %I 104 288 112 288 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 104.767 283 ] concat %I [ (i) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -25 29 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -6.06251 0 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ -0.5 0 0 0.5 293.125 -0.187515 ] concat Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 448.265 399.823 ] concat %I 376 352 41 Circ End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 456.5 518.125 ] concat %I 12 644 340 644 389 612 470 522 560 408 569 408 569 408 569 2 569 2 569 2 569 2 340 2 340 12 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 456.5 433.125 ] concat %I 12 644 340 644 389 612 470 522 560 408 569 408 569 408 569 2 569 2 569 2 569 2 340 2 340 12 BSpl End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 0 -2.37504 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 56 248 64 248 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 56 232 64 232 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.5 0 0 1 58.8924 -2.37503 ] concat %I 112 240 128 240 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 110.83 234.312 ] concat %I [ (n) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -25 29 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -6.06251 0 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.5 0 0 1 58.8924 -50.5 ] concat %I 112 240 128 240 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.88889 0 0 1 -49.7778 -50.5 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 56 248 64 248 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 56 232 64 232 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ -0.5 0 0 0.5 359.161 -0.750015 ] concat Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.125 568 394.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 -0.125 568 366.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I Circ %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.215347 0 0 0.215347 580.015 304.698 ] concat %I 376 352 41 Circ End End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 110.83 187 ] concat %I [ (r) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -25 29 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -191.233 233.559 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -2.8828 2.8828 ] concat %I 360 56 360 32 Line End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.125 0 0 0.125 327 1.99997 ] concat %I 11 144 544 144 544 144 544 368 432 368 432 368 432 144 320 144 320 144 320 144 544 144 544 11 BSpl End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.529412 0 0 1 162.353 0 ] concat %I 328 56 344 56 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.647059 0 0 1 127.823 0 ] concat %I 376 56 392 56 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 184.238 279.441 ] concat %I [ (t) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -25 29 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -13.5783 0 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.5 0 0 1 146.162 -50.5 ] concat %I 112 240 128 240 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.88889 0 0 1 46.2222 -50.5 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 56 248 64 248 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 56 232 64 232 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.0625 0 0 0.0625 171.162 196.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.0625 0 0 -0.0625 171.162 182.5 ] concat %I 11 480 -112 448 -56 376 24 272 80 176 104 112 104 -176 104 -176 104 -176 104 -104 0 -96 -112 11 BSpl End End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 190.583 187 ] concat %I [ (o) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -25 29 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -127.762 170 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 360 96 408 136 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 361.922 133.5 ] concat %I [ (D) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -48.961 -2.49999 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 448 136 ] concat %I [ (Q) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -16 32 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 464 80 ] concat %I [ (Q) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 465 92 ] concat %I [ (_) ] Text End End %I eop End %I eop Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 116.961 47.4609 ] concat %I 3 488 120 504 112 488 104 3 MLine End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 352 128 360 128 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 352 104 360 104 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 408 128 416 128 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 408 104 416 104 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 290.237 277 ] concat %I [ (d) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -25 29 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -219.762 109.625 ] concat %I 456 128 496 128 Line End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 280 240 ] concat %I [ (w) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -25 29 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -211.762 111 ] concat Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -8 -48 ] concat %I 456 128 496 128 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -8 -32 ] concat %I 480 120 472 104 Line End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica10 /Helvetica 10 SetF %I t [ 1 0 0 1 472 80 ] concat %I [ (n) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 280 192 ] concat %I [ (b) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -25 29 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -341.762 -110 ] concat Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 6 432 272 432 256 416 256 416 232 432 232 432 216 6 MLine End Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 2 408 256 408 232 2 MLine End Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 0 -3.99998 ] concat %I 2 408 248 392 248 2 MLine End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 96 120 ] concat %I [ ([) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -33 29 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -307.762 -38 ] concat Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 40 -72 ] concat %I 6 432 272 432 256 416 256 416 232 432 232 432 216 6 MLine End Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 40 -72 ] concat %I 2 408 256 408 232 2 MLine End Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 40 -76 ] concat %I 2 408 248 392 248 2 MLine End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.5 0 0 0.5 235 96 ] concat %I 416 152 8 8 Elli End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 168 120 ] concat %I [ (]) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -33 32.5 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -313.762 -56 ] concat Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 112 -60 ] concat %I 2 408 248 392 248 2 MLine End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 0 -72 ] concat %I 520 272 520 248 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t u %I 536 200 520 192 Line End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 520 184 536 176 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 536 176 536 160 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 536 200 536 216 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 232 112 ] concat %I [ (\\) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -41 32.5 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -239.763 32 ] concat Begin %I MLine %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 112 -148 ] concat %I 2 408 248 392 248 2 MLine End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 0 -160 ] concat %I 520 272 520 248 Line End Begin %I Line %I b 65535 1 1 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0 -88 ] concat %I 536 200 520 192 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0 -88 ] concat %I 520 184 536 176 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0 -88 ] concat %I 536 176 536 160 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0 -88 ] concat %I 536 200 536 216 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 304 112 ] concat %I [ (/) ] Text End End %I eop Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -9.49753 86.625 ] concat %I 120 160 184 200 Rect End Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg Black 0 0 0 SetCBg %I f u %I p u %I t [ 1 0 0 1 -25 29 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -13.5601 1.52588e-05 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.0625 0 0 -0.0625 160.875 258.875 ] concat %I 12 644 340 644 389 612 470 522 560 408 569 408 569 408 569 2 569 2 569 2 569 2 340 2 340 12 BSpl End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.0625 0 0 0.0625 160.875 216.375 ] concat %I 12 644 340 644 389 612 470 522 560 408 569 408 569 408 569 2 569 2 569 2 569 2 340 2 340 12 BSpl End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 96 -2.37504 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 56 248 64 248 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 56 232 64 232 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.5 0 0 1 146.125 -2.37503 ] concat %I 112 240 128 240 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 190.565 234.312 ] concat %I [ (a) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -201 38 ] concat Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.564816 0.216813 -0.216813 0.564816 234.7 -84.3403 ] concat %I 7 348 408 336 376 344 376 344 360 352 360 352 376 360 376 7 Poly End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.46679 0.179184 -0.179184 0.46679 254.363 -33.6035 ] concat %I 7 348 408 336 376 344 376 344 360 352 360 352 376 360 376 7 Poly End End %I eop End %I eop End %I eop showpage %%Trailer end endTexFig 65 994 p (Figure)s 14(8:)m 17(Schematic)m 15(capture)m 14(system)m 14(prototype)m 45 1065 p 13024788 9638334 789381 8420065 36969349 35522150 startTexFig %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Courier Helvetica-Bold %%BoundingBox: 12 128 562 540 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave printFont findfont printSize scalefont setfont fgred fggreen fgblue setrgbcolor /vertoffset printSize neg def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 4 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.959997 0 0 0.959997 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -64 0 ] concat %I 120 136 152 192 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.36261 0 0 0.578947 -180.034 85.4737 ] concat %I 144 184 496 240 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.36261 0 0 1 -180.034 -48 ] concat %I 144 184 496 240 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 8 -2.00703 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.642655 0 0 0.935764 249.49 -220.463 ] concat %I 12 296 412 296 412 296 426 311 426 345 426 360 426 360 412 360 412 360 400 345 400 311 400 296 400 12 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 448.281 171.507 ] concat %I [ (push) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.3645 0 0 0.3645 280.276 44.444 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.5 0 0 1.5 -156 -164 ] concat %I 312 328 16 16 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 312 328 12 12 Elli End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 409 169.5 ] concat %I [ (radio) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 24 213.711 ] concat %I [ (Select) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 80 213.711 ] concat %I [ (Move) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 128 213.711 ] concat %I [ (Resize) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 184 213.711 ] concat %I [ (Manipulate) ] Text End Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p u %I t [ 1 0 0 1 -216 -184 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 40 16 ] concat %I 240 328 256 344 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 40 8 ] concat %I 240 328 256 344 Rect End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -238 -180 ] concat Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 3 344 352 336 344 344 336 3 MLine End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 3 352 352 360 344 352 336 3 MLine End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 336 344 360 344 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.2168e-08 -1 1 1.2168e-08 -190 512 ] concat Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 3 344 352 336 344 344 336 3 MLine End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 3 352 352 360 344 352 336 3 MLine End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 336 344 360 344 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -216 -172 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 240 328 256 344 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 8 0 ] concat %I 240 328 256 344 Rect End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.6561 0 0 0.6561 142.668 -59.074 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 272 328 296 352 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 272 352 296 328 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 296 352 272 328 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 344.826 169.5 ] concat %I [ (check) ] Text End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.47792 0 0 1 -184.851 -112 ] concat %I 136 616 520 640 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.50928 0 0 1 -297.761 -120 ] concat %I 208 600 584 624 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 24 523.5 ] concat %I [ (* viewsetup.dialog) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 536 523.5 ] concat %I [ (mag 1x) ] Text End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < ff 00 00 00 ff 00 00 00 > -1 SetP %I t [ 1 0 0 1.2 -128 -252.8 ] concat %I 176 656 184 672 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -126 -118 ] concat Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 160 672 160 656 Line End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 656 168 672 Rect End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 152 664 168 664 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 64 551.5 ] concat %I [ (ui) ] Text End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < ff 00 00 00 ff 00 00 00 > -1 SetP %I t [ 1.56566 0 0 1.2 -312.458 -252.8 ] concat %I 256 656 552 672 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 24 499.5 ] concat %I [ (Catalog Edit Structure View Option) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -3.1172 -120 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 408 0 ] concat %I 152 656 168 672 Rect End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 3 560 664 568 664 568 656 3 MLine End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 48 152 ] concat %I [ (h) ] Text End Begin %I Text %I cfg White 1 1 1 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 80 152 ] concat %I [ (j) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 120 152 ] concat %I [ (k) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 160 152 ] concat %I [ (l) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 368 152 ] concat %I [ (x) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 432 152 ] concat %I [ (r) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 488 152 ] concat %I [ (i) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.6 0 0 0.740816 67.2 -126.4 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t u %I 200 368 216 416 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.6 0 0 0.8 83.2 78.4 ] concat %I 200 376 216 408 Rect End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 240 152 ] concat %I [ (b) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 64 203.961 ] concat %I [ (s) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 104 203.961 ] concat %I [ (m) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 168 204.922 ] concat %I [ (;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 240 203.961 ] concat %I [ (k) ] Text End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.2413 0 0 1 -3.49894 0 ] concat %I 16 528 472 560 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 16 0 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -8 0 ] concat %I 224 176 224 152 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -12 -4 ] concat %I 216 168 240 168 Line End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 200 152 ] concat %I [ (S) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 264 169.5 ] concat %I [ (message) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 296 152 ] concat %I [ (M) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 56 -7 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 120 30.75 ] concat %I 12 296 412 296 412 296 426 311 426 345 426 360 426 360 412 360 412 360 400 345 400 311 400 296 400 12 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 424 451.25 ] concat %I [ (Accept) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 64 -7 ] concat Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 128 -1.25 ] concat %I 12 296 412 296 412 296 426 311 426 345 426 360 426 360 412 360 412 360 400 345 400 311 400 296 400 12 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 432 419.25 ] concat %I [ (Cancel) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 88 447 ] concat %I [ (Squares Frame Setup) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 88 383 ] concat %I [ (Adjuster type:) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 88 359 ] concat %I [ (Adjuster size:) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 88 327 ] concat %I [ (Scroller positions:) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 136 295.5 ] concat %I [ (Horizontal) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 136 263.5 ] concat %I [ (Vertical) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 264 295.5 ] concat %I [ (above) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 344 295.5 ] concat %I [ (below) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 264 263.5 ] concat %I [ (left) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 336 263.5 ] concat %I [ (right) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 272 383 ] concat %I [ (scrollers) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 376 383 ] concat %I [ (panner) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 272 359 ] concat %I [ (small) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 352 359 ] concat %I [ (medium) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 448 359 ] concat %I [ (large) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.3645 0 0 0.3645 143.276 255.944 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.5 0 0 1.5 -156 -164 ] concat %I 312 328 16 16 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 312 328 12 12 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.6561 0 0 0.6561 -66.3324 64.926 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 272 328 296 352 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 272 352 296 328 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 296 352 272 328 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.3645 0 0 0.3645 143.276 231.944 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.5 0 0 1.5 -156 -164 ] concat %I 312 328 16 16 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 312 328 12 12 Elli End End %I eop Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.54675 0 0 0.54675 190.414 196.166 ] concat %I 312 328 16 16 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.54675 0 0 0.54675 166.414 172.166 ] concat %I 312 328 16 16 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.54675 0 0 0.54675 262.414 173.666 ] concat %I 312 328 16 16 Elli End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.6561 0 0 0.6561 -66.3324 32.926 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 272 328 296 352 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 272 352 296 328 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 296 352 272 328 Line End End %I eop Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.54675 0 0 0.54675 78.414 108.666 ] concat %I 312 328 16 16 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.54675 0 0 0.54675 78.414 76.6661 ] concat %I 312 328 16 16 Elli End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.17582 0 0 1 3.34066 -8 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 72 416 344 416 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 0 -4.15627 ] concat %I 72 416 344 416 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.3645 0 0 0.3645 215.276 168.444 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.5 0 0 1.5 -156 -164 ] concat %I 312 328 16 16 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 312 328 12 12 Elli End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.3645 0 0 0.3645 207.276 136.444 ] concat Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.5 0 0 1.5 -156 -164 ] concat %I 312 328 16 16 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t u %I 312 328 12 12 Elli End End %I eop Begin %I Rect %I b 52428 1 0 0 [2 2 2 2 2 2 2 2] 17 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.694036 0 0 1.01538 139.519 -5.90771 ] concat %I 456 376 560 464 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 184 158.078 ] concat Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.564816 0.216813 -0.216813 0.564816 234.7 -84.3403 ] concat %I 7 348 408 336 376 344 376 344 360 352 360 352 376 360 376 7 Poly End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.46679 0.179184 -0.179184 0.46679 254.363 -33.6035 ] concat %I 7 348 408 336 376 344 376 344 360 352 360 352 376 360 376 7 Poly End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < cc cc 33 33 cc cc 33 33 > -1 SetP %I t [ 1.15432 0 0 0.899587 413.516 -216.34 ] concat %I 70 392 147 455 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.981392 0 0 0.729097 441.301 -62.3254 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 1 -1 ] concat %I 77 294 119 329 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t u %I 77 294 119 329 Rect End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.793562 0 0 0.508111 348.306 -23.4999 ] concat %I 184 424 296 488 Rect End Begin %I Pict none SetB %I b n %I cfg u %I cbg u %I f u %I p u %I t [ 1.06254 0 0 1.01622 -44.9872 79.6469 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.375 0 0 0.2 571 -91.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.2 555.5 -93.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.375 -5.66234e-08 3.01992e-08 -0.2 484 344.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.25 -3.77489e-08 3.01992e-08 -0.2 499.5 346.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 0.375 -0.2 1.50996e-08 745.9 170 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 0.25 -0.2 1.50996e-08 747.5 154.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 -0.375 0.2 1.50996e-08 309.1 83 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 -0.25 0.2 1.50996e-08 307.5 98.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.579568 0 0 0.554303 438.516 118.124 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 475.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.125 0 0 0.25 511.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 639.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.25 603.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0.5 -0.2 ] concat %I 208 144 208 141 Line End End %I eop End %I eop Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.998252 0 0 1 0.0253496 0 ] concat %I 16 136 584 560 Rect End End %I eop %%Trailer end showpage endTexFig 100 1767 p (Figure)s 13(9:)m 18(User)m 14(interface)m 14(builder)m 13(prototyp)m -1 r 101 c 45 1838 p 13024788 12373537 394690 394690 39469056 37824512 startTexFig %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Times-Roman Courier Helvetica-Bold %%BoundingBox: 6 6 600 575 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { /patternGrayLevel idef patternGrayLevel -1 eq { /patternString idef } if false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave printFont findfont printSize scalefont setfont fgred fggreen fgblue setrgbcolor /vertoffset printSize neg def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 4 newpath 0 0 moveto 625 0 lineto 625 600 lineto 0 600 lineto closepath clip %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.959998 0 0 0.959998 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -80 -112.144 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 4 0 0 4 -960.524 -1309.14 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.883012 0.135213 0.462441 0.801667 105.213 254.036 ] concat Begin %I Rect none SetB %I b n %I cfg LtGray 0.764706 0.764706 0.764706 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.500715 0 0 0.499249 6.1928 13.7814 ] concat %I 81 90 782 548 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.5 0 0 0.5 -0.74915 21.391 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 56.7763 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 21.573 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -13.6303 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -48.8337 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -84.037 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -119.24 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -154.444 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -189.647 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -224.85 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -260.054 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -295.257 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -330.46 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -365.664 ] concat %I 344 521 624 561 Rect End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Blue 0 0 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.133803 0 0 0.133803 77.7863 182.363 ] concat %I -288 -80 848 841 Rect End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 26.7271 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 52.9525 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 79.1779 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 39.8398 236.419 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 66.0652 236.419 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 92.2906 236.419 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 26.7271 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 52.9525 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 79.1779 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 39.8398 262.377 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 66.0652 262.377 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 92.2906 262.377 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 26.7271 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 52.9525 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 79.1779 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 39.8398 184.504 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 66.0652 184.504 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 92.2906 184.504 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 26.7271 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 52.9525 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 79.1779 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 39.8398 210.462 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 66.0652 210.462 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 92.2906 210.462 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 105.403 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 131.629 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 157.854 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 118.516 236.419 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 144.741 236.419 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 105.403 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 131.629 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 157.854 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 118.516 262.377 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 144.741 262.377 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 105.403 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 131.629 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 157.854 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 118.516 184.504 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 144.741 184.504 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 105.403 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 131.629 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 157.854 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 118.516 210.462 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 144.741 210.462 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 26.7271 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 52.9525 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 79.1779 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 105.403 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 131.629 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 157.854 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.500715 0 0 0.499249 -1.30695 21.2711 ] concat %I 81 90 782 548 Rect End End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f times_roman12 /Times-Roman 12 SetF %I t [ 4.82759 0 0 4.82759 456.5 300.707 ] concat %I [ (Cafe) ] Text End Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p u %I t [ 0.953543 -0.301257 0.301257 0.953543 -117.161 192.324 ] concat Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 12 248 248 304 304 304 272 288 184 312 168 352 208 376 328 360 336 344 256 344 200 376 184 400 224 12 BSpl End Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 10 432 328 480 392 392 328 400 288 488 336 504 296 488 256 424 216 376 256 456 240 10 BSpl End Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 9 512 256 568 344 568 424 568 432 576 376 608 288 624 312 608 384 480 280 9 BSpl End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.953543 -0.301257 0.301257 0.953543 -118.122 193.285 ] concat Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 12 248 248 304 304 304 272 288 184 312 168 352 208 376 328 360 336 344 256 344 200 376 184 400 224 12 BSpl End Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 10 432 328 480 392 392 328 400 288 488 336 504 296 488 256 424 216 376 256 456 240 10 BSpl End Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 9 512 256 568 344 568 424 568 432 576 376 608 288 624 312 608 384 480 280 9 BSpl End End %I eop End %I eop Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 0.865585 0 85.864 ] concat %I 89 617 529 705 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 0.979275 -54 30.9326 ] concat %I 144 600 176 624 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.01556 0 0 1 -24.2412 18 ] concat %I 144 600 176 624 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.00778 0 0 0.997918 1.20149 -4.25819 ] concat %I 88 264 152 624 Rect End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -58 14 ] concat %I 152 616 176 616 Line End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -54 18 ] concat %I 160 672 160 656 Line End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < ff 00 00 00 ff 00 00 00 > -1 SetP %I t [ 1 0 0 1.2 -54 -115.261 ] concat %I 176 656 184 672 Rect End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -54 18 ] concat %I 144 648 584 680 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.14545 0 0 1 -65.8026 26 ] concat %I 136 616 520 640 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 1 0 0 1 22 54 ] concat %I 104 568 128 584 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.998671 0 0 0.979275 -53.2236 30.9326 ] concat %I 208 600 584 624 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 104.5 608 ] concat %I [ (Select) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 110.5 576 ] concat %I [ (Move) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 104.5 512 ] concat %I [ (Rotate) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 101.5 480 ] concat %I [ (Magnify) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 110.5 448 ] concat %I [ (Text) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -157.5 -61.5 ] concat %I 264 480 296 464 Line End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -157.5 -125.5 ] concat %I 280 472 16 8 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -157.5 -229.5 ] concat %I 264 536 296 552 Rect End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.498204 0.767234 -0.697486 0.548025 269.968 -236.589 ] concat %I 5 344 472 336 464 344 448 360 448 360 464 5 Poly End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -157.5 -93.5 ] concat %I 4 264 480 272 472 288 472 296 464 4 BSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 601.5 ] concat %I [ (s) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 569.5 ] concat %I [ (m) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 537.5 ] concat %I [ (;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 505.5 ] concat %I [ (k) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 473.5 ] concat %I [ (z) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 441.5 ] concat %I [ (t) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 377.5 ] concat %I [ (w) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 345.5 ] concat %I [ (o) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 313.5 ] concat %I [ (r) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 281.5 ] concat %I [ (p) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 145.5 409.5 ] concat %I [ (l) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 98 660.5 ] concat %I [ (* usacafelogo.ps) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 450 660.5 ] concat %I [ (Helvetica 10) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 282 660.5 ] concat %I [ (mag 4x) ] Text End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -54 18 ] concat %I 152 656 168 672 Rect End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -54 18 ] concat %I 152 664 168 664 Line End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 354 18 ] concat %I 152 656 168 672 Rect End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -54 18 ] concat %I 3 560 664 568 664 568 656 3 MLine End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 138 690 ] concat %I [ (drawing) ] Text End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < ff 00 00 00 ff 00 00 00 > -1 SetP %I t [ 1 0 0 1.2 -54 -115.261 ] concat %I 256 656 552 672 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < ff 00 00 00 ff 00 00 00 > -1 SetP %I t [ 1 0 0 1 -54 18 ] concat %I 184 488 192 488 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -54 18 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < cc cc 33 33 cc cc 33 33 > -1 SetP %I t [ 0.843044 0 0 1.2163 84.5233 -340.924 ] concat %I 70 392 147 455 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.927346 0 0 1.10893 85.1135 -156.7 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 1 -1 ] concat %I 77 294 119 329 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t u %I 77 294 119 329 Rect End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.579568 0 0 0.554303 36.8969 -22.474 ] concat %I 184 424 296 488 Rect End Begin %I Pict none SetB %I b n %I cfg u %I cbg u %I f u %I p u %I t [ 1.06254 0 0 1.01622 -397.738 101.737 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.375 0 0 0.2 571 -91.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.2 555.5 -93.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.375 -5.66234e-08 3.01992e-08 -0.2 484 344.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.25 -3.77489e-08 3.01992e-08 -0.2 499.5 346.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 0.375 -0.2 1.50996e-08 745.9 170 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 0.25 -0.2 1.50996e-08 747.5 154.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 -0.375 0.2 1.50996e-08 309.1 83 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 -0.25 0.2 1.50996e-08 307.5 98.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.579568 0 0 0.554303 69.765 140.215 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 475.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.125 0 0 0.25 511.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 639.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.25 603.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0.5 -0.2 ] concat %I 208 144 208 141 Line End End %I eop End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 107.5 544 ] concat %I [ (Scale) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 160 635.5 ] concat %I [ (Catalog Edit) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 320 635.5 ] concat %I [ (Font Brush Pattern Align View) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.10526 0 0 1 -53.319 18 ] concat %I 272 600 328 624 Rect End Begin %I Text %I cfg White 1 1 1 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 251.26 635.5 ] concat %I [ (Structure) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.00763 0 0 0.869051 -32.1169 96.9355 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.998464 0 0 0.397524 15.7795 358.424 ] concat %I 264 448 392 600 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.998464 0 0 0.397524 13.7181 360.486 ] concat %I 264 448 392 600 Rect End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -38 18.4971 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 291.741 593.849 ] concat %I [ (Group) (Ungroup) (Bring to Front) (Send to Back) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 403.741 593.849 ] concat %I [ (g) (u) (f) (b) ] Text End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -70 402 ] concat Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.564816 0.216813 -0.216813 0.564816 234.7 -84.3403 ] concat %I 7 348 408 336 376 344 376 344 360 352 360 352 376 360 376 7 Poly End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.46679 0.179184 -0.179184 0.46679 254.363 -33.6035 ] concat %I 7 348 408 336 376 344 376 344 360 352 360 352 376 360 376 7 Poly End End %I eop Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 -6.50001 120 ] concat %I 537 -519 1489 849 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 9 1.49994 ] concat %I -367 697 697 1009 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.12632 0 0 1 -11.2421 0 ] concat %I -287 -335 89 1041 Rect End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 16 -24 ] concat %I -255 -535 681 177 Rect End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -54 18 ] concat %I 144 136 584 680 Rect End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.872773 0 0 2.8112 48.7328 -464.117 ] concat %I 273 168 665 296 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 0.979275 141 -298.067 ] concat %I 144 600 176 624 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.01556 0 0 1 170.759 -311 ] concat %I 144 600 176 624 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.00778 0 0 0.518363 196.201 -34.0159 ] concat %I 88 264 152 624 Rect End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 137 -315 ] concat %I 152 616 176 616 Line End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 141 -311 ] concat %I 160 672 160 656 Line End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.781532 0 0 1 172.112 -311 ] concat %I 144 648 584 680 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.893496 0 0 1 163.464 -303 ] concat %I 136 616 520 640 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 1 0 0 1 217 -275 ] concat %I 104 568 128 584 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.741035 0 0 0.979275 195.365 -298.067 ] concat %I 208 600 584 624 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 299.5 286.688 ] concat %I [ (Select) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 305.5 271.984 ] concat %I [ (Move) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 299.5 242.578 ] concat %I [ (Rotate) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 296.5 227.875 ] concat %I [ (Magnify) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 305.5 213.172 ] concat %I [ (Text) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.7 0 0 0.7 121.5 -137.432 ] concat %I 264 480 296 464 Line End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.7 0 0 0.7 121.5 -166.838 ] concat %I 280 472 16 8 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.7 0 0 0.7 121.5 -231.942 ] concat %I 264 536 296 552 Rect End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.348743 0.537064 -0.48824 0.383617 420.727 -229.207 ] concat %I 5 344 472 336 464 344 448 360 448 360 464 5 Poly End Begin %I BSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.7 0 0 0.7 121.5 -152.135 ] concat %I 4 264 480 272 472 288 472 296 464 4 BSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 280.188 ] concat %I [ (s) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 265.484 ] concat %I [ (m) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 250.781 ] concat %I [ (;) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 236.078 ] concat %I [ (k) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 221.375 ] concat %I [ (z) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 206.672 ] concat %I [ (t) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 177.265 ] concat %I [ (w) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 162.562 ] concat %I [ (o) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 147.859 ] concat %I [ (r) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 133.155 ] concat %I [ (p) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 340.5 191.968 ] concat %I [ (l) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 293 331.5 ] concat %I [ (* usacafelogo.ps) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 549 331.5 ] concat %I [ (Helvetica 10) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 437 331.5 ] concat %I [ (mag 0.25x) ] Text End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 141 -311 ] concat %I 152 656 168 672 Rect End Begin %I Line %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 141 -311 ] concat %I 152 664 168 664 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -74 264 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 527 -575 ] concat %I 152 656 168 672 Rect End Begin %I MLine %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 119 -575 ] concat %I 3 560 664 568 664 568 656 3 MLine End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f helvetica_bold14 /Helvetica-Bold 14 SetF %I t [ 1 0 0 1 333 361 ] concat %I [ (drawing) ] Text End Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < ff 00 00 00 ff 00 00 00 > -1 SetP %I t [ 1 0 0 1 141 -311 ] concat %I 184 488 192 488 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.843044 0 0 1.2163 225.523 -467.924 ] concat %I 70 392 147 455 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.579568 0 0 0.554303 177.897 -149.474 ] concat %I 184 424 296 488 Rect End Begin %I Pict none SetB %I b n %I cfg u %I cbg u %I f u %I p u %I t [ 1.06254 0 0 1.01622 -256.738 -25.2629 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.375 0 0 0.2 571 -91.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.25 0 0 0.2 555.5 -93.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.375 -5.66234e-08 3.01992e-08 -0.2 484 344.9 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ -0.25 -3.77489e-08 3.01992e-08 -0.2 499.5 346.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 0.375 -0.2 1.50996e-08 745.9 170 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 0.25 -0.2 1.50996e-08 747.5 154.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.83117e-08 -0.375 0.2 1.50996e-08 309.1 83 ] concat %I -120 1056 -112 1072 Rect End Begin %I Poly none SetB %I b n %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1.88745e-08 -0.25 0.2 1.50996e-08 307.5 98.5 ] concat %I 3 -128 1064 -112 1040 -96 1064 3 Poly End End %I eop End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.579568 0 0 0.554303 210.765 13.2151 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 507.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 184 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 184 552 176 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 200 536 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 536 176 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 176 528 200 528 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 552 168 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 607.5 -3.5 ] concat %I 168 544 176 544 Line End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 -0.25 507.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 475.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.125 0 0 0.25 511.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 0.25 0 0 0.25 471.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.83333 0 0 1.83333 -813.583 -69.417 ] concat Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 258.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 -0.25 607.5 256.5 ] concat %I 168 552 200 568 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 639.5 -17.5 ] concat %I 296 552 296 544 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.125 0 0 0.25 603.5 -17.5 ] concat %I 304 552 320 552 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 320 544 328 560 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ -0.25 0 0 0.25 643.5 -15.5 ] concat %I 328 560 344 560 Line End End %I eop Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 0.5 -0.2 ] concat %I 208 144 208 141 Line End End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 302.5 257.281 ] concat %I [ (Scale) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 355 306.5 ] concat %I [ (CatalogEdit) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 475.938 306.5 ] concat %I [ (FontBrushPatternAlignView) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f courier10 /Courier 10 SetF %I t [ 1 0 0 1 420.963 306.5 ] concat %I [ (Structure) ] Text End Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.781532 0 0 0.662337 172.112 -80.8369 ] concat %I 144 136 584 680 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.65 0 0 0.65 238.628 -101.973 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.883012 0.135213 0.462441 0.801667 105.213 254.036 ] concat Begin %I Rect none SetB %I b n %I cfg LtGray 0.764706 0.764706 0.764706 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.500715 0 0 0.499249 6.1928 13.7814 ] concat %I 81 90 782 548 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.5 0 0 0.5 -0.74915 21.391 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 56.7763 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 21.573 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -13.6303 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -48.8337 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -84.037 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -119.24 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -154.444 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -189.647 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -224.85 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -260.054 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -295.257 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -330.46 ] concat %I 344 521 624 561 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 2.50714 0 0 0.873834 -782.457 -365.664 ] concat %I 344 521 624 561 Rect End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect none SetB %I b n %I cfg Blue 0 0 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.133803 0 0 0.133803 77.7863 182.363 ] concat %I -288 -80 848 841 Rect End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 26.7271 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 52.9525 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 79.1779 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 39.8398 236.419 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 66.0652 236.419 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 92.2906 236.419 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 26.7271 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 52.9525 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 79.1779 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 39.8398 262.377 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 66.0652 262.377 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 92.2906 262.377 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 26.7271 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 52.9525 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 79.1779 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 39.8398 184.504 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 66.0652 184.504 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 92.2906 184.504 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 26.7271 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 52.9525 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 79.1779 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 39.8398 210.462 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 66.0652 210.462 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 92.2906 210.462 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 105.403 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 131.629 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 157.854 249.398 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 118.516 236.419 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 144.741 236.419 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 105.403 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 131.629 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 157.854 275.356 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 118.516 262.377 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 144.741 262.377 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 105.403 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 131.629 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 157.854 197.483 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 118.516 184.504 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 144.741 184.504 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 105.403 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 131.629 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 157.854 223.441 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 118.516 210.462 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 144.741 210.462 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 26.7271 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 52.9525 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 79.1779 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 105.403 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 131.629 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg White 1 1 1 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 0.0802818 0 0 0.0802818 157.854 171.525 ] concat %I 11 287 170 275 133 238 133 268 111 256 76 286 98 317 75 306 112 334 133 299 133 299 133 11 Poly End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.500715 0 0 0.499249 -1.30695 21.2711 ] concat %I 81 90 782 548 Rect End End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f times_roman12 /Times-Roman 12 SetF %I t [ 4.82759 0 0 4.82759 456.5 300.707 ] concat %I [ (Cafe) ] Text End Begin %I Pict %I b u %I cfg White 1 1 1 SetCFg %I cbg u %I f u %I p u %I t [ 0.953543 -0.301257 0.301257 0.953543 -117.161 192.324 ] concat Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 12 248 248 304 304 304 272 288 184 312 168 352 208 376 328 360 336 344 256 344 200 376 184 400 224 12 BSpl End Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 10 432 328 480 392 392 328 400 288 488 336 504 296 488 256 424 216 376 256 456 240 10 BSpl End Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 9 512 256 568 344 568 424 568 432 576 376 608 288 624 312 608 384 480 280 9 BSpl End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.953543 -0.301257 0.301257 0.953543 -118.122 193.285 ] concat Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 12 248 248 304 304 304 272 288 184 312 168 352 208 376 328 360 336 344 256 344 200 376 184 400 224 12 BSpl End Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 10 432 328 480 392 392 328 400 288 488 336 504 296 488 256 424 216 376 256 456 240 10 BSpl End Begin %I BSpl %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t u %I 9 512 256 568 344 568 424 568 432 576 376 608 288 624 312 608 384 480 280 9 BSpl End End %I eop End %I eop End %I eop End %I eop showpage %%Trailer end endTexFig 146 2713 p (Figure)s 13(10:)m 18(Drawing)m 13(editor)m 13(prototyp)m -1 r 101 c 1035 154 p (and)s 19(generates)m 20 r 97 c 19(netlist)m 18(of)m 18(the)m 19(resulting)m 17(circuit.)m 33(The)m 1035 203 p (system)s 13(supports)m 10(hierarchical)m 13(composition)m 10(of)m 12(circuit)m 11(el-)m 1035 253 p (ements)s 16(and)m 16(maintains)m 15(graphical)m 15(connectivity)m 14(between)m 1035 303 p (them.)s 18(The)m 12(user)m 12(interface)m 12(builder)m 11(lets)m 11(the)m 11(user)m 12(compose)m 1035 353 p 97 c 13(user)m 13(interface)m 13(in)m 12(terms)m 13(of)m 12(InterV)m -1(i)m -1(ews)m 11(toolkit)m 11(abstrac-)m 1035 403 p (tions)s 8(and)m 9(generates)m 11(C++)m 9(source)m 10(code)m 10(to)m 9(be)m 9(incorporated)m 1035 452 p (into)s 12(the)m 14(tar)m (get)s 13(application.)m 17(Finally)m -2 r 44 c 13(the)m 13(drawing)m 13(editor)m 1035 502 p (provides)s 15(MacDraw-like)m 16(functionality)m 13(\(with)m 15(the)m 16(added)m 1035 552 p (bene\014ts)s 18(of)m 17(multipl)m -1 r 101 c 16(views\))m 17(and)m 18(generates)m 18(PostScript.)m 1035 602 p (The)s 17(prototyp)m -1 r 101 c 15(schematic)m 17(capture)m 16(system)m 17(and)m 16(user)m 16(in-)m 1035 652 p (terface)s 13(builder)m 11(are)m 12(less)m 13(than)m 11(5000)m 12(lines)m 11(each,)m 14(while)m 11(the)m 1035 702 p (drawing)s 13(editor)m 13(is)m 13(less)m 14(than)m 13(2500)m 13(lines.)m t-bol.420 @sf 1035 841 p 53 c 58(Conclusion)m t-rom.300 @sf 1035 934 p (Unidraw)s 14(greatly)m 14(facilitated)m 13(the)m 14(implementation)m 14(of)m 14(our)m 1035 984 p (three)s 13(prototype)m 11(domain-speci\014c)m 13(editors.)m 18(Though)m 12(these)m 1035 1034 p (editors)s 20(do)m 21(not)m 21(yet)m 21(represent)m 22(production)m -1(-quali)m -1(ty)m 19(sys-)m 1035 1083 p (tems,)s 14(they)m 14(have)m 14(proven)m 13(to)m 13(be)m 13(useful)m 14(tools)m 12(for)m 13(their)m 13(in-)m 1035 1133 p (tended)s 14(purposes.)m 21(Unidraw)m 13(narrowed)m 15(the)m 14(design)m 14(space)m 1035 1183 p (for)s 10(each)m 12(editor)m 10(signi\014cantly)m -2 r 44 c 10(obviating)m 8(basic)m 12(design)m 10(de-)m 1035 1233 p (cisions)s 11(that)m 10(are)m 13(independent)m 10(of)m 11(the)m 11(domain.)m 18(The)m 12(proto-)m 1035 1283 p (type)s 10(library)m 8(provided)m 9(reusable)m 11(functionali)m -1(ty)m 8(in)m 9(the)m 10(form)m 1035 1332 p (of)s 14(prede\014ned)m 14(components,)m 14(commands,)m 16(and)m 14(tools.)m 19(De-)m 1035 1382 p (bugging)s 8(time)m 10(was)m 11(reduced)m 10(because)m 11(much)m 11(less)m 10(code)m 10(was)m 1035 1432 p (written.)s 33(Our)m 19(experience)m 20(is)m 19(that)m 18(developing)m 18(domain-)m 1035 1482 p (speci\014c)s 20(editors)m 18(with)m 18(Unidraw)m 19(is)m 19(mainly)m 18 r 97 c 20(matter)m 19(of)m 1035 1532 p (choosing,)s 21(designing,)m 20(and)m 20(implementing)m 19(the)m 20(required)m 1035 1581 p (domain-speci\014c)s 16(components.)m 25(Signi\014cantly)m 14(less)m 17(ef)m (fort)s 1035 1631 p (is)s 21(spent)m 20(de\014ning)m 20(new)m 21(commands,)m 24(while)m 21(specialized)m 1035 1681 p (tools)s 13(are)m 14(needed)m 14(the)m 14(least)m 14(often.)m 1076 1731 p (The)s 22(architecture)m 22(is)m 21(under)m (goi)s -1(ng)m 19(continuous)m 20(re\014ne-)m 1035 1781 p (ment)s 20(as)m 21(we)m 21(experiment)m 20(with)m 19(the)m 20(prototype.)m 37(Fertile)m 1035 1831 p (ground)s 12(for)m 13(future)m 12(research)m 15(involves)m 12(additional)m 11(support)m 1035 1880 p (for)s 14(external)m 14(representations,)m 15(which)m 14(is)m 15 r 97 c 15(dif)m (\014cult)s 12(prob-)m 1035 1930 p (lem)s 10(in)m 9(general.)m 17 r 87 c -2 r 101 c 9(would)m 8(like)m 9(to)m 9(go)m 9(beyond)m 9(the)m 9(current)m 1035 1980 p (prede\014ned)s 14(external)m 14(view)m 14(traversals)m 14(to)m 14(develop)m 13 r 97 c 15(more)m 1035 2030 p (powerful)s 14(model)m 15(that)m 14(includes)m 15(support)m 14(for)m t-ita.300 @sf 14(interpr)m -1(eting)m t-rom.300 @sf 1035 2080 p (external)s 17(representations.)m 30(This)m 17(capability)m 17(would)m 16(let)m 18 r 97 c 1035 2129 p (domain-speci\014c)s 11(editor)m 10(read)m 12(in)m 11(existing)m 9(representations,)m 1035 2179 p (including)s 12(those)m 13(not)m 13(generated)m 14(by)m 14(the)m 13(editor)m 13(itself.)m 18(For)m 1035 2229 p (example,)s 16 r 97 c 15(schematic)m 15(editor)m 13(could)m 14(read)m 15(in)m 14(an)m 14(existing)m 1035 2279 p (netlist,)s 15(allow)m 16(the)m 15(user)m 17(to)m 15(edit)m 15(it)m 15(graphically)m -2 r 44 c 15(and)m 16(gen-)m 1035 2329 p (erate)s 15 r 97 c 14(new)m 14(netlist.)m 17 r 65 c 14(logic)m 13(simulator)m 13(could)m 13(then)m 13(give)m 1035 2378 p (the)s 15(user)m 16(feedback)m 16(about)m 15(the)m 15(modi\014ed)m 15(circuit')m -2 r 115 c 14(behav-)m 1035 2428 p (ior)s -1 r 44 c 13(which)m 13(might)m 13(prompt)m 13(him)m 13(to)m 14(edit)m 13(the)m 14(circuit)m 13(again.)m 1035 2478 p (The)s 21(ability)m 18(to)m 20(read)m 20(as)m 21(well)m 20(as)m 20(write)m 20(external)m 20(repre-)m 1035 2528 p (sentations)s 12(permits)m 13(iterative)m 13(design)m 13(by)m 13(closing)m 12(the)m 13(loop)m 1035 2578 p (between)s 16(speci\014cation)m 16(and)m 15(analysis,)m 17(making)m 15(Unidraw-)m 1035 2628 p (based)s 14(tools)m 13(even)m 14(more)m 14(useful.)m @eop 13 @bop0 13 @bop1 t-rom.300 @sf 927 8 p 45 c 13(13)m 14 r 45 c t-bol.420 @sf 0 154 p (Refer)s (ences)s t-rom.300 @sf 21 246 p ([1])s t-ita.300 @sf 20(LabVIEW)m 17(Manual)m t-rom.300 @sf 46 c 26(National)m 16(Instruments)m 16(Corp.,)m 90 296 p (1987.)s 21 379 p ([2])s 20 r 80 c -4(.S.)m 11(Barth.)m 12(An)m 10(object-oriented)m 9(approach)m 11(to)m 10(graph-)m 90 429 p (ical)s 15(interfaces.)m t-ita.300 @sf 24(ACM)m 15 r 84 c -1(ransactions)m 13(on)m 15(Graphics)m t-rom.300 @sf 44 c 90 479 p (5\(2\):142{1)s -1(72,)m 12(April)m 13(1986.)m 21 562 p ([3])s 20(Alan)m 20(H.)m 21(Borning.)m t-ita.300 @sf 38(ThingLab)m 19 r 124 c 20 r 65 c 22(Constraint)m -1 r 45 c 90 611 p (Oriented)s 16(Simulatio)m -1 r 110 c 15(Laboratory)m t-rom.300 @sf 46 c 27 r 84 c -2(echnical)m 16(Re-)m 90 661 p (port)s 9(SSL-79-3,)m 11(Xerox)m 10(Palo)m 11(Alto)m 9(Research)m 12(Center)m -1 r 44 c 90 711 p (July)s 13(1979.)m 21 794 p ([4])s 20(Steven)m 18(H.)m 18(Gutfreund.)m 30(ManiplIcons)m 17(in)m 18(Thinker-)m 90 844 p 84 c -2(oy)m -2 r 46 c 15(In)m t-ita.300 @sf 13(ACM)m 12(OOPSLA)m 14('87)m 12(Confer)m -1(ence)m 12(Pr)m -1(oceed-)m 90 894 p (ings)s t-rom.300 @sf 44 c 10(pages)m 11(307{317,)m 10(Orlando,)m 10(FL,)m 11(October)m 10(1987.)m 21 977 p ([5])s 20(R.J.K.)m 12(Jacob.)m 14 r 65 c 10(state)m 11(transition)m 8(diagram)m 11(language)m 90 1027 p (for)s 11(visual)m 10(programming.)m t-ita.300 @sf 14(Computer)m t-rom.300 @sf 44 c 11(18\(8\):51{59,)m 90 1076 p (August)s 13(1985.)m 21 1159 p ([6])s 20(Mark)m 14(A.)m 15(Linton,)m 13(John)m 13(M.)m 15(Vlissides,)m 14(and)m 14(Paul)m 14(R.)m 90 1209 p (Calder)s -1 r 46 c 36(Composing)m 19(user)m 20(interfaces)m 21(with)m 19(Inter-)m 90 1259 p 86 c -1(iews.)m t-ita.300 @sf 17(Computer)m t-rom.300 @sf 44 c 14(22\(2\):8{)m -1(22,)m 12(February)m 14(1989.)m 21 1342 p ([7])s 20(M.K.)m 18(Molloy)m -2 r 46 c 29 r 65 c 17(CAD)m 18(tool)m 16(for)m 17(stochastic)m 18(petri)m 90 1392 p (nets.)s 15(In)m t-ita.300 @sf 11(Pr)m -1(oceedings)m 12(of)m 11(the)m 11(1986)m 11(Fall)m 11(Joint)m 11(Com-)m 90 1442 p (puter)s 12(Confer)m -1(ence)m t-rom.300 @sf 44 c 13(pages)m 13(1082{1091,)m 11(Dallas,)m 13(TX,)m 90 1491 p (November)s 14(1986.)m 21 1574 p ([8])s 20(Nan)m 12(C.)m 13(Shu.)m t-ita.300 @sf 16 r 86 c -2(isual)m 10(Pr)m -1(ogramming)m t-rom.300 @sf 46 c 15 r 86 c -4(an)m 12(Nostrand)m 90 1624 p (Reinhold,)s 12(New)m 15 r 89 c -3(ork,)m 12(1988.)m 21 1707 p ([9])s 20(I.E.)m 24(Sutherland.)m t-ita.300 @sf 46(Sketchpad:)m 36 r 65 c 24(Man-Machine)m 90 1757 p (Graphical)s 17(Communicati)m -1(on)m 16(System)m t-rom.300 @sf 46 c 31(PhD)m 18(thesis,)m 90 1807 p (MIT)s -2 r 44 c 13(1963.)m 0 1890 p ([10])s 20(John)m 10(M.)m 11(Vlissides)m 11(and)m 10(Mark)m 11(A.)m 11(Linton.)m 13(Applying)m 90 1940 p (object-oriented)s 13(design)m 14(to)m 15(structured)m 14(graphics.)m 21(In)m t-ita.300 @sf 90 1990 p (Pr)s -1(oceedings)m 16(of)m 16(the)m 16(1988)m 15(USENIX)m 17(C++)m 16(Confer)m 45 c 90 2039 p (ence)s t-rom.300 @sf 44 c 15(pages)m 15(81{94,)m 13(October)m 13(1988.)m @eop @end ivtools-doc/unidrawinfo.html0000644000076500007650000001240207374262634017073 0ustar scottscott00000000000000 Unidraw

    Unidraw

    Unidraw is a general C++ framework written by John Vlissides for creating custom graphical editing applications. It was implemented using the InterViews library. John Vlissides' thesis Generalized Graphical Object Editing (technical report CSL-TR-90-427, Stanford University, send e-mail request to schulman@shasta.stanford.edu ) describes the basic ideas behind Unidraw; if you are interested look at chapters 1, 3 (skip 3.3), 4 (skip 4.6, 4.7) and 5.1 as an introduction to Unidraw concepts. The InterViews idraw program is a basic figure drawing application that shows many of the capabilities of the Unidraw library.

    John Vlissides has authored many books on Design Patterns, and used Unidraw for a lot of the examples. He periodically writes about Unidraw-derived patterns in his C++ Report Pattern Hatching column. Vlissides and Linton published a paper in ACM Transactions on Information Systems called Unidraw: a framework for building domain-specific graphical editors

    online copies: unidraw.ps, .gz or ftp://interviews.stanford.edu/pub/papers/unidraw.ps.Z

    Unidraw class man pages

    Unidraw auf Deutsch.

    HotDraw is a similar environment written in Smalltalk.

    Pattern Hatching, a book by John Vlissides on usage of design patterns compiled from his column.

    A chapter in this book is written by Vlissides about Unidraw.


    Basic abstractions:

    • Components and ComponentViews represent domain-specific data objects and their corresponding graphical views
    • Commands define operations on components and other objects
    • Tools support direct manipulation of component views with the mouse
    • External representations provide for save and restore of components, PostScript rendering, etc.

    Structure of a Unidraw application: (thesis page 29)

    • Unidraw: top level object
    • Editor: contains tools, commands, viewers
    • Viewer: displays tree of graphical views
    • ComponentView: graphical view of a data object
    • Component: wrapper around primitive data object
    • Catalog: manage external representations

    Other features:

    • multiple views/viewers
    • command history undo/redo
    • tool manipulators and rubberbanding
    • selection
    • viewer zoom/pan

    Within ivtools and vhclmaps there are several other libraries (and sample programs) layered on top of the basic Unidraw (and idraw) capabilities. Other uses of Unidraw here

    ivtools layers

  • UniIdraw -- librarification of 3.1 idraw
  • OverlayUnidraw -- generic extensions
  • ComUnidraw -- command interpreter integration
  • FrameUnidraw -- multi-frame extensions
  • GraphUnidraw -- graph/network extensions
  • DrawServ -- merger of graph and frame layers
  • vhclmaps layers for building
  • MapUnidraw -- map feature viewers
  • DlgUnidraw -- DLG format map viewers
  • VpfUnidraw -- VPF format map viewers
  • MapServ -- map feature processing server
  • UtmUnidraw -- UTM projected viewers
  • ProjServ -- projected map feature processing servers
  • ProjUnidraw -- map feature viewers with arbitrary projection
  • VhclServ -- vehicle state servers
  • VhclUnidraw -- vehicle state viewers
  • DemUnidraw -- 3d terrain viewers
  • back to ivtools technical info

    ivtools-doc/unidrawpic.ps0000644000076500007650000003664407503676713016410 0ustar scottscott00000000000000%!PS-Adobe-2.0 EPSF-1.2 %%Creator: idraw %%DocumentFonts: Helvetica-Bold Helvetica %%Pages: 1 %%BoundingBox: 76 212 534 578 %%EndComments %%BeginIdrawPrologue /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %%EndIdrawPrologue /arrowHeight 8 def /arrowWidth 4 def /IdrawDict 52 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/minus/period/slash /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon /less/equal/greater/question/at/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/bracketleft/backslash/bracketright /asciicircum/underscore/quoteleft/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/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica-Bold reencodeISO def /Helvetica reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l w add b translate w neg h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /SSten { fgred fggreen fgblue setrgbcolor dup true exch 1 0 0 -1 0 6 -1 roll matrix astore } def /FSten { dup 3 -1 roll dup 4 1 roll exch newpath 0 0 moveto dup 0 exch lineto exch dup 3 1 roll exch lineto 0 lineto closepath bgred bggreen bgblue setrgbcolor eofill SSten } def /Rast { exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore } def %%EndProlog %I Idraw 10 Grid 8 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.955325 0 0 0.955325 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1.00489 0 0 1.00489 67.7715 208.06 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 33 57 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.17761 0 0 1 -1.57529 -263 ] concat %I 16 280 272 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48.5 37.5 ] concat %I [ (Operating system) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 33.0355 53 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.17761 0 0 1 -1.57529 28.375 ] concat %I 16 280 272 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48.5 328.875 ] concat %I [ (Domain-specific editor) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 33 56 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1.21801 0 0 1 -2.16114 -54.1563 ] concat %I 16 144 224 176 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48.5 110.344 ] concat %I [ (Window system) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 33 55 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 1 18.6875 ] concat %I 16 144 224 176 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48.5 183.187 ] concat %I [ (User interface toolkit) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 32 54 ] concat Begin %I Rect %I b 65535 3 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 1.84364 27.5312 ] concat %I 16 208 176 240 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48.5 256.031 ] concat %I [ (Unidraw) ] Text End End %I eop Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.17361 33.8436 -29.4466 ] concat %I 96 272 96 240 Line %I 1 End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.18654 33.8436 -104.827 ] concat %I 96 272 96 240 Line %I 1 End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.19129 33.8436 -177.853 ] concat %I 96 272 96 240 Line %I 1 End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.05776 34.5 40.3313 ] concat %I 200 304 200 200 Line %I 1 End Begin %I Line %I b 65520 1 0 1 [12 4] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.74758 82.5 -169.625 ] concat %I 200 304 200 200 Line %I 1 End Begin %I Line %I b 65520 1 0 1 [12 4] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.02083 26 51.0486 ] concat %I 304 304 304 56 Line %I 1 End Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1.15172 33.8436 47.4666 ] concat %I 96 272 96 240 Line %I 1 End Begin %I BSpl %I b 65520 1 0 1 [12 4] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -32 64 ] concat %I 4 80 240 48 240 48 96 80 96 4 BSpl %I 1 End Begin %I BSpl %I b 65520 1 0 1 [12 4] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -32 -8 ] concat %I 4 80 240 48 240 48 96 80 96 4 BSpl %I 1 End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p 0 SetP %I t u Begin %I Line %I b 65535 1 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -357.312 -152 ] concat %I 408 192 440 192 Line %I 1 End Begin %I Line %I b 52428 1 0 1 [2 2] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -357.312 -168 ] concat %I 408 192 440 192 Line %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica 10 SetF %I t [ 1 0 0 1 90.6883 41.5 ] concat %I [ (basic dependencies) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica 10 SetF %I t [ 1 0 0 1 90.6883 25.5 ] concat %I [ (other possible dependencies) ] Text End End %I eop Begin %I Line %I b 65520 1 0 0 [12 4] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1.20643 0 0 1 -1.88953 0 ] concat %I 14 344 386 344 Line %I 1 End Begin %I Line %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 14.5 0 ] concat %I 400 360 400 328 Line %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica 10 SetF %I t [ 1 0 0 1 368 372 ] concat %I [ (application software) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica 10 SetF %I t [ 1 0 0 1 376.5 316 ] concat %I [ (system software) ] Text End End %I eop End %I eop showpage %%Trailer end ivtools-doc/vectaport-logo.gif0000644000076500007650000000116107374262634017314 0ustar scottscott00000000000000GIF87aR ,Rڋ޼H扦ʶ LT> & H*bd: 4^fK.5b%be-({r}!`AG(VGghȤ8VW)!ify987) ( zzG9Zf+K{ K, ʐ| \,\e*m}Me@M]^Dnd.bh2OF!|7ǂ!$2x D,Ai>&8ҤFQRëֵ_G/6<3΂=! ?1< MG| 'H$*D a%֘ݜ s-B݀|'ny QST..<-dX= Wn *ǽ|k14h81*t!"g h+`r ʪ1Fmfl)\Վ@+W^2'Rl!"ij/"n;{̧oLq$LH$(lfDqE"!UXbÅ.݇$7b=%Xv,c2Hc6(L;ivtools-doc/vhclserv-logo-square.gif0000644000076500007650000000624107374262634020443 0ustar scottscott00000000000000GIF87a@@888<4AAAEEEIIIMMMQQQQQUUUYYYaaaeeeiiimiiqqquuuyyy}}}AiQgi1f '?@h! xv .@p5sjre@@s0ori0Hent 0h WB@@ȿB@`@5@0p@xB|B@ @xȦB@ 0B nyl5o @|<4BB@@85@<(ȬB@d@T@5@@<4pѬOverk|writ5e e@xisting f i0le ,@@#H  <@ R hp `4 PRJ X^<0pg!lE HH jrjI11tYeˤ |B0k0'.tSjIL@Re pq.X„ 7!d0 h 0meI Z2x |@v($c B@x 3, x*̏YY̐!]… iKĄH4eq,Ïe [ivNP0]7Lq f˝V1^ ` 8PA~dNI0nFp8ؕ5@/TNI%W\ZBm8a@Ue._LZL4UX=@!vxdQI0B+HatQL)U(OEEؑGwddYSFV#dVژV}"eVc|BviN|a ȧP)ʧq Fsuu]0p@Dim-)ګMb ~T`t0¼lA mނ뫿+K'W )An`YcbA$šR A1P{R6/=`ASrp w3yBe.KMV0XYJd $BFb =|}F^ПB p{[G)Qnx,Eh\'bR @rEM2aB̧UXA+$Pnd $tp'Na%CDgnn ̏iABx~V@¿9NH}ܡ~<Iи$kDcfE<%.`Q< 5PAvVcbH>! ; Wq&VoXU:tKh ; 4wyg}{Xm^EeZgĉCȀ #>q) Pv'4e`hx/?ĉH1,{ц6@,EMm7ѐk& 8;]< ~FJL lpiZ]N8`)D/<$"bi^k"U"sט53$7JPVޱWc2UE9W5(P%dUIceTS@|WS@q%xAdTO +!á|`%8@cW3Q6J4 AtAe6ZTgZ;y&gSIsR Jm{W^ _M'iyffy>׸fL  ,P t1`5kYQӌ Hԡ^%D! :4./ wvď:Tq mV,*pzQgFMiilo6ՌPLj1*Lz/2: ;n8 mwKtBF QJm H.N)xCiIlZAbJӀsWb4 f$ImCP>@n?V;)XP0ɝB1UW42V3JC_pt"weSY.~ r=; W.o6 vb dēŪHf76 DGpy]t$br.V02jDHyF  -g۵LFpO[In(1oMn_~!f`"PBLMt7P AAj`Y$1iD\d'4>)6P*BVԮ $lZӶ.;F@X]s$$,3KQ8H)8*v("h@)LAVF6(Qwb(4?2FDHk:=>KfYNeF*>- i0xni_fH˛@,BaAxY%R`L' mT/gdm@3l?:0?<74m \'WߵUo } &zRfՁ|Y9NNk&PA5}#Dtٍ@'Ukt HڽtiJ|Ql΁ dLy @HWz~kc7;`o68q:r_NFk|ꐷc΀tvqAKv^Ejuٴ *6 2}d@iZv T 8b#;ae`g"CaS߁C1Odsefv%d!jlviVBbSb6T{4 q7d4>HA6$JR ;ivtools-doc/why-ivtools.html0000644000076500007650000002663307374262634017065 0ustar scottscott00000000000000 Why try ivtools?

    Why try ivtools?

    Why should a developer of commercial or free software applications for Unix consider using ivtools for their work?
  • * mature framework for direct-manipulation graphical editors
  • * lightweight glyphs for interactive structured document applications
  • * separation of structured graphic and structured document classes
  • * integration of an extendable and distributed command interpreter
  • * freedom to use the source in any fashion
  • * protection from software patents
  • * continual commercial-quality development and support
  • * organized leverage of other software frameworks
  • * open coordination of distributed development via patch
  • * mature framework for direct-manipulation graphical editors

    ivtools is a mature framework for constructing custom drawing editors and direct manipulation user interfaces. Starting with John Vlissides' Unidraw, we've added layers of class libraries for graph and frame visualization, image display and plot importing, as well as augmenting the original software with support for alternate document formats, command interpreting, attribute (property-list) management, and networking capabilities.

    * lightweight glyphs for interactive structured document applications

    The InterViews team was among the first to explore the concept of light-weight user interface objects, where pick and layout are managed on the client side. They used a single X window for a complex glyph layout, shifting more of the rendering logic to the client. The client gets finer grained control and the X server is left to do what it does best, paint raster and vector graphics.

    This approach had been pioneered with the structured graphics capability of InterViews 2.6. Now with glyphs the same performance advantages were brought to conventional widget objects (button, slider, menus, etc..). The improvement relative to Motif for a complicated dialog box was quite noticeable, hence the term "flyweight". In addition these glyphs were put to the test in creating doc, a document editor with TeX like capabilities where C++ objects were used down to the single character level. You can read more on this here

    * separation of structured graphic and structured document classes

    ivtools (and InterViews 3.1) has separate sets of objects for structured graphics and structured douments. Fresco has a single set of classes for structured graphics and structured documents. Unification of these two different fields of applications is interesting, but in our opinion unnecessarily complicates the API and the debugging process if all you really want is a custom drawing editor. It seems either you're building a pure graphical interface, where no automated layout is required, or your building a boxes-and-glue interface where you want all the power of TeX under the hood. In ivtools these classes are still separate, and different programmers can specialize in one or the other.

    * integration of an extendable and distributed command interpreter

    The command interpreter can be used within applications built on ivtools as a calculator for computing arbitrary attribute values, for selecting objects in a drawing editor by evaluating an arbitrary attribute expression, for controlling the viewer mechanism of a drawing editor and the playback mechanism of a flipbook viewer, and even for scripted drawing of graphics as an alternate to manual interactive creation. All of these are available for reuse in custom applications.

    In their ACM paper on Unidraw, Linton and Vlissides concluded with a discussion of what could be done to further extend the usefulness of the framework. One thing they mentioned was the ability to interpret external formats, thus translating them into an internal representation that can be saved/restored, and exported to other formats. You could almost already do this with ivtools, because the language used to save/restore documents is the same one recognized by the command interpreter. A given interpreter, like that in comdraw could be expanded with a new function for each object type in the specialized application document.

    * freedom to use the source in any fashion

    ivtools is open source and non-copylefted X Consortium style free software. This means you can use it for both free-software projects and commercial software development. You can even GPL or LGPL your copy if you so desire, but we'll carry on with the license the way it is, the way it has always been *. There is no document guaranteeing this, but the logic behind Vectaport's business should be self-evident. We make money off of selling service, training, and CD-ROMs. Our customers are in the business of making custom, often proprietary, applications. They understand the advantage of leveraging a freely available foundation of generic software with few strings attached. Vectaport ceased existence as a corporation Dec 31st 2000, but continues as a web site and consulting venue for Scott Johnston

    Ok, there is a string or two. The copyright notices we used are derived from the X11 copyright, and require that you include the entire copyright and permission notice at least once, somewhere in the documentation, in any derivative work, and that at least the single copyright line itself remain in the source code. And that you not use the name of any copyright holder in any form of publicity or advertising without permission.

    * protection from software patents

    This is an interesting advantage of ivtools (and InterViews 3.1). All of the core mechanisms of the drawing editors, flyweight glyphs, and command interpreters were published in source or paper form in the late 1980s or early 1990s. With a decade head-start on the forces of patent litigation, you can feel about as safe investing in this software technology as you can hope for. Not only in your ability to win if taken to court, but in your ability to stay out of court and brush off nuisance licensors, by flooding them with a collection of long-time URL's that convincingly demonstrate prior art. The original interviews.stanford.edu ftp site is still up and running, though nothing has changed on it for years.

    * continual commercial-quality development and support

    At Vectaport we've been programming with InterViews 3.1 and derivative source code since 1993. Our experience with InterViews started with using InterViews 2.6 in 1990. And the initial development for the command interpreter embedded into ivtools was undertaken as early as 1988. Vectaport ceased existence as a corporation Dec 31st 2000, but continues as a web site and consulting venue for Scott Johnston

    Though some of the code is old, some of the code is always new. We continually develop and release these frameworks, incrementally adding capability month after month, year after year. We take care to make sure any changes to the API or implementation of existing classes are the kind that can safely be propogated by recompiling the C++ source. Unlike C API's, where people respect finished and unchanging libraries of code, these C++ frameworks are continually changing, continually growing, and continually being improved, all in a way that doesn't upset any particularily static use of the classes as they existed at some prior time. To prove this we continually seek out static InterViews applications, like MixViews, and test that they can still be built on top of ivtools.

    * organized leverage of other software frameworks

    Is a nice drawing editor not enough reason to consider using ivtools? Then what about a powerful middleware package for networking and system services, a collection of frameworks for image understanding, a sound-editing application, packages for geo-spatial map rendering in 2d and 3d and vehicle simulation for navigating those maps? All of these are software packages that work together with ivtools, software packages where we have done the initial interfacing or integration work, and published the results for others to use.

    * open coordination of distributed development via patch

    You'll find no centralized use of cvs at vectaport.com, because we appreciate the right of any programmer to manage their own copies of the source they rely on, and to incorporate the changes of third parties whenever they please. We see no need to force them to upgrade with everyone elses latest changes as a pre-requisite for committing and distributing their own changes (the cvs model of coordinating development). Instead we use cvs as a personal or local-area tool for configuration management and for generating patches for sharing with remote sites. The wizardry of patch is that it can allow disparate programmers to share improvements between source trees of similar lineage, without ever absolutely requiring the merging or unification of the source trees. If and when this is done is up to the programmers, not the tool. If a particular configuration of software is well-suited and well-tested for a well-defined application, what is wrong with it never changing again, or only changing to incorporate necessary bug fixes while ignoring any unnecessary enhancements or extensions?

    However, the converse question can also be asked. What is wrong with incorporating unnecessary enhancements and extensions if the stable application still compiles, links, and works? We've found a typical approach of third party developers is to remain with a stable release of ivtools while building their own applications, incorporating only the patches they need for the particular bugs they find or new features they need. Then, if and when they have the time, they upgrade to the latest version of ivtools.